@langchain/core 1.1.47 → 1.1.49-dev-1781044436312

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 (470) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/callbacks/base.cjs +2 -3
  3. package/dist/callbacks/base.cjs.map +1 -1
  4. package/dist/callbacks/base.js +1 -2
  5. package/dist/callbacks/base.js.map +1 -1
  6. package/dist/callbacks/dispatch/index.cjs.map +1 -1
  7. package/dist/callbacks/dispatch/index.js.map +1 -1
  8. package/dist/callbacks/manager.cjs +7 -8
  9. package/dist/callbacks/manager.cjs.map +1 -1
  10. package/dist/callbacks/manager.js +1 -2
  11. package/dist/callbacks/manager.js.map +1 -1
  12. package/dist/example_selectors/conditional.cjs.map +1 -1
  13. package/dist/example_selectors/conditional.js.map +1 -1
  14. package/dist/example_selectors/length_based.cjs.map +1 -1
  15. package/dist/example_selectors/length_based.js.map +1 -1
  16. package/dist/example_selectors/semantic_similarity.cjs.map +1 -1
  17. package/dist/example_selectors/semantic_similarity.js.map +1 -1
  18. package/dist/indexing/base.cjs +3 -4
  19. package/dist/indexing/base.cjs.map +1 -1
  20. package/dist/indexing/base.js +1 -2
  21. package/dist/indexing/base.js.map +1 -1
  22. package/dist/language_models/base.cjs +1 -1
  23. package/dist/language_models/base.cjs.map +1 -1
  24. package/dist/language_models/base.js +1 -1
  25. package/dist/language_models/base.js.map +1 -1
  26. package/dist/language_models/chat_models.cjs.map +1 -1
  27. package/dist/language_models/chat_models.js.map +1 -1
  28. package/dist/language_models/compat.cjs.map +1 -1
  29. package/dist/language_models/compat.js.map +1 -1
  30. package/dist/language_models/llms.cjs.map +1 -1
  31. package/dist/language_models/llms.js.map +1 -1
  32. package/dist/language_models/stream.cjs.map +1 -1
  33. package/dist/language_models/stream.js.map +1 -1
  34. package/dist/load/index.cjs.map +1 -1
  35. package/dist/load/index.js.map +1 -1
  36. package/dist/memory.cjs.map +1 -1
  37. package/dist/memory.js.map +1 -1
  38. package/dist/messages/base.cjs.map +1 -1
  39. package/dist/messages/base.d.cts +9 -0
  40. package/dist/messages/base.d.cts.map +1 -1
  41. package/dist/messages/base.d.ts +9 -0
  42. package/dist/messages/base.d.ts.map +1 -1
  43. package/dist/messages/base.js.map +1 -1
  44. package/dist/messages/block_translators/anthropic.cjs.map +1 -1
  45. package/dist/messages/block_translators/anthropic.js.map +1 -1
  46. package/dist/messages/block_translators/bedrock_converse.cjs.map +1 -1
  47. package/dist/messages/block_translators/bedrock_converse.js.map +1 -1
  48. package/dist/messages/block_translators/google.cjs.map +1 -1
  49. package/dist/messages/block_translators/google.js.map +1 -1
  50. package/dist/messages/block_translators/google_vertexai.cjs.map +1 -1
  51. package/dist/messages/block_translators/google_vertexai.js.map +1 -1
  52. package/dist/messages/block_translators/index.cjs +2 -0
  53. package/dist/messages/block_translators/index.cjs.map +1 -1
  54. package/dist/messages/block_translators/index.js +2 -0
  55. package/dist/messages/block_translators/index.js.map +1 -1
  56. package/dist/messages/block_translators/openai.cjs.map +1 -1
  57. package/dist/messages/block_translators/openai.js.map +1 -1
  58. package/dist/messages/block_translators/openrouter.cjs +101 -0
  59. package/dist/messages/block_translators/openrouter.cjs.map +1 -0
  60. package/dist/messages/block_translators/openrouter.js +101 -0
  61. package/dist/messages/block_translators/openrouter.js.map +1 -0
  62. package/dist/messages/index.d.cts +2 -2
  63. package/dist/messages/index.d.ts +2 -2
  64. package/dist/messages/modifier.cjs +6 -0
  65. package/dist/messages/modifier.cjs.map +1 -1
  66. package/dist/messages/modifier.d.cts +9 -4
  67. package/dist/messages/modifier.d.cts.map +1 -1
  68. package/dist/messages/modifier.d.ts +9 -4
  69. package/dist/messages/modifier.d.ts.map +1 -1
  70. package/dist/messages/modifier.js +6 -0
  71. package/dist/messages/modifier.js.map +1 -1
  72. package/dist/messages/transformers.cjs.map +1 -1
  73. package/dist/messages/transformers.js.map +1 -1
  74. package/dist/messages/utils.cjs +16 -2
  75. package/dist/messages/utils.cjs.map +1 -1
  76. package/dist/messages/utils.d.cts +9 -1
  77. package/dist/messages/utils.d.cts.map +1 -1
  78. package/dist/messages/utils.d.ts +9 -1
  79. package/dist/messages/utils.d.ts.map +1 -1
  80. package/dist/messages/utils.js +16 -2
  81. package/dist/messages/utils.js.map +1 -1
  82. package/dist/output_parsers/openai_functions/json_output_functions_parsers.cjs.map +1 -1
  83. package/dist/output_parsers/openai_functions/json_output_functions_parsers.js.map +1 -1
  84. package/dist/output_parsers/openai_tools/json_output_tools_parsers.cjs.map +1 -1
  85. package/dist/output_parsers/openai_tools/json_output_tools_parsers.js.map +1 -1
  86. package/dist/output_parsers/structured.cjs.map +1 -1
  87. package/dist/output_parsers/structured.js.map +1 -1
  88. package/dist/output_parsers/xml.cjs.map +1 -1
  89. package/dist/output_parsers/xml.js.map +1 -1
  90. package/dist/prompts/base.cjs.map +1 -1
  91. package/dist/prompts/base.js.map +1 -1
  92. package/dist/prompts/chat.cjs.map +1 -1
  93. package/dist/prompts/chat.js.map +1 -1
  94. package/dist/prompts/few_shot.cjs.map +1 -1
  95. package/dist/prompts/few_shot.js.map +1 -1
  96. package/dist/prompts/image.cjs.map +1 -1
  97. package/dist/prompts/image.js.map +1 -1
  98. package/dist/prompts/prompt.cjs +1 -1
  99. package/dist/prompts/prompt.cjs.map +1 -1
  100. package/dist/prompts/prompt.d.cts +1 -1
  101. package/dist/prompts/prompt.d.ts +1 -1
  102. package/dist/prompts/prompt.js +1 -1
  103. package/dist/prompts/prompt.js.map +1 -1
  104. package/dist/prompts/string.cjs.map +1 -1
  105. package/dist/prompts/string.js.map +1 -1
  106. package/dist/prompts/template.cjs.map +1 -1
  107. package/dist/prompts/template.js.map +1 -1
  108. package/dist/retrievers/index.cjs.map +1 -1
  109. package/dist/retrievers/index.js.map +1 -1
  110. package/dist/runnables/base.cjs +2 -3
  111. package/dist/runnables/base.cjs.map +1 -1
  112. package/dist/runnables/base.js +1 -2
  113. package/dist/runnables/base.js.map +1 -1
  114. package/dist/runnables/branch.cjs.map +1 -1
  115. package/dist/runnables/branch.js.map +1 -1
  116. package/dist/runnables/graph.cjs +6 -8
  117. package/dist/runnables/graph.cjs.map +1 -1
  118. package/dist/runnables/graph.js +1 -3
  119. package/dist/runnables/graph.js.map +1 -1
  120. package/dist/runnables/graph_mermaid.cjs.map +1 -1
  121. package/dist/runnables/graph_mermaid.js.map +1 -1
  122. package/dist/runnables/history.cjs.map +1 -1
  123. package/dist/runnables/history.js.map +1 -1
  124. package/dist/runnables/router.cjs.map +1 -1
  125. package/dist/runnables/router.js.map +1 -1
  126. package/dist/runnables/utils.cjs.map +1 -1
  127. package/dist/runnables/utils.js.map +1 -1
  128. package/dist/singletons/async_local_storage/context.cjs.map +1 -1
  129. package/dist/singletons/async_local_storage/context.js.map +1 -1
  130. package/dist/singletons/async_local_storage/index.cjs.map +1 -1
  131. package/dist/singletons/async_local_storage/index.js.map +1 -1
  132. package/dist/testing/fake_model_builder.cjs.map +1 -1
  133. package/dist/testing/fake_model_builder.js.map +1 -1
  134. package/dist/testing/matchers.cjs.map +1 -1
  135. package/dist/testing/matchers.js.map +1 -1
  136. package/dist/tracers/console.cjs.map +1 -1
  137. package/dist/tracers/console.js.map +1 -1
  138. package/dist/tracers/event_stream.cjs.map +1 -1
  139. package/dist/tracers/event_stream.js.map +1 -1
  140. package/dist/tracers/tracer_langchain.cjs.map +1 -1
  141. package/dist/tracers/tracer_langchain.js.map +1 -1
  142. package/dist/utils/callbacks.cjs.map +1 -1
  143. package/dist/utils/callbacks.js.map +1 -1
  144. package/dist/utils/context.cjs.map +1 -1
  145. package/dist/utils/context.js.map +1 -1
  146. package/dist/utils/env.cjs.map +1 -1
  147. package/dist/utils/env.js.map +1 -1
  148. package/dist/utils/fast-json-patch/src/core.cjs.map +1 -1
  149. package/dist/utils/fast-json-patch/src/core.js.map +1 -1
  150. package/dist/utils/json_schema.cjs.map +1 -1
  151. package/dist/utils/json_schema.js.map +1 -1
  152. package/dist/utils/sax-js/sax.cjs.map +1 -1
  153. package/dist/utils/sax-js/sax.js.map +1 -1
  154. package/dist/utils/ssrf.cjs.map +1 -1
  155. package/dist/utils/ssrf.js.map +1 -1
  156. package/dist/utils/stream.d.cts +2 -2
  157. package/dist/utils/stream.d.cts.map +1 -1
  158. package/dist/utils/stream.d.ts +2 -2
  159. package/dist/utils/stream.d.ts.map +1 -1
  160. package/dist/utils/testing/chat_models.cjs.map +1 -1
  161. package/dist/utils/testing/chat_models.js.map +1 -1
  162. package/dist/utils/testing/embeddings.cjs.map +1 -1
  163. package/dist/utils/testing/embeddings.js.map +1 -1
  164. package/dist/utils/testing/vectorstores.cjs.map +1 -1
  165. package/dist/utils/testing/vectorstores.js.map +1 -1
  166. package/dist/utils/types/zod.cjs.map +1 -1
  167. package/dist/utils/types/zod.js.map +1 -1
  168. package/dist/utils/uuid/index.cjs +33 -22
  169. package/dist/utils/uuid/index.cjs.map +1 -1
  170. package/dist/utils/uuid/index.d.cts +25 -12
  171. package/dist/utils/uuid/index.d.cts.map +1 -0
  172. package/dist/utils/uuid/index.d.ts +25 -12
  173. package/dist/utils/uuid/index.d.ts.map +1 -0
  174. package/dist/utils/uuid/index.js +23 -12
  175. package/dist/utils/uuid/index.js.map +1 -1
  176. package/dist/utils/uuid/v35.cjs.map +1 -1
  177. package/dist/utils/uuid/v35.js.map +1 -1
  178. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.cjs.map +1 -1
  179. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.js.map +1 -1
  180. package/dist/utils/zod-to-json-schema/parsers/pipeline.cjs.map +1 -1
  181. package/dist/utils/zod-to-json-schema/parsers/pipeline.js.map +1 -1
  182. package/dist/utils/zod-to-json-schema/parsers/set.cjs.map +1 -1
  183. package/dist/utils/zod-to-json-schema/parsers/set.js.map +1 -1
  184. package/dist/utils/zod-to-json-schema/parsers/string.cjs +26 -0
  185. package/dist/utils/zod-to-json-schema/parsers/string.cjs.map +1 -1
  186. package/dist/utils/zod-to-json-schema/parsers/string.js +26 -0
  187. package/dist/utils/zod-to-json-schema/parsers/string.js.map +1 -1
  188. package/dist/vectorstores.cjs.map +1 -1
  189. package/dist/vectorstores.js.map +1 -1
  190. package/package.json +5 -5
  191. package/agents.cjs +0 -1
  192. package/agents.d.cts +0 -1
  193. package/agents.d.ts +0 -1
  194. package/agents.js +0 -1
  195. package/caches.cjs +0 -1
  196. package/caches.d.cts +0 -1
  197. package/caches.d.ts +0 -1
  198. package/caches.js +0 -1
  199. package/callbacks/base.cjs +0 -1
  200. package/callbacks/base.d.cts +0 -1
  201. package/callbacks/base.d.ts +0 -1
  202. package/callbacks/base.js +0 -1
  203. package/callbacks/dispatch/web.cjs +0 -1
  204. package/callbacks/dispatch/web.d.cts +0 -1
  205. package/callbacks/dispatch/web.d.ts +0 -1
  206. package/callbacks/dispatch/web.js +0 -1
  207. package/callbacks/dispatch.cjs +0 -1
  208. package/callbacks/dispatch.d.cts +0 -1
  209. package/callbacks/dispatch.d.ts +0 -1
  210. package/callbacks/dispatch.js +0 -1
  211. package/callbacks/manager.cjs +0 -1
  212. package/callbacks/manager.d.cts +0 -1
  213. package/callbacks/manager.d.ts +0 -1
  214. package/callbacks/manager.js +0 -1
  215. package/callbacks/promises.cjs +0 -1
  216. package/callbacks/promises.d.cts +0 -1
  217. package/callbacks/promises.d.ts +0 -1
  218. package/callbacks/promises.js +0 -1
  219. package/chat_history.cjs +0 -1
  220. package/chat_history.d.cts +0 -1
  221. package/chat_history.d.ts +0 -1
  222. package/chat_history.js +0 -1
  223. package/context.cjs +0 -1
  224. package/context.d.cts +0 -1
  225. package/context.d.ts +0 -1
  226. package/context.js +0 -1
  227. package/dist/utils/uuid/max.d.cts +0 -5
  228. package/dist/utils/uuid/max.d.cts.map +0 -1
  229. package/dist/utils/uuid/max.d.ts +0 -5
  230. package/dist/utils/uuid/max.d.ts.map +0 -1
  231. package/dist/utils/uuid/nil.d.cts +0 -5
  232. package/dist/utils/uuid/nil.d.cts.map +0 -1
  233. package/dist/utils/uuid/nil.d.ts +0 -5
  234. package/dist/utils/uuid/nil.d.ts.map +0 -1
  235. package/document_loaders/base.cjs +0 -1
  236. package/document_loaders/base.d.cts +0 -1
  237. package/document_loaders/base.d.ts +0 -1
  238. package/document_loaders/base.js +0 -1
  239. package/document_loaders/langsmith.cjs +0 -1
  240. package/document_loaders/langsmith.d.cts +0 -1
  241. package/document_loaders/langsmith.d.ts +0 -1
  242. package/document_loaders/langsmith.js +0 -1
  243. package/documents.cjs +0 -1
  244. package/documents.d.cts +0 -1
  245. package/documents.d.ts +0 -1
  246. package/documents.js +0 -1
  247. package/embeddings.cjs +0 -1
  248. package/embeddings.d.cts +0 -1
  249. package/embeddings.d.ts +0 -1
  250. package/embeddings.js +0 -1
  251. package/errors.cjs +0 -1
  252. package/errors.d.cts +0 -1
  253. package/errors.d.ts +0 -1
  254. package/errors.js +0 -1
  255. package/example_selectors.cjs +0 -1
  256. package/example_selectors.d.cts +0 -1
  257. package/example_selectors.d.ts +0 -1
  258. package/example_selectors.js +0 -1
  259. package/indexing.cjs +0 -1
  260. package/indexing.d.cts +0 -1
  261. package/indexing.d.ts +0 -1
  262. package/indexing.js +0 -1
  263. package/language_models/base.cjs +0 -1
  264. package/language_models/base.d.cts +0 -1
  265. package/language_models/base.d.ts +0 -1
  266. package/language_models/base.js +0 -1
  267. package/language_models/chat_models.cjs +0 -1
  268. package/language_models/chat_models.d.cts +0 -1
  269. package/language_models/chat_models.d.ts +0 -1
  270. package/language_models/chat_models.js +0 -1
  271. package/language_models/compat.cjs +0 -1
  272. package/language_models/compat.d.cts +0 -1
  273. package/language_models/compat.d.ts +0 -1
  274. package/language_models/compat.js +0 -1
  275. package/language_models/event.cjs +0 -1
  276. package/language_models/event.d.cts +0 -1
  277. package/language_models/event.d.ts +0 -1
  278. package/language_models/event.js +0 -1
  279. package/language_models/llms.cjs +0 -1
  280. package/language_models/llms.d.cts +0 -1
  281. package/language_models/llms.d.ts +0 -1
  282. package/language_models/llms.js +0 -1
  283. package/language_models/profile.cjs +0 -1
  284. package/language_models/profile.d.cts +0 -1
  285. package/language_models/profile.d.ts +0 -1
  286. package/language_models/profile.js +0 -1
  287. package/language_models/stream.cjs +0 -1
  288. package/language_models/stream.d.cts +0 -1
  289. package/language_models/stream.d.ts +0 -1
  290. package/language_models/stream.js +0 -1
  291. package/language_models/structured_output.cjs +0 -1
  292. package/language_models/structured_output.d.cts +0 -1
  293. package/language_models/structured_output.d.ts +0 -1
  294. package/language_models/structured_output.js +0 -1
  295. package/load/serializable.cjs +0 -1
  296. package/load/serializable.d.cts +0 -1
  297. package/load/serializable.d.ts +0 -1
  298. package/load/serializable.js +0 -1
  299. package/load.cjs +0 -1
  300. package/load.d.cts +0 -1
  301. package/load.d.ts +0 -1
  302. package/load.js +0 -1
  303. package/memory.cjs +0 -1
  304. package/memory.d.cts +0 -1
  305. package/memory.d.ts +0 -1
  306. package/memory.js +0 -1
  307. package/messages/tool.cjs +0 -1
  308. package/messages/tool.d.cts +0 -1
  309. package/messages/tool.d.ts +0 -1
  310. package/messages/tool.js +0 -1
  311. package/messages.cjs +0 -1
  312. package/messages.d.cts +0 -1
  313. package/messages.d.ts +0 -1
  314. package/messages.js +0 -1
  315. package/output_parsers/openai_functions.cjs +0 -1
  316. package/output_parsers/openai_functions.d.cts +0 -1
  317. package/output_parsers/openai_functions.d.ts +0 -1
  318. package/output_parsers/openai_functions.js +0 -1
  319. package/output_parsers/openai_tools.cjs +0 -1
  320. package/output_parsers/openai_tools.d.cts +0 -1
  321. package/output_parsers/openai_tools.d.ts +0 -1
  322. package/output_parsers/openai_tools.js +0 -1
  323. package/output_parsers.cjs +0 -1
  324. package/output_parsers.d.cts +0 -1
  325. package/output_parsers.d.ts +0 -1
  326. package/output_parsers.js +0 -1
  327. package/outputs.cjs +0 -1
  328. package/outputs.d.cts +0 -1
  329. package/outputs.d.ts +0 -1
  330. package/outputs.js +0 -1
  331. package/prompt_values.cjs +0 -1
  332. package/prompt_values.d.cts +0 -1
  333. package/prompt_values.d.ts +0 -1
  334. package/prompt_values.js +0 -1
  335. package/prompts.cjs +0 -1
  336. package/prompts.d.cts +0 -1
  337. package/prompts.d.ts +0 -1
  338. package/prompts.js +0 -1
  339. package/retrievers/document_compressors.cjs +0 -1
  340. package/retrievers/document_compressors.d.cts +0 -1
  341. package/retrievers/document_compressors.d.ts +0 -1
  342. package/retrievers/document_compressors.js +0 -1
  343. package/retrievers.cjs +0 -1
  344. package/retrievers.d.cts +0 -1
  345. package/retrievers.d.ts +0 -1
  346. package/retrievers.js +0 -1
  347. package/runnables/graph.cjs +0 -1
  348. package/runnables/graph.d.cts +0 -1
  349. package/runnables/graph.d.ts +0 -1
  350. package/runnables/graph.js +0 -1
  351. package/runnables.cjs +0 -1
  352. package/runnables.d.cts +0 -1
  353. package/runnables.d.ts +0 -1
  354. package/runnables.js +0 -1
  355. package/singletons.cjs +0 -1
  356. package/singletons.d.cts +0 -1
  357. package/singletons.d.ts +0 -1
  358. package/singletons.js +0 -1
  359. package/stores.cjs +0 -1
  360. package/stores.d.cts +0 -1
  361. package/stores.d.ts +0 -1
  362. package/stores.js +0 -1
  363. package/structured_query.cjs +0 -1
  364. package/structured_query.d.cts +0 -1
  365. package/structured_query.d.ts +0 -1
  366. package/structured_query.js +0 -1
  367. package/tools.cjs +0 -1
  368. package/tools.d.cts +0 -1
  369. package/tools.d.ts +0 -1
  370. package/tools.js +0 -1
  371. package/tracers/base.cjs +0 -1
  372. package/tracers/base.d.cts +0 -1
  373. package/tracers/base.d.ts +0 -1
  374. package/tracers/base.js +0 -1
  375. package/tracers/console.cjs +0 -1
  376. package/tracers/console.d.cts +0 -1
  377. package/tracers/console.d.ts +0 -1
  378. package/tracers/console.js +0 -1
  379. package/tracers/log_stream.cjs +0 -1
  380. package/tracers/log_stream.d.cts +0 -1
  381. package/tracers/log_stream.d.ts +0 -1
  382. package/tracers/log_stream.js +0 -1
  383. package/tracers/run_collector.cjs +0 -1
  384. package/tracers/run_collector.d.cts +0 -1
  385. package/tracers/run_collector.d.ts +0 -1
  386. package/tracers/run_collector.js +0 -1
  387. package/tracers/tracer_langchain.cjs +0 -1
  388. package/tracers/tracer_langchain.d.cts +0 -1
  389. package/tracers/tracer_langchain.d.ts +0 -1
  390. package/tracers/tracer_langchain.js +0 -1
  391. package/types/stream.cjs +0 -1
  392. package/types/stream.d.cts +0 -1
  393. package/types/stream.d.ts +0 -1
  394. package/types/stream.js +0 -1
  395. package/utils/async_caller.cjs +0 -1
  396. package/utils/async_caller.d.cts +0 -1
  397. package/utils/async_caller.d.ts +0 -1
  398. package/utils/async_caller.js +0 -1
  399. package/utils/chunk_array.cjs +0 -1
  400. package/utils/chunk_array.d.cts +0 -1
  401. package/utils/chunk_array.d.ts +0 -1
  402. package/utils/chunk_array.js +0 -1
  403. package/utils/context.cjs +0 -1
  404. package/utils/context.d.cts +0 -1
  405. package/utils/context.d.ts +0 -1
  406. package/utils/context.js +0 -1
  407. package/utils/env.cjs +0 -1
  408. package/utils/env.d.cts +0 -1
  409. package/utils/env.d.ts +0 -1
  410. package/utils/env.js +0 -1
  411. package/utils/event_source_parse.cjs +0 -1
  412. package/utils/event_source_parse.d.cts +0 -1
  413. package/utils/event_source_parse.d.ts +0 -1
  414. package/utils/event_source_parse.js +0 -1
  415. package/utils/format.cjs +0 -1
  416. package/utils/format.d.cts +0 -1
  417. package/utils/format.d.ts +0 -1
  418. package/utils/format.js +0 -1
  419. package/utils/function_calling.cjs +0 -1
  420. package/utils/function_calling.d.cts +0 -1
  421. package/utils/function_calling.d.ts +0 -1
  422. package/utils/function_calling.js +0 -1
  423. package/utils/hash.cjs +0 -1
  424. package/utils/hash.d.cts +0 -1
  425. package/utils/hash.d.ts +0 -1
  426. package/utils/hash.js +0 -1
  427. package/utils/json_patch.cjs +0 -1
  428. package/utils/json_patch.d.cts +0 -1
  429. package/utils/json_patch.d.ts +0 -1
  430. package/utils/json_patch.js +0 -1
  431. package/utils/json_schema.cjs +0 -1
  432. package/utils/json_schema.d.cts +0 -1
  433. package/utils/json_schema.d.ts +0 -1
  434. package/utils/json_schema.js +0 -1
  435. package/utils/math.cjs +0 -1
  436. package/utils/math.d.cts +0 -1
  437. package/utils/math.d.ts +0 -1
  438. package/utils/math.js +0 -1
  439. package/utils/ssrf.cjs +0 -1
  440. package/utils/ssrf.d.cts +0 -1
  441. package/utils/ssrf.d.ts +0 -1
  442. package/utils/ssrf.js +0 -1
  443. package/utils/standard_schema.cjs +0 -1
  444. package/utils/standard_schema.d.cts +0 -1
  445. package/utils/standard_schema.d.ts +0 -1
  446. package/utils/standard_schema.js +0 -1
  447. package/utils/stream.cjs +0 -1
  448. package/utils/stream.d.cts +0 -1
  449. package/utils/stream.d.ts +0 -1
  450. package/utils/stream.js +0 -1
  451. package/utils/testing.cjs +0 -1
  452. package/utils/testing.d.cts +0 -1
  453. package/utils/testing.d.ts +0 -1
  454. package/utils/testing.js +0 -1
  455. package/utils/tiktoken.cjs +0 -1
  456. package/utils/tiktoken.d.cts +0 -1
  457. package/utils/tiktoken.d.ts +0 -1
  458. package/utils/tiktoken.js +0 -1
  459. package/utils/types.cjs +0 -1
  460. package/utils/types.d.cts +0 -1
  461. package/utils/types.d.ts +0 -1
  462. package/utils/types.js +0 -1
  463. package/utils/uuid.cjs +0 -1
  464. package/utils/uuid.d.cts +0 -1
  465. package/utils/uuid.d.ts +0 -1
  466. package/utils/uuid.js +0 -1
  467. package/vectorstores.cjs +0 -1
  468. package/vectorstores.d.cts +0 -1
  469. package/vectorstores.d.ts +0 -1
  470. package/vectorstores.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/utils/uuid/index.ts"],"mappings":";;;;;;;;;;;;cAca,GAAA;AAAA,cACA,GAAA;AAAA,cACA,KAAA,SAAK,OAAA;AAAA,cACL,SAAA,SAAS,WAAA;AAAA,cACT,EAAA,SAAE,IAAA;AAAA,cACF,EAAA,SAAE,IAAA;AAAA,cACF,EAAA,SAAE,IAAA;AAAA,cACF,EAAA,SAAE,IAAA;AAAA,cACF,EAAA,SAAE,IAAA;AAAA,cACF,QAAA,SAAQ,UAAA;AAAA,cACR,OAAA,SAAO,SAAA"}
