@langchain/core 1.2.9 → 1.2.10

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.
Files changed (167) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/_virtual/_rolldown/runtime.cjs +1 -1
  3. package/dist/callbacks/dispatch/index.cjs +2 -1
  4. package/dist/callbacks/dispatch/index.cjs.map +1 -1
  5. package/dist/callbacks/dispatch/index.js +2 -1
  6. package/dist/callbacks/dispatch/index.js.map +1 -1
  7. package/dist/indexing/base.cjs +10 -6
  8. package/dist/indexing/base.cjs.map +1 -1
  9. package/dist/indexing/base.js +10 -6
  10. package/dist/indexing/base.js.map +1 -1
  11. package/dist/language_models/base.cjs +1 -1
  12. package/dist/language_models/base.cjs.map +1 -1
  13. package/dist/language_models/base.js +1 -1
  14. package/dist/language_models/base.js.map +1 -1
  15. package/dist/language_models/chat_models.cjs +10 -5
  16. package/dist/language_models/chat_models.cjs.map +1 -1
  17. package/dist/language_models/chat_models.js +10 -5
  18. package/dist/language_models/chat_models.js.map +1 -1
  19. package/dist/language_models/stream.cjs +0 -2
  20. package/dist/language_models/stream.cjs.map +1 -1
  21. package/dist/language_models/stream.js +0 -2
  22. package/dist/language_models/stream.js.map +1 -1
  23. package/dist/load/index.cjs +7 -5
  24. package/dist/load/index.cjs.map +1 -1
  25. package/dist/load/index.js +7 -5
  26. package/dist/load/index.js.map +1 -1
  27. package/dist/load/serializable.cjs +2 -1
  28. package/dist/load/serializable.cjs.map +1 -1
  29. package/dist/load/serializable.js +2 -1
  30. package/dist/load/serializable.js.map +1 -1
  31. package/dist/load/validation.cjs +4 -3
  32. package/dist/load/validation.cjs.map +1 -1
  33. package/dist/load/validation.js +4 -3
  34. package/dist/load/validation.js.map +1 -1
  35. package/dist/messages/base.cjs +13 -18
  36. package/dist/messages/base.cjs.map +1 -1
  37. package/dist/messages/base.d.cts.map +1 -1
  38. package/dist/messages/base.d.ts.map +1 -1
  39. package/dist/messages/base.js +13 -18
  40. package/dist/messages/base.js.map +1 -1
  41. package/dist/messages/block_translators/anthropic.cjs.map +1 -1
  42. package/dist/messages/block_translators/anthropic.js.map +1 -1
  43. package/dist/messages/block_translators/google.cjs +10 -9
  44. package/dist/messages/block_translators/google.cjs.map +1 -1
  45. package/dist/messages/block_translators/google.js +10 -9
  46. package/dist/messages/block_translators/google.js.map +1 -1
  47. package/dist/messages/block_translators/google_vertexai.cjs +14 -12
  48. package/dist/messages/block_translators/google_vertexai.cjs.map +1 -1
  49. package/dist/messages/block_translators/google_vertexai.js +14 -12
  50. package/dist/messages/block_translators/google_vertexai.js.map +1 -1
  51. package/dist/messages/message.cjs.map +1 -1
  52. package/dist/messages/message.d.cts.map +1 -1
  53. package/dist/messages/message.d.ts.map +1 -1
  54. package/dist/messages/message.js.map +1 -1
  55. package/dist/messages/transformers.cjs +12 -8
  56. package/dist/messages/transformers.cjs.map +1 -1
  57. package/dist/messages/transformers.js +12 -8
  58. package/dist/messages/transformers.js.map +1 -1
  59. package/dist/output_parsers/transform.cjs.map +1 -1
  60. package/dist/prompts/chat.cjs +2 -1
  61. package/dist/prompts/chat.cjs.map +1 -1
  62. package/dist/prompts/chat.js +2 -1
  63. package/dist/prompts/chat.js.map +1 -1
  64. package/dist/prompts/few_shot.cjs +6 -4
  65. package/dist/prompts/few_shot.cjs.map +1 -1
  66. package/dist/prompts/few_shot.js +6 -4
  67. package/dist/prompts/few_shot.js.map +1 -1
  68. package/dist/prompts/image.cjs +2 -1
  69. package/dist/prompts/image.cjs.map +1 -1
  70. package/dist/prompts/image.js +2 -1
  71. package/dist/prompts/image.js.map +1 -1
  72. package/dist/prompts/prompt.cjs.map +1 -1
  73. package/dist/prompts/prompt.d.cts.map +1 -1
  74. package/dist/prompts/prompt.d.ts.map +1 -1
  75. package/dist/prompts/prompt.js.map +1 -1
  76. package/dist/prompts/string.cjs +2 -1
  77. package/dist/prompts/string.cjs.map +1 -1
  78. package/dist/prompts/string.js +2 -1
  79. package/dist/prompts/string.js.map +1 -1
  80. package/dist/prompts/template.cjs.map +1 -1
  81. package/dist/prompts/template.js.map +1 -1
  82. package/dist/runnables/base.cjs +60 -40
  83. package/dist/runnables/base.cjs.map +1 -1
  84. package/dist/runnables/base.js +60 -40
  85. package/dist/runnables/base.js.map +1 -1
  86. package/dist/runnables/branch.cjs +16 -12
  87. package/dist/runnables/branch.cjs.map +1 -1
  88. package/dist/runnables/branch.js +16 -12
  89. package/dist/runnables/branch.js.map +1 -1
  90. package/dist/runnables/config.cjs +28 -23
  91. package/dist/runnables/config.cjs.map +1 -1
  92. package/dist/runnables/config.js +28 -23
  93. package/dist/runnables/config.js.map +1 -1
  94. package/dist/runnables/graph.cjs +2 -1
  95. package/dist/runnables/graph.cjs.map +1 -1
  96. package/dist/runnables/graph.js +2 -1
  97. package/dist/runnables/graph.js.map +1 -1
  98. package/dist/runnables/passthrough.cjs +8 -6
  99. package/dist/runnables/passthrough.cjs.map +1 -1
  100. package/dist/runnables/passthrough.js +8 -6
  101. package/dist/runnables/passthrough.js.map +1 -1
  102. package/dist/singletons/async_local_storage/context.cjs.map +1 -1
  103. package/dist/singletons/tracer.cjs +4 -1
  104. package/dist/singletons/tracer.cjs.map +1 -1
  105. package/dist/singletons/tracer.js +4 -1
  106. package/dist/singletons/tracer.js.map +1 -1
  107. package/dist/tools/index.cjs +22 -20
  108. package/dist/tools/index.cjs.map +1 -1
  109. package/dist/tools/index.js +22 -20
  110. package/dist/tools/index.js.map +1 -1
  111. package/dist/tracers/base.cjs +11 -10
  112. package/dist/tracers/base.cjs.map +1 -1
  113. package/dist/tracers/base.js +11 -10
  114. package/dist/tracers/base.js.map +1 -1
  115. package/dist/tracers/log_stream.cjs +7 -6
  116. package/dist/tracers/log_stream.cjs.map +1 -1
  117. package/dist/tracers/log_stream.js +7 -6
  118. package/dist/tracers/log_stream.js.map +1 -1
  119. package/dist/tracers/tracer_langchain.cjs.map +1 -1
  120. package/dist/utils/env.cjs.map +1 -1
  121. package/dist/utils/env.d.cts.map +1 -1
  122. package/dist/utils/env.d.ts.map +1 -1
  123. package/dist/utils/env.js.map +1 -1
  124. package/dist/utils/event_source_parse.cjs +1 -3
  125. package/dist/utils/event_source_parse.cjs.map +1 -1
  126. package/dist/utils/event_source_parse.js +1 -3
  127. package/dist/utils/event_source_parse.js.map +1 -1
  128. package/dist/utils/fast-json-patch/src/core.cjs +4 -2
  129. package/dist/utils/fast-json-patch/src/core.cjs.map +1 -1
  130. package/dist/utils/fast-json-patch/src/core.js +4 -2
  131. package/dist/utils/fast-json-patch/src/core.js.map +1 -1
  132. package/dist/utils/fast-json-patch/src/helpers.cjs.map +1 -1
  133. package/dist/utils/fast-json-patch/src/helpers.js.map +1 -1
  134. package/dist/utils/js-sha256/hash.cjs.map +1 -1
  135. package/dist/utils/js-sha256/hash.js.map +1 -1
  136. package/dist/utils/json_schema.cjs +4 -2
  137. package/dist/utils/json_schema.cjs.map +1 -1
  138. package/dist/utils/json_schema.js +4 -2
  139. package/dist/utils/json_schema.js.map +1 -1
  140. package/dist/utils/sax-js/sax.cjs +41 -35
  141. package/dist/utils/sax-js/sax.cjs.map +1 -1
  142. package/dist/utils/sax-js/sax.js +41 -35
  143. package/dist/utils/sax-js/sax.js.map +1 -1
  144. package/dist/utils/testing/chat_models.cjs +2 -1
  145. package/dist/utils/testing/chat_models.cjs.map +1 -1
  146. package/dist/utils/testing/chat_models.js +2 -1
  147. package/dist/utils/testing/chat_models.js.map +1 -1
  148. package/dist/utils/tiktoken.cjs.map +1 -1
  149. package/dist/utils/types/zod.cjs.map +1 -1
  150. package/dist/utils/types/zod.js.map +1 -1
  151. package/dist/utils/zod-to-json-schema/parsers/bigint.cjs +9 -9
  152. package/dist/utils/zod-to-json-schema/parsers/bigint.cjs.map +1 -1
  153. package/dist/utils/zod-to-json-schema/parsers/bigint.js +9 -9
  154. package/dist/utils/zod-to-json-schema/parsers/bigint.js.map +1 -1
  155. package/dist/utils/zod-to-json-schema/parsers/date.cjs +1 -3
  156. package/dist/utils/zod-to-json-schema/parsers/date.cjs.map +1 -1
  157. package/dist/utils/zod-to-json-schema/parsers/date.js +1 -3
  158. package/dist/utils/zod-to-json-schema/parsers/date.js.map +1 -1
  159. package/dist/utils/zod-to-json-schema/parsers/number.cjs +9 -9
  160. package/dist/utils/zod-to-json-schema/parsers/number.cjs.map +1 -1
  161. package/dist/utils/zod-to-json-schema/parsers/number.js +9 -9
  162. package/dist/utils/zod-to-json-schema/parsers/number.js.map +1 -1
  163. package/dist/utils/zod-to-json-schema/parsers/string.cjs +3 -13
  164. package/dist/utils/zod-to-json-schema/parsers/string.cjs.map +1 -1
  165. package/dist/utils/zod-to-json-schema/parsers/string.js +3 -13
  166. package/dist/utils/zod-to-json-schema/parsers/string.js.map +1 -1
  167. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"bigint.js","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/bigint.ts"],"sourcesContent":["import { ZodBigIntDef } from \"zod/v3\";\nimport { Refs } from \"../Refs.js\";\nimport { ErrorMessages, setResponseValueAndErrors } from \"../errorMessages.js\";\n\nexport type JsonSchema7BigintType = {\n type: \"integer\";\n format: \"int64\";\n minimum?: BigInt;\n exclusiveMinimum?: BigInt;\n maximum?: BigInt;\n exclusiveMaximum?: BigInt;\n multipleOf?: BigInt;\n errorMessage?: ErrorMessages<JsonSchema7BigintType>;\n};\n\nexport function parseBigintDef(\n def: ZodBigIntDef,\n refs: Refs\n): JsonSchema7BigintType {\n const res: JsonSchema7BigintType = {\n type: \"integer\",\n format: \"int64\",\n };\n\n if (!def.checks) return res;\n\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(\n res,\n \"minimum\",\n check.value,\n check.message,\n refs\n );\n } else {\n setResponseValueAndErrors(\n res,\n \"exclusiveMinimum\",\n check.value,\n check.message,\n refs\n );\n }\n } else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true as any;\n }\n setResponseValueAndErrors(\n res,\n \"minimum\",\n check.value,\n check.message,\n refs\n );\n }\n break;\n case \"max\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(\n res,\n \"maximum\",\n check.value,\n check.message,\n refs\n );\n } else {\n setResponseValueAndErrors(\n res,\n \"exclusiveMaximum\",\n check.value,\n check.message,\n refs\n );\n }\n } else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true as any;\n }\n setResponseValueAndErrors(\n res,\n \"maximum\",\n check.value,\n check.message,\n refs\n );\n }\n break;\n case \"multipleOf\":\n setResponseValueAndErrors(\n res,\n \"multipleOf\",\n check.value,\n check.message,\n refs\n );\n break;\n }\n }\n return res;\n}\n"],"mappings":";;AAeA,SAAgB,eACd,KACA,MACuB;CACvB,MAAM,MAA6B;EACjC,MAAM;EACN,QAAQ;CACV;CAEA,IAAI,CAAC,IAAI,QAAQ,OAAO;CAExB,KAAK,MAAM,SAAS,IAAI,QACtB,QAAQ,MAAM,MAAd;EACE,KAAK;GACH,IAAI,KAAK,WAAW,eAClB,IAAI,MAAM,WACR,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;QAEA,0BACE,KACA,oBACA,MAAM,OACN,MAAM,SACN,IACF;QAEG;IACL,IAAI,CAAC,MAAM,WACT,IAAI,mBAAmB;IAEzB,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;GACF;GACA;EACF,KAAK;GACH,IAAI,KAAK,WAAW,eAClB,IAAI,MAAM,WACR,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;QAEA,0BACE,KACA,oBACA,MAAM,OACN,MAAM,SACN,IACF;QAEG;IACL,IAAI,CAAC,MAAM,WACT,IAAI,mBAAmB;IAEzB,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;GACF;GACA;EACF,KAAK;GACH,0BACE,KACA,cACA,MAAM,OACN,MAAM,SACN,IACF;GACA;CACJ;CAEF,OAAO;AACT"}
1
+ {"version":3,"file":"bigint.js","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/bigint.ts"],"sourcesContent":["import { ZodBigIntDef } from \"zod/v3\";\nimport { Refs } from \"../Refs.js\";\nimport { ErrorMessages, setResponseValueAndErrors } from \"../errorMessages.js\";\n\nexport type JsonSchema7BigintType = {\n type: \"integer\";\n format: \"int64\";\n minimum?: BigInt;\n exclusiveMinimum?: BigInt;\n maximum?: BigInt;\n exclusiveMaximum?: BigInt;\n multipleOf?: BigInt;\n errorMessage?: ErrorMessages<JsonSchema7BigintType>;\n};\n\nexport function parseBigintDef(\n def: ZodBigIntDef,\n refs: Refs\n): JsonSchema7BigintType {\n const res: JsonSchema7BigintType = {\n type: \"integer\",\n format: \"int64\",\n };\n\n if (!def.checks) return res;\n\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(\n res,\n \"minimum\",\n check.value,\n check.message,\n refs\n );\n } else {\n setResponseValueAndErrors(\n res,\n \"exclusiveMinimum\",\n check.value,\n check.message,\n refs\n );\n }\n } else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true as any;\n }\n setResponseValueAndErrors(\n res,\n \"minimum\",\n check.value,\n check.message,\n refs\n );\n }\n break;\n case \"max\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(\n res,\n \"maximum\",\n check.value,\n check.message,\n refs\n );\n } else {\n setResponseValueAndErrors(\n res,\n \"exclusiveMaximum\",\n check.value,\n check.message,\n refs\n );\n }\n } else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true as any;\n }\n setResponseValueAndErrors(\n res,\n \"maximum\",\n check.value,\n check.message,\n refs\n );\n }\n break;\n case \"multipleOf\":\n setResponseValueAndErrors(\n res,\n \"multipleOf\",\n check.value,\n check.message,\n refs\n );\n break;\n }\n }\n return res;\n}\n"],"mappings":";;AAeA,SAAgB,eACd,KACA,MACuB;CACvB,MAAM,MAA6B;EACjC,MAAM;EACN,QAAQ;CACV;CAEA,IAAI,CAAC,IAAI,QAAQ,OAAO;CAExB,KAAK,MAAM,SAAS,IAAI,QACtB,QAAQ,MAAM,MAAd;EACE,KAAK;GACH,IAAI,KAAK,WAAW,eAAe;IACjC,IAAI,MAAM,WACR,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;SAEA,0BACE,KACA,oBACA,MAAM,OACN,MAAM,SACN,IACF;GAEJ,OAAO;IACL,IAAI,CAAC,MAAM,WACT,IAAI,mBAAmB;IAEzB,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;GACF;GACA;EACF,KAAK;GACH,IAAI,KAAK,WAAW,eAAe;IACjC,IAAI,MAAM,WACR,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;SAEA,0BACE,KACA,oBACA,MAAM,OACN,MAAM,SACN,IACF;GAEJ,OAAO;IACL,IAAI,CAAC,MAAM,WACT,IAAI,mBAAmB;IAEzB,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;GACF;GACA;EACF,KAAK,cACH,0BACE,KACA,cACA,MAAM,OACN,MAAM,SACN,IACF;CAEJ;CAEF,OAAO;AACT"}
@@ -26,9 +26,7 @@ const integerDateParser = (def, refs) => {
26
26
  case "min":
27
27
  require_errorMessages.setResponseValueAndErrors(res, "minimum", check.value, check.message, refs);
28
28
  break;
29
- case "max":
30
- require_errorMessages.setResponseValueAndErrors(res, "maximum", check.value, check.message, refs);
31
- break;
29
+ case "max": require_errorMessages.setResponseValueAndErrors(res, "maximum", check.value, check.message, refs);
32
30
  }
33
31
  return res;
34
32
  };
@@ -1 +1 @@
1
- {"version":3,"file":"date.cjs","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/date.ts"],"sourcesContent":["import { ZodDateDef } from \"zod/v3\";\nimport { Refs } from \"../Refs.js\";\nimport { ErrorMessages, setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { JsonSchema7NumberType } from \"./number.js\";\nimport { DateStrategy } from \"../Options.js\";\n\nexport type JsonSchema7DateType =\n | {\n type: \"integer\" | \"string\";\n format: \"unix-time\" | \"date-time\" | \"date\";\n minimum?: number;\n maximum?: number;\n errorMessage?: ErrorMessages<JsonSchema7NumberType>;\n }\n | {\n anyOf: JsonSchema7DateType[];\n };\n\nexport function parseDateDef(\n def: ZodDateDef,\n refs: Refs,\n overrideDateStrategy?: DateStrategy\n): JsonSchema7DateType {\n const strategy = overrideDateStrategy ?? refs.dateStrategy;\n\n if (Array.isArray(strategy)) {\n return {\n anyOf: strategy.map((item) => parseDateDef(def, refs, item)),\n };\n }\n\n switch (strategy) {\n case \"string\":\n case \"format:date-time\":\n return {\n type: \"string\",\n format: \"date-time\",\n };\n case \"format:date\":\n return {\n type: \"string\",\n format: \"date\",\n };\n case \"integer\":\n return integerDateParser(def, refs);\n }\n}\n\nconst integerDateParser = (def: ZodDateDef, refs: Refs) => {\n const res: JsonSchema7DateType = {\n type: \"integer\",\n format: \"unix-time\",\n };\n\n if (refs.target === \"openApi3\") {\n return res;\n }\n\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(\n res,\n \"minimum\",\n check.value, // This is in milliseconds\n check.message,\n refs\n );\n break;\n case \"max\":\n setResponseValueAndErrors(\n res,\n \"maximum\",\n check.value, // This is in milliseconds\n check.message,\n refs\n );\n break;\n }\n }\n\n return res;\n};\n"],"mappings":";;AAkBA,SAAgB,aACd,KACA,MACA,sBACqB;CACrB,MAAM,WAAW,wBAAwB,KAAK;CAE9C,IAAI,MAAM,QAAQ,QAAQ,GACxB,OAAO,EACL,OAAO,SAAS,KAAK,SAAS,aAAa,KAAK,MAAM,IAAI,CAAC,EAC7D;CAGF,QAAQ,UAAR;EACE,KAAK;EACL,KAAK,oBACH,OAAO;GACL,MAAM;GACN,QAAQ;EACV;EACF,KAAK,eACH,OAAO;GACL,MAAM;GACN,QAAQ;EACV;EACF,KAAK,WACH,OAAO,kBAAkB,KAAK,IAAI;CACtC;AACF;AAEA,MAAM,qBAAqB,KAAiB,SAAe;CACzD,MAAM,MAA2B;EAC/B,MAAM;EACN,QAAQ;CACV;CAEA,IAAI,KAAK,WAAW,YAClB,OAAO;CAGT,KAAK,MAAM,SAAS,IAAI,QACtB,QAAQ,MAAM,MAAd;EACE,KAAK;GACH,sBAAA,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;GACA;EACF,KAAK;GACH,sBAAA,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;GACA;CACJ;CAGF,OAAO;AACT"}
1
+ {"version":3,"file":"date.cjs","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/date.ts"],"sourcesContent":["import { ZodDateDef } from \"zod/v3\";\nimport { Refs } from \"../Refs.js\";\nimport { ErrorMessages, setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { JsonSchema7NumberType } from \"./number.js\";\nimport { DateStrategy } from \"../Options.js\";\n\nexport type JsonSchema7DateType =\n | {\n type: \"integer\" | \"string\";\n format: \"unix-time\" | \"date-time\" | \"date\";\n minimum?: number;\n maximum?: number;\n errorMessage?: ErrorMessages<JsonSchema7NumberType>;\n }\n | {\n anyOf: JsonSchema7DateType[];\n };\n\nexport function parseDateDef(\n def: ZodDateDef,\n refs: Refs,\n overrideDateStrategy?: DateStrategy\n): JsonSchema7DateType {\n const strategy = overrideDateStrategy ?? refs.dateStrategy;\n\n if (Array.isArray(strategy)) {\n return {\n anyOf: strategy.map((item) => parseDateDef(def, refs, item)),\n };\n }\n\n switch (strategy) {\n case \"string\":\n case \"format:date-time\":\n return {\n type: \"string\",\n format: \"date-time\",\n };\n case \"format:date\":\n return {\n type: \"string\",\n format: \"date\",\n };\n case \"integer\":\n return integerDateParser(def, refs);\n }\n}\n\nconst integerDateParser = (def: ZodDateDef, refs: Refs) => {\n const res: JsonSchema7DateType = {\n type: \"integer\",\n format: \"unix-time\",\n };\n\n if (refs.target === \"openApi3\") {\n return res;\n }\n\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(\n res,\n \"minimum\",\n check.value, // This is in milliseconds\n check.message,\n refs\n );\n break;\n case \"max\":\n setResponseValueAndErrors(\n res,\n \"maximum\",\n check.value, // This is in milliseconds\n check.message,\n refs\n );\n break;\n }\n }\n\n return res;\n};\n"],"mappings":";;AAkBA,SAAgB,aACd,KACA,MACA,sBACqB;CACrB,MAAM,WAAW,wBAAwB,KAAK;CAE9C,IAAI,MAAM,QAAQ,QAAQ,GACxB,OAAO,EACL,OAAO,SAAS,KAAK,SAAS,aAAa,KAAK,MAAM,IAAI,CAAC,EAC7D;CAGF,QAAQ,UAAR;EACE,KAAK;EACL,KAAK,oBACH,OAAO;GACL,MAAM;GACN,QAAQ;EACV;EACF,KAAK,eACH,OAAO;GACL,MAAM;GACN,QAAQ;EACV;EACF,KAAK,WACH,OAAO,kBAAkB,KAAK,IAAI;CACtC;AACF;AAEA,MAAM,qBAAqB,KAAiB,SAAe;CACzD,MAAM,MAA2B;EAC/B,MAAM;EACN,QAAQ;CACV;CAEA,IAAI,KAAK,WAAW,YAClB,OAAO;CAGT,KAAK,MAAM,SAAS,IAAI,QACtB,QAAQ,MAAM,MAAd;EACE,KAAK;GACH,sBAAA,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;GACA;EACF,KAAK,OACH,sBAAA,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;CAEJ;CAGF,OAAO;AACT"}
@@ -26,9 +26,7 @@ const integerDateParser = (def, refs) => {
26
26
  case "min":
27
27
  setResponseValueAndErrors(res, "minimum", check.value, check.message, refs);
28
28
  break;
29
- case "max":
30
- setResponseValueAndErrors(res, "maximum", check.value, check.message, refs);
31
- break;
29
+ case "max": setResponseValueAndErrors(res, "maximum", check.value, check.message, refs);
32
30
  }
33
31
  return res;
34
32
  };