@@ -1,13 +1,26 @@
1
- import { _default } from "./max.js";
2
- import { _default as _default$1 } from "./nil.js";
3
1
  import { NonSharedArrayBuffer, UUIDTypes, Version1Options, Version4Options, Version6Options, Version7Options } from "./types.js";
4
- import { parse } from "./parse.js";
5
- import { stringify } from "./stringify.js";
6
- import { v1 } from "./v1.js";
7
- import { v4 } from "./v4.js";
8
- import { v5 } from "./v5.js";
9
- import { v6 } from "./v6.js";
10
- import { v7 } from "./v7.js";
11
- import { validate } from "./validate.js";
12
- import { version } from "./version.js";
13
- export { _default as MAX, _default$1 as NIL, NonSharedArrayBuffer, UUIDTypes, Version1Options, Version4Options, Version6Options, Version7Options, parse, stringify, v1, v4, v5, v6, v7, validate, version };
2
+ import { parse as parse$1 } from "./parse.js";
3
+ import { stringify as stringify$1 } from "./stringify.js";
4
+ import { v1 as v1$1 } from "./v1.js";
5
+ import { v4 as v4$1 } from "./v4.js";
6
+ import { v5 as v5$1 } from "./v5.js";
7
+ import { v6 as v6$1 } from "./v6.js";
8
+ import { v7 as v7$1 } from "./v7.js";
9
+ import { validate as validate$1 } from "./validate.js";
10
+ import { version as version$1 } from "./version.js";
11
+
12
+ //#region src/utils/uuid/index.d.ts
13
+ declare const MAX = "ffffffff-ffff-ffff-ffff-ffffffffffff";
14
+ declare const NIL = "00000000-0000-0000-0000-000000000000";
15
+ declare const parse: typeof parse$1;
16
+ declare const stringify: typeof stringify$1;
17
+ declare const v1: typeof v1$1;
18
+ declare const v4: typeof v4$1;
19
+ declare const v5: typeof v5$1;
20
+ declare const v6: typeof v6$1;
21
+ declare const v7: typeof v7$1;
22
+ declare const validate: typeof validate$1;
23
+ declare const version: typeof version$1;
24
+ //#endregion
25
+ export { MAX, NIL, NonSharedArrayBuffer, UUIDTypes, Version1Options, Version4Options, Version6Options, Version7Options, parse, stringify, v1, v4, v5, v6, v7, validate, version };
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/utils/uuid/index.ts"],"mappings":";;;;;;;;;;;;cAca,GAAA;AAAA,cACA,GAAA;AAAA,cACA,KAAA,SAAK,OAAA;AAAA,cACL,SAAA,SAAS,WAAA;AAAA,cACT,EAAA,SAAE,IAAA;AAAA,cACF,EAAA,SAAE,IAAA;AAAA,cACF,EAAA,SAAE,IAAA;AAAA,cACF,EAAA,SAAE,IAAA;AAAA,cACF,EAAA,SAAE,IAAA;AAAA,cACF,QAAA,SAAQ,UAAA;AAAA,cACR,OAAA,SAAO,SAAA"}
@@ -1,19 +1,19 @@
1
1
  import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
2
2
  import max_default from "./max.js";
3
3
  import nil_default from "./nil.js";
4
- import validate from "./validate.js";
5
- import parse from "./parse.js";
6
- import stringify from "./stringify.js";
7
- import v1 from "./v1.js";
8
- import v4 from "./v4.js";
9
- import v5 from "./v5.js";
10
- import v6 from "./v6.js";
11
- import v7 from "./v7.js";
12
- import version from "./version.js";
4
+ import validate$1 from "./validate.js";
5
+ import parse$1 from "./parse.js";
6
+ import stringify$1 from "./stringify.js";
7
+ import v1$1 from "./v1.js";
8
+ import v4$1 from "./v4.js";
9
+ import v5$1 from "./v5.js";
10
+ import v6$1 from "./v6.js";
11
+ import v7$1 from "./v7.js";
12
+ import version$1 from "./version.js";
13
13
  //#region src/utils/uuid/index.ts
14
14
  var uuid_exports = /* @__PURE__ */ __exportAll({
15
- MAX: () => max_default,
16
- NIL: () => nil_default,
15
+ MAX: () => MAX,
16
+ NIL: () => NIL,
17
17
  parse: () => parse,
18
18
  stringify: () => stringify,
19
19
  v1: () => v1,
@@ -24,7 +24,18 @@ var uuid_exports = /* @__PURE__ */ __exportAll({
24
24
  validate: () => validate,
25
25
  version: () => version
26
26
  });
27
+ const MAX = max_default;
28
+ const NIL = nil_default;
29
+ const parse = parse$1;
30
+ const stringify = stringify$1;
31
+ const v1 = v1$1;
32
+ const v4 = v4$1;
33
+ const v5 = v5$1;
34
+ const v6 = v6$1;
35
+ const v7 = v7$1;
36
+ const validate = validate$1;
37
+ const version = version$1;
27
38
  //#endregion
28
- export { max_default as MAX, nil_default as NIL, parse, stringify, uuid_exports, v1, v4, v5, v6, v7, validate, version };
39
+ export { MAX, NIL, parse, stringify, uuid_exports, v1, v4, v5, v6, v7, validate, version };
29
40
 
30
41
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/utils/uuid/index.ts"],"sourcesContent":["export { default as MAX } from \"./max.js\";\nexport { default as NIL } from \"./nil.js\";\nexport { default as parse } from \"./parse.js\";\nexport { default as stringify } from \"./stringify.js\";\nexport type * from \"./types.js\";\nexport { default as v1 } from \"./v1.js\";\nexport { default as v4 } from \"./v4.js\";\nexport { default as v5 } from \"./v5.js\";\nexport { default as v6 } from \"./v6.js\";\nexport { default as v7 } from \"./v7.js\";\nexport { default as validate } from \"./validate.js\";\nexport { default as version } from \"./version.js\";\n"],"mappings":""}
1
+ {"version":3,"file":"index.js","names":["_MAX","_NIL","_parse","_stringify","_v1","_v4","_v5","_v6","_v7","_validate","_version"],"sources":["../../../src/utils/uuid/index.ts"],"sourcesContent":["import _MAX from \"./max.js\";\nimport _NIL from \"./nil.js\";\nimport _parse from \"./parse.js\";\nimport _stringify from \"./stringify.js\";\nimport _v1 from \"./v1.js\";\nimport _v4 from \"./v4.js\";\nimport _v5 from \"./v5.js\";\nimport _v6 from \"./v6.js\";\nimport _v7 from \"./v7.js\";\nimport _validate from \"./validate.js\";\nimport _version from \"./version.js\";\n\nexport type * from \"./types.js\";\n\nexport const MAX = _MAX;\nexport const NIL = _NIL;\nexport const parse = _parse;\nexport const stringify = _stringify;\nexport const v1 = _v1;\nexport const v4 = _v4;\nexport const v5 = _v5;\nexport const v6 = _v6;\nexport const v7 = _v7;\nexport const validate = _validate;\nexport const version = _version;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,MAAa,MAAMA;AACnB,MAAa,MAAMC;AACnB,MAAa,QAAQC;AACrB,MAAa,YAAYC;AACzB,MAAa,KAAKC;AAClB,MAAa,KAAKC;AAClB,MAAa,KAAKC;AAClB,MAAa,KAAKC;AAClB,MAAa,KAAKC;AAClB,MAAa,WAAWC;AACxB,MAAa,UAAUC"}
@@ -1 +1 @@
1
- {"version":3,"file":"v35.cjs","names":["parse","unsafeStringify"],"sources":["../../../src/utils/uuid/v35.ts"],"sourcesContent":["import parse from \"./parse.js\";\nimport { unsafeStringify } from \"./stringify.js\";\nimport type { UUIDTypes } from \"./types.js\";\n\nexport function stringToBytes(str: string) {\n // TODO: Use TextEncoder (see https://stackoverflow.com/a/48762658/109538)\n str = unescape(encodeURIComponent(str));\n\n const bytes = new Uint8Array(str.length);\n\n for (let i = 0; i < str.length; ++i) {\n bytes[i] = str.charCodeAt(i);\n }\n\n return bytes;\n}\n\nexport const DNS = \"6ba7b810-9dad-11d1-80b4-00c04fd430c8\";\nexport const URL = \"6ba7b811-9dad-11d1-80b4-00c04fd430c8\";\n\ntype HashFunction = (bytes: Uint8Array) => Uint8Array;\n\nexport default function v35<TBuf extends Uint8Array = Uint8Array>(\n version: 0x30 | 0x50,\n hash: HashFunction,\n value: string | Uint8Array,\n namespace: UUIDTypes,\n buf?: TBuf,\n offset?: number\n): UUIDTypes<TBuf> {\n const valueBytes: Uint8Array =\n typeof value === \"string\" ? stringToBytes(value) : value;\n const namespaceBytes: Uint8Array =\n typeof namespace === \"string\" ? parse(namespace) : namespace;\n\n if (typeof namespace === \"string\") {\n namespace = parse(namespace);\n }\n\n if (namespace?.length !== 16) {\n throw TypeError(\n \"Namespace must be array-like (16 iterable integer values, 0-255)\"\n );\n }\n\n // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n let bytes = new Uint8Array(16 + valueBytes.length);\n bytes.set(namespaceBytes);\n bytes.set(valueBytes, namespaceBytes.length);\n bytes = hash(bytes);\n\n bytes[6] = (bytes[6] & 0x0f) | version;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n\n if (buf) {\n offset ??= 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(\n `UUID byte range ${offset}:${offset + 15} is out of buffer bounds`\n );\n }\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(bytes);\n}\n"],"mappings":";;;AAIA,SAAgB,cAAc,KAAa;AAEzC,OAAM,SAAS,mBAAmB,IAAI,CAAC;CAEvC,MAAM,QAAQ,IAAI,WAAW,IAAI,OAAO;AAExC,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,EAAE,EAChC,OAAM,KAAK,IAAI,WAAW,EAAE;AAG9B,QAAO;;AAGT,MAAa,MAAM;AACnB,MAAa,MAAM;AAInB,SAAwB,IACtB,SACA,MACA,OACA,WACA,KACA,QACiB;CACjB,MAAM,aACJ,OAAO,UAAU,WAAW,cAAc,MAAM,GAAG;CACrD,MAAM,iBACJ,OAAO,cAAc,WAAWA,cAAAA,QAAM,UAAU,GAAG;AAErD,KAAI,OAAO,cAAc,SACvB,aAAYA,cAAAA,QAAM,UAAU;AAG9B,KAAI,WAAW,WAAW,GACxB,OAAM,UACJ,mEACD;CAMH,IAAI,QAAQ,IAAI,WAAW,KAAK,WAAW,OAAO;AAClD,OAAM,IAAI,eAAe;AACzB,OAAM,IAAI,YAAY,eAAe,OAAO;AAC5C,SAAQ,KAAK,MAAM;AAEnB,OAAM,KAAM,MAAM,KAAK,KAAQ;AAC/B,OAAM,KAAM,MAAM,KAAK,KAAQ;AAE/B,KAAI,KAAK;AACP,aAAW;AACX,MAAI,SAAS,KAAK,SAAS,KAAK,IAAI,OAClC,OAAM,IAAI,WACR,mBAAmB,OAAO,GAAG,SAAS,GAAG,0BAC1C;AAGH,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EACxB,KAAI,SAAS,KAAK,MAAM;AAG1B,SAAO;;AAGT,QAAOC,kBAAAA,gBAAgB,MAAM"}
1
+ {"version":3,"file":"v35.cjs","names":["parse","unsafeStringify"],"sources":["../../../src/utils/uuid/v35.ts"],"sourcesContent":["import parse from \"./parse.js\";\nimport { unsafeStringify } from \"./stringify.js\";\nimport type { UUIDTypes } from \"./types.js\";\n\nexport function stringToBytes(str: string) {\n // TODO: Use TextEncoder (see https://stackoverflow.com/a/48762658/109538)\n str = unescape(encodeURIComponent(str));\n\n const bytes = new Uint8Array(str.length);\n\n for (let i = 0; i < str.length; ++i) {\n bytes[i] = str.charCodeAt(i);\n }\n\n return bytes;\n}\n\nexport const DNS = \"6ba7b810-9dad-11d1-80b4-00c04fd430c8\";\nexport const URL = \"6ba7b811-9dad-11d1-80b4-00c04fd430c8\";\n\ntype HashFunction = (bytes: Uint8Array) => Uint8Array;\n\nexport default function v35<TBuf extends Uint8Array = Uint8Array>(\n version: 0x30 | 0x50,\n hash: HashFunction,\n value: string | Uint8Array,\n namespace: UUIDTypes,\n buf?: TBuf,\n offset?: number\n): UUIDTypes<TBuf> {\n const valueBytes: Uint8Array =\n typeof value === \"string\" ? stringToBytes(value) : value;\n const namespaceBytes: Uint8Array =\n typeof namespace === \"string\" ? parse(namespace) : namespace;\n\n if (typeof namespace === \"string\") {\n namespace = parse(namespace);\n }\n\n if (namespace?.length !== 16) {\n throw TypeError(\n \"Namespace must be array-like (16 iterable integer values, 0-255)\"\n );\n }\n\n // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n let bytes: Uint8Array = new Uint8Array(16 + valueBytes.length);\n bytes.set(namespaceBytes);\n bytes.set(valueBytes, namespaceBytes.length);\n bytes = hash(bytes);\n\n bytes[6] = (bytes[6] & 0x0f) | version;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n\n if (buf) {\n offset ??= 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(\n `UUID byte range ${offset}:${offset + 15} is out of buffer bounds`\n );\n }\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(bytes);\n}\n"],"mappings":";;;AAIA,SAAgB,cAAc,KAAa;AAEzC,OAAM,SAAS,mBAAmB,IAAI,CAAC;CAEvC,MAAM,QAAQ,IAAI,WAAW,IAAI,OAAO;AAExC,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,EAAE,EAChC,OAAM,KAAK,IAAI,WAAW,EAAE;AAG9B,QAAO;;AAGT,MAAa,MAAM;AACnB,MAAa,MAAM;AAInB,SAAwB,IACtB,SACA,MACA,OACA,WACA,KACA,QACiB;CACjB,MAAM,aACJ,OAAO,UAAU,WAAW,cAAc,MAAM,GAAG;CACrD,MAAM,iBACJ,OAAO,cAAc,WAAWA,cAAAA,QAAM,UAAU,GAAG;AAErD,KAAI,OAAO,cAAc,SACvB,aAAYA,cAAAA,QAAM,UAAU;AAG9B,KAAI,WAAW,WAAW,GACxB,OAAM,UACJ,mEACD;CAMH,IAAI,QAAoB,IAAI,WAAW,KAAK,WAAW,OAAO;AAC9D,OAAM,IAAI,eAAe;AACzB,OAAM,IAAI,YAAY,eAAe,OAAO;AAC5C,SAAQ,KAAK,MAAM;AAEnB,OAAM,KAAM,MAAM,KAAK,KAAQ;AAC/B,OAAM,KAAM,MAAM,KAAK,KAAQ;AAE/B,KAAI,KAAK;AACP,aAAW;AACX,MAAI,SAAS,KAAK,SAAS,KAAK,IAAI,OAClC,OAAM,IAAI,WACR,mBAAmB,OAAO,GAAG,SAAS,GAAG,0BAC1C;AAGH,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EACxB,KAAI,SAAS,KAAK,MAAM;AAG1B,SAAO;;AAGT,QAAOC,kBAAAA,gBAAgB,MAAM"}
@@ -1 +1 @@
1
- {"version":3,"file":"v35.js","names":[],"sources":["../../../src/utils/uuid/v35.ts"],"sourcesContent":["import parse from \"./parse.js\";\nimport { unsafeStringify } from \"./stringify.js\";\nimport type { UUIDTypes } from \"./types.js\";\n\nexport function stringToBytes(str: string) {\n // TODO: Use TextEncoder (see https://stackoverflow.com/a/48762658/109538)\n str = unescape(encodeURIComponent(str));\n\n const bytes = new Uint8Array(str.length);\n\n for (let i = 0; i < str.length; ++i) {\n bytes[i] = str.charCodeAt(i);\n }\n\n return bytes;\n}\n\nexport const DNS = \"6ba7b810-9dad-11d1-80b4-00c04fd430c8\";\nexport const URL = \"6ba7b811-9dad-11d1-80b4-00c04fd430c8\";\n\ntype HashFunction = (bytes: Uint8Array) => Uint8Array;\n\nexport default function v35<TBuf extends Uint8Array = Uint8Array>(\n version: 0x30 | 0x50,\n hash: HashFunction,\n value: string | Uint8Array,\n namespace: UUIDTypes,\n buf?: TBuf,\n offset?: number\n): UUIDTypes<TBuf> {\n const valueBytes: Uint8Array =\n typeof value === \"string\" ? stringToBytes(value) : value;\n const namespaceBytes: Uint8Array =\n typeof namespace === \"string\" ? parse(namespace) : namespace;\n\n if (typeof namespace === \"string\") {\n namespace = parse(namespace);\n }\n\n if (namespace?.length !== 16) {\n throw TypeError(\n \"Namespace must be array-like (16 iterable integer values, 0-255)\"\n );\n }\n\n // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n let bytes = new Uint8Array(16 + valueBytes.length);\n bytes.set(namespaceBytes);\n bytes.set(valueBytes, namespaceBytes.length);\n bytes = hash(bytes);\n\n bytes[6] = (bytes[6] & 0x0f) | version;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n\n if (buf) {\n offset ??= 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(\n `UUID byte range ${offset}:${offset + 15} is out of buffer bounds`\n );\n }\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(bytes);\n}\n"],"mappings":";;;AAIA,SAAgB,cAAc,KAAa;AAEzC,OAAM,SAAS,mBAAmB,IAAI,CAAC;CAEvC,MAAM,QAAQ,IAAI,WAAW,IAAI,OAAO;AAExC,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,EAAE,EAChC,OAAM,KAAK,IAAI,WAAW,EAAE;AAG9B,QAAO;;AAGT,MAAa,MAAM;AACnB,MAAa,MAAM;AAInB,SAAwB,IACtB,SACA,MACA,OACA,WACA,KACA,QACiB;CACjB,MAAM,aACJ,OAAO,UAAU,WAAW,cAAc,MAAM,GAAG;CACrD,MAAM,iBACJ,OAAO,cAAc,WAAW,MAAM,UAAU,GAAG;AAErD,KAAI,OAAO,cAAc,SACvB,aAAY,MAAM,UAAU;AAG9B,KAAI,WAAW,WAAW,GACxB,OAAM,UACJ,mEACD;CAMH,IAAI,QAAQ,IAAI,WAAW,KAAK,WAAW,OAAO;AAClD,OAAM,IAAI,eAAe;AACzB,OAAM,IAAI,YAAY,eAAe,OAAO;AAC5C,SAAQ,KAAK,MAAM;AAEnB,OAAM,KAAM,MAAM,KAAK,KAAQ;AAC/B,OAAM,KAAM,MAAM,KAAK,KAAQ;AAE/B,KAAI,KAAK;AACP,aAAW;AACX,MAAI,SAAS,KAAK,SAAS,KAAK,IAAI,OAClC,OAAM,IAAI,WACR,mBAAmB,OAAO,GAAG,SAAS,GAAG,0BAC1C;AAGH,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EACxB,KAAI,SAAS,KAAK,MAAM;AAG1B,SAAO;;AAGT,QAAO,gBAAgB,MAAM"}
1
+ {"version":3,"file":"v35.js","names":[],"sources":["../../../src/utils/uuid/v35.ts"],"sourcesContent":["import parse from \"./parse.js\";\nimport { unsafeStringify } from \"./stringify.js\";\nimport type { UUIDTypes } from \"./types.js\";\n\nexport function stringToBytes(str: string) {\n // TODO: Use TextEncoder (see https://stackoverflow.com/a/48762658/109538)\n str = unescape(encodeURIComponent(str));\n\n const bytes = new Uint8Array(str.length);\n\n for (let i = 0; i < str.length; ++i) {\n bytes[i] = str.charCodeAt(i);\n }\n\n return bytes;\n}\n\nexport const DNS = \"6ba7b810-9dad-11d1-80b4-00c04fd430c8\";\nexport const URL = \"6ba7b811-9dad-11d1-80b4-00c04fd430c8\";\n\ntype HashFunction = (bytes: Uint8Array) => Uint8Array;\n\nexport default function v35<TBuf extends Uint8Array = Uint8Array>(\n version: 0x30 | 0x50,\n hash: HashFunction,\n value: string | Uint8Array,\n namespace: UUIDTypes,\n buf?: TBuf,\n offset?: number\n): UUIDTypes<TBuf> {\n const valueBytes: Uint8Array =\n typeof value === \"string\" ? stringToBytes(value) : value;\n const namespaceBytes: Uint8Array =\n typeof namespace === \"string\" ? parse(namespace) : namespace;\n\n if (typeof namespace === \"string\") {\n namespace = parse(namespace);\n }\n\n if (namespace?.length !== 16) {\n throw TypeError(\n \"Namespace must be array-like (16 iterable integer values, 0-255)\"\n );\n }\n\n // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n let bytes: Uint8Array = new Uint8Array(16 + valueBytes.length);\n bytes.set(namespaceBytes);\n bytes.set(valueBytes, namespaceBytes.length);\n bytes = hash(bytes);\n\n bytes[6] = (bytes[6] & 0x0f) | version;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n\n if (buf) {\n offset ??= 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(\n `UUID byte range ${offset}:${offset + 15} is out of buffer bounds`\n );\n }\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(bytes);\n}\n"],"mappings":";;;AAIA,SAAgB,cAAc,KAAa;AAEzC,OAAM,SAAS,mBAAmB,IAAI,CAAC;CAEvC,MAAM,QAAQ,IAAI,WAAW,IAAI,OAAO;AAExC,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,EAAE,EAChC,OAAM,KAAK,IAAI,WAAW,EAAE;AAG9B,QAAO;;AAGT,MAAa,MAAM;AACnB,MAAa,MAAM;AAInB,SAAwB,IACtB,SACA,MACA,OACA,WACA,KACA,QACiB;CACjB,MAAM,aACJ,OAAO,UAAU,WAAW,cAAc,MAAM,GAAG;CACrD,MAAM,iBACJ,OAAO,cAAc,WAAW,MAAM,UAAU,GAAG;AAErD,KAAI,OAAO,cAAc,SACvB,aAAY,MAAM,UAAU;AAG9B,KAAI,WAAW,WAAW,GACxB,OAAM,UACJ,mEACD;CAMH,IAAI,QAAoB,IAAI,WAAW,KAAK,WAAW,OAAO;AAC9D,OAAM,IAAI,eAAe;AACzB,OAAM,IAAI,YAAY,eAAe,OAAO;AAC5C,SAAQ,KAAK,MAAM;AAEnB,OAAM,KAAM,MAAM,KAAK,KAAQ;AAC/B,OAAM,KAAM,MAAM,KAAK,KAAQ;AAE/B,KAAI,KAAK;AACP,aAAW;AACX,MAAI,SAAS,KAAK,SAAS,KAAK,IAAI,OAClC,OAAM,IAAI,WACR,mBAAmB,OAAO,GAAG,SAAS,GAAG,0BAC1C;AAGH,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EACxB,KAAI,SAAS,KAAK,MAAM;AAG1B,SAAO;;AAGT,QAAO,gBAAgB,MAAM"}
@@ -1 +1 @@
1
- {"version":3,"file":"nativeEnum.cjs","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/nativeEnum.ts"],"sourcesContent":["import { ZodNativeEnumDef } from \"zod/v3\";\n\nexport type JsonSchema7NativeEnumType = {\n type: \"string\" | \"number\" | [\"string\", \"number\"];\n enum: (string | number)[];\n};\n\nexport function parseNativeEnumDef(\n def: ZodNativeEnumDef\n): JsonSchema7NativeEnumType {\n const object = def.values;\n const actualKeys = Object.keys(def.values).filter((key: string) => {\n return typeof object[object[key]] !== \"number\";\n });\n\n const actualValues = actualKeys.map((key: string) => object[key]);\n\n const parsedTypes = Array.from(\n new Set(actualValues.map((values: string | number) => typeof values))\n );\n\n return {\n type:\n parsedTypes.length === 1\n ? parsedTypes[0] === \"string\"\n ? \"string\"\n : \"number\"\n : [\"string\", \"number\"],\n enum: actualValues,\n };\n}\n"],"mappings":";AAOA,SAAgB,mBACd,KAC2B;CAC3B,MAAM,SAAS,IAAI;CAKnB,MAAM,eAJa,OAAO,KAAK,IAAI,OAAO,CAAC,QAAQ,QAAgB;AACjE,SAAO,OAAO,OAAO,OAAO,UAAU;GACtC,CAE8B,KAAK,QAAgB,OAAO,KAAK;CAEjE,MAAM,cAAc,MAAM,KACxB,IAAI,IAAI,aAAa,KAAK,WAA4B,OAAO,OAAO,CAAC,CACtE;AAED,QAAO;EACL,MACE,YAAY,WAAW,IACnB,YAAY,OAAO,WACjB,WACA,WACF,CAAC,UAAU,SAAS;EAC1B,MAAM;EACP"}
1
+ {"version":3,"file":"nativeEnum.cjs","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/nativeEnum.ts"],"sourcesContent":["import { ZodNativeEnumDef } from \"zod/v3\";\n\nexport type JsonSchema7NativeEnumType = {\n type: \"string\" | \"number\" | [\"string\", \"number\"];\n enum: (string | number)[];\n};\n\nexport function parseNativeEnumDef(\n def: ZodNativeEnumDef\n): JsonSchema7NativeEnumType {\n const object = def.values;\n const actualKeys = Object.keys(def.values).filter((key: string) => {\n return typeof object[object[key]] !== \"number\";\n });\n\n const actualValues = actualKeys.map((key: string) => object[key]);\n\n const parsedTypes = Array.from(\n new Set(actualValues.map((values: string | number) => typeof values))\n );\n\n return {\n type:\n parsedTypes.length === 1\n ? parsedTypes[0] === \"string\"\n ? \"string\"\n : \"number\"\n : [\"string\", \"number\"],\n enum: actualValues,\n };\n}\n"],"mappings":";AAOA,SAAgB,mBACd,KAC2B;CAC3B,MAAM,SAAS,IAAI;CAKnB,MAAM,eAJa,OAAO,KAAK,IAAI,OAAO,CAAC,QAAQ,QAAgB;AACjE,SAAO,OAAO,OAAO,OAAO,UAAU;GAGT,CAAC,KAAK,QAAgB,OAAO,KAAK;CAEjE,MAAM,cAAc,MAAM,KACxB,IAAI,IAAI,aAAa,KAAK,WAA4B,OAAO,OAAO,CAAC,CACtE;AAED,QAAO;EACL,MACE,YAAY,WAAW,IACnB,YAAY,OAAO,WACjB,WACA,WACF,CAAC,UAAU,SAAS;EAC1B,MAAM;EACP"}
@@ -1 +1 @@
1
- {"version":3,"file":"nativeEnum.js","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/nativeEnum.ts"],"sourcesContent":["import { ZodNativeEnumDef } from \"zod/v3\";\n\nexport type JsonSchema7NativeEnumType = {\n type: \"string\" | \"number\" | [\"string\", \"number\"];\n enum: (string | number)[];\n};\n\nexport function parseNativeEnumDef(\n def: ZodNativeEnumDef\n): JsonSchema7NativeEnumType {\n const object = def.values;\n const actualKeys = Object.keys(def.values).filter((key: string) => {\n return typeof object[object[key]] !== \"number\";\n });\n\n const actualValues = actualKeys.map((key: string) => object[key]);\n\n const parsedTypes = Array.from(\n new Set(actualValues.map((values: string | number) => typeof values))\n );\n\n return {\n type:\n parsedTypes.length === 1\n ? parsedTypes[0] === \"string\"\n ? \"string\"\n : \"number\"\n : [\"string\", \"number\"],\n enum: actualValues,\n };\n}\n"],"mappings":";AAOA,SAAgB,mBACd,KAC2B;CAC3B,MAAM,SAAS,IAAI;CAKnB,MAAM,eAJa,OAAO,KAAK,IAAI,OAAO,CAAC,QAAQ,QAAgB;AACjE,SAAO,OAAO,OAAO,OAAO,UAAU;GACtC,CAE8B,KAAK,QAAgB,OAAO,KAAK;CAEjE,MAAM,cAAc,MAAM,KACxB,IAAI,IAAI,aAAa,KAAK,WAA4B,OAAO,OAAO,CAAC,CACtE;AAED,QAAO;EACL,MACE,YAAY,WAAW,IACnB,YAAY,OAAO,WACjB,WACA,WACF,CAAC,UAAU,SAAS;EAC1B,MAAM;EACP"}
1
+ {"version":3,"file":"nativeEnum.js","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/nativeEnum.ts"],"sourcesContent":["import { ZodNativeEnumDef } from \"zod/v3\";\n\nexport type JsonSchema7NativeEnumType = {\n type: \"string\" | \"number\" | [\"string\", \"number\"];\n enum: (string | number)[];\n};\n\nexport function parseNativeEnumDef(\n def: ZodNativeEnumDef\n): JsonSchema7NativeEnumType {\n const object = def.values;\n const actualKeys = Object.keys(def.values).filter((key: string) => {\n return typeof object[object[key]] !== \"number\";\n });\n\n const actualValues = actualKeys.map((key: string) => object[key]);\n\n const parsedTypes = Array.from(\n new Set(actualValues.map((values: string | number) => typeof values))\n );\n\n return {\n type:\n parsedTypes.length === 1\n ? parsedTypes[0] === \"string\"\n ? \"string\"\n : \"number\"\n : [\"string\", \"number\"],\n enum: actualValues,\n };\n}\n"],"mappings":";AAOA,SAAgB,mBACd,KAC2B;CAC3B,MAAM,SAAS,IAAI;CAKnB,MAAM,eAJa,OAAO,KAAK,IAAI,OAAO,CAAC,QAAQ,QAAgB;AACjE,SAAO,OAAO,OAAO,OAAO,UAAU;GAGT,CAAC,KAAK,QAAgB,OAAO,KAAK;CAEjE,MAAM,cAAc,MAAM,KACxB,IAAI,IAAI,aAAa,KAAK,WAA4B,OAAO,OAAO,CAAC,CACtE;AAED,QAAO;EACL,MACE,YAAY,WAAW,IACnB,YAAY,OAAO,WACjB,WACA,WACF,CAAC,UAAU,SAAS;EAC1B,MAAM;EACP"}
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.cjs","names":["parseDef"],"sources":["../../../../src/utils/zod-to-json-schema/parsers/pipeline.ts"],"sourcesContent":["import { ZodPipelineDef } from \"zod/v3\";\nimport { parseDef } from \"../parseDef.js\";\nimport { JsonSchema7Type } from \"../parseTypes.js\";\nimport { Refs } from \"../Refs.js\";\nimport { JsonSchema7AllOfType } from \"./intersection.js\";\n\nexport const parsePipelineDef = (\n def: ZodPipelineDef<any, any>,\n refs: Refs\n): JsonSchema7AllOfType | JsonSchema7Type | undefined => {\n if (refs.pipeStrategy === \"input\") {\n return parseDef(def.in._def, refs);\n } else if (refs.pipeStrategy === \"output\") {\n return parseDef(def.out._def, refs);\n }\n\n const a = parseDef(def.in._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"0\"],\n });\n const b = parseDef(def.out._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", a ? \"1\" : \"0\"],\n });\n\n return {\n allOf: [a, b].filter((x): x is JsonSchema7Type => x !== undefined),\n };\n};\n"],"mappings":";;AAMA,MAAa,oBACX,KACA,SACuD;AACvD,KAAI,KAAK,iBAAiB,QACxB,QAAOA,iBAAAA,SAAS,IAAI,GAAG,MAAM,KAAK;UACzB,KAAK,iBAAiB,SAC/B,QAAOA,iBAAAA,SAAS,IAAI,IAAI,MAAM,KAAK;CAGrC,MAAM,IAAIA,iBAAAA,SAAS,IAAI,GAAG,MAAM;EAC9B,GAAG;EACH,aAAa;GAAC,GAAG,KAAK;GAAa;GAAS;GAAI;EACjD,CAAC;AAMF,QAAO,EACL,OAAO,CAAC,GANAA,iBAAAA,SAAS,IAAI,IAAI,MAAM;EAC/B,GAAG;EACH,aAAa;GAAC,GAAG,KAAK;GAAa;GAAS,IAAI,MAAM;GAAI;EAC3D,CAAC,CAGa,CAAC,QAAQ,MAA4B,MAAM,KAAA,EAAU,EACnE"}
1
+ {"version":3,"file":"pipeline.cjs","names":["parseDef"],"sources":["../../../../src/utils/zod-to-json-schema/parsers/pipeline.ts"],"sourcesContent":["import { ZodPipelineDef } from \"zod/v3\";\nimport { parseDef } from \"../parseDef.js\";\nimport { JsonSchema7Type } from \"../parseTypes.js\";\nimport { Refs } from \"../Refs.js\";\nimport { JsonSchema7AllOfType } from \"./intersection.js\";\n\nexport const parsePipelineDef = (\n def: ZodPipelineDef<any, any>,\n refs: Refs\n): JsonSchema7AllOfType | JsonSchema7Type | undefined => {\n if (refs.pipeStrategy === \"input\") {\n return parseDef(def.in._def, refs);\n } else if (refs.pipeStrategy === \"output\") {\n return parseDef(def.out._def, refs);\n }\n\n const a = parseDef(def.in._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"0\"],\n });\n const b = parseDef(def.out._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", a ? \"1\" : \"0\"],\n });\n\n return {\n allOf: [a, b].filter((x): x is JsonSchema7Type => x !== undefined),\n };\n};\n"],"mappings":";;AAMA,MAAa,oBACX,KACA,SACuD;AACvD,KAAI,KAAK,iBAAiB,QACxB,QAAOA,iBAAAA,SAAS,IAAI,GAAG,MAAM,KAAK;UACzB,KAAK,iBAAiB,SAC/B,QAAOA,iBAAAA,SAAS,IAAI,IAAI,MAAM,KAAK;CAGrC,MAAM,IAAIA,iBAAAA,SAAS,IAAI,GAAG,MAAM;EAC9B,GAAG;EACH,aAAa;GAAC,GAAG,KAAK;GAAa;GAAS;GAAI;EACjD,CAAC;AAMF,QAAO,EACL,OAAO,CAAC,GANAA,iBAAAA,SAAS,IAAI,IAAI,MAAM;EAC/B,GAAG;EACH,aAAa;GAAC,GAAG,KAAK;GAAa;GAAS,IAAI,MAAM;GAAI;EAC3D,CAGa,CAAC,CAAC,QAAQ,MAA4B,MAAM,KAAA,EAAU,EACnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/pipeline.ts"],"sourcesContent":["import { ZodPipelineDef } from \"zod/v3\";\nimport { parseDef } from \"../parseDef.js\";\nimport { JsonSchema7Type } from \"../parseTypes.js\";\nimport { Refs } from \"../Refs.js\";\nimport { JsonSchema7AllOfType } from \"./intersection.js\";\n\nexport const parsePipelineDef = (\n def: ZodPipelineDef<any, any>,\n refs: Refs\n): JsonSchema7AllOfType | JsonSchema7Type | undefined => {\n if (refs.pipeStrategy === \"input\") {\n return parseDef(def.in._def, refs);\n } else if (refs.pipeStrategy === \"output\") {\n return parseDef(def.out._def, refs);\n }\n\n const a = parseDef(def.in._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"0\"],\n });\n const b = parseDef(def.out._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", a ? \"1\" : \"0\"],\n });\n\n return {\n allOf: [a, b].filter((x): x is JsonSchema7Type => x !== undefined),\n };\n};\n"],"mappings":";;AAMA,MAAa,oBACX,KACA,SACuD;AACvD,KAAI,KAAK,iBAAiB,QACxB,QAAO,SAAS,IAAI,GAAG,MAAM,KAAK;UACzB,KAAK,iBAAiB,SAC/B,QAAO,SAAS,IAAI,IAAI,MAAM,KAAK;CAGrC,MAAM,IAAI,SAAS,IAAI,GAAG,MAAM;EAC9B,GAAG;EACH,aAAa;GAAC,GAAG,KAAK;GAAa;GAAS;GAAI;EACjD,CAAC;AAMF,QAAO,EACL,OAAO,CAAC,GANA,SAAS,IAAI,IAAI,MAAM;EAC/B,GAAG;EACH,aAAa;GAAC,GAAG,KAAK;GAAa;GAAS,IAAI,MAAM;GAAI;EAC3D,CAAC,CAGa,CAAC,QAAQ,MAA4B,MAAM,KAAA,EAAU,EACnE"}
1
+ {"version":3,"file":"pipeline.js","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/pipeline.ts"],"sourcesContent":["import { ZodPipelineDef } from \"zod/v3\";\nimport { parseDef } from \"../parseDef.js\";\nimport { JsonSchema7Type } from \"../parseTypes.js\";\nimport { Refs } from \"../Refs.js\";\nimport { JsonSchema7AllOfType } from \"./intersection.js\";\n\nexport const parsePipelineDef = (\n def: ZodPipelineDef<any, any>,\n refs: Refs\n): JsonSchema7AllOfType | JsonSchema7Type | undefined => {\n if (refs.pipeStrategy === \"input\") {\n return parseDef(def.in._def, refs);\n } else if (refs.pipeStrategy === \"output\") {\n return parseDef(def.out._def, refs);\n }\n\n const a = parseDef(def.in._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"0\"],\n });\n const b = parseDef(def.out._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", a ? \"1\" : \"0\"],\n });\n\n return {\n allOf: [a, b].filter((x): x is JsonSchema7Type => x !== undefined),\n };\n};\n"],"mappings":";;AAMA,MAAa,oBACX,KACA,SACuD;AACvD,KAAI,KAAK,iBAAiB,QACxB,QAAO,SAAS,IAAI,GAAG,MAAM,KAAK;UACzB,KAAK,iBAAiB,SAC/B,QAAO,SAAS,IAAI,IAAI,MAAM,KAAK;CAGrC,MAAM,IAAI,SAAS,IAAI,GAAG,MAAM;EAC9B,GAAG;EACH,aAAa;GAAC,GAAG,KAAK;GAAa;GAAS;GAAI;EACjD,CAAC;AAMF,QAAO,EACL,OAAO,CAAC,GANA,SAAS,IAAI,IAAI,MAAM;EAC/B,GAAG;EACH,aAAa;GAAC,GAAG,KAAK;GAAa;GAAS,IAAI,MAAM;GAAI;EAC3D,CAGa,CAAC,CAAC,QAAQ,MAA4B,MAAM,KAAA,EAAU,EACnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"set.cjs","names":["parseDef"],"sources":["../../../../src/utils/zod-to-json-schema/parsers/set.ts"],"sourcesContent":["import { ZodSetDef } from \"zod/v3\";\nimport { ErrorMessages, setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { parseDef } from \"../parseDef.js\";\nimport { JsonSchema7Type } from \"../parseTypes.js\";\nimport { Refs } from \"../Refs.js\";\n\nexport type JsonSchema7SetType = {\n type: \"array\";\n uniqueItems: true;\n items?: JsonSchema7Type;\n minItems?: number;\n maxItems?: number;\n errorMessage?: ErrorMessages<JsonSchema7SetType>;\n};\n\nexport function parseSetDef(def: ZodSetDef, refs: Refs): JsonSchema7SetType {\n const items = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\"],\n });\n\n const schema: JsonSchema7SetType = {\n type: \"array\",\n uniqueItems: true,\n items,\n };\n\n if (def.minSize) {\n setResponseValueAndErrors(\n schema,\n \"minItems\",\n def.minSize.value,\n def.minSize.message,\n refs\n );\n }\n\n if (def.maxSize) {\n setResponseValueAndErrors(\n schema,\n \"maxItems\",\n def.maxSize.value,\n def.maxSize.message,\n refs\n );\n }\n\n return schema;\n}\n"],"mappings":";;;AAeA,SAAgB,YAAY,KAAgB,MAAgC;CAM1E,MAAM,SAA6B;EACjC,MAAM;EACN,aAAa;EACb,OARYA,iBAAAA,SAAS,IAAI,UAAU,MAAM;GACzC,GAAG;GACH,aAAa,CAAC,GAAG,KAAK,aAAa,QAAQ;GAC5C,CAAC;EAMD;AAED,KAAI,IAAI,QACN,uBAAA,0BACE,QACA,YACA,IAAI,QAAQ,OACZ,IAAI,QAAQ,SACZ,KACD;AAGH,KAAI,IAAI,QACN,uBAAA,0BACE,QACA,YACA,IAAI,QAAQ,OACZ,IAAI,QAAQ,SACZ,KACD;AAGH,QAAO"}
1
+ {"version":3,"file":"set.cjs","names":["parseDef"],"sources":["../../../../src/utils/zod-to-json-schema/parsers/set.ts"],"sourcesContent":["import { ZodSetDef } from \"zod/v3\";\nimport { ErrorMessages, setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { parseDef } from \"../parseDef.js\";\nimport { JsonSchema7Type } from \"../parseTypes.js\";\nimport { Refs } from \"../Refs.js\";\n\nexport type JsonSchema7SetType = {\n type: \"array\";\n uniqueItems: true;\n items?: JsonSchema7Type;\n minItems?: number;\n maxItems?: number;\n errorMessage?: ErrorMessages<JsonSchema7SetType>;\n};\n\nexport function parseSetDef(def: ZodSetDef, refs: Refs): JsonSchema7SetType {\n const items = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\"],\n });\n\n const schema: JsonSchema7SetType = {\n type: \"array\",\n uniqueItems: true,\n items,\n };\n\n if (def.minSize) {\n setResponseValueAndErrors(\n schema,\n \"minItems\",\n def.minSize.value,\n def.minSize.message,\n refs\n );\n }\n\n if (def.maxSize) {\n setResponseValueAndErrors(\n schema,\n \"maxItems\",\n def.maxSize.value,\n def.maxSize.message,\n refs\n );\n }\n\n return schema;\n}\n"],"mappings":";;;AAeA,SAAgB,YAAY,KAAgB,MAAgC;CAM1E,MAAM,SAA6B;EACjC,MAAM;EACN,aAAa;EACb,OARYA,iBAAAA,SAAS,IAAI,UAAU,MAAM;GACzC,GAAG;GACH,aAAa,CAAC,GAAG,KAAK,aAAa,QAAQ;GAC5C,CAKM;EACN;AAED,KAAI,IAAI,QACN,uBAAA,0BACE,QACA,YACA,IAAI,QAAQ,OACZ,IAAI,QAAQ,SACZ,KACD;AAGH,KAAI,IAAI,QACN,uBAAA,0BACE,QACA,YACA,IAAI,QAAQ,OACZ,IAAI,QAAQ,SACZ,KACD;AAGH,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"set.js","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/set.ts"],"sourcesContent":["import { ZodSetDef } from \"zod/v3\";\nimport { ErrorMessages, setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { parseDef } from \"../parseDef.js\";\nimport { JsonSchema7Type } from \"../parseTypes.js\";\nimport { Refs } from \"../Refs.js\";\n\nexport type JsonSchema7SetType = {\n type: \"array\";\n uniqueItems: true;\n items?: JsonSchema7Type;\n minItems?: number;\n maxItems?: number;\n errorMessage?: ErrorMessages<JsonSchema7SetType>;\n};\n\nexport function parseSetDef(def: ZodSetDef, refs: Refs): JsonSchema7SetType {\n const items = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\"],\n });\n\n const schema: JsonSchema7SetType = {\n type: \"array\",\n uniqueItems: true,\n items,\n };\n\n if (def.minSize) {\n setResponseValueAndErrors(\n schema,\n \"minItems\",\n def.minSize.value,\n def.minSize.message,\n refs\n );\n }\n\n if (def.maxSize) {\n setResponseValueAndErrors(\n schema,\n \"maxItems\",\n def.maxSize.value,\n def.maxSize.message,\n refs\n );\n }\n\n return schema;\n}\n"],"mappings":";;;AAeA,SAAgB,YAAY,KAAgB,MAAgC;CAM1E,MAAM,SAA6B;EACjC,MAAM;EACN,aAAa;EACb,OARY,SAAS,IAAI,UAAU,MAAM;GACzC,GAAG;GACH,aAAa,CAAC,GAAG,KAAK,aAAa,QAAQ;GAC5C,CAAC;EAMD;AAED,KAAI,IAAI,QACN,2BACE,QACA,YACA,IAAI,QAAQ,OACZ,IAAI,QAAQ,SACZ,KACD;AAGH,KAAI,IAAI,QACN,2BACE,QACA,YACA,IAAI,QAAQ,OACZ,IAAI,QAAQ,SACZ,KACD;AAGH,QAAO"}
1
+ {"version":3,"file":"set.js","names":[],"sources":["../../../../src/utils/zod-to-json-schema/parsers/set.ts"],"sourcesContent":["import { ZodSetDef } from \"zod/v3\";\nimport { ErrorMessages, setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { parseDef } from \"../parseDef.js\";\nimport { JsonSchema7Type } from \"../parseTypes.js\";\nimport { Refs } from \"../Refs.js\";\n\nexport type JsonSchema7SetType = {\n type: \"array\";\n uniqueItems: true;\n items?: JsonSchema7Type;\n minItems?: number;\n maxItems?: number;\n errorMessage?: ErrorMessages<JsonSchema7SetType>;\n};\n\nexport function parseSetDef(def: ZodSetDef, refs: Refs): JsonSchema7SetType {\n const items = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\"],\n });\n\n const schema: JsonSchema7SetType = {\n type: \"array\",\n uniqueItems: true,\n items,\n };\n\n if (def.minSize) {\n setResponseValueAndErrors(\n schema,\n \"minItems\",\n def.minSize.value,\n def.minSize.message,\n refs\n );\n }\n\n if (def.maxSize) {\n setResponseValueAndErrors(\n schema,\n \"maxItems\",\n def.maxSize.value,\n def.maxSize.message,\n refs\n );\n }\n\n return schema;\n}\n"],"mappings":";;;AAeA,SAAgB,YAAY,KAAgB,MAAgC;CAM1E,MAAM,SAA6B;EACjC,MAAM;EACN,aAAa;EACb,OARY,SAAS,IAAI,UAAU,MAAM;GACzC,GAAG;GACH,aAAa,CAAC,GAAG,KAAK,aAAa,QAAQ;GAC5C,CAKM;EACN;AAED,KAAI,IAAI,QACN,2BACE,QACA,YACA,IAAI,QAAQ,OACZ,IAAI,QAAQ,SACZ,KACD;AAGH,KAAI,IAAI,QACN,2BACE,QACA,YACA,IAAI,QAAQ,OACZ,IAAI,QAAQ,SACZ,KACD;AAGH,QAAO"}
@@ -8,17 +8,43 @@ let emojiRegex = void 0;
8
8
  * Expressions with /i flag have been changed accordingly.