@@ -1 +1 @@
1
- {"version":3,"file":"date.js","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/date.ts"],"sourcesContent":["import { ZodDateDef } from \"zod/v3\";\nimport { Refs } from \"../Refs.js\";\nimport { ErrorMessages, setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { JsonSchema7NumberType } from \"./number.js\";\nimport { DateStrategy } from \"../Options.js\";\n\nexport type JsonSchema7DateType =\n | {\n type: \"integer\" | \"string\";\n format: \"unix-time\" | \"date-time\" | \"date\";\n minimum?: number;\n maximum?: number;\n errorMessage?: ErrorMessages<JsonSchema7NumberType>;\n }\n | {\n anyOf: JsonSchema7DateType[];\n };\n\nexport function parseDateDef(\n def: ZodDateDef,\n refs: Refs,\n overrideDateStrategy?: DateStrategy\n): JsonSchema7DateType {\n const strategy = overrideDateStrategy ?? refs.dateStrategy;\n\n if (Array.isArray(strategy)) {\n return {\n anyOf: strategy.map((item) => parseDateDef(def, refs, item)),\n };\n }\n\n switch (strategy) {\n case \"string\":\n case \"format:date-time\":\n return {\n type: \"string\",\n format: \"date-time\",\n };\n case \"format:date\":\n return {\n type: \"string\",\n format: \"date\",\n };\n case \"integer\":\n return integerDateParser(def, refs);\n }\n}\n\nconst integerDateParser = (def: ZodDateDef, refs: Refs) => {\n const res: JsonSchema7DateType = {\n type: \"integer\",\n format: \"unix-time\",\n };\n\n if (refs.target === \"openApi3\") {\n return res;\n }\n\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(\n res,\n \"minimum\",\n check.value, // This is in milliseconds\n check.message,\n refs\n );\n break;\n case \"max\":\n setResponseValueAndErrors(\n res,\n \"maximum\",\n check.value, // This is in milliseconds\n check.message,\n refs\n );\n break;\n }\n }\n\n return res;\n};\n"],"mappings":";;AAkBA,SAAgB,aACd,KACA,MACA,sBACqB;CACrB,MAAM,WAAW,wBAAwB,KAAK;CAE9C,IAAI,MAAM,QAAQ,QAAQ,GACxB,OAAO,EACL,OAAO,SAAS,KAAK,SAAS,aAAa,KAAK,MAAM,IAAI,CAAC,EAC7D;CAGF,QAAQ,UAAR;EACE,KAAK;EACL,KAAK,oBACH,OAAO;GACL,MAAM;GACN,QAAQ;EACV;EACF,KAAK,eACH,OAAO;GACL,MAAM;GACN,QAAQ;EACV;EACF,KAAK,WACH,OAAO,kBAAkB,KAAK,IAAI;CACtC;AACF;AAEA,MAAM,qBAAqB,KAAiB,SAAe;CACzD,MAAM,MAA2B;EAC/B,MAAM;EACN,QAAQ;CACV;CAEA,IAAI,KAAK,WAAW,YAClB,OAAO;CAGT,KAAK,MAAM,SAAS,IAAI,QACtB,QAAQ,MAAM,MAAd;EACE,KAAK;GACH,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;GACA;EACF,KAAK;GACH,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;GACA;CACJ;CAGF,OAAO;AACT"}
1
+ {"version":3,"file":"date.js","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/date.ts"],"sourcesContent":["import { ZodDateDef } from \"zod/v3\";\nimport { Refs } from \"../Refs.js\";\nimport { ErrorMessages, setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { JsonSchema7NumberType } from \"./number.js\";\nimport { DateStrategy } from \"../Options.js\";\n\nexport type JsonSchema7DateType =\n | {\n type: \"integer\" | \"string\";\n format: \"unix-time\" | \"date-time\" | \"date\";\n minimum?: number;\n maximum?: number;\n errorMessage?: ErrorMessages<JsonSchema7NumberType>;\n }\n | {\n anyOf: JsonSchema7DateType[];\n };\n\nexport function parseDateDef(\n def: ZodDateDef,\n refs: Refs,\n overrideDateStrategy?: DateStrategy\n): JsonSchema7DateType {\n const strategy = overrideDateStrategy ?? refs.dateStrategy;\n\n if (Array.isArray(strategy)) {\n return {\n anyOf: strategy.map((item) => parseDateDef(def, refs, item)),\n };\n }\n\n switch (strategy) {\n case \"string\":\n case \"format:date-time\":\n return {\n type: \"string\",\n format: \"date-time\",\n };\n case \"format:date\":\n return {\n type: \"string\",\n format: \"date\",\n };\n case \"integer\":\n return integerDateParser(def, refs);\n }\n}\n\nconst integerDateParser = (def: ZodDateDef, refs: Refs) => {\n const res: JsonSchema7DateType = {\n type: \"integer\",\n format: \"unix-time\",\n };\n\n if (refs.target === \"openApi3\") {\n return res;\n }\n\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(\n res,\n \"minimum\",\n check.value, // This is in milliseconds\n check.message,\n refs\n );\n break;\n case \"max\":\n setResponseValueAndErrors(\n res,\n \"maximum\",\n check.value, // This is in milliseconds\n check.message,\n refs\n );\n break;\n }\n }\n\n return res;\n};\n"],"mappings":";;AAkBA,SAAgB,aACd,KACA,MACA,sBACqB;CACrB,MAAM,WAAW,wBAAwB,KAAK;CAE9C,IAAI,MAAM,QAAQ,QAAQ,GACxB,OAAO,EACL,OAAO,SAAS,KAAK,SAAS,aAAa,KAAK,MAAM,IAAI,CAAC,EAC7D;CAGF,QAAQ,UAAR;EACE,KAAK;EACL,KAAK,oBACH,OAAO;GACL,MAAM;GACN,QAAQ;EACV;EACF,KAAK,eACH,OAAO;GACL,MAAM;GACN,QAAQ;EACV;EACF,KAAK,WACH,OAAO,kBAAkB,KAAK,IAAI;CACtC;AACF;AAEA,MAAM,qBAAqB,KAAiB,SAAe;CACzD,MAAM,MAA2B;EAC/B,MAAM;EACN,QAAQ;CACV;CAEA,IAAI,KAAK,WAAW,YAClB,OAAO;CAGT,KAAK,MAAM,SAAS,IAAI,QACtB,QAAQ,MAAM,MAAd;EACE,KAAK;GACH,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;GACA;EACF,KAAK,OACH,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;CAEJ;CAGF,OAAO;AACT"}
@@ -9,24 +9,24 @@ function parseNumberDef(def, refs) {
9
9
  require_errorMessages.addErrorMessage(res, "type", check.message, refs);
10
10
  break;
11
11
  case "min":
12
- if (refs.target === "jsonSchema7") if (check.inclusive) require_errorMessages.setResponseValueAndErrors(res, "minimum", check.value, check.message, refs);
13
- else require_errorMessages.setResponseValueAndErrors(res, "exclusiveMinimum", check.value, check.message, refs);
14
- else {
12
+ if (refs.target === "jsonSchema7") {
13
+ if (check.inclusive) require_errorMessages.setResponseValueAndErrors(res, "minimum", check.value, check.message, refs);
14
+ else require_errorMessages.setResponseValueAndErrors(res, "exclusiveMinimum", check.value, check.message, refs);
15
+ } else {
15
16
  if (!check.inclusive) res.exclusiveMinimum = true;
16
17
  require_errorMessages.setResponseValueAndErrors(res, "minimum", check.value, check.message, refs);
17
18
  }
18
19
  break;
19
20
  case "max":
20
- if (refs.target === "jsonSchema7") if (check.inclusive) require_errorMessages.setResponseValueAndErrors(res, "maximum", check.value, check.message, refs);
21
- else require_errorMessages.setResponseValueAndErrors(res, "exclusiveMaximum", check.value, check.message, refs);
22
- else {
21
+ if (refs.target === "jsonSchema7") {
22
+ if (check.inclusive) require_errorMessages.setResponseValueAndErrors(res, "maximum", check.value, check.message, refs);
23
+ else require_errorMessages.setResponseValueAndErrors(res, "exclusiveMaximum", check.value, check.message, refs);
24
+ } else {
23
25
  if (!check.inclusive) res.exclusiveMaximum = true;
24
26
  require_errorMessages.setResponseValueAndErrors(res, "maximum", check.value, check.message, refs);
25
27
  }
26
28
  break;
27
- case "multipleOf":
28
- require_errorMessages.setResponseValueAndErrors(res, "multipleOf", check.value, check.message, refs);
29
- break;
29
+ case "multipleOf": require_errorMessages.setResponseValueAndErrors(res, "multipleOf", check.value, check.message, refs);
30
30
  }
31
31
  return res;
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"number.cjs","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/number.ts"],"sourcesContent":["import { ZodNumberDef } from \"zod/v3\";\nimport {\n addErrorMessage,\n ErrorMessages,\n setResponseValueAndErrors,\n} from \"../errorMessages.js\";\nimport { Refs } from \"../Refs.js\";\n\nexport type JsonSchema7NumberType = {\n type: \"number\" | \"integer\";\n minimum?: number;\n exclusiveMinimum?: number;\n maximum?: number;\n exclusiveMaximum?: number;\n multipleOf?: number;\n errorMessage?: ErrorMessages<JsonSchema7NumberType>;\n};\n\nexport function parseNumberDef(\n def: ZodNumberDef,\n refs: Refs\n): JsonSchema7NumberType {\n const res: JsonSchema7NumberType = {\n type: \"number\",\n };\n\n if (!def.checks) return res;\n\n for (const check of def.checks) {\n switch (check.kind) {\n case \"int\":\n res.type = \"integer\";\n addErrorMessage(res, \"type\", check.message, refs);\n break;\n case \"min\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(\n res,\n \"minimum\",\n check.value,\n check.message,\n refs\n );\n } else {\n setResponseValueAndErrors(\n res,\n \"exclusiveMinimum\",\n check.value,\n check.message,\n refs\n );\n }\n } else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true as any;\n }\n setResponseValueAndErrors(\n res,\n \"minimum\",\n check.value,\n check.message,\n refs\n );\n }\n break;\n case \"max\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(\n res,\n \"maximum\",\n check.value,\n check.message,\n refs\n );\n } else {\n setResponseValueAndErrors(\n res,\n \"exclusiveMaximum\",\n check.value,\n check.message,\n refs\n );\n }\n } else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true as any;\n }\n setResponseValueAndErrors(\n res,\n \"maximum\",\n check.value,\n check.message,\n refs\n );\n }\n break;\n case \"multipleOf\":\n setResponseValueAndErrors(\n res,\n \"multipleOf\",\n check.value,\n check.message,\n refs\n );\n break;\n }\n }\n return res;\n}\n"],"mappings":";;AAkBA,SAAgB,eACd,KACA,MACuB;CACvB,MAAM,MAA6B,EACjC,MAAM,SACR;CAEA,IAAI,CAAC,IAAI,QAAQ,OAAO;CAExB,KAAK,MAAM,SAAS,IAAI,QACtB,QAAQ,MAAM,MAAd;EACE,KAAK;GACH,IAAI,OAAO;GACX,sBAAA,gBAAgB,KAAK,QAAQ,MAAM,SAAS,IAAI;GAChD;EACF,KAAK;GACH,IAAI,KAAK,WAAW,eAClB,IAAI,MAAM,WACR,sBAAA,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;QAEA,sBAAA,0BACE,KACA,oBACA,MAAM,OACN,MAAM,SACN,IACF;QAEG;IACL,IAAI,CAAC,MAAM,WACT,IAAI,mBAAmB;IAEzB,sBAAA,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;GACF;GACA;EACF,KAAK;GACH,IAAI,KAAK,WAAW,eAClB,IAAI,MAAM,WACR,sBAAA,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;QAEA,sBAAA,0BACE,KACA,oBACA,MAAM,OACN,MAAM,SACN,IACF;QAEG;IACL,IAAI,CAAC,MAAM,WACT,IAAI,mBAAmB;IAEzB,sBAAA,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;GACF;GACA;EACF,KAAK;GACH,sBAAA,0BACE,KACA,cACA,MAAM,OACN,MAAM,SACN,IACF;GACA;CACJ;CAEF,OAAO;AACT"}
1
+ {"version":3,"file":"number.cjs","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/number.ts"],"sourcesContent":["import { ZodNumberDef } from \"zod/v3\";\nimport {\n addErrorMessage,\n ErrorMessages,\n setResponseValueAndErrors,\n} from \"../errorMessages.js\";\nimport { Refs } from \"../Refs.js\";\n\nexport type JsonSchema7NumberType = {\n type: \"number\" | \"integer\";\n minimum?: number;\n exclusiveMinimum?: number;\n maximum?: number;\n exclusiveMaximum?: number;\n multipleOf?: number;\n errorMessage?: ErrorMessages<JsonSchema7NumberType>;\n};\n\nexport function parseNumberDef(\n def: ZodNumberDef,\n refs: Refs\n): JsonSchema7NumberType {\n const res: JsonSchema7NumberType = {\n type: \"number\",\n };\n\n if (!def.checks) return res;\n\n for (const check of def.checks) {\n switch (check.kind) {\n case \"int\":\n res.type = \"integer\";\n addErrorMessage(res, \"type\", check.message, refs);\n break;\n case \"min\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(\n res,\n \"minimum\",\n check.value,\n check.message,\n refs\n );\n } else {\n setResponseValueAndErrors(\n res,\n \"exclusiveMinimum\",\n check.value,\n check.message,\n refs\n );\n }\n } else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true as any;\n }\n setResponseValueAndErrors(\n res,\n \"minimum\",\n check.value,\n check.message,\n refs\n );\n }\n break;\n case \"max\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(\n res,\n \"maximum\",\n check.value,\n check.message,\n refs\n );\n } else {\n setResponseValueAndErrors(\n res,\n \"exclusiveMaximum\",\n check.value,\n check.message,\n refs\n );\n }\n } else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true as any;\n }\n setResponseValueAndErrors(\n res,\n \"maximum\",\n check.value,\n check.message,\n refs\n );\n }\n break;\n case \"multipleOf\":\n setResponseValueAndErrors(\n res,\n \"multipleOf\",\n check.value,\n check.message,\n refs\n );\n break;\n }\n }\n return res;\n}\n"],"mappings":";;AAkBA,SAAgB,eACd,KACA,MACuB;CACvB,MAAM,MAA6B,EACjC,MAAM,SACR;CAEA,IAAI,CAAC,IAAI,QAAQ,OAAO;CAExB,KAAK,MAAM,SAAS,IAAI,QACtB,QAAQ,MAAM,MAAd;EACE,KAAK;GACH,IAAI,OAAO;GACX,sBAAA,gBAAgB,KAAK,QAAQ,MAAM,SAAS,IAAI;GAChD;EACF,KAAK;GACH,IAAI,KAAK,WAAW,eAAe;IACjC,IAAI,MAAM,WACR,sBAAA,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;SAEA,sBAAA,0BACE,KACA,oBACA,MAAM,OACN,MAAM,SACN,IACF;GAEJ,OAAO;IACL,IAAI,CAAC,MAAM,WACT,IAAI,mBAAmB;IAEzB,sBAAA,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;GACF;GACA;EACF,KAAK;GACH,IAAI,KAAK,WAAW,eAAe;IACjC,IAAI,MAAM,WACR,sBAAA,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;SAEA,sBAAA,0BACE,KACA,oBACA,MAAM,OACN,MAAM,SACN,IACF;GAEJ,OAAO;IACL,IAAI,CAAC,MAAM,WACT,IAAI,mBAAmB;IAEzB,sBAAA,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;GACF;GACA;EACF,KAAK,cACH,sBAAA,0BACE,KACA,cACA,MAAM,OACN,MAAM,SACN,IACF;CAEJ;CAEF,OAAO;AACT"}
@@ -9,24 +9,24 @@ function parseNumberDef(def, refs) {
9
9
  addErrorMessage(res, "type", check.message, refs);
10
10
  break;
11
11
  case "min":
12
- if (refs.target === "jsonSchema7") if (check.inclusive) setResponseValueAndErrors(res, "minimum", check.value, check.message, refs);
13
- else setResponseValueAndErrors(res, "exclusiveMinimum", check.value, check.message, refs);
14
- else {
12
+ if (refs.target === "jsonSchema7") {
13
+ if (check.inclusive) setResponseValueAndErrors(res, "minimum", check.value, check.message, refs);
14
+ else setResponseValueAndErrors(res, "exclusiveMinimum", check.value, check.message, refs);
15
+ } else {
15
16
  if (!check.inclusive) res.exclusiveMinimum = true;
16
17
  setResponseValueAndErrors(res, "minimum", check.value, check.message, refs);
17
18
  }
18
19
  break;
19
20
  case "max":
20
- if (refs.target === "jsonSchema7") if (check.inclusive) setResponseValueAndErrors(res, "maximum", check.value, check.message, refs);
21
- else setResponseValueAndErrors(res, "exclusiveMaximum", check.value, check.message, refs);
22
- else {
21
+ if (refs.target === "jsonSchema7") {
22
+ if (check.inclusive) setResponseValueAndErrors(res, "maximum", check.value, check.message, refs);
23
+ else setResponseValueAndErrors(res, "exclusiveMaximum", check.value, check.message, refs);
24
+ } else {
23
25
  if (!check.inclusive) res.exclusiveMaximum = true;
24
26
  setResponseValueAndErrors(res, "maximum", check.value, check.message, refs);
25
27
  }
26
28
  break;
27
- case "multipleOf":
28
- setResponseValueAndErrors(res, "multipleOf", check.value, check.message, refs);
29
- break;
29
+ case "multipleOf": setResponseValueAndErrors(res, "multipleOf", check.value, check.message, refs);
30
30
  }
31
31
  return res;
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"number.js","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/number.ts"],"sourcesContent":["import { ZodNumberDef } from \"zod/v3\";\nimport {\n addErrorMessage,\n ErrorMessages,\n setResponseValueAndErrors,\n} from \"../errorMessages.js\";\nimport { Refs } from \"../Refs.js\";\n\nexport type JsonSchema7NumberType = {\n type: \"number\" | \"integer\";\n minimum?: number;\n exclusiveMinimum?: number;\n maximum?: number;\n exclusiveMaximum?: number;\n multipleOf?: number;\n errorMessage?: ErrorMessages<JsonSchema7NumberType>;\n};\n\nexport function parseNumberDef(\n def: ZodNumberDef,\n refs: Refs\n): JsonSchema7NumberType {\n const res: JsonSchema7NumberType = {\n type: \"number\",\n };\n\n if (!def.checks) return res;\n\n for (const check of def.checks) {\n switch (check.kind) {\n case \"int\":\n res.type = \"integer\";\n addErrorMessage(res, \"type\", check.message, refs);\n break;\n case \"min\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(\n res,\n \"minimum\",\n check.value,\n check.message,\n refs\n );\n } else {\n setResponseValueAndErrors(\n res,\n \"exclusiveMinimum\",\n check.value,\n check.message,\n refs\n );\n }\n } else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true as any;\n }\n setResponseValueAndErrors(\n res,\n \"minimum\",\n check.value,\n check.message,\n refs\n );\n }\n break;\n case \"max\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(\n res,\n \"maximum\",\n check.value,\n check.message,\n refs\n );\n } else {\n setResponseValueAndErrors(\n res,\n \"exclusiveMaximum\",\n check.value,\n check.message,\n refs\n );\n }\n } else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true as any;\n }\n setResponseValueAndErrors(\n res,\n \"maximum\",\n check.value,\n check.message,\n refs\n );\n }\n break;\n case \"multipleOf\":\n setResponseValueAndErrors(\n res,\n \"multipleOf\",\n check.value,\n check.message,\n refs\n );\n break;\n }\n }\n return res;\n}\n"],"mappings":";;AAkBA,SAAgB,eACd,KACA,MACuB;CACvB,MAAM,MAA6B,EACjC,MAAM,SACR;CAEA,IAAI,CAAC,IAAI,QAAQ,OAAO;CAExB,KAAK,MAAM,SAAS,IAAI,QACtB,QAAQ,MAAM,MAAd;EACE,KAAK;GACH,IAAI,OAAO;GACX,gBAAgB,KAAK,QAAQ,MAAM,SAAS,IAAI;GAChD;EACF,KAAK;GACH,IAAI,KAAK,WAAW,eAClB,IAAI,MAAM,WACR,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;QAEA,0BACE,KACA,oBACA,MAAM,OACN,MAAM,SACN,IACF;QAEG;IACL,IAAI,CAAC,MAAM,WACT,IAAI,mBAAmB;IAEzB,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;GACF;GACA;EACF,KAAK;GACH,IAAI,KAAK,WAAW,eAClB,IAAI,MAAM,WACR,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;QAEA,0BACE,KACA,oBACA,MAAM,OACN,MAAM,SACN,IACF;QAEG;IACL,IAAI,CAAC,MAAM,WACT,IAAI,mBAAmB;IAEzB,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;GACF;GACA;EACF,KAAK;GACH,0BACE,KACA,cACA,MAAM,OACN,MAAM,SACN,IACF;GACA;CACJ;CAEF,OAAO;AACT"}
1
+ {"version":3,"file":"number.js","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/number.ts"],"sourcesContent":["import { ZodNumberDef } from \"zod/v3\";\nimport {\n addErrorMessage,\n ErrorMessages,\n setResponseValueAndErrors,\n} from \"../errorMessages.js\";\nimport { Refs } from \"../Refs.js\";\n\nexport type JsonSchema7NumberType = {\n type: \"number\" | \"integer\";\n minimum?: number;\n exclusiveMinimum?: number;\n maximum?: number;\n exclusiveMaximum?: number;\n multipleOf?: number;\n errorMessage?: ErrorMessages<JsonSchema7NumberType>;\n};\n\nexport function parseNumberDef(\n def: ZodNumberDef,\n refs: Refs\n): JsonSchema7NumberType {\n const res: JsonSchema7NumberType = {\n type: \"number\",\n };\n\n if (!def.checks) return res;\n\n for (const check of def.checks) {\n switch (check.kind) {\n case \"int\":\n res.type = \"integer\";\n addErrorMessage(res, \"type\", check.message, refs);\n break;\n case \"min\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(\n res,\n \"minimum\",\n check.value,\n check.message,\n refs\n );\n } else {\n setResponseValueAndErrors(\n res,\n \"exclusiveMinimum\",\n check.value,\n check.message,\n refs\n );\n }\n } else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true as any;\n }\n setResponseValueAndErrors(\n res,\n \"minimum\",\n check.value,\n check.message,\n refs\n );\n }\n break;\n case \"max\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(\n res,\n \"maximum\",\n check.value,\n check.message,\n refs\n );\n } else {\n setResponseValueAndErrors(\n res,\n \"exclusiveMaximum\",\n check.value,\n check.message,\n refs\n );\n }\n } else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true as any;\n }\n setResponseValueAndErrors(\n res,\n \"maximum\",\n check.value,\n check.message,\n refs\n );\n }\n break;\n case \"multipleOf\":\n setResponseValueAndErrors(\n res,\n \"multipleOf\",\n check.value,\n check.message,\n refs\n );\n break;\n }\n }\n return res;\n}\n"],"mappings":";;AAkBA,SAAgB,eACd,KACA,MACuB;CACvB,MAAM,MAA6B,EACjC,MAAM,SACR;CAEA,IAAI,CAAC,IAAI,QAAQ,OAAO;CAExB,KAAK,MAAM,SAAS,IAAI,QACtB,QAAQ,MAAM,MAAd;EACE,KAAK;GACH,IAAI,OAAO;GACX,gBAAgB,KAAK,QAAQ,MAAM,SAAS,IAAI;GAChD;EACF,KAAK;GACH,IAAI,KAAK,WAAW,eAAe;IACjC,IAAI,MAAM,WACR,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;SAEA,0BACE,KACA,oBACA,MAAM,OACN,MAAM,SACN,IACF;GAEJ,OAAO;IACL,IAAI,CAAC,MAAM,WACT,IAAI,mBAAmB;IAEzB,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;GACF;GACA;EACF,KAAK;GACH,IAAI,KAAK,WAAW,eAAe;IACjC,IAAI,MAAM,WACR,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;SAEA,0BACE,KACA,oBACA,MAAM,OACN,MAAM,SACN,IACF;GAEJ,OAAO;IACL,IAAI,CAAC,MAAM,WACT,IAAI,mBAAmB;IAEzB,0BACE,KACA,WACA,MAAM,OACN,MAAM,SACN,IACF;GACF;GACA;EACF,KAAK,cACH,0BACE,KACA,cACA,MAAM,OACN,MAAM,SACN,IACF;CAEJ;CAEF,OAAO;AACT"}
@@ -69,9 +69,7 @@ function parseStringDef(def, refs) {
69
69
  case "format:idn-email":
70
70
  addFormat(res, "idn-email", check.message, refs);
71
71
  break;
72
- case "pattern:zod":
73
- addPattern(res, zodPatterns.email, check.message, refs);
74
- break;
72
+ case "pattern:zod": addPattern(res, zodPatterns.email, check.message, refs);
75
73
  }
76
74
  break;
77
75
  case "url":
@@ -142,18 +140,10 @@ function parseStringDef(def, refs) {
142
140
  case "contentEncoding:base64":
143
141
  require_errorMessages.setResponseValueAndErrors(res, "contentEncoding", "base64", check.message, refs);
144
142
  break;
145
- case "pattern:zod":
146
- addPattern(res, zodPatterns.base64, check.message, refs);
147
- break;
143
+ case "pattern:zod": addPattern(res, zodPatterns.base64, check.message, refs);
148
144
  }
149
145
  break;
150
- case "nanoid":
151
- addPattern(res, zodPatterns.nanoid, check.message, refs);
152
- break;
153
- case "toLowerCase":
154
- case "toUpperCase":
155
- case "trim": break;
156
- default:
146
+ case "nanoid": addPattern(res, zodPatterns.nanoid, check.message, refs);
157
147
  }
158
148
  return res;
159
149
  }
@@ -1 +1 @@
1
- {"version":3,"file":"string.cjs","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/string.ts"],"sourcesContent":["import { ZodStringDef } from \"zod/v3\";\nimport { ErrorMessages, setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { Refs } from \"../Refs.js\";\n\nlet emojiRegex: RegExp | undefined = undefined;\n\n/**\n * Generated from the regular expressions found here as of 2024-05-22:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Expressions with /i flag have been changed accordingly.\n */\nexport const zodPatterns = {\n /**\n * `c` was changed to `[cC]` to replicate /i flag\n */\n cuid: /^[cC][^\\s-]{8,}$/,\n cuid2: /^[0-9a-z]+$/,\n ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n /**\n * `a-z` was added to replicate /i flag\n */\n email:\n /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n /**\n * Constructed a valid Unicode RegExp\n *\n * Lazily instantiate since this type of regex isn't supported\n * in all envs (e.g. React Native).\n *\n * See:\n * https://github.com/colinhacks/zod/issues/2433\n * Fix in Zod:\n * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n */\n emoji: () => {\n if (emojiRegex === undefined) {\n emojiRegex = RegExp(\n \"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\",\n \"u\"\n );\n }\n return emojiRegex;\n },\n /**\n * Unused\n */\n uuid: /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/,\n /**\n * Unused\n */\n ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,\n ipv4Cidr:\n /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,\n /**\n * Unused\n */\n ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,\n ipv6Cidr:\n /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,\n base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n base64url:\n /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n nanoid: /^[a-zA-Z0-9_-]{21}$/,\n jwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,\n} as const;\n\nexport type JsonSchema7StringType = {\n type: \"string\";\n minLength?: number;\n maxLength?: number;\n format?:\n | \"email\"\n | \"idn-email\"\n | \"uri\"\n | \"uuid\"\n | \"date-time\"\n | \"ipv4\"\n | \"ipv6\"\n | \"date\"\n | \"time\"\n | \"duration\";\n pattern?: string;\n allOf?: {\n pattern: string;\n errorMessage?: ErrorMessages<{ pattern: string }>;\n }[];\n anyOf?: {\n format: string;\n errorMessage?: ErrorMessages<{ format: string }>;\n }[];\n errorMessage?: ErrorMessages<JsonSchema7StringType>;\n contentEncoding?: string;\n};\n\nexport function parseStringDef(\n def: ZodStringDef,\n refs: Refs\n): JsonSchema7StringType {\n const res: JsonSchema7StringType = {\n type: \"string\",\n };\n\n if (def.checks) {\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(\n res,\n \"minLength\",\n typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value,\n check.message,\n refs\n );\n break;\n case \"max\":\n setResponseValueAndErrors(\n res,\n \"maxLength\",\n typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value,\n check.message,\n refs\n );\n\n break;\n case \"email\":\n switch (refs.emailStrategy) {\n case \"format:email\":\n addFormat(res, \"email\", check.message, refs);\n break;\n case \"format:idn-email\":\n addFormat(res, \"idn-email\", check.message, refs);\n break;\n case \"pattern:zod\":\n addPattern(res, zodPatterns.email, check.message, refs);\n break;\n }\n\n break;\n case \"url\":\n addFormat(res, \"uri\", check.message, refs);\n break;\n case \"uuid\":\n addFormat(res, \"uuid\", check.message, refs);\n break;\n case \"regex\":\n addPattern(res, check.regex, check.message, refs);\n break;\n case \"cuid\":\n addPattern(res, zodPatterns.cuid, check.message, refs);\n break;\n case \"cuid2\":\n addPattern(res, zodPatterns.cuid2, check.message, refs);\n break;\n case \"startsWith\":\n addPattern(\n res,\n RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`),\n check.message,\n refs\n );\n break;\n case \"endsWith\":\n addPattern(\n res,\n RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`),\n check.message,\n refs\n );\n break;\n case \"datetime\":\n addFormat(res, \"date-time\", check.message, refs);\n break;\n case \"date\":\n addFormat(res, \"date\", check.message, refs);\n break;\n case \"time\":\n addFormat(res, \"time\", check.message, refs);\n break;\n case \"duration\":\n addFormat(res, \"duration\", check.message, refs);\n break;\n case \"length\":\n setResponseValueAndErrors(\n res,\n \"minLength\",\n typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value,\n check.message,\n refs\n );\n setResponseValueAndErrors(\n res,\n \"maxLength\",\n typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value,\n check.message,\n refs\n );\n break;\n case \"includes\": {\n addPattern(\n res,\n RegExp(escapeLiteralCheckValue(check.value, refs)),\n check.message,\n refs\n );\n break;\n }\n case \"ip\": {\n if (check.version !== \"v6\") {\n addFormat(res, \"ipv4\", check.message, refs);\n }\n if (check.version !== \"v4\") {\n addFormat(res, \"ipv6\", check.message, refs);\n }\n break;\n }\n case \"base64url\":\n addPattern(res, zodPatterns.base64url, check.message, refs);\n break;\n case \"jwt\":\n addPattern(res, zodPatterns.jwt, check.message, refs);\n break;\n case \"cidr\": {\n if (check.version !== \"v6\") {\n addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n }\n if (check.version !== \"v4\") {\n addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n }\n break;\n }\n case \"emoji\":\n addPattern(res, zodPatterns.emoji(), check.message, refs);\n break;\n case \"ulid\": {\n addPattern(res, zodPatterns.ulid, check.message, refs);\n break;\n }\n case \"base64\": {\n switch (refs.base64Strategy) {\n case \"format:binary\": {\n addFormat(res, \"binary\" as any, check.message, refs);\n break;\n }\n\n case \"contentEncoding:base64\": {\n setResponseValueAndErrors(\n res,\n \"contentEncoding\",\n \"base64\",\n check.message,\n refs\n );\n break;\n }\n\n case \"pattern:zod\": {\n addPattern(res, zodPatterns.base64, check.message, refs);\n break;\n }\n }\n break;\n }\n case \"nanoid\": {\n addPattern(res, zodPatterns.nanoid, check.message, refs);\n break;\n }\n case \"toLowerCase\":\n case \"toUpperCase\":\n case \"trim\":\n break;\n default:\n /* c8 ignore next */\n ((_: never) => {})(check);\n }\n }\n }\n\n return res;\n}\n\nfunction escapeLiteralCheckValue(literal: string, refs: Refs): string {\n return refs.patternStrategy === \"escape\"\n ? escapeNonAlphaNumeric(literal)\n : literal;\n}\n\nconst ALPHA_NUMERIC = new Set(\n \"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\"\n);\n\nfunction escapeNonAlphaNumeric(source: string) {\n let result = \"\";\n\n for (let i = 0; i < source.length; i++) {\n if (!ALPHA_NUMERIC.has(source[i])) {\n result += \"\\\\\";\n }\n\n result += source[i];\n }\n\n return result;\n}\n\n// Adds a \"format\" keyword to the schema. If a format exists, both formats will be joined in an allOf-node, along with subsequent ones.\nfunction addFormat(\n schema: JsonSchema7StringType,\n value: Required<JsonSchema7StringType>[\"format\"],\n message: string | undefined,\n refs: Refs\n) {\n if (schema.format || schema.anyOf?.some((x) => x.format)) {\n if (!schema.anyOf) {\n schema.anyOf = [];\n }\n\n if (schema.format) {\n schema.anyOf!.push({\n format: schema.format,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { format: schema.errorMessage.format },\n }),\n });\n delete schema.format;\n if (schema.errorMessage) {\n delete schema.errorMessage.format;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n\n schema.anyOf!.push({\n format: value,\n ...(message &&\n refs.errorMessages && { errorMessage: { format: message } }),\n });\n } else {\n setResponseValueAndErrors(schema, \"format\", value, message, refs);\n }\n}\n\n// Adds a \"pattern\" keyword to the schema. If a pattern exists, both patterns will be joined in an allOf-node, along with subsequent ones.\nfunction addPattern(\n schema: JsonSchema7StringType,\n regex: RegExp,\n message: string | undefined,\n refs: Refs\n) {\n if (schema.pattern || schema.allOf?.some((x) => x.pattern)) {\n if (!schema.allOf) {\n schema.allOf = [];\n }\n\n if (schema.pattern) {\n schema.allOf!.push({\n pattern: schema.pattern,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { pattern: schema.errorMessage.pattern },\n }),\n });\n delete schema.pattern;\n if (schema.errorMessage) {\n delete schema.errorMessage.pattern;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n\n schema.allOf!.push({\n pattern: stringifyRegExpWithFlags(regex, refs),\n ...(message &&\n refs.errorMessages && { errorMessage: { pattern: message } }),\n });\n } else {\n setResponseValueAndErrors(\n schema,\n \"pattern\",\n stringifyRegExpWithFlags(regex, refs),\n message,\n refs\n );\n }\n}\n\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex: RegExp, refs: Refs): string {\n if (!refs.applyRegexFlags || !regex.flags) {\n return regex.source;\n }\n\n // Currently handled flags\n const flags = {\n i: regex.flags.includes(\"i\"), // Case-insensitive\n m: regex.flags.includes(\"m\"), // `^` and `$` matches adjacent to newline characters\n s: regex.flags.includes(\"s\"), // `.` matches newlines\n };\n\n // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril!\n const source = flags.i ? regex.source.toLowerCase() : regex.source;\n let pattern = \"\";\n let isEscaped = false;\n let inCharGroup = false;\n let inCharRange = false;\n\n for (let i = 0; i < source.length; i++) {\n if (isEscaped) {\n pattern += source[i];\n isEscaped = false;\n continue;\n }\n\n if (flags.i) {\n if (inCharGroup) {\n if (source[i].match(/[a-z]/)) {\n if (inCharRange) {\n pattern += source[i];\n pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n inCharRange = false;\n } else if (source[i + 1] === \"-\" && source[i + 2]?.match(/[a-z]/)) {\n pattern += source[i];\n inCharRange = true;\n } else {\n pattern += `${source[i]}${source[i].toUpperCase()}`;\n }\n continue;\n }\n } else if (source[i].match(/[a-z]/)) {\n pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n continue;\n }\n }\n\n if (flags.m) {\n if (source[i] === \"^\") {\n pattern += `(^|(?<=[\\r\\n]))`;\n continue;\n } else if (source[i] === \"$\") {\n pattern += `($|(?=[\\r\\n]))`;\n continue;\n }\n }\n\n if (flags.s && source[i] === \".\") {\n pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n continue;\n }\n\n pattern += source[i];\n if (source[i] === \"\\\\\") {\n isEscaped = true;\n } else if (inCharGroup && source[i] === \"]\") {\n inCharGroup = false;\n } else if (!inCharGroup && source[i] === \"[\") {\n inCharGroup = true;\n }\n }\n\n try {\n new RegExp(pattern);\n } catch {\n console.warn(\n `Could not convert regex pattern at ${refs.currentPath.join(\n \"/\"\n )} to a flag-independent form! Falling back to the flag-ignorant source`\n );\n return regex.source;\n }\n\n return pattern;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"string.cjs","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/string.ts"],"sourcesContent":["import { ZodStringDef } from \"zod/v3\";\nimport { ErrorMessages, setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { Refs } from \"../Refs.js\";\n\nlet emojiRegex: RegExp | undefined = undefined;\n\n/**\n * Generated from the regular expressions found here as of 2024-05-22:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Expressions with /i flag have been changed accordingly.\n */\nexport const zodPatterns = {\n /**\n * `c` was changed to `[cC]` to replicate /i flag\n */\n cuid: /^[cC][^\\s-]{8,}$/,\n cuid2: /^[0-9a-z]+$/,\n ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n /**\n * `a-z` was added to replicate /i flag\n */\n email:\n /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n /**\n * Constructed a valid Unicode RegExp\n *\n * Lazily instantiate since this type of regex isn't supported\n * in all envs (e.g. React Native).\n *\n * See:\n * https://github.com/colinhacks/zod/issues/2433\n * Fix in Zod:\n * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n */\n emoji: () => {\n if (emojiRegex === undefined) {\n emojiRegex = RegExp(\n \"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\",\n \"u\"\n );\n }\n return emojiRegex;\n },\n /**\n * Unused\n */\n uuid: /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/,\n /**\n * Unused\n */\n ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,\n ipv4Cidr:\n /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,\n /**\n * Unused\n */\n ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,\n ipv6Cidr:\n /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,\n base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n base64url:\n /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n nanoid: /^[a-zA-Z0-9_-]{21}$/,\n jwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,\n} as const;\n\nexport type JsonSchema7StringType = {\n type: \"string\";\n minLength?: number;\n maxLength?: number;\n format?:\n | \"email\"\n | \"idn-email\"\n | \"uri\"\n | \"uuid\"\n | \"date-time\"\n | \"ipv4\"\n | \"ipv6\"\n | \"date\"\n | \"time\"\n | \"duration\";\n pattern?: string;\n allOf?: {\n pattern: string;\n errorMessage?: ErrorMessages<{ pattern: string }>;\n }[];\n anyOf?: {\n format: string;\n errorMessage?: ErrorMessages<{ format: string }>;\n }[];\n errorMessage?: ErrorMessages<JsonSchema7StringType>;\n contentEncoding?: string;\n};\n\nexport function parseStringDef(\n def: ZodStringDef,\n refs: Refs\n): JsonSchema7StringType {\n const res: JsonSchema7StringType = {\n type: \"string\",\n };\n\n if (def.checks) {\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(\n res,\n \"minLength\",\n typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value,\n check.message,\n refs\n );\n break;\n case \"max\":\n setResponseValueAndErrors(\n res,\n \"maxLength\",\n typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value,\n check.message,\n refs\n );\n\n break;\n case \"email\":\n switch (refs.emailStrategy) {\n case \"format:email\":\n addFormat(res, \"email\", check.message, refs);\n break;\n case \"format:idn-email\":\n addFormat(res, \"idn-email\", check.message, refs);\n break;\n case \"pattern:zod\":\n addPattern(res, zodPatterns.email, check.message, refs);\n break;\n }\n\n break;\n case \"url\":\n addFormat(res, \"uri\", check.message, refs);\n break;\n case \"uuid\":\n addFormat(res, \"uuid\", check.message, refs);\n break;\n case \"regex\":\n addPattern(res, check.regex, check.message, refs);\n break;\n case \"cuid\":\n addPattern(res, zodPatterns.cuid, check.message, refs);\n break;\n case \"cuid2\":\n addPattern(res, zodPatterns.cuid2, check.message, refs);\n break;\n case \"startsWith\":\n addPattern(\n res,\n RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`),\n check.message,\n refs\n );\n break;\n case \"endsWith\":\n addPattern(\n res,\n RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`),\n check.message,\n refs\n );\n break;\n case \"datetime\":\n addFormat(res, \"date-time\", check.message, refs);\n break;\n case \"date\":\n addFormat(res, \"date\", check.message, refs);\n break;\n case \"time\":\n addFormat(res, \"time\", check.message, refs);\n break;\n case \"duration\":\n addFormat(res, \"duration\", check.message, refs);\n break;\n case \"length\":\n setResponseValueAndErrors(\n res,\n \"minLength\",\n typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value,\n check.message,\n refs\n );\n setResponseValueAndErrors(\n res,\n \"maxLength\",\n typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value,\n check.message,\n refs\n );\n break;\n case \"includes\": {\n addPattern(\n res,\n RegExp(escapeLiteralCheckValue(check.value, refs)),\n check.message,\n refs\n );\n break;\n }\n case \"ip\": {\n if (check.version !== \"v6\") {\n addFormat(res, \"ipv4\", check.message, refs);\n }\n if (check.version !== \"v4\") {\n addFormat(res, \"ipv6\", check.message, refs);\n }\n break;\n }\n case \"base64url\":\n addPattern(res, zodPatterns.base64url, check.message, refs);\n break;\n case \"jwt\":\n addPattern(res, zodPatterns.jwt, check.message, refs);\n break;\n case \"cidr\": {\n if (check.version !== \"v6\") {\n addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n }\n if (check.version !== \"v4\") {\n addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n }\n break;\n }\n case \"emoji\":\n addPattern(res, zodPatterns.emoji(), check.message, refs);\n break;\n case \"ulid\": {\n addPattern(res, zodPatterns.ulid, check.message, refs);\n break;\n }\n case \"base64\": {\n switch (refs.base64Strategy) {\n case \"format:binary\": {\n addFormat(res, \"binary\" as any, check.message, refs);\n break;\n }\n\n case \"contentEncoding:base64\": {\n setResponseValueAndErrors(\n res,\n \"contentEncoding\",\n \"base64\",\n check.message,\n refs\n );\n break;\n }\n\n case \"pattern:zod\": {\n addPattern(res, zodPatterns.base64, check.message, refs);\n break;\n }\n }\n break;\n }\n case \"nanoid\": {\n addPattern(res, zodPatterns.nanoid, check.message, refs);\n break;\n }\n case \"toLowerCase\":\n case \"toUpperCase\":\n case \"trim\":\n break;\n default:\n /* c8 ignore next */\n ((_: never) => {})(check);\n }\n }\n }\n\n return res;\n}\n\nfunction escapeLiteralCheckValue(literal: string, refs: Refs): string {\n return refs.patternStrategy === \"escape\"\n ? escapeNonAlphaNumeric(literal)\n : literal;\n}\n\nconst ALPHA_NUMERIC = new Set(\n \"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\"\n);\n\nfunction escapeNonAlphaNumeric(source: string) {\n let result = \"\";\n\n for (let i = 0; i < source.length; i++) {\n if (!ALPHA_NUMERIC.has(source[i])) {\n result += \"\\\\\";\n }\n\n result += source[i];\n }\n\n return result;\n}\n\n// Adds a \"format\" keyword to the schema. If a format exists, both formats will be joined in an allOf-node, along with subsequent ones.\nfunction addFormat(\n schema: JsonSchema7StringType,\n value: Required<JsonSchema7StringType>[\"format\"],\n message: string | undefined,\n refs: Refs\n) {\n if (schema.format || schema.anyOf?.some((x) => x.format)) {\n if (!schema.anyOf) {\n schema.anyOf = [];\n }\n\n if (schema.format) {\n schema.anyOf!.push({\n format: schema.format,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { format: schema.errorMessage.format },\n }),\n });\n delete schema.format;\n if (schema.errorMessage) {\n delete schema.errorMessage.format;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n\n schema.anyOf!.push({\n format: value,\n ...(message &&\n refs.errorMessages && { errorMessage: { format: message } }),\n });\n } else {\n setResponseValueAndErrors(schema, \"format\", value, message, refs);\n }\n}\n\n// Adds a \"pattern\" keyword to the schema. If a pattern exists, both patterns will be joined in an allOf-node, along with subsequent ones.\nfunction addPattern(\n schema: JsonSchema7StringType,\n regex: RegExp,\n message: string | undefined,\n refs: Refs\n) {\n if (schema.pattern || schema.allOf?.some((x) => x.pattern)) {\n if (!schema.allOf) {\n schema.allOf = [];\n }\n\n if (schema.pattern) {\n schema.allOf!.push({\n pattern: schema.pattern,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { pattern: schema.errorMessage.pattern },\n }),\n });\n delete schema.pattern;\n if (schema.errorMessage) {\n delete schema.errorMessage.pattern;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n\n schema.allOf!.push({\n pattern: stringifyRegExpWithFlags(regex, refs),\n ...(message &&\n refs.errorMessages && { errorMessage: { pattern: message } }),\n });\n } else {\n setResponseValueAndErrors(\n schema,\n \"pattern\",\n stringifyRegExpWithFlags(regex, refs),\n message,\n refs\n );\n }\n}\n\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex: RegExp, refs: Refs): string {\n if (!refs.applyRegexFlags || !regex.flags) {\n return regex.source;\n }\n\n // Currently handled flags\n const flags = {\n i: regex.flags.includes(\"i\"), // Case-insensitive\n m: regex.flags.includes(\"m\"), // `^` and `$` matches adjacent to newline characters\n s: regex.flags.includes(\"s\"), // `.` matches newlines\n };\n\n // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril!\n const source = flags.i ? regex.source.toLowerCase() : regex.source;\n let pattern = \"\";\n let isEscaped = false;\n let inCharGroup = false;\n let inCharRange = false;\n\n for (let i = 0; i < source.length; i++) {\n if (isEscaped) {\n pattern += source[i];\n isEscaped = false;\n continue;\n }\n\n if (flags.i) {\n if (inCharGroup) {\n if (source[i].match(/[a-z]/)) {\n if (inCharRange) {\n pattern += source[i];\n pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n inCharRange = false;\n } else if (source[i + 1] === \"-\" && source[i + 2]?.match(/[a-z]/)) {\n pattern += source[i];\n inCharRange = true;\n } else {\n pattern += `${source[i]}${source[i].toUpperCase()}`;\n }\n continue;\n }\n } else if (source[i].match(/[a-z]/)) {\n pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n continue;\n }\n }\n\n if (flags.m) {\n if (source[i] === \"^\") {\n pattern += `(^|(?<=[\\r\\n]))`;\n continue;\n } else if (source[i] === \"$\") {\n pattern += `($|(?=[\\r\\n]))`;\n continue;\n }\n }\n\n if (flags.s && source[i] === \".\") {\n pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n continue;\n }\n\n pattern += source[i];\n if (source[i] === \"\\\\\") {\n isEscaped = true;\n } else if (inCharGroup && source[i] === \"]\") {\n inCharGroup = false;\n } else if (!inCharGroup && source[i] === \"[\") {\n inCharGroup = true;\n }\n }\n\n try {\n new RegExp(pattern);\n } catch {\n console.warn(\n `Could not convert regex pattern at ${refs.currentPath.join(\n \"/\"\n )} to a flag-independent form! Falling back to the flag-ignorant source`\n );\n return regex.source;\n }\n\n return pattern;\n}\n"],"mappings":";;AAIA,IAAI,aAAiC,KAAA;;;;;;;AAQrC,MAAa,cAAc;;;;CAIzB,MAAM;CACN,OAAO;CACP,MAAM;;;;CAIN,OACE;;;;;;;;;;;;CAYF,aAAa;EACX,IAAI,eAAe,KAAA,GACjB,aAAa,OACX,wDACA,GACF;EAEF,OAAO;CACT;;;;CAIA,MAAM;;;;CAIN,MAAM;CACN,UACE;;;;CAIF,MAAM;CACN,UACE;CACF,QAAQ;CACR,WACE;CACF,QAAQ;CACR,KAAK;AACP;AA8BA,SAAgB,eACd,KACA,MACuB;CACvB,MAAM,MAA6B,EACjC,MAAM,SACR;CAEA,IAAI,IAAI,QACN,KAAK,MAAM,SAAS,IAAI,QACtB,QAAQ,MAAM,MAAd;EACE,KAAK;GACH,sBAAA,0BACE,KACA,aACA,OAAO,IAAI,cAAc,WACrB,KAAK,IAAI,IAAI,WAAW,MAAM,KAAK,IACnC,MAAM,OACV,MAAM,SACN,IACF;GACA;EACF,KAAK;GACH,sBAAA,0BACE,KACA,aACA,OAAO,IAAI,cAAc,WACrB,KAAK,IAAI,IAAI,WAAW,MAAM,KAAK,IACnC,MAAM,OACV,MAAM,SACN,IACF;GAEA;EACF,KAAK;GACH,QAAQ,KAAK,eAAb;IACE,KAAK;KACH,UAAU,KAAK,SAAS,MAAM,SAAS,IAAI;KAC3C;IACF,KAAK;KACH,UAAU,KAAK,aAAa,MAAM,SAAS,IAAI;KAC/C;IACF,KAAK,eACH,WAAW,KAAK,YAAY,OAAO,MAAM,SAAS,IAAI;GAE1D;GAEA;EACF,KAAK;GACH,UAAU,KAAK,OAAO,MAAM,SAAS,IAAI;GACzC;EACF,KAAK;GACH,UAAU,KAAK,QAAQ,MAAM,SAAS,IAAI;GAC1C;EACF,KAAK;GACH,WAAW,KAAK,MAAM,OAAO,MAAM,SAAS,IAAI;GAChD;EACF,KAAK;GACH,WAAW,KAAK,YAAY,MAAM,MAAM,SAAS,IAAI;GACrD;EACF,KAAK;GACH,WAAW,KAAK,YAAY,OAAO,MAAM,SAAS,IAAI;GACtD;EACF,KAAK;GACH,WACE,KACA,OAAO,IAAI,wBAAwB,MAAM,OAAO,IAAI,GAAG,GACvD,MAAM,SACN,IACF;GACA;EACF,KAAK;GACH,WACE,KACA,OAAO,GAAG,wBAAwB,MAAM,OAAO,IAAI,EAAE,EAAE,GACvD,MAAM,SACN,IACF;GACA;EACF,KAAK;GACH,UAAU,KAAK,aAAa,MAAM,SAAS,IAAI;GAC/C;EACF,KAAK;GACH,UAAU,KAAK,QAAQ,MAAM,SAAS,IAAI;GAC1C;EACF,KAAK;GACH,UAAU,KAAK,QAAQ,MAAM,SAAS,IAAI;GAC1C;EACF,KAAK;GACH,UAAU,KAAK,YAAY,MAAM,SAAS,IAAI;GAC9C;EACF,KAAK;GACH,sBAAA,0BACE,KACA,aACA,OAAO,IAAI,cAAc,WACrB,KAAK,IAAI,IAAI,WAAW,MAAM,KAAK,IACnC,MAAM,OACV,MAAM,SACN,IACF;GACA,sBAAA,0BACE,KACA,aACA,OAAO,IAAI,cAAc,WACrB,KAAK,IAAI,IAAI,WAAW,MAAM,KAAK,IACnC,MAAM,OACV,MAAM,SACN,IACF;GACA;EACF,KAAK;GACH,WACE,KACA,OAAO,wBAAwB,MAAM,OAAO,IAAI,CAAC,GACjD,MAAM,SACN,IACF;GACA;EAEF,KAAK;GACH,IAAI,MAAM,YAAY,MACpB,UAAU,KAAK,QAAQ,MAAM,SAAS,IAAI;GAE5C,IAAI,MAAM,YAAY,MACpB,UAAU,KAAK,QAAQ,MAAM,SAAS,IAAI;GAE5C;EAEF,KAAK;GACH,WAAW,KAAK,YAAY,WAAW,MAAM,SAAS,IAAI;GAC1D;EACF,KAAK;GACH,WAAW,KAAK,YAAY,KAAK,MAAM,SAAS,IAAI;GACpD;EACF,KAAK;GACH,IAAI,MAAM,YAAY,MACpB,WAAW,KAAK,YAAY,UAAU,MAAM,SAAS,IAAI;GAE3D,IAAI,MAAM,YAAY,MACpB,WAAW,KAAK,YAAY,UAAU,MAAM,SAAS,IAAI;GAE3D;EAEF,KAAK;GACH,WAAW,KAAK,YAAY,MAAM,GAAG,MAAM,SAAS,IAAI;GACxD;EACF,KAAK;GACH,WAAW,KAAK,YAAY,MAAM,MAAM,SAAS,IAAI;GACrD;EAEF,KAAK;GACH,QAAQ,KAAK,gBAAb;IACE,KAAK;KACH,UAAU,KAAK,UAAiB,MAAM,SAAS,IAAI;KACnD;IAGF,KAAK;KACH,sBAAA,0BACE,KACA,mBACA,UACA,MAAM,SACN,IACF;KACA;IAGF,KAAK,eACH,WAAW,KAAK,YAAY,QAAQ,MAAM,SAAS,IAAI;GAG3D;GACA;EAEF,KAAK,UACH,WAAW,KAAK,YAAY,QAAQ,MAAM,SAAS,IAAI;CAU3D;CAIJ,OAAO;AACT;AAEA,SAAS,wBAAwB,SAAiB,MAAoB;CACpE,OAAO,KAAK,oBAAoB,WAC5B,sBAAsB,OAAO,IAC7B;AACN;AAEA,MAAM,gCAAgB,IAAI,IACxB,8DACF;AAEA,SAAS,sBAAsB,QAAgB;CAC7C,IAAI,SAAS;CAEb,KAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;EACtC,IAAI,CAAC,cAAc,IAAI,OAAO,EAAE,GAC9B,UAAU;EAGZ,UAAU,OAAO;CACnB;CAEA,OAAO;AACT;AAGA,SAAS,UACP,QACA,OACA,SACA,MACA;CACA,IAAI,OAAO,UAAU,OAAO,OAAO,MAAM,MAAM,EAAE,MAAM,GAAG;EACxD,IAAI,CAAC,OAAO,OACV,OAAO,QAAQ,CAAC;EAGlB,IAAI,OAAO,QAAQ;GACjB,OAAO,MAAO,KAAK;IACjB,QAAQ,OAAO;IACf,GAAI,OAAO,gBACT,KAAK,iBAAiB,EACpB,cAAc,EAAE,QAAQ,OAAO,aAAa,OAAO,EACrD;GACJ,CAAC;GACD,OAAO,OAAO;GACd,IAAI,OAAO,cAAc;IACvB,OAAO,OAAO,aAAa;IAC3B,IAAI,OAAO,KAAK,OAAO,YAAY,CAAC,CAAC,WAAW,GAC9C,OAAO,OAAO;GAElB;EACF;EAEA,OAAO,MAAO,KAAK;GACjB,QAAQ;GACR,GAAI,WACF,KAAK,iBAAiB,EAAE,cAAc,EAAE,QAAQ,QAAQ,EAAE;EAC9D,CAAC;CACH,OACE,sBAAA,0BAA0B,QAAQ,UAAU,OAAO,SAAS,IAAI;AAEpE;AAGA,SAAS,WACP,QACA,OACA,SACA,MACA;CACA,IAAI,OAAO,WAAW,OAAO,OAAO,MAAM,MAAM,EAAE,OAAO,GAAG;EAC1D,IAAI,CAAC,OAAO,OACV,OAAO,QAAQ,CAAC;EAGlB,IAAI,OAAO,SAAS;GAClB,OAAO,MAAO,KAAK;IACjB,SAAS,OAAO;IAChB,GAAI,OAAO,gBACT,KAAK,iBAAiB,EACpB,cAAc,EAAE,SAAS,OAAO,aAAa,QAAQ,EACvD;GACJ,CAAC;GACD,OAAO,OAAO;GACd,IAAI,OAAO,cAAc;IACvB,OAAO,OAAO,aAAa;IAC3B,IAAI,OAAO,KAAK,OAAO,YAAY,CAAC,CAAC,WAAW,GAC9C,OAAO,OAAO;GAElB;EACF;EAEA,OAAO,MAAO,KAAK;GACjB,SAAS,yBAAyB,OAAO,IAAI;GAC7C,GAAI,WACF,KAAK,iBAAiB,EAAE,cAAc,EAAE,SAAS,QAAQ,EAAE;EAC/D,CAAC;CACH,OACE,sBAAA,0BACE,QACA,WACA,yBAAyB,OAAO,IAAI,GACpC,SACA,IACF;AAEJ;AAGA,SAAS,yBAAyB,OAAe,MAAoB;CACnE,IAAI,CAAC,KAAK,mBAAmB,CAAC,MAAM,OAClC,OAAO,MAAM;CAIf,MAAM,QAAQ;EACZ,GAAG,MAAM,MAAM,SAAS,GAAG;EAC3B,GAAG,MAAM,MAAM,SAAS,GAAG;EAC3B,GAAG,MAAM,MAAM,SAAS,GAAG;CAC7B;CAGA,MAAM,SAAS,MAAM,IAAI,MAAM,OAAO,YAAY,IAAI,MAAM;CAC5D,IAAI,UAAU;CACd,IAAI,YAAY;CAChB,IAAI,cAAc;CAClB,IAAI,cAAc;CAElB,KAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;EACtC,IAAI,WAAW;GACb,WAAW,OAAO;GAClB,YAAY;GACZ;EACF;EAEA,IAAI,MAAM,GAAG;GACX,IAAI,aACE;QAAA,OAAO,EAAE,CAAC,MAAM,OAAO,GAAG;KAC5B,IAAI,aAAa;MACf,WAAW,OAAO;MAClB,WAAW,GAAG,OAAO,IAAI,GAAG,GAAG,OAAO,KAAK,YAAY;MACvD,cAAc;KAChB,OAAO,IAAI,OAAO,IAAI,OAAO,OAAO,OAAO,IAAI,EAAE,EAAE,MAAM,OAAO,GAAG;MACjE,WAAW,OAAO;MAClB,cAAc;KAChB,OACE,WAAW,GAAG,OAAO,KAAK,OAAO,EAAE,CAAC,YAAY;KAElD;IACF;UACK,IAAI,OAAO,EAAE,CAAC,MAAM,OAAO,GAAG;IACnC,WAAW,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC,YAAY,EAAE;IACnD;GACF;EACF;EAEA,IAAI,MAAM,GAAG;GACX,IAAI,OAAO,OAAO,KAAK;IACrB,WAAW;IACX;GACF,OAAO,IAAI,OAAO,OAAO,KAAK;IAC5B,WAAW;IACX;GACF;EACF;EAEA,IAAI,MAAM,KAAK,OAAO,OAAO,KAAK;GAChC,WAAW,cAAc,GAAG,OAAO,GAAG,QAAQ,IAAI,OAAO,GAAG;GAC5D;EACF;EAEA,WAAW,OAAO;EAClB,IAAI,OAAO,OAAO,MAChB,YAAY;OACP,IAAI,eAAe,OAAO,OAAO,KACtC,cAAc;OACT,IAAI,CAAC,eAAe,OAAO,OAAO,KACvC,cAAc;CAElB;CAEA,IAAI;EACF,IAAI,OAAO,OAAO;CACpB,QAAQ;EACN,QAAQ,KACN,sCAAsC,KAAK,YAAY,KACrD,GACF,EAAE,sEACJ;EACA,OAAO,MAAM;CACf;CAEA,OAAO;AACT"}
@@ -69,9 +69,7 @@ function parseStringDef(def, refs) {
69
69
  case "format:idn-email":
70
70
  addFormat(res, "idn-email", check.message, refs);
71
71
  break;
72
- case "pattern:zod":
73
- addPattern(res, zodPatterns.email, check.message, refs);
74
- break;
72
+ case "pattern:zod": addPattern(res, zodPatterns.email, check.message, refs);
75
73
  }