9
9
  */
10
10
  const zodPatterns = {
11
+ /**
12
+ * `c` was changed to `[cC]` to replicate /i flag
13
+ */
11
14
  cuid: /^[cC][^\s-]{8,}$/,
12
15
  cuid2: /^[0-9a-z]+$/,
13
16
  ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,
17
+ /**
18
+ * `a-z` was added to replicate /i flag
19
+ */
14
20
  email: /^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,
21
+ /**
22
+ * Constructed a valid Unicode RegExp
23
+ *
24
+ * Lazily instantiate since this type of regex isn't supported
25
+ * in all envs (e.g. React Native).
26
+ *
27
+ * See:
28
+ * https://github.com/colinhacks/zod/issues/2433
29
+ * Fix in Zod:
30
+ * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b
31
+ */
15
32
  emoji: () => {
16
33
  if (emojiRegex === void 0) emojiRegex = RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$", "u");
17
34
  return emojiRegex;
18
35
  },
36
+ /**
37
+ * Unused
38
+ */
19
39
  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}$/,
40
+ /**
41
+ * Unused
42
+ */
20
43
  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])$/,
21
44
  ipv4Cidr: /^(?:(?: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])$/,
45
+ /**
46
+ * Unused
47
+ */
22
48
  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})))$/,
23
49
  ipv6Cidr: /^(([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])$/,
24
50
  base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,
@@ -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":"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"}
@@ -8,17 +8,43 @@ let emojiRegex = void 0;
8
8
  * Expressions with /i flag have been changed accordingly.
9
9
  */
10
10
  const zodPatterns = {
11
+ /**
12
+ * `c` was changed to `[cC]` to replicate /i flag
13
+ */
11
14
  cuid: /^[cC][^\s-]{8,}$/,
12
15
  cuid2: /^[0-9a-z]+$/,
13
16
  ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,
17
+ /**
18
+ * `a-z` was added to replicate /i flag
19
+ */
14
20
  email: /^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,
21
+ /**
22
+ * Constructed a valid Unicode RegExp
23
+ *
24
+ * Lazily instantiate since this type of regex isn't supported
25
+ * in all envs (e.g. React Native).
26
+ *
27
+ * See:
28
+ * https://github.com/colinhacks/zod/issues/2433
29
+ * Fix in Zod:
30
+ * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b
31
+ */
15
32
  emoji: () => {
16
33
  if (emojiRegex === void 0) emojiRegex = RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$", "u");
17
34
  return emojiRegex;
18
35
  },
36
+ /**
37
+ * Unused
38
+ */
19
39
  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}$/,
40
+ /**
41
+ * Unused
42
+ */
20
43
  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])$/,
21
44
  ipv4Cidr: /^(?:(?: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])$/,
45
+ /**
46
+ * Unused
47
+ */
22
48
  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})))$/,
23
49
  ipv6Cidr: /^(([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])$/,
24
50
  base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,
@@ -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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"}