76
74
  break;
77
75
  case "url":
@@ -142,18 +140,10 @@ function parseStringDef(def, refs) {
142
140
  case "contentEncoding:base64":
143
141
  setResponseValueAndErrors(res, "contentEncoding", "base64", check.message, refs);
144
142
  break;
145
- case "pattern:zod":
146
- addPattern(res, zodPatterns.base64, check.message, refs);
147
- break;
143
+ case "pattern:zod": addPattern(res, zodPatterns.base64, check.message, refs);
148
144
  }
149
145
  break;
150
- case "nanoid":
151
- addPattern(res, zodPatterns.nanoid, check.message, refs);
152
- break;
153
- case "toLowerCase":
154
- case "toUpperCase":
155
- case "trim": break;
156
- default:
146
+ case "nanoid": addPattern(res, zodPatterns.nanoid, check.message, refs);
157
147
  }
158
148
  return res;
159
149
  }
@@ -1 +1 @@
1
- {"version":3,"file":"string.js","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/string.ts"],"sourcesContent":["import { ZodStringDef } from \"zod/v3\";\nimport { ErrorMessages, setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { Refs } from \"../Refs.js\";\n\nlet emojiRegex: RegExp | undefined = undefined;\n\n/**\n * Generated from the regular expressions found here as of 2024-05-22:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Expressions with /i flag have been changed accordingly.\n */\nexport const zodPatterns = {\n /**\n * `c` was changed to `[cC]` to replicate /i flag\n */\n cuid: /^[cC][^\\s-]{8,}$/,\n cuid2: /^[0-9a-z]+$/,\n ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n /**\n * `a-z` was added to replicate /i flag\n */\n email:\n /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n /**\n * Constructed a valid Unicode RegExp\n *\n * Lazily instantiate since this type of regex isn't supported\n * in all envs (e.g. React Native).\n *\n * See:\n * https://github.com/colinhacks/zod/issues/2433\n * Fix in Zod:\n * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n */\n emoji: () => {\n if (emojiRegex === undefined) {\n emojiRegex = RegExp(\n \"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\",\n \"u\"\n );\n }\n return emojiRegex;\n },\n /**\n * Unused\n */\n uuid: /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/,\n /**\n * Unused\n */\n ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,\n ipv4Cidr:\n /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,\n /**\n * Unused\n */\n ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,\n ipv6Cidr:\n /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,\n base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n base64url:\n /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n nanoid: /^[a-zA-Z0-9_-]{21}$/,\n jwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,\n} as const;\n\nexport type JsonSchema7StringType = {\n type: \"string\";\n minLength?: number;\n maxLength?: number;\n format?:\n | \"email\"\n | \"idn-email\"\n | \"uri\"\n | \"uuid\"\n | \"date-time\"\n | \"ipv4\"\n | \"ipv6\"\n | \"date\"\n | \"time\"\n | \"duration\";\n pattern?: string;\n allOf?: {\n pattern: string;\n errorMessage?: ErrorMessages<{ pattern: string }>;\n }[];\n anyOf?: {\n format: string;\n errorMessage?: ErrorMessages<{ format: string }>;\n }[];\n errorMessage?: ErrorMessages<JsonSchema7StringType>;\n contentEncoding?: string;\n};\n\nexport function parseStringDef(\n def: ZodStringDef,\n refs: Refs\n): JsonSchema7StringType {\n const res: JsonSchema7StringType = {\n type: \"string\",\n };\n\n if (def.checks) {\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(\n res,\n \"minLength\",\n typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value,\n check.message,\n refs\n );\n break;\n case \"max\":\n setResponseValueAndErrors(\n res,\n \"maxLength\",\n typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value,\n check.message,\n refs\n );\n\n break;\n case \"email\":\n switch (refs.emailStrategy) {\n case \"format:email\":\n addFormat(res, \"email\", check.message, refs);\n break;\n case \"format:idn-email\":\n addFormat(res, \"idn-email\", check.message, refs);\n break;\n case \"pattern:zod\":\n addPattern(res, zodPatterns.email, check.message, refs);\n break;\n }\n\n break;\n case \"url\":\n addFormat(res, \"uri\", check.message, refs);\n break;\n case \"uuid\":\n addFormat(res, \"uuid\", check.message, refs);\n break;\n case \"regex\":\n addPattern(res, check.regex, check.message, refs);\n break;\n case \"cuid\":\n addPattern(res, zodPatterns.cuid, check.message, refs);\n break;\n case \"cuid2\":\n addPattern(res, zodPatterns.cuid2, check.message, refs);\n break;\n case \"startsWith\":\n addPattern(\n res,\n RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`),\n check.message,\n refs\n );\n break;\n case \"endsWith\":\n addPattern(\n res,\n RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`),\n check.message,\n refs\n );\n break;\n case \"datetime\":\n addFormat(res, \"date-time\", check.message, refs);\n break;\n case \"date\":\n addFormat(res, \"date\", check.message, refs);\n break;\n case \"time\":\n addFormat(res, \"time\", check.message, refs);\n break;\n case \"duration\":\n addFormat(res, \"duration\", check.message, refs);\n break;\n case \"length\":\n setResponseValueAndErrors(\n res,\n \"minLength\",\n typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value,\n check.message,\n refs\n );\n setResponseValueAndErrors(\n res,\n \"maxLength\",\n typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value,\n check.message,\n refs\n );\n break;\n case \"includes\": {\n addPattern(\n res,\n RegExp(escapeLiteralCheckValue(check.value, refs)),\n check.message,\n refs\n );\n break;\n }\n case \"ip\": {\n if (check.version !== \"v6\") {\n addFormat(res, \"ipv4\", check.message, refs);\n }\n if (check.version !== \"v4\") {\n addFormat(res, \"ipv6\", check.message, refs);\n }\n break;\n }\n case \"base64url\":\n addPattern(res, zodPatterns.base64url, check.message, refs);\n break;\n case \"jwt\":\n addPattern(res, zodPatterns.jwt, check.message, refs);\n break;\n case \"cidr\": {\n if (check.version !== \"v6\") {\n addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n }\n if (check.version !== \"v4\") {\n addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n }\n break;\n }\n case \"emoji\":\n addPattern(res, zodPatterns.emoji(), check.message, refs);\n break;\n case \"ulid\": {\n addPattern(res, zodPatterns.ulid, check.message, refs);\n break;\n }\n case \"base64\": {\n switch (refs.base64Strategy) {\n case \"format:binary\": {\n addFormat(res, \"binary\" as any, check.message, refs);\n break;\n }\n\n case \"contentEncoding:base64\": {\n setResponseValueAndErrors(\n res,\n \"contentEncoding\",\n \"base64\",\n check.message,\n refs\n );\n break;\n }\n\n case \"pattern:zod\": {\n addPattern(res, zodPatterns.base64, check.message, refs);\n break;\n }\n }\n break;\n }\n case \"nanoid\": {\n addPattern(res, zodPatterns.nanoid, check.message, refs);\n break;\n }\n case \"toLowerCase\":\n case \"toUpperCase\":\n case \"trim\":\n break;\n default:\n /* c8 ignore next */\n ((_: never) => {})(check);\n }\n }\n }\n\n return res;\n}\n\nfunction escapeLiteralCheckValue(literal: string, refs: Refs): string {\n return refs.patternStrategy === \"escape\"\n ? escapeNonAlphaNumeric(literal)\n : literal;\n}\n\nconst ALPHA_NUMERIC = new Set(\n \"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\"\n);\n\nfunction escapeNonAlphaNumeric(source: string) {\n let result = \"\";\n\n for (let i = 0; i < source.length; i++) {\n if (!ALPHA_NUMERIC.has(source[i])) {\n result += \"\\\\\";\n }\n\n result += source[i];\n }\n\n return result;\n}\n\n// Adds a \"format\" keyword to the schema. If a format exists, both formats will be joined in an allOf-node, along with subsequent ones.\nfunction addFormat(\n schema: JsonSchema7StringType,\n value: Required<JsonSchema7StringType>[\"format\"],\n message: string | undefined,\n refs: Refs\n) {\n if (schema.format || schema.anyOf?.some((x) => x.format)) {\n if (!schema.anyOf) {\n schema.anyOf = [];\n }\n\n if (schema.format) {\n schema.anyOf!.push({\n format: schema.format,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { format: schema.errorMessage.format },\n }),\n });\n delete schema.format;\n if (schema.errorMessage) {\n delete schema.errorMessage.format;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n\n schema.anyOf!.push({\n format: value,\n ...(message &&\n refs.errorMessages && { errorMessage: { format: message } }),\n });\n } else {\n setResponseValueAndErrors(schema, \"format\", value, message, refs);\n }\n}\n\n// Adds a \"pattern\" keyword to the schema. If a pattern exists, both patterns will be joined in an allOf-node, along with subsequent ones.\nfunction addPattern(\n schema: JsonSchema7StringType,\n regex: RegExp,\n message: string | undefined,\n refs: Refs\n) {\n if (schema.pattern || schema.allOf?.some((x) => x.pattern)) {\n if (!schema.allOf) {\n schema.allOf = [];\n }\n\n if (schema.pattern) {\n schema.allOf!.push({\n pattern: schema.pattern,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { pattern: schema.errorMessage.pattern },\n }),\n });\n delete schema.pattern;\n if (schema.errorMessage) {\n delete schema.errorMessage.pattern;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n\n schema.allOf!.push({\n pattern: stringifyRegExpWithFlags(regex, refs),\n ...(message &&\n refs.errorMessages && { errorMessage: { pattern: message } }),\n });\n } else {\n setResponseValueAndErrors(\n schema,\n \"pattern\",\n stringifyRegExpWithFlags(regex, refs),\n message,\n refs\n );\n }\n}\n\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex: RegExp, refs: Refs): string {\n if (!refs.applyRegexFlags || !regex.flags) {\n return regex.source;\n }\n\n // Currently handled flags\n const flags = {\n i: regex.flags.includes(\"i\"), // Case-insensitive\n m: regex.flags.includes(\"m\"), // `^` and `$` matches adjacent to newline characters\n s: regex.flags.includes(\"s\"), // `.` matches newlines\n };\n\n // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril!\n const source = flags.i ? regex.source.toLowerCase() : regex.source;\n let pattern = \"\";\n let isEscaped = false;\n let inCharGroup = false;\n let inCharRange = false;\n\n for (let i = 0; i < source.length; i++) {\n if (isEscaped) {\n pattern += source[i];\n isEscaped = false;\n continue;\n }\n\n if (flags.i) {\n if (inCharGroup) {\n if (source[i].match(/[a-z]/)) {\n if (inCharRange) {\n pattern += source[i];\n pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n inCharRange = false;\n } else if (source[i + 1] === \"-\" && source[i + 2]?.match(/[a-z]/)) {\n pattern += source[i];\n inCharRange = true;\n } else {\n pattern += `${source[i]}${source[i].toUpperCase()}`;\n }\n continue;\n }\n } else if (source[i].match(/[a-z]/)) {\n pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n continue;\n }\n }\n\n if (flags.m) {\n if (source[i] === \"^\") {\n pattern += `(^|(?<=[\\r\\n]))`;\n continue;\n } else if (source[i] === \"$\") {\n pattern += `($|(?=[\\r\\n]))`;\n continue;\n }\n }\n\n if (flags.s && source[i] === \".\") {\n pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n continue;\n }\n\n pattern += source[i];\n if (source[i] === \"\\\\\") {\n isEscaped = true;\n } else if (inCharGroup && source[i] === \"]\") {\n inCharGroup = false;\n } else if (!inCharGroup && source[i] === \"[\") {\n inCharGroup = true;\n }\n }\n\n try {\n new RegExp(pattern);\n } catch {\n console.warn(\n `Could not convert regex pattern at ${refs.currentPath.join(\n \"/\"\n )} to a flag-independent form! Falling back to the flag-ignorant source`\n );\n return regex.source;\n }\n\n return pattern;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"string.js","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/string.ts"],"sourcesContent":["import { ZodStringDef } from \"zod/v3\";\nimport { ErrorMessages, setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { Refs } from \"../Refs.js\";\n\nlet emojiRegex: RegExp | undefined = undefined;\n\n/**\n * Generated from the regular expressions found here as of 2024-05-22:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Expressions with /i flag have been changed accordingly.\n */\nexport const zodPatterns = {\n /**\n * `c` was changed to `[cC]` to replicate /i flag\n */\n cuid: /^[cC][^\\s-]{8,}$/,\n cuid2: /^[0-9a-z]+$/,\n ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n /**\n * `a-z` was added to replicate /i flag\n */\n email:\n /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n /**\n * Constructed a valid Unicode RegExp\n *\n * Lazily instantiate since this type of regex isn't supported\n * in all envs (e.g. React Native).\n *\n * See:\n * https://github.com/colinhacks/zod/issues/2433\n * Fix in Zod:\n * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n */\n emoji: () => {\n if (emojiRegex === undefined) {\n emojiRegex = RegExp(\n \"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\",\n \"u\"\n );\n }\n return emojiRegex;\n },\n /**\n * Unused\n */\n uuid: /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/,\n /**\n * Unused\n */\n ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,\n ipv4Cidr:\n /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,\n /**\n * Unused\n */\n ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,\n ipv6Cidr:\n /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,\n base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n base64url:\n /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n nanoid: /^[a-zA-Z0-9_-]{21}$/,\n jwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,\n} as const;\n\nexport type JsonSchema7StringType = {\n type: \"string\";\n minLength?: number;\n maxLength?: number;\n format?:\n | \"email\"\n | \"idn-email\"\n | \"uri\"\n | \"uuid\"\n | \"date-time\"\n | \"ipv4\"\n | \"ipv6\"\n | \"date\"\n | \"time\"\n | \"duration\";\n pattern?: string;\n allOf?: {\n pattern: string;\n errorMessage?: ErrorMessages<{ pattern: string }>;\n }[];\n anyOf?: {\n format: string;\n errorMessage?: ErrorMessages<{ format: string }>;\n }[];\n errorMessage?: ErrorMessages<JsonSchema7StringType>;\n contentEncoding?: string;\n};\n\nexport function parseStringDef(\n def: ZodStringDef,\n refs: Refs\n): JsonSchema7StringType {\n const res: JsonSchema7StringType = {\n type: \"string\",\n };\n\n if (def.checks) {\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(\n res,\n \"minLength\",\n typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value,\n check.message,\n refs\n );\n break;\n case \"max\":\n setResponseValueAndErrors(\n res,\n \"maxLength\",\n typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value,\n check.message,\n refs\n );\n\n break;\n case \"email\":\n switch (refs.emailStrategy) {\n case \"format:email\":\n addFormat(res, \"email\", check.message, refs);\n break;\n case \"format:idn-email\":\n addFormat(res, \"idn-email\", check.message, refs);\n break;\n case \"pattern:zod\":\n addPattern(res, zodPatterns.email, check.message, refs);\n break;\n }\n\n break;\n case \"url\":\n addFormat(res, \"uri\", check.message, refs);\n break;\n case \"uuid\":\n addFormat(res, \"uuid\", check.message, refs);\n break;\n case \"regex\":\n addPattern(res, check.regex, check.message, refs);\n break;\n case \"cuid\":\n addPattern(res, zodPatterns.cuid, check.message, refs);\n break;\n case \"cuid2\":\n addPattern(res, zodPatterns.cuid2, check.message, refs);\n break;\n case \"startsWith\":\n addPattern(\n res,\n RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`),\n check.message,\n refs\n );\n break;\n case \"endsWith\":\n addPattern(\n res,\n RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`),\n check.message,\n refs\n );\n break;\n case \"datetime\":\n addFormat(res, \"date-time\", check.message, refs);\n break;\n case \"date\":\n addFormat(res, \"date\", check.message, refs);\n break;\n case \"time\":\n addFormat(res, \"time\", check.message, refs);\n break;\n case \"duration\":\n addFormat(res, \"duration\", check.message, refs);\n break;\n case \"length\":\n setResponseValueAndErrors(\n res,\n \"minLength\",\n typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value,\n check.message,\n refs\n );\n setResponseValueAndErrors(\n res,\n \"maxLength\",\n typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value,\n check.message,\n refs\n );\n break;\n case \"includes\": {\n addPattern(\n res,\n RegExp(escapeLiteralCheckValue(check.value, refs)),\n check.message,\n refs\n );\n break;\n }\n case \"ip\": {\n if (check.version !== \"v6\") {\n addFormat(res, \"ipv4\", check.message, refs);\n }\n if (check.version !== \"v4\") {\n addFormat(res, \"ipv6\", check.message, refs);\n }\n break;\n }\n case \"base64url\":\n addPattern(res, zodPatterns.base64url, check.message, refs);\n break;\n case \"jwt\":\n addPattern(res, zodPatterns.jwt, check.message, refs);\n break;\n case \"cidr\": {\n if (check.version !== \"v6\") {\n addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n }\n if (check.version !== \"v4\") {\n addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n }\n break;\n }\n case \"emoji\":\n addPattern(res, zodPatterns.emoji(), check.message, refs);\n break;\n case \"ulid\": {\n addPattern(res, zodPatterns.ulid, check.message, refs);\n break;\n }\n case \"base64\": {\n switch (refs.base64Strategy) {\n case \"format:binary\": {\n addFormat(res, \"binary\" as any, check.message, refs);\n break;\n }\n\n case \"contentEncoding:base64\": {\n setResponseValueAndErrors(\n res,\n \"contentEncoding\",\n \"base64\",\n check.message,\n refs\n );\n break;\n }\n\n case \"pattern:zod\": {\n addPattern(res, zodPatterns.base64, check.message, refs);\n break;\n }\n }\n break;\n }\n case \"nanoid\": {\n addPattern(res, zodPatterns.nanoid, check.message, refs);\n break;\n }\n case \"toLowerCase\":\n case \"toUpperCase\":\n case \"trim\":\n break;\n default:\n /* c8 ignore next */\n ((_: never) => {})(check);\n }\n }\n }\n\n return res;\n}\n\nfunction escapeLiteralCheckValue(literal: string, refs: Refs): string {\n return refs.patternStrategy === \"escape\"\n ? escapeNonAlphaNumeric(literal)\n : literal;\n}\n\nconst ALPHA_NUMERIC = new Set(\n \"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\"\n);\n\nfunction escapeNonAlphaNumeric(source: string) {\n let result = \"\";\n\n for (let i = 0; i < source.length; i++) {\n if (!ALPHA_NUMERIC.has(source[i])) {\n result += \"\\\\\";\n }\n\n result += source[i];\n }\n\n return result;\n}\n\n// Adds a \"format\" keyword to the schema. If a format exists, both formats will be joined in an allOf-node, along with subsequent ones.\nfunction addFormat(\n schema: JsonSchema7StringType,\n value: Required<JsonSchema7StringType>[\"format\"],\n message: string | undefined,\n refs: Refs\n) {\n if (schema.format || schema.anyOf?.some((x) => x.format)) {\n if (!schema.anyOf) {\n schema.anyOf = [];\n }\n\n if (schema.format) {\n schema.anyOf!.push({\n format: schema.format,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { format: schema.errorMessage.format },\n }),\n });\n delete schema.format;\n if (schema.errorMessage) {\n delete schema.errorMessage.format;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n\n schema.anyOf!.push({\n format: value,\n ...(message &&\n refs.errorMessages && { errorMessage: { format: message } }),\n });\n } else {\n setResponseValueAndErrors(schema, \"format\", value, message, refs);\n }\n}\n\n// Adds a \"pattern\" keyword to the schema. If a pattern exists, both patterns will be joined in an allOf-node, along with subsequent ones.\nfunction addPattern(\n schema: JsonSchema7StringType,\n regex: RegExp,\n message: string | undefined,\n refs: Refs\n) {\n if (schema.pattern || schema.allOf?.some((x) => x.pattern)) {\n if (!schema.allOf) {\n schema.allOf = [];\n }\n\n if (schema.pattern) {\n schema.allOf!.push({\n pattern: schema.pattern,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { pattern: schema.errorMessage.pattern },\n }),\n });\n delete schema.pattern;\n if (schema.errorMessage) {\n delete schema.errorMessage.pattern;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n\n schema.allOf!.push({\n pattern: stringifyRegExpWithFlags(regex, refs),\n ...(message &&\n refs.errorMessages && { errorMessage: { pattern: message } }),\n });\n } else {\n setResponseValueAndErrors(\n schema,\n \"pattern\",\n stringifyRegExpWithFlags(regex, refs),\n message,\n refs\n );\n }\n}\n\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex: RegExp, refs: Refs): string {\n if (!refs.applyRegexFlags || !regex.flags) {\n return regex.source;\n }\n\n // Currently handled flags\n const flags = {\n i: regex.flags.includes(\"i\"), // Case-insensitive\n m: regex.flags.includes(\"m\"), // `^` and `$` matches adjacent to newline characters\n s: regex.flags.includes(\"s\"), // `.` matches newlines\n };\n\n // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril!\n const source = flags.i ? regex.source.toLowerCase() : regex.source;\n let pattern = \"\";\n let isEscaped = false;\n let inCharGroup = false;\n let inCharRange = false;\n\n for (let i = 0; i < source.length; i++) {\n if (isEscaped) {\n pattern += source[i];\n isEscaped = false;\n continue;\n }\n\n if (flags.i) {\n if (inCharGroup) {\n if (source[i].match(/[a-z]/)) {\n if (inCharRange) {\n pattern += source[i];\n pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n inCharRange = false;\n } else if (source[i + 1] === \"-\" && source[i + 2]?.match(/[a-z]/)) {\n pattern += source[i];\n inCharRange = true;\n } else {\n pattern += `${source[i]}${source[i].toUpperCase()}`;\n }\n continue;\n }\n } else if (source[i].match(/[a-z]/)) {\n pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n continue;\n }\n }\n\n if (flags.m) {\n if (source[i] === \"^\") {\n pattern += `(^|(?<=[\\r\\n]))`;\n continue;\n } else if (source[i] === \"$\") {\n pattern += `($|(?=[\\r\\n]))`;\n continue;\n }\n }\n\n if (flags.s && source[i] === \".\") {\n pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n continue;\n }\n\n pattern += source[i];\n if (source[i] === \"\\\\\") {\n isEscaped = true;\n } else if (inCharGroup && source[i] === \"]\") {\n inCharGroup = false;\n } else if (!inCharGroup && source[i] === \"[\") {\n inCharGroup = true;\n }\n }\n\n try {\n new RegExp(pattern);\n } catch {\n console.warn(\n `Could not convert regex pattern at ${refs.currentPath.join(\n \"/\"\n )} to a flag-independent form! Falling back to the flag-ignorant source`\n );\n return regex.source;\n }\n\n return pattern;\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@langchain/core",
3
- "version": "1.2.9",
3
+ "version": "1.2.10",
4
4
  "description": "Core LangChain.js abstractions and schemas",
5
5
  "type": "module",
6
6
  "engines": {
@@ -26,10 +26,10 @@
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/mustache": "^4",
29
- "@types/node": "^26.1.2",
30
- "dotenv": "^17.4.0",
31
- "dpdm": "^3.14.0",
32
- "ml-matrix": "^6.14.0",
29
+ "@types/node": "^26.4.0",
30
+ "dotenv": "^17.4.2",
31
+ "dpdm": "^4.3.0",
32
+ "ml-matrix": "^6.15.0",
33
33
  "rimraf": "^6.1.3",
34
34
  "typescript": "~7.0.2",
35
35
  "vitest": "^4.1.8",