windows-development-sandbox 1.4.1 → 1.5.0

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 (3550) hide show
  1. package/.sandbox-config.example.json +1 -2
  2. package/README.md +9 -9
  3. package/config.example.json +162 -8
  4. package/dist/api.d.ts +2 -2
  5. package/dist/api.js +29 -18
  6. package/dist/cli/args.d.ts +19 -6
  7. package/dist/cli/args.js +91 -35
  8. package/dist/cli/argv.d.ts +9 -0
  9. package/dist/cli/argv.js +22 -0
  10. package/dist/cli/commands/accounts.d.ts +1 -1
  11. package/dist/cli/commands/accounts.js +48 -32
  12. package/dist/cli/commands/agent-commands.d.ts +3 -3
  13. package/dist/cli/commands/agent-commands.js +20 -36
  14. package/dist/cli/commands/context.d.ts +15 -11
  15. package/dist/cli/commands/context.js +35 -32
  16. package/dist/cli/commands/data/clean.d.ts +2 -14
  17. package/dist/cli/commands/data/clean.js +18 -87
  18. package/dist/cli/commands/data/collect.d.ts +6 -3
  19. package/dist/cli/commands/data/collect.js +46 -15
  20. package/dist/cli/commands/data/index.d.ts +2 -2
  21. package/dist/cli/commands/data/index.js +34 -17
  22. package/dist/cli/commands/data/remove.d.ts +1 -1
  23. package/dist/cli/commands/data/remove.js +4 -4
  24. package/dist/cli/commands/index.d.ts +6 -4
  25. package/dist/cli/commands/index.js +6 -4
  26. package/dist/cli/commands/launch/add-root.d.ts +7 -0
  27. package/dist/cli/commands/launch/add-root.js +64 -0
  28. package/dist/cli/commands/launch/boot-progress.d.ts +7 -0
  29. package/dist/cli/commands/launch/boot-progress.js +48 -0
  30. package/dist/cli/commands/launch/boot-wants.d.ts +11 -0
  31. package/dist/cli/commands/launch/boot-wants.js +48 -0
  32. package/dist/cli/commands/launch/first-start.d.ts +10 -0
  33. package/dist/cli/commands/launch/first-start.js +53 -0
  34. package/dist/cli/commands/launch/index.d.ts +6 -0
  35. package/dist/cli/commands/launch/index.js +6 -0
  36. package/dist/cli/commands/launch/launch.d.ts +11 -0
  37. package/dist/cli/commands/launch/launch.js +273 -0
  38. package/dist/cli/commands/launch/prepare.d.ts +23 -0
  39. package/dist/cli/commands/launch/prepare.js +108 -0
  40. package/dist/cli/commands/launch/resume-offer.d.ts +8 -0
  41. package/dist/cli/commands/launch/resume-offer.js +41 -0
  42. package/dist/cli/commands/launch/running.d.ts +45 -0
  43. package/dist/cli/commands/launch/running.js +218 -0
  44. package/dist/cli/commands/launch/summary.d.ts +8 -0
  45. package/dist/cli/commands/launch/summary.js +98 -0
  46. package/dist/cli/commands/maintenance/audit.d.ts +3 -0
  47. package/dist/cli/commands/maintenance/audit.js +58 -0
  48. package/dist/cli/commands/maintenance/clean.d.ts +2 -0
  49. package/dist/cli/commands/maintenance/clean.js +10 -0
  50. package/dist/cli/commands/maintenance/config.d.ts +2 -0
  51. package/dist/cli/commands/maintenance/config.js +145 -0
  52. package/dist/cli/commands/maintenance/doctor.d.ts +2 -0
  53. package/dist/cli/commands/maintenance/doctor.js +6 -0
  54. package/dist/cli/commands/maintenance/host-claude.d.ts +5 -0
  55. package/dist/cli/commands/maintenance/host-claude.js +14 -0
  56. package/dist/cli/commands/maintenance/index.d.ts +10 -0
  57. package/dist/cli/commands/maintenance/index.js +11 -0
  58. package/dist/cli/commands/maintenance/logs.d.ts +2 -0
  59. package/dist/cli/commands/maintenance/logs.js +24 -0
  60. package/dist/cli/commands/maintenance/migrate.d.ts +13 -0
  61. package/dist/cli/commands/maintenance/migrate.js +55 -0
  62. package/dist/cli/commands/maintenance/sync.d.ts +2 -0
  63. package/dist/cli/commands/maintenance/sync.js +12 -0
  64. package/dist/cli/commands/maintenance/update.d.ts +22 -0
  65. package/dist/cli/commands/maintenance/update.js +106 -0
  66. package/dist/cli/commands/maintenance/watch.d.ts +3 -0
  67. package/dist/cli/commands/maintenance/watch.js +10 -0
  68. package/dist/cli/commands/projects/describe-sessions.d.ts +3 -0
  69. package/dist/cli/commands/projects/describe-sessions.js +15 -0
  70. package/dist/cli/commands/projects/here.d.ts +40 -0
  71. package/dist/cli/commands/projects/here.js +162 -0
  72. package/dist/cli/commands/projects/index.d.ts +4 -0
  73. package/dist/cli/commands/projects/index.js +4 -0
  74. package/dist/cli/commands/projects/projects.d.ts +2 -0
  75. package/dist/cli/commands/projects/projects.js +153 -0
  76. package/dist/cli/commands/projects/restart.d.ts +5 -0
  77. package/dist/cli/commands/projects/restart.js +106 -0
  78. package/dist/cli/commands/registry.d.ts +3 -0
  79. package/dist/cli/commands/registry.js +38 -0
  80. package/dist/cli/commands/repair/checks.js +105 -29
  81. package/dist/cli/commands/repair/finders.d.ts +13 -10
  82. package/dist/cli/commands/repair/finders.js +63 -43
  83. package/dist/cli/commands/repair/index.d.ts +3 -6
  84. package/dist/cli/commands/repair/index.js +29 -36
  85. package/dist/cli/commands/repair/types.d.ts +2 -2
  86. package/dist/cli/commands/repair/types.js +7 -2
  87. package/dist/cli/commands/resume.d.ts +2 -0
  88. package/dist/cli/commands/resume.js +61 -0
  89. package/dist/cli/commands/sessions/attach.d.ts +2 -0
  90. package/dist/cli/commands/sessions/attach.js +44 -0
  91. package/dist/cli/commands/sessions/control.d.ts +4 -0
  92. package/dist/cli/commands/sessions/control.js +66 -0
  93. package/dist/cli/commands/sessions/exec.d.ts +6 -0
  94. package/dist/cli/commands/sessions/exec.js +72 -0
  95. package/dist/cli/commands/sessions/index.d.ts +6 -0
  96. package/dist/cli/commands/sessions/index.js +9 -0
  97. package/dist/cli/commands/sessions/list.d.ts +2 -0
  98. package/dist/cli/commands/sessions/list.js +45 -0
  99. package/dist/cli/commands/sessions/reopen.d.ts +36 -0
  100. package/dist/cli/commands/sessions/reopen.js +99 -0
  101. package/dist/cli/commands/sessions/status.d.ts +2 -0
  102. package/dist/cli/commands/sessions/status.js +93 -0
  103. package/dist/cli/commands/sessions/window.d.ts +3 -0
  104. package/dist/cli/commands/sessions/window.js +18 -0
  105. package/dist/cli/commands/setup/checks.d.ts +4 -4
  106. package/dist/cli/commands/setup/checks.js +36 -19
  107. package/dist/cli/commands/setup/facts.d.ts +6 -6
  108. package/dist/cli/commands/setup/facts.js +25 -23
  109. package/dist/cli/commands/setup/index.d.ts +1 -1
  110. package/dist/cli/commands/setup/index.js +24 -26
  111. package/dist/cli/commands/shared-use.d.ts +29 -0
  112. package/dist/cli/commands/shared-use.js +69 -0
  113. package/dist/cli/commands/user-config.d.ts +5 -5
  114. package/dist/cli/commands/user-config.js +14 -12
  115. package/dist/cli/history.d.ts +5 -4
  116. package/dist/cli/history.js +23 -11
  117. package/dist/cli/index.d.ts +4 -14
  118. package/dist/cli/index.js +39 -78
  119. package/dist/cli/manifest.d.ts +645 -10
  120. package/dist/cli/manifest.js +405 -56
  121. package/dist/cli/menu/apps.d.ts +27 -14
  122. package/dist/cli/menu/apps.js +107 -90
  123. package/dist/cli/menu/command-fields.d.ts +15 -0
  124. package/dist/cli/menu/command-fields.js +23 -0
  125. package/dist/cli/menu/command-form.d.ts +8 -5
  126. package/dist/cli/menu/command-form.js +142 -57
  127. package/dist/cli/menu/index.d.ts +2 -24
  128. package/dist/cli/menu/index.js +4 -178
  129. package/dist/cli/menu/menu.d.ts +18 -0
  130. package/dist/cli/menu/menu.js +170 -0
  131. package/dist/cli/menu/pages/accounts-page.d.ts +29 -0
  132. package/dist/cli/menu/pages/accounts-page.js +168 -0
  133. package/dist/cli/menu/pages/apps-page.d.ts +26 -0
  134. package/dist/cli/menu/pages/apps-page.js +75 -0
  135. package/dist/cli/menu/pages/list-page.d.ts +42 -0
  136. package/dist/cli/menu/pages/list-page.js +65 -0
  137. package/dist/cli/menu/pages/maintenance-page.d.ts +76 -0
  138. package/dist/cli/menu/pages/maintenance-page.js +483 -0
  139. package/dist/cli/menu/pages/sandbox-page.d.ts +32 -0
  140. package/dist/cli/menu/pages/sandbox-page.js +273 -0
  141. package/dist/cli/menu/pages/scopes.d.ts +9 -0
  142. package/dist/cli/menu/pages/scopes.js +15 -0
  143. package/dist/cli/menu/pages/sessions-page.d.ts +20 -0
  144. package/dist/cli/menu/pages/sessions-page.js +94 -0
  145. package/dist/cli/menu/pages/settings-page.d.ts +31 -0
  146. package/dist/cli/menu/pages/settings-page.js +207 -0
  147. package/dist/cli/menu/pages/start-page.d.ts +43 -0
  148. package/dist/cli/menu/pages/start-page.js +192 -0
  149. package/dist/cli/menu/settings/categories.d.ts +2 -2
  150. package/dist/cli/menu/settings/categories.js +130 -20
  151. package/dist/cli/menu/settings/collections/collection-editor.d.ts +23 -0
  152. package/dist/cli/menu/settings/collections/collection-editor.js +73 -0
  153. package/dist/cli/menu/settings/collections/map-editor.d.ts +10 -0
  154. package/dist/cli/menu/settings/collections/map-editor.js +34 -0
  155. package/dist/cli/menu/settings/collections/object-list-editor.d.ts +10 -0
  156. package/dist/cli/menu/settings/collections/object-list-editor.js +23 -0
  157. package/dist/cli/menu/settings/collections/object-map-editor.d.ts +10 -0
  158. package/dist/cli/menu/settings/collections/object-map-editor.js +35 -0
  159. package/dist/cli/menu/settings/collections/string-list-editor.d.ts +12 -0
  160. package/dist/cli/menu/settings/collections/string-list-editor.js +39 -0
  161. package/dist/cli/menu/settings/config-file.d.ts +11 -2
  162. package/dist/cli/menu/settings/config-file.js +60 -26
  163. package/dist/cli/menu/settings/draft.d.ts +26 -0
  164. package/dist/cli/menu/settings/draft.js +67 -0
  165. package/dist/cli/menu/settings/editor-actions.d.ts +1 -0
  166. package/dist/cli/menu/settings/editor-actions.js +1 -0
  167. package/dist/cli/menu/settings/format.d.ts +5 -0
  168. package/dist/cli/menu/settings/format.js +39 -0
  169. package/dist/cli/menu/settings/index.d.ts +2 -30
  170. package/dist/cli/menu/settings/index.js +1 -133
  171. package/dist/cli/menu/settings/object-editor.d.ts +12 -0
  172. package/dist/cli/menu/settings/object-editor.js +66 -0
  173. package/dist/cli/menu/settings/schema-node.d.ts +3 -1
  174. package/dist/cli/menu/settings/schema-node.js +71 -24
  175. package/dist/cli/menu/settings/value-editor.d.ts +19 -0
  176. package/dist/cli/menu/settings/value-editor.js +137 -0
  177. package/dist/cli/menu/several.d.ts +4 -4
  178. package/dist/cli/menu/several.js +61 -20
  179. package/dist/cli/menu/shell.d.ts +54 -0
  180. package/dist/cli/menu/shell.js +109 -0
  181. package/dist/cli/output/colors.d.ts +24 -0
  182. package/dist/cli/output/colors.js +60 -0
  183. package/dist/cli/output/index.d.ts +3 -0
  184. package/dist/cli/output/index.js +3 -0
  185. package/dist/cli/output/print.d.ts +5 -0
  186. package/dist/cli/output/print.js +14 -0
  187. package/dist/cli/output/progress.d.ts +24 -0
  188. package/dist/cli/output/progress.js +124 -0
  189. package/dist/cli/report.d.ts +2 -0
  190. package/dist/cli/report.js +20 -0
  191. package/dist/cli/services/accounts-service.d.ts +44 -0
  192. package/dist/cli/services/accounts-service.js +115 -0
  193. package/dist/cli/services/agent-commands-service.d.ts +22 -0
  194. package/dist/cli/services/agent-commands-service.js +44 -0
  195. package/dist/cli/services/data-service.d.ts +43 -0
  196. package/dist/cli/services/data-service.js +66 -0
  197. package/dist/cli/services/data-targets.d.ts +13 -0
  198. package/dist/cli/services/data-targets.js +67 -0
  199. package/dist/cli/services/databases-service.d.ts +27 -0
  200. package/dist/cli/services/databases-service.js +57 -0
  201. package/dist/cli/services/health-service.d.ts +28 -0
  202. package/dist/cli/services/health-service.js +120 -0
  203. package/dist/cli/services/index.d.ts +12 -0
  204. package/dist/cli/services/index.js +12 -0
  205. package/dist/cli/services/logs-service.d.ts +25 -0
  206. package/dist/cli/services/logs-service.js +54 -0
  207. package/dist/cli/services/migrate-service.d.ts +29 -0
  208. package/dist/cli/services/migrate-service.js +43 -0
  209. package/dist/cli/services/projects-service.d.ts +56 -0
  210. package/dist/cli/services/projects-service.js +111 -0
  211. package/dist/cli/services/sandbox-service.d.ts +78 -0
  212. package/dist/cli/services/sandbox-service.js +125 -0
  213. package/dist/cli/services/sessions-service.d.ts +42 -0
  214. package/dist/cli/services/sessions-service.js +81 -0
  215. package/dist/cli/services/update-service.d.ts +74 -0
  216. package/dist/cli/services/update-service.js +185 -0
  217. package/dist/cli/tui/app.d.ts +19 -16
  218. package/dist/cli/tui/app.js +65 -11
  219. package/dist/cli/tui/dialogs/confirm-screen.d.ts +20 -0
  220. package/dist/cli/tui/dialogs/confirm-screen.js +50 -0
  221. package/dist/cli/tui/dialogs/message-screen.d.ts +17 -0
  222. package/dist/cli/tui/dialogs/message-screen.js +55 -0
  223. package/dist/cli/tui/dialogs/overlay.d.ts +34 -0
  224. package/dist/cli/tui/dialogs/overlay.js +104 -0
  225. package/dist/cli/tui/dialogs/paragraphs.d.ts +2 -0
  226. package/dist/cli/tui/dialogs/paragraphs.js +5 -0
  227. package/dist/cli/tui/dialogs/text-screen.d.ts +26 -0
  228. package/dist/cli/tui/dialogs/text-screen.js +107 -0
  229. package/dist/cli/tui/frame.d.ts +13 -4
  230. package/dist/cli/tui/frame.js +13 -9
  231. package/dist/cli/tui/index.d.ts +11 -4
  232. package/dist/cli/tui/index.js +7 -2
  233. package/dist/cli/tui/key-bar.d.ts +5 -0
  234. package/dist/cli/tui/key-bar.js +22 -0
  235. package/dist/cli/tui/list/list-screen.d.ts +38 -0
  236. package/dist/cli/tui/list/list-screen.js +402 -0
  237. package/dist/cli/tui/list/list-types.d.ts +84 -0
  238. package/dist/cli/tui/screen.d.ts +14 -0
  239. package/dist/cli/tui/tab-bar.d.ts +9 -0
  240. package/dist/cli/tui/tab-bar.js +33 -0
  241. package/dist/cli/tui/terminal.js +34 -10
  242. package/dist/cli/tui/text.d.ts +2 -1
  243. package/dist/cli/tui/text.js +40 -7
  244. package/dist/cli/tui/theme.js +27 -9
  245. package/dist/cli/validate.d.ts +8 -8
  246. package/dist/cli/validate.js +32 -21
  247. package/dist/core/config/defaults.d.ts +2 -0
  248. package/dist/core/config/defaults.js +273 -0
  249. package/dist/core/config/index.d.ts +2 -0
  250. package/dist/core/config/index.js +3 -0
  251. package/dist/core/config/loader.d.ts +20 -0
  252. package/dist/core/config/loader.js +88 -0
  253. package/dist/core/detect/databases.d.ts +15 -0
  254. package/dist/core/detect/databases.js +235 -0
  255. package/dist/core/detect/index.d.ts +4 -0
  256. package/dist/core/detect/index.js +4 -0
  257. package/dist/core/detect/pwsh.d.ts +18 -0
  258. package/dist/core/detect/pwsh.js +125 -0
  259. package/dist/core/detect/toolchains.d.ts +33 -0
  260. package/dist/core/detect/toolchains.js +104 -0
  261. package/dist/core/detect/versions.d.ts +55 -0
  262. package/dist/core/detect/versions.js +107 -0
  263. package/dist/core/disk.d.ts +14 -6
  264. package/dist/core/disk.js +62 -13
  265. package/dist/core/local-config/boot-wants.d.ts +45 -0
  266. package/dist/core/local-config/boot-wants.js +120 -0
  267. package/dist/core/local-config/file.d.ts +3 -0
  268. package/dist/core/local-config/file.js +16 -0
  269. package/dist/core/local-config/index.d.ts +5 -0
  270. package/dist/core/local-config/index.js +7 -0
  271. package/dist/core/local-config/overrides.d.ts +35 -0
  272. package/dist/core/local-config/overrides.js +137 -0
  273. package/dist/core/local-config/policy.d.ts +19 -0
  274. package/dist/core/local-config/policy.js +47 -0
  275. package/dist/core/local-config/trust.d.ts +13 -0
  276. package/dist/core/local-config/trust.js +51 -0
  277. package/dist/core/package-info.d.ts +4 -0
  278. package/dist/core/package-info.js +13 -0
  279. package/dist/core/prompt.d.ts +2 -2
  280. package/dist/core/prompt.js +6 -5
  281. package/dist/core/run/guest-workspace.d.ts +27 -0
  282. package/dist/core/run/guest-workspace.js +50 -0
  283. package/dist/core/run/index.d.ts +3 -0
  284. package/dist/core/run/index.js +3 -0
  285. package/dist/core/run/resolve-run.d.ts +6 -0
  286. package/dist/core/run/resolve-run.js +205 -0
  287. package/dist/core/run/versions.d.ts +13 -0
  288. package/dist/core/run/versions.js +65 -0
  289. package/dist/core/safe-paths.d.ts +6 -3
  290. package/dist/core/safe-paths.js +25 -10
  291. package/dist/core/schema/apps.d.ts +4 -4
  292. package/dist/core/schema/apps.js +55 -21
  293. package/dist/core/schema/common.d.ts +14 -11
  294. package/dist/core/schema/common.js +23 -11
  295. package/dist/core/schema/config.d.ts +44 -20
  296. package/dist/core/schema/config.js +81 -53
  297. package/dist/core/schema/databases.d.ts +4 -3
  298. package/dist/core/schema/databases.js +18 -12
  299. package/dist/core/schema/harness.d.ts +15 -1
  300. package/dist/core/schema/harness.js +42 -7
  301. package/dist/core/schema/index.d.ts +6 -0
  302. package/dist/core/schema/index.js +8 -0
  303. package/dist/core/schema/json-schema.d.ts +2 -2
  304. package/dist/core/schema/json-schema.js +20 -13
  305. package/dist/core/schema/profile.d.ts +4 -4
  306. package/dist/core/schema/profile.js +37 -17
  307. package/dist/core/schema/projects.d.ts +1 -1
  308. package/dist/core/schema/projects.js +16 -6
  309. package/dist/core/schema/resume.d.ts +11 -0
  310. package/dist/core/schema/resume.js +12 -0
  311. package/dist/core/schema/sandbox.d.ts +14 -11
  312. package/dist/core/schema/sandbox.js +106 -37
  313. package/dist/core/schema/toolchains.d.ts +9 -4
  314. package/dist/core/schema/toolchains.js +88 -36
  315. package/dist/core/types.d.ts +39 -12
  316. package/dist/core/util/errors.d.ts +8 -0
  317. package/dist/core/util/errors.js +16 -0
  318. package/dist/core/util/fs.d.ts +8 -0
  319. package/dist/core/util/fs.js +44 -0
  320. package/dist/core/util/index.d.ts +7 -0
  321. package/dist/core/util/index.js +7 -0
  322. package/dist/core/util/jsonc.d.ts +6 -0
  323. package/dist/core/util/jsonc.js +30 -0
  324. package/dist/core/util/links.d.ts +10 -0
  325. package/dist/core/util/links.js +39 -0
  326. package/dist/core/util/paths.d.ts +9 -0
  327. package/dist/core/util/paths.js +39 -0
  328. package/dist/core/util/process.d.ts +11 -0
  329. package/dist/core/util/process.js +13 -0
  330. package/dist/core/util/text.d.ts +10 -0
  331. package/dist/core/util/text.js +21 -0
  332. package/dist/guest/agents/agent-installer.d.ts +22 -0
  333. package/dist/guest/agents/agent-installer.js +124 -0
  334. package/dist/guest/agents/profile-links.d.ts +5 -0
  335. package/dist/guest/agents/profile-links.js +27 -0
  336. package/dist/guest/apps/after-install.d.ts +3 -0
  337. package/dist/guest/apps/after-install.js +47 -0
  338. package/dist/guest/apps/app-installer.d.ts +22 -0
  339. package/dist/guest/apps/app-installer.js +116 -0
  340. package/dist/guest/apps/find-exe.d.ts +5 -0
  341. package/dist/guest/apps/find-exe.js +41 -0
  342. package/dist/guest/apps/index.d.ts +3 -10
  343. package/dist/guest/apps/index.js +6 -206
  344. package/dist/guest/apps/resolvers.js +37 -9
  345. package/dist/guest/apps/shortcuts.d.ts +6 -0
  346. package/dist/guest/apps/shortcuts.js +19 -0
  347. package/dist/guest/apps/sources.d.ts +4 -0
  348. package/dist/guest/apps/sources.js +17 -0
  349. package/dist/guest/apps/unpack.d.ts +3 -0
  350. package/dist/guest/apps/unpack.js +47 -0
  351. package/dist/guest/audit/parse.d.ts +7 -0
  352. package/dist/guest/audit/parse.js +60 -0
  353. package/dist/guest/audit/process-audit.d.ts +6 -0
  354. package/dist/guest/audit/process-audit.js +72 -0
  355. package/dist/guest/boot/boot-env.d.ts +4 -0
  356. package/dist/guest/boot/boot-env.js +27 -0
  357. package/dist/guest/boot/boot.d.ts +18 -0
  358. package/dist/guest/boot/boot.js +242 -0
  359. package/dist/guest/boot/guide.d.ts +16 -0
  360. package/dist/guest/boot/guide.js +98 -0
  361. package/dist/guest/boot/project-env.d.ts +20 -0
  362. package/dist/guest/boot/project-env.js +28 -0
  363. package/dist/guest/boot/project-status.d.ts +5 -0
  364. package/dist/guest/boot/project-status.js +30 -0
  365. package/dist/guest/daemon/daemon.d.ts +7 -0
  366. package/dist/guest/daemon/daemon.js +57 -0
  367. package/dist/guest/daemon/exec.d.ts +3 -3
  368. package/dist/guest/daemon/exec.js +27 -11
  369. package/dist/guest/daemon/idle-shutdown.d.ts +8 -0
  370. package/dist/guest/daemon/idle-shutdown.js +34 -0
  371. package/dist/guest/daemon/project-provisioner.d.ts +23 -0
  372. package/dist/guest/daemon/project-provisioner.js +180 -0
  373. package/dist/guest/daemon/relays.d.ts +1 -1
  374. package/dist/guest/daemon/relays.js +7 -5
  375. package/dist/guest/daemon/sessions.d.ts +35 -0
  376. package/dist/guest/daemon/sessions.js +264 -0
  377. package/dist/guest/daemon/state.d.ts +9 -15
  378. package/dist/guest/daemon/state.js +40 -23
  379. package/dist/guest/databases/database-server.d.ts +13 -0
  380. package/dist/guest/databases/database-server.js +35 -0
  381. package/dist/guest/databases/dynamodb.d.ts +12 -0
  382. package/dist/guest/databases/dynamodb.js +81 -0
  383. package/dist/guest/databases/index.d.ts +2 -0
  384. package/dist/guest/databases/index.js +2 -0
  385. package/dist/guest/databases/mongodb.d.ts +7 -0
  386. package/dist/guest/databases/mongodb.js +46 -0
  387. package/dist/guest/databases/mysql.d.ts +7 -0
  388. package/dist/guest/databases/mysql.js +59 -0
  389. package/dist/guest/databases/names.d.ts +5 -0
  390. package/dist/guest/databases/names.js +8 -0
  391. package/dist/guest/databases/postgres.d.ts +9 -0
  392. package/dist/guest/databases/postgres.js +85 -0
  393. package/dist/guest/databases/redis.d.ts +7 -0
  394. package/dist/guest/databases/redis.js +25 -0
  395. package/dist/guest/databases/registry.d.ts +5 -0
  396. package/dist/guest/databases/registry.js +51 -0
  397. package/dist/guest/databases/sbx-db.d.ts +1 -0
  398. package/dist/guest/databases/sbx-db.js +75 -0
  399. package/dist/guest/databases/server.d.ts +14 -0
  400. package/dist/guest/databases/server.js +57 -0
  401. package/dist/guest/entries/daemon.js +16 -0
  402. package/dist/guest/entries/db.js +12 -0
  403. package/dist/guest/entries/gitguard.js +20 -0
  404. package/dist/guest/entries/main.d.ts +1 -0
  405. package/dist/guest/entries/main.js +24 -0
  406. package/dist/guest/entries/netproxy.d.ts +1 -0
  407. package/dist/guest/entries/netproxy.js +7 -0
  408. package/dist/guest/entries/view.d.ts +1 -0
  409. package/dist/guest/entries/view.js +11 -0
  410. package/dist/guest/git/decision.d.ts +7 -0
  411. package/dist/guest/git/decision.js +83 -0
  412. package/dist/guest/network/addresses.d.ts +2 -0
  413. package/dist/guest/network/addresses.js +8 -0
  414. package/dist/guest/network/allow-only.d.ts +9 -0
  415. package/dist/guest/network/allow-only.js +84 -0
  416. package/dist/guest/network/firewall.d.ts +9 -0
  417. package/dist/guest/network/firewall.js +187 -0
  418. package/dist/guest/network/proxy-server.d.ts +2 -0
  419. package/dist/guest/network/proxy-server.js +119 -0
  420. package/dist/guest/runtime/csc.d.ts +13 -0
  421. package/dist/guest/runtime/csc.js +48 -0
  422. package/dist/guest/runtime/fs.d.ts +2 -0
  423. package/dist/guest/runtime/fs.js +8 -0
  424. package/dist/guest/runtime/log.d.ts +3 -0
  425. package/dist/guest/runtime/log.js +22 -0
  426. package/dist/guest/runtime/paths.d.ts +13 -0
  427. package/dist/guest/runtime/paths.js +14 -0
  428. package/dist/guest/runtime/ports.d.ts +8 -0
  429. package/dist/guest/runtime/ports.js +34 -0
  430. package/dist/guest/runtime/process.d.ts +23 -0
  431. package/dist/guest/runtime/process.js +83 -0
  432. package/dist/guest/runtime/project-context.d.ts +7 -0
  433. package/dist/guest/runtime/project-context.js +16 -0
  434. package/dist/guest/runtime/session.d.ts +5 -0
  435. package/dist/guest/runtime/session.js +10 -0
  436. package/dist/guest/runtime/status.d.ts +7 -0
  437. package/dist/guest/runtime/status.js +57 -0
  438. package/dist/guest/sessions/cmdline.d.ts +12 -0
  439. package/dist/guest/sessions/cmdline.js +33 -0
  440. package/dist/guest/sessions/conversation.d.ts +5 -0
  441. package/dist/guest/sessions/conversation.js +38 -0
  442. package/dist/guest/sessions/pty-host.d.ts +22 -0
  443. package/dist/guest/sessions/pty-host.js +60 -0
  444. package/dist/guest/sessions/viewer.d.ts +1 -0
  445. package/dist/guest/sessions/viewer.js +39 -0
  446. package/dist/guest/setup/claude-mem.d.ts +10 -0
  447. package/dist/guest/setup/claude-mem.js +135 -0
  448. package/dist/guest/setup/claude-profile.d.ts +7 -0
  449. package/dist/guest/setup/claude-profile.js +89 -0
  450. package/dist/guest/setup/desktop.d.ts +2 -0
  451. package/dist/guest/setup/desktop.js +23 -0
  452. package/dist/guest/setup/environment.d.ts +3 -3
  453. package/dist/guest/setup/environment.js +42 -26
  454. package/dist/guest/setup/git-identity.d.ts +5 -0
  455. package/dist/guest/setup/git-identity.js +34 -0
  456. package/dist/guest/setup/git-rules.d.ts +2 -0
  457. package/dist/guest/setup/git-rules.js +50 -0
  458. package/dist/guest/setup/hooks.d.ts +3 -3
  459. package/dist/guest/setup/hooks.js +28 -9
  460. package/dist/guest/setup/managed-policy.d.ts +3 -0
  461. package/dist/guest/setup/managed-policy.js +20 -0
  462. package/dist/guest/toolchains/catalogue.d.ts +4 -4
  463. package/dist/guest/toolchains/catalogue.js +30 -7
  464. package/dist/guest/toolchains/detect.d.ts +12 -0
  465. package/dist/guest/toolchains/detect.js +54 -0
  466. package/dist/guest/toolchains/index.d.ts +3 -17
  467. package/dist/guest/toolchains/index.js +1 -106
  468. package/dist/guest/toolchains/install.d.ts +20 -0
  469. package/dist/guest/toolchains/install.js +29 -0
  470. package/dist/guest/toolchains/languages/go.d.ts +3 -0
  471. package/dist/guest/toolchains/languages/go.js +51 -0
  472. package/dist/guest/toolchains/languages/java.d.ts +8 -0
  473. package/dist/guest/toolchains/languages/java.js +135 -0
  474. package/dist/guest/toolchains/languages/node.d.ts +3 -0
  475. package/dist/guest/toolchains/languages/node.js +185 -0
  476. package/dist/guest/toolchains/languages/php.d.ts +3 -0
  477. package/dist/guest/toolchains/languages/php.js +96 -0
  478. package/dist/guest/toolchains/languages/python-tools.d.ts +3 -0
  479. package/dist/guest/toolchains/languages/python-tools.js +12 -0
  480. package/dist/guest/toolchains/languages/python.d.ts +3 -0
  481. package/dist/guest/toolchains/languages/python.js +91 -0
  482. package/dist/guest/toolchains/languages/ruby.d.ts +3 -0
  483. package/dist/guest/toolchains/languages/ruby.js +65 -0
  484. package/dist/guest/toolchains/leftovers.d.ts +1 -1
  485. package/dist/guest/toolchains/leftovers.js +13 -11
  486. package/dist/guest/toolchains/managers.d.ts +6 -6
  487. package/dist/guest/toolchains/managers.js +38 -17
  488. package/dist/guest/toolchains/native/binstall.d.ts +3 -2
  489. package/dist/guest/toolchains/native/binstall.js +20 -8
  490. package/dist/guest/toolchains/native/cpp.d.ts +2 -2
  491. package/dist/guest/toolchains/native/cpp.js +23 -8
  492. package/dist/guest/toolchains/native/dotnet.d.ts +5 -3
  493. package/dist/guest/toolchains/native/dotnet.js +72 -24
  494. package/dist/guest/toolchains/native/mesa.d.ts +2 -2
  495. package/dist/guest/toolchains/native/mesa.js +28 -11
  496. package/dist/guest/toolchains/native/msvc/environment.d.ts +4 -4
  497. package/dist/guest/toolchains/native/msvc/environment.js +30 -16
  498. package/dist/guest/toolchains/native/msvc/index.d.ts +3 -3
  499. package/dist/guest/toolchains/native/msvc/index.js +10 -8
  500. package/dist/guest/toolchains/native/msvc/packages.d.ts +1 -1
  501. package/dist/guest/toolchains/native/msvc/packages.js +69 -23
  502. package/dist/guest/toolchains/native/msvc/tree.d.ts +6 -6
  503. package/dist/guest/toolchains/native/msvc/tree.js +15 -9
  504. package/dist/guest/toolchains/native/rust-extras.d.ts +23 -0
  505. package/dist/guest/toolchains/native/rust-extras.js +100 -0
  506. package/dist/guest/toolchains/native/rust.d.ts +2 -2
  507. package/dist/guest/toolchains/native/rust.js +41 -10
  508. package/dist/guest/toolchains/native/vcruntime.d.ts +7 -0
  509. package/dist/guest/toolchains/native/vcruntime.js +47 -0
  510. package/dist/guest/toolchains/package-ledger.d.ts +17 -0
  511. package/dist/guest/toolchains/package-ledger.js +54 -0
  512. package/dist/guest/toolchains/plan.d.ts +3 -24
  513. package/dist/guest/toolchains/plan.js +104 -111
  514. package/dist/guest/toolchains/runtimes.d.ts +6 -6
  515. package/dist/guest/toolchains/runtimes.js +31 -13
  516. package/dist/guest/toolchains/scheduler.d.ts +22 -0
  517. package/dist/guest/toolchains/scheduler.js +123 -0
  518. package/dist/guest/toolchains/setup.d.ts +10 -0
  519. package/dist/guest/toolchains/setup.js +22 -0
  520. package/dist/guest/toolchains/state-file.d.ts +3 -0
  521. package/dist/guest/toolchains/state-file.js +10 -0
  522. package/dist/guest/toolchains/step.d.ts +24 -0
  523. package/dist/guest/toolchains/step.js +1 -0
  524. package/dist/guest/toolchains/tool-env.d.ts +12 -0
  525. package/dist/guest/toolchains/tool-env.js +16 -0
  526. package/dist/guest/toolchains/tools/cli.d.ts +10 -0
  527. package/dist/guest/toolchains/tools/cli.js +92 -0
  528. package/dist/guest/toolchains/tools/git.d.ts +3 -0
  529. package/dist/guest/toolchains/tools/git.js +144 -0
  530. package/dist/guest/toolchains/tools/pwsh.d.ts +4 -0
  531. package/dist/guest/toolchains/tools/pwsh.js +21 -0
  532. package/dist/guest/toolchains/tools/vscode-profile.d.ts +30 -0
  533. package/dist/guest/toolchains/tools/vscode-profile.js +85 -0
  534. package/dist/guest/toolchains/tools/vscode.d.ts +19 -0
  535. package/dist/guest/toolchains/tools/vscode.js +180 -0
  536. package/dist/guest/toolchains/version-cache.d.ts +16 -0
  537. package/dist/guest/toolchains/version-cache.js +67 -0
  538. package/dist/host/agent-commands/commands.d.ts +13 -0
  539. package/dist/host/agent-commands/commands.js +37 -0
  540. package/dist/host/agent-commands/forwarders.d.ts +7 -0
  541. package/dist/host/agent-commands/forwarders.js +33 -0
  542. package/dist/host/agent-commands/index.d.ts +4 -0
  543. package/dist/host/agent-commands/index.js +4 -0
  544. package/dist/host/agent-commands/reconcile.d.ts +12 -0
  545. package/dist/host/agent-commands/reconcile.js +69 -0
  546. package/dist/host/agent-commands/user-path.d.ts +5 -0
  547. package/dist/host/agent-commands/user-path.js +25 -0
  548. package/dist/host/audit/collect.d.ts +4 -4
  549. package/dist/host/audit/collect.js +63 -22
  550. package/dist/host/audit/log.d.ts +3 -3
  551. package/dist/host/audit/log.js +26 -10
  552. package/dist/host/channel/attach.d.ts +17 -0
  553. package/dist/host/channel/attach.js +88 -0
  554. package/dist/host/channel/channel.d.ts +53 -0
  555. package/dist/host/channel/channel.js +198 -0
  556. package/dist/host/channel/index.d.ts +2 -0
  557. package/dist/host/channel/index.js +2 -0
  558. package/dist/host/guard/agent-files.d.ts +7 -0
  559. package/dist/host/guard/agent-files.js +103 -0
  560. package/dist/host/guard/commands.d.ts +10 -0
  561. package/dist/host/guard/commands.js +123 -0
  562. package/dist/host/guard/file-hash.d.ts +4 -0
  563. package/dist/host/guard/file-hash.js +37 -0
  564. package/dist/host/guard/git-config.d.ts +5 -0
  565. package/dist/host/guard/git-config.js +62 -0
  566. package/dist/host/guard/git-dirs.d.ts +12 -0
  567. package/dist/host/guard/git-dirs.js +53 -0
  568. package/dist/host/guard/index.d.ts +5 -0
  569. package/dist/host/guard/index.js +4 -0
  570. package/dist/host/guard/mark-of-the-web.d.ts +8 -0
  571. package/dist/host/guard/mark-of-the-web.js +74 -0
  572. package/dist/host/guard/nested-repos.d.ts +14 -0
  573. package/dist/host/guard/nested-repos.js +88 -0
  574. package/dist/host/guard/quarantine.d.ts +3 -0
  575. package/dist/host/guard/quarantine.js +24 -0
  576. package/dist/host/guard/repo-guard.d.ts +10 -0
  577. package/dist/host/guard/repo-guard.js +36 -0
  578. package/dist/host/guard/store.d.ts +40 -0
  579. package/dist/host/guard/store.js +145 -0
  580. package/dist/host/guard/types.d.ts +27 -0
  581. package/dist/host/guard/types.js +3 -0
  582. package/dist/host/guard/watch-state.d.ts +9 -0
  583. package/dist/host/guard/watch-state.js +26 -0
  584. package/dist/host/install/index.d.ts +4 -0
  585. package/dist/host/install/index.js +4 -0
  586. package/dist/host/install/install-record.d.ts +19 -0
  587. package/dist/host/install/install-record.js +28 -0
  588. package/dist/host/install/layout.d.ts +29 -0
  589. package/dist/host/install/layout.js +111 -0
  590. package/dist/host/install/scheduled-task.d.ts +10 -0
  591. package/dist/host/install/scheduled-task.js +40 -0
  592. package/dist/host/install/shims.d.ts +10 -0
  593. package/dist/host/install/shims.js +55 -0
  594. package/dist/host/launch/boot-projects.d.ts +17 -0
  595. package/dist/host/launch/boot-projects.js +71 -0
  596. package/dist/host/launch/database-plan.d.ts +12 -0
  597. package/dist/host/launch/database-plan.js +63 -0
  598. package/dist/host/launch/generate.d.ts +4 -0
  599. package/dist/host/launch/generate.js +77 -0
  600. package/dist/host/launch/index.d.ts +10 -0
  601. package/dist/host/launch/index.js +10 -0
  602. package/dist/host/launch/mappings.d.ts +5 -5
  603. package/dist/host/launch/mappings.js +41 -26
  604. package/dist/host/launch/pc-scan.d.ts +5 -0
  605. package/dist/host/launch/pc-scan.js +51 -0
  606. package/dist/host/launch/project-scan.d.ts +9 -0
  607. package/dist/host/launch/project-scan.js +112 -0
  608. package/dist/host/launch/session-file.d.ts +23 -0
  609. package/dist/host/launch/session-file.js +75 -0
  610. package/dist/host/launch/stage.d.ts +5 -5
  611. package/dist/host/launch/stage.js +14 -13
  612. package/dist/host/launch/toolchains.d.ts +4 -0
  613. package/dist/host/launch/toolchains.js +21 -0
  614. package/dist/host/launch/wsb-file.d.ts +12 -0
  615. package/dist/host/launch/wsb-file.js +56 -0
  616. package/dist/host/life/crash-report.d.ts +10 -0
  617. package/dist/host/life/crash-report.js +89 -0
  618. package/dist/host/life/index.d.ts +7 -0
  619. package/dist/host/life/index.js +7 -0
  620. package/dist/host/life/keep-awake.d.ts +11 -0
  621. package/dist/host/life/keep-awake.js +32 -0
  622. package/dist/host/life/life-record.d.ts +48 -0
  623. package/dist/host/life/life-record.js +75 -0
  624. package/dist/host/life/session-ledger.d.ts +65 -0
  625. package/dist/host/life/session-ledger.js +163 -0
  626. package/dist/host/life/stop-events.d.ts +27 -0
  627. package/dist/host/life/stop-events.js +98 -0
  628. package/dist/host/life/stop-warning.d.ts +4 -0
  629. package/dist/host/life/stop-warning.js +25 -0
  630. package/dist/host/life/windows-update.d.ts +3 -0
  631. package/dist/host/life/windows-update.js +13 -0
  632. package/dist/host/migrate/backup.d.ts +15 -0
  633. package/dist/host/migrate/backup.js +92 -0
  634. package/dist/host/migrate/index.d.ts +5 -0
  635. package/dist/host/migrate/index.js +4 -0
  636. package/dist/host/migrate/marker.d.ts +21 -0
  637. package/dist/host/migrate/marker.js +49 -0
  638. package/dist/host/migrate/migration.d.ts +26 -0
  639. package/dist/host/migrate/migration.js +3 -0
  640. package/dist/host/migrate/migrations/config-file.d.ts +8 -0
  641. package/dist/host/migrate/migrations/config-file.js +28 -0
  642. package/dist/host/migrate/migrations/follow-machine-storage.d.ts +2 -0
  643. package/dist/host/migrate/migrations/follow-machine-storage.js +36 -0
  644. package/dist/host/migrate/migrations/unpin-config-defaults.d.ts +2 -0
  645. package/dist/host/migrate/migrations/unpin-config-defaults.js +41 -0
  646. package/dist/host/migrate/registry.d.ts +2 -0
  647. package/dist/host/migrate/registry.js +3 -0
  648. package/dist/host/migrate/runner.d.ts +21 -0
  649. package/dist/host/migrate/runner.js +67 -0
  650. package/dist/host/migrate/snapshots.d.ts +6 -0
  651. package/dist/host/migrate/snapshots.js +2200 -0
  652. package/dist/host/native.d.ts +9 -0
  653. package/dist/host/native.js +61 -0
  654. package/dist/host/network/index.d.ts +1 -0
  655. package/dist/host/network/index.js +1 -0
  656. package/dist/host/network/port-forward.d.ts +8 -0
  657. package/dist/host/network/port-forward.js +49 -0
  658. package/dist/host/profile/accounts.d.ts +38 -0
  659. package/dist/host/profile/accounts.js +159 -0
  660. package/dist/host/profile/agent-accounts.d.ts +29 -0
  661. package/dist/host/profile/agent-accounts.js +169 -0
  662. package/dist/host/profile/claude-login.d.ts +22 -0
  663. package/dist/host/profile/claude-login.js +57 -0
  664. package/dist/host/profile/claude-profile.d.ts +15 -0
  665. package/dist/host/profile/claude-profile.js +117 -0
  666. package/dist/host/profile/index.d.ts +8 -0
  667. package/dist/host/profile/index.js +8 -0
  668. package/dist/host/profile/personalize.d.ts +2 -0
  669. package/dist/host/profile/personalize.js +130 -0
  670. package/dist/host/profile/reg-file.d.ts +8 -0
  671. package/dist/host/profile/reg-file.js +45 -0
  672. package/dist/host/profile/secret-files.d.ts +2 -0
  673. package/dist/host/profile/secret-files.js +25 -0
  674. package/dist/host/profile/secret-patterns.d.ts +6 -0
  675. package/dist/host/profile/secret-patterns.js +128 -0
  676. package/dist/host/profile/secrets.d.ts +12 -0
  677. package/dist/host/profile/secrets.js +100 -0
  678. package/dist/host/projects/index.d.ts +4 -0
  679. package/dist/host/projects/index.js +4 -0
  680. package/dist/host/projects/join.d.ts +38 -0
  681. package/dist/host/projects/join.js +119 -0
  682. package/dist/host/projects/known.d.ts +28 -0
  683. package/dist/host/projects/known.js +55 -0
  684. package/dist/host/projects/mapper.d.ts +29 -0
  685. package/dist/host/projects/mapper.js +88 -0
  686. package/dist/host/projects/registry.d.ts +94 -0
  687. package/dist/host/projects/registry.js +164 -0
  688. package/dist/host/sandbox/doctor.d.ts +2 -0
  689. package/dist/host/sandbox/doctor.js +42 -0
  690. package/dist/host/sandbox/host-claude.d.ts +4 -0
  691. package/dist/host/sandbox/host-claude.js +47 -0
  692. package/dist/host/sandbox/index.d.ts +6 -0
  693. package/dist/host/sandbox/index.js +6 -0
  694. package/dist/host/sandbox/platform.d.ts +16 -0
  695. package/dist/host/sandbox/platform.js +72 -0
  696. package/dist/host/sandbox/probe.d.ts +3 -0
  697. package/dist/host/sandbox/probe.js +47 -0
  698. package/dist/host/sandbox/window.d.ts +4 -0
  699. package/dist/host/sandbox/window.js +54 -0
  700. package/dist/host/sandbox/wsb-cli.d.ts +37 -0
  701. package/dist/host/sandbox/wsb-cli.js +136 -0
  702. package/dist/host/sharing/acl.d.ts +30 -0
  703. package/dist/host/sharing/acl.js +65 -0
  704. package/dist/host/sharing/active-record.d.ts +27 -0
  705. package/dist/host/sharing/active-record.js +70 -0
  706. package/dist/host/sharing/borrow.d.ts +11 -0
  707. package/dist/host/sharing/borrow.js +20 -0
  708. package/dist/host/sharing/current.d.ts +11 -0
  709. package/dist/host/sharing/current.js +37 -0
  710. package/dist/host/sharing/index.d.ts +8 -0
  711. package/dist/host/sharing/index.js +10 -0
  712. package/dist/host/sharing/lifecycle.d.ts +26 -0
  713. package/dist/host/sharing/lifecycle.js +79 -0
  714. package/dist/host/sharing/machine-paths.d.ts +6 -0
  715. package/dist/host/sharing/machine-paths.js +13 -0
  716. package/dist/host/sharing/owner.d.ts +28 -0
  717. package/dist/host/sharing/owner.js +73 -0
  718. package/dist/host/sharing/rules.d.ts +39 -0
  719. package/dist/host/sharing/rules.js +60 -0
  720. package/dist/host/storage/cleanup.d.ts +24 -0
  721. package/dist/host/storage/cleanup.js +75 -0
  722. package/dist/host/storage/index.d.ts +2 -0
  723. package/dist/host/storage/index.js +2 -0
  724. package/dist/host/storage/state-files.d.ts +4 -0
  725. package/dist/host/storage/state-files.js +10 -0
  726. package/dist/host/test-guard.d.ts +2 -2
  727. package/dist/host/test-guard.js +7 -6
  728. package/dist/host/tools/conpty.d.ts +8 -0
  729. package/dist/host/tools/conpty.js +60 -0
  730. package/dist/host/tools/index.d.ts +2 -0
  731. package/dist/host/tools/index.js +2 -0
  732. package/dist/host/tools/windows-terminal.d.ts +32 -0
  733. package/dist/host/tools/windows-terminal.js +154 -0
  734. package/dist/host/update/decision.d.ts +29 -0
  735. package/dist/host/update/decision.js +32 -0
  736. package/dist/host/update/index.d.ts +6 -0
  737. package/dist/host/update/index.js +6 -0
  738. package/dist/host/update/notice.d.ts +11 -0
  739. package/dist/host/update/notice.js +28 -0
  740. package/dist/host/update/release-source.d.ts +32 -0
  741. package/dist/host/update/release-source.js +79 -0
  742. package/dist/host/update/update-lock.d.ts +7 -0
  743. package/dist/host/update/update-lock.js +48 -0
  744. package/dist/host/update/update-state.d.ts +24 -0
  745. package/dist/host/update/update-state.js +24 -0
  746. package/dist/host/update/updater.d.ts +62 -0
  747. package/dist/host/update/updater.js +241 -0
  748. package/dist/host/workspace-view/active-views.d.ts +3 -0
  749. package/dist/host/workspace-view/active-views.js +26 -0
  750. package/dist/host/workspace-view/index.d.ts +2 -18
  751. package/dist/host/workspace-view/index.js +2 -49
  752. package/dist/host/workspace-view/plan.d.ts +16 -0
  753. package/dist/host/workspace-view/plan.js +52 -0
  754. package/dist/host/workspace-view/rules.d.ts +3 -1
  755. package/dist/host/workspace-view/rules.js +13 -4
  756. package/dist/host/workspace-view/view-state.d.ts +10 -0
  757. package/dist/host/workspace-view/view-state.js +31 -0
  758. package/dist/host/workspace-view/view.d.ts +1 -0
  759. package/dist/host/workspace-view/view.js +51 -55
  760. package/dist/runtime/daemon.js +4924 -2311
  761. package/dist/runtime/db.js +2303 -898
  762. package/dist/runtime/gitguard.js +31 -13
  763. package/dist/runtime/main.js +5129 -2490
  764. package/dist/runtime/netproxy.js +1741 -428
  765. package/dist/runtime/view.js +1542 -558
  766. package/dist/selftest/accounts.test.d.ts +1 -1
  767. package/dist/selftest/accounts.test.js +24 -21
  768. package/dist/selftest/agent-commands.test.d.ts +1 -1
  769. package/dist/selftest/agent-commands.test.js +16 -12
  770. package/dist/selftest/audit.test.d.ts +1 -1
  771. package/dist/selftest/audit.test.js +46 -13
  772. package/dist/selftest/channel.test.d.ts +1 -1
  773. package/dist/selftest/channel.test.js +113 -60
  774. package/dist/selftest/cli.test.d.ts +1 -1
  775. package/dist/selftest/cli.test.js +95 -84
  776. package/dist/selftest/cmdline.test.d.ts +1 -1
  777. package/dist/selftest/cmdline.test.js +40 -10
  778. package/dist/selftest/config.test.d.ts +1 -1
  779. package/dist/selftest/config.test.js +12 -5
  780. package/dist/selftest/data.test.d.ts +1 -1
  781. package/dist/selftest/data.test.js +71 -24
  782. package/dist/selftest/detect.test.d.ts +1 -1
  783. package/dist/selftest/detect.test.js +56 -28
  784. package/dist/selftest/generate.test.d.ts +1 -1
  785. package/dist/selftest/generate.test.js +58 -32
  786. package/dist/selftest/git-access.test.d.ts +1 -1
  787. package/dist/selftest/git-access.test.js +44 -5
  788. package/dist/selftest/guest-boot.test.d.ts +1 -1
  789. package/dist/selftest/guest-boot.test.js +61 -41
  790. package/dist/selftest/host-sim.test.d.ts +1 -1
  791. package/dist/selftest/host-sim.test.js +30 -3
  792. package/dist/selftest/hostile-input.test.d.ts +1 -1
  793. package/dist/selftest/hostile-input.test.js +7 -5
  794. package/dist/selftest/index.d.ts +4 -4
  795. package/dist/selftest/index.js +109 -25
  796. package/dist/selftest/install.test.d.ts +2 -0
  797. package/dist/selftest/install.test.js +49 -0
  798. package/dist/selftest/layout.test.d.ts +2 -0
  799. package/dist/selftest/layout.test.js +131 -0
  800. package/dist/selftest/links.test.d.ts +1 -1
  801. package/dist/selftest/links.test.js +16 -11
  802. package/dist/selftest/live-daemon.test.d.ts +1 -1
  803. package/dist/selftest/live-daemon.test.js +34 -22
  804. package/dist/selftest/live-git.test.d.ts +1 -1
  805. package/dist/selftest/live-git.test.js +15 -6
  806. package/dist/selftest/live-network.test.d.ts +1 -1
  807. package/dist/selftest/live-network.test.js +75 -11
  808. package/dist/selftest/live-projects.test.d.ts +1 -1
  809. package/dist/selftest/live-projects.test.js +62 -31
  810. package/dist/selftest/live-terminal.test.d.ts +1 -1
  811. package/dist/selftest/live-terminal.test.js +69 -31
  812. package/dist/selftest/local-config.test.d.ts +1 -1
  813. package/dist/selftest/local-config.test.js +88 -41
  814. package/dist/selftest/menu-screens.d.ts +2 -0
  815. package/dist/selftest/menu-screens.js +224 -0
  816. package/dist/selftest/menu.test.d.ts +2 -0
  817. package/dist/selftest/menu.test.js +149 -0
  818. package/dist/selftest/migrate.test.d.ts +2 -0
  819. package/dist/selftest/migrate.test.js +194 -0
  820. package/dist/selftest/mirror.test.d.ts +1 -1
  821. package/dist/selftest/mirror.test.js +108 -69
  822. package/dist/selftest/network.test.d.ts +1 -1
  823. package/dist/selftest/network.test.js +21 -12
  824. package/dist/selftest/personalization.test.d.ts +1 -1
  825. package/dist/selftest/personalization.test.js +26 -20
  826. package/dist/selftest/projects.test.d.ts +1 -1
  827. package/dist/selftest/projects.test.js +423 -215
  828. package/dist/selftest/repair.test.d.ts +1 -1
  829. package/dist/selftest/repair.test.js +17 -5
  830. package/dist/selftest/repo-guard.test.d.ts +1 -1
  831. package/dist/selftest/repo-guard.test.js +51 -48
  832. package/dist/selftest/resume.test.d.ts +2 -0
  833. package/dist/selftest/resume.test.js +175 -0
  834. package/dist/selftest/secrets.test.d.ts +1 -1
  835. package/dist/selftest/secrets.test.js +59 -15
  836. package/dist/selftest/setup.test.d.ts +1 -1
  837. package/dist/selftest/setup.test.js +56 -28
  838. package/dist/selftest/shared-use.test.d.ts +2 -0
  839. package/dist/selftest/shared-use.test.js +116 -0
  840. package/dist/selftest/sharing.test.d.ts +2 -0
  841. package/dist/selftest/sharing.test.js +201 -0
  842. package/dist/selftest/support/fixtures.d.ts +337 -0
  843. package/dist/selftest/support/fixtures.js +173 -0
  844. package/dist/selftest/support/harness.d.ts +51 -0
  845. package/dist/selftest/support/harness.js +94 -0
  846. package/dist/selftest/support/live.d.ts +71 -0
  847. package/dist/selftest/support/live.js +144 -0
  848. package/dist/selftest/support/releases.d.ts +15 -0
  849. package/dist/selftest/support/releases.js +73 -0
  850. package/dist/selftest/support/suite.js +1 -0
  851. package/dist/selftest/sync.test.d.ts +1 -1
  852. package/dist/selftest/sync.test.js +103 -63
  853. package/dist/selftest/test-guard.test.d.ts +1 -1
  854. package/dist/selftest/test-guard.test.js +43 -15
  855. package/dist/selftest/toolchains.test.d.ts +1 -1
  856. package/dist/selftest/toolchains.test.js +180 -94
  857. package/dist/selftest/update-service.test.d.ts +2 -0
  858. package/dist/selftest/update-service.test.js +188 -0
  859. package/dist/selftest/update.test.d.ts +2 -0
  860. package/dist/selftest/update.test.js +172 -0
  861. package/dist/selftest/workspace-view.test.d.ts +1 -1
  862. package/dist/selftest/workspace-view.test.js +64 -22
  863. package/dist/selftest/workspace.test.d.ts +1 -1
  864. package/dist/selftest/workspace.test.js +22 -12
  865. package/dist/shared/apps/catalogue.d.ts +44 -0
  866. package/dist/shared/apps/catalogue.js +770 -0
  867. package/dist/shared/apps/index.d.ts +2 -0
  868. package/dist/shared/apps/index.js +2 -0
  869. package/dist/shared/apps/selection.d.ts +11 -0
  870. package/dist/shared/apps/selection.js +42 -0
  871. package/dist/shared/channel/index.d.ts +2 -0
  872. package/dist/shared/channel/index.js +2 -0
  873. package/dist/shared/channel/run-dir.d.ts +30 -0
  874. package/dist/shared/channel/run-dir.js +84 -0
  875. package/dist/shared/channel/schema.d.ts +607 -0
  876. package/dist/shared/channel/schema.js +133 -0
  877. package/dist/shared/download/archive.d.ts +13 -0
  878. package/dist/shared/download/archive.js +51 -0
  879. package/dist/shared/download/downloader.d.ts +38 -0
  880. package/dist/shared/download/downloader.js +111 -0
  881. package/dist/shared/download/github.d.ts +18 -0
  882. package/dist/shared/download/github.js +77 -0
  883. package/dist/shared/download/http.d.ts +5 -0
  884. package/dist/shared/download/http.js +34 -0
  885. package/dist/shared/download/index.d.ts +5 -0
  886. package/dist/shared/download/index.js +5 -0
  887. package/dist/shared/download/spawn.d.ts +3 -0
  888. package/dist/shared/download/spawn.js +9 -0
  889. package/dist/shared/io/index.d.ts +3 -0
  890. package/dist/shared/io/index.js +3 -0
  891. package/dist/shared/io/json-file.d.ts +10 -0
  892. package/dist/shared/io/json-file.js +21 -0
  893. package/dist/shared/io/json.d.ts +13 -0
  894. package/dist/shared/io/json.js +51 -0
  895. package/dist/shared/io/safe-remove.d.ts +10 -0
  896. package/dist/shared/io/safe-remove.js +94 -0
  897. package/dist/shared/network/firewall-rules.d.ts +24 -0
  898. package/dist/shared/network/firewall-rules.js +137 -0
  899. package/dist/shared/network/index.d.ts +2 -0
  900. package/dist/shared/network/index.js +2 -0
  901. package/dist/shared/network/policy.d.ts +27 -0
  902. package/dist/shared/network/policy.js +110 -0
  903. package/dist/shared/paths/agent-profile.d.ts +9 -0
  904. package/dist/shared/paths/agent-profile.js +21 -0
  905. package/dist/shared/paths/claude-paths.d.ts +15 -0
  906. package/dist/shared/paths/claude-paths.js +43 -0
  907. package/dist/shared/paths/conversation.d.ts +23 -0
  908. package/dist/shared/paths/conversation.js +25 -0
  909. package/dist/shared/paths/guest-paths.d.ts +51 -0
  910. package/dist/shared/paths/guest-paths.js +150 -0
  911. package/dist/shared/paths/index.d.ts +5 -0
  912. package/dist/shared/paths/index.js +5 -0
  913. package/dist/shared/paths/projects.d.ts +81 -0
  914. package/dist/shared/paths/projects.js +149 -0
  915. package/dist/shared/pty/client.d.ts +21 -0
  916. package/dist/shared/pty/client.js +79 -0
  917. package/dist/shared/pty/console-input.d.ts +11 -0
  918. package/dist/shared/pty/console-input.js +50 -0
  919. package/dist/shared/pty/index.d.ts +6 -0
  920. package/dist/shared/pty/index.js +6 -0
  921. package/dist/shared/pty/input-joiner.d.ts +15 -0
  922. package/dist/shared/pty/input-joiner.js +44 -0
  923. package/dist/shared/pty/output-filter.d.ts +16 -0
  924. package/dist/shared/pty/output-filter.js +143 -0
  925. package/dist/shared/pty/protocol.d.ts +38 -0
  926. package/dist/shared/pty/protocol.js +62 -0
  927. package/dist/shared/pty/terminal.d.ts +27 -0
  928. package/dist/shared/pty/terminal.js +153 -0
  929. package/dist/shared/scripts.d.ts +4 -0
  930. package/dist/shared/scripts.js +26 -0
  931. package/dist/shared/system.d.ts +11 -1
  932. package/dist/shared/system.js +15 -1
  933. package/dist/shared/test-guard.d.ts +3 -3
  934. package/dist/shared/test-guard.js +18 -10
  935. package/dist/sync/claude-mem.d.ts +3 -3
  936. package/dist/sync/claude-mem.js +19 -11
  937. package/dist/sync/history.d.ts +5 -33
  938. package/dist/sync/history.js +66 -51
  939. package/dist/sync/index.d.ts +5 -0
  940. package/dist/sync/index.js +5 -0
  941. package/dist/sync/sync-cycle.d.ts +18 -0
  942. package/dist/sync/sync-cycle.js +85 -0
  943. package/dist/sync/sync-state.d.ts +32 -0
  944. package/dist/sync/sync-state.js +43 -0
  945. package/dist/sync/watcher.d.ts +39 -17
  946. package/dist/sync/watcher.js +222 -155
  947. package/native/csharp/HostTools/KeepAwake.cs +24 -0
  948. package/native/csharp/HostTools/Program.cs +227 -0
  949. package/native/csharp/HostTools/UserPath.cs +74 -0
  950. package/native/csharp/HostTools/Window.cs +143 -0
  951. package/native/scripts/capture-look.ps1 +22 -0
  952. package/native/scripts/check-syntax.ps1 +14 -0
  953. package/native/scripts/edit-user-path.ps1 +11 -0
  954. package/native/scripts/hide-window.ps1 +8 -0
  955. package/native/scripts/keep-awake.ps1 +8 -0
  956. package/native/scripts/run-elevated.ps1 +12 -0
  957. package/native/scripts/sandbox-probe.ps1 +15 -0
  958. package/native/scripts/set-folder-access.ps1 +44 -0
  959. package/native/scripts/set-update-task.ps1 +43 -0
  960. package/native/scripts/show-window.ps1 +13 -0
  961. package/native/scripts/stop-events.ps1 +38 -0
  962. package/node_modules/@inquirer/ansi/LICENSE +22 -0
  963. package/node_modules/@inquirer/ansi/README.md +89 -0
  964. package/node_modules/@inquirer/ansi/dist/commonjs/index.d.ts +14 -0
  965. package/node_modules/@inquirer/ansi/dist/commonjs/index.js +28 -0
  966. package/node_modules/@inquirer/ansi/dist/commonjs/package.json +3 -0
  967. package/node_modules/@inquirer/ansi/dist/esm/index.d.ts +14 -0
  968. package/node_modules/@inquirer/ansi/dist/esm/index.js +21 -0
  969. package/node_modules/@inquirer/ansi/dist/esm/package.json +3 -0
  970. package/node_modules/@inquirer/ansi/package.json +97 -0
  971. package/node_modules/@inquirer/checkbox/LICENSE +22 -0
  972. package/node_modules/@inquirer/checkbox/README.md +188 -0
  973. package/node_modules/@inquirer/checkbox/dist/commonjs/index.d.ts +57 -0
  974. package/node_modules/@inquirer/checkbox/dist/commonjs/index.js +209 -0
  975. package/node_modules/@inquirer/checkbox/dist/commonjs/package.json +3 -0
  976. package/node_modules/@inquirer/checkbox/dist/esm/index.d.ts +57 -0
  977. package/node_modules/@inquirer/checkbox/dist/esm/index.js +202 -0
  978. package/node_modules/@inquirer/checkbox/dist/esm/package.json +3 -0
  979. package/node_modules/@inquirer/checkbox/package.json +113 -0
  980. package/node_modules/@inquirer/confirm/LICENSE +22 -0
  981. package/node_modules/@inquirer/confirm/README.md +92 -0
  982. package/node_modules/@inquirer/confirm/dist/commonjs/index.d.ts +10 -0
  983. package/node_modules/@inquirer/confirm/dist/commonjs/index.js +50 -0
  984. package/node_modules/@inquirer/confirm/dist/commonjs/package.json +3 -0
  985. package/node_modules/@inquirer/confirm/dist/esm/index.d.ts +10 -0
  986. package/node_modules/@inquirer/confirm/dist/esm/index.js +48 -0
  987. package/node_modules/@inquirer/confirm/dist/esm/package.json +3 -0
  988. package/node_modules/@inquirer/confirm/package.json +110 -0
  989. package/node_modules/@inquirer/core/LICENSE +22 -0
  990. package/node_modules/@inquirer/core/README.md +383 -0
  991. package/node_modules/@inquirer/core/dist/commonjs/index.d.ts +13 -0
  992. package/node_modules/@inquirer/core/dist/commonjs/index.js +46 -0
  993. package/node_modules/@inquirer/core/dist/commonjs/lib/Separator.d.ts +10 -0
  994. package/node_modules/@inquirer/core/dist/commonjs/lib/Separator.js +28 -0
  995. package/node_modules/@inquirer/core/dist/commonjs/lib/create-prompt.d.ts +4 -0
  996. package/node_modules/@inquirer/core/dist/commonjs/lib/create-prompt.js +156 -0
  997. package/node_modules/@inquirer/core/dist/commonjs/lib/errors.d.ts +20 -0
  998. package/node_modules/@inquirer/core/dist/commonjs/lib/errors.js +29 -0
  999. package/node_modules/@inquirer/core/dist/commonjs/lib/hook-engine.d.ts +23 -0
  1000. package/node_modules/@inquirer/core/dist/commonjs/lib/hook-engine.js +118 -0
  1001. package/node_modules/@inquirer/core/dist/commonjs/lib/key.d.ts +12 -0
  1002. package/node_modules/@inquirer/core/dist/commonjs/lib/key.js +29 -0
  1003. package/node_modules/@inquirer/core/dist/commonjs/lib/make-theme.d.ts +3 -0
  1004. package/node_modules/@inquirer/core/dist/commonjs/lib/make-theme.js +33 -0
  1005. package/node_modules/@inquirer/core/dist/commonjs/lib/pagination/use-pagination.d.ts +16 -0
  1006. package/node_modules/@inquirer/core/dist/commonjs/lib/pagination/use-pagination.js +124 -0
  1007. package/node_modules/@inquirer/core/dist/commonjs/lib/promise-polyfill.d.ts +7 -0
  1008. package/node_modules/@inquirer/core/dist/commonjs/lib/promise-polyfill.js +18 -0
  1009. package/node_modules/@inquirer/core/dist/commonjs/lib/screen-manager.d.ts +14 -0
  1010. package/node_modules/@inquirer/core/dist/commonjs/lib/screen-manager.js +82 -0
  1011. package/node_modules/@inquirer/core/dist/commonjs/lib/theme.d.ts +155 -0
  1012. package/node_modules/@inquirer/core/dist/commonjs/lib/theme.js +27 -0
  1013. package/node_modules/@inquirer/core/dist/commonjs/lib/use-effect.d.ts +2 -0
  1014. package/node_modules/@inquirer/core/dist/commonjs/lib/use-effect.js +14 -0
  1015. package/node_modules/@inquirer/core/dist/commonjs/lib/use-keypress.d.ts +3 -0
  1016. package/node_modules/@inquirer/core/dist/commonjs/lib/use-keypress.js +23 -0
  1017. package/node_modules/@inquirer/core/dist/commonjs/lib/use-memo.d.ts +1 -0
  1018. package/node_modules/@inquirer/core/dist/commonjs/lib/use-memo.js +17 -0
  1019. package/node_modules/@inquirer/core/dist/commonjs/lib/use-prefix.d.ts +5 -0
  1020. package/node_modules/@inquirer/core/dist/commonjs/lib/use-prefix.js +38 -0
  1021. package/node_modules/@inquirer/core/dist/commonjs/lib/use-ref.d.ts +6 -0
  1022. package/node_modules/@inquirer/core/dist/commonjs/lib/use-ref.js +7 -0
  1023. package/node_modules/@inquirer/core/dist/commonjs/lib/use-state.d.ts +4 -0
  1024. package/node_modules/@inquirer/core/dist/commonjs/lib/use-state.js +23 -0
  1025. package/node_modules/@inquirer/core/dist/commonjs/lib/utils.d.ts +13 -0
  1026. package/node_modules/@inquirer/core/dist/commonjs/lib/utils.js +32 -0
  1027. package/node_modules/@inquirer/core/dist/commonjs/package.json +3 -0
  1028. package/node_modules/@inquirer/core/dist/esm/index.d.ts +13 -0
  1029. package/node_modules/@inquirer/core/dist/esm/index.js +12 -0
  1030. package/node_modules/@inquirer/core/dist/esm/lib/Separator.d.ts +10 -0
  1031. package/node_modules/@inquirer/core/dist/esm/lib/Separator.js +21 -0
  1032. package/node_modules/@inquirer/core/dist/esm/lib/create-prompt.d.ts +4 -0
  1033. package/node_modules/@inquirer/core/dist/esm/lib/create-prompt.js +117 -0
  1034. package/node_modules/@inquirer/core/dist/esm/lib/errors.d.ts +20 -0
  1035. package/node_modules/@inquirer/core/dist/esm/lib/errors.js +21 -0
  1036. package/node_modules/@inquirer/core/dist/esm/lib/hook-engine.d.ts +23 -0
  1037. package/node_modules/@inquirer/core/dist/esm/lib/hook-engine.js +110 -0
  1038. package/node_modules/@inquirer/core/dist/esm/lib/key.d.ts +12 -0
  1039. package/node_modules/@inquirer/core/dist/esm/lib/key.js +19 -0
  1040. package/node_modules/@inquirer/core/dist/esm/lib/make-theme.d.ts +3 -0
  1041. package/node_modules/@inquirer/core/dist/esm/lib/make-theme.js +30 -0
  1042. package/node_modules/@inquirer/core/dist/esm/lib/pagination/use-pagination.d.ts +16 -0
  1043. package/node_modules/@inquirer/core/dist/esm/lib/pagination/use-pagination.js +121 -0
  1044. package/node_modules/@inquirer/core/dist/esm/lib/promise-polyfill.d.ts +7 -0
  1045. package/node_modules/@inquirer/core/dist/esm/lib/promise-polyfill.js +14 -0
  1046. package/node_modules/@inquirer/core/dist/esm/lib/screen-manager.d.ts +14 -0
  1047. package/node_modules/@inquirer/core/dist/esm/lib/screen-manager.js +79 -0
  1048. package/node_modules/@inquirer/core/dist/esm/lib/theme.d.ts +155 -0
  1049. package/node_modules/@inquirer/core/dist/esm/lib/theme.js +21 -0
  1050. package/node_modules/@inquirer/core/dist/esm/lib/use-effect.d.ts +2 -0
  1051. package/node_modules/@inquirer/core/dist/esm/lib/use-effect.js +11 -0
  1052. package/node_modules/@inquirer/core/dist/esm/lib/use-keypress.d.ts +3 -0
  1053. package/node_modules/@inquirer/core/dist/esm/lib/use-keypress.js +20 -0
  1054. package/node_modules/@inquirer/core/dist/esm/lib/use-memo.d.ts +1 -0
  1055. package/node_modules/@inquirer/core/dist/esm/lib/use-memo.js +14 -0
  1056. package/node_modules/@inquirer/core/dist/esm/lib/use-prefix.d.ts +5 -0
  1057. package/node_modules/@inquirer/core/dist/esm/lib/use-prefix.js +35 -0
  1058. package/node_modules/@inquirer/core/dist/esm/lib/use-ref.d.ts +6 -0
  1059. package/node_modules/@inquirer/core/dist/esm/lib/use-ref.js +4 -0
  1060. package/node_modules/@inquirer/core/dist/esm/lib/use-state.d.ts +4 -0
  1061. package/node_modules/@inquirer/core/dist/esm/lib/use-state.js +20 -0
  1062. package/node_modules/@inquirer/core/dist/esm/lib/utils.d.ts +13 -0
  1063. package/node_modules/@inquirer/core/dist/esm/lib/utils.js +25 -0
  1064. package/node_modules/@inquirer/core/dist/esm/package.json +3 -0
  1065. package/node_modules/@inquirer/core/package.json +119 -0
  1066. package/node_modules/@inquirer/editor/LICENSE +22 -0
  1067. package/node_modules/@inquirer/editor/README.md +101 -0
  1068. package/node_modules/@inquirer/editor/dist/commonjs/index.d.ts +17 -0
  1069. package/node_modules/@inquirer/editor/dist/commonjs/index.js +76 -0
  1070. package/node_modules/@inquirer/editor/dist/commonjs/package.json +3 -0
  1071. package/node_modules/@inquirer/editor/dist/esm/index.d.ts +17 -0
  1072. package/node_modules/@inquirer/editor/dist/esm/index.js +74 -0
  1073. package/node_modules/@inquirer/editor/dist/esm/package.json +3 -0
  1074. package/node_modules/@inquirer/editor/package.json +111 -0
  1075. package/node_modules/@inquirer/expand/LICENSE +22 -0
  1076. package/node_modules/@inquirer/expand/README.md +141 -0
  1077. package/node_modules/@inquirer/expand/dist/commonjs/index.d.ts +25 -0
  1078. package/node_modules/@inquirer/expand/dist/commonjs/index.js +115 -0
  1079. package/node_modules/@inquirer/expand/dist/commonjs/package.json +3 -0
  1080. package/node_modules/@inquirer/expand/dist/esm/index.d.ts +25 -0
  1081. package/node_modules/@inquirer/expand/dist/esm/index.js +108 -0
  1082. package/node_modules/@inquirer/expand/dist/esm/package.json +3 -0
  1083. package/node_modules/@inquirer/expand/package.json +111 -0
  1084. package/node_modules/@inquirer/external-editor/LICENSE +22 -0
  1085. package/node_modules/@inquirer/external-editor/README.md +154 -0
  1086. package/node_modules/@inquirer/external-editor/dist/commonjs/errors/CreateFileError.d.ts +10 -0
  1087. package/node_modules/@inquirer/external-editor/dist/commonjs/errors/CreateFileError.js +17 -0
  1088. package/node_modules/@inquirer/external-editor/dist/commonjs/errors/LaunchEditorError.d.ts +10 -0
  1089. package/node_modules/@inquirer/external-editor/dist/commonjs/errors/LaunchEditorError.js +17 -0
  1090. package/node_modules/@inquirer/external-editor/dist/commonjs/errors/ReadFileError.d.ts +10 -0
  1091. package/node_modules/@inquirer/external-editor/dist/commonjs/errors/ReadFileError.js +17 -0
  1092. package/node_modules/@inquirer/external-editor/dist/commonjs/errors/RemoveFileError.d.ts +10 -0
  1093. package/node_modules/@inquirer/external-editor/dist/commonjs/errors/RemoveFileError.js +17 -0
  1094. package/node_modules/@inquirer/external-editor/dist/commonjs/index.d.ts +39 -0
  1095. package/node_modules/@inquirer/external-editor/dist/commonjs/index.js +203 -0
  1096. package/node_modules/@inquirer/external-editor/dist/commonjs/package.json +3 -0
  1097. package/node_modules/@inquirer/external-editor/dist/esm/errors/CreateFileError.d.ts +10 -0
  1098. package/node_modules/@inquirer/external-editor/dist/esm/errors/CreateFileError.js +13 -0
  1099. package/node_modules/@inquirer/external-editor/dist/esm/errors/LaunchEditorError.d.ts +10 -0
  1100. package/node_modules/@inquirer/external-editor/dist/esm/errors/LaunchEditorError.js +13 -0
  1101. package/node_modules/@inquirer/external-editor/dist/esm/errors/ReadFileError.d.ts +10 -0
  1102. package/node_modules/@inquirer/external-editor/dist/esm/errors/ReadFileError.js +13 -0
  1103. package/node_modules/@inquirer/external-editor/dist/esm/errors/RemoveFileError.d.ts +10 -0
  1104. package/node_modules/@inquirer/external-editor/dist/esm/errors/RemoveFileError.js +13 -0
  1105. package/node_modules/@inquirer/external-editor/dist/esm/index.d.ts +39 -0
  1106. package/node_modules/@inquirer/external-editor/dist/esm/index.js +191 -0
  1107. package/node_modules/@inquirer/external-editor/dist/esm/package.json +3 -0
  1108. package/node_modules/@inquirer/external-editor/package.json +115 -0
  1109. package/node_modules/@inquirer/figures/LICENSE +22 -0
  1110. package/node_modules/@inquirer/figures/dist/commonjs/index.d.ts +275 -0
  1111. package/node_modules/@inquirer/figures/dist/commonjs/index.js +321 -0
  1112. package/node_modules/@inquirer/figures/dist/commonjs/package.json +3 -0
  1113. package/node_modules/@inquirer/figures/dist/esm/index.d.ts +275 -0
  1114. package/node_modules/@inquirer/figures/dist/esm/index.js +314 -0
  1115. package/node_modules/@inquirer/figures/dist/esm/package.json +3 -0
  1116. package/node_modules/@inquirer/figures/package.json +98 -0
  1117. package/node_modules/@inquirer/input/LICENSE +22 -0
  1118. package/node_modules/@inquirer/input/README.md +101 -0
  1119. package/node_modules/@inquirer/input/dist/commonjs/index.d.ts +20 -0
  1120. package/node_modules/@inquirer/input/dist/commonjs/index.js +99 -0
  1121. package/node_modules/@inquirer/input/dist/commonjs/package.json +3 -0
  1122. package/node_modules/@inquirer/input/dist/esm/index.d.ts +20 -0
  1123. package/node_modules/@inquirer/input/dist/esm/index.js +97 -0
  1124. package/node_modules/@inquirer/input/dist/esm/package.json +3 -0
  1125. package/node_modules/@inquirer/input/package.json +110 -0
  1126. package/node_modules/@inquirer/number/LICENSE +22 -0
  1127. package/node_modules/@inquirer/number/README.md +95 -0
  1128. package/node_modules/@inquirer/number/dist/commonjs/index.d.ts +15 -0
  1129. package/node_modules/@inquirer/number/dist/commonjs/index.js +96 -0
  1130. package/node_modules/@inquirer/number/dist/commonjs/package.json +3 -0
  1131. package/node_modules/@inquirer/number/dist/esm/index.d.ts +15 -0
  1132. package/node_modules/@inquirer/number/dist/esm/index.js +94 -0
  1133. package/node_modules/@inquirer/number/dist/esm/package.json +3 -0
  1134. package/node_modules/@inquirer/number/package.json +110 -0
  1135. package/node_modules/@inquirer/password/LICENSE +22 -0
  1136. package/node_modules/@inquirer/password/README.md +93 -0
  1137. package/node_modules/@inquirer/password/dist/commonjs/index.d.ts +10 -0
  1138. package/node_modules/@inquirer/password/dist/commonjs/index.js +57 -0
  1139. package/node_modules/@inquirer/password/dist/commonjs/package.json +3 -0
  1140. package/node_modules/@inquirer/password/dist/esm/index.d.ts +10 -0
  1141. package/node_modules/@inquirer/password/dist/esm/index.js +55 -0
  1142. package/node_modules/@inquirer/password/dist/esm/package.json +3 -0
  1143. package/node_modules/@inquirer/password/package.json +111 -0
  1144. package/node_modules/@inquirer/prompts/LICENSE +22 -0
  1145. package/node_modules/@inquirer/prompts/README.md +528 -0
  1146. package/node_modules/@inquirer/prompts/dist/commonjs/index.d.ts +10 -0
  1147. package/node_modules/@inquirer/prompts/dist/commonjs/index.js +27 -0
  1148. package/node_modules/@inquirer/prompts/dist/commonjs/package.json +3 -0
  1149. package/node_modules/@inquirer/prompts/dist/esm/index.d.ts +10 -0
  1150. package/node_modules/@inquirer/prompts/dist/esm/index.js +10 -0
  1151. package/node_modules/@inquirer/prompts/dist/esm/package.json +3 -0
  1152. package/node_modules/@inquirer/prompts/package.json +120 -0
  1153. package/node_modules/@inquirer/rawlist/LICENSE +22 -0
  1154. package/node_modules/@inquirer/rawlist/README.md +124 -0
  1155. package/node_modules/@inquirer/rawlist/dist/commonjs/index.d.ts +18 -0
  1156. package/node_modules/@inquirer/rawlist/dist/commonjs/index.js +132 -0
  1157. package/node_modules/@inquirer/rawlist/dist/commonjs/package.json +3 -0
  1158. package/node_modules/@inquirer/rawlist/dist/esm/index.d.ts +18 -0
  1159. package/node_modules/@inquirer/rawlist/dist/esm/index.js +125 -0
  1160. package/node_modules/@inquirer/rawlist/dist/esm/package.json +3 -0
  1161. package/node_modules/@inquirer/rawlist/package.json +111 -0
  1162. package/node_modules/@inquirer/search/LICENSE +22 -0
  1163. package/node_modules/@inquirer/search/README.md +212 -0
  1164. package/node_modules/@inquirer/search/dist/commonjs/index.d.ts +40 -0
  1165. package/node_modules/@inquirer/search/dist/commonjs/index.js +206 -0
  1166. package/node_modules/@inquirer/search/dist/commonjs/package.json +3 -0
  1167. package/node_modules/@inquirer/search/dist/esm/index.d.ts +40 -0
  1168. package/node_modules/@inquirer/search/dist/esm/index.js +199 -0
  1169. package/node_modules/@inquirer/search/dist/esm/package.json +3 -0
  1170. package/node_modules/@inquirer/search/package.json +112 -0
  1171. package/node_modules/@inquirer/select/LICENSE +22 -0
  1172. package/node_modules/@inquirer/select/README.md +181 -0
  1173. package/node_modules/@inquirer/select/dist/commonjs/index.d.ts +40 -0
  1174. package/node_modules/@inquirer/select/dist/commonjs/index.js +194 -0
  1175. package/node_modules/@inquirer/select/dist/commonjs/package.json +3 -0
  1176. package/node_modules/@inquirer/select/dist/esm/index.d.ts +40 -0
  1177. package/node_modules/@inquirer/select/dist/esm/index.js +187 -0
  1178. package/node_modules/@inquirer/select/dist/esm/package.json +3 -0
  1179. package/node_modules/@inquirer/select/package.json +113 -0
  1180. package/node_modules/@inquirer/type/LICENSE +22 -0
  1181. package/node_modules/@inquirer/type/dist/commonjs/index.d.ts +2 -0
  1182. package/node_modules/@inquirer/type/dist/commonjs/index.js +18 -0
  1183. package/node_modules/@inquirer/type/dist/commonjs/inquirer.d.ts +38 -0
  1184. package/node_modules/@inquirer/type/dist/commonjs/inquirer.js +2 -0
  1185. package/node_modules/@inquirer/type/dist/commonjs/package.json +3 -0
  1186. package/node_modules/@inquirer/type/dist/commonjs/utils.d.ts +29 -0
  1187. package/node_modules/@inquirer/type/dist/commonjs/utils.js +3 -0
  1188. package/node_modules/@inquirer/type/dist/esm/index.d.ts +2 -0
  1189. package/node_modules/@inquirer/type/dist/esm/index.js +2 -0
  1190. package/node_modules/@inquirer/type/dist/esm/inquirer.d.ts +38 -0
  1191. package/node_modules/@inquirer/type/dist/esm/inquirer.js +1 -0
  1192. package/node_modules/@inquirer/type/dist/esm/package.json +3 -0
  1193. package/node_modules/@inquirer/type/dist/esm/utils.d.ts +29 -0
  1194. package/node_modules/@inquirer/type/dist/esm/utils.js +2 -0
  1195. package/node_modules/@inquirer/type/package.json +106 -0
  1196. package/node_modules/ansi-regex/index.d.ts +37 -0
  1197. package/node_modules/ansi-regex/index.js +10 -0
  1198. package/node_modules/ansi-regex/license +9 -0
  1199. package/node_modules/ansi-regex/package.json +55 -0
  1200. package/node_modules/ansi-regex/readme.md +78 -0
  1201. package/node_modules/ansi-styles/index.d.ts +345 -0
  1202. package/node_modules/ansi-styles/index.js +163 -0
  1203. package/node_modules/ansi-styles/license +9 -0
  1204. package/node_modules/ansi-styles/package.json +56 -0
  1205. package/node_modules/ansi-styles/readme.md +152 -0
  1206. package/node_modules/chardet/LICENSE +19 -0
  1207. package/node_modules/chardet/README.md +135 -0
  1208. package/node_modules/chardet/lib/encoding/ascii.d.ts +6 -0
  1209. package/node_modules/chardet/lib/encoding/ascii.js +23 -0
  1210. package/node_modules/chardet/lib/encoding/ascii.js.map +1 -0
  1211. package/node_modules/chardet/lib/encoding/index.d.ts +14 -0
  1212. package/node_modules/chardet/lib/encoding/index.js +3 -0
  1213. package/node_modules/chardet/lib/encoding/index.js.map +1 -0
  1214. package/node_modules/chardet/lib/encoding/iso2022.d.ts +23 -0
  1215. package/node_modules/chardet/lib/encoding/iso2022.js +114 -0
  1216. package/node_modules/chardet/lib/encoding/iso2022.js.map +1 -0
  1217. package/node_modules/chardet/lib/encoding/mbcs.d.ts +50 -0
  1218. package/node_modules/chardet/lib/encoding/mbcs.js +347 -0
  1219. package/node_modules/chardet/lib/encoding/mbcs.js.map +1 -0
  1220. package/node_modules/chardet/lib/encoding/sbcs.d.ts +94 -0
  1221. package/node_modules/chardet/lib/encoding/sbcs.js +935 -0
  1222. package/node_modules/chardet/lib/encoding/sbcs.js.map +1 -0
  1223. package/node_modules/chardet/lib/encoding/unicode.d.ts +27 -0
  1224. package/node_modules/chardet/lib/encoding/unicode.js +109 -0
  1225. package/node_modules/chardet/lib/encoding/unicode.js.map +1 -0
  1226. package/node_modules/chardet/lib/encoding/utf8.d.ts +6 -0
  1227. package/node_modules/chardet/lib/encoding/utf8.js +72 -0
  1228. package/node_modules/chardet/lib/encoding/utf8.js.map +1 -0
  1229. package/node_modules/chardet/lib/fs/browser.d.ts +2 -0
  1230. package/node_modules/chardet/lib/fs/browser.js +6 -0
  1231. package/node_modules/chardet/lib/fs/browser.js.map +1 -0
  1232. package/node_modules/chardet/lib/fs/node.d.ts +2 -0
  1233. package/node_modules/chardet/lib/fs/node.js +11 -0
  1234. package/node_modules/chardet/lib/fs/node.js.map +1 -0
  1235. package/node_modules/chardet/lib/index.d.ts +20 -0
  1236. package/node_modules/chardet/lib/index.js +177 -0
  1237. package/node_modules/chardet/lib/index.js.map +1 -0
  1238. package/node_modules/chardet/lib/match.d.ts +9 -0
  1239. package/node_modules/chardet/lib/match.js +8 -0
  1240. package/node_modules/chardet/lib/match.js.map +1 -0
  1241. package/node_modules/chardet/lib/utils.d.ts +1 -0
  1242. package/node_modules/chardet/lib/utils.js +10 -0
  1243. package/node_modules/chardet/lib/utils.js.map +1 -0
  1244. package/node_modules/chardet/package.json +100 -0
  1245. package/node_modules/cli-width/LICENSE +13 -0
  1246. package/node_modules/cli-width/README.md +71 -0
  1247. package/node_modules/cli-width/index.d.ts +13 -0
  1248. package/node_modules/cli-width/index.js +49 -0
  1249. package/node_modules/cli-width/package.json +40 -0
  1250. package/node_modules/color-convert/CHANGELOG.md +54 -0
  1251. package/node_modules/color-convert/LICENSE +21 -0
  1252. package/node_modules/color-convert/README.md +68 -0
  1253. package/node_modules/color-convert/conversions.js +839 -0
  1254. package/node_modules/color-convert/index.js +81 -0
  1255. package/node_modules/color-convert/package.json +48 -0
  1256. package/node_modules/color-convert/route.js +97 -0
  1257. package/node_modules/color-name/LICENSE +8 -0
  1258. package/node_modules/color-name/README.md +11 -0
  1259. package/node_modules/color-name/index.js +152 -0
  1260. package/node_modules/color-name/package.json +28 -0
  1261. package/node_modules/commander/LICENSE +22 -0
  1262. package/node_modules/commander/Readme.md +1176 -0
  1263. package/node_modules/commander/esm.mjs +16 -0
  1264. package/node_modules/commander/index.js +24 -0
  1265. package/node_modules/commander/lib/argument.js +150 -0
  1266. package/node_modules/commander/lib/command.js +2777 -0
  1267. package/node_modules/commander/lib/error.js +39 -0
  1268. package/node_modules/commander/lib/help.js +747 -0
  1269. package/node_modules/commander/lib/option.js +380 -0
  1270. package/node_modules/commander/lib/suggestSimilar.js +101 -0
  1271. package/node_modules/commander/package-support.json +19 -0
  1272. package/node_modules/commander/package.json +82 -0
  1273. package/node_modules/commander/typings/esm.d.mts +3 -0
  1274. package/node_modules/commander/typings/index.d.ts +1113 -0
  1275. package/node_modules/emoji-regex/LICENSE-MIT.txt +20 -0
  1276. package/node_modules/emoji-regex/README.md +73 -0
  1277. package/node_modules/emoji-regex/es2015/index.js +6 -0
  1278. package/node_modules/emoji-regex/es2015/text.js +6 -0
  1279. package/node_modules/emoji-regex/index.d.ts +23 -0
  1280. package/node_modules/emoji-regex/index.js +6 -0
  1281. package/node_modules/emoji-regex/package.json +50 -0
  1282. package/node_modules/emoji-regex/text.js +6 -0
  1283. package/node_modules/iconv-lite/LICENSE +21 -0
  1284. package/node_modules/iconv-lite/README.md +138 -0
  1285. package/node_modules/iconv-lite/encodings/dbcs-codec.js +532 -0
  1286. package/node_modules/iconv-lite/encodings/dbcs-data.js +185 -0
  1287. package/node_modules/iconv-lite/encodings/index.js +23 -0
  1288. package/node_modules/iconv-lite/encodings/internal.js +218 -0
  1289. package/node_modules/iconv-lite/encodings/sbcs-codec.js +75 -0
  1290. package/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
  1291. package/node_modules/iconv-lite/encodings/sbcs-data.js +180 -0
  1292. package/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
  1293. package/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
  1294. package/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
  1295. package/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
  1296. package/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
  1297. package/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
  1298. package/node_modules/iconv-lite/encodings/tables/gbk-added.json +56 -0
  1299. package/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
  1300. package/node_modules/iconv-lite/encodings/utf16.js +187 -0
  1301. package/node_modules/iconv-lite/encodings/utf32.js +314 -0
  1302. package/node_modules/iconv-lite/encodings/utf7.js +283 -0
  1303. package/node_modules/iconv-lite/lib/bom-handling.js +48 -0
  1304. package/node_modules/iconv-lite/lib/helpers/merge-exports.js +13 -0
  1305. package/node_modules/iconv-lite/lib/index.d.ts +129 -0
  1306. package/node_modules/iconv-lite/lib/index.js +182 -0
  1307. package/node_modules/iconv-lite/lib/streams.js +105 -0
  1308. package/node_modules/iconv-lite/package.json +70 -0
  1309. package/node_modules/iconv-lite/types/encodings.d.ts +425 -0
  1310. package/node_modules/ignore/LICENSE-MIT +21 -0
  1311. package/node_modules/ignore/README.md +501 -0
  1312. package/node_modules/ignore/index.d.ts +81 -0
  1313. package/node_modules/ignore/index.js +1566 -0
  1314. package/node_modules/ignore/legacy.js +1346 -0
  1315. package/node_modules/ignore/package.json +93 -0
  1316. package/node_modules/is-fullwidth-code-point/index.d.ts +17 -0
  1317. package/node_modules/is-fullwidth-code-point/index.js +50 -0
  1318. package/node_modules/is-fullwidth-code-point/license +9 -0
  1319. package/node_modules/is-fullwidth-code-point/package.json +42 -0
  1320. package/node_modules/is-fullwidth-code-point/readme.md +39 -0
  1321. package/node_modules/jsonc-parser/CHANGELOG.md +76 -0
  1322. package/node_modules/jsonc-parser/LICENSE.md +21 -0
  1323. package/node_modules/jsonc-parser/README.md +364 -0
  1324. package/node_modules/jsonc-parser/SECURITY.md +41 -0
  1325. package/node_modules/jsonc-parser/lib/esm/impl/edit.js +185 -0
  1326. package/node_modules/jsonc-parser/lib/esm/impl/format.js +261 -0
  1327. package/node_modules/jsonc-parser/lib/esm/impl/parser.js +659 -0
  1328. package/node_modules/jsonc-parser/lib/esm/impl/scanner.js +443 -0
  1329. package/node_modules/jsonc-parser/lib/esm/impl/string-intern.js +29 -0
  1330. package/node_modules/jsonc-parser/lib/esm/main.d.ts +351 -0
  1331. package/node_modules/jsonc-parser/lib/esm/main.js +178 -0
  1332. package/node_modules/jsonc-parser/lib/umd/impl/edit.js +201 -0
  1333. package/node_modules/jsonc-parser/lib/umd/impl/format.js +275 -0
  1334. package/node_modules/jsonc-parser/lib/umd/impl/parser.js +682 -0
  1335. package/node_modules/jsonc-parser/lib/umd/impl/scanner.js +456 -0
  1336. package/node_modules/jsonc-parser/lib/umd/impl/string-intern.js +42 -0
  1337. package/node_modules/jsonc-parser/lib/umd/main.d.ts +351 -0
  1338. package/node_modules/jsonc-parser/lib/umd/main.js +194 -0
  1339. package/node_modules/jsonc-parser/package.json +37 -0
  1340. package/node_modules/lodash/LICENSE +47 -0
  1341. package/node_modules/lodash/README.md +39 -0
  1342. package/node_modules/lodash/_DataView.js +7 -0
  1343. package/node_modules/lodash/_Hash.js +32 -0
  1344. package/node_modules/lodash/_LazyWrapper.js +28 -0
  1345. package/node_modules/lodash/_ListCache.js +32 -0
  1346. package/node_modules/lodash/_LodashWrapper.js +22 -0
  1347. package/node_modules/lodash/_Map.js +7 -0
  1348. package/node_modules/lodash/_MapCache.js +32 -0
  1349. package/node_modules/lodash/_Promise.js +7 -0
  1350. package/node_modules/lodash/_Set.js +7 -0
  1351. package/node_modules/lodash/_SetCache.js +27 -0
  1352. package/node_modules/lodash/_Stack.js +27 -0
  1353. package/node_modules/lodash/_Symbol.js +6 -0
  1354. package/node_modules/lodash/_Uint8Array.js +6 -0
  1355. package/node_modules/lodash/_WeakMap.js +7 -0
  1356. package/node_modules/lodash/_apply.js +21 -0
  1357. package/node_modules/lodash/_arrayAggregator.js +22 -0
  1358. package/node_modules/lodash/_arrayEach.js +22 -0
  1359. package/node_modules/lodash/_arrayEachRight.js +21 -0
  1360. package/node_modules/lodash/_arrayEvery.js +23 -0
  1361. package/node_modules/lodash/_arrayFilter.js +25 -0
  1362. package/node_modules/lodash/_arrayIncludes.js +17 -0
  1363. package/node_modules/lodash/_arrayIncludesWith.js +22 -0
  1364. package/node_modules/lodash/_arrayLikeKeys.js +49 -0
  1365. package/node_modules/lodash/_arrayMap.js +21 -0
  1366. package/node_modules/lodash/_arrayPush.js +20 -0
  1367. package/node_modules/lodash/_arrayReduce.js +26 -0
  1368. package/node_modules/lodash/_arrayReduceRight.js +24 -0
  1369. package/node_modules/lodash/_arraySample.js +15 -0
  1370. package/node_modules/lodash/_arraySampleSize.js +17 -0
  1371. package/node_modules/lodash/_arrayShuffle.js +15 -0
  1372. package/node_modules/lodash/_arraySome.js +23 -0
  1373. package/node_modules/lodash/_asciiSize.js +12 -0
  1374. package/node_modules/lodash/_asciiToArray.js +12 -0
  1375. package/node_modules/lodash/_asciiWords.js +15 -0
  1376. package/node_modules/lodash/_assignMergeValue.js +20 -0
  1377. package/node_modules/lodash/_assignValue.js +28 -0
  1378. package/node_modules/lodash/_assocIndexOf.js +21 -0
  1379. package/node_modules/lodash/_baseAggregator.js +21 -0
  1380. package/node_modules/lodash/_baseAssign.js +17 -0
  1381. package/node_modules/lodash/_baseAssignIn.js +17 -0
  1382. package/node_modules/lodash/_baseAssignValue.js +25 -0
  1383. package/node_modules/lodash/_baseAt.js +23 -0
  1384. package/node_modules/lodash/_baseClamp.js +22 -0
  1385. package/node_modules/lodash/_baseClone.js +166 -0
  1386. package/node_modules/lodash/_baseConforms.js +18 -0
  1387. package/node_modules/lodash/_baseConformsTo.js +27 -0
  1388. package/node_modules/lodash/_baseCreate.js +30 -0
  1389. package/node_modules/lodash/_baseDelay.js +21 -0
  1390. package/node_modules/lodash/_baseDifference.js +67 -0
  1391. package/node_modules/lodash/_baseEach.js +14 -0
  1392. package/node_modules/lodash/_baseEachRight.js +14 -0
  1393. package/node_modules/lodash/_baseEvery.js +21 -0
  1394. package/node_modules/lodash/_baseExtremum.js +32 -0
  1395. package/node_modules/lodash/_baseFill.js +32 -0
  1396. package/node_modules/lodash/_baseFilter.js +21 -0
  1397. package/node_modules/lodash/_baseFindIndex.js +24 -0
  1398. package/node_modules/lodash/_baseFindKey.js +23 -0
  1399. package/node_modules/lodash/_baseFlatten.js +38 -0
  1400. package/node_modules/lodash/_baseFor.js +16 -0
  1401. package/node_modules/lodash/_baseForOwn.js +16 -0
  1402. package/node_modules/lodash/_baseForOwnRight.js +16 -0
  1403. package/node_modules/lodash/_baseForRight.js +15 -0
  1404. package/node_modules/lodash/_baseFunctions.js +19 -0
  1405. package/node_modules/lodash/_baseGet.js +24 -0
  1406. package/node_modules/lodash/_baseGetAllKeys.js +20 -0
  1407. package/node_modules/lodash/_baseGetTag.js +28 -0
  1408. package/node_modules/lodash/_baseGt.js +14 -0
  1409. package/node_modules/lodash/_baseHas.js +19 -0
  1410. package/node_modules/lodash/_baseHasIn.js +13 -0
  1411. package/node_modules/lodash/_baseInRange.js +18 -0
  1412. package/node_modules/lodash/_baseIndexOf.js +20 -0
  1413. package/node_modules/lodash/_baseIndexOfWith.js +23 -0
  1414. package/node_modules/lodash/_baseIntersection.js +74 -0
  1415. package/node_modules/lodash/_baseInverter.js +21 -0
  1416. package/node_modules/lodash/_baseInvoke.js +24 -0
  1417. package/node_modules/lodash/_baseIsArguments.js +18 -0
  1418. package/node_modules/lodash/_baseIsArrayBuffer.js +17 -0
  1419. package/node_modules/lodash/_baseIsDate.js +18 -0
  1420. package/node_modules/lodash/_baseIsEqual.js +28 -0
  1421. package/node_modules/lodash/_baseIsEqualDeep.js +83 -0
  1422. package/node_modules/lodash/_baseIsMap.js +18 -0
  1423. package/node_modules/lodash/_baseIsMatch.js +62 -0
  1424. package/node_modules/lodash/_baseIsNaN.js +12 -0
  1425. package/node_modules/lodash/_baseIsNative.js +47 -0
  1426. package/node_modules/lodash/_baseIsRegExp.js +18 -0
  1427. package/node_modules/lodash/_baseIsSet.js +18 -0
  1428. package/node_modules/lodash/_baseIsTypedArray.js +60 -0
  1429. package/node_modules/lodash/_baseIteratee.js +31 -0
  1430. package/node_modules/lodash/_baseKeys.js +30 -0
  1431. package/node_modules/lodash/_baseKeysIn.js +33 -0
  1432. package/node_modules/lodash/_baseLodash.js +10 -0
  1433. package/node_modules/lodash/_baseLt.js +14 -0
  1434. package/node_modules/lodash/_baseMap.js +22 -0
  1435. package/node_modules/lodash/_baseMatches.js +22 -0
  1436. package/node_modules/lodash/_baseMatchesProperty.js +33 -0
  1437. package/node_modules/lodash/_baseMean.js +20 -0
  1438. package/node_modules/lodash/_baseMerge.js +42 -0
  1439. package/node_modules/lodash/_baseMergeDeep.js +94 -0
  1440. package/node_modules/lodash/_baseNth.js +20 -0
  1441. package/node_modules/lodash/_baseOrderBy.js +49 -0
  1442. package/node_modules/lodash/_basePick.js +19 -0
  1443. package/node_modules/lodash/_basePickBy.js +30 -0
  1444. package/node_modules/lodash/_baseProperty.js +14 -0
  1445. package/node_modules/lodash/_basePropertyDeep.js +16 -0
  1446. package/node_modules/lodash/_basePropertyOf.js +14 -0
  1447. package/node_modules/lodash/_basePullAll.js +51 -0
  1448. package/node_modules/lodash/_basePullAt.js +37 -0
  1449. package/node_modules/lodash/_baseRandom.js +18 -0
  1450. package/node_modules/lodash/_baseRange.js +28 -0
  1451. package/node_modules/lodash/_baseReduce.js +23 -0
  1452. package/node_modules/lodash/_baseRepeat.js +35 -0
  1453. package/node_modules/lodash/_baseRest.js +17 -0
  1454. package/node_modules/lodash/_baseSample.js +15 -0
  1455. package/node_modules/lodash/_baseSampleSize.js +18 -0
  1456. package/node_modules/lodash/_baseSet.js +51 -0
  1457. package/node_modules/lodash/_baseSetData.js +17 -0
  1458. package/node_modules/lodash/_baseSetToString.js +22 -0
  1459. package/node_modules/lodash/_baseShuffle.js +15 -0
  1460. package/node_modules/lodash/_baseSlice.js +31 -0
  1461. package/node_modules/lodash/_baseSome.js +22 -0
  1462. package/node_modules/lodash/_baseSortBy.js +21 -0
  1463. package/node_modules/lodash/_baseSortedIndex.js +42 -0
  1464. package/node_modules/lodash/_baseSortedIndexBy.js +67 -0
  1465. package/node_modules/lodash/_baseSortedUniq.js +30 -0
  1466. package/node_modules/lodash/_baseSum.js +24 -0
  1467. package/node_modules/lodash/_baseTimes.js +20 -0
  1468. package/node_modules/lodash/_baseToNumber.js +24 -0
  1469. package/node_modules/lodash/_baseToPairs.js +18 -0
  1470. package/node_modules/lodash/_baseToString.js +37 -0
  1471. package/node_modules/lodash/_baseTrim.js +19 -0
  1472. package/node_modules/lodash/_baseUnary.js +14 -0
  1473. package/node_modules/lodash/_baseUniq.js +72 -0
  1474. package/node_modules/lodash/_baseUnset.js +52 -0
  1475. package/node_modules/lodash/_baseUpdate.js +18 -0
  1476. package/node_modules/lodash/_baseValues.js +19 -0
  1477. package/node_modules/lodash/_baseWhile.js +26 -0
  1478. package/node_modules/lodash/_baseWrapperValue.js +25 -0
  1479. package/node_modules/lodash/_baseXor.js +36 -0
  1480. package/node_modules/lodash/_baseZipObject.js +23 -0
  1481. package/node_modules/lodash/_cacheHas.js +13 -0
  1482. package/node_modules/lodash/_castArrayLikeObject.js +14 -0
  1483. package/node_modules/lodash/_castFunction.js +14 -0
  1484. package/node_modules/lodash/_castPath.js +21 -0
  1485. package/node_modules/lodash/_castRest.js +14 -0
  1486. package/node_modules/lodash/_castSlice.js +18 -0
  1487. package/node_modules/lodash/_charsEndIndex.js +19 -0
  1488. package/node_modules/lodash/_charsStartIndex.js +20 -0
  1489. package/node_modules/lodash/_cloneArrayBuffer.js +16 -0
  1490. package/node_modules/lodash/_cloneBuffer.js +35 -0
  1491. package/node_modules/lodash/_cloneDataView.js +16 -0
  1492. package/node_modules/lodash/_cloneRegExp.js +17 -0
  1493. package/node_modules/lodash/_cloneSymbol.js +18 -0
  1494. package/node_modules/lodash/_cloneTypedArray.js +16 -0
  1495. package/node_modules/lodash/_compareAscending.js +41 -0
  1496. package/node_modules/lodash/_compareMultiple.js +44 -0
  1497. package/node_modules/lodash/_composeArgs.js +39 -0
  1498. package/node_modules/lodash/_composeArgsRight.js +41 -0
  1499. package/node_modules/lodash/_copyArray.js +20 -0
  1500. package/node_modules/lodash/_copyObject.js +40 -0
  1501. package/node_modules/lodash/_copySymbols.js +16 -0
  1502. package/node_modules/lodash/_copySymbolsIn.js +16 -0
  1503. package/node_modules/lodash/_coreJsData.js +6 -0
  1504. package/node_modules/lodash/_countHolders.js +21 -0
  1505. package/node_modules/lodash/_createAggregator.js +23 -0
  1506. package/node_modules/lodash/_createAssigner.js +37 -0
  1507. package/node_modules/lodash/_createBaseEach.js +32 -0
  1508. package/node_modules/lodash/_createBaseFor.js +25 -0
  1509. package/node_modules/lodash/_createBind.js +28 -0
  1510. package/node_modules/lodash/_createCaseFirst.js +33 -0
  1511. package/node_modules/lodash/_createCompounder.js +24 -0
  1512. package/node_modules/lodash/_createCtor.js +37 -0
  1513. package/node_modules/lodash/_createCurry.js +46 -0
  1514. package/node_modules/lodash/_createFind.js +25 -0
  1515. package/node_modules/lodash/_createFlow.js +78 -0
  1516. package/node_modules/lodash/_createHybrid.js +92 -0
  1517. package/node_modules/lodash/_createInverter.js +17 -0
  1518. package/node_modules/lodash/_createMathOperation.js +38 -0
  1519. package/node_modules/lodash/_createOver.js +27 -0
  1520. package/node_modules/lodash/_createPadding.js +33 -0
  1521. package/node_modules/lodash/_createPartial.js +43 -0
  1522. package/node_modules/lodash/_createRange.js +30 -0
  1523. package/node_modules/lodash/_createRecurry.js +56 -0
  1524. package/node_modules/lodash/_createRelationalOperation.js +20 -0
  1525. package/node_modules/lodash/_createRound.js +35 -0
  1526. package/node_modules/lodash/_createSet.js +19 -0
  1527. package/node_modules/lodash/_createToPairs.js +30 -0
  1528. package/node_modules/lodash/_createWrap.js +106 -0
  1529. package/node_modules/lodash/_customDefaultsAssignIn.js +29 -0
  1530. package/node_modules/lodash/_customDefaultsMerge.js +28 -0
  1531. package/node_modules/lodash/_customOmitClone.js +16 -0
  1532. package/node_modules/lodash/_deburrLetter.js +71 -0
  1533. package/node_modules/lodash/_defineProperty.js +11 -0
  1534. package/node_modules/lodash/_equalArrays.js +84 -0
  1535. package/node_modules/lodash/_equalByTag.js +112 -0
  1536. package/node_modules/lodash/_equalObjects.js +90 -0
  1537. package/node_modules/lodash/_escapeHtmlChar.js +21 -0
  1538. package/node_modules/lodash/_escapeStringChar.js +22 -0
  1539. package/node_modules/lodash/_flatRest.js +16 -0
  1540. package/node_modules/lodash/_freeGlobal.js +4 -0
  1541. package/node_modules/lodash/_getAllKeys.js +16 -0
  1542. package/node_modules/lodash/_getAllKeysIn.js +17 -0
  1543. package/node_modules/lodash/_getData.js +15 -0
  1544. package/node_modules/lodash/_getFuncName.js +31 -0
  1545. package/node_modules/lodash/_getHolder.js +13 -0
  1546. package/node_modules/lodash/_getMapData.js +18 -0
  1547. package/node_modules/lodash/_getMatchData.js +24 -0
  1548. package/node_modules/lodash/_getNative.js +17 -0
  1549. package/node_modules/lodash/_getPrototype.js +6 -0
  1550. package/node_modules/lodash/_getRawTag.js +46 -0
  1551. package/node_modules/lodash/_getSymbols.js +30 -0
  1552. package/node_modules/lodash/_getSymbolsIn.js +25 -0
  1553. package/node_modules/lodash/_getTag.js +58 -0
  1554. package/node_modules/lodash/_getValue.js +13 -0
  1555. package/node_modules/lodash/_getView.js +33 -0
  1556. package/node_modules/lodash/_getWrapDetails.js +17 -0
  1557. package/node_modules/lodash/_hasPath.js +39 -0
  1558. package/node_modules/lodash/_hasUnicode.js +26 -0
  1559. package/node_modules/lodash/_hasUnicodeWord.js +15 -0
  1560. package/node_modules/lodash/_hashClear.js +15 -0
  1561. package/node_modules/lodash/_hashDelete.js +17 -0
  1562. package/node_modules/lodash/_hashGet.js +30 -0
  1563. package/node_modules/lodash/_hashHas.js +23 -0
  1564. package/node_modules/lodash/_hashSet.js +23 -0
  1565. package/node_modules/lodash/_initCloneArray.js +26 -0
  1566. package/node_modules/lodash/_initCloneByTag.js +77 -0
  1567. package/node_modules/lodash/_initCloneObject.js +18 -0
  1568. package/node_modules/lodash/_insertWrapDetails.js +23 -0
  1569. package/node_modules/lodash/_isFlattenable.js +20 -0
  1570. package/node_modules/lodash/_isIndex.js +25 -0
  1571. package/node_modules/lodash/_isIterateeCall.js +30 -0
  1572. package/node_modules/lodash/_isKey.js +29 -0
  1573. package/node_modules/lodash/_isKeyable.js +15 -0
  1574. package/node_modules/lodash/_isLaziable.js +28 -0
  1575. package/node_modules/lodash/_isMaskable.js +14 -0
  1576. package/node_modules/lodash/_isMasked.js +20 -0
  1577. package/node_modules/lodash/_isPrototype.js +18 -0
  1578. package/node_modules/lodash/_isStrictComparable.js +15 -0
  1579. package/node_modules/lodash/_iteratorToArray.js +18 -0
  1580. package/node_modules/lodash/_lazyClone.js +23 -0
  1581. package/node_modules/lodash/_lazyReverse.js +23 -0
  1582. package/node_modules/lodash/_lazyValue.js +69 -0
  1583. package/node_modules/lodash/_listCacheClear.js +13 -0
  1584. package/node_modules/lodash/_listCacheDelete.js +35 -0
  1585. package/node_modules/lodash/_listCacheGet.js +19 -0
  1586. package/node_modules/lodash/_listCacheHas.js +16 -0
  1587. package/node_modules/lodash/_listCacheSet.js +26 -0
  1588. package/node_modules/lodash/_mapCacheClear.js +21 -0
  1589. package/node_modules/lodash/_mapCacheDelete.js +18 -0
  1590. package/node_modules/lodash/_mapCacheGet.js +16 -0
  1591. package/node_modules/lodash/_mapCacheHas.js +16 -0
  1592. package/node_modules/lodash/_mapCacheSet.js +22 -0
  1593. package/node_modules/lodash/_mapToArray.js +18 -0
  1594. package/node_modules/lodash/_matchesStrictComparable.js +20 -0
  1595. package/node_modules/lodash/_memoizeCapped.js +26 -0
  1596. package/node_modules/lodash/_mergeData.js +90 -0
  1597. package/node_modules/lodash/_metaMap.js +6 -0
  1598. package/node_modules/lodash/_nativeCreate.js +6 -0
  1599. package/node_modules/lodash/_nativeKeys.js +6 -0
  1600. package/node_modules/lodash/_nativeKeysIn.js +20 -0
  1601. package/node_modules/lodash/_nodeUtil.js +30 -0
  1602. package/node_modules/lodash/_objectToString.js +22 -0
  1603. package/node_modules/lodash/_overArg.js +15 -0
  1604. package/node_modules/lodash/_overRest.js +36 -0
  1605. package/node_modules/lodash/_parent.js +16 -0
  1606. package/node_modules/lodash/_reEscape.js +4 -0
  1607. package/node_modules/lodash/_reEvaluate.js +4 -0
  1608. package/node_modules/lodash/_reInterpolate.js +4 -0
  1609. package/node_modules/lodash/_realNames.js +4 -0
  1610. package/node_modules/lodash/_reorder.js +29 -0
  1611. package/node_modules/lodash/_replaceHolders.js +29 -0
  1612. package/node_modules/lodash/_root.js +9 -0
  1613. package/node_modules/lodash/_safeGet.js +21 -0
  1614. package/node_modules/lodash/_setCacheAdd.js +19 -0
  1615. package/node_modules/lodash/_setCacheHas.js +14 -0
  1616. package/node_modules/lodash/_setData.js +20 -0
  1617. package/node_modules/lodash/_setToArray.js +18 -0
  1618. package/node_modules/lodash/_setToPairs.js +18 -0
  1619. package/node_modules/lodash/_setToString.js +14 -0
  1620. package/node_modules/lodash/_setWrapToString.js +21 -0
  1621. package/node_modules/lodash/_shortOut.js +37 -0
  1622. package/node_modules/lodash/_shuffleSelf.js +28 -0
  1623. package/node_modules/lodash/_stackClear.js +15 -0
  1624. package/node_modules/lodash/_stackDelete.js +18 -0
  1625. package/node_modules/lodash/_stackGet.js +14 -0
  1626. package/node_modules/lodash/_stackHas.js +14 -0
  1627. package/node_modules/lodash/_stackSet.js +34 -0
  1628. package/node_modules/lodash/_strictIndexOf.js +23 -0
  1629. package/node_modules/lodash/_strictLastIndexOf.js +21 -0
  1630. package/node_modules/lodash/_stringSize.js +18 -0
  1631. package/node_modules/lodash/_stringToArray.js +18 -0
  1632. package/node_modules/lodash/_stringToPath.js +27 -0
  1633. package/node_modules/lodash/_toKey.js +21 -0
  1634. package/node_modules/lodash/_toSource.js +26 -0
  1635. package/node_modules/lodash/_trimmedEndIndex.js +19 -0
  1636. package/node_modules/lodash/_unescapeHtmlChar.js +21 -0
  1637. package/node_modules/lodash/_unicodeSize.js +44 -0
  1638. package/node_modules/lodash/_unicodeToArray.js +40 -0
  1639. package/node_modules/lodash/_unicodeWords.js +69 -0
  1640. package/node_modules/lodash/_updateWrapDetails.js +46 -0
  1641. package/node_modules/lodash/_wrapperClone.js +23 -0
  1642. package/node_modules/lodash/add.js +22 -0
  1643. package/node_modules/lodash/after.js +42 -0
  1644. package/node_modules/lodash/array.js +67 -0
  1645. package/node_modules/lodash/ary.js +29 -0
  1646. package/node_modules/lodash/assign.js +58 -0
  1647. package/node_modules/lodash/assignIn.js +40 -0
  1648. package/node_modules/lodash/assignInWith.js +38 -0
  1649. package/node_modules/lodash/assignWith.js +37 -0
  1650. package/node_modules/lodash/at.js +23 -0
  1651. package/node_modules/lodash/attempt.js +35 -0
  1652. package/node_modules/lodash/before.js +40 -0
  1653. package/node_modules/lodash/bind.js +57 -0
  1654. package/node_modules/lodash/bindAll.js +41 -0
  1655. package/node_modules/lodash/bindKey.js +68 -0
  1656. package/node_modules/lodash/camelCase.js +29 -0
  1657. package/node_modules/lodash/capitalize.js +23 -0
  1658. package/node_modules/lodash/castArray.js +44 -0
  1659. package/node_modules/lodash/ceil.js +26 -0
  1660. package/node_modules/lodash/chain.js +38 -0
  1661. package/node_modules/lodash/chunk.js +50 -0
  1662. package/node_modules/lodash/clamp.js +39 -0
  1663. package/node_modules/lodash/clone.js +36 -0
  1664. package/node_modules/lodash/cloneDeep.js +29 -0
  1665. package/node_modules/lodash/cloneDeepWith.js +40 -0
  1666. package/node_modules/lodash/cloneWith.js +42 -0
  1667. package/node_modules/lodash/collection.js +30 -0
  1668. package/node_modules/lodash/commit.js +33 -0
  1669. package/node_modules/lodash/compact.js +31 -0
  1670. package/node_modules/lodash/concat.js +43 -0
  1671. package/node_modules/lodash/cond.js +60 -0
  1672. package/node_modules/lodash/conforms.js +35 -0
  1673. package/node_modules/lodash/conformsTo.js +32 -0
  1674. package/node_modules/lodash/constant.js +26 -0
  1675. package/node_modules/lodash/core.js +3877 -0
  1676. package/node_modules/lodash/core.min.js +30 -0
  1677. package/node_modules/lodash/countBy.js +40 -0
  1678. package/node_modules/lodash/create.js +43 -0
  1679. package/node_modules/lodash/curry.js +57 -0
  1680. package/node_modules/lodash/curryRight.js +54 -0
  1681. package/node_modules/lodash/date.js +3 -0
  1682. package/node_modules/lodash/debounce.js +191 -0
  1683. package/node_modules/lodash/deburr.js +45 -0
  1684. package/node_modules/lodash/defaultTo.js +25 -0
  1685. package/node_modules/lodash/defaults.js +64 -0
  1686. package/node_modules/lodash/defaultsDeep.js +30 -0
  1687. package/node_modules/lodash/defer.js +26 -0
  1688. package/node_modules/lodash/delay.js +28 -0
  1689. package/node_modules/lodash/difference.js +33 -0
  1690. package/node_modules/lodash/differenceBy.js +44 -0
  1691. package/node_modules/lodash/differenceWith.js +40 -0
  1692. package/node_modules/lodash/divide.js +22 -0
  1693. package/node_modules/lodash/drop.js +38 -0
  1694. package/node_modules/lodash/dropRight.js +39 -0
  1695. package/node_modules/lodash/dropRightWhile.js +45 -0
  1696. package/node_modules/lodash/dropWhile.js +45 -0
  1697. package/node_modules/lodash/each.js +1 -0
  1698. package/node_modules/lodash/eachRight.js +1 -0
  1699. package/node_modules/lodash/endsWith.js +43 -0
  1700. package/node_modules/lodash/entries.js +1 -0
  1701. package/node_modules/lodash/entriesIn.js +1 -0
  1702. package/node_modules/lodash/eq.js +37 -0
  1703. package/node_modules/lodash/escape.js +43 -0
  1704. package/node_modules/lodash/escapeRegExp.js +32 -0
  1705. package/node_modules/lodash/every.js +56 -0
  1706. package/node_modules/lodash/extend.js +1 -0
  1707. package/node_modules/lodash/extendWith.js +1 -0
  1708. package/node_modules/lodash/fill.js +45 -0
  1709. package/node_modules/lodash/filter.js +52 -0
  1710. package/node_modules/lodash/find.js +42 -0
  1711. package/node_modules/lodash/findIndex.js +55 -0
  1712. package/node_modules/lodash/findKey.js +44 -0
  1713. package/node_modules/lodash/findLast.js +25 -0
  1714. package/node_modules/lodash/findLastIndex.js +59 -0
  1715. package/node_modules/lodash/findLastKey.js +44 -0
  1716. package/node_modules/lodash/first.js +1 -0
  1717. package/node_modules/lodash/flatMap.js +29 -0
  1718. package/node_modules/lodash/flatMapDeep.js +31 -0
  1719. package/node_modules/lodash/flatMapDepth.js +31 -0
  1720. package/node_modules/lodash/flatten.js +22 -0
  1721. package/node_modules/lodash/flattenDeep.js +25 -0
  1722. package/node_modules/lodash/flattenDepth.js +33 -0
  1723. package/node_modules/lodash/flip.js +28 -0
  1724. package/node_modules/lodash/floor.js +26 -0
  1725. package/node_modules/lodash/flow.js +27 -0
  1726. package/node_modules/lodash/flowRight.js +26 -0
  1727. package/node_modules/lodash/forEach.js +41 -0
  1728. package/node_modules/lodash/forEachRight.js +31 -0
  1729. package/node_modules/lodash/forIn.js +39 -0
  1730. package/node_modules/lodash/forInRight.js +37 -0
  1731. package/node_modules/lodash/forOwn.js +36 -0
  1732. package/node_modules/lodash/forOwnRight.js +34 -0
  1733. package/node_modules/lodash/fp/F.js +1 -0
  1734. package/node_modules/lodash/fp/T.js +1 -0
  1735. package/node_modules/lodash/fp/__.js +1 -0
  1736. package/node_modules/lodash/fp/_baseConvert.js +569 -0
  1737. package/node_modules/lodash/fp/_convertBrowser.js +18 -0
  1738. package/node_modules/lodash/fp/_falseOptions.js +7 -0
  1739. package/node_modules/lodash/fp/_mapping.js +358 -0
  1740. package/node_modules/lodash/fp/_util.js +16 -0
  1741. package/node_modules/lodash/fp/add.js +5 -0
  1742. package/node_modules/lodash/fp/after.js +5 -0
  1743. package/node_modules/lodash/fp/all.js +1 -0
  1744. package/node_modules/lodash/fp/allPass.js +1 -0
  1745. package/node_modules/lodash/fp/always.js +1 -0
  1746. package/node_modules/lodash/fp/any.js +1 -0
  1747. package/node_modules/lodash/fp/anyPass.js +1 -0
  1748. package/node_modules/lodash/fp/apply.js +1 -0
  1749. package/node_modules/lodash/fp/array.js +2 -0
  1750. package/node_modules/lodash/fp/ary.js +5 -0
  1751. package/node_modules/lodash/fp/assign.js +5 -0
  1752. package/node_modules/lodash/fp/assignAll.js +5 -0
  1753. package/node_modules/lodash/fp/assignAllWith.js +5 -0
  1754. package/node_modules/lodash/fp/assignIn.js +5 -0
  1755. package/node_modules/lodash/fp/assignInAll.js +5 -0
  1756. package/node_modules/lodash/fp/assignInAllWith.js +5 -0
  1757. package/node_modules/lodash/fp/assignInWith.js +5 -0
  1758. package/node_modules/lodash/fp/assignWith.js +5 -0
  1759. package/node_modules/lodash/fp/assoc.js +1 -0
  1760. package/node_modules/lodash/fp/assocPath.js +1 -0
  1761. package/node_modules/lodash/fp/at.js +5 -0
  1762. package/node_modules/lodash/fp/attempt.js +5 -0
  1763. package/node_modules/lodash/fp/before.js +5 -0
  1764. package/node_modules/lodash/fp/bind.js +5 -0
  1765. package/node_modules/lodash/fp/bindAll.js +5 -0
  1766. package/node_modules/lodash/fp/bindKey.js +5 -0
  1767. package/node_modules/lodash/fp/camelCase.js +5 -0
  1768. package/node_modules/lodash/fp/capitalize.js +5 -0
  1769. package/node_modules/lodash/fp/castArray.js +5 -0
  1770. package/node_modules/lodash/fp/ceil.js +5 -0
  1771. package/node_modules/lodash/fp/chain.js +5 -0
  1772. package/node_modules/lodash/fp/chunk.js +5 -0
  1773. package/node_modules/lodash/fp/clamp.js +5 -0
  1774. package/node_modules/lodash/fp/clone.js +5 -0
  1775. package/node_modules/lodash/fp/cloneDeep.js +5 -0
  1776. package/node_modules/lodash/fp/cloneDeepWith.js +5 -0
  1777. package/node_modules/lodash/fp/cloneWith.js +5 -0
  1778. package/node_modules/lodash/fp/collection.js +2 -0
  1779. package/node_modules/lodash/fp/commit.js +5 -0
  1780. package/node_modules/lodash/fp/compact.js +5 -0
  1781. package/node_modules/lodash/fp/complement.js +1 -0
  1782. package/node_modules/lodash/fp/compose.js +1 -0
  1783. package/node_modules/lodash/fp/concat.js +5 -0
  1784. package/node_modules/lodash/fp/cond.js +5 -0
  1785. package/node_modules/lodash/fp/conforms.js +1 -0
  1786. package/node_modules/lodash/fp/conformsTo.js +5 -0
  1787. package/node_modules/lodash/fp/constant.js +5 -0
  1788. package/node_modules/lodash/fp/contains.js +1 -0
  1789. package/node_modules/lodash/fp/convert.js +18 -0
  1790. package/node_modules/lodash/fp/countBy.js +5 -0
  1791. package/node_modules/lodash/fp/create.js +5 -0
  1792. package/node_modules/lodash/fp/curry.js +5 -0
  1793. package/node_modules/lodash/fp/curryN.js +5 -0
  1794. package/node_modules/lodash/fp/curryRight.js +5 -0
  1795. package/node_modules/lodash/fp/curryRightN.js +5 -0
  1796. package/node_modules/lodash/fp/date.js +2 -0
  1797. package/node_modules/lodash/fp/debounce.js +5 -0
  1798. package/node_modules/lodash/fp/deburr.js +5 -0
  1799. package/node_modules/lodash/fp/defaultTo.js +5 -0
  1800. package/node_modules/lodash/fp/defaults.js +5 -0
  1801. package/node_modules/lodash/fp/defaultsAll.js +5 -0
  1802. package/node_modules/lodash/fp/defaultsDeep.js +5 -0
  1803. package/node_modules/lodash/fp/defaultsDeepAll.js +5 -0
  1804. package/node_modules/lodash/fp/defer.js +5 -0
  1805. package/node_modules/lodash/fp/delay.js +5 -0
  1806. package/node_modules/lodash/fp/difference.js +5 -0
  1807. package/node_modules/lodash/fp/differenceBy.js +5 -0
  1808. package/node_modules/lodash/fp/differenceWith.js +5 -0
  1809. package/node_modules/lodash/fp/dissoc.js +1 -0
  1810. package/node_modules/lodash/fp/dissocPath.js +1 -0
  1811. package/node_modules/lodash/fp/divide.js +5 -0
  1812. package/node_modules/lodash/fp/drop.js +5 -0
  1813. package/node_modules/lodash/fp/dropLast.js +1 -0
  1814. package/node_modules/lodash/fp/dropLastWhile.js +1 -0
  1815. package/node_modules/lodash/fp/dropRight.js +5 -0
  1816. package/node_modules/lodash/fp/dropRightWhile.js +5 -0
  1817. package/node_modules/lodash/fp/dropWhile.js +5 -0
  1818. package/node_modules/lodash/fp/each.js +1 -0
  1819. package/node_modules/lodash/fp/eachRight.js +1 -0
  1820. package/node_modules/lodash/fp/endsWith.js +5 -0
  1821. package/node_modules/lodash/fp/entries.js +1 -0
  1822. package/node_modules/lodash/fp/entriesIn.js +1 -0
  1823. package/node_modules/lodash/fp/eq.js +5 -0
  1824. package/node_modules/lodash/fp/equals.js +1 -0
  1825. package/node_modules/lodash/fp/escape.js +5 -0
  1826. package/node_modules/lodash/fp/escapeRegExp.js +5 -0
  1827. package/node_modules/lodash/fp/every.js +5 -0
  1828. package/node_modules/lodash/fp/extend.js +1 -0
  1829. package/node_modules/lodash/fp/extendAll.js +1 -0
  1830. package/node_modules/lodash/fp/extendAllWith.js +1 -0
  1831. package/node_modules/lodash/fp/extendWith.js +1 -0
  1832. package/node_modules/lodash/fp/fill.js +5 -0
  1833. package/node_modules/lodash/fp/filter.js +5 -0
  1834. package/node_modules/lodash/fp/find.js +5 -0
  1835. package/node_modules/lodash/fp/findFrom.js +5 -0
  1836. package/node_modules/lodash/fp/findIndex.js +5 -0
  1837. package/node_modules/lodash/fp/findIndexFrom.js +5 -0
  1838. package/node_modules/lodash/fp/findKey.js +5 -0
  1839. package/node_modules/lodash/fp/findLast.js +5 -0
  1840. package/node_modules/lodash/fp/findLastFrom.js +5 -0
  1841. package/node_modules/lodash/fp/findLastIndex.js +5 -0
  1842. package/node_modules/lodash/fp/findLastIndexFrom.js +5 -0
  1843. package/node_modules/lodash/fp/findLastKey.js +5 -0
  1844. package/node_modules/lodash/fp/first.js +1 -0
  1845. package/node_modules/lodash/fp/flatMap.js +5 -0
  1846. package/node_modules/lodash/fp/flatMapDeep.js +5 -0
  1847. package/node_modules/lodash/fp/flatMapDepth.js +5 -0
  1848. package/node_modules/lodash/fp/flatten.js +5 -0
  1849. package/node_modules/lodash/fp/flattenDeep.js +5 -0
  1850. package/node_modules/lodash/fp/flattenDepth.js +5 -0
  1851. package/node_modules/lodash/fp/flip.js +5 -0
  1852. package/node_modules/lodash/fp/floor.js +5 -0
  1853. package/node_modules/lodash/fp/flow.js +5 -0
  1854. package/node_modules/lodash/fp/flowRight.js +5 -0
  1855. package/node_modules/lodash/fp/forEach.js +5 -0
  1856. package/node_modules/lodash/fp/forEachRight.js +5 -0
  1857. package/node_modules/lodash/fp/forIn.js +5 -0
  1858. package/node_modules/lodash/fp/forInRight.js +5 -0
  1859. package/node_modules/lodash/fp/forOwn.js +5 -0
  1860. package/node_modules/lodash/fp/forOwnRight.js +5 -0
  1861. package/node_modules/lodash/fp/fromPairs.js +5 -0
  1862. package/node_modules/lodash/fp/function.js +2 -0
  1863. package/node_modules/lodash/fp/functions.js +5 -0
  1864. package/node_modules/lodash/fp/functionsIn.js +5 -0
  1865. package/node_modules/lodash/fp/get.js +5 -0
  1866. package/node_modules/lodash/fp/getOr.js +5 -0
  1867. package/node_modules/lodash/fp/groupBy.js +5 -0
  1868. package/node_modules/lodash/fp/gt.js +5 -0
  1869. package/node_modules/lodash/fp/gte.js +5 -0
  1870. package/node_modules/lodash/fp/has.js +5 -0
  1871. package/node_modules/lodash/fp/hasIn.js +5 -0
  1872. package/node_modules/lodash/fp/head.js +5 -0
  1873. package/node_modules/lodash/fp/identical.js +1 -0
  1874. package/node_modules/lodash/fp/identity.js +5 -0
  1875. package/node_modules/lodash/fp/inRange.js +5 -0
  1876. package/node_modules/lodash/fp/includes.js +5 -0
  1877. package/node_modules/lodash/fp/includesFrom.js +5 -0
  1878. package/node_modules/lodash/fp/indexBy.js +1 -0
  1879. package/node_modules/lodash/fp/indexOf.js +5 -0
  1880. package/node_modules/lodash/fp/indexOfFrom.js +5 -0
  1881. package/node_modules/lodash/fp/init.js +1 -0
  1882. package/node_modules/lodash/fp/initial.js +5 -0
  1883. package/node_modules/lodash/fp/intersection.js +5 -0
  1884. package/node_modules/lodash/fp/intersectionBy.js +5 -0
  1885. package/node_modules/lodash/fp/intersectionWith.js +5 -0
  1886. package/node_modules/lodash/fp/invert.js +5 -0
  1887. package/node_modules/lodash/fp/invertBy.js +5 -0
  1888. package/node_modules/lodash/fp/invertObj.js +1 -0
  1889. package/node_modules/lodash/fp/invoke.js +5 -0
  1890. package/node_modules/lodash/fp/invokeArgs.js +5 -0
  1891. package/node_modules/lodash/fp/invokeArgsMap.js +5 -0
  1892. package/node_modules/lodash/fp/invokeMap.js +5 -0
  1893. package/node_modules/lodash/fp/isArguments.js +5 -0
  1894. package/node_modules/lodash/fp/isArray.js +5 -0
  1895. package/node_modules/lodash/fp/isArrayBuffer.js +5 -0
  1896. package/node_modules/lodash/fp/isArrayLike.js +5 -0
  1897. package/node_modules/lodash/fp/isArrayLikeObject.js +5 -0
  1898. package/node_modules/lodash/fp/isBoolean.js +5 -0
  1899. package/node_modules/lodash/fp/isBuffer.js +5 -0
  1900. package/node_modules/lodash/fp/isDate.js +5 -0
  1901. package/node_modules/lodash/fp/isElement.js +5 -0
  1902. package/node_modules/lodash/fp/isEmpty.js +5 -0
  1903. package/node_modules/lodash/fp/isEqual.js +5 -0
  1904. package/node_modules/lodash/fp/isEqualWith.js +5 -0
  1905. package/node_modules/lodash/fp/isError.js +5 -0
  1906. package/node_modules/lodash/fp/isFinite.js +5 -0
  1907. package/node_modules/lodash/fp/isFunction.js +5 -0
  1908. package/node_modules/lodash/fp/isInteger.js +5 -0
  1909. package/node_modules/lodash/fp/isLength.js +5 -0
  1910. package/node_modules/lodash/fp/isMap.js +5 -0
  1911. package/node_modules/lodash/fp/isMatch.js +5 -0
  1912. package/node_modules/lodash/fp/isMatchWith.js +5 -0
  1913. package/node_modules/lodash/fp/isNaN.js +5 -0
  1914. package/node_modules/lodash/fp/isNative.js +5 -0
  1915. package/node_modules/lodash/fp/isNil.js +5 -0
  1916. package/node_modules/lodash/fp/isNull.js +5 -0
  1917. package/node_modules/lodash/fp/isNumber.js +5 -0
  1918. package/node_modules/lodash/fp/isObject.js +5 -0
  1919. package/node_modules/lodash/fp/isObjectLike.js +5 -0
  1920. package/node_modules/lodash/fp/isPlainObject.js +5 -0
  1921. package/node_modules/lodash/fp/isRegExp.js +5 -0
  1922. package/node_modules/lodash/fp/isSafeInteger.js +5 -0
  1923. package/node_modules/lodash/fp/isSet.js +5 -0
  1924. package/node_modules/lodash/fp/isString.js +5 -0
  1925. package/node_modules/lodash/fp/isSymbol.js +5 -0
  1926. package/node_modules/lodash/fp/isTypedArray.js +5 -0
  1927. package/node_modules/lodash/fp/isUndefined.js +5 -0
  1928. package/node_modules/lodash/fp/isWeakMap.js +5 -0
  1929. package/node_modules/lodash/fp/isWeakSet.js +5 -0
  1930. package/node_modules/lodash/fp/iteratee.js +5 -0
  1931. package/node_modules/lodash/fp/join.js +5 -0
  1932. package/node_modules/lodash/fp/juxt.js +1 -0
  1933. package/node_modules/lodash/fp/kebabCase.js +5 -0
  1934. package/node_modules/lodash/fp/keyBy.js +5 -0
  1935. package/node_modules/lodash/fp/keys.js +5 -0
  1936. package/node_modules/lodash/fp/keysIn.js +5 -0
  1937. package/node_modules/lodash/fp/lang.js +2 -0
  1938. package/node_modules/lodash/fp/last.js +5 -0
  1939. package/node_modules/lodash/fp/lastIndexOf.js +5 -0
  1940. package/node_modules/lodash/fp/lastIndexOfFrom.js +5 -0
  1941. package/node_modules/lodash/fp/lowerCase.js +5 -0
  1942. package/node_modules/lodash/fp/lowerFirst.js +5 -0
  1943. package/node_modules/lodash/fp/lt.js +5 -0
  1944. package/node_modules/lodash/fp/lte.js +5 -0
  1945. package/node_modules/lodash/fp/map.js +5 -0
  1946. package/node_modules/lodash/fp/mapKeys.js +5 -0
  1947. package/node_modules/lodash/fp/mapValues.js +5 -0
  1948. package/node_modules/lodash/fp/matches.js +1 -0
  1949. package/node_modules/lodash/fp/matchesProperty.js +5 -0
  1950. package/node_modules/lodash/fp/math.js +2 -0
  1951. package/node_modules/lodash/fp/max.js +5 -0
  1952. package/node_modules/lodash/fp/maxBy.js +5 -0
  1953. package/node_modules/lodash/fp/mean.js +5 -0
  1954. package/node_modules/lodash/fp/meanBy.js +5 -0
  1955. package/node_modules/lodash/fp/memoize.js +5 -0
  1956. package/node_modules/lodash/fp/merge.js +5 -0
  1957. package/node_modules/lodash/fp/mergeAll.js +5 -0
  1958. package/node_modules/lodash/fp/mergeAllWith.js +5 -0
  1959. package/node_modules/lodash/fp/mergeWith.js +5 -0
  1960. package/node_modules/lodash/fp/method.js +5 -0
  1961. package/node_modules/lodash/fp/methodOf.js +5 -0
  1962. package/node_modules/lodash/fp/min.js +5 -0
  1963. package/node_modules/lodash/fp/minBy.js +5 -0
  1964. package/node_modules/lodash/fp/mixin.js +5 -0
  1965. package/node_modules/lodash/fp/multiply.js +5 -0
  1966. package/node_modules/lodash/fp/nAry.js +1 -0
  1967. package/node_modules/lodash/fp/negate.js +5 -0
  1968. package/node_modules/lodash/fp/next.js +5 -0
  1969. package/node_modules/lodash/fp/noop.js +5 -0
  1970. package/node_modules/lodash/fp/now.js +5 -0
  1971. package/node_modules/lodash/fp/nth.js +5 -0
  1972. package/node_modules/lodash/fp/nthArg.js +5 -0
  1973. package/node_modules/lodash/fp/number.js +2 -0
  1974. package/node_modules/lodash/fp/object.js +2 -0
  1975. package/node_modules/lodash/fp/omit.js +5 -0
  1976. package/node_modules/lodash/fp/omitAll.js +1 -0
  1977. package/node_modules/lodash/fp/omitBy.js +5 -0
  1978. package/node_modules/lodash/fp/once.js +5 -0
  1979. package/node_modules/lodash/fp/orderBy.js +5 -0
  1980. package/node_modules/lodash/fp/over.js +5 -0
  1981. package/node_modules/lodash/fp/overArgs.js +5 -0
  1982. package/node_modules/lodash/fp/overEvery.js +5 -0
  1983. package/node_modules/lodash/fp/overSome.js +5 -0
  1984. package/node_modules/lodash/fp/pad.js +5 -0
  1985. package/node_modules/lodash/fp/padChars.js +5 -0
  1986. package/node_modules/lodash/fp/padCharsEnd.js +5 -0
  1987. package/node_modules/lodash/fp/padCharsStart.js +5 -0
  1988. package/node_modules/lodash/fp/padEnd.js +5 -0
  1989. package/node_modules/lodash/fp/padStart.js +5 -0
  1990. package/node_modules/lodash/fp/parseInt.js +5 -0
  1991. package/node_modules/lodash/fp/partial.js +5 -0
  1992. package/node_modules/lodash/fp/partialRight.js +5 -0
  1993. package/node_modules/lodash/fp/partition.js +5 -0
  1994. package/node_modules/lodash/fp/path.js +1 -0
  1995. package/node_modules/lodash/fp/pathEq.js +1 -0
  1996. package/node_modules/lodash/fp/pathOr.js +1 -0
  1997. package/node_modules/lodash/fp/paths.js +1 -0
  1998. package/node_modules/lodash/fp/pick.js +5 -0
  1999. package/node_modules/lodash/fp/pickAll.js +1 -0
  2000. package/node_modules/lodash/fp/pickBy.js +5 -0
  2001. package/node_modules/lodash/fp/pipe.js +1 -0
  2002. package/node_modules/lodash/fp/placeholder.js +6 -0
  2003. package/node_modules/lodash/fp/plant.js +5 -0
  2004. package/node_modules/lodash/fp/pluck.js +1 -0
  2005. package/node_modules/lodash/fp/prop.js +1 -0
  2006. package/node_modules/lodash/fp/propEq.js +1 -0
  2007. package/node_modules/lodash/fp/propOr.js +1 -0
  2008. package/node_modules/lodash/fp/property.js +1 -0
  2009. package/node_modules/lodash/fp/propertyOf.js +5 -0
  2010. package/node_modules/lodash/fp/props.js +1 -0
  2011. package/node_modules/lodash/fp/pull.js +5 -0
  2012. package/node_modules/lodash/fp/pullAll.js +5 -0
  2013. package/node_modules/lodash/fp/pullAllBy.js +5 -0
  2014. package/node_modules/lodash/fp/pullAllWith.js +5 -0
  2015. package/node_modules/lodash/fp/pullAt.js +5 -0
  2016. package/node_modules/lodash/fp/random.js +5 -0
  2017. package/node_modules/lodash/fp/range.js +5 -0
  2018. package/node_modules/lodash/fp/rangeRight.js +5 -0
  2019. package/node_modules/lodash/fp/rangeStep.js +5 -0
  2020. package/node_modules/lodash/fp/rangeStepRight.js +5 -0
  2021. package/node_modules/lodash/fp/rearg.js +5 -0
  2022. package/node_modules/lodash/fp/reduce.js +5 -0
  2023. package/node_modules/lodash/fp/reduceRight.js +5 -0
  2024. package/node_modules/lodash/fp/reject.js +5 -0
  2025. package/node_modules/lodash/fp/remove.js +5 -0
  2026. package/node_modules/lodash/fp/repeat.js +5 -0
  2027. package/node_modules/lodash/fp/replace.js +5 -0
  2028. package/node_modules/lodash/fp/rest.js +5 -0
  2029. package/node_modules/lodash/fp/restFrom.js +5 -0
  2030. package/node_modules/lodash/fp/result.js +5 -0
  2031. package/node_modules/lodash/fp/reverse.js +5 -0
  2032. package/node_modules/lodash/fp/round.js +5 -0
  2033. package/node_modules/lodash/fp/sample.js +5 -0
  2034. package/node_modules/lodash/fp/sampleSize.js +5 -0
  2035. package/node_modules/lodash/fp/seq.js +2 -0
  2036. package/node_modules/lodash/fp/set.js +5 -0
  2037. package/node_modules/lodash/fp/setWith.js +5 -0
  2038. package/node_modules/lodash/fp/shuffle.js +5 -0
  2039. package/node_modules/lodash/fp/size.js +5 -0
  2040. package/node_modules/lodash/fp/slice.js +5 -0
  2041. package/node_modules/lodash/fp/snakeCase.js +5 -0
  2042. package/node_modules/lodash/fp/some.js +5 -0
  2043. package/node_modules/lodash/fp/sortBy.js +5 -0
  2044. package/node_modules/lodash/fp/sortedIndex.js +5 -0
  2045. package/node_modules/lodash/fp/sortedIndexBy.js +5 -0
  2046. package/node_modules/lodash/fp/sortedIndexOf.js +5 -0
  2047. package/node_modules/lodash/fp/sortedLastIndex.js +5 -0
  2048. package/node_modules/lodash/fp/sortedLastIndexBy.js +5 -0
  2049. package/node_modules/lodash/fp/sortedLastIndexOf.js +5 -0
  2050. package/node_modules/lodash/fp/sortedUniq.js +5 -0
  2051. package/node_modules/lodash/fp/sortedUniqBy.js +5 -0
  2052. package/node_modules/lodash/fp/split.js +5 -0
  2053. package/node_modules/lodash/fp/spread.js +5 -0
  2054. package/node_modules/lodash/fp/spreadFrom.js +5 -0
  2055. package/node_modules/lodash/fp/startCase.js +5 -0
  2056. package/node_modules/lodash/fp/startsWith.js +5 -0
  2057. package/node_modules/lodash/fp/string.js +2 -0
  2058. package/node_modules/lodash/fp/stubArray.js +5 -0
  2059. package/node_modules/lodash/fp/stubFalse.js +5 -0
  2060. package/node_modules/lodash/fp/stubObject.js +5 -0
  2061. package/node_modules/lodash/fp/stubString.js +5 -0
  2062. package/node_modules/lodash/fp/stubTrue.js +5 -0
  2063. package/node_modules/lodash/fp/subtract.js +5 -0
  2064. package/node_modules/lodash/fp/sum.js +5 -0
  2065. package/node_modules/lodash/fp/sumBy.js +5 -0
  2066. package/node_modules/lodash/fp/symmetricDifference.js +1 -0
  2067. package/node_modules/lodash/fp/symmetricDifferenceBy.js +1 -0
  2068. package/node_modules/lodash/fp/symmetricDifferenceWith.js +1 -0
  2069. package/node_modules/lodash/fp/tail.js +5 -0
  2070. package/node_modules/lodash/fp/take.js +5 -0
  2071. package/node_modules/lodash/fp/takeLast.js +1 -0
  2072. package/node_modules/lodash/fp/takeLastWhile.js +1 -0
  2073. package/node_modules/lodash/fp/takeRight.js +5 -0
  2074. package/node_modules/lodash/fp/takeRightWhile.js +5 -0
  2075. package/node_modules/lodash/fp/takeWhile.js +5 -0
  2076. package/node_modules/lodash/fp/tap.js +5 -0
  2077. package/node_modules/lodash/fp/template.js +5 -0
  2078. package/node_modules/lodash/fp/templateSettings.js +5 -0
  2079. package/node_modules/lodash/fp/throttle.js +5 -0
  2080. package/node_modules/lodash/fp/thru.js +5 -0
  2081. package/node_modules/lodash/fp/times.js +5 -0
  2082. package/node_modules/lodash/fp/toArray.js +5 -0
  2083. package/node_modules/lodash/fp/toFinite.js +5 -0
  2084. package/node_modules/lodash/fp/toInteger.js +5 -0
  2085. package/node_modules/lodash/fp/toIterator.js +5 -0
  2086. package/node_modules/lodash/fp/toJSON.js +5 -0
  2087. package/node_modules/lodash/fp/toLength.js +5 -0
  2088. package/node_modules/lodash/fp/toLower.js +5 -0
  2089. package/node_modules/lodash/fp/toNumber.js +5 -0
  2090. package/node_modules/lodash/fp/toPairs.js +5 -0
  2091. package/node_modules/lodash/fp/toPairsIn.js +5 -0
  2092. package/node_modules/lodash/fp/toPath.js +5 -0
  2093. package/node_modules/lodash/fp/toPlainObject.js +5 -0
  2094. package/node_modules/lodash/fp/toSafeInteger.js +5 -0
  2095. package/node_modules/lodash/fp/toString.js +5 -0
  2096. package/node_modules/lodash/fp/toUpper.js +5 -0
  2097. package/node_modules/lodash/fp/transform.js +5 -0
  2098. package/node_modules/lodash/fp/trim.js +5 -0
  2099. package/node_modules/lodash/fp/trimChars.js +5 -0
  2100. package/node_modules/lodash/fp/trimCharsEnd.js +5 -0
  2101. package/node_modules/lodash/fp/trimCharsStart.js +5 -0
  2102. package/node_modules/lodash/fp/trimEnd.js +5 -0
  2103. package/node_modules/lodash/fp/trimStart.js +5 -0
  2104. package/node_modules/lodash/fp/truncate.js +5 -0
  2105. package/node_modules/lodash/fp/unapply.js +1 -0
  2106. package/node_modules/lodash/fp/unary.js +5 -0
  2107. package/node_modules/lodash/fp/unescape.js +5 -0
  2108. package/node_modules/lodash/fp/union.js +5 -0
  2109. package/node_modules/lodash/fp/unionBy.js +5 -0
  2110. package/node_modules/lodash/fp/unionWith.js +5 -0
  2111. package/node_modules/lodash/fp/uniq.js +5 -0
  2112. package/node_modules/lodash/fp/uniqBy.js +5 -0
  2113. package/node_modules/lodash/fp/uniqWith.js +5 -0
  2114. package/node_modules/lodash/fp/uniqueId.js +5 -0
  2115. package/node_modules/lodash/fp/unnest.js +1 -0
  2116. package/node_modules/lodash/fp/unset.js +5 -0
  2117. package/node_modules/lodash/fp/unzip.js +5 -0
  2118. package/node_modules/lodash/fp/unzipWith.js +5 -0
  2119. package/node_modules/lodash/fp/update.js +5 -0
  2120. package/node_modules/lodash/fp/updateWith.js +5 -0
  2121. package/node_modules/lodash/fp/upperCase.js +5 -0
  2122. package/node_modules/lodash/fp/upperFirst.js +5 -0
  2123. package/node_modules/lodash/fp/useWith.js +1 -0
  2124. package/node_modules/lodash/fp/util.js +2 -0
  2125. package/node_modules/lodash/fp/value.js +5 -0
  2126. package/node_modules/lodash/fp/valueOf.js +5 -0
  2127. package/node_modules/lodash/fp/values.js +5 -0
  2128. package/node_modules/lodash/fp/valuesIn.js +5 -0
  2129. package/node_modules/lodash/fp/where.js +1 -0
  2130. package/node_modules/lodash/fp/whereEq.js +1 -0
  2131. package/node_modules/lodash/fp/without.js +5 -0
  2132. package/node_modules/lodash/fp/words.js +5 -0
  2133. package/node_modules/lodash/fp/wrap.js +5 -0
  2134. package/node_modules/lodash/fp/wrapperAt.js +5 -0
  2135. package/node_modules/lodash/fp/wrapperChain.js +5 -0
  2136. package/node_modules/lodash/fp/wrapperLodash.js +5 -0
  2137. package/node_modules/lodash/fp/wrapperReverse.js +5 -0
  2138. package/node_modules/lodash/fp/wrapperValue.js +5 -0
  2139. package/node_modules/lodash/fp/xor.js +5 -0
  2140. package/node_modules/lodash/fp/xorBy.js +5 -0
  2141. package/node_modules/lodash/fp/xorWith.js +5 -0
  2142. package/node_modules/lodash/fp/zip.js +5 -0
  2143. package/node_modules/lodash/fp/zipAll.js +5 -0
  2144. package/node_modules/lodash/fp/zipObj.js +1 -0
  2145. package/node_modules/lodash/fp/zipObject.js +5 -0
  2146. package/node_modules/lodash/fp/zipObjectDeep.js +5 -0
  2147. package/node_modules/lodash/fp/zipWith.js +5 -0
  2148. package/node_modules/lodash/fp.js +2 -0
  2149. package/node_modules/lodash/fromPairs.js +30 -0
  2150. package/node_modules/lodash/function.js +25 -0
  2151. package/node_modules/lodash/functions.js +31 -0
  2152. package/node_modules/lodash/functionsIn.js +31 -0
  2153. package/node_modules/lodash/get.js +33 -0
  2154. package/node_modules/lodash/groupBy.js +41 -0
  2155. package/node_modules/lodash/gt.js +29 -0
  2156. package/node_modules/lodash/gte.js +30 -0
  2157. package/node_modules/lodash/has.js +35 -0
  2158. package/node_modules/lodash/hasIn.js +34 -0
  2159. package/node_modules/lodash/head.js +23 -0
  2160. package/node_modules/lodash/identity.js +21 -0
  2161. package/node_modules/lodash/inRange.js +55 -0
  2162. package/node_modules/lodash/includes.js +53 -0
  2163. package/node_modules/lodash/index.js +1 -0
  2164. package/node_modules/lodash/indexOf.js +42 -0
  2165. package/node_modules/lodash/initial.js +22 -0
  2166. package/node_modules/lodash/intersection.js +30 -0
  2167. package/node_modules/lodash/intersectionBy.js +45 -0
  2168. package/node_modules/lodash/intersectionWith.js +41 -0
  2169. package/node_modules/lodash/invert.js +42 -0
  2170. package/node_modules/lodash/invertBy.js +56 -0
  2171. package/node_modules/lodash/invoke.js +24 -0
  2172. package/node_modules/lodash/invokeMap.js +41 -0
  2173. package/node_modules/lodash/isArguments.js +36 -0
  2174. package/node_modules/lodash/isArray.js +26 -0
  2175. package/node_modules/lodash/isArrayBuffer.js +27 -0
  2176. package/node_modules/lodash/isArrayLike.js +33 -0
  2177. package/node_modules/lodash/isArrayLikeObject.js +33 -0
  2178. package/node_modules/lodash/isBoolean.js +29 -0
  2179. package/node_modules/lodash/isBuffer.js +38 -0
  2180. package/node_modules/lodash/isDate.js +27 -0
  2181. package/node_modules/lodash/isElement.js +25 -0
  2182. package/node_modules/lodash/isEmpty.js +77 -0
  2183. package/node_modules/lodash/isEqual.js +35 -0
  2184. package/node_modules/lodash/isEqualWith.js +41 -0
  2185. package/node_modules/lodash/isError.js +36 -0
  2186. package/node_modules/lodash/isFinite.js +36 -0
  2187. package/node_modules/lodash/isFunction.js +37 -0
  2188. package/node_modules/lodash/isInteger.js +33 -0
  2189. package/node_modules/lodash/isLength.js +35 -0
  2190. package/node_modules/lodash/isMap.js +27 -0
  2191. package/node_modules/lodash/isMatch.js +36 -0
  2192. package/node_modules/lodash/isMatchWith.js +41 -0
  2193. package/node_modules/lodash/isNaN.js +38 -0
  2194. package/node_modules/lodash/isNative.js +40 -0
  2195. package/node_modules/lodash/isNil.js +25 -0
  2196. package/node_modules/lodash/isNull.js +22 -0
  2197. package/node_modules/lodash/isNumber.js +38 -0
  2198. package/node_modules/lodash/isObject.js +31 -0
  2199. package/node_modules/lodash/isObjectLike.js +29 -0
  2200. package/node_modules/lodash/isPlainObject.js +62 -0
  2201. package/node_modules/lodash/isRegExp.js +27 -0
  2202. package/node_modules/lodash/isSafeInteger.js +37 -0
  2203. package/node_modules/lodash/isSet.js +27 -0
  2204. package/node_modules/lodash/isString.js +30 -0
  2205. package/node_modules/lodash/isSymbol.js +29 -0
  2206. package/node_modules/lodash/isTypedArray.js +27 -0
  2207. package/node_modules/lodash/isUndefined.js +22 -0
  2208. package/node_modules/lodash/isWeakMap.js +28 -0
  2209. package/node_modules/lodash/isWeakSet.js +28 -0
  2210. package/node_modules/lodash/iteratee.js +53 -0
  2211. package/node_modules/lodash/join.js +26 -0
  2212. package/node_modules/lodash/kebabCase.js +28 -0
  2213. package/node_modules/lodash/keyBy.js +36 -0
  2214. package/node_modules/lodash/keys.js +37 -0
  2215. package/node_modules/lodash/keysIn.js +32 -0
  2216. package/node_modules/lodash/lang.js +58 -0
  2217. package/node_modules/lodash/last.js +20 -0
  2218. package/node_modules/lodash/lastIndexOf.js +46 -0
  2219. package/node_modules/lodash/lodash.js +17259 -0
  2220. package/node_modules/lodash/lodash.min.js +136 -0
  2221. package/node_modules/lodash/lowerCase.js +27 -0
  2222. package/node_modules/lodash/lowerFirst.js +22 -0
  2223. package/node_modules/lodash/lt.js +29 -0
  2224. package/node_modules/lodash/lte.js +30 -0
  2225. package/node_modules/lodash/map.js +53 -0
  2226. package/node_modules/lodash/mapKeys.js +36 -0
  2227. package/node_modules/lodash/mapValues.js +43 -0
  2228. package/node_modules/lodash/matches.js +46 -0
  2229. package/node_modules/lodash/matchesProperty.js +44 -0
  2230. package/node_modules/lodash/math.js +17 -0
  2231. package/node_modules/lodash/max.js +29 -0
  2232. package/node_modules/lodash/maxBy.js +34 -0
  2233. package/node_modules/lodash/mean.js +22 -0
  2234. package/node_modules/lodash/meanBy.js +31 -0
  2235. package/node_modules/lodash/memoize.js +73 -0
  2236. package/node_modules/lodash/merge.js +39 -0
  2237. package/node_modules/lodash/mergeWith.js +39 -0
  2238. package/node_modules/lodash/method.js +34 -0
  2239. package/node_modules/lodash/methodOf.js +33 -0
  2240. package/node_modules/lodash/min.js +29 -0
  2241. package/node_modules/lodash/minBy.js +34 -0
  2242. package/node_modules/lodash/mixin.js +74 -0
  2243. package/node_modules/lodash/multiply.js +22 -0
  2244. package/node_modules/lodash/negate.js +40 -0
  2245. package/node_modules/lodash/next.js +35 -0
  2246. package/node_modules/lodash/noop.js +17 -0
  2247. package/node_modules/lodash/now.js +23 -0
  2248. package/node_modules/lodash/nth.js +29 -0
  2249. package/node_modules/lodash/nthArg.js +32 -0
  2250. package/node_modules/lodash/number.js +5 -0
  2251. package/node_modules/lodash/object.js +49 -0
  2252. package/node_modules/lodash/omit.js +57 -0
  2253. package/node_modules/lodash/omitBy.js +29 -0
  2254. package/node_modules/lodash/once.js +25 -0
  2255. package/node_modules/lodash/orderBy.js +47 -0
  2256. package/node_modules/lodash/over.js +24 -0
  2257. package/node_modules/lodash/overArgs.js +61 -0
  2258. package/node_modules/lodash/overEvery.js +34 -0
  2259. package/node_modules/lodash/overSome.js +37 -0
  2260. package/node_modules/lodash/package.json +19 -0
  2261. package/node_modules/lodash/pad.js +49 -0
  2262. package/node_modules/lodash/padEnd.js +39 -0
  2263. package/node_modules/lodash/padStart.js +39 -0
  2264. package/node_modules/lodash/parseInt.js +43 -0
  2265. package/node_modules/lodash/partial.js +50 -0
  2266. package/node_modules/lodash/partialRight.js +49 -0
  2267. package/node_modules/lodash/partition.js +43 -0
  2268. package/node_modules/lodash/pick.js +25 -0
  2269. package/node_modules/lodash/pickBy.js +37 -0
  2270. package/node_modules/lodash/plant.js +48 -0
  2271. package/node_modules/lodash/property.js +32 -0
  2272. package/node_modules/lodash/propertyOf.js +30 -0
  2273. package/node_modules/lodash/pull.js +29 -0
  2274. package/node_modules/lodash/pullAll.js +29 -0
  2275. package/node_modules/lodash/pullAllBy.js +33 -0
  2276. package/node_modules/lodash/pullAllWith.js +32 -0
  2277. package/node_modules/lodash/pullAt.js +43 -0
  2278. package/node_modules/lodash/random.js +91 -0
  2279. package/node_modules/lodash/range.js +46 -0
  2280. package/node_modules/lodash/rangeRight.js +41 -0
  2281. package/node_modules/lodash/rearg.js +33 -0
  2282. package/node_modules/lodash/reduce.js +51 -0
  2283. package/node_modules/lodash/reduceRight.js +36 -0
  2284. package/node_modules/lodash/reject.js +46 -0
  2285. package/node_modules/lodash/remove.js +53 -0
  2286. package/node_modules/lodash/repeat.js +37 -0
  2287. package/node_modules/lodash/replace.js +29 -0
  2288. package/node_modules/lodash/rest.js +40 -0
  2289. package/node_modules/lodash/result.js +56 -0
  2290. package/node_modules/lodash/reverse.js +34 -0
  2291. package/node_modules/lodash/round.js +26 -0
  2292. package/node_modules/lodash/sample.js +24 -0
  2293. package/node_modules/lodash/sampleSize.js +37 -0
  2294. package/node_modules/lodash/seq.js +16 -0
  2295. package/node_modules/lodash/set.js +35 -0
  2296. package/node_modules/lodash/setWith.js +32 -0
  2297. package/node_modules/lodash/shuffle.js +25 -0
  2298. package/node_modules/lodash/size.js +46 -0
  2299. package/node_modules/lodash/slice.js +37 -0
  2300. package/node_modules/lodash/snakeCase.js +28 -0
  2301. package/node_modules/lodash/some.js +51 -0
  2302. package/node_modules/lodash/sortBy.js +48 -0
  2303. package/node_modules/lodash/sortedIndex.js +24 -0
  2304. package/node_modules/lodash/sortedIndexBy.js +33 -0
  2305. package/node_modules/lodash/sortedIndexOf.js +31 -0
  2306. package/node_modules/lodash/sortedLastIndex.js +25 -0
  2307. package/node_modules/lodash/sortedLastIndexBy.js +33 -0
  2308. package/node_modules/lodash/sortedLastIndexOf.js +31 -0
  2309. package/node_modules/lodash/sortedUniq.js +24 -0
  2310. package/node_modules/lodash/sortedUniqBy.js +26 -0
  2311. package/node_modules/lodash/split.js +52 -0
  2312. package/node_modules/lodash/spread.js +63 -0
  2313. package/node_modules/lodash/startCase.js +29 -0
  2314. package/node_modules/lodash/startsWith.js +39 -0
  2315. package/node_modules/lodash/string.js +33 -0
  2316. package/node_modules/lodash/stubArray.js +23 -0
  2317. package/node_modules/lodash/stubFalse.js +18 -0
  2318. package/node_modules/lodash/stubObject.js +23 -0
  2319. package/node_modules/lodash/stubString.js +18 -0
  2320. package/node_modules/lodash/stubTrue.js +18 -0
  2321. package/node_modules/lodash/subtract.js +22 -0
  2322. package/node_modules/lodash/sum.js +24 -0
  2323. package/node_modules/lodash/sumBy.js +33 -0
  2324. package/node_modules/lodash/tail.js +22 -0
  2325. package/node_modules/lodash/take.js +37 -0
  2326. package/node_modules/lodash/takeRight.js +39 -0
  2327. package/node_modules/lodash/takeRightWhile.js +45 -0
  2328. package/node_modules/lodash/takeWhile.js +45 -0
  2329. package/node_modules/lodash/tap.js +29 -0
  2330. package/node_modules/lodash/template.js +284 -0
  2331. package/node_modules/lodash/templateSettings.js +71 -0
  2332. package/node_modules/lodash/throttle.js +69 -0
  2333. package/node_modules/lodash/thru.js +28 -0
  2334. package/node_modules/lodash/times.js +51 -0
  2335. package/node_modules/lodash/toArray.js +58 -0
  2336. package/node_modules/lodash/toFinite.js +42 -0
  2337. package/node_modules/lodash/toInteger.js +36 -0
  2338. package/node_modules/lodash/toIterator.js +23 -0
  2339. package/node_modules/lodash/toJSON.js +1 -0
  2340. package/node_modules/lodash/toLength.js +38 -0
  2341. package/node_modules/lodash/toLower.js +28 -0
  2342. package/node_modules/lodash/toNumber.js +64 -0
  2343. package/node_modules/lodash/toPairs.js +30 -0
  2344. package/node_modules/lodash/toPairsIn.js +30 -0
  2345. package/node_modules/lodash/toPath.js +33 -0
  2346. package/node_modules/lodash/toPlainObject.js +32 -0
  2347. package/node_modules/lodash/toSafeInteger.js +37 -0
  2348. package/node_modules/lodash/toString.js +28 -0
  2349. package/node_modules/lodash/toUpper.js +28 -0
  2350. package/node_modules/lodash/transform.js +65 -0
  2351. package/node_modules/lodash/trim.js +47 -0
  2352. package/node_modules/lodash/trimEnd.js +41 -0
  2353. package/node_modules/lodash/trimStart.js +43 -0
  2354. package/node_modules/lodash/truncate.js +111 -0
  2355. package/node_modules/lodash/unary.js +22 -0
  2356. package/node_modules/lodash/unescape.js +34 -0
  2357. package/node_modules/lodash/union.js +26 -0
  2358. package/node_modules/lodash/unionBy.js +39 -0
  2359. package/node_modules/lodash/unionWith.js +34 -0
  2360. package/node_modules/lodash/uniq.js +25 -0
  2361. package/node_modules/lodash/uniqBy.js +31 -0
  2362. package/node_modules/lodash/uniqWith.js +28 -0
  2363. package/node_modules/lodash/uniqueId.js +28 -0
  2364. package/node_modules/lodash/unset.js +34 -0
  2365. package/node_modules/lodash/unzip.js +45 -0
  2366. package/node_modules/lodash/unzipWith.js +39 -0
  2367. package/node_modules/lodash/update.js +35 -0
  2368. package/node_modules/lodash/updateWith.js +33 -0
  2369. package/node_modules/lodash/upperCase.js +27 -0
  2370. package/node_modules/lodash/upperFirst.js +22 -0
  2371. package/node_modules/lodash/util.js +34 -0
  2372. package/node_modules/lodash/value.js +1 -0
  2373. package/node_modules/lodash/valueOf.js +1 -0
  2374. package/node_modules/lodash/values.js +34 -0
  2375. package/node_modules/lodash/valuesIn.js +32 -0
  2376. package/node_modules/lodash/without.js +31 -0
  2377. package/node_modules/lodash/words.js +35 -0
  2378. package/node_modules/lodash/wrap.js +30 -0
  2379. package/node_modules/lodash/wrapperAt.js +48 -0
  2380. package/node_modules/lodash/wrapperChain.js +34 -0
  2381. package/node_modules/lodash/wrapperLodash.js +147 -0
  2382. package/node_modules/lodash/wrapperReverse.js +44 -0
  2383. package/node_modules/lodash/wrapperValue.js +21 -0
  2384. package/node_modules/lodash/xor.js +28 -0
  2385. package/node_modules/lodash/xorBy.js +39 -0
  2386. package/node_modules/lodash/xorWith.js +34 -0
  2387. package/node_modules/lodash/zip.js +22 -0
  2388. package/node_modules/lodash/zipObject.js +24 -0
  2389. package/node_modules/lodash/zipObjectDeep.js +23 -0
  2390. package/node_modules/lodash/zipWith.js +32 -0
  2391. package/node_modules/mute-stream/LICENSE +15 -0
  2392. package/node_modules/mute-stream/README.md +68 -0
  2393. package/node_modules/mute-stream/lib/index.js +142 -0
  2394. package/node_modules/mute-stream/package.json +54 -0
  2395. package/node_modules/safer-buffer/LICENSE +21 -0
  2396. package/node_modules/safer-buffer/Porting-Buffer.md +268 -0
  2397. package/node_modules/safer-buffer/Readme.md +156 -0
  2398. package/node_modules/safer-buffer/dangerous.js +58 -0
  2399. package/node_modules/safer-buffer/package.json +34 -0
  2400. package/node_modules/safer-buffer/safer.js +77 -0
  2401. package/node_modules/safer-buffer/tests.js +406 -0
  2402. package/node_modules/signal-exit/LICENSE.txt +16 -0
  2403. package/node_modules/signal-exit/README.md +74 -0
  2404. package/node_modules/signal-exit/dist/cjs/browser.d.ts +12 -0
  2405. package/node_modules/signal-exit/dist/cjs/browser.d.ts.map +1 -0
  2406. package/node_modules/signal-exit/dist/cjs/browser.js +10 -0
  2407. package/node_modules/signal-exit/dist/cjs/browser.js.map +1 -0
  2408. package/node_modules/signal-exit/dist/cjs/index.d.ts +48 -0
  2409. package/node_modules/signal-exit/dist/cjs/index.d.ts.map +1 -0
  2410. package/node_modules/signal-exit/dist/cjs/index.js +279 -0
  2411. package/node_modules/signal-exit/dist/cjs/index.js.map +1 -0
  2412. package/node_modules/signal-exit/dist/cjs/package.json +3 -0
  2413. package/node_modules/signal-exit/dist/cjs/signals.d.ts +29 -0
  2414. package/node_modules/signal-exit/dist/cjs/signals.d.ts.map +1 -0
  2415. package/node_modules/signal-exit/dist/cjs/signals.js +42 -0
  2416. package/node_modules/signal-exit/dist/cjs/signals.js.map +1 -0
  2417. package/node_modules/signal-exit/dist/mjs/browser.d.ts +12 -0
  2418. package/node_modules/signal-exit/dist/mjs/browser.d.ts.map +1 -0
  2419. package/node_modules/signal-exit/dist/mjs/browser.js +4 -0
  2420. package/node_modules/signal-exit/dist/mjs/browser.js.map +1 -0
  2421. package/node_modules/signal-exit/dist/mjs/index.d.ts +48 -0
  2422. package/node_modules/signal-exit/dist/mjs/index.d.ts.map +1 -0
  2423. package/node_modules/signal-exit/dist/mjs/index.js +275 -0
  2424. package/node_modules/signal-exit/dist/mjs/index.js.map +1 -0
  2425. package/node_modules/signal-exit/dist/mjs/package.json +3 -0
  2426. package/node_modules/signal-exit/dist/mjs/signals.d.ts +29 -0
  2427. package/node_modules/signal-exit/dist/mjs/signals.d.ts.map +1 -0
  2428. package/node_modules/signal-exit/dist/mjs/signals.js +39 -0
  2429. package/node_modules/signal-exit/dist/mjs/signals.js.map +1 -0
  2430. package/node_modules/signal-exit/package.json +106 -0
  2431. package/node_modules/string-width/index.d.ts +29 -0
  2432. package/node_modules/string-width/index.js +47 -0
  2433. package/node_modules/string-width/license +9 -0
  2434. package/node_modules/string-width/package.json +56 -0
  2435. package/node_modules/string-width/readme.md +50 -0
  2436. package/node_modules/strip-ansi/index.d.ts +17 -0
  2437. package/node_modules/strip-ansi/index.js +4 -0
  2438. package/node_modules/strip-ansi/license +9 -0
  2439. package/node_modules/strip-ansi/package.json +54 -0
  2440. package/node_modules/strip-ansi/readme.md +46 -0
  2441. package/node_modules/wrap-ansi/index.js +186 -0
  2442. package/node_modules/wrap-ansi/license +9 -0
  2443. package/node_modules/wrap-ansi/package.json +61 -0
  2444. package/node_modules/wrap-ansi/readme.md +97 -0
  2445. package/node_modules/yoctocolors-cjs/index.d.ts +94 -0
  2446. package/node_modules/yoctocolors-cjs/index.js +98 -0
  2447. package/node_modules/yoctocolors-cjs/license +9 -0
  2448. package/node_modules/yoctocolors-cjs/package.json +67 -0
  2449. package/node_modules/yoctocolors-cjs/readme.md +130 -0
  2450. package/node_modules/zod/LICENSE +21 -0
  2451. package/node_modules/zod/README.md +218 -0
  2452. package/node_modules/zod/compile.cjs +96 -0
  2453. package/node_modules/zod/compile.d.cts +1 -0
  2454. package/node_modules/zod/compile.d.ts +1 -0
  2455. package/node_modules/zod/compile.js +52 -0
  2456. package/node_modules/zod/index.cjs +52 -0
  2457. package/node_modules/zod/index.d.cts +3 -0
  2458. package/node_modules/zod/index.d.ts +3 -0
  2459. package/node_modules/zod/index.js +7 -0
  2460. package/node_modules/zod/locales/index.cjs +36 -0
  2461. package/node_modules/zod/locales/index.d.cts +1 -0
  2462. package/node_modules/zod/locales/index.d.ts +1 -0
  2463. package/node_modules/zod/locales/index.js +1 -0
  2464. package/node_modules/zod/locales/package.json +7 -0
  2465. package/node_modules/zod/mini/index.cjs +51 -0
  2466. package/node_modules/zod/mini/index.d.cts +3 -0
  2467. package/node_modules/zod/mini/index.d.ts +3 -0
  2468. package/node_modules/zod/mini/index.js +3 -0
  2469. package/node_modules/zod/mini/package.json +7 -0
  2470. package/node_modules/zod/package.json +147 -0
  2471. package/node_modules/zod/src/compile.ts +56 -0
  2472. package/node_modules/zod/src/index.ts +7 -0
  2473. package/node_modules/zod/src/locales/index.ts +1 -0
  2474. package/node_modules/zod/src/mini/index.ts +3 -0
  2475. package/node_modules/zod/src/v3/ZodError.ts +340 -0
  2476. package/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
  2477. package/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
  2478. package/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
  2479. package/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
  2480. package/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
  2481. package/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
  2482. package/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
  2483. package/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
  2484. package/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
  2485. package/node_modules/zod/src/v3/errors.ts +13 -0
  2486. package/node_modules/zod/src/v3/external.ts +6 -0
  2487. package/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
  2488. package/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
  2489. package/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
  2490. package/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
  2491. package/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
  2492. package/node_modules/zod/src/v3/helpers/util.ts +224 -0
  2493. package/node_modules/zod/src/v3/index.ts +4 -0
  2494. package/node_modules/zod/src/v3/locales/en.ts +124 -0
  2495. package/node_modules/zod/src/v3/standard-schema.ts +113 -0
  2496. package/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
  2497. package/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
  2498. package/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
  2499. package/node_modules/zod/src/v3/tests/array.test.ts +71 -0
  2500. package/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
  2501. package/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
  2502. package/node_modules/zod/src/v3/tests/base.test.ts +29 -0
  2503. package/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
  2504. package/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
  2505. package/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
  2506. package/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
  2507. package/node_modules/zod/src/v3/tests/complex.test.ts +70 -0
  2508. package/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
  2509. package/node_modules/zod/src/v3/tests/date.test.ts +32 -0
  2510. package/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
  2511. package/node_modules/zod/src/v3/tests/default.test.ts +112 -0
  2512. package/node_modules/zod/src/v3/tests/description.test.ts +33 -0
  2513. package/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
  2514. package/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
  2515. package/node_modules/zod/src/v3/tests/error.test.ts +586 -0
  2516. package/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
  2517. package/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
  2518. package/node_modules/zod/src/v3/tests/function.test.ts +261 -0
  2519. package/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
  2520. package/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
  2521. package/node_modules/zod/src/v3/tests/intersection.test.ts +128 -0
  2522. package/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
  2523. package/node_modules/zod/src/v3/tests/language-server.test.ts +206 -0
  2524. package/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
  2525. package/node_modules/zod/src/v3/tests/map.test.ts +110 -0
  2526. package/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
  2527. package/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
  2528. package/node_modules/zod/src/v3/tests/nan.test.ts +24 -0
  2529. package/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
  2530. package/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
  2531. package/node_modules/zod/src/v3/tests/number.test.ts +176 -0
  2532. package/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
  2533. package/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
  2534. package/node_modules/zod/src/v3/tests/object.test.ts +431 -0
  2535. package/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
  2536. package/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
  2537. package/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
  2538. package/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
  2539. package/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
  2540. package/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
  2541. package/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
  2542. package/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
  2543. package/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
  2544. package/node_modules/zod/src/v3/tests/readonly.test.ts +114 -0
  2545. package/node_modules/zod/src/v3/tests/record.test.ts +171 -0
  2546. package/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
  2547. package/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
  2548. package/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
  2549. package/node_modules/zod/src/v3/tests/set.test.ts +142 -0
  2550. package/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
  2551. package/node_modules/zod/src/v3/tests/string.test.ts +922 -0
  2552. package/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
  2553. package/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
  2554. package/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
  2555. package/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
  2556. package/node_modules/zod/src/v3/tests/void.test.ts +15 -0
  2557. package/node_modules/zod/src/v3/types.ts +5138 -0
  2558. package/node_modules/zod/src/v4/classic/checks.ts +33 -0
  2559. package/node_modules/zod/src/v4/classic/coerce.ts +27 -0
  2560. package/node_modules/zod/src/v4/classic/compat.ts +78 -0
  2561. package/node_modules/zod/src/v4/classic/deep-partial.ts +76 -0
  2562. package/node_modules/zod/src/v4/classic/errors.ts +97 -0
  2563. package/node_modules/zod/src/v4/classic/external.ts +57 -0
  2564. package/node_modules/zod/src/v4/classic/from-json-schema.ts +944 -0
  2565. package/node_modules/zod/src/v4/classic/in-out.ts +45 -0
  2566. package/node_modules/zod/src/v4/classic/index.ts +5 -0
  2567. package/node_modules/zod/src/v4/classic/iso.ts +20 -0
  2568. package/node_modules/zod/src/v4/classic/parse.ts +88 -0
  2569. package/node_modules/zod/src/v4/classic/schemas.ts +2937 -0
  2570. package/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
  2571. package/node_modules/zod/src/v4/classic/tests/apply.test.ts +86 -0
  2572. package/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
  2573. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +402 -0
  2574. package/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
  2575. package/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
  2576. package/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
  2577. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +89 -0
  2578. package/node_modules/zod/src/v4/classic/tests/brand.test.ts +106 -0
  2579. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +604 -0
  2580. package/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
  2581. package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +572 -0
  2582. package/node_modules/zod/src/v4/classic/tests/codec.test.ts +704 -0
  2583. package/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
  2584. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +374 -0
  2585. package/node_modules/zod/src/v4/classic/tests/credit-card.test.ts +76 -0
  2586. package/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
  2587. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +985 -0
  2588. package/node_modules/zod/src/v4/classic/tests/date.test.ts +92 -0
  2589. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +316 -0
  2590. package/node_modules/zod/src/v4/classic/tests/deep-partial.test.ts +380 -0
  2591. package/node_modules/zod/src/v4/classic/tests/default-locale.test.ts +32 -0
  2592. package/node_modules/zod/src/v4/classic/tests/default.test.ts +455 -0
  2593. package/node_modules/zod/src/v4/classic/tests/describe-meta-checks.test.ts +27 -0
  2594. package/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
  2595. package/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +221 -0
  2596. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +942 -0
  2597. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +305 -0
  2598. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +917 -0
  2599. package/node_modules/zod/src/v4/classic/tests/error.test.ts +1108 -0
  2600. package/node_modules/zod/src/v4/classic/tests/file.test.ts +96 -0
  2601. package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +179 -0
  2602. package/node_modules/zod/src/v4/classic/tests/fix-json-issue.test.ts +26 -0
  2603. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +1467 -0
  2604. package/node_modules/zod/src/v4/classic/tests/function.test.ts +391 -0
  2605. package/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
  2606. package/node_modules/zod/src/v4/classic/tests/global-config.test.ts +32 -0
  2607. package/node_modules/zod/src/v4/classic/tests/hash.test.ts +67 -0
  2608. package/node_modules/zod/src/v4/classic/tests/iban.test.ts +81 -0
  2609. package/node_modules/zod/src/v4/classic/tests/in-out.test.ts +159 -0
  2610. package/node_modules/zod/src/v4/classic/tests/index.test.ts +958 -0
  2611. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +319 -0
  2612. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +127 -0
  2613. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +334 -0
  2614. package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +215 -0
  2615. package/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +39 -0
  2616. package/node_modules/zod/src/v4/classic/tests/json.test.ts +109 -0
  2617. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +262 -0
  2618. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +128 -0
  2619. package/node_modules/zod/src/v4/classic/tests/locales_ka.test.ts +29 -0
  2620. package/node_modules/zod/src/v4/classic/tests/locales_ro.test.ts +24 -0
  2621. package/node_modules/zod/src/v4/classic/tests/map.test.ts +342 -0
  2622. package/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
  2623. package/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
  2624. package/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +101 -0
  2625. package/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
  2626. package/node_modules/zod/src/v4/classic/tests/number.test.ts +401 -0
  2627. package/node_modules/zod/src/v4/classic/tests/object.test.ts +1006 -0
  2628. package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +235 -0
  2629. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +366 -0
  2630. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +497 -0
  2631. package/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +211 -0
  2632. package/node_modules/zod/src/v4/classic/tests/pipe.test.ts +101 -0
  2633. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +144 -0
  2634. package/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +44 -0
  2635. package/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +351 -0
  2636. package/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
  2637. package/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
  2638. package/node_modules/zod/src/v4/classic/tests/properties.test.ts +141 -0
  2639. package/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
  2640. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +184 -0
  2641. package/node_modules/zod/src/v4/classic/tests/record.test.ts +885 -0
  2642. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +707 -0
  2643. package/node_modules/zod/src/v4/classic/tests/redos.test.ts +68 -0
  2644. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +693 -0
  2645. package/node_modules/zod/src/v4/classic/tests/registries.test.ts +243 -0
  2646. package/node_modules/zod/src/v4/classic/tests/set.test.ts +190 -0
  2647. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +153 -0
  2648. package/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +125 -0
  2649. package/node_modules/zod/src/v4/classic/tests/string.test.ts +1440 -0
  2650. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +124 -0
  2651. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +812 -0
  2652. package/node_modules/zod/src/v4/classic/tests/to-json-schema-methods.test.ts +438 -0
  2653. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +4733 -0
  2654. package/node_modules/zod/src/v4/classic/tests/transform.test.ts +378 -0
  2655. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +511 -0
  2656. package/node_modules/zod/src/v4/classic/tests/union.test.ts +310 -0
  2657. package/node_modules/zod/src/v4/classic/tests/url.test.ts +13 -0
  2658. package/node_modules/zod/src/v4/classic/tests/validate.test.ts +645 -0
  2659. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
  2660. package/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
  2661. package/node_modules/zod/src/v4/core/api.ts +1875 -0
  2662. package/node_modules/zod/src/v4/core/checks.ts +1266 -0
  2663. package/node_modules/zod/src/v4/core/compile.ts +2313 -0
  2664. package/node_modules/zod/src/v4/core/core.ts +230 -0
  2665. package/node_modules/zod/src/v4/core/doc.ts +52 -0
  2666. package/node_modules/zod/src/v4/core/errors.ts +543 -0
  2667. package/node_modules/zod/src/v4/core/index.ts +19 -0
  2668. package/node_modules/zod/src/v4/core/json-schema-generator.ts +131 -0
  2669. package/node_modules/zod/src/v4/core/json-schema-processors.ts +934 -0
  2670. package/node_modules/zod/src/v4/core/json-schema.ts +148 -0
  2671. package/node_modules/zod/src/v4/core/memoizer.ts +331 -0
  2672. package/node_modules/zod/src/v4/core/parse.ts +309 -0
  2673. package/node_modules/zod/src/v4/core/regexes.ts +217 -0
  2674. package/node_modules/zod/src/v4/core/registries.ts +105 -0
  2675. package/node_modules/zod/src/v4/core/schemas.ts +5192 -0
  2676. package/node_modules/zod/src/v4/core/standard-schema.ts +159 -0
  2677. package/node_modules/zod/src/v4/core/tests/cached.test.ts +54 -0
  2678. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +1004 -0
  2679. package/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +445 -0
  2680. package/node_modules/zod/src/v4/core/tests/compile-global.test.ts +89 -0
  2681. package/node_modules/zod/src/v4/core/tests/compile-off-by-default.test.ts +26 -0
  2682. package/node_modules/zod/src/v4/core/tests/compile-stats.test.ts +34 -0
  2683. package/node_modules/zod/src/v4/core/tests/compile.test.ts +2036 -0
  2684. package/node_modules/zod/src/v4/core/tests/email-regex.test.ts +140 -0
  2685. package/node_modules/zod/src/v4/core/tests/extend.test.ts +59 -0
  2686. package/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
  2687. package/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
  2688. package/node_modules/zod/src/v4/core/tests/locales/el.test.ts +214 -0
  2689. package/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
  2690. package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +180 -0
  2691. package/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +72 -0
  2692. package/node_modules/zod/src/v4/core/tests/locales/he.test.ts +379 -0
  2693. package/node_modules/zod/src/v4/core/tests/locales/hr.test.ts +163 -0
  2694. package/node_modules/zod/src/v4/core/tests/locales/nl.test.ts +46 -0
  2695. package/node_modules/zod/src/v4/core/tests/locales/parity.test.ts +42 -0
  2696. package/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
  2697. package/node_modules/zod/src/v4/core/tests/locales/tg.test.ts +85 -0
  2698. package/node_modules/zod/src/v4/core/tests/locales/tk.test.ts +69 -0
  2699. package/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
  2700. package/node_modules/zod/src/v4/core/tests/locales/uz.test.ts +105 -0
  2701. package/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +46 -0
  2702. package/node_modules/zod/src/v4/core/tests/record-constructor.test.ts +125 -0
  2703. package/node_modules/zod/src/v4/core/tests/recursive-tuples.test.ts +45 -0
  2704. package/node_modules/zod/src/v4/core/tests/treeshake.test.ts +51 -0
  2705. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +133 -0
  2706. package/node_modules/zod/src/v4/core/to-json-schema.ts +857 -0
  2707. package/node_modules/zod/src/v4/core/util.ts +1280 -0
  2708. package/node_modules/zod/src/v4/core/versions.ts +5 -0
  2709. package/node_modules/zod/src/v4/core/visit.ts +193 -0
  2710. package/node_modules/zod/src/v4/core/zsf.ts +323 -0
  2711. package/node_modules/zod/src/v4/index.ts +4 -0
  2712. package/node_modules/zod/src/v4/locales/ar.ts +120 -0
  2713. package/node_modules/zod/src/v4/locales/az.ts +116 -0
  2714. package/node_modules/zod/src/v4/locales/be.ts +188 -0
  2715. package/node_modules/zod/src/v4/locales/bg.ts +133 -0
  2716. package/node_modules/zod/src/v4/locales/bn.ts +123 -0
  2717. package/node_modules/zod/src/v4/locales/ca.ts +121 -0
  2718. package/node_modules/zod/src/v4/locales/ckb.ts +140 -0
  2719. package/node_modules/zod/src/v4/locales/cs.ts +123 -0
  2720. package/node_modules/zod/src/v4/locales/da.ts +128 -0
  2721. package/node_modules/zod/src/v4/locales/de.ts +121 -0
  2722. package/node_modules/zod/src/v4/locales/el.ts +124 -0
  2723. package/node_modules/zod/src/v4/locales/en.ts +136 -0
  2724. package/node_modules/zod/src/v4/locales/eo.ts +123 -0
  2725. package/node_modules/zod/src/v4/locales/es.ts +145 -0
  2726. package/node_modules/zod/src/v4/locales/fa.ts +131 -0
  2727. package/node_modules/zod/src/v4/locales/fi.ts +126 -0
  2728. package/node_modules/zod/src/v4/locales/fr-CA.ts +121 -0
  2729. package/node_modules/zod/src/v4/locales/fr.ts +139 -0
  2730. package/node_modules/zod/src/v4/locales/gu.ts +123 -0
  2731. package/node_modules/zod/src/v4/locales/he.ts +253 -0
  2732. package/node_modules/zod/src/v4/locales/hi.ts +126 -0
  2733. package/node_modules/zod/src/v4/locales/hr.ts +135 -0
  2734. package/node_modules/zod/src/v4/locales/hu.ts +122 -0
  2735. package/node_modules/zod/src/v4/locales/hy.ts +175 -0
  2736. package/node_modules/zod/src/v4/locales/id.ts +120 -0
  2737. package/node_modules/zod/src/v4/locales/index.ts +63 -0
  2738. package/node_modules/zod/src/v4/locales/is.ts +124 -0
  2739. package/node_modules/zod/src/v4/locales/it.ts +121 -0
  2740. package/node_modules/zod/src/v4/locales/ja.ts +119 -0
  2741. package/node_modules/zod/src/v4/locales/ka.ts +128 -0
  2742. package/node_modules/zod/src/v4/locales/kh.ts +7 -0
  2743. package/node_modules/zod/src/v4/locales/km.ts +124 -0
  2744. package/node_modules/zod/src/v4/locales/kn.ts +126 -0
  2745. package/node_modules/zod/src/v4/locales/ko.ts +126 -0
  2746. package/node_modules/zod/src/v4/locales/lt.ts +243 -0
  2747. package/node_modules/zod/src/v4/locales/mk.ts +123 -0
  2748. package/node_modules/zod/src/v4/locales/ms.ts +120 -0
  2749. package/node_modules/zod/src/v4/locales/ne.ts +128 -0
  2750. package/node_modules/zod/src/v4/locales/nl.ts +126 -0
  2751. package/node_modules/zod/src/v4/locales/nn.ts +121 -0
  2752. package/node_modules/zod/src/v4/locales/no.ts +121 -0
  2753. package/node_modules/zod/src/v4/locales/ota.ts +122 -0
  2754. package/node_modules/zod/src/v4/locales/pl.ts +123 -0
  2755. package/node_modules/zod/src/v4/locales/ps.ts +131 -0
  2756. package/node_modules/zod/src/v4/locales/pt-BR.ts +161 -0
  2757. package/node_modules/zod/src/v4/locales/pt.ts +159 -0
  2758. package/node_modules/zod/src/v4/locales/ro.ts +132 -0
  2759. package/node_modules/zod/src/v4/locales/ru.ts +188 -0
  2760. package/node_modules/zod/src/v4/locales/sk.ts +123 -0
  2761. package/node_modules/zod/src/v4/locales/sl.ts +123 -0
  2762. package/node_modules/zod/src/v4/locales/sv.ts +124 -0
  2763. package/node_modules/zod/src/v4/locales/ta.ts +123 -0
  2764. package/node_modules/zod/src/v4/locales/tg.ts +135 -0
  2765. package/node_modules/zod/src/v4/locales/th.ts +124 -0
  2766. package/node_modules/zod/src/v4/locales/tk.ts +113 -0
  2767. package/node_modules/zod/src/v4/locales/tr.ts +116 -0
  2768. package/node_modules/zod/src/v4/locales/ua.ts +7 -0
  2769. package/node_modules/zod/src/v4/locales/uk.ts +122 -0
  2770. package/node_modules/zod/src/v4/locales/ur.ts +124 -0
  2771. package/node_modules/zod/src/v4/locales/uz.ts +120 -0
  2772. package/node_modules/zod/src/v4/locales/vi.ts +122 -0
  2773. package/node_modules/zod/src/v4/locales/yo.ts +129 -0
  2774. package/node_modules/zod/src/v4/locales/zh-CN.ts +121 -0
  2775. package/node_modules/zod/src/v4/locales/zh-TW.ts +120 -0
  2776. package/node_modules/zod/src/v4/mini/checks.ts +33 -0
  2777. package/node_modules/zod/src/v4/mini/coerce.ts +27 -0
  2778. package/node_modules/zod/src/v4/mini/deep-partial.ts +73 -0
  2779. package/node_modules/zod/src/v4/mini/external.ts +52 -0
  2780. package/node_modules/zod/src/v4/mini/in-out.ts +45 -0
  2781. package/node_modules/zod/src/v4/mini/index.ts +3 -0
  2782. package/node_modules/zod/src/v4/mini/iso.ts +66 -0
  2783. package/node_modules/zod/src/v4/mini/parse.ts +16 -0
  2784. package/node_modules/zod/src/v4/mini/schemas.ts +2051 -0
  2785. package/node_modules/zod/src/v4/mini/tests/apply.test.ts +57 -0
  2786. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +190 -0
  2787. package/node_modules/zod/src/v4/mini/tests/brand.test.ts +94 -0
  2788. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +158 -0
  2789. package/node_modules/zod/src/v4/mini/tests/codec.test.ts +582 -0
  2790. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +30 -0
  2791. package/node_modules/zod/src/v4/mini/tests/cyclic-data.test.ts +84 -0
  2792. package/node_modules/zod/src/v4/mini/tests/deep-partial.test.ts +54 -0
  2793. package/node_modules/zod/src/v4/mini/tests/error.test.ts +41 -0
  2794. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +14 -0
  2795. package/node_modules/zod/src/v4/mini/tests/index.test.ts +1146 -0
  2796. package/node_modules/zod/src/v4/mini/tests/number.test.ts +109 -0
  2797. package/node_modules/zod/src/v4/mini/tests/object.test.ts +292 -0
  2798. package/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
  2799. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +341 -0
  2800. package/node_modules/zod/src/v4/mini/tests/standard-schema.test.ts +50 -0
  2801. package/node_modules/zod/src/v4/mini/tests/string.test.ts +396 -0
  2802. package/node_modules/zod/src/v4-mini/index.ts +3 -0
  2803. package/node_modules/zod/v3/ZodError.cjs +167 -0
  2804. package/node_modules/zod/v3/ZodError.d.cts +164 -0
  2805. package/node_modules/zod/v3/ZodError.d.ts +164 -0
  2806. package/node_modules/zod/v3/ZodError.js +143 -0
  2807. package/node_modules/zod/v3/errors.cjs +36 -0
  2808. package/node_modules/zod/v3/errors.d.cts +5 -0
  2809. package/node_modules/zod/v3/errors.d.ts +5 -0
  2810. package/node_modules/zod/v3/errors.js +9 -0
  2811. package/node_modules/zod/v3/external.cjs +41 -0
  2812. package/node_modules/zod/v3/external.d.cts +6 -0
  2813. package/node_modules/zod/v3/external.d.ts +6 -0
  2814. package/node_modules/zod/v3/external.js +6 -0
  2815. package/node_modules/zod/v3/helpers/enumUtil.cjs +21 -0
  2816. package/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
  2817. package/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
  2818. package/node_modules/zod/v3/helpers/enumUtil.js +1 -0
  2819. package/node_modules/zod/v3/helpers/errorUtil.cjs +28 -0
  2820. package/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
  2821. package/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
  2822. package/node_modules/zod/v3/helpers/errorUtil.js +6 -0
  2823. package/node_modules/zod/v3/helpers/parseUtil.cjs +143 -0
  2824. package/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
  2825. package/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
  2826. package/node_modules/zod/v3/helpers/parseUtil.js +109 -0
  2827. package/node_modules/zod/v3/helpers/partialUtil.cjs +21 -0
  2828. package/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
  2829. package/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
  2830. package/node_modules/zod/v3/helpers/partialUtil.js +1 -0
  2831. package/node_modules/zod/v3/helpers/typeAliases.cjs +21 -0
  2832. package/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
  2833. package/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
  2834. package/node_modules/zod/v3/helpers/typeAliases.js +1 -0
  2835. package/node_modules/zod/v3/helpers/util.cjs +156 -0
  2836. package/node_modules/zod/v3/helpers/util.d.cts +85 -0
  2837. package/node_modules/zod/v3/helpers/util.d.ts +85 -0
  2838. package/node_modules/zod/v3/helpers/util.js +133 -0
  2839. package/node_modules/zod/v3/index.cjs +52 -0
  2840. package/node_modules/zod/v3/index.d.cts +4 -0
  2841. package/node_modules/zod/v3/index.d.ts +4 -0
  2842. package/node_modules/zod/v3/index.js +4 -0
  2843. package/node_modules/zod/v3/locales/en.cjs +112 -0
  2844. package/node_modules/zod/v3/locales/en.d.cts +3 -0
  2845. package/node_modules/zod/v3/locales/en.d.ts +3 -0
  2846. package/node_modules/zod/v3/locales/en.js +109 -0
  2847. package/node_modules/zod/v3/package.json +7 -0
  2848. package/node_modules/zod/v3/standard-schema.cjs +21 -0
  2849. package/node_modules/zod/v3/standard-schema.d.cts +102 -0
  2850. package/node_modules/zod/v3/standard-schema.d.ts +102 -0
  2851. package/node_modules/zod/v3/standard-schema.js +1 -0
  2852. package/node_modules/zod/v3/types.cjs +3798 -0
  2853. package/node_modules/zod/v3/types.d.cts +1034 -0
  2854. package/node_modules/zod/v3/types.d.ts +1034 -0
  2855. package/node_modules/zod/v3/types.js +3697 -0
  2856. package/node_modules/zod/v4/classic/checks.cjs +53 -0
  2857. package/node_modules/zod/v4/classic/checks.d.cts +1 -0
  2858. package/node_modules/zod/v4/classic/checks.d.ts +1 -0
  2859. package/node_modules/zod/v4/classic/checks.js +1 -0
  2860. package/node_modules/zod/v4/classic/coerce.cjs +66 -0
  2861. package/node_modules/zod/v4/classic/coerce.d.cts +17 -0
  2862. package/node_modules/zod/v4/classic/coerce.d.ts +17 -0
  2863. package/node_modules/zod/v4/classic/coerce.js +17 -0
  2864. package/node_modules/zod/v4/classic/compat.cjs +80 -0
  2865. package/node_modules/zod/v4/classic/compat.d.cts +48 -0
  2866. package/node_modules/zod/v4/classic/compat.d.ts +48 -0
  2867. package/node_modules/zod/v4/classic/compat.js +31 -0
  2868. package/node_modules/zod/v4/classic/deep-partial.cjs +58 -0
  2869. package/node_modules/zod/v4/classic/deep-partial.d.cts +14 -0
  2870. package/node_modules/zod/v4/classic/deep-partial.d.ts +14 -0
  2871. package/node_modules/zod/v4/classic/deep-partial.js +13 -0
  2872. package/node_modules/zod/v4/classic/errors.cjs +102 -0
  2873. package/node_modules/zod/v4/classic/errors.d.cts +29 -0
  2874. package/node_modules/zod/v4/classic/errors.d.ts +29 -0
  2875. package/node_modules/zod/v4/classic/errors.js +57 -0
  2876. package/node_modules/zod/v4/classic/external.cjs +97 -0
  2877. package/node_modules/zod/v4/classic/external.d.cts +19 -0
  2878. package/node_modules/zod/v4/classic/external.d.ts +19 -0
  2879. package/node_modules/zod/v4/classic/external.js +17 -0
  2880. package/node_modules/zod/v4/classic/from-json-schema.cjs +926 -0
  2881. package/node_modules/zod/v4/classic/from-json-schema.d.cts +12 -0
  2882. package/node_modules/zod/v4/classic/from-json-schema.d.ts +12 -0
  2883. package/node_modules/zod/v4/classic/from-json-schema.js +881 -0
  2884. package/node_modules/zod/v4/classic/in-out.cjs +82 -0
  2885. package/node_modules/zod/v4/classic/in-out.d.cts +8 -0
  2886. package/node_modules/zod/v4/classic/in-out.d.ts +8 -0
  2887. package/node_modules/zod/v4/classic/in-out.js +36 -0
  2888. package/node_modules/zod/v4/classic/index.cjs +52 -0
  2889. package/node_modules/zod/v4/classic/index.d.cts +3 -0
  2890. package/node_modules/zod/v4/classic/index.d.ts +3 -0
  2891. package/node_modules/zod/v4/classic/index.js +4 -0
  2892. package/node_modules/zod/v4/classic/iso.cjs +68 -0
  2893. package/node_modules/zod/v4/classic/iso.d.cts +7 -0
  2894. package/node_modules/zod/v4/classic/iso.d.ts +7 -0
  2895. package/node_modules/zod/v4/classic/iso.js +15 -0
  2896. package/node_modules/zod/v4/classic/package.json +7 -0
  2897. package/node_modules/zod/v4/classic/parse.cjs +63 -0
  2898. package/node_modules/zod/v4/classic/parse.d.cts +44 -0
  2899. package/node_modules/zod/v4/classic/parse.d.ts +44 -0
  2900. package/node_modules/zod/v4/classic/parse.js +16 -0
  2901. package/node_modules/zod/v4/classic/schemas.cjs +1676 -0
  2902. package/node_modules/zod/v4/classic/schemas.d.cts +816 -0
  2903. package/node_modules/zod/v4/classic/schemas.d.ts +816 -0
  2904. package/node_modules/zod/v4/classic/schemas.js +1535 -0
  2905. package/node_modules/zod/v4/core/api.cjs +1269 -0
  2906. package/node_modules/zod/v4/core/api.d.cts +335 -0
  2907. package/node_modules/zod/v4/core/api.d.ts +335 -0
  2908. package/node_modules/zod/v4/core/api.js +1107 -0
  2909. package/node_modules/zod/v4/core/checks.cjs +561 -0
  2910. package/node_modules/zod/v4/core/checks.d.cts +294 -0
  2911. package/node_modules/zod/v4/core/checks.d.ts +294 -0
  2912. package/node_modules/zod/v4/core/checks.js +516 -0
  2913. package/node_modules/zod/v4/core/compile.cjs +1908 -0
  2914. package/node_modules/zod/v4/core/compile.d.cts +65 -0
  2915. package/node_modules/zod/v4/core/compile.d.ts +65 -0
  2916. package/node_modules/zod/v4/core/compile.js +1858 -0
  2917. package/node_modules/zod/v4/core/core.cjs +167 -0
  2918. package/node_modules/zod/v4/core/core.d.cts +82 -0
  2919. package/node_modules/zod/v4/core/core.d.ts +82 -0
  2920. package/node_modules/zod/v4/core/core.js +141 -0
  2921. package/node_modules/zod/v4/core/doc.cjs +61 -0
  2922. package/node_modules/zod/v4/core/doc.d.cts +16 -0
  2923. package/node_modules/zod/v4/core/doc.d.ts +16 -0
  2924. package/node_modules/zod/v4/core/doc.js +38 -0
  2925. package/node_modules/zod/v4/core/errors.cjs +317 -0
  2926. package/node_modules/zod/v4/core/errors.d.cts +225 -0
  2927. package/node_modules/zod/v4/core/errors.d.ts +225 -0
  2928. package/node_modules/zod/v4/core/errors.js +267 -0
  2929. package/node_modules/zod/v4/core/index.cjs +70 -0
  2930. package/node_modules/zod/v4/core/index.d.cts +19 -0
  2931. package/node_modules/zod/v4/core/index.d.ts +19 -0
  2932. package/node_modules/zod/v4/core/index.js +19 -0
  2933. package/node_modules/zod/v4/core/json-schema-generator.cjs +122 -0
  2934. package/node_modules/zod/v4/core/json-schema-generator.d.cts +65 -0
  2935. package/node_modules/zod/v4/core/json-schema-generator.d.ts +65 -0
  2936. package/node_modules/zod/v4/core/json-schema-generator.js +99 -0
  2937. package/node_modules/zod/v4/core/json-schema-processors.cjs +929 -0
  2938. package/node_modules/zod/v4/core/json-schema-processors.d.cts +65 -0
  2939. package/node_modules/zod/v4/core/json-schema-processors.d.ts +65 -0
  2940. package/node_modules/zod/v4/core/json-schema-processors.js +843 -0
  2941. package/node_modules/zod/v4/core/json-schema.cjs +21 -0
  2942. package/node_modules/zod/v4/core/json-schema.d.cts +89 -0
  2943. package/node_modules/zod/v4/core/json-schema.d.ts +89 -0
  2944. package/node_modules/zod/v4/core/json-schema.js +1 -0
  2945. package/node_modules/zod/v4/core/memoizer.cjs +360 -0
  2946. package/node_modules/zod/v4/core/memoizer.d.cts +15 -0
  2947. package/node_modules/zod/v4/core/memoizer.d.ts +15 -0
  2948. package/node_modules/zod/v4/core/memoizer.js +311 -0
  2949. package/node_modules/zod/v4/core/package.json +7 -0
  2950. package/node_modules/zod/v4/core/parse.cjs +233 -0
  2951. package/node_modules/zod/v4/core/parse.d.cts +52 -0
  2952. package/node_modules/zod/v4/core/parse.d.ts +52 -0
  2953. package/node_modules/zod/v4/core/parse.js +175 -0
  2954. package/node_modules/zod/v4/core/regexes.cjs +209 -0
  2955. package/node_modules/zod/v4/core/regexes.d.cts +90 -0
  2956. package/node_modules/zod/v4/core/regexes.d.ts +90 -0
  2957. package/node_modules/zod/v4/core/regexes.js +156 -0
  2958. package/node_modules/zod/v4/core/registries.cjs +75 -0
  2959. package/node_modules/zod/v4/core/registries.d.cts +35 -0
  2960. package/node_modules/zod/v4/core/registries.d.ts +35 -0
  2961. package/node_modules/zod/v4/core/registries.js +51 -0
  2962. package/node_modules/zod/v4/core/schemas.cjs +2669 -0
  2963. package/node_modules/zod/v4/core/schemas.d.cts +1273 -0
  2964. package/node_modules/zod/v4/core/schemas.d.ts +1273 -0
  2965. package/node_modules/zod/v4/core/schemas.js +2606 -0
  2966. package/node_modules/zod/v4/core/standard-schema.cjs +21 -0
  2967. package/node_modules/zod/v4/core/standard-schema.d.cts +126 -0
  2968. package/node_modules/zod/v4/core/standard-schema.d.ts +126 -0
  2969. package/node_modules/zod/v4/core/standard-schema.js +1 -0
  2970. package/node_modules/zod/v4/core/to-json-schema.cjs +681 -0
  2971. package/node_modules/zod/v4/core/to-json-schema.d.cts +154 -0
  2972. package/node_modules/zod/v4/core/to-json-schema.d.ts +154 -0
  2973. package/node_modules/zod/v4/core/to-json-schema.js +651 -0
  2974. package/node_modules/zod/v4/core/util.cjs +949 -0
  2975. package/node_modules/zod/v4/core/util.d.cts +278 -0
  2976. package/node_modules/zod/v4/core/util.d.ts +278 -0
  2977. package/node_modules/zod/v4/core/util.js +859 -0
  2978. package/node_modules/zod/v4/core/versions.cjs +27 -0
  2979. package/node_modules/zod/v4/core/versions.d.cts +5 -0
  2980. package/node_modules/zod/v4/core/versions.d.ts +5 -0
  2981. package/node_modules/zod/v4/core/versions.js +5 -0
  2982. package/node_modules/zod/v4/core/visit.cjs +214 -0
  2983. package/node_modules/zod/v4/core/visit.d.cts +30 -0
  2984. package/node_modules/zod/v4/core/visit.d.ts +30 -0
  2985. package/node_modules/zod/v4/core/visit.js +169 -0
  2986. package/node_modules/zod/v4/index.cjs +51 -0
  2987. package/node_modules/zod/v4/index.d.cts +3 -0
  2988. package/node_modules/zod/v4/index.d.ts +3 -0
  2989. package/node_modules/zod/v4/index.js +4 -0
  2990. package/node_modules/zod/v4/locales/ar.cjs +138 -0
  2991. package/node_modules/zod/v4/locales/ar.d.cts +5 -0
  2992. package/node_modules/zod/v4/locales/ar.d.ts +4 -0
  2993. package/node_modules/zod/v4/locales/ar.js +111 -0
  2994. package/node_modules/zod/v4/locales/az.cjs +137 -0
  2995. package/node_modules/zod/v4/locales/az.d.cts +5 -0
  2996. package/node_modules/zod/v4/locales/az.d.ts +4 -0
  2997. package/node_modules/zod/v4/locales/az.js +110 -0
  2998. package/node_modules/zod/v4/locales/be.cjs +195 -0
  2999. package/node_modules/zod/v4/locales/be.d.cts +5 -0
  3000. package/node_modules/zod/v4/locales/be.d.ts +4 -0
  3001. package/node_modules/zod/v4/locales/be.js +168 -0
  3002. package/node_modules/zod/v4/locales/bg.cjs +152 -0
  3003. package/node_modules/zod/v4/locales/bg.d.cts +5 -0
  3004. package/node_modules/zod/v4/locales/bg.d.ts +4 -0
  3005. package/node_modules/zod/v4/locales/bg.js +125 -0
  3006. package/node_modules/zod/v4/locales/bn.cjs +140 -0
  3007. package/node_modules/zod/v4/locales/bn.d.cts +5 -0
  3008. package/node_modules/zod/v4/locales/bn.d.ts +4 -0
  3009. package/node_modules/zod/v4/locales/bn.js +113 -0
  3010. package/node_modules/zod/v4/locales/ca.cjs +139 -0
  3011. package/node_modules/zod/v4/locales/ca.d.cts +5 -0
  3012. package/node_modules/zod/v4/locales/ca.d.ts +4 -0
  3013. package/node_modules/zod/v4/locales/ca.js +112 -0
  3014. package/node_modules/zod/v4/locales/ckb.cjs +160 -0
  3015. package/node_modules/zod/v4/locales/ckb.d.cts +5 -0
  3016. package/node_modules/zod/v4/locales/ckb.d.ts +4 -0
  3017. package/node_modules/zod/v4/locales/ckb.js +133 -0
  3018. package/node_modules/zod/v4/locales/cs.cjs +143 -0
  3019. package/node_modules/zod/v4/locales/cs.d.cts +5 -0
  3020. package/node_modules/zod/v4/locales/cs.d.ts +4 -0
  3021. package/node_modules/zod/v4/locales/cs.js +116 -0
  3022. package/node_modules/zod/v4/locales/da.cjs +147 -0
  3023. package/node_modules/zod/v4/locales/da.d.cts +5 -0
  3024. package/node_modules/zod/v4/locales/da.d.ts +4 -0
  3025. package/node_modules/zod/v4/locales/da.js +120 -0
  3026. package/node_modules/zod/v4/locales/de.cjs +140 -0
  3027. package/node_modules/zod/v4/locales/de.d.cts +5 -0
  3028. package/node_modules/zod/v4/locales/de.d.ts +4 -0
  3029. package/node_modules/zod/v4/locales/de.js +113 -0
  3030. package/node_modules/zod/v4/locales/el.cjs +139 -0
  3031. package/node_modules/zod/v4/locales/el.d.cts +5 -0
  3032. package/node_modules/zod/v4/locales/el.d.ts +4 -0
  3033. package/node_modules/zod/v4/locales/el.js +112 -0
  3034. package/node_modules/zod/v4/locales/en.cjs +152 -0
  3035. package/node_modules/zod/v4/locales/en.d.cts +5 -0
  3036. package/node_modules/zod/v4/locales/en.d.ts +4 -0
  3037. package/node_modules/zod/v4/locales/en.js +125 -0
  3038. package/node_modules/zod/v4/locales/eo.cjs +141 -0
  3039. package/node_modules/zod/v4/locales/eo.d.cts +5 -0
  3040. package/node_modules/zod/v4/locales/eo.d.ts +4 -0
  3041. package/node_modules/zod/v4/locales/eo.js +114 -0
  3042. package/node_modules/zod/v4/locales/es.cjs +163 -0
  3043. package/node_modules/zod/v4/locales/es.d.cts +5 -0
  3044. package/node_modules/zod/v4/locales/es.d.ts +4 -0
  3045. package/node_modules/zod/v4/locales/es.js +136 -0
  3046. package/node_modules/zod/v4/locales/fa.cjs +146 -0
  3047. package/node_modules/zod/v4/locales/fa.d.cts +5 -0
  3048. package/node_modules/zod/v4/locales/fa.d.ts +4 -0
  3049. package/node_modules/zod/v4/locales/fa.js +119 -0
  3050. package/node_modules/zod/v4/locales/fi.cjs +144 -0
  3051. package/node_modules/zod/v4/locales/fi.d.cts +5 -0
  3052. package/node_modules/zod/v4/locales/fi.d.ts +4 -0
  3053. package/node_modules/zod/v4/locales/fi.js +117 -0
  3054. package/node_modules/zod/v4/locales/fr-CA.cjs +139 -0
  3055. package/node_modules/zod/v4/locales/fr-CA.d.cts +5 -0
  3056. package/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
  3057. package/node_modules/zod/v4/locales/fr-CA.js +112 -0
  3058. package/node_modules/zod/v4/locales/fr.cjs +156 -0
  3059. package/node_modules/zod/v4/locales/fr.d.cts +5 -0
  3060. package/node_modules/zod/v4/locales/fr.d.ts +4 -0
  3061. package/node_modules/zod/v4/locales/fr.js +129 -0
  3062. package/node_modules/zod/v4/locales/gu.cjs +140 -0
  3063. package/node_modules/zod/v4/locales/gu.d.cts +5 -0
  3064. package/node_modules/zod/v4/locales/gu.d.ts +4 -0
  3065. package/node_modules/zod/v4/locales/gu.js +113 -0
  3066. package/node_modules/zod/v4/locales/he.cjs +248 -0
  3067. package/node_modules/zod/v4/locales/he.d.cts +5 -0
  3068. package/node_modules/zod/v4/locales/he.d.ts +4 -0
  3069. package/node_modules/zod/v4/locales/he.js +221 -0
  3070. package/node_modules/zod/v4/locales/hi.cjs +138 -0
  3071. package/node_modules/zod/v4/locales/hi.d.cts +5 -0
  3072. package/node_modules/zod/v4/locales/hi.d.ts +4 -0
  3073. package/node_modules/zod/v4/locales/hi.js +111 -0
  3074. package/node_modules/zod/v4/locales/hr.cjs +153 -0
  3075. package/node_modules/zod/v4/locales/hr.d.cts +5 -0
  3076. package/node_modules/zod/v4/locales/hr.d.ts +4 -0
  3077. package/node_modules/zod/v4/locales/hr.js +126 -0
  3078. package/node_modules/zod/v4/locales/hu.cjs +140 -0
  3079. package/node_modules/zod/v4/locales/hu.d.cts +5 -0
  3080. package/node_modules/zod/v4/locales/hu.d.ts +4 -0
  3081. package/node_modules/zod/v4/locales/hu.js +113 -0
  3082. package/node_modules/zod/v4/locales/hy.cjs +185 -0
  3083. package/node_modules/zod/v4/locales/hy.d.cts +5 -0
  3084. package/node_modules/zod/v4/locales/hy.d.ts +4 -0
  3085. package/node_modules/zod/v4/locales/hy.js +158 -0
  3086. package/node_modules/zod/v4/locales/id.cjs +138 -0
  3087. package/node_modules/zod/v4/locales/id.d.cts +5 -0
  3088. package/node_modules/zod/v4/locales/id.d.ts +4 -0
  3089. package/node_modules/zod/v4/locales/id.js +111 -0
  3090. package/node_modules/zod/v4/locales/index.cjs +152 -0
  3091. package/node_modules/zod/v4/locales/index.d.cts +63 -0
  3092. package/node_modules/zod/v4/locales/index.d.ts +63 -0
  3093. package/node_modules/zod/v4/locales/index.js +63 -0
  3094. package/node_modules/zod/v4/locales/is.cjs +141 -0
  3095. package/node_modules/zod/v4/locales/is.d.cts +5 -0
  3096. package/node_modules/zod/v4/locales/is.d.ts +4 -0
  3097. package/node_modules/zod/v4/locales/is.js +114 -0
  3098. package/node_modules/zod/v4/locales/it.cjs +140 -0
  3099. package/node_modules/zod/v4/locales/it.d.cts +5 -0
  3100. package/node_modules/zod/v4/locales/it.d.ts +4 -0
  3101. package/node_modules/zod/v4/locales/it.js +113 -0
  3102. package/node_modules/zod/v4/locales/ja.cjs +139 -0
  3103. package/node_modules/zod/v4/locales/ja.d.cts +5 -0
  3104. package/node_modules/zod/v4/locales/ja.d.ts +4 -0
  3105. package/node_modules/zod/v4/locales/ja.js +112 -0
  3106. package/node_modules/zod/v4/locales/ka.cjs +144 -0
  3107. package/node_modules/zod/v4/locales/ka.d.cts +5 -0
  3108. package/node_modules/zod/v4/locales/ka.d.ts +4 -0
  3109. package/node_modules/zod/v4/locales/ka.js +117 -0
  3110. package/node_modules/zod/v4/locales/kh.cjs +12 -0
  3111. package/node_modules/zod/v4/locales/kh.d.cts +5 -0
  3112. package/node_modules/zod/v4/locales/kh.d.ts +5 -0
  3113. package/node_modules/zod/v4/locales/kh.js +5 -0
  3114. package/node_modules/zod/v4/locales/km.cjs +142 -0
  3115. package/node_modules/zod/v4/locales/km.d.cts +5 -0
  3116. package/node_modules/zod/v4/locales/km.d.ts +4 -0
  3117. package/node_modules/zod/v4/locales/km.js +115 -0
  3118. package/node_modules/zod/v4/locales/kn.cjs +143 -0
  3119. package/node_modules/zod/v4/locales/kn.d.cts +5 -0
  3120. package/node_modules/zod/v4/locales/kn.d.ts +4 -0
  3121. package/node_modules/zod/v4/locales/kn.js +116 -0
  3122. package/node_modules/zod/v4/locales/ko.cjs +143 -0
  3123. package/node_modules/zod/v4/locales/ko.d.cts +5 -0
  3124. package/node_modules/zod/v4/locales/ko.d.ts +4 -0
  3125. package/node_modules/zod/v4/locales/ko.js +116 -0
  3126. package/node_modules/zod/v4/locales/lt.cjs +234 -0
  3127. package/node_modules/zod/v4/locales/lt.d.cts +5 -0
  3128. package/node_modules/zod/v4/locales/lt.d.ts +4 -0
  3129. package/node_modules/zod/v4/locales/lt.js +207 -0
  3130. package/node_modules/zod/v4/locales/mk.cjs +141 -0
  3131. package/node_modules/zod/v4/locales/mk.d.cts +5 -0
  3132. package/node_modules/zod/v4/locales/mk.d.ts +4 -0
  3133. package/node_modules/zod/v4/locales/mk.js +114 -0
  3134. package/node_modules/zod/v4/locales/ms.cjs +139 -0
  3135. package/node_modules/zod/v4/locales/ms.d.cts +5 -0
  3136. package/node_modules/zod/v4/locales/ms.d.ts +4 -0
  3137. package/node_modules/zod/v4/locales/ms.js +112 -0
  3138. package/node_modules/zod/v4/locales/ne.cjs +138 -0
  3139. package/node_modules/zod/v4/locales/ne.d.cts +5 -0
  3140. package/node_modules/zod/v4/locales/ne.d.ts +4 -0
  3141. package/node_modules/zod/v4/locales/ne.js +111 -0
  3142. package/node_modules/zod/v4/locales/nl.cjs +142 -0
  3143. package/node_modules/zod/v4/locales/nl.d.cts +5 -0
  3144. package/node_modules/zod/v4/locales/nl.d.ts +4 -0
  3145. package/node_modules/zod/v4/locales/nl.js +115 -0
  3146. package/node_modules/zod/v4/locales/nn.cjs +140 -0
  3147. package/node_modules/zod/v4/locales/nn.d.cts +5 -0
  3148. package/node_modules/zod/v4/locales/nn.d.ts +4 -0
  3149. package/node_modules/zod/v4/locales/nn.js +113 -0
  3150. package/node_modules/zod/v4/locales/no.cjs +140 -0
  3151. package/node_modules/zod/v4/locales/no.d.cts +5 -0
  3152. package/node_modules/zod/v4/locales/no.d.ts +4 -0
  3153. package/node_modules/zod/v4/locales/no.js +113 -0
  3154. package/node_modules/zod/v4/locales/ota.cjs +141 -0
  3155. package/node_modules/zod/v4/locales/ota.d.cts +5 -0
  3156. package/node_modules/zod/v4/locales/ota.d.ts +4 -0
  3157. package/node_modules/zod/v4/locales/ota.js +114 -0
  3158. package/node_modules/zod/v4/locales/package.json +7 -0
  3159. package/node_modules/zod/v4/locales/pl.cjs +141 -0
  3160. package/node_modules/zod/v4/locales/pl.d.cts +5 -0
  3161. package/node_modules/zod/v4/locales/pl.d.ts +4 -0
  3162. package/node_modules/zod/v4/locales/pl.js +114 -0
  3163. package/node_modules/zod/v4/locales/ps.cjs +146 -0
  3164. package/node_modules/zod/v4/locales/ps.d.cts +5 -0
  3165. package/node_modules/zod/v4/locales/ps.d.ts +4 -0
  3166. package/node_modules/zod/v4/locales/ps.js +119 -0
  3167. package/node_modules/zod/v4/locales/pt-BR.cjs +170 -0
  3168. package/node_modules/zod/v4/locales/pt-BR.d.cts +5 -0
  3169. package/node_modules/zod/v4/locales/pt-BR.d.ts +4 -0
  3170. package/node_modules/zod/v4/locales/pt-BR.js +143 -0
  3171. package/node_modules/zod/v4/locales/pt.cjs +169 -0
  3172. package/node_modules/zod/v4/locales/pt.d.cts +5 -0
  3173. package/node_modules/zod/v4/locales/pt.d.ts +4 -0
  3174. package/node_modules/zod/v4/locales/pt.js +142 -0
  3175. package/node_modules/zod/v4/locales/ro.cjs +149 -0
  3176. package/node_modules/zod/v4/locales/ro.d.cts +5 -0
  3177. package/node_modules/zod/v4/locales/ro.d.ts +4 -0
  3178. package/node_modules/zod/v4/locales/ro.js +122 -0
  3179. package/node_modules/zod/v4/locales/ru.cjs +195 -0
  3180. package/node_modules/zod/v4/locales/ru.d.cts +5 -0
  3181. package/node_modules/zod/v4/locales/ru.d.ts +4 -0
  3182. package/node_modules/zod/v4/locales/ru.js +168 -0
  3183. package/node_modules/zod/v4/locales/sk.cjs +143 -0
  3184. package/node_modules/zod/v4/locales/sk.d.cts +5 -0
  3185. package/node_modules/zod/v4/locales/sk.d.ts +4 -0
  3186. package/node_modules/zod/v4/locales/sk.js +116 -0
  3187. package/node_modules/zod/v4/locales/sl.cjs +141 -0
  3188. package/node_modules/zod/v4/locales/sl.d.cts +5 -0
  3189. package/node_modules/zod/v4/locales/sl.d.ts +4 -0
  3190. package/node_modules/zod/v4/locales/sl.js +114 -0
  3191. package/node_modules/zod/v4/locales/sv.cjs +142 -0
  3192. package/node_modules/zod/v4/locales/sv.d.cts +5 -0
  3193. package/node_modules/zod/v4/locales/sv.d.ts +4 -0
  3194. package/node_modules/zod/v4/locales/sv.js +115 -0
  3195. package/node_modules/zod/v4/locales/ta.cjs +142 -0
  3196. package/node_modules/zod/v4/locales/ta.d.cts +5 -0
  3197. package/node_modules/zod/v4/locales/ta.d.ts +4 -0
  3198. package/node_modules/zod/v4/locales/ta.js +115 -0
  3199. package/node_modules/zod/v4/locales/tg.cjs +144 -0
  3200. package/node_modules/zod/v4/locales/tg.d.cts +5 -0
  3201. package/node_modules/zod/v4/locales/tg.d.ts +4 -0
  3202. package/node_modules/zod/v4/locales/tg.js +117 -0
  3203. package/node_modules/zod/v4/locales/th.cjs +142 -0
  3204. package/node_modules/zod/v4/locales/th.d.cts +5 -0
  3205. package/node_modules/zod/v4/locales/th.d.ts +4 -0
  3206. package/node_modules/zod/v4/locales/th.js +115 -0
  3207. package/node_modules/zod/v4/locales/tk.cjs +134 -0
  3208. package/node_modules/zod/v4/locales/tk.d.cts +5 -0
  3209. package/node_modules/zod/v4/locales/tk.d.ts +4 -0
  3210. package/node_modules/zod/v4/locales/tk.js +107 -0
  3211. package/node_modules/zod/v4/locales/tr.cjs +137 -0
  3212. package/node_modules/zod/v4/locales/tr.d.cts +5 -0
  3213. package/node_modules/zod/v4/locales/tr.d.ts +4 -0
  3214. package/node_modules/zod/v4/locales/tr.js +110 -0
  3215. package/node_modules/zod/v4/locales/ua.cjs +12 -0
  3216. package/node_modules/zod/v4/locales/ua.d.cts +5 -0
  3217. package/node_modules/zod/v4/locales/ua.d.ts +5 -0
  3218. package/node_modules/zod/v4/locales/ua.js +5 -0
  3219. package/node_modules/zod/v4/locales/uk.cjs +140 -0
  3220. package/node_modules/zod/v4/locales/uk.d.cts +5 -0
  3221. package/node_modules/zod/v4/locales/uk.d.ts +4 -0
  3222. package/node_modules/zod/v4/locales/uk.js +113 -0
  3223. package/node_modules/zod/v4/locales/ur.cjs +142 -0
  3224. package/node_modules/zod/v4/locales/ur.d.cts +5 -0
  3225. package/node_modules/zod/v4/locales/ur.d.ts +4 -0
  3226. package/node_modules/zod/v4/locales/ur.js +115 -0
  3227. package/node_modules/zod/v4/locales/uz.cjs +140 -0
  3228. package/node_modules/zod/v4/locales/uz.d.cts +5 -0
  3229. package/node_modules/zod/v4/locales/uz.d.ts +4 -0
  3230. package/node_modules/zod/v4/locales/uz.js +113 -0
  3231. package/node_modules/zod/v4/locales/vi.cjs +140 -0
  3232. package/node_modules/zod/v4/locales/vi.d.cts +5 -0
  3233. package/node_modules/zod/v4/locales/vi.d.ts +4 -0
  3234. package/node_modules/zod/v4/locales/vi.js +113 -0
  3235. package/node_modules/zod/v4/locales/yo.cjs +139 -0
  3236. package/node_modules/zod/v4/locales/yo.d.cts +5 -0
  3237. package/node_modules/zod/v4/locales/yo.d.ts +4 -0
  3238. package/node_modules/zod/v4/locales/yo.js +112 -0
  3239. package/node_modules/zod/v4/locales/zh-CN.cjs +141 -0
  3240. package/node_modules/zod/v4/locales/zh-CN.d.cts +5 -0
  3241. package/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
  3242. package/node_modules/zod/v4/locales/zh-CN.js +114 -0
  3243. package/node_modules/zod/v4/locales/zh-TW.cjs +139 -0
  3244. package/node_modules/zod/v4/locales/zh-TW.d.cts +5 -0
  3245. package/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
  3246. package/node_modules/zod/v4/locales/zh-TW.js +112 -0
  3247. package/node_modules/zod/v4/mini/checks.cjs +54 -0
  3248. package/node_modules/zod/v4/mini/checks.d.cts +1 -0
  3249. package/node_modules/zod/v4/mini/checks.d.ts +1 -0
  3250. package/node_modules/zod/v4/mini/checks.js +1 -0
  3251. package/node_modules/zod/v4/mini/coerce.cjs +71 -0
  3252. package/node_modules/zod/v4/mini/coerce.d.cts +7 -0
  3253. package/node_modules/zod/v4/mini/coerce.d.ts +7 -0
  3254. package/node_modules/zod/v4/mini/coerce.js +22 -0
  3255. package/node_modules/zod/v4/mini/deep-partial.cjs +58 -0
  3256. package/node_modules/zod/v4/mini/deep-partial.d.cts +14 -0
  3257. package/node_modules/zod/v4/mini/deep-partial.d.ts +14 -0
  3258. package/node_modules/zod/v4/mini/deep-partial.js +13 -0
  3259. package/node_modules/zod/v4/mini/external.cjs +95 -0
  3260. package/node_modules/zod/v4/mini/external.d.cts +16 -0
  3261. package/node_modules/zod/v4/mini/external.d.ts +16 -0
  3262. package/node_modules/zod/v4/mini/external.js +16 -0
  3263. package/node_modules/zod/v4/mini/in-out.cjs +82 -0
  3264. package/node_modules/zod/v4/mini/in-out.d.cts +8 -0
  3265. package/node_modules/zod/v4/mini/in-out.d.ts +8 -0
  3266. package/node_modules/zod/v4/mini/in-out.js +36 -0
  3267. package/node_modules/zod/v4/mini/index.cjs +51 -0
  3268. package/node_modules/zod/v4/mini/index.d.cts +3 -0
  3269. package/node_modules/zod/v4/mini/index.d.ts +3 -0
  3270. package/node_modules/zod/v4/mini/index.js +3 -0
  3271. package/node_modules/zod/v4/mini/iso.cjs +83 -0
  3272. package/node_modules/zod/v4/mini/iso.d.cts +22 -0
  3273. package/node_modules/zod/v4/mini/iso.d.ts +22 -0
  3274. package/node_modules/zod/v4/mini/iso.js +34 -0
  3275. package/node_modules/zod/v4/mini/package.json +7 -0
  3276. package/node_modules/zod/v4/mini/parse.cjs +37 -0
  3277. package/node_modules/zod/v4/mini/parse.d.cts +1 -0
  3278. package/node_modules/zod/v4/mini/parse.d.ts +1 -0
  3279. package/node_modules/zod/v4/mini/parse.js +1 -0
  3280. package/node_modules/zod/v4/mini/schemas.cjs +1147 -0
  3281. package/node_modules/zod/v4/mini/schemas.d.cts +480 -0
  3282. package/node_modules/zod/v4/mini/schemas.d.ts +480 -0
  3283. package/node_modules/zod/v4/mini/schemas.js +1002 -0
  3284. package/node_modules/zod/v4/package.json +7 -0
  3285. package/node_modules/zod/v4-mini/index.cjs +51 -0
  3286. package/node_modules/zod/v4-mini/index.d.cts +3 -0
  3287. package/node_modules/zod/v4-mini/index.d.ts +3 -0
  3288. package/node_modules/zod/v4-mini/index.js +3 -0
  3289. package/node_modules/zod/v4-mini/package.json +7 -0
  3290. package/package.json +19 -3
  3291. package/sandbox/boot/bootstrap/drives.ps1 +29 -0
  3292. package/sandbox/boot/bootstrap/files.ps1 +49 -0
  3293. package/sandbox/boot/bootstrap/runner.ps1 +87 -0
  3294. package/sandbox/boot/bootstrap/status.ps1 +8 -0
  3295. package/sandbox/boot/bootstrap.ps1 +91 -0
  3296. package/sandbox/boot/logon.cmd +30 -0
  3297. package/sandbox/csharp/CargoShim.cs +77 -0
  3298. package/sandbox/csharp/Desktop.cs +33 -0
  3299. package/sandbox/csharp/GitShim.cs +47 -0
  3300. package/sandbox/csharp/LinkGate.cs +108 -0
  3301. package/sandbox/csharp/OpenSsl.cs +56 -0
  3302. package/sandbox/csharp/PtyHost.cs +1327 -0
  3303. package/sandbox/csharp/SandboxTools/CpuCap.cs +134 -0
  3304. package/sandbox/csharp/SandboxTools/MemoryLog.cs +157 -0
  3305. package/sandbox/csharp/SandboxTools/PageFile.cs +72 -0
  3306. package/sandbox/csharp/SandboxTools/Program.cs +153 -0
  3307. package/sandbox/csharp/VsWhere.cs +145 -0
  3308. package/sandbox/csharp/VtInput.cs +63 -0
  3309. package/sandbox/scripts/enable-vt-input.ps1 +9 -0
  3310. package/sandbox/scripts/expand-archive.ps1 +9 -0
  3311. package/sandbox/scripts/get-gpu-names.ps1 +5 -0
  3312. package/sandbox/scripts/get-signer.ps1 +8 -0
  3313. package/sandbox/scripts/link-profile-dirs.ps1 +35 -0
  3314. package/sandbox/scripts/new-shortcuts.ps1 +15 -0
  3315. package/sandbox/scripts/set-desktop.ps1 +16 -0
  3316. package/sandbox/scripts/set-dns-servers.ps1 +8 -0
  3317. package/sandbox/scripts/set-machine-environment.ps1 +29 -0
  3318. package/schemas/config.schema.json +142 -7
  3319. package/schemas/sandbox-config.schema.json +64 -7
  3320. package/dist/cli/boot-progress.d.ts +0 -22
  3321. package/dist/cli/boot-progress.js +0 -59
  3322. package/dist/cli/colors.d.ts +0 -24
  3323. package/dist/cli/colors.js +0 -42
  3324. package/dist/cli/commands/launch.d.ts +0 -32
  3325. package/dist/cli/commands/launch.js +0 -421
  3326. package/dist/cli/commands/maintenance.d.ts +0 -10
  3327. package/dist/cli/commands/maintenance.js +0 -220
  3328. package/dist/cli/commands/project.d.ts +0 -33
  3329. package/dist/cli/commands/project.js +0 -102
  3330. package/dist/cli/commands/projects.d.ts +0 -14
  3331. package/dist/cli/commands/projects.js +0 -146
  3332. package/dist/cli/commands/restart.d.ts +0 -6
  3333. package/dist/cli/commands/restart.js +0 -95
  3334. package/dist/cli/commands/sessions.d.ts +0 -12
  3335. package/dist/cli/commands/sessions.js +0 -258
  3336. package/dist/cli/menu/settings/editors.d.ts +0 -30
  3337. package/dist/cli/menu/settings/editors.js +0 -305
  3338. package/dist/cli/progress.d.ts +0 -24
  3339. package/dist/cli/progress.js +0 -101
  3340. package/dist/cli/tui/dialogs.d.ts +0 -57
  3341. package/dist/cli/tui/dialogs.js +0 -162
  3342. package/dist/cli/tui/list-screen.d.ts +0 -101
  3343. package/dist/cli/tui/list-screen.js +0 -299
  3344. package/dist/core/config.d.ts +0 -17
  3345. package/dist/core/config.js +0 -109
  3346. package/dist/core/detect-databases.d.ts +0 -15
  3347. package/dist/core/detect-databases.js +0 -147
  3348. package/dist/core/detect-pwsh.d.ts +0 -18
  3349. package/dist/core/detect-pwsh.js +0 -111
  3350. package/dist/core/detect-toolchains.d.ts +0 -30
  3351. package/dist/core/detect-toolchains.js +0 -58
  3352. package/dist/core/local-config.d.ts +0 -50
  3353. package/dist/core/local-config.js +0 -142
  3354. package/dist/core/project-policy.d.ts +0 -62
  3355. package/dist/core/project-policy.js +0 -121
  3356. package/dist/core/schema.d.ts +0 -6
  3357. package/dist/core/schema.js +0 -8
  3358. package/dist/core/util.d.ts +0 -62
  3359. package/dist/core/util.js +0 -156
  3360. package/dist/core/workspace.d.ts +0 -35
  3361. package/dist/core/workspace.js +0 -206
  3362. package/dist/guest/audit-parse.d.ts +0 -7
  3363. package/dist/guest/audit-parse.js +0 -24
  3364. package/dist/guest/audit.d.ts +0 -4
  3365. package/dist/guest/audit.js +0 -47
  3366. package/dist/guest/boot-env.d.ts +0 -4
  3367. package/dist/guest/boot-env.js +0 -25
  3368. package/dist/guest/cmdline.d.ts +0 -12
  3369. package/dist/guest/cmdline.js +0 -23
  3370. package/dist/guest/daemon/project.d.ts +0 -14
  3371. package/dist/guest/daemon/project.js +0 -132
  3372. package/dist/guest/daemon/session.d.ts +0 -13
  3373. package/dist/guest/daemon/session.js +0 -139
  3374. package/dist/guest/daemon/shutdown.d.ts +0 -1
  3375. package/dist/guest/daemon/shutdown.js +0 -21
  3376. package/dist/guest/daemon.js +0 -57
  3377. package/dist/guest/db.js +0 -75
  3378. package/dist/guest/env.d.ts +0 -56
  3379. package/dist/guest/env.js +0 -115
  3380. package/dist/guest/gitguard.d.ts +0 -7
  3381. package/dist/guest/gitguard.js +0 -60
  3382. package/dist/guest/gitrules.d.ts +0 -2
  3383. package/dist/guest/gitrules.js +0 -11
  3384. package/dist/guest/guide.d.ts +0 -16
  3385. package/dist/guest/guide.js +0 -69
  3386. package/dist/guest/helpers.d.ts +0 -3
  3387. package/dist/guest/helpers.js +0 -26
  3388. package/dist/guest/main.js +0 -147
  3389. package/dist/guest/netproxy.js +0 -100
  3390. package/dist/guest/ports.d.ts +0 -6
  3391. package/dist/guest/ports.js +0 -22
  3392. package/dist/guest/project-context.d.ts +0 -7
  3393. package/dist/guest/project-context.js +0 -10
  3394. package/dist/guest/project-env.d.ts +0 -20
  3395. package/dist/guest/project-env.js +0 -20
  3396. package/dist/guest/project-status.d.ts +0 -5
  3397. package/dist/guest/project-status.js +0 -17
  3398. package/dist/guest/ptyhost.d.ts +0 -22
  3399. package/dist/guest/ptyhost.js +0 -46
  3400. package/dist/guest/setup/agents.d.ts +0 -11
  3401. package/dist/guest/setup/agents.js +0 -87
  3402. package/dist/guest/setup/claude.d.ts +0 -17
  3403. package/dist/guest/setup/claude.js +0 -192
  3404. package/dist/guest/setup/network.d.ts +0 -19
  3405. package/dist/guest/setup/network.js +0 -192
  3406. package/dist/guest/setup/policy.d.ts +0 -3
  3407. package/dist/guest/setup/policy.js +0 -18
  3408. package/dist/guest/setup/user.d.ts +0 -7
  3409. package/dist/guest/setup/user.js +0 -51
  3410. package/dist/guest/toolchains/cli.d.ts +0 -10
  3411. package/dist/guest/toolchains/cli.js +0 -72
  3412. package/dist/guest/toolchains/common.d.ts +0 -54
  3413. package/dist/guest/toolchains/common.js +0 -147
  3414. package/dist/guest/toolchains/databases/dynamodb.d.ts +0 -8
  3415. package/dist/guest/toolchains/databases/dynamodb.js +0 -52
  3416. package/dist/guest/toolchains/databases/index.d.ts +0 -6
  3417. package/dist/guest/toolchains/databases/index.js +0 -62
  3418. package/dist/guest/toolchains/databases/mongodb.d.ts +0 -3
  3419. package/dist/guest/toolchains/databases/mongodb.js +0 -31
  3420. package/dist/guest/toolchains/databases/mysql.d.ts +0 -3
  3421. package/dist/guest/toolchains/databases/mysql.js +0 -38
  3422. package/dist/guest/toolchains/databases/postgres.d.ts +0 -5
  3423. package/dist/guest/toolchains/databases/postgres.js +0 -38
  3424. package/dist/guest/toolchains/databases/redis.d.ts +0 -3
  3425. package/dist/guest/toolchains/databases/redis.js +0 -16
  3426. package/dist/guest/toolchains/databases/server.d.ts +0 -14
  3427. package/dist/guest/toolchains/databases/server.js +0 -52
  3428. package/dist/guest/toolchains/git.d.ts +0 -3
  3429. package/dist/guest/toolchains/git.js +0 -121
  3430. package/dist/guest/toolchains/go.d.ts +0 -3
  3431. package/dist/guest/toolchains/go.js +0 -33
  3432. package/dist/guest/toolchains/java.d.ts +0 -8
  3433. package/dist/guest/toolchains/java.js +0 -96
  3434. package/dist/guest/toolchains/node.d.ts +0 -3
  3435. package/dist/guest/toolchains/node.js +0 -152
  3436. package/dist/guest/toolchains/pwsh.d.ts +0 -4
  3437. package/dist/guest/toolchains/pwsh.js +0 -14
  3438. package/dist/guest/toolchains/python.d.ts +0 -3
  3439. package/dist/guest/toolchains/python.js +0 -78
  3440. package/dist/guest/toolchains/scripting/php.d.ts +0 -3
  3441. package/dist/guest/toolchains/scripting/php.js +0 -71
  3442. package/dist/guest/toolchains/scripting/ruby.d.ts +0 -3
  3443. package/dist/guest/toolchains/scripting/ruby.js +0 -47
  3444. package/dist/guest/toolchains/scripting/vcruntime.d.ts +0 -7
  3445. package/dist/guest/toolchains/scripting/vcruntime.js +0 -45
  3446. package/dist/guest/toolchains/versions.d.ts +0 -47
  3447. package/dist/guest/toolchains/versions.js +0 -77
  3448. package/dist/guest/toolchains/vscode-profile.d.ts +0 -30
  3449. package/dist/guest/toolchains/vscode-profile.js +0 -69
  3450. package/dist/guest/toolchains/vscode.d.ts +0 -19
  3451. package/dist/guest/toolchains/vscode.js +0 -139
  3452. package/dist/guest/view.d.ts +0 -1
  3453. package/dist/guest/view.js +0 -42
  3454. package/dist/host/accounts.d.ts +0 -32
  3455. package/dist/host/accounts.js +0 -128
  3456. package/dist/host/agent-commands.d.ts +0 -25
  3457. package/dist/host/agent-commands.js +0 -145
  3458. package/dist/host/attach.d.ts +0 -17
  3459. package/dist/host/attach.js +0 -70
  3460. package/dist/host/channel.d.ts +0 -38
  3461. package/dist/host/channel.js +0 -163
  3462. package/dist/host/claude-profile.d.ts +0 -15
  3463. package/dist/host/claude-profile.js +0 -107
  3464. package/dist/host/cleanup.d.ts +0 -23
  3465. package/dist/host/cleanup.js +0 -57
  3466. package/dist/host/database-plan.d.ts +0 -12
  3467. package/dist/host/database-plan.js +0 -52
  3468. package/dist/host/generate.d.ts +0 -13
  3469. package/dist/host/generate.js +0 -115
  3470. package/dist/host/join.d.ts +0 -35
  3471. package/dist/host/join.js +0 -90
  3472. package/dist/host/launch/projects.d.ts +0 -17
  3473. package/dist/host/launch/projects.js +0 -62
  3474. package/dist/host/launch/wsb.d.ts +0 -10
  3475. package/dist/host/launch/wsb.js +0 -34
  3476. package/dist/host/motw.d.ts +0 -17
  3477. package/dist/host/motw.js +0 -74
  3478. package/dist/host/pc-scan.d.ts +0 -6
  3479. package/dist/host/pc-scan.js +0 -37
  3480. package/dist/host/personalize.d.ts +0 -10
  3481. package/dist/host/personalize.js +0 -97
  3482. package/dist/host/platform.d.ts +0 -19
  3483. package/dist/host/platform.js +0 -129
  3484. package/dist/host/port-forward.d.ts +0 -8
  3485. package/dist/host/port-forward.js +0 -37
  3486. package/dist/host/project-scan.d.ts +0 -7
  3487. package/dist/host/project-scan.js +0 -89
  3488. package/dist/host/projects.d.ts +0 -123
  3489. package/dist/host/projects.js +0 -196
  3490. package/dist/host/repo-guard.d.ts +0 -43
  3491. package/dist/host/repo-guard.js +0 -347
  3492. package/dist/host/secrets.d.ts +0 -14
  3493. package/dist/host/secrets.js +0 -133
  3494. package/dist/host/stops.d.ts +0 -67
  3495. package/dist/host/stops.js +0 -126
  3496. package/dist/host/terminal.d.ts +0 -40
  3497. package/dist/host/terminal.js +0 -174
  3498. package/dist/host/window.d.ts +0 -4
  3499. package/dist/host/window.js +0 -72
  3500. package/dist/host/wsb.d.ts +0 -37
  3501. package/dist/host/wsb.js +0 -101
  3502. package/dist/selftest/fixtures.d.ts +0 -318
  3503. package/dist/selftest/fixtures.js +0 -82
  3504. package/dist/selftest/harness.d.ts +0 -51
  3505. package/dist/selftest/harness.js +0 -77
  3506. package/dist/selftest/live.d.ts +0 -65
  3507. package/dist/selftest/live.js +0 -109
  3508. package/dist/shared/apps.d.ts +0 -49
  3509. package/dist/shared/apps.js +0 -114
  3510. package/dist/shared/console-input.d.ts +0 -11
  3511. package/dist/shared/console-input.js +0 -61
  3512. package/dist/shared/download.d.ts +0 -63
  3513. package/dist/shared/download.js +0 -238
  3514. package/dist/shared/guest-paths.d.ts +0 -57
  3515. package/dist/shared/guest-paths.js +0 -129
  3516. package/dist/shared/netpolicy.d.ts +0 -27
  3517. package/dist/shared/netpolicy.js +0 -51
  3518. package/dist/shared/netrules.d.ts +0 -18
  3519. package/dist/shared/netrules.js +0 -98
  3520. package/dist/shared/paths.d.ts +0 -14
  3521. package/dist/shared/paths.js +0 -28
  3522. package/dist/shared/projects.d.ts +0 -76
  3523. package/dist/shared/projects.js +0 -126
  3524. package/dist/shared/pty-client.d.ts +0 -108
  3525. package/dist/shared/pty-client.js +0 -406
  3526. package/dist/shared/rundir.d.ts +0 -41
  3527. package/dist/shared/rundir.js +0 -96
  3528. package/dist/shared/safe-remove.d.ts +0 -10
  3529. package/dist/shared/safe-remove.js +0 -66
  3530. package/dist/shared/schema.d.ts +0 -561
  3531. package/dist/shared/schema.js +0 -104
  3532. package/sandbox/bootstrap.ps1 +0 -258
  3533. package/sandbox/cargoshim.cs +0 -56
  3534. package/sandbox/cpucap.cs +0 -33
  3535. package/sandbox/cpucap.ps1 +0 -20
  3536. package/sandbox/gitshim.cs +0 -35
  3537. package/sandbox/logon.cmd +0 -24
  3538. package/sandbox/memlog.ps1 +0 -34
  3539. package/sandbox/openssl.cs +0 -42
  3540. package/sandbox/pagefile.cs +0 -31
  3541. package/sandbox/pagefile.ps1 +0 -21
  3542. package/sandbox/ptyhost.cs +0 -769
  3543. package/sandbox/vswhere.cs +0 -83
  3544. /package/dist/{guest/daemon.d.ts → cli/tui/list/list-types.js} +0 -0
  3545. /package/dist/{guest/db.d.ts → cli/tui/screen.js} +0 -0
  3546. /package/dist/guest/{main.d.ts → entries/daemon.d.ts} +0 -0
  3547. /package/dist/guest/{netproxy.d.ts → entries/db.d.ts} +0 -0
  3548. /package/dist/{selftest/suite.js → guest/entries/gitguard.d.ts} +0 -0
  3549. /package/dist/selftest/{suite.d.ts → support/suite.d.ts} +0 -0
  3550. /package/sandbox/{trust.cmd → boot/trust.cmd} +0 -0
@@ -0,0 +1,4733 @@
1
+ import { Validator } from "@seriousme/openapi-schema-validator";
2
+ import { describe, expect, test, vi } from "vitest";
3
+ import * as z from "zod";
4
+ // import * as zCore from "zod/v4/core";
5
+
6
+ const openAPI30Validator = new Validator();
7
+ /** @see https://github.com/colinhacks/zod/issues/5147 */
8
+ const validateOpenAPI30Schema = async (zodJSONSchema: Record<string, unknown>): Promise<true> => {
9
+ const res = await openAPI30Validator.validate({
10
+ openapi: "3.0.0",
11
+ info: {
12
+ title: "SampleApi",
13
+ description: "Sample backend service",
14
+ version: "1.0.0",
15
+ },
16
+ components: { schemas: { test: zodJSONSchema } },
17
+ paths: {},
18
+ });
19
+
20
+ if (!res.valid) {
21
+ // `console.error` should make `vitest` trow an unhandled error printing the validation messages in consoles
22
+ console.error(
23
+ `OpenAPI schema is not valid against ${openAPI30Validator.version}`,
24
+ JSON.stringify(res.errors, null, 2)
25
+ );
26
+ }
27
+
28
+ return true;
29
+ };
30
+
31
+ describe("toJSONSchema", () => {
32
+ test("primitive types", () => {
33
+ expect(z.toJSONSchema(z.string())).toMatchInlineSnapshot(`
34
+ {
35
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
36
+ "type": "string",
37
+ }
38
+ `);
39
+ expect(z.toJSONSchema(z.number())).toMatchInlineSnapshot(`
40
+ {
41
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
42
+ "type": "number",
43
+ }
44
+ `);
45
+ expect(z.toJSONSchema(z.boolean())).toMatchInlineSnapshot(`
46
+ {
47
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
48
+ "type": "boolean",
49
+ }
50
+ `);
51
+ expect(z.toJSONSchema(z.null())).toMatchInlineSnapshot(`
52
+ {
53
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
54
+ "type": "null",
55
+ }
56
+ `);
57
+ expect(z.toJSONSchema(z.undefined(), { unrepresentable: "any" })).toMatchInlineSnapshot(`
58
+ {
59
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
60
+ }
61
+ `);
62
+ expect(z.toJSONSchema(z.any())).toMatchInlineSnapshot(`
63
+ {
64
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
65
+ }
66
+ `);
67
+ expect(z.toJSONSchema(z.unknown())).toMatchInlineSnapshot(`
68
+ {
69
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
70
+ }
71
+ `);
72
+ expect(z.toJSONSchema(z.never())).toMatchInlineSnapshot(`
73
+ {
74
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
75
+ "not": {},
76
+ }
77
+ `);
78
+ expect(z.toJSONSchema(z.email())).toMatchInlineSnapshot(`
79
+ {
80
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
81
+ "format": "email",
82
+ "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
83
+ "type": "string",
84
+ }
85
+ `);
86
+ expect(z.toJSONSchema(z.iso.datetime())).toMatchInlineSnapshot(`
87
+ {
88
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
89
+ "format": "date-time",
90
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
91
+ "type": "string",
92
+ }
93
+ `);
94
+ expect(z.toJSONSchema(z.iso.date())).toMatchInlineSnapshot(`
95
+ {
96
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
97
+ "format": "date",
98
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
99
+ "type": "string",
100
+ }
101
+ `);
102
+ // only shapes keeping both an offset and seconds may advertise `date-time`, composed onto a string as well as constructed
103
+ expect(z.toJSONSchema(z.iso.datetime()).format).toEqual("date-time");
104
+ expect(z.toJSONSchema(z.iso.datetime({ offset: true })).format).toEqual("date-time");
105
+ expect(z.toJSONSchema(z.iso.datetime({ precision: 0 })).format).toEqual("date-time");
106
+ expect(z.toJSONSchema(z.iso.datetime({ local: true })).format).toEqual(undefined);
107
+ expect(z.toJSONSchema(z.iso.datetime({ precision: -1 })).format).toEqual(undefined);
108
+ expect(z.toJSONSchema(z.string().check(z.iso.datetime({ local: true }))).format).toEqual(undefined);
109
+ expect(z.toJSONSchema(z.string().check(z.iso.datetime())).format).toEqual("date-time");
110
+ // the pattern still describes what the schema accepts
111
+ expect(z.toJSONSchema(z.iso.datetime({ local: true })).pattern).toBeDefined();
112
+
113
+ expect(z.toJSONSchema(z.iso.time())).toMatchInlineSnapshot(`
114
+ {
115
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
116
+ "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?$",
117
+ "type": "string",
118
+ }
119
+ `);
120
+ expect(z.toJSONSchema(z.iso.time({ precision: -1 }))).toMatchInlineSnapshot(`
121
+ {
122
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
123
+ "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
124
+ "type": "string",
125
+ }
126
+ `);
127
+ expect(z.toJSONSchema(z.iso.time({ precision: 0 }))).toMatchInlineSnapshot(`
128
+ {
129
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
130
+ "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
131
+ "type": "string",
132
+ }
133
+ `);
134
+ expect(z.toJSONSchema(z.iso.time({ precision: 3 }))).toMatchInlineSnapshot(`
135
+ {
136
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
137
+ "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}$",
138
+ "type": "string",
139
+ }
140
+ `);
141
+ expect(z.toJSONSchema(z.iso.duration())).toMatchInlineSnapshot(`
142
+ {
143
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
144
+ "format": "duration",
145
+ "pattern": "^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$",
146
+ "type": "string",
147
+ }
148
+ `);
149
+ expect(z.toJSONSchema(z.ipv4())).toMatchInlineSnapshot(`
150
+ {
151
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
152
+ "format": "ipv4",
153
+ "pattern": "^(?:(?: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])$",
154
+ "type": "string",
155
+ }
156
+ `);
157
+ expect(z.toJSONSchema(z.ipv6())).toMatchInlineSnapshot(`
158
+ {
159
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
160
+ "format": "ipv6",
161
+ "pattern": "^(([0-9a-fA-F]{1,4}:){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}|:))$",
162
+ "type": "string",
163
+ }
164
+ `);
165
+ expect(z.toJSONSchema(z.mac())).toMatchInlineSnapshot(`
166
+ {
167
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
168
+ "format": "mac",
169
+ "pattern": "^(?:[0-9A-F]{2}:){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}:){5}[0-9a-f]{2}$",
170
+ "type": "string",
171
+ }
172
+ `);
173
+ expect(z.toJSONSchema(z.mac({ delimiter: ":" }))).toMatchInlineSnapshot(`
174
+ {
175
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
176
+ "format": "mac",
177
+ "pattern": "^(?:[0-9A-F]{2}:){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}:){5}[0-9a-f]{2}$",
178
+ "type": "string",
179
+ }
180
+ `);
181
+ expect(z.toJSONSchema(z.mac({ delimiter: "-" }))).toMatchInlineSnapshot(`
182
+ {
183
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
184
+ "format": "mac",
185
+ "pattern": "^(?:[0-9A-F]{2}-){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}-){5}[0-9a-f]{2}$",
186
+ "type": "string",
187
+ }
188
+ `);
189
+ expect(z.toJSONSchema(z.uuid())).toMatchInlineSnapshot(`
190
+ {
191
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
192
+ "format": "uuid",
193
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
194
+ "type": "string",
195
+ }
196
+ `);
197
+ expect(z.toJSONSchema(z.guid())).toMatchInlineSnapshot(`
198
+ {
199
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
200
+ "format": "uuid",
201
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
202
+ "type": "string",
203
+ }
204
+ `);
205
+ expect(z.toJSONSchema(z.url())).toMatchInlineSnapshot(`
206
+ {
207
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
208
+ "format": "uri",
209
+ "type": "string",
210
+ }
211
+ `);
212
+ expect(z.toJSONSchema(z.base64())).toMatchInlineSnapshot(`
213
+ {
214
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
215
+ "contentEncoding": "base64",
216
+ "format": "base64",
217
+ "pattern": "^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$",
218
+ "type": "string",
219
+ }
220
+ `);
221
+ expect(z.toJSONSchema(z.base64url())).toMatchInlineSnapshot(`
222
+ {
223
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
224
+ "contentEncoding": "base64url",
225
+ "format": "base64url",
226
+ "pattern": "^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$",
227
+ "type": "string",
228
+ }
229
+ `);
230
+ expect(z.toJSONSchema(z.cuid())).toMatchInlineSnapshot(`
231
+ {
232
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
233
+ "format": "cuid",
234
+ "pattern": "^[cC][0-9a-z]{6,}$",
235
+ "type": "string",
236
+ }
237
+ `);
238
+ // expect(z.toJSONSchema(z.regex(/asdf/))).toMatchInlineSnapshot();
239
+ expect(z.toJSONSchema(z.emoji())).toMatchInlineSnapshot(`
240
+ {
241
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
242
+ "format": "emoji",
243
+ "pattern": "^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$",
244
+ "type": "string",
245
+ }
246
+ `);
247
+ expect(z.toJSONSchema(z.nanoid())).toMatchInlineSnapshot(`
248
+ {
249
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
250
+ "format": "nanoid",
251
+ "pattern": "^[a-zA-Z0-9_-]{21}$",
252
+ "type": "string",
253
+ }
254
+ `);
255
+ expect(z.toJSONSchema(z.nanoid({ length: 64 }))).toMatchInlineSnapshot(`
256
+ {
257
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
258
+ "format": "nanoid",
259
+ "pattern": "^[a-zA-Z0-9_-]{64}$",
260
+ "type": "string",
261
+ }
262
+ `);
263
+ expect(z.toJSONSchema(z.cuid2())).toMatchInlineSnapshot(`
264
+ {
265
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
266
+ "format": "cuid2",
267
+ "pattern": "^[0-9a-z]+$",
268
+ "type": "string",
269
+ }
270
+ `);
271
+ expect(z.toJSONSchema(z.ulid())).toMatchInlineSnapshot(`
272
+ {
273
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
274
+ "format": "ulid",
275
+ "pattern": "^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$",
276
+ "type": "string",
277
+ }
278
+ `);
279
+ // expect(z.toJSONSchema(z.cidr())).toMatchInlineSnapshot();
280
+ expect(z.toJSONSchema(z.number())).toMatchInlineSnapshot(`
281
+ {
282
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
283
+ "type": "number",
284
+ }
285
+ `);
286
+ expect(z.toJSONSchema(z.int())).toMatchInlineSnapshot(`
287
+ {
288
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
289
+ "maximum": 9007199254740991,
290
+ "minimum": -9007199254740991,
291
+ "type": "integer",
292
+ }
293
+ `);
294
+ expect(z.toJSONSchema(z.int32())).toMatchInlineSnapshot(`
295
+ {
296
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
297
+ "maximum": 2147483647,
298
+ "minimum": -2147483648,
299
+ "type": "integer",
300
+ }
301
+ `);
302
+ expect(z.toJSONSchema(z.float32())).toMatchInlineSnapshot(`
303
+ {
304
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
305
+ "maximum": 3.4028234663852886e+38,
306
+ "minimum": -3.4028234663852886e+38,
307
+ "type": "number",
308
+ }
309
+ `);
310
+ expect(z.toJSONSchema(z.float64())).toMatchInlineSnapshot(`
311
+ {
312
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
313
+ "maximum": 1.7976931348623157e+308,
314
+ "minimum": -1.7976931348623157e+308,
315
+ "type": "number",
316
+ }
317
+ `);
318
+ expect(z.toJSONSchema(z.jwt())).toMatchInlineSnapshot(`
319
+ {
320
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
321
+ "format": "jwt",
322
+ "type": "string",
323
+ }
324
+ `);
325
+ });
326
+
327
+ test("unsupported schema types", () => {
328
+ expect(() => z.toJSONSchema(z.bigint())).toThrow("BigInt cannot be represented in JSON Schema");
329
+ expect(() => z.toJSONSchema(z.int64())).toThrow("BigInt cannot be represented in JSON Schema");
330
+ expect(() => z.toJSONSchema(z.symbol())).toThrow("Symbols cannot be represented in JSON Schema");
331
+ expect(() => z.toJSONSchema(z.void())).toThrow("Void cannot be represented in JSON Schema");
332
+ expect(() => z.toJSONSchema(z.undefined())).toThrow("Undefined cannot be represented in JSON Schema");
333
+ expect(() => z.toJSONSchema(z.date())).toThrow("Date cannot be represented in JSON Schema");
334
+ expect(() => z.toJSONSchema(z.map(z.string(), z.number()))).toThrow("Map cannot be represented in JSON Schema");
335
+ expect(() => z.toJSONSchema(z.set(z.string()))).toThrow("Set cannot be represented in JSON Schema");
336
+ expect(() => z.toJSONSchema(z.custom(() => true))).toThrow("Custom types cannot be represented in JSON Schema");
337
+
338
+ // Transform
339
+ const transformSchema = z.string().transform((val) => Number.parseInt(val));
340
+ expect(() => z.toJSONSchema(transformSchema)).toThrow("Transforms cannot be represented in JSON Schema");
341
+
342
+ // Static catch values
343
+ const staticCatchSchema = z.string().catch(() => "sup");
344
+ expect(z.toJSONSchema(staticCatchSchema)).toMatchInlineSnapshot(`
345
+ {
346
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
347
+ "default": "sup",
348
+ "type": "string",
349
+ }
350
+ `);
351
+
352
+ // Dynamic catch values
353
+ const dynamicCatchSchema = z.string().catch((ctx) => `${ctx.issues.length}`);
354
+ expect(() => z.toJSONSchema(dynamicCatchSchema)).toThrow("Dynamic catch values are not supported in JSON Schema");
355
+ expect(z.toJSONSchema(dynamicCatchSchema, { unrepresentable: "any" })).toMatchInlineSnapshot(`
356
+ {
357
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
358
+ "type": "string",
359
+ }
360
+ `);
361
+ });
362
+
363
+ test("string formats", () => {
364
+ expect(z.toJSONSchema(z.string().email())).toMatchInlineSnapshot(`
365
+ {
366
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
367
+ "format": "email",
368
+ "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
369
+ "type": "string",
370
+ }
371
+ `);
372
+ expect(z.toJSONSchema(z.string().uuid())).toMatchInlineSnapshot(`
373
+ {
374
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
375
+ "format": "uuid",
376
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
377
+ "type": "string",
378
+ }
379
+ `);
380
+ expect(z.toJSONSchema(z.iso.datetime())).toMatchInlineSnapshot(`
381
+ {
382
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
383
+ "format": "date-time",
384
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
385
+ "type": "string",
386
+ }
387
+ `);
388
+
389
+ expect(z.toJSONSchema(z.iso.date())).toMatchInlineSnapshot(`
390
+ {
391
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
392
+ "format": "date",
393
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
394
+ "type": "string",
395
+ }
396
+ `);
397
+ expect(z.toJSONSchema(z.iso.time())).toMatchInlineSnapshot(`
398
+ {
399
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
400
+ "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?$",
401
+ "type": "string",
402
+ }
403
+ `);
404
+ expect(z.toJSONSchema(z.iso.duration())).toMatchInlineSnapshot(`
405
+ {
406
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
407
+ "format": "duration",
408
+ "pattern": "^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$",
409
+ "type": "string",
410
+ }
411
+ `);
412
+ // expect(z.toJSONSchema(z.string().ip())).toMatchInlineSnapshot(`
413
+ // {
414
+ // "pattern": /\\(\\^\\(\\?:\\(\\?: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\\]\\)\\$\\)\\|\\(\\^\\(\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{7\\}\\|::\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{0,6\\}\\|\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{1\\}:\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{0,5\\}\\|\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{2\\}:\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{0,4\\}\\|\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{3\\}:\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{0,3\\}\\|\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{4\\}:\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{0,2\\}\\|\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{5\\}:\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{0,1\\}\\)\\(\\[a-fA-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\\}\\)\\)\\)\\$\\)/,
415
+ // "type": "string",
416
+ // }
417
+ // `);
418
+ expect(z.toJSONSchema(z.ipv4())).toMatchInlineSnapshot(`
419
+ {
420
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
421
+ "format": "ipv4",
422
+ "pattern": "^(?:(?: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])$",
423
+ "type": "string",
424
+ }
425
+ `);
426
+
427
+ expect(z.toJSONSchema(z.ipv6())).toMatchInlineSnapshot(`
428
+ {
429
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
430
+ "format": "ipv6",
431
+ "pattern": "^(([0-9a-fA-F]{1,4}:){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}|:))$",
432
+ "type": "string",
433
+ }
434
+ `);
435
+
436
+ expect(z.toJSONSchema(z.mac())).toMatchInlineSnapshot(`
437
+ {
438
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
439
+ "format": "mac",
440
+ "pattern": "^(?:[0-9A-F]{2}:){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}:){5}[0-9a-f]{2}$",
441
+ "type": "string",
442
+ }
443
+ `);
444
+ expect(z.toJSONSchema(z.mac({ delimiter: ":" }))).toMatchInlineSnapshot(`
445
+ {
446
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
447
+ "format": "mac",
448
+ "pattern": "^(?:[0-9A-F]{2}:){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}:){5}[0-9a-f]{2}$",
449
+ "type": "string",
450
+ }
451
+ `);
452
+ expect(z.toJSONSchema(z.mac({ delimiter: "-" }))).toMatchInlineSnapshot(`
453
+ {
454
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
455
+ "format": "mac",
456
+ "pattern": "^(?:[0-9A-F]{2}-){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}-){5}[0-9a-f]{2}$",
457
+ "type": "string",
458
+ }
459
+ `);
460
+
461
+ expect(z.toJSONSchema(z.base64())).toMatchInlineSnapshot(`
462
+ {
463
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
464
+ "contentEncoding": "base64",
465
+ "format": "base64",
466
+ "pattern": "^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$",
467
+ "type": "string",
468
+ }
469
+ `);
470
+ expect(z.toJSONSchema(z.url())).toMatchInlineSnapshot(`
471
+ {
472
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
473
+ "format": "uri",
474
+ "type": "string",
475
+ }
476
+ `);
477
+ expect(z.toJSONSchema(z.guid())).toMatchInlineSnapshot(`
478
+ {
479
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
480
+ "format": "uuid",
481
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
482
+ "type": "string",
483
+ }
484
+ `);
485
+ expect(z.toJSONSchema(z.string().regex(/asdf/))).toMatchInlineSnapshot(`
486
+ {
487
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
488
+ "pattern": "asdf",
489
+ "type": "string",
490
+ }
491
+ `);
492
+ });
493
+
494
+ test("base64url pattern agrees with parse", () => {
495
+ const schema = z.base64url();
496
+ const pattern = new RegExp(z.toJSONSchema(schema).pattern!);
497
+ // lengths 1 (mod 4) carry no whole byte; the emitted pattern must reject them like parse does
498
+ for (const s of ["", "A", "AA", "AAA", "AAAA", "AAAAA"]) {
499
+ expect(pattern.test(s)).toBe(schema.safeParse(s).success);
500
+ }
501
+ });
502
+
503
+ test("base64 pattern agrees with parse", () => {
504
+ const schema = z.base64();
505
+ const pattern = new RegExp(z.toJSONSchema(schema).pattern!);
506
+ // the runtime def.pattern is lax; the emitted pattern must still carry the block structure parse enforces
507
+ for (const s of ["", "A", "AA", "AAA", "AAAA", "AAAAA", "AA==", "AAA=", "A===", "=", "AAAA=="]) {
508
+ expect(pattern.test(s)).toBe(schema.safeParse(s).success);
509
+ }
510
+ });
511
+
512
+ test("looseRecord with a format key emits the exact pattern", () => {
513
+ // recordProcessor reads bag.patterns directly; it must apply the same lax-to-exact swap as stringProcessor
514
+ const json = z.toJSONSchema(z.looseRecord(z.base64url(), z.number()));
515
+ expect(Object.keys(json.patternProperties!)).toEqual([z.regexes.base64url.source]);
516
+ });
517
+
518
+ test("string patterns", () => {
519
+ expect(
520
+ z.toJSONSchema(
521
+ z
522
+ .string()
523
+ .startsWith("hello")
524
+ .includes("cruel")
525
+ .includes("dark", { position: 10 })
526
+ .endsWith("world")
527
+ .regex(/stuff/)
528
+ )
529
+ ).toMatchInlineSnapshot(`
530
+ {
531
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
532
+ "allOf": [
533
+ {
534
+ "pattern": "^hello.*",
535
+ },
536
+ {
537
+ "pattern": "cruel",
538
+ },
539
+ {
540
+ "pattern": "^.{10,}dark",
541
+ },
542
+ {
543
+ "pattern": ".*world$",
544
+ },
545
+ {
546
+ "pattern": "stuff",
547
+ },
548
+ ],
549
+ "type": "string",
550
+ }
551
+ `);
552
+
553
+ expect(
554
+ z.toJSONSchema(
555
+ z
556
+ .string()
557
+ .startsWith("hello")
558
+ .includes("cruel")
559
+ .includes("dark", { position: 10 })
560
+ .endsWith("world")
561
+ .regex(/stuff/),
562
+ {
563
+ target: "draft-7",
564
+ }
565
+ )
566
+ ).toMatchInlineSnapshot(`
567
+ {
568
+ "$schema": "http://json-schema.org/draft-07/schema#",
569
+ "allOf": [
570
+ {
571
+ "pattern": "^hello.*",
572
+ "type": "string",
573
+ },
574
+ {
575
+ "pattern": "cruel",
576
+ "type": "string",
577
+ },
578
+ {
579
+ "pattern": "^.{10,}dark",
580
+ "type": "string",
581
+ },
582
+ {
583
+ "pattern": ".*world$",
584
+ "type": "string",
585
+ },
586
+ {
587
+ "pattern": "stuff",
588
+ "type": "string",
589
+ },
590
+ ],
591
+ "type": "string",
592
+ }
593
+ `);
594
+ });
595
+
596
+ test("includes with position emits a pattern matching runtime semantics", () => {
597
+ // String.prototype.includes(sub, position) matches `sub` at `position` OR
598
+ // LATER, so the JSON Schema pattern must allow >= position leading chars.
599
+ const schema = z.string().includes("foo", { position: 2 });
600
+ const json = z.toJSONSchema(schema) as { pattern?: string };
601
+ expect(json.pattern).toBe("^.{2,}foo");
602
+
603
+ const re = new RegExp(json.pattern!);
604
+ for (const input of ["xxfoo", "xxxfoo", "xfoo", "ab"]) {
605
+ expect(re.test(input)).toBe(schema.safeParse(input).success);
606
+ }
607
+ });
608
+
609
+ test("number constraints", () => {
610
+ expect(z.toJSONSchema(z.number().min(5).max(10))).toMatchInlineSnapshot(
611
+ `
612
+ {
613
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
614
+ "maximum": 10,
615
+ "minimum": 5,
616
+ "type": "number",
617
+ }
618
+ `
619
+ );
620
+
621
+ expect(z.toJSONSchema(z.number().gt(5).gt(10))).toMatchInlineSnapshot(`
622
+ {
623
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
624
+ "exclusiveMinimum": 10,
625
+ "type": "number",
626
+ }
627
+ `);
628
+
629
+ expect(z.toJSONSchema(z.number().gt(5).gte(10))).toMatchInlineSnapshot(`
630
+ {
631
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
632
+ "minimum": 10,
633
+ "type": "number",
634
+ }
635
+ `);
636
+
637
+ expect(z.toJSONSchema(z.number().lt(5).lt(3))).toMatchInlineSnapshot(`
638
+ {
639
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
640
+ "exclusiveMaximum": 3,
641
+ "type": "number",
642
+ }
643
+ `);
644
+
645
+ expect(z.toJSONSchema(z.number().lt(5).lt(3).lte(2))).toMatchInlineSnapshot(`
646
+ {
647
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
648
+ "maximum": 2,
649
+ "type": "number",
650
+ }
651
+ `);
652
+
653
+ expect(z.toJSONSchema(z.number().lt(5).lte(3))).toMatchInlineSnapshot(`
654
+ {
655
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
656
+ "maximum": 3,
657
+ "type": "number",
658
+ }
659
+ `);
660
+
661
+ expect(z.toJSONSchema(z.number().gt(5).lt(10))).toMatchInlineSnapshot(`
662
+ {
663
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
664
+ "exclusiveMaximum": 10,
665
+ "exclusiveMinimum": 5,
666
+ "type": "number",
667
+ }
668
+ `);
669
+ expect(z.toJSONSchema(z.number().gte(5).lte(10))).toMatchInlineSnapshot(`
670
+ {
671
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
672
+ "maximum": 10,
673
+ "minimum": 5,
674
+ "type": "number",
675
+ }
676
+ `);
677
+ expect(z.toJSONSchema(z.number().positive())).toMatchInlineSnapshot(`
678
+ {
679
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
680
+ "exclusiveMinimum": 0,
681
+ "type": "number",
682
+ }
683
+ `);
684
+ expect(z.toJSONSchema(z.number().negative())).toMatchInlineSnapshot(`
685
+ {
686
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
687
+ "exclusiveMaximum": 0,
688
+ "type": "number",
689
+ }
690
+ `);
691
+ expect(z.toJSONSchema(z.number().nonpositive())).toMatchInlineSnapshot(`
692
+ {
693
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
694
+ "maximum": 0,
695
+ "type": "number",
696
+ }
697
+ `);
698
+ expect(z.toJSONSchema(z.number().nonnegative())).toMatchInlineSnapshot(`
699
+ {
700
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
701
+ "minimum": 0,
702
+ "type": "number",
703
+ }
704
+ `);
705
+ });
706
+
707
+ test("number constraints draft-4", () => {
708
+ expect(z.toJSONSchema(z.number().gt(5).lt(10), { target: "draft-4" })).toMatchInlineSnapshot(`
709
+ {
710
+ "$schema": "http://json-schema.org/draft-04/schema#",
711
+ "exclusiveMaximum": true,
712
+ "exclusiveMinimum": true,
713
+ "maximum": 10,
714
+ "minimum": 5,
715
+ "type": "number",
716
+ }
717
+ `);
718
+ });
719
+
720
+ test("number constraints intersection draft-04", () => {
721
+ // When both minimum (from .int()) and exclusiveMinimum (from .positive()) exist, the more restrictive constraint should be used
722
+ expect(z.toJSONSchema(z.number().int().positive().lte(65535), { target: "draft-04" })).toMatchInlineSnapshot(`
723
+ {
724
+ "$schema": "http://json-schema.org/draft-04/schema#",
725
+ "exclusiveMinimum": true,
726
+ "maximum": 65535,
727
+ "minimum": 0,
728
+ "type": "integer",
729
+ }
730
+ `);
731
+ // Same for openapi-3.0
732
+ expect(z.toJSONSchema(z.number().int().positive().lte(65535), { target: "openapi-3.0" })).toMatchInlineSnapshot(`
733
+ {
734
+ "exclusiveMinimum": true,
735
+ "maximum": 65535,
736
+ "minimum": 0,
737
+ "type": "integer",
738
+ }
739
+ `);
740
+ // When inclusive minimum is more restrictive than exclusive minimum
741
+ expect(z.toJSONSchema(z.number().gt(3).gte(10), { target: "draft-04" })).toMatchInlineSnapshot(`
742
+ {
743
+ "$schema": "http://json-schema.org/draft-04/schema#",
744
+ "minimum": 10,
745
+ "type": "number",
746
+ }
747
+ `);
748
+ // Same logic for maximum constraints
749
+ expect(z.toJSONSchema(z.number().int().negative(), { target: "draft-04" })).toMatchInlineSnapshot(`
750
+ {
751
+ "$schema": "http://json-schema.org/draft-04/schema#",
752
+ "exclusiveMaximum": true,
753
+ "maximum": 0,
754
+ "minimum": -9007199254740991,
755
+ "type": "integer",
756
+ }
757
+ `);
758
+ });
759
+
760
+ test("number constraints order independence with int()", () => {
761
+ // .int() applied last should not overwrite the tighter bounds .min()/.max() already stored
762
+ expect(z.toJSONSchema(z.number().int().min(0).max(23))).toMatchInlineSnapshot(`
763
+ {
764
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
765
+ "maximum": 23,
766
+ "minimum": 0,
767
+ "type": "integer",
768
+ }
769
+ `);
770
+ expect(z.toJSONSchema(z.number().min(0).max(23).int())).toMatchInlineSnapshot(`
771
+ {
772
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
773
+ "maximum": 23,
774
+ "minimum": 0,
775
+ "type": "integer",
776
+ }
777
+ `);
778
+ });
779
+
780
+ test("chained multipleOf divisors emit the whole conjunction", () => {
781
+ // runtime rejects 4 (not a multiple of 3), so the emitted schema must too
782
+ expect(z.toJSONSchema(z.number().multipleOf(2).multipleOf(3))).toMatchInlineSnapshot(`
783
+ {
784
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
785
+ "allOf": [
786
+ {
787
+ "multipleOf": 3,
788
+ },
789
+ ],
790
+ "multipleOf": 2,
791
+ "type": "number",
792
+ }
793
+ `);
794
+ });
795
+
796
+ test("length() does not overwrite a tighter earlier bound", () => {
797
+ // min(8) + length(5) matches nothing at runtime; the emitted bounds stay honest about that
798
+ expect(z.toJSONSchema(z.string().min(8).length(5))).toMatchInlineSnapshot(`
799
+ {
800
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
801
+ "maxLength": 5,
802
+ "minLength": 8,
803
+ "type": "string",
804
+ }
805
+ `);
806
+ });
807
+
808
+ test("an integer format keeps the emitted type integer whatever format lands last", () => {
809
+ // runtime rejects 1.5 in both orders, so both must emit type integer
810
+ const after = z.number().int().check(z.float32());
811
+ expect(after.safeParse(1.5).success).toBe(false);
812
+ expect(z.toJSONSchema(after).type).toBe("integer");
813
+ expect(z.toJSONSchema(z.number().check(z.float32()).int()).type).toBe("integer");
814
+ });
815
+
816
+ test("disjoint mime checks emit a false schema, not an unconstrained file", () => {
817
+ const file = z.file().mime("image/png").mime("text/plain");
818
+ expect(z.toJSONSchema(file)).toMatchInlineSnapshot(`
819
+ {
820
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
821
+ "contentEncoding": "binary",
822
+ "format": "binary",
823
+ "not": {},
824
+ "type": "string",
825
+ }
826
+ `);
827
+ });
828
+
829
+ test("a custom mime narrowing via onattach intersects with built-in mime checks", () => {
830
+ const check = {
831
+ _zod: {
832
+ def: { check: "custom_mime" },
833
+ onattach: [
834
+ (inst: any) => {
835
+ inst._zod.bag.mime = ["text/plain"];
836
+ },
837
+ ],
838
+ check: () => {},
839
+ },
840
+ };
841
+ const file = z
842
+ .file()
843
+ .mime(["image/png", "text/plain"])
844
+ .check(check as any);
845
+ expect(z.toJSONSchema(file).contentMediaType).toBe("text/plain");
846
+ });
847
+
848
+ test("a custom check contributing via onattach still lands", () => {
849
+ // third-party checks have no converter handler; their bag writes are merged in as a fallback
850
+ const check = {
851
+ _zod: {
852
+ def: { check: "custom_range" },
853
+ onattach: [
854
+ (inst: any) => {
855
+ const bag = inst._zod.bag;
856
+ if (bag.minimum === undefined || 5 > bag.minimum) bag.minimum = 5;
857
+ },
858
+ ],
859
+ check: () => {},
860
+ },
861
+ };
862
+ expect(z.toJSONSchema(z.number().check(check as any))).toMatchInlineSnapshot(`
863
+ {
864
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
865
+ "minimum": 5,
866
+ "type": "number",
867
+ }
868
+ `);
869
+ });
870
+
871
+ test("target normalization draft-04 and draft-07", () => {
872
+ // Test that both old (draft-4, draft-7) and new (draft-04, draft-07) target formats work
873
+
874
+ // Test draft-04 / draft-4
875
+ expect(z.toJSONSchema(z.number().gt(5), { target: "draft-04" })).toMatchInlineSnapshot(`
876
+ {
877
+ "$schema": "http://json-schema.org/draft-04/schema#",
878
+ "exclusiveMinimum": true,
879
+ "minimum": 5,
880
+ "type": "number",
881
+ }
882
+ `);
883
+ expect(z.toJSONSchema(z.number().gt(5), { target: "draft-4" })).toMatchInlineSnapshot(`
884
+ {
885
+ "$schema": "http://json-schema.org/draft-04/schema#",
886
+ "exclusiveMinimum": true,
887
+ "minimum": 5,
888
+ "type": "number",
889
+ }
890
+ `);
891
+ // Test draft-07 / draft-7
892
+ expect(z.toJSONSchema(z.number().gt(5), { target: "draft-07" })).toMatchInlineSnapshot(`
893
+ {
894
+ "$schema": "http://json-schema.org/draft-07/schema#",
895
+ "exclusiveMinimum": 5,
896
+ "type": "number",
897
+ }
898
+ `);
899
+ expect(z.toJSONSchema(z.number().gt(5), { target: "draft-7" })).toMatchInlineSnapshot(`
900
+ {
901
+ "$schema": "http://json-schema.org/draft-07/schema#",
902
+ "exclusiveMinimum": 5,
903
+ "type": "number",
904
+ }
905
+ `);
906
+ });
907
+
908
+ test("nullable openapi-3.0", () => {
909
+ const schema = z.string().nullable();
910
+ const jsonSchema = z.toJSONSchema(schema, { target: "openapi-3.0" });
911
+ validateOpenAPI30Schema(jsonSchema);
912
+ expect(jsonSchema).toMatchInlineSnapshot(`
913
+ {
914
+ "nullable": true,
915
+ "type": "string",
916
+ }
917
+ `);
918
+ });
919
+
920
+ test("union with null openapi-3.0", () => {
921
+ const schema = z.union([z.string(), z.null()]);
922
+ const jsonSchema = z.toJSONSchema(schema, { target: "openapi-3.0" });
923
+ validateOpenAPI30Schema(jsonSchema);
924
+ expect(jsonSchema).toMatchInlineSnapshot(`
925
+ {
926
+ "anyOf": [
927
+ {
928
+ "type": "string",
929
+ },
930
+ {
931
+ "enum": [
932
+ null,
933
+ ],
934
+ "nullable": true,
935
+ "type": "string",
936
+ },
937
+ ],
938
+ }
939
+ `);
940
+ });
941
+
942
+ test("number with exclusive min-max openapi-3.0", () => {
943
+ const schema = z.number().lt(100).gt(1);
944
+ const jsonSchema = z.toJSONSchema(schema, { target: "openapi-3.0" });
945
+ validateOpenAPI30Schema(jsonSchema);
946
+ expect(jsonSchema).toMatchInlineSnapshot(`
947
+ {
948
+ "exclusiveMaximum": true,
949
+ "exclusiveMinimum": true,
950
+ "maximum": 100,
951
+ "minimum": 1,
952
+ "type": "number",
953
+ }
954
+ `);
955
+ });
956
+
957
+ test("arrays", () => {
958
+ expect(z.toJSONSchema(z.array(z.string()))).toMatchInlineSnapshot(`
959
+ {
960
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
961
+ "items": {
962
+ "type": "string",
963
+ },
964
+ "type": "array",
965
+ }
966
+ `);
967
+ });
968
+
969
+ test("unions", () => {
970
+ const schema = z.union([z.string(), z.number()]);
971
+ expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
972
+ {
973
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
974
+ "type": [
975
+ "string",
976
+ "number",
977
+ ],
978
+ }
979
+ `);
980
+ });
981
+
982
+ test("nullable compacts to a type array", () => {
983
+ expect(z.toJSONSchema(z.string().nullable())).toMatchInlineSnapshot(`
984
+ {
985
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
986
+ "type": [
987
+ "string",
988
+ "null",
989
+ ],
990
+ }
991
+ `);
992
+
993
+ // a nested union folds into the outer type array rather than leaving a mixed shape
994
+ expect(z.toJSONSchema(z.union([z.string(), z.number()]).nullable())).toMatchInlineSnapshot(`
995
+ {
996
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
997
+ "type": [
998
+ "string",
999
+ "number",
1000
+ "null",
1001
+ ],
1002
+ }
1003
+ `);
1004
+
1005
+ // the null branch is bare but the object branch is not, so this stays an anyOf
1006
+ expect(z.toJSONSchema(z.object({ a: z.string() }).nullable())).toMatchInlineSnapshot(`
1007
+ {
1008
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1009
+ "anyOf": [
1010
+ {
1011
+ "additionalProperties": false,
1012
+ "properties": {
1013
+ "a": {
1014
+ "type": "string",
1015
+ },
1016
+ },
1017
+ "required": [
1018
+ "a",
1019
+ ],
1020
+ "type": "object",
1021
+ },
1022
+ {
1023
+ "type": "null",
1024
+ },
1025
+ ],
1026
+ }
1027
+ `);
1028
+ });
1029
+
1030
+ test("duplicate branches dedupe, single branch stays a bare type", () => {
1031
+ // a `type` array must have unique members, so two branches that erase to the same bare type collapse
1032
+ const refined = z.union([z.string().refine((s) => s.length > 2), z.string().refine((s) => s.length < 9)]);
1033
+ expect(z.toJSONSchema(refined)).toMatchInlineSnapshot(`
1034
+ {
1035
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1036
+ "type": "string",
1037
+ }
1038
+ `);
1039
+ expect(z.toJSONSchema(z.union([z.string()]))).toMatchInlineSnapshot(`
1040
+ {
1041
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1042
+ "type": "string",
1043
+ }
1044
+ `);
1045
+ });
1046
+
1047
+ test("compaction runs after overrides and ref extraction", () => {
1048
+ // an override decorates the string branch, so it is no longer a bare type and must survive in anyOf
1049
+ const decorated = z.toJSONSchema(z.union([z.string(), z.number()]), {
1050
+ override(ctx) {
1051
+ if (ctx.zodSchema._zod.def.type === "string") ctx.jsonSchema.whatever = "sup";
1052
+ },
1053
+ });
1054
+ expect(decorated).toMatchInlineSnapshot(`
1055
+ {
1056
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1057
+ "anyOf": [
1058
+ {
1059
+ "type": "string",
1060
+ "whatever": "sup",
1061
+ },
1062
+ {
1063
+ "type": "number",
1064
+ },
1065
+ ],
1066
+ }
1067
+ `);
1068
+
1069
+ // a branch extracted into $defs is a $ref, not a bare type, so `reused` is not silently bypassed
1070
+ const shared = z.string();
1071
+ expect(
1072
+ z.toJSONSchema(z.object({ a: shared, b: z.union([shared, z.null()]) }), { reused: "ref" })
1073
+ ).toMatchInlineSnapshot(`
1074
+ {
1075
+ "$defs": {
1076
+ "__schema0": {
1077
+ "type": "string",
1078
+ },
1079
+ },
1080
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1081
+ "additionalProperties": false,
1082
+ "properties": {
1083
+ "a": {
1084
+ "$ref": "#/$defs/__schema0",
1085
+ },
1086
+ "b": {
1087
+ "anyOf": [
1088
+ {
1089
+ "$ref": "#/$defs/__schema0",
1090
+ },
1091
+ {
1092
+ "type": "null",
1093
+ },
1094
+ ],
1095
+ },
1096
+ },
1097
+ "required": [
1098
+ "a",
1099
+ "b",
1100
+ ],
1101
+ "type": "object",
1102
+ }
1103
+ `);
1104
+ });
1105
+
1106
+ test("openapi-3.0 keeps a single-string type", () => {
1107
+ // OpenAPI 3.0 has no type arrays; nullability is spelled with `nullable`
1108
+ expect(z.toJSONSchema(z.string().nullable(), { target: "openapi-3.0" })).toMatchInlineSnapshot(`
1109
+ {
1110
+ "nullable": true,
1111
+ "type": "string",
1112
+ }
1113
+ `);
1114
+ });
1115
+
1116
+ test("union with constrained branch is not compacted", () => {
1117
+ const schema = z.union([z.string().min(1), z.number()]);
1118
+ expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1119
+ {
1120
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1121
+ "anyOf": [
1122
+ {
1123
+ "minLength": 1,
1124
+ "type": "string",
1125
+ },
1126
+ {
1127
+ "type": "number",
1128
+ },
1129
+ ],
1130
+ }
1131
+ `);
1132
+ });
1133
+
1134
+ test("union of literals is not compacted", () => {
1135
+ const schema = z.union([z.literal("a"), z.literal("b")]);
1136
+ expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1137
+ {
1138
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1139
+ "anyOf": [
1140
+ {
1141
+ "const": "a",
1142
+ "type": "string",
1143
+ },
1144
+ {
1145
+ "const": "b",
1146
+ "type": "string",
1147
+ },
1148
+ ],
1149
+ }
1150
+ `);
1151
+ });
1152
+
1153
+ test("discriminated unions", () => {
1154
+ const schema = z.discriminatedUnion("type", [
1155
+ z.object({ type: z.literal("success"), data: z.string() }),
1156
+ z.object({ type: z.literal("error"), message: z.string() }),
1157
+ ]);
1158
+ expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1159
+ {
1160
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1161
+ "oneOf": [
1162
+ {
1163
+ "additionalProperties": false,
1164
+ "properties": {
1165
+ "data": {
1166
+ "type": "string",
1167
+ },
1168
+ "type": {
1169
+ "const": "success",
1170
+ "type": "string",
1171
+ },
1172
+ },
1173
+ "required": [
1174
+ "type",
1175
+ "data",
1176
+ ],
1177
+ "type": "object",
1178
+ },
1179
+ {
1180
+ "additionalProperties": false,
1181
+ "properties": {
1182
+ "message": {
1183
+ "type": "string",
1184
+ },
1185
+ "type": {
1186
+ "const": "error",
1187
+ "type": "string",
1188
+ },
1189
+ },
1190
+ "required": [
1191
+ "type",
1192
+ "message",
1193
+ ],
1194
+ "type": "object",
1195
+ },
1196
+ ],
1197
+ }
1198
+ `);
1199
+ });
1200
+
1201
+ test("intersections", () => {
1202
+ const schema = z.intersection(z.object({ name: z.string() }), z.object({ age: z.number() }));
1203
+
1204
+ expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1205
+ {
1206
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1207
+ "additionalProperties": false,
1208
+ "properties": {
1209
+ "age": {
1210
+ "type": "number",
1211
+ },
1212
+ "name": {
1213
+ "type": "string",
1214
+ },
1215
+ },
1216
+ "required": [
1217
+ "name",
1218
+ "age",
1219
+ ],
1220
+ "type": "object",
1221
+ }
1222
+ `);
1223
+ });
1224
+
1225
+ test("record", () => {
1226
+ const schema = z.record(z.string(), z.boolean());
1227
+ expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1228
+ {
1229
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1230
+ "additionalProperties": {
1231
+ "type": "boolean",
1232
+ },
1233
+ "propertyNames": {
1234
+ "type": "string",
1235
+ },
1236
+ "type": "object",
1237
+ }
1238
+ `);
1239
+ });
1240
+
1241
+ test("record openapi-3.0", () => {
1242
+ const schema = z.record(z.string(), z.boolean());
1243
+ const jsonSchema = z.toJSONSchema(schema, { target: "openapi-3.0" });
1244
+ validateOpenAPI30Schema(jsonSchema);
1245
+ expect(jsonSchema).toMatchInlineSnapshot(`
1246
+ {
1247
+ "additionalProperties": {
1248
+ "type": "boolean",
1249
+ },
1250
+ "type": "object",
1251
+ }
1252
+ `);
1253
+ });
1254
+
1255
+ test("record with enum keys adds required", () => {
1256
+ const schema = z.record(z.enum(["key1", "key2"]), z.number());
1257
+
1258
+ expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1259
+ {
1260
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1261
+ "additionalProperties": {
1262
+ "type": "number",
1263
+ },
1264
+ "propertyNames": {
1265
+ "enum": [
1266
+ "key1",
1267
+ "key2",
1268
+ ],
1269
+ "type": "string",
1270
+ },
1271
+ "required": [
1272
+ "key1",
1273
+ "key2",
1274
+ ],
1275
+ "type": "object",
1276
+ }
1277
+ `);
1278
+ });
1279
+
1280
+ test("record with enum keys drops required for an optional-in value under io: input", () => {
1281
+ const schema = z.record(z.enum(["key1", "key2"]), z.number().default(0));
1282
+
1283
+ expect(z.toJSONSchema(schema, { io: "input" }).required).toBeUndefined();
1284
+ expect(z.toJSONSchema(schema).required).toEqual(["key1", "key2"]);
1285
+ expect(z.toJSONSchema(z.record(z.enum(["key1", "key2"]), z.number()), { io: "input" }).required).toEqual([
1286
+ "key1",
1287
+ "key2",
1288
+ ]);
1289
+ // A caught value keeps required, matching the input type and z.object().
1290
+ expect(z.toJSONSchema(z.record(z.enum(["key1", "key2"]), z.number().catch(0)), { io: "input" }).required).toEqual([
1291
+ "key1",
1292
+ "key2",
1293
+ ]);
1294
+ });
1295
+
1296
+ test("record stringifies numeric enum keys for propertyNames and required", () => {
1297
+ enum NumberEnum {
1298
+ Zero = 0,
1299
+ One = 1,
1300
+ }
1301
+ const schema = z.record(z.enum(NumberEnum), z.string());
1302
+
1303
+ expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1304
+ {
1305
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1306
+ "additionalProperties": {
1307
+ "type": "string",
1308
+ },
1309
+ "propertyNames": {
1310
+ "enum": [
1311
+ "0",
1312
+ "1",
1313
+ ],
1314
+ "type": "string",
1315
+ },
1316
+ "required": [
1317
+ "0",
1318
+ "1",
1319
+ ],
1320
+ "type": "object",
1321
+ }
1322
+ `);
1323
+ });
1324
+
1325
+ test("record with a numeric key emits propertyNames over the numeric-string form", () => {
1326
+ expect(z.toJSONSchema(z.record(z.number(), z.boolean())).propertyNames).toEqual({
1327
+ type: "string",
1328
+ pattern: "^-?\\d+(?:\\.\\d+)?$",
1329
+ });
1330
+ // range checks can't apply to a key, so only the integer shape survives
1331
+ expect(z.toJSONSchema(z.record(z.int32(), z.boolean())).propertyNames).toEqual({
1332
+ type: "string",
1333
+ pattern: "^-?\\d+$",
1334
+ });
1335
+ expect(z.toJSONSchema(z.record(z.literal([1, 2]), z.boolean()))).toMatchObject({
1336
+ propertyNames: { type: "string", enum: ["1", "2"] },
1337
+ required: ["1", "2"],
1338
+ });
1339
+ expect(z.toJSONSchema(z.record(z.literal(1), z.boolean())).propertyNames).toEqual({
1340
+ type: "string",
1341
+ const: "1",
1342
+ });
1343
+ });
1344
+
1345
+ test("record key rewrite reaches through wrappers and union branches", () => {
1346
+ const numericString = { type: "string", pattern: "^-?\\d+(?:\\.\\d+)?$" };
1347
+ // a wrapper only carries its inner type once the refs are flattened, so this is decided after the record itself is emitted
1348
+ expect(
1349
+ z.toJSONSchema(
1350
+ z.record(
1351
+ z.lazy(() => z.number()),
1352
+ z.boolean()
1353
+ )
1354
+ ).propertyNames
1355
+ ).toEqual(numericString);
1356
+ expect(z.toJSONSchema(z.record(z.number().pipe(z.number()), z.boolean())).propertyNames).toEqual(numericString);
1357
+ expect(z.toJSONSchema(z.record(z.number().readonly(), z.boolean())).propertyNames).toMatchObject(numericString);
1358
+ expect(z.toJSONSchema(z.record(z.union([z.literal("Tuna"), z.literal(21)]), z.string()))).toMatchObject({
1359
+ propertyNames: {
1360
+ anyOf: [
1361
+ { type: "string", const: "Tuna" },
1362
+ { type: "string", const: "21" },
1363
+ ],
1364
+ },
1365
+ required: ["Tuna", "21"],
1366
+ });
1367
+ });
1368
+
1369
+ test("record with a numeric key inlines an extracted key, and leaves a string one referenced", () => {
1370
+ expect(z.toJSONSchema(z.record(z.number().meta({ id: "Num" }), z.boolean())).propertyNames).toEqual({
1371
+ type: "string",
1372
+ pattern: "^-?\\d+(?:\\.\\d+)?$",
1373
+ });
1374
+ expect(z.toJSONSchema(z.record(z.string().meta({ id: "Str" }), z.boolean())).propertyNames).toEqual({
1375
+ $ref: "#/$defs/Str",
1376
+ });
1377
+ // the value position still wants the number form, so the two cannot share one def
1378
+ const key = z.number().meta({ id: "Shared" });
1379
+ expect(z.toJSONSchema(z.object({ a: key, b: z.record(key, z.string()) }))).toMatchObject({
1380
+ properties: { a: { $ref: "#/$defs/Shared" }, b: { propertyNames: { type: "string" } } },
1381
+ $defs: { Shared: { type: "number" } },
1382
+ });
1383
+ });
1384
+
1385
+ test("record key rewrite reaches a wrapped record", () => {
1386
+ // the flatten copies a record's properties onto its wrapper by reference, so the rewrite has to find every copy
1387
+ expect(z.toJSONSchema(z.record(z.number(), z.boolean()).optional()).propertyNames).toEqual({
1388
+ type: "string",
1389
+ pattern: "^-?\\d+(?:\\.\\d+)?$",
1390
+ });
1391
+ expect(z.toJSONSchema(z.object({ a: z.record(z.literal([1, 2]), z.boolean()).optional() }))).toMatchObject({
1392
+ properties: { a: { propertyNames: { type: "string", enum: ["1", "2"] }, required: ["1", "2"] } },
1393
+ });
1394
+ });
1395
+
1396
+ test("record with a recursive key converts without looping", () => {
1397
+ const numeric: any = z.lazy(() => z.union([z.number(), numeric]));
1398
+ expect(z.toJSONSchema(z.record(numeric, z.boolean())).propertyNames).toMatchObject({
1399
+ anyOf: [{ type: "string", pattern: "^-?\\d+(?:\\.\\d+)?$" }, { $ref: "#/$defs/__schema0" }],
1400
+ });
1401
+ // a key with nothing to re-express keeps the reference it had
1402
+ const stringy: any = z.lazy(() => z.union([z.string(), stringy]));
1403
+ expect(z.toJSONSchema(z.record(stringy, z.boolean())).propertyNames).toEqual({ $ref: "#/$defs/__schema0" });
1404
+ expect(
1405
+ z.toJSONSchema(z.record(z.union([z.literal("a"), z.literal("b")]).meta({ id: "Keys" }), z.boolean()))
1406
+ .propertyNames
1407
+ ).toEqual({ $ref: "#/$defs/Keys" });
1408
+ });
1409
+
1410
+ test("record with a heterogeneous key stringifies only its numeric members", () => {
1411
+ // a mixed key carries no `type`, so the numeric members are caught by value rather than by type
1412
+ expect(z.toJSONSchema(z.record(z.literal(["a", 1]), z.boolean()))).toMatchObject({
1413
+ propertyNames: { enum: ["a", "1"] },
1414
+ required: ["a", "1"],
1415
+ });
1416
+ // a member no key can spell is left as it was, since the parser only ever retries a key as a number
1417
+ expect(z.toJSONSchema(z.record(z.literal(["a", true]) as any, z.boolean())).propertyNames).toEqual({
1418
+ enum: ["a", true],
1419
+ });
1420
+ });
1421
+
1422
+ test("record stringifies required for every target", () => {
1423
+ const schema = z.record(z.literal([1, 2]), z.boolean());
1424
+ for (const target of ["draft-2020-12", "draft-7", "draft-4", "openapi-3.0"] as const) {
1425
+ expect(z.toJSONSchema(schema, { target }).required).toEqual(["1", "2"]);
1426
+ }
1427
+ });
1428
+
1429
+ test("strict record with regex key uses propertyNames", () => {
1430
+ const schema = z.record(z.string().regex(/^label:[a-z]{2}$/), z.string());
1431
+
1432
+ expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1433
+ {
1434
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1435
+ "additionalProperties": {
1436
+ "type": "string",
1437
+ },
1438
+ "propertyNames": {
1439
+ "pattern": "^label:[a-z]{2}$",
1440
+ "type": "string",
1441
+ },
1442
+ "type": "object",
1443
+ }
1444
+ `);
1445
+ });
1446
+
1447
+ test("looseRecord with regex key uses patternProperties", () => {
1448
+ const schema = z.looseRecord(z.string().regex(/^label:[a-z]{2}$/), z.string());
1449
+
1450
+ expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1451
+ {
1452
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1453
+ "patternProperties": {
1454
+ "^label:[a-z]{2}$": {
1455
+ "type": "string",
1456
+ },
1457
+ },
1458
+ "type": "object",
1459
+ }
1460
+ `);
1461
+ });
1462
+
1463
+ test("looseRecord with multiple regex patterns uses patternProperties", () => {
1464
+ const schema = z.looseRecord(
1465
+ z
1466
+ .string()
1467
+ .regex(/^prefix_/)
1468
+ .regex(/_suffix$/),
1469
+ z.number()
1470
+ );
1471
+
1472
+ expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1473
+ {
1474
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1475
+ "patternProperties": {
1476
+ "^prefix_": {
1477
+ "type": "number",
1478
+ },
1479
+ "_suffix$": {
1480
+ "type": "number",
1481
+ },
1482
+ },
1483
+ "type": "object",
1484
+ }
1485
+ `);
1486
+ });
1487
+
1488
+ test("looseRecord without regex key uses propertyNames", () => {
1489
+ // looseRecord with plain string key should still use propertyNames
1490
+ const schema = z.looseRecord(z.string(), z.boolean());
1491
+
1492
+ expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1493
+ {
1494
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1495
+ "additionalProperties": {
1496
+ "type": "boolean",
1497
+ },
1498
+ "propertyNames": {
1499
+ "type": "string",
1500
+ },
1501
+ "type": "object",
1502
+ }
1503
+ `);
1504
+ });
1505
+
1506
+ test("intersection of object with looseRecord uses patternProperties", () => {
1507
+ const zLabeled = z.object({ label: z.string() });
1508
+ const zLocalizedLabeled = z.looseRecord(z.string().regex(/^label:[a-z]{2}$/), z.string());
1509
+ const schema = zLabeled.and(zLocalizedLabeled);
1510
+
1511
+ expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1512
+ {
1513
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1514
+ "allOf": [
1515
+ {
1516
+ "additionalProperties": false,
1517
+ "properties": {
1518
+ "label": {
1519
+ "type": "string",
1520
+ },
1521
+ },
1522
+ "required": [
1523
+ "label",
1524
+ ],
1525
+ "type": "object",
1526
+ },
1527
+ {
1528
+ "patternProperties": {
1529
+ "^label:[a-z]{2}$": {
1530
+ "type": "string",
1531
+ },
1532
+ },
1533
+ "type": "object",
1534
+ },
1535
+ ],
1536
+ }
1537
+ `);
1538
+ });
1539
+
1540
+ test("tuple", () => {
1541
+ const schema = z.tuple([z.string(), z.number()]);
1542
+ expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1543
+ {
1544
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1545
+ "items": false,
1546
+ "maxItems": 2,
1547
+ "minItems": 2,
1548
+ "prefixItems": [
1549
+ {
1550
+ "type": "string",
1551
+ },
1552
+ {
1553
+ "type": "number",
1554
+ },
1555
+ ],
1556
+ "type": "array",
1557
+ }
1558
+ `);
1559
+ });
1560
+
1561
+ test("tuple with rest", () => {
1562
+ const schema = z.tuple([z.string(), z.number()]).rest(z.boolean());
1563
+ expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1564
+ {
1565
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1566
+ "items": {
1567
+ "type": "boolean",
1568
+ },
1569
+ "minItems": 2,
1570
+ "prefixItems": [
1571
+ {
1572
+ "type": "string",
1573
+ },
1574
+ {
1575
+ "type": "number",
1576
+ },
1577
+ ],
1578
+ "type": "array",
1579
+ }
1580
+ `);
1581
+ });
1582
+
1583
+ test("tuple openapi-3.0", () => {
1584
+ const schema = z.tuple([z.string(), z.number()]);
1585
+ const jsonSchema = z.toJSONSchema(schema, { target: "openapi-3.0" });
1586
+ validateOpenAPI30Schema(jsonSchema);
1587
+ expect(jsonSchema).toMatchInlineSnapshot(`
1588
+ {
1589
+ "items": {
1590
+ "anyOf": [
1591
+ {
1592
+ "type": "string",
1593
+ },
1594
+ {
1595
+ "type": "number",
1596
+ },
1597
+ ],
1598
+ },
1599
+ "maxItems": 2,
1600
+ "minItems": 2,
1601
+ "type": "array",
1602
+ }
1603
+ `);
1604
+ });
1605
+
1606
+ test("tuple with rest openapi-3.0", () => {
1607
+ const schema = z.tuple([z.string(), z.number()]).rest(z.boolean());
1608
+ const jsonSchema = z.toJSONSchema(schema, { target: "openapi-3.0" });
1609
+ validateOpenAPI30Schema(jsonSchema);
1610
+ expect(jsonSchema).toMatchInlineSnapshot(`
1611
+ {
1612
+ "items": {
1613
+ "anyOf": [
1614
+ {
1615
+ "type": "string",
1616
+ },
1617
+ {
1618
+ "type": "number",
1619
+ },
1620
+ {
1621
+ "type": "boolean",
1622
+ },
1623
+ ],
1624
+ },
1625
+ "minItems": 2,
1626
+ "type": "array",
1627
+ }
1628
+ `);
1629
+ });
1630
+
1631
+ test("tuple with null openapi-3.0", () => {
1632
+ const schema = z.tuple([z.string(), z.number(), z.null()]);
1633
+ const jsonSchema = z.toJSONSchema(schema, { target: "openapi-3.0" });
1634
+ validateOpenAPI30Schema(jsonSchema);
1635
+ expect(jsonSchema).toMatchInlineSnapshot(`
1636
+ {
1637
+ "items": {
1638
+ "anyOf": [
1639
+ {
1640
+ "type": "string",
1641
+ },
1642
+ {
1643
+ "type": "number",
1644
+ },
1645
+ {
1646
+ "enum": [
1647
+ null,
1648
+ ],
1649
+ "nullable": true,
1650
+ "type": "string",
1651
+ },
1652
+ ],
1653
+ },
1654
+ "maxItems": 3,
1655
+ "minItems": 3,
1656
+ "type": "array",
1657
+ }
1658
+ `);
1659
+ });
1660
+
1661
+ test("tuple draft-7", () => {
1662
+ const schema = z.tuple([z.string(), z.number()]);
1663
+ expect(z.toJSONSchema(schema, { target: "draft-7", io: "input" })).toMatchInlineSnapshot(`
1664
+ {
1665
+ "$schema": "http://json-schema.org/draft-07/schema#",
1666
+ "additionalItems": false,
1667
+ "items": [
1668
+ {
1669
+ "type": "string",
1670
+ },
1671
+ {
1672
+ "type": "number",
1673
+ },
1674
+ ],
1675
+ "maxItems": 2,
1676
+ "minItems": 2,
1677
+ "type": "array",
1678
+ }
1679
+ `);
1680
+ });
1681
+
1682
+ test("tuple with rest draft-7", () => {
1683
+ const schema = z.tuple([z.string(), z.number()]).rest(z.boolean());
1684
+ expect(z.toJSONSchema(schema, { target: "draft-7", io: "input" })).toMatchInlineSnapshot(`
1685
+ {
1686
+ "$schema": "http://json-schema.org/draft-07/schema#",
1687
+ "additionalItems": {
1688
+ "type": "boolean",
1689
+ },
1690
+ "items": [
1691
+ {
1692
+ "type": "string",
1693
+ },
1694
+ {
1695
+ "type": "number",
1696
+ },
1697
+ ],
1698
+ "minItems": 2,
1699
+ "type": "array",
1700
+ }
1701
+ `);
1702
+ });
1703
+
1704
+ test("tuple with rest draft-7 - issue #5151 regression test", () => {
1705
+ // This test addresses issue #5151: tuple with rest elements and ids in draft-7 had incorrect internal path handling affecting complex scenarios
1706
+ const primarySchema = z.string().meta({ id: "primary" });
1707
+ const restSchema = z.number().meta({ id: "rest" });
1708
+ const testSchema = z.tuple([primarySchema], restSchema);
1709
+
1710
+ // Test both final output structure AND internal path handling
1711
+ const capturedPaths: string[] = [];
1712
+ const result = z.toJSONSchema(testSchema, {
1713
+ target: "draft-7",
1714
+ override: (ctx) => capturedPaths.push(ctx.path.join("/")),
1715
+ });
1716
+
1717
+ // Verify correct draft-7 structure with metadata extraction
1718
+ expect(result).toMatchInlineSnapshot(`
1719
+ {
1720
+ "$schema": "http://json-schema.org/draft-07/schema#",
1721
+ "additionalItems": {
1722
+ "$ref": "#/definitions/rest",
1723
+ },
1724
+ "definitions": {
1725
+ "primary": {
1726
+ "type": "string",
1727
+ },
1728
+ "rest": {
1729
+ "type": "number",
1730
+ },
1731
+ },
1732
+ "items": [
1733
+ {
1734
+ "$ref": "#/definitions/primary",
1735
+ },
1736
+ ],
1737
+ "minItems": 1,
1738
+ "type": "array",
1739
+ }
1740
+ `);
1741
+
1742
+ // Verify internal paths are correct (this was the actual bug)
1743
+ expect(capturedPaths).toContain("items/0"); // prefix items should use "items" path
1744
+ expect(capturedPaths).toContain("additionalItems"); // rest should use "additionalItems" path
1745
+ expect(capturedPaths).not.toContain("prefixItems/0"); // should not use draft-2020-12 paths
1746
+
1747
+ // Structural validations
1748
+ expect(Array.isArray(result.items)).toBe(true);
1749
+ expect(result.additionalItems).toBeDefined();
1750
+ });
1751
+
1752
+ test("closed tuple length constraints - issue #6193", () => {
1753
+ const schema = z.tuple([z.string(), z.string(), z.object({ lang: z.string() })]);
1754
+
1755
+ expect(schema.safeParse(["a", "b", { lang: "en" }, "extra"]).success).toBe(false);
1756
+
1757
+ const draft2020 = z.toJSONSchema(schema, { target: "draft-2020-12" });
1758
+ expect(draft2020.items).toBe(false);
1759
+ expect(draft2020.minItems).toBe(3);
1760
+ expect(draft2020.maxItems).toBe(3);
1761
+
1762
+ const draft7 = z.toJSONSchema(schema, { target: "draft-7", io: "input" });
1763
+ expect(draft7.additionalItems).toBe(false);
1764
+ expect(draft7.minItems).toBe(3);
1765
+ expect(draft7.maxItems).toBe(3);
1766
+
1767
+ const openapi = z.toJSONSchema(schema, { target: "openapi-3.0" });
1768
+ validateOpenAPI30Schema(openapi);
1769
+ expect(openapi.minItems).toBe(3);
1770
+ expect(openapi.maxItems).toBe(3);
1771
+ });
1772
+
1773
+ test("closed tuple with optional trailing items", () => {
1774
+ const schema = z.tuple([z.string(), z.number().optional()]);
1775
+
1776
+ const draft2020 = z.toJSONSchema(schema, { target: "draft-2020-12" });
1777
+ expect(draft2020.items).toBe(false);
1778
+ expect(draft2020.minItems).toBe(1);
1779
+ expect(draft2020.maxItems).toBe(2);
1780
+
1781
+ const draft7 = z.toJSONSchema(schema, { target: "draft-7", io: "input" });
1782
+ expect(draft7.additionalItems).toBe(false);
1783
+ expect(draft7.minItems).toBe(1);
1784
+ expect(draft7.maxItems).toBe(2);
1785
+ });
1786
+
1787
+ test("empty closed tuple rejects extra elements", () => {
1788
+ const schema = z.tuple([]);
1789
+
1790
+ const draft2020 = z.toJSONSchema(schema, { target: "draft-2020-12" });
1791
+ expect(draft2020.items).toBe(false);
1792
+ expect(draft2020.maxItems).toBe(0);
1793
+
1794
+ const draft7 = z.toJSONSchema(schema, { target: "draft-7", io: "input" });
1795
+ expect(draft7.additionalItems).toBe(false);
1796
+ expect(draft7.maxItems).toBe(0);
1797
+
1798
+ const openapi = z.toJSONSchema(schema, { target: "openapi-3.0" });
1799
+ validateOpenAPI30Schema(openapi);
1800
+ expect(openapi.maxItems).toBe(0);
1801
+ });
1802
+
1803
+ test("closed tuple length respects io direction with defaults", () => {
1804
+ const schema = z.tuple([z.string(), z.string().default("x")]);
1805
+
1806
+ const input = z.toJSONSchema(schema, { target: "draft-2020-12", io: "input" });
1807
+ expect(input.items).toBe(false);
1808
+ expect(input.minItems).toBe(1);
1809
+ expect(input.maxItems).toBe(2);
1810
+
1811
+ const output = z.toJSONSchema(schema, { target: "draft-2020-12", io: "output" });
1812
+ expect(output.items).toBe(false);
1813
+ expect(output.minItems).toBe(2);
1814
+ expect(output.maxItems).toBe(2);
1815
+ });
1816
+
1817
+ test("closed tuple length resolves input optionality past transform and catch", () => {
1818
+ const minItems = (schema: z.core.$ZodType, io: "input" | "output") =>
1819
+ z.toJSONSchema(schema, { target: "draft-2020-12", io }).minItems;
1820
+
1821
+ // Both let the parser observe an absent slot, but declare a required input.
1822
+ const pre = z.tuple([z.string(), z.preprocess((v) => v, z.string())]);
1823
+ expect(minItems(pre, "input")).toBe(2);
1824
+ expect(minItems(pre, "output")).toBe(2);
1825
+
1826
+ const caught = z.tuple([z.string(), z.string().catch("x")]);
1827
+ expect(minItems(caught, "input")).toBe(2);
1828
+ expect(minItems(caught, "output")).toBe(2);
1829
+
1830
+ // Resolution passes through the wrapper rather than stopping at it.
1831
+ expect(minItems(z.tuple([z.string(), z.string().optional().catch("x")]), "input")).toBe(1);
1832
+ });
1833
+
1834
+ test("promise", () => {
1835
+ const schema = z.promise(z.string());
1836
+ expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1837
+ {
1838
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1839
+ "type": "string",
1840
+ }
1841
+ `);
1842
+ });
1843
+
1844
+ test("lazy", () => {
1845
+ const schema = z.lazy(() => z.string());
1846
+ expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1847
+ {
1848
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1849
+ "type": "string",
1850
+ }
1851
+ `);
1852
+ });
1853
+
1854
+ // enum
1855
+ test("enum", () => {
1856
+ const a = z.enum(["a", "b", "c"]);
1857
+ expect(z.toJSONSchema(a)).toMatchInlineSnapshot(`
1858
+ {
1859
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1860
+ "enum": [
1861
+ "a",
1862
+ "b",
1863
+ "c",
1864
+ ],
1865
+ "type": "string",
1866
+ }
1867
+ `);
1868
+
1869
+ enum B {
1870
+ A = 0,
1871
+ B = 1,
1872
+ C = 2,
1873
+ }
1874
+
1875
+ const b = z.enum(B);
1876
+ expect(z.toJSONSchema(b)).toMatchInlineSnapshot(`
1877
+ {
1878
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1879
+ "enum": [
1880
+ 0,
1881
+ 1,
1882
+ 2,
1883
+ ],
1884
+ "type": "number",
1885
+ }
1886
+ `);
1887
+ });
1888
+
1889
+ // literal
1890
+ test("literal", () => {
1891
+ const a = z.literal("hello");
1892
+ expect(z.toJSONSchema(a)).toMatchInlineSnapshot(`
1893
+ {
1894
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1895
+ "const": "hello",
1896
+ "type": "string",
1897
+ }
1898
+ `);
1899
+
1900
+ const b = z.literal(7);
1901
+ expect(z.toJSONSchema(b)).toMatchInlineSnapshot(`
1902
+ {
1903
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1904
+ "const": 7,
1905
+ "type": "number",
1906
+ }
1907
+ `);
1908
+
1909
+ const c = z.literal(["hello", undefined, null, 5, BigInt(1324)]);
1910
+ expect(() => z.toJSONSchema(c)).toThrow();
1911
+
1912
+ const d = z.literal(["hello", null, 5]);
1913
+ expect(z.toJSONSchema(d)).toMatchInlineSnapshot(`
1914
+ {
1915
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1916
+ "enum": [
1917
+ "hello",
1918
+ null,
1919
+ 5,
1920
+ ],
1921
+ }
1922
+ `);
1923
+
1924
+ const e = z.literal(["hello", "zod", "v4"]);
1925
+ expect(z.toJSONSchema(e)).toMatchInlineSnapshot(`
1926
+ {
1927
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1928
+ "enum": [
1929
+ "hello",
1930
+ "zod",
1931
+ "v4",
1932
+ ],
1933
+ "type": "string",
1934
+ }
1935
+ `);
1936
+ });
1937
+
1938
+ test("literal draft-4", () => {
1939
+ const a = z.literal("hello");
1940
+ expect(z.toJSONSchema(a, { target: "draft-4" })).toMatchInlineSnapshot(`
1941
+ {
1942
+ "$schema": "http://json-schema.org/draft-04/schema#",
1943
+ "enum": [
1944
+ "hello",
1945
+ ],
1946
+ "type": "string",
1947
+ }
1948
+ `);
1949
+ });
1950
+
1951
+ // pipe
1952
+ test("pipe", () => {
1953
+ const schema = z
1954
+ .string()
1955
+ .transform((val) => Number.parseInt(val))
1956
+ .pipe(z.number());
1957
+ expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1958
+ {
1959
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1960
+ "type": "number",
1961
+ }
1962
+ `);
1963
+ });
1964
+
1965
+ test("simple objects", () => {
1966
+ const schema = z.object({
1967
+ name: z.string(),
1968
+ age: z.number(),
1969
+ });
1970
+
1971
+ expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(
1972
+ `
1973
+ {
1974
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1975
+ "additionalProperties": false,
1976
+ "properties": {
1977
+ "age": {
1978
+ "type": "number",
1979
+ },
1980
+ "name": {
1981
+ "type": "string",
1982
+ },
1983
+ },
1984
+ "required": [
1985
+ "name",
1986
+ "age",
1987
+ ],
1988
+ "type": "object",
1989
+ }
1990
+ `
1991
+ );
1992
+ });
1993
+
1994
+ test("additionalproperties in z.object", () => {
1995
+ const a = z.object({
1996
+ name: z.string(),
1997
+ });
1998
+ expect(z.toJSONSchema(a)).toMatchInlineSnapshot(`
1999
+ {
2000
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2001
+ "additionalProperties": false,
2002
+ "properties": {
2003
+ "name": {
2004
+ "type": "string",
2005
+ },
2006
+ },
2007
+ "required": [
2008
+ "name",
2009
+ ],
2010
+ "type": "object",
2011
+ }
2012
+ `);
2013
+ expect(z.toJSONSchema(a, { io: "input" })).toMatchInlineSnapshot(`
2014
+ {
2015
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2016
+ "properties": {
2017
+ "name": {
2018
+ "type": "string",
2019
+ },
2020
+ },
2021
+ "required": [
2022
+ "name",
2023
+ ],
2024
+ "type": "object",
2025
+ }
2026
+ `);
2027
+ expect(
2028
+ z.toJSONSchema(a, {
2029
+ io: "input",
2030
+ override(ctx) {
2031
+ const def = ctx.zodSchema._zod.def;
2032
+ if (def.type === "object" && !def.catchall) {
2033
+ (ctx.jsonSchema as z.core.JSONSchema.ObjectSchema).additionalProperties = false;
2034
+ }
2035
+ },
2036
+ })
2037
+ ).toMatchInlineSnapshot(`
2038
+ {
2039
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2040
+ "additionalProperties": false,
2041
+ "properties": {
2042
+ "name": {
2043
+ "type": "string",
2044
+ },
2045
+ },
2046
+ "required": [
2047
+ "name",
2048
+ ],
2049
+ "type": "object",
2050
+ }
2051
+ `);
2052
+ });
2053
+
2054
+ test("catchall objects", () => {
2055
+ const a = z.strictObject({
2056
+ name: z.string(),
2057
+ age: z.number(),
2058
+ });
2059
+
2060
+ expect(z.toJSONSchema(a)).toMatchInlineSnapshot(`
2061
+ {
2062
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2063
+ "additionalProperties": false,
2064
+ "properties": {
2065
+ "age": {
2066
+ "type": "number",
2067
+ },
2068
+ "name": {
2069
+ "type": "string",
2070
+ },
2071
+ },
2072
+ "required": [
2073
+ "name",
2074
+ "age",
2075
+ ],
2076
+ "type": "object",
2077
+ }
2078
+ `);
2079
+
2080
+ const b = z
2081
+ .object({
2082
+ name: z.string(),
2083
+ })
2084
+ .catchall(z.string());
2085
+
2086
+ expect(z.toJSONSchema(b)).toMatchInlineSnapshot(`
2087
+ {
2088
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2089
+ "additionalProperties": {
2090
+ "type": "string",
2091
+ },
2092
+ "properties": {
2093
+ "name": {
2094
+ "type": "string",
2095
+ },
2096
+ },
2097
+ "required": [
2098
+ "name",
2099
+ ],
2100
+ "type": "object",
2101
+ }
2102
+ `);
2103
+
2104
+ const c = z.looseObject({
2105
+ name: z.string(),
2106
+ });
2107
+
2108
+ expect(z.toJSONSchema(c)).toMatchInlineSnapshot(`
2109
+ {
2110
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2111
+ "additionalProperties": {},
2112
+ "properties": {
2113
+ "name": {
2114
+ "type": "string",
2115
+ },
2116
+ },
2117
+ "required": [
2118
+ "name",
2119
+ ],
2120
+ "type": "object",
2121
+ }
2122
+ `);
2123
+ });
2124
+
2125
+ test("optional fields - object", () => {
2126
+ const schema = z.object({
2127
+ required: z.string(),
2128
+ optional: z.string().optional(),
2129
+ nonoptional: z.string().optional().nonoptional(),
2130
+ });
2131
+
2132
+ const result = z.toJSONSchema(schema);
2133
+
2134
+ expect(result).toMatchInlineSnapshot(`
2135
+ {
2136
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2137
+ "additionalProperties": false,
2138
+ "properties": {
2139
+ "nonoptional": {
2140
+ "type": "string",
2141
+ },
2142
+ "optional": {
2143
+ "type": "string",
2144
+ },
2145
+ "required": {
2146
+ "type": "string",
2147
+ },
2148
+ },
2149
+ "required": [
2150
+ "required",
2151
+ "nonoptional",
2152
+ ],
2153
+ "type": "object",
2154
+ }
2155
+ `);
2156
+ });
2157
+
2158
+ test("recursive object", () => {
2159
+ interface Category {
2160
+ name: string;
2161
+ subcategories: Category[];
2162
+ }
2163
+
2164
+ const categorySchema: z.ZodType<Category> = z.object({
2165
+ name: z.string(),
2166
+ subcategories: z.array(z.lazy(() => categorySchema)),
2167
+ });
2168
+
2169
+ const result = z.toJSONSchema(categorySchema);
2170
+ expect(result).toMatchInlineSnapshot(`
2171
+ {
2172
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2173
+ "additionalProperties": false,
2174
+ "properties": {
2175
+ "name": {
2176
+ "type": "string",
2177
+ },
2178
+ "subcategories": {
2179
+ "items": {
2180
+ "$ref": "#",
2181
+ },
2182
+ "type": "array",
2183
+ },
2184
+ },
2185
+ "required": [
2186
+ "name",
2187
+ "subcategories",
2188
+ ],
2189
+ "type": "object",
2190
+ }
2191
+ `);
2192
+ });
2193
+
2194
+ test("simple interface", () => {
2195
+ const userSchema = z.object({
2196
+ name: z.string(),
2197
+ age: z.number().optional(),
2198
+ });
2199
+
2200
+ const result = z.toJSONSchema(userSchema);
2201
+ expect(result).toMatchInlineSnapshot(`
2202
+ {
2203
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2204
+ "additionalProperties": false,
2205
+ "properties": {
2206
+ "age": {
2207
+ "type": "number",
2208
+ },
2209
+ "name": {
2210
+ "type": "string",
2211
+ },
2212
+ },
2213
+ "required": [
2214
+ "name",
2215
+ ],
2216
+ "type": "object",
2217
+ }
2218
+ `);
2219
+ });
2220
+
2221
+ test("catchall interface", () => {
2222
+ const a = z.strictObject({
2223
+ name: z.string(),
2224
+ age: z.number(),
2225
+ });
2226
+
2227
+ expect(z.toJSONSchema(a)).toMatchInlineSnapshot(`
2228
+ {
2229
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2230
+ "additionalProperties": false,
2231
+ "properties": {
2232
+ "age": {
2233
+ "type": "number",
2234
+ },
2235
+ "name": {
2236
+ "type": "string",
2237
+ },
2238
+ },
2239
+ "required": [
2240
+ "name",
2241
+ "age",
2242
+ ],
2243
+ "type": "object",
2244
+ }
2245
+ `);
2246
+
2247
+ const b = z
2248
+ .object({
2249
+ name: z.string(),
2250
+ })
2251
+ .catchall(z.string());
2252
+
2253
+ expect(z.toJSONSchema(b)).toMatchInlineSnapshot(`
2254
+ {
2255
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2256
+ "additionalProperties": {
2257
+ "type": "string",
2258
+ },
2259
+ "properties": {
2260
+ "name": {
2261
+ "type": "string",
2262
+ },
2263
+ },
2264
+ "required": [
2265
+ "name",
2266
+ ],
2267
+ "type": "object",
2268
+ }
2269
+ `);
2270
+
2271
+ const c = z.looseObject({
2272
+ name: z.string(),
2273
+ });
2274
+
2275
+ expect(z.toJSONSchema(c)).toMatchInlineSnapshot(`
2276
+ {
2277
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2278
+ "additionalProperties": {},
2279
+ "properties": {
2280
+ "name": {
2281
+ "type": "string",
2282
+ },
2283
+ },
2284
+ "required": [
2285
+ "name",
2286
+ ],
2287
+ "type": "object",
2288
+ }
2289
+ `);
2290
+ });
2291
+
2292
+ test("recursive interface schemas", () => {
2293
+ const TreeNodeSchema = z.object({
2294
+ id: z.string(),
2295
+ get children() {
2296
+ return TreeNodeSchema;
2297
+ },
2298
+ });
2299
+
2300
+ const result = z.toJSONSchema(TreeNodeSchema);
2301
+
2302
+ // Should have definitions for recursive schema
2303
+ expect(JSON.stringify(result, null, 2)).toMatchInlineSnapshot(
2304
+ `
2305
+ "{
2306
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2307
+ "type": "object",
2308
+ "properties": {
2309
+ "id": {
2310
+ "type": "string"
2311
+ },
2312
+ "children": {
2313
+ "$ref": "#"
2314
+ }
2315
+ },
2316
+ "required": [
2317
+ "id",
2318
+ "children"
2319
+ ],
2320
+ "additionalProperties": false
2321
+ }"
2322
+ `
2323
+ );
2324
+ });
2325
+
2326
+ test("mutually recursive interface schemas", () => {
2327
+ const FolderSchema = z.object({
2328
+ name: z.string(),
2329
+ get files() {
2330
+ return z.array(FileSchema);
2331
+ },
2332
+ });
2333
+
2334
+ const FileSchema = z.object({
2335
+ name: z.string(),
2336
+ get parent() {
2337
+ return FolderSchema;
2338
+ },
2339
+ });
2340
+
2341
+ const result = z.toJSONSchema(FolderSchema);
2342
+
2343
+ // Should have definitions for both schemas
2344
+ expect(JSON.stringify(result, null, 2)).toMatchInlineSnapshot(
2345
+ `
2346
+ "{
2347
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2348
+ "type": "object",
2349
+ "properties": {
2350
+ "name": {
2351
+ "type": "string"
2352
+ },
2353
+ "files": {
2354
+ "type": "array",
2355
+ "items": {
2356
+ "type": "object",
2357
+ "properties": {
2358
+ "name": {
2359
+ "type": "string"
2360
+ },
2361
+ "parent": {
2362
+ "$ref": "#"
2363
+ }
2364
+ },
2365
+ "required": [
2366
+ "name",
2367
+ "parent"
2368
+ ],
2369
+ "additionalProperties": false
2370
+ }
2371
+ }
2372
+ },
2373
+ "required": [
2374
+ "name",
2375
+ "files"
2376
+ ],
2377
+ "additionalProperties": false
2378
+ }"
2379
+ `
2380
+ );
2381
+ });
2382
+ });
2383
+
2384
+ test("override", () => {
2385
+ const schema = z.toJSONSchema(z.string(), {
2386
+ override: (ctx) => {
2387
+ ctx.zodSchema;
2388
+ ctx.jsonSchema;
2389
+ ctx.jsonSchema.whatever = "sup";
2390
+ },
2391
+ });
2392
+ expect(schema).toMatchInlineSnapshot(`
2393
+ {
2394
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2395
+ "type": "string",
2396
+ "whatever": "sup",
2397
+ }
2398
+ `);
2399
+ });
2400
+
2401
+ test("override: do not run on references", () => {
2402
+ let overrideCount = 0;
2403
+ const schema = z
2404
+ .union([z.string().date(), z.string().datetime(), z.string().datetime({ local: true })])
2405
+ .meta({ a: true })
2406
+ .transform((str) => new Date(str))
2407
+ .meta({ b: true })
2408
+ .pipe(z.date())
2409
+ .meta({ c: true })
2410
+ .brand("dateIn");
2411
+ z.toJSONSchema(schema, {
2412
+ unrepresentable: "any",
2413
+ io: "input",
2414
+ override(_) {
2415
+ overrideCount++;
2416
+ },
2417
+ });
2418
+
2419
+ expect(overrideCount).toBe(12);
2420
+ });
2421
+
2422
+ test("override with refs", () => {
2423
+ const a = z.string().optional();
2424
+ const result = z.toJSONSchema(a, {
2425
+ override(ctx) {
2426
+ if (ctx.zodSchema._zod.def.type === "string") {
2427
+ ctx.jsonSchema.type = "STRING" as "string";
2428
+ }
2429
+ },
2430
+ });
2431
+
2432
+ expect(result).toMatchInlineSnapshot(`
2433
+ {
2434
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2435
+ "type": "STRING",
2436
+ }
2437
+ `);
2438
+ });
2439
+
2440
+ test("override execution order", () => {
2441
+ const schema = z.union([z.string(), z.number()]);
2442
+ let unionSchema!: any;
2443
+ z.toJSONSchema(schema, {
2444
+ override(ctx) {
2445
+ if (ctx.zodSchema._zod.def.type === "union") {
2446
+ unionSchema = ctx.jsonSchema;
2447
+ }
2448
+ },
2449
+ });
2450
+
2451
+ expect(unionSchema).toMatchInlineSnapshot(`
2452
+ {
2453
+ "type": [
2454
+ "string",
2455
+ "number",
2456
+ ],
2457
+ }
2458
+ `);
2459
+ });
2460
+
2461
+ test("override with path", () => {
2462
+ const userSchema = z.object({
2463
+ name: z.string(),
2464
+ age: z.number(),
2465
+ });
2466
+
2467
+ const capturedPaths: (string | number)[][] = [];
2468
+
2469
+ z.toJSONSchema(userSchema, {
2470
+ override(ctx) {
2471
+ capturedPaths.push(ctx.path);
2472
+ },
2473
+ });
2474
+
2475
+ expect(capturedPaths).toMatchInlineSnapshot(`
2476
+ [
2477
+ [
2478
+ "properties",
2479
+ "age",
2480
+ ],
2481
+ [
2482
+ "properties",
2483
+ "name",
2484
+ ],
2485
+ [],
2486
+ ]
2487
+ `);
2488
+ });
2489
+
2490
+ test("pipe", () => {
2491
+ const mySchema = z
2492
+ .string()
2493
+ .transform((val) => val.length)
2494
+ .pipe(z.number());
2495
+ // ZodPipe
2496
+
2497
+ const a = z.toJSONSchema(mySchema);
2498
+ expect(a).toMatchInlineSnapshot(`
2499
+ {
2500
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2501
+ "type": "number",
2502
+ }
2503
+ `);
2504
+ // => { type: "number" }
2505
+
2506
+ const b = z.toJSONSchema(mySchema, { io: "input" });
2507
+ expect(b).toMatchInlineSnapshot(`
2508
+ {
2509
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2510
+ "type": "string",
2511
+ }
2512
+ `);
2513
+ // => { type: "string" }
2514
+ });
2515
+
2516
+ test("passthrough schemas", () => {
2517
+ const Internal = z.object({
2518
+ num: z.number(),
2519
+ str: z.string(),
2520
+ });
2521
+ //.meta({ id: "Internal" });
2522
+
2523
+ const External = z.object({
2524
+ a: Internal,
2525
+ b: Internal.optional(),
2526
+ c: z.lazy(() => Internal),
2527
+ d: z.promise(Internal),
2528
+ e: z.pipe(Internal, Internal),
2529
+ });
2530
+
2531
+ const result = z.toJSONSchema(External, {
2532
+ reused: "ref",
2533
+ });
2534
+ expect(result).toMatchInlineSnapshot(`
2535
+ {
2536
+ "$defs": {
2537
+ "__schema0": {
2538
+ "additionalProperties": false,
2539
+ "properties": {
2540
+ "num": {
2541
+ "type": "number",
2542
+ },
2543
+ "str": {
2544
+ "type": "string",
2545
+ },
2546
+ },
2547
+ "required": [
2548
+ "num",
2549
+ "str",
2550
+ ],
2551
+ "type": "object",
2552
+ },
2553
+ },
2554
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2555
+ "additionalProperties": false,
2556
+ "properties": {
2557
+ "a": {
2558
+ "$ref": "#/$defs/__schema0",
2559
+ },
2560
+ "b": {
2561
+ "$ref": "#/$defs/__schema0",
2562
+ },
2563
+ "c": {
2564
+ "$ref": "#/$defs/__schema0",
2565
+ },
2566
+ "d": {
2567
+ "$ref": "#/$defs/__schema0",
2568
+ },
2569
+ "e": {
2570
+ "$ref": "#/$defs/__schema0",
2571
+ },
2572
+ },
2573
+ "required": [
2574
+ "a",
2575
+ "c",
2576
+ "d",
2577
+ "e",
2578
+ ],
2579
+ "type": "object",
2580
+ }
2581
+ `);
2582
+ });
2583
+
2584
+ test("extract schemas with id", () => {
2585
+ const name = z.string().meta({ id: "name" });
2586
+ const result = z.toJSONSchema(
2587
+ z.object({
2588
+ first_name: name,
2589
+ last_name: name.nullable(),
2590
+ middle_name: name.optional(),
2591
+ age: z.number().meta({ id: "age" }),
2592
+ })
2593
+ );
2594
+ expect(result).toMatchInlineSnapshot(`
2595
+ {
2596
+ "$defs": {
2597
+ "age": {
2598
+ "type": "number",
2599
+ },
2600
+ "name": {
2601
+ "type": "string",
2602
+ },
2603
+ },
2604
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2605
+ "additionalProperties": false,
2606
+ "properties": {
2607
+ "age": {
2608
+ "$ref": "#/$defs/age",
2609
+ },
2610
+ "first_name": {
2611
+ "$ref": "#/$defs/name",
2612
+ },
2613
+ "last_name": {
2614
+ "anyOf": [
2615
+ {
2616
+ "$ref": "#/$defs/name",
2617
+ },
2618
+ {
2619
+ "type": "null",
2620
+ },
2621
+ ],
2622
+ },
2623
+ "middle_name": {
2624
+ "$ref": "#/$defs/name",
2625
+ },
2626
+ },
2627
+ "required": [
2628
+ "first_name",
2629
+ "last_name",
2630
+ "age",
2631
+ ],
2632
+ "type": "object",
2633
+ }
2634
+ `);
2635
+ });
2636
+
2637
+ test("escapes JSON Pointer reserved characters in $ref but not in $defs key", () => {
2638
+ const User = z.object({ name: z.string() }).meta({ id: "Shared/User~" });
2639
+ const result = z.toJSONSchema(z.object({ User }));
2640
+ // the $ref pointer escapes `/` -> `~1` and `~` -> `~0` (RFC 6901),
2641
+ // while the $defs key keeps the original id
2642
+ expect((result.properties!.User as any).$ref).toBe("#/$defs/Shared~1User~0");
2643
+ expect(Object.keys(result.$defs!)).toEqual(["Shared/User~"]);
2644
+ });
2645
+
2646
+ test("escapes JSON Pointer reserved characters in the root $ref", () => {
2647
+ const User = z.object({ name: z.string() }).meta({ id: "Shared/User~" });
2648
+ const result = z.toJSONSchema(User);
2649
+ expect(result.$ref).toBe("#/$defs/Shared~1User~0");
2650
+ expect(Object.keys(result.$defs!)).toEqual(["Shared/User~"]);
2651
+ });
2652
+
2653
+ test("a multipleOf divisor JSON Schema cannot express goes through `unrepresentable`", () => {
2654
+ // the keyword must be strictly greater than zero, and NaN/Infinity do not survive JSON at all
2655
+ for (const divisor of [0, Number.NaN, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY]) {
2656
+ expect(() => z.toJSONSchema(z.number().multipleOf(divisor))).toThrow(/cannot be represented in JSON Schema/);
2657
+ expect(z.toJSONSchema(z.number().multipleOf(divisor), { unrepresentable: "any" })).toMatchObject({
2658
+ type: "number",
2659
+ });
2660
+ expect(z.toJSONSchema(z.number().multipleOf(divisor), { unrepresentable: "any" })).not.toHaveProperty("multipleOf");
2661
+ }
2662
+
2663
+ // a negative divisor accepts exactly what its absolute value accepts, so it still maps
2664
+ expect(z.number().multipleOf(-5).safeParse(10).success).toEqual(true);
2665
+ expect(z.number().multipleOf(-5).safeParse(13).success).toEqual(false);
2666
+ expect(z.toJSONSchema(z.number().multipleOf(-5))).toMatchObject({ multipleOf: 5 });
2667
+ expect(z.toJSONSchema(z.number().multipleOf(0.1))).toMatchObject({ multipleOf: 0.1 });
2668
+ });
2669
+
2670
+ test("unrepresentable default values go through `unrepresentable`", () => {
2671
+ // a bigint default has no reliable JSON encoding, so it is dropped rather than approximated
2672
+ expect(z.toJSONSchema(z.bigint().default(0n), { unrepresentable: "any" })).toMatchInlineSnapshot(`
2673
+ {
2674
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2675
+ }
2676
+ `);
2677
+ expect(z.toJSONSchema(z.bigint().prefault(2n), { io: "input", unrepresentable: "any" })).toMatchInlineSnapshot(`
2678
+ {
2679
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2680
+ }
2681
+ `);
2682
+ // including when nested inside an otherwise representable default
2683
+ expect(
2684
+ z.toJSONSchema(z.object({ a: z.bigint() }).default({ a: 1n }), { unrepresentable: "any" })
2685
+ ).toMatchInlineSnapshot(`
2686
+ {
2687
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2688
+ "additionalProperties": false,
2689
+ "properties": {
2690
+ "a": {},
2691
+ },
2692
+ "required": [
2693
+ "a",
2694
+ ],
2695
+ "type": "object",
2696
+ }
2697
+ `);
2698
+
2699
+ // under the default strict mode the inner type throws first; a representable inner type surfaces the default's own error rather than a raw `JSON.stringify` TypeError
2700
+ expect(() => z.toJSONSchema(z.bigint().default(0n))).toThrow("BigInt cannot be represented in JSON Schema");
2701
+ expect(() => z.toJSONSchema(z.unknown().default(1n))).toThrow("BigInt defaults cannot be represented in JSON Schema");
2702
+
2703
+ // representable defaults are untouched
2704
+ expect(z.toJSONSchema(z.object({ a: z.number() }).default({ a: 2 }))).toMatchInlineSnapshot(`
2705
+ {
2706
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2707
+ "additionalProperties": false,
2708
+ "default": {
2709
+ "a": 2,
2710
+ },
2711
+ "properties": {
2712
+ "a": {
2713
+ "type": "number",
2714
+ },
2715
+ },
2716
+ "required": [
2717
+ "a",
2718
+ ],
2719
+ "type": "object",
2720
+ }
2721
+ `);
2722
+ });
2723
+
2724
+ test("an `unrepresentable` handler can represent a bigint default", () => {
2725
+ // one handler covers both the type and its default, so no `unrepresentable: "any"` is needed and every other unrepresentable type still throws
2726
+ expect(
2727
+ z.toJSONSchema(z.object({ startAt: z.coerce.bigint().optional().default(0n) }), {
2728
+ io: "input",
2729
+ unrepresentable: ({ zodSchema }) => {
2730
+ const def = zodSchema._zod.def;
2731
+ if (def.type === "bigint") return { type: "integer", format: "int64" };
2732
+ if (def.type === "default") return { default: String(def.defaultValue) };
2733
+ return "throw";
2734
+ },
2735
+ })
2736
+ ).toMatchInlineSnapshot(`
2737
+ {
2738
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2739
+ "properties": {
2740
+ "startAt": {
2741
+ "default": "0",
2742
+ "format": "int64",
2743
+ "type": "integer",
2744
+ },
2745
+ },
2746
+ "type": "object",
2747
+ }
2748
+ `);
2749
+
2750
+ // a handler may also drop just the default while still representing the type
2751
+ expect(
2752
+ z.toJSONSchema(z.bigint().default(0n), {
2753
+ unrepresentable: ({ zodSchema }) =>
2754
+ zodSchema._zod.def.type === "bigint" ? { type: "integer", format: "int64" } : "any",
2755
+ })
2756
+ ).toMatchInlineSnapshot(`
2757
+ {
2758
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2759
+ "format": "int64",
2760
+ "type": "integer",
2761
+ }
2762
+ `);
2763
+ });
2764
+
2765
+ test("unrepresentable literal values are ignored", () => {
2766
+ const a = z.toJSONSchema(z.literal(["hello", null, 5, BigInt(1324), undefined]), { unrepresentable: "any" });
2767
+ expect(a).toMatchInlineSnapshot(`
2768
+ {
2769
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2770
+ "enum": [
2771
+ "hello",
2772
+ null,
2773
+ 5,
2774
+ 1324,
2775
+ ],
2776
+ }
2777
+ `);
2778
+
2779
+ const b = z.toJSONSchema(z.literal([undefined, null, 5, BigInt(1324)]), {
2780
+ unrepresentable: "any",
2781
+ });
2782
+ expect(b).toMatchInlineSnapshot(`
2783
+ {
2784
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2785
+ "enum": [
2786
+ null,
2787
+ 5,
2788
+ 1324,
2789
+ ],
2790
+ }
2791
+ `);
2792
+
2793
+ const c = z.toJSONSchema(z.literal([undefined]), {
2794
+ unrepresentable: "any",
2795
+ });
2796
+ expect(c).toMatchInlineSnapshot(`
2797
+ {
2798
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2799
+ }
2800
+ `);
2801
+ });
2802
+
2803
+ test("describe with id", () => {
2804
+ const jobId = z.string().meta({ id: "jobId" });
2805
+
2806
+ const a = z.toJSONSchema(
2807
+ z.object({
2808
+ current: jobId.describe("Current job"),
2809
+ previous: jobId.describe("Previous job"),
2810
+ })
2811
+ );
2812
+ expect(a).toMatchInlineSnapshot(`
2813
+ {
2814
+ "$defs": {
2815
+ "jobId": {
2816
+ "type": "string",
2817
+ },
2818
+ },
2819
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2820
+ "additionalProperties": false,
2821
+ "properties": {
2822
+ "current": {
2823
+ "$ref": "#/$defs/jobId",
2824
+ "description": "Current job",
2825
+ },
2826
+ "previous": {
2827
+ "$ref": "#/$defs/jobId",
2828
+ "description": "Previous job",
2829
+ },
2830
+ },
2831
+ "required": [
2832
+ "current",
2833
+ "previous",
2834
+ ],
2835
+ "type": "object",
2836
+ }
2837
+ `);
2838
+ });
2839
+
2840
+ test("id is stripped from $defs entries (draft-2020-12)", () => {
2841
+ // The `id` in `.meta()` is a registration tag — it determines the $defs key but should not leak into the definition body, where it is redundant.
2842
+ const inner = z.string().meta({ id: "Inner" });
2843
+ const result = z.toJSONSchema(z.object({ a: inner, b: inner }));
2844
+ expect(result.$defs?.Inner).toEqual({ type: "string" });
2845
+ expect((result.$defs?.Inner as any).id).toBeUndefined();
2846
+ });
2847
+
2848
+ test("id is stripped from definitions entries (draft-04)", () => {
2849
+ // In draft-04, `id` is a reserved keyword that sets a base URI for the subschema. Leaking Zod's registration tag here is semantically wrong, so ensure it is stripped.
2850
+ const inner = z.string().meta({ id: "Inner" });
2851
+ const result = z.toJSONSchema(z.object({ a: inner, b: inner }), { target: "draft-04" }) as any;
2852
+ expect(result.definitions?.Inner).toEqual({ type: "string" });
2853
+ expect(result.definitions?.Inner?.id).toBeUndefined();
2854
+ });
2855
+
2856
+ test("id is stripped from root schema", () => {
2857
+ // The registration tag should not appear on the root either.
2858
+ const A = z.object({ name: z.string() }).meta({ id: "A" });
2859
+ const result = z.toJSONSchema(A);
2860
+ expect((result as any).id).toBeUndefined();
2861
+ });
2862
+
2863
+ test("root schema with id is hoisted into $defs", () => {
2864
+ const A = z.object({ name: z.string() }).meta({ id: "A" });
2865
+ const result = z.toJSONSchema(A);
2866
+
2867
+ expect(result).toEqual({
2868
+ $schema: "https://json-schema.org/draft/2020-12/schema",
2869
+ $ref: "#/$defs/A",
2870
+ $defs: {
2871
+ A: {
2872
+ type: "object",
2873
+ properties: {
2874
+ name: {
2875
+ type: "string",
2876
+ },
2877
+ },
2878
+ required: ["name"],
2879
+ additionalProperties: false,
2880
+ },
2881
+ },
2882
+ });
2883
+ });
2884
+
2885
+ test("root schema with id uses definitions on legacy targets", () => {
2886
+ const A = z.object({ name: z.string() }).meta({ id: "A" });
2887
+ const result = z.toJSONSchema(A, { target: "draft-07" });
2888
+
2889
+ expect(result).toEqual({
2890
+ $schema: "http://json-schema.org/draft-07/schema#",
2891
+ $ref: "#/definitions/A",
2892
+ definitions: {
2893
+ A: {
2894
+ type: "object",
2895
+ properties: {
2896
+ name: {
2897
+ type: "string",
2898
+ },
2899
+ },
2900
+ required: ["name"],
2901
+ additionalProperties: false,
2902
+ },
2903
+ },
2904
+ });
2905
+ });
2906
+
2907
+ test("id is observable in override callback", () => {
2908
+ // The strip happens after override callbacks run, so userland override code can still read `jsonSchema.id` if it wants to.
2909
+ const inner = z.string().meta({ id: "Inner" });
2910
+ const seenIds: Array<string | undefined> = [];
2911
+ z.toJSONSchema(z.object({ a: inner }), {
2912
+ override: ({ jsonSchema }) => {
2913
+ if (jsonSchema.id !== undefined) seenIds.push(jsonSchema.id as string);
2914
+ },
2915
+ });
2916
+ expect(seenIds).toContain("Inner");
2917
+ });
2918
+
2919
+ test("describe with id on wrapper", () => {
2920
+ // Test that $ref propagation works when processor sets a different ref (readonly -> innerType) but parent was extracted due to having an id
2921
+ const roJobId = z.string().readonly().meta({ id: "roJobId" });
2922
+
2923
+ const a = z.toJSONSchema(
2924
+ z.object({
2925
+ current: roJobId.describe("Current readonly job"),
2926
+ previous: roJobId.describe("Previous readonly job"),
2927
+ })
2928
+ );
2929
+ expect(a).toMatchInlineSnapshot(`
2930
+ {
2931
+ "$defs": {
2932
+ "roJobId": {
2933
+ "readOnly": true,
2934
+ "type": "string",
2935
+ },
2936
+ },
2937
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2938
+ "additionalProperties": false,
2939
+ "properties": {
2940
+ "current": {
2941
+ "$ref": "#/$defs/roJobId",
2942
+ "description": "Current readonly job",
2943
+ },
2944
+ "previous": {
2945
+ "$ref": "#/$defs/roJobId",
2946
+ "description": "Previous readonly job",
2947
+ },
2948
+ },
2949
+ "required": [
2950
+ "current",
2951
+ "previous",
2952
+ ],
2953
+ "type": "object",
2954
+ }
2955
+ `);
2956
+ });
2957
+
2958
+ test("overwrite id", () => {
2959
+ const jobId = z.string().meta({ id: "aaa" });
2960
+
2961
+ const a = z.toJSONSchema(
2962
+ z.object({
2963
+ current: jobId,
2964
+ previous: jobId.meta({ id: "bbb" }),
2965
+ })
2966
+ );
2967
+ expect(a).toMatchInlineSnapshot(`
2968
+ {
2969
+ "$defs": {
2970
+ "aaa": {
2971
+ "type": "string",
2972
+ },
2973
+ "bbb": {
2974
+ "$ref": "#/$defs/aaa",
2975
+ },
2976
+ },
2977
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
2978
+ "additionalProperties": false,
2979
+ "properties": {
2980
+ "current": {
2981
+ "$ref": "#/$defs/aaa",
2982
+ },
2983
+ "previous": {
2984
+ "$ref": "#/$defs/bbb",
2985
+ },
2986
+ },
2987
+ "required": [
2988
+ "current",
2989
+ "previous",
2990
+ ],
2991
+ "type": "object",
2992
+ }
2993
+ `);
2994
+
2995
+ const b = z.toJSONSchema(
2996
+ z.object({
2997
+ current: jobId,
2998
+ previous: jobId.meta({ id: "ccc" }),
2999
+ }),
3000
+ {
3001
+ reused: "ref",
3002
+ }
3003
+ );
3004
+ expect(b).toMatchInlineSnapshot(`
3005
+ {
3006
+ "$defs": {
3007
+ "aaa": {
3008
+ "type": "string",
3009
+ },
3010
+ "ccc": {
3011
+ "$ref": "#/$defs/aaa",
3012
+ },
3013
+ },
3014
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3015
+ "additionalProperties": false,
3016
+ "properties": {
3017
+ "current": {
3018
+ "$ref": "#/$defs/aaa",
3019
+ },
3020
+ "previous": {
3021
+ "$ref": "#/$defs/ccc",
3022
+ },
3023
+ },
3024
+ "required": [
3025
+ "current",
3026
+ "previous",
3027
+ ],
3028
+ "type": "object",
3029
+ }
3030
+ `);
3031
+ });
3032
+
3033
+ test("overwrite descriptions", () => {
3034
+ const field = z.string().describe("a").describe("b").describe("c");
3035
+
3036
+ const a = z.toJSONSchema(
3037
+ z.object({
3038
+ d: field.describe("d"),
3039
+ e: field.describe("e"),
3040
+ })
3041
+ );
3042
+ expect(a).toMatchInlineSnapshot(`
3043
+ {
3044
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3045
+ "additionalProperties": false,
3046
+ "properties": {
3047
+ "d": {
3048
+ "description": "d",
3049
+ "type": "string",
3050
+ },
3051
+ "e": {
3052
+ "description": "e",
3053
+ "type": "string",
3054
+ },
3055
+ },
3056
+ "required": [
3057
+ "d",
3058
+ "e",
3059
+ ],
3060
+ "type": "object",
3061
+ }
3062
+ `);
3063
+
3064
+ const b = z.toJSONSchema(
3065
+ z.object({
3066
+ d: field.describe("d"),
3067
+ e: field.describe("e"),
3068
+ }),
3069
+ {
3070
+ reused: "ref",
3071
+ }
3072
+ );
3073
+ expect(b).toMatchInlineSnapshot(`
3074
+ {
3075
+ "$defs": {
3076
+ "__schema0": {
3077
+ "description": "c",
3078
+ "type": "string",
3079
+ },
3080
+ },
3081
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3082
+ "additionalProperties": false,
3083
+ "properties": {
3084
+ "d": {
3085
+ "$ref": "#/$defs/__schema0",
3086
+ "description": "d",
3087
+ },
3088
+ "e": {
3089
+ "$ref": "#/$defs/__schema0",
3090
+ "description": "e",
3091
+ },
3092
+ },
3093
+ "required": [
3094
+ "d",
3095
+ "e",
3096
+ ],
3097
+ "type": "object",
3098
+ }
3099
+ `);
3100
+ });
3101
+
3102
+ test("top-level readonly", () => {
3103
+ const A = z
3104
+ .object({
3105
+ name: z.string(),
3106
+ get b() {
3107
+ return B;
3108
+ },
3109
+ })
3110
+ .readonly()
3111
+ .meta({ id: "A" });
3112
+ // z.globalRegistry.add(A, { id: "A" });
3113
+ // .meta({ id: "A" });
3114
+
3115
+ const B = z
3116
+ .object({
3117
+ name: z.string(),
3118
+ get a() {
3119
+ return A;
3120
+ },
3121
+ })
3122
+ .readonly()
3123
+ .meta({ id: "B" });
3124
+ // z.globalRegistry.add(B, { id: "B" });
3125
+ // .meta({ id: "B" });
3126
+
3127
+ const result = z.toJSONSchema(A);
3128
+ expect(result).toEqual({
3129
+ $schema: "https://json-schema.org/draft/2020-12/schema",
3130
+ $ref: "#/$defs/A",
3131
+ $defs: {
3132
+ A: {
3133
+ additionalProperties: false,
3134
+ properties: {
3135
+ b: {
3136
+ $ref: "#/$defs/B",
3137
+ },
3138
+ name: {
3139
+ type: "string",
3140
+ },
3141
+ },
3142
+ readOnly: true,
3143
+ required: ["name", "b"],
3144
+ type: "object",
3145
+ },
3146
+ B: {
3147
+ additionalProperties: false,
3148
+ properties: {
3149
+ a: {
3150
+ $ref: "#/$defs/A",
3151
+ },
3152
+ name: {
3153
+ type: "string",
3154
+ },
3155
+ },
3156
+ readOnly: true,
3157
+ required: ["name", "a"],
3158
+ type: "object",
3159
+ },
3160
+ },
3161
+ });
3162
+ });
3163
+
3164
+ test("basic registry", () => {
3165
+ const myRegistry = z.registry<{ id: string }>();
3166
+ const User = z.object({
3167
+ name: z.string(),
3168
+ get posts() {
3169
+ return z.array(Post);
3170
+ },
3171
+ });
3172
+
3173
+ const Post = z.object({
3174
+ title: z.string(),
3175
+ content: z.string(),
3176
+ get author() {
3177
+ return User;
3178
+ },
3179
+ });
3180
+
3181
+ myRegistry.add(User, { id: "User" });
3182
+ myRegistry.add(Post, { id: "Post" });
3183
+
3184
+ const result = z.toJSONSchema(myRegistry, {
3185
+ uri: (id) => `https://example.com/${id}.json`,
3186
+ });
3187
+ expect(result).toMatchInlineSnapshot(`
3188
+ {
3189
+ "schemas": {
3190
+ "Post": {
3191
+ "$id": "https://example.com/Post.json",
3192
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3193
+ "additionalProperties": false,
3194
+ "properties": {
3195
+ "author": {
3196
+ "$ref": "https://example.com/User.json",
3197
+ },
3198
+ "content": {
3199
+ "type": "string",
3200
+ },
3201
+ "title": {
3202
+ "type": "string",
3203
+ },
3204
+ },
3205
+ "required": [
3206
+ "title",
3207
+ "content",
3208
+ "author",
3209
+ ],
3210
+ "type": "object",
3211
+ },
3212
+ "User": {
3213
+ "$id": "https://example.com/User.json",
3214
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3215
+ "additionalProperties": false,
3216
+ "properties": {
3217
+ "name": {
3218
+ "type": "string",
3219
+ },
3220
+ "posts": {
3221
+ "items": {
3222
+ "$ref": "https://example.com/Post.json",
3223
+ },
3224
+ "type": "array",
3225
+ },
3226
+ },
3227
+ "required": [
3228
+ "name",
3229
+ "posts",
3230
+ ],
3231
+ "type": "object",
3232
+ },
3233
+ },
3234
+ }
3235
+ `);
3236
+ });
3237
+
3238
+ function countMapScanWork<T>(convert: () => T): { result: T; work: number } {
3239
+ const entries = Map.prototype.entries;
3240
+ const values = Map.prototype.values;
3241
+ let work = 0;
3242
+ const entriesSpy = vi.spyOn(Map.prototype, "entries").mockImplementation(function (this: Map<unknown, unknown>) {
3243
+ work += this.size;
3244
+ return entries.call(this);
3245
+ } as typeof Map.prototype.entries);
3246
+ const valuesSpy = vi.spyOn(Map.prototype, "values").mockImplementation(function (this: Map<unknown, unknown>) {
3247
+ work += this.size;
3248
+ return values.call(this);
3249
+ } as typeof Map.prototype.values);
3250
+ try {
3251
+ return { result: convert(), work };
3252
+ } finally {
3253
+ entriesSpy.mockRestore();
3254
+ valuesSpy.mockRestore();
3255
+ }
3256
+ }
3257
+
3258
+ test("large registry conversion performs linear map-scan work", () => {
3259
+ const count = 64;
3260
+ const convert = (size: number, withIntersection: boolean) => {
3261
+ const registry = z.registry<{ id: string }>();
3262
+ for (let i = 0; i < size; i++) {
3263
+ registry.add(
3264
+ z.object({ id: z.string(), name: z.string(), count: z.number(), nested: z.object({ a: z.boolean() }) }),
3265
+ { id: `Type${i}` }
3266
+ );
3267
+ }
3268
+ if (withIntersection) registry.add(z.object({ a: z.string() }).and(z.object({ b: z.string() })), { id: "Inter" });
3269
+
3270
+ return countMapScanWork(() => z.toJSONSchema(registry, { uri: (id) => `https://example.com/${id}.json` }));
3271
+ };
3272
+
3273
+ const plain = convert(count, false);
3274
+ const plainDouble = convert(count * 2, false);
3275
+ expect(Object.keys(plain.result.schemas)).toHaveLength(count);
3276
+ expect(plain.result.schemas.Type0).toMatchObject({
3277
+ $id: "https://example.com/Type0.json",
3278
+ type: "object",
3279
+ properties: { nested: { type: "object" } },
3280
+ });
3281
+ expect(plain.result.schemas[`Type${count - 1}`]!.$id).toBe(`https://example.com/Type${count - 1}.json`);
3282
+ expect(plain.work).toBeGreaterThan(0);
3283
+ expect(plainDouble.work).toBeLessThanOrEqual(plain.work * 2);
3284
+
3285
+ const folded = convert(count, true);
3286
+ const foldedDouble = convert(count * 2, true);
3287
+ expect(folded.result.schemas.Inter).toMatchObject({ type: "object", properties: { a: {}, b: {} } });
3288
+ expect(folded.work).toBeGreaterThan(0);
3289
+ expect(foldedDouble.work).toBeLessThanOrEqual(folded.work * 2);
3290
+ });
3291
+
3292
+ test("a registry of records with numeric keys performs linear map-scan work", () => {
3293
+ const count = 64;
3294
+ const convert = (size: number, key: (i: number) => z.core.$ZodType) => {
3295
+ const registry = z.registry<{ id: string }>();
3296
+ for (let i = 0; i < size; i++) {
3297
+ registry.add(z.object({ m: z.record(key(i) as z.core.$ZodRecordKey, z.boolean()) }), { id: `Type${i}` });
3298
+ }
3299
+ return countMapScanWork(() => z.toJSONSchema(registry, { uri: (id) => `https://example.com/${id}.json` }));
3300
+ };
3301
+
3302
+ const numeric = convert(count, () => z.number());
3303
+ const numericDouble = convert(count * 2, () => z.number());
3304
+ expect(numeric.result.schemas.Type0).toMatchObject({
3305
+ properties: { m: { propertyNames: { type: "string", pattern: "^-?\\d+(?:\\.\\d+)?$" } } },
3306
+ });
3307
+ expect(numeric.work).toBeGreaterThan(0);
3308
+ expect(numericDouble.work).toBeLessThanOrEqual(numeric.work * 2);
3309
+
3310
+ const extracted = convert(count, (i) => z.number().meta({ id: `Key${i}` }));
3311
+ const extractedDouble = convert(count * 2, (i) => z.number().meta({ id: `Key${i}` }));
3312
+ expect(extracted.result.schemas.Type0).toMatchObject({
3313
+ properties: { m: { propertyNames: { type: "string", pattern: "^-?\\d+(?:\\.\\d+)?$" } } },
3314
+ });
3315
+ expect(extracted.work).toBeGreaterThan(0);
3316
+ expect(extractedDouble.work).toBeLessThanOrEqual(extracted.work * 2);
3317
+ });
3318
+
3319
+ test("registry extracts unregistered subschemas into __shared", () => {
3320
+ const registry = z.registry<{ id: string }>();
3321
+ const address = z.object({ street: z.string() }).meta({ id: "Address" });
3322
+ registry.add(z.object({ home: address, work: address }), { id: "Person" });
3323
+ registry.add(z.object({ hq: address }), { id: "Company" });
3324
+
3325
+ const { schemas } = z.toJSONSchema(registry, { uri: (id) => `https://example.com/${id}.json` });
3326
+
3327
+ expect(schemas.__shared).toMatchInlineSnapshot(`
3328
+ {
3329
+ "$defs": {
3330
+ "Address": {
3331
+ "additionalProperties": false,
3332
+ "properties": {
3333
+ "street": {
3334
+ "type": "string",
3335
+ },
3336
+ },
3337
+ "required": [
3338
+ "street",
3339
+ ],
3340
+ "type": "object",
3341
+ },
3342
+ },
3343
+ }
3344
+ `);
3345
+ expect(schemas.Person).toMatchInlineSnapshot(`
3346
+ {
3347
+ "$id": "https://example.com/Person.json",
3348
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3349
+ "additionalProperties": false,
3350
+ "properties": {
3351
+ "home": {
3352
+ "$ref": "https://example.com/__shared.json#/$defs/Address",
3353
+ },
3354
+ "work": {
3355
+ "$ref": "https://example.com/__shared.json#/$defs/Address",
3356
+ },
3357
+ },
3358
+ "required": [
3359
+ "home",
3360
+ "work",
3361
+ ],
3362
+ "type": "object",
3363
+ }
3364
+ `);
3365
+ // Company is emitted after Person, so it only resolves if the shared $defs built on the first finalize are still reachable — the pass that writes them no longer runs per schema.
3366
+ expect(schemas.Company!.properties!.hq).toEqual({
3367
+ $ref: "https://example.com/__shared.json#/$defs/Address",
3368
+ });
3369
+ });
3370
+
3371
+ test("registry extracts reused subschemas into __shared without an id", () => {
3372
+ const registry = z.registry<{ id: string }>();
3373
+ const shared = z.object({ q: z.string() });
3374
+ registry.add(z.object({ a: shared, b: shared }), { id: "First" });
3375
+ registry.add(z.object({ c: shared }), { id: "Second" });
3376
+
3377
+ const { schemas } = z.toJSONSchema(registry, { uri: (id) => `${id}.json`, reused: "ref" });
3378
+
3379
+ // The id is counter-generated, so this pins that ctx.counter is consumed exactly once.
3380
+ expect(Object.keys(schemas.__shared!.$defs!)).toEqual(["schema0"]);
3381
+ expect(schemas.First!.properties!.a).toEqual({ $ref: "__shared.json#/$defs/schema0" });
3382
+ expect(schemas.Second!.properties!.c).toEqual({ $ref: "__shared.json#/$defs/schema0" });
3383
+ });
3384
+
3385
+ test("JSONSchemaGenerator re-runs shared passes when emit params change", () => {
3386
+ const shared = z.object({ s: z.string() });
3387
+ const a = z.object({ x: shared, y: shared });
3388
+ const registry = z.registry<{ id: string }>();
3389
+ registry.add(a, { id: "A" });
3390
+
3391
+ const gen = new z.core.JSONSchemaGenerator({ target: "draft-2020-12" });
3392
+ gen.process(a);
3393
+ const defs: Record<string, any> = {};
3394
+ const external = { registry, uri: (id: string) => `${id}.json`, defs };
3395
+
3396
+ gen.emit(a, { external, reused: "inline" });
3397
+ // Same `external`, different `reused` — the second emit must still extract `shared`.
3398
+ const second: any = gen.emit(a, { external, reused: "ref" });
3399
+
3400
+ expect(Object.keys(defs)).toEqual(["schema0"]);
3401
+ expect(second.properties.x).toEqual({ $ref: "__shared.json#/$defs/schema0" });
3402
+ expect(second.properties.y).toEqual({ $ref: "__shared.json#/$defs/schema0" });
3403
+ });
3404
+
3405
+ test("JSONSchemaGenerator still throws on cycles when a later emit asks for it", () => {
3406
+ const Node: any = z.object({
3407
+ v: z.string(),
3408
+ get next() {
3409
+ return Node;
3410
+ },
3411
+ });
3412
+ const registry = z.registry<{ id: string }>();
3413
+ registry.add(Node, { id: "Node" });
3414
+
3415
+ const gen = new z.core.JSONSchemaGenerator({ target: "draft-2020-12" });
3416
+ gen.process(Node);
3417
+ const external = { registry, uri: (id: string) => `${id}.json`, defs: {} };
3418
+
3419
+ gen.emit(Node, { external, cycles: "ref" });
3420
+ expect(() => gen.emit(Node, { external, cycles: "throw" })).toThrow(/Cycle detected/);
3421
+ });
3422
+
3423
+ test("JSONSchemaGenerator re-runs shared passes on a no-params emit", () => {
3424
+ const shared = z.object({ s: z.string() });
3425
+ const a = z.object({ x: shared });
3426
+ const registry = z.registry<{ id: string }>();
3427
+ registry.add(a, { id: "A" });
3428
+
3429
+ const gen = new z.core.JSONSchemaGenerator({ target: "draft-2020-12" });
3430
+ gen.process(a);
3431
+ const defs: Record<string, any> = {};
3432
+ gen.emit(a, { external: { registry, uri: (id: string) => `${id}.json`, defs }, reused: "ref" });
3433
+
3434
+ // Re-processing an already-seen schema bumps `seen.count`, which `extractDefs` branches on under `reused: "ref"` — and it returns early, so it cannot clear the guards itself.
3435
+ gen.process(shared);
3436
+ const second: any = gen.emit(a);
3437
+
3438
+ expect(Object.keys(defs)).toEqual(["schema0"]);
3439
+ expect(second.properties.x).toEqual({ $ref: "__shared.json#/$defs/schema0" });
3440
+ });
3441
+
3442
+ test("_ref", () => {
3443
+ // const a = z.promise(z.string().describe("a"));
3444
+ const a = z.toJSONSchema(z.promise(z.string().describe("a")));
3445
+ expect(a).toMatchInlineSnapshot(`
3446
+ {
3447
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3448
+ "description": "a",
3449
+ "type": "string",
3450
+ }
3451
+ `);
3452
+
3453
+ const b = z.toJSONSchema(z.lazy(() => z.string().describe("a")));
3454
+ expect(b).toMatchInlineSnapshot(`
3455
+ {
3456
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3457
+ "description": "a",
3458
+ "type": "string",
3459
+ }
3460
+ `);
3461
+
3462
+ const c = z.toJSONSchema(z.optional(z.string().describe("a")));
3463
+ expect(c).toMatchInlineSnapshot(`
3464
+ {
3465
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3466
+ "description": "a",
3467
+ "type": "string",
3468
+ }
3469
+ `);
3470
+
3471
+ const d = z.toJSONSchema(z.string().meta({ id: "foo" }).describe("bar").optional());
3472
+ expect(d).toMatchInlineSnapshot(`
3473
+ {
3474
+ "$defs": {
3475
+ "foo": {
3476
+ "type": "string",
3477
+ },
3478
+ },
3479
+ "$ref": "#/$defs/foo",
3480
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3481
+ "description": "bar",
3482
+ }
3483
+ `);
3484
+ });
3485
+
3486
+ test("defaults/prefaults", () => {
3487
+ const a = z
3488
+ .string()
3489
+ .transform((val) => val.length)
3490
+ .pipe(z.number());
3491
+ const b = a.prefault("hello");
3492
+ const c = a.default(1234);
3493
+
3494
+ // a
3495
+ expect(z.toJSONSchema(a)).toMatchInlineSnapshot(`
3496
+ {
3497
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3498
+ "type": "number",
3499
+ }
3500
+ `);
3501
+ expect(z.toJSONSchema(a, { io: "input" })).toMatchInlineSnapshot(`
3502
+ {
3503
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3504
+ "type": "string",
3505
+ }
3506
+ `);
3507
+
3508
+ // b
3509
+ expect(z.toJSONSchema(b)).toMatchInlineSnapshot(`
3510
+ {
3511
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3512
+ "type": "number",
3513
+ }
3514
+ `);
3515
+ expect(z.toJSONSchema(b, { io: "input" })).toMatchInlineSnapshot(`
3516
+ {
3517
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3518
+ "default": "hello",
3519
+ "type": "string",
3520
+ }
3521
+ `);
3522
+ // c
3523
+ expect(z.toJSONSchema(c)).toMatchInlineSnapshot(`
3524
+ {
3525
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3526
+ "default": 1234,
3527
+ "type": "number",
3528
+ }
3529
+ `);
3530
+ expect(z.toJSONSchema(c, { io: "input" })).toMatchInlineSnapshot(`
3531
+ {
3532
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3533
+ "type": "string",
3534
+ }
3535
+ `);
3536
+ });
3537
+
3538
+ test("catch on a transforming schema", () => {
3539
+ const a = z
3540
+ .string()
3541
+ .transform((val) => val.length)
3542
+ .pipe(z.number())
3543
+ .catch(0);
3544
+
3545
+ expect(z.toJSONSchema(a)).toMatchInlineSnapshot(`
3546
+ {
3547
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3548
+ "default": 0,
3549
+ "type": "number",
3550
+ }
3551
+ `);
3552
+ // catch values are output-typed, so they are not valid input
3553
+ expect(z.toJSONSchema(a, { io: "input" })).toMatchInlineSnapshot(`
3554
+ {
3555
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3556
+ "type": "string",
3557
+ }
3558
+ `);
3559
+
3560
+ // the catch no longer hides the inner transform from ancestors, so their output-typed metadata is stripped too — matching a bare nested transform
3561
+ expect(z.toJSONSchema(z.object({ a }).meta({ examples: [{ a: 1 }] }), { io: "input" })).toMatchInlineSnapshot(`
3562
+ {
3563
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3564
+ "properties": {
3565
+ "a": {
3566
+ "type": "string",
3567
+ },
3568
+ },
3569
+ "required": [
3570
+ "a",
3571
+ ],
3572
+ "type": "object",
3573
+ }
3574
+ `);
3575
+ });
3576
+
3577
+ test("falsy prefaults (false, 0, empty string)", () => {
3578
+ // boolean prefault false
3579
+ const a = z.boolean().prefault(false);
3580
+ expect(z.toJSONSchema(a, { io: "input" })).toMatchInlineSnapshot(`
3581
+ {
3582
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3583
+ "default": false,
3584
+ "type": "boolean",
3585
+ }
3586
+ `);
3587
+
3588
+ // number prefault 0
3589
+ const b = z.number().prefault(0);
3590
+ expect(z.toJSONSchema(b, { io: "input" })).toMatchInlineSnapshot(`
3591
+ {
3592
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3593
+ "default": 0,
3594
+ "type": "number",
3595
+ }
3596
+ `);
3597
+
3598
+ // string prefault empty string
3599
+ const c = z.string().prefault("");
3600
+ expect(z.toJSONSchema(c, { io: "input" })).toMatchInlineSnapshot(`
3601
+ {
3602
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3603
+ "default": "",
3604
+ "type": "string",
3605
+ }
3606
+ `);
3607
+ });
3608
+
3609
+ test("input type", () => {
3610
+ const schema = z.object({
3611
+ a: z.string(),
3612
+ b: z.string().optional(),
3613
+ c: z.string().default("hello"),
3614
+ d: z.string().nullable(),
3615
+ e: z.string().prefault("hello"),
3616
+ f: z.string().catch("hello"),
3617
+ g: z.never(),
3618
+ h: z.union([z.string(), z.number().default(2)]),
3619
+ i: z.union([z.string(), z.string().optional()]),
3620
+ });
3621
+ expect(z.toJSONSchema(schema, { io: "input" })).toMatchInlineSnapshot(`
3622
+ {
3623
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3624
+ "properties": {
3625
+ "a": {
3626
+ "type": "string",
3627
+ },
3628
+ "b": {
3629
+ "type": "string",
3630
+ },
3631
+ "c": {
3632
+ "default": "hello",
3633
+ "type": "string",
3634
+ },
3635
+ "d": {
3636
+ "type": [
3637
+ "string",
3638
+ "null",
3639
+ ],
3640
+ },
3641
+ "e": {
3642
+ "default": "hello",
3643
+ "type": "string",
3644
+ },
3645
+ "f": {
3646
+ "default": "hello",
3647
+ "type": "string",
3648
+ },
3649
+ "g": {
3650
+ "not": {},
3651
+ },
3652
+ "h": {
3653
+ "anyOf": [
3654
+ {
3655
+ "type": "string",
3656
+ },
3657
+ {
3658
+ "default": 2,
3659
+ "type": "number",
3660
+ },
3661
+ ],
3662
+ },
3663
+ "i": {
3664
+ "type": "string",
3665
+ },
3666
+ },
3667
+ "required": [
3668
+ "a",
3669
+ "d",
3670
+ "f",
3671
+ "g",
3672
+ ],
3673
+ "type": "object",
3674
+ }
3675
+ `);
3676
+ expect(z.toJSONSchema(schema, { io: "output" })).toMatchInlineSnapshot(`
3677
+ {
3678
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3679
+ "additionalProperties": false,
3680
+ "properties": {
3681
+ "a": {
3682
+ "type": "string",
3683
+ },
3684
+ "b": {
3685
+ "type": "string",
3686
+ },
3687
+ "c": {
3688
+ "default": "hello",
3689
+ "type": "string",
3690
+ },
3691
+ "d": {
3692
+ "type": [
3693
+ "string",
3694
+ "null",
3695
+ ],
3696
+ },
3697
+ "e": {
3698
+ "type": "string",
3699
+ },
3700
+ "f": {
3701
+ "default": "hello",
3702
+ "type": "string",
3703
+ },
3704
+ "g": {
3705
+ "not": {},
3706
+ },
3707
+ "h": {
3708
+ "anyOf": [
3709
+ {
3710
+ "type": "string",
3711
+ },
3712
+ {
3713
+ "default": 2,
3714
+ "type": "number",
3715
+ },
3716
+ ],
3717
+ },
3718
+ "i": {
3719
+ "type": "string",
3720
+ },
3721
+ },
3722
+ "required": [
3723
+ "a",
3724
+ "c",
3725
+ "d",
3726
+ "e",
3727
+ "f",
3728
+ "g",
3729
+ "h",
3730
+ ],
3731
+ "type": "object",
3732
+ }
3733
+ `);
3734
+ });
3735
+
3736
+ test("examples on pipe", () => {
3737
+ const schema = z
3738
+ .string()
3739
+ .meta({ examples: ["test"] })
3740
+ .transform(Number)
3741
+ // .pipe(z.transform(Number).meta({ examples: [4] }))
3742
+ .meta({ examples: [4] });
3743
+
3744
+ const i = z.toJSONSchema(schema, { io: "input", unrepresentable: "any" });
3745
+ expect(i).toMatchInlineSnapshot(`
3746
+ {
3747
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3748
+ "examples": [
3749
+ "test",
3750
+ ],
3751
+ "type": "string",
3752
+ }
3753
+ `);
3754
+ const o = z.toJSONSchema(schema, { io: "output", unrepresentable: "any" });
3755
+ expect(o).toMatchInlineSnapshot(`
3756
+ {
3757
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3758
+ "examples": [
3759
+ 4,
3760
+ ],
3761
+ }
3762
+ `);
3763
+ });
3764
+
3765
+ // test("number checks", () => {
3766
+ // expect(z.toJSONSchema(z.number().int())).toMatchInlineSnapshot(`
3767
+ // {
3768
+ // "maximum": 9007199254740991,
3769
+ // "minimum": -9007199254740991,
3770
+ // "type": "integer",
3771
+ // }
3772
+ // `);
3773
+ // expect(z.toJSONSchema(z.int())).toMatchInlineSnapshot(`
3774
+ // {
3775
+ // "maximum": 9007199254740991,
3776
+ // "minimum": -9007199254740991,
3777
+ // "type": "integer",
3778
+ // }
3779
+ // `);
3780
+ // expect(z.toJSONSchema(z.int().positive())).toMatchInlineSnapshot(`
3781
+ // {
3782
+ // "exclusiveMinimum": 0,
3783
+ // "maximum": 9007199254740991,
3784
+ // "minimum": -9007199254740991,
3785
+ // "type": "integer",
3786
+ // }
3787
+ // `);
3788
+ // expect(z.toJSONSchema(z.int().nonnegative())).toMatchInlineSnapshot(`
3789
+ // {
3790
+ // "maximum": 9007199254740991,
3791
+ // "minimum": 0,
3792
+ // "type": "integer",
3793
+ // }
3794
+ // `);
3795
+ // expect(z.toJSONSchema(z.int().gt(0))).toMatchInlineSnapshot(`
3796
+ // {
3797
+ // "exclusiveMinimum": 0,
3798
+ // "maximum": 9007199254740991,
3799
+ // "minimum": -9007199254740991,
3800
+ // "type": "integer",
3801
+ // }
3802
+ // `);
3803
+ // expect(z.toJSONSchema(z.int().gte(0))).toMatchInlineSnapshot(`
3804
+ // {
3805
+ // "maximum": 9007199254740991,
3806
+ // "minimum": 0,
3807
+ // "type": "integer",
3808
+ // }
3809
+ // `);
3810
+
3811
+ // });
3812
+
3813
+ test("use output type for preprocess", () => {
3814
+ const a = z.preprocess((val) => String(val), z.string());
3815
+
3816
+ expect(z.toJSONSchema(a, { io: "input" })).toMatchInlineSnapshot(`
3817
+ {
3818
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3819
+ "type": "string",
3820
+ }
3821
+ `);
3822
+ });
3823
+
3824
+ test("object property with preprocess stays required in input JSON schema", () => {
3825
+ const schema = z.object({
3826
+ noPreprocess: z.string(),
3827
+ withPreprocess: z.preprocess((v) => v, z.string()),
3828
+ optionalPreprocess: z.preprocess((v) => v, z.string().optional()),
3829
+ });
3830
+
3831
+ // A preprocessed property is only optional when its inner schema is — the
3832
+ // transform wrapper must not make a required property optional in the input
3833
+ // JSON schema (matches runtime: `schema.parse({})` rejects `withPreprocess`).
3834
+ expect(z.toJSONSchema(schema, { io: "input" })).toMatchInlineSnapshot(`
3835
+ {
3836
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3837
+ "properties": {
3838
+ "noPreprocess": {
3839
+ "type": "string",
3840
+ },
3841
+ "optionalPreprocess": {
3842
+ "type": "string",
3843
+ },
3844
+ "withPreprocess": {
3845
+ "type": "string",
3846
+ },
3847
+ },
3848
+ "required": [
3849
+ "noPreprocess",
3850
+ "withPreprocess",
3851
+ ],
3852
+ "type": "object",
3853
+ }
3854
+ `);
3855
+ });
3856
+
3857
+ test("input JSON schema resolves requiredness past transform and catch wrappers", () => {
3858
+ const required = (schema: z.ZodObject) =>
3859
+ (z.toJSONSchema(schema, { io: "input" }) as z.core.JSONSchema.ObjectSchema).required;
3860
+ const id = (v: unknown) => v;
3861
+
3862
+ // catch observes an absent key at runtime, but its declared input type stays required (#5003)
3863
+ expect(required(z.object({ a: z.string().catch("x") }))).toEqual(["a"]);
3864
+ expect(required(z.object({ a: z.string().optional().catch("x") }))).toBeUndefined();
3865
+ // nested preprocess and the legacy transform-pipe form both resolve through to the inner schema
3866
+ expect(required(z.object({ a: z.preprocess(id, z.preprocess(id, z.string())) }))).toEqual(["a"]);
3867
+ expect(required(z.object({ a: z.transform((v: unknown) => String(v)).pipe(z.string()) }))).toEqual(["a"]);
3868
+ });
3869
+
3870
+ test("object required keys preserve shape order and direction", () => {
3871
+ const symbol = Symbol("symbol");
3872
+ const shape: z.ZodRawShape = {
3873
+ 10: z.string(),
3874
+ 2: z.string().optional(),
3875
+ plain: z.string(),
3876
+ optional: z.string().optional(),
3877
+ defaulted: z.string().default("x"),
3878
+ caught: z.string().catch("x"),
3879
+ [symbol]: z.string(),
3880
+ };
3881
+ Object.defineProperty(shape, "__proto__", { value: z.string(), enumerable: true });
3882
+ Object.defineProperty(shape, "hidden", { value: z.string(), enumerable: false });
3883
+
3884
+ const input = z.toJSONSchema(z.object(shape), { io: "input", unrepresentable: "any" });
3885
+ const output = z.toJSONSchema(z.object(shape), { io: "output", unrepresentable: "any" });
3886
+
3887
+ expect(Object.keys(input.properties!)).toEqual(["2", "10", "plain", "optional", "defaulted", "caught", "__proto__"]);
3888
+ expect(input.required).toEqual(["10", "plain", "caught", "__proto__"]);
3889
+ expect(output.required).toEqual(["10", "plain", "defaulted", "caught", "__proto__"]);
3890
+ expect(Object.prototype.hasOwnProperty.call(input.properties!, "__proto__")).toBe(true);
3891
+ expect(input.properties).not.toHaveProperty("hidden");
3892
+ expect(Object.getOwnPropertySymbols(input.properties!)).toEqual([]);
3893
+ });
3894
+
3895
+ test("strip output-side examples from input JSON schema for codec", () => {
3896
+ const codec = z
3897
+ .codec(z.string(), z.number(), { decode: (s) => Number(s), encode: (n) => String(n) })
3898
+ .meta({ examples: [42] });
3899
+
3900
+ expect(z.toJSONSchema(codec, { io: "input" })).toMatchInlineSnapshot(`
3901
+ {
3902
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3903
+ "type": "string",
3904
+ }
3905
+ `);
3906
+ expect(z.toJSONSchema(codec, { io: "output" })).toMatchInlineSnapshot(`
3907
+ {
3908
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3909
+ "examples": [
3910
+ 42,
3911
+ ],
3912
+ "type": "number",
3913
+ }
3914
+ `);
3915
+ });
3916
+
3917
+ // test("isTransforming", () => {
3918
+ // const tx = z.core.isTransforming;
3919
+ // expect(tx(z.string())).toEqual(false);
3920
+ // expect(tx(z.string().transform((val) => val))).toEqual(true);
3921
+ // expect(tx(z.string().pipe(z.string()))).toEqual(false);
3922
+ // expect(
3923
+ // tx(
3924
+ // z
3925
+ // .string()
3926
+ // .transform((val) => val)
3927
+ // .pipe(z.string())
3928
+ // )
3929
+ // ).toEqual(true);
3930
+
3931
+ // const a = z.transform((val) => val);
3932
+ // expect(tx(z.transform((val) => val))).toEqual(true);
3933
+ // expect(tx(a.optional())).toEqual(true);
3934
+
3935
+ // const b = z.string().optional();
3936
+ // expect(tx(b)).toEqual(false);
3937
+
3938
+ // const c = z.string().prefault("hello");
3939
+ // expect(tx(c)).toEqual(false);
3940
+
3941
+ // const d = z.string().default("hello");
3942
+ // expect(tx(d)).toEqual(false);
3943
+ // });
3944
+
3945
+ test("flatten simple intersections", () => {
3946
+ const FirstSchema = z.object({
3947
+ testNum: z.number(),
3948
+ });
3949
+
3950
+ const SecondSchema = z.object({
3951
+ testStr: z.string(),
3952
+ });
3953
+
3954
+ const ThirdSchema = z.object({
3955
+ testBool: z.boolean(),
3956
+ });
3957
+
3958
+ const HelloSchema = FirstSchema.and(SecondSchema).and(ThirdSchema).describe("123");
3959
+
3960
+ // Zod 3
3961
+ // console.log(JSON.stringify(zodToJsonSchema(HelloSchema), null, 2));
3962
+
3963
+ // Zod 4
3964
+ const result = z.toJSONSchema(HelloSchema, { target: "draft-7" });
3965
+ expect(result).toMatchInlineSnapshot(`
3966
+ {
3967
+ "$schema": "http://json-schema.org/draft-07/schema#",
3968
+ "additionalProperties": false,
3969
+ "description": "123",
3970
+ "properties": {
3971
+ "testBool": {
3972
+ "type": "boolean",
3973
+ },
3974
+ "testNum": {
3975
+ "type": "number",
3976
+ },
3977
+ "testStr": {
3978
+ "type": "string",
3979
+ },
3980
+ },
3981
+ "required": [
3982
+ "testNum",
3983
+ "testStr",
3984
+ "testBool",
3985
+ ],
3986
+ "type": "object",
3987
+ }
3988
+ `);
3989
+ });
3990
+
3991
+ test("z.file()", () => {
3992
+ const a = z.file();
3993
+ expect(z.toJSONSchema(a)).toMatchInlineSnapshot(`
3994
+ {
3995
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3996
+ "contentEncoding": "binary",
3997
+ "format": "binary",
3998
+ "type": "string",
3999
+ }
4000
+ `);
4001
+
4002
+ const b = z.file().mime("image/png").min(1000).max(10000);
4003
+ expect(z.toJSONSchema(b)).toMatchInlineSnapshot(`
4004
+ {
4005
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4006
+ "contentEncoding": "binary",
4007
+ "contentMediaType": "image/png",
4008
+ "format": "binary",
4009
+ "maxLength": 10000,
4010
+ "minLength": 1000,
4011
+ "type": "string",
4012
+ }
4013
+ `);
4014
+
4015
+ const c = z.file().mime(["image/png", "image/jpg"]).min(1000).max(10000);
4016
+ expect(z.toJSONSchema(c)).toMatchInlineSnapshot(`
4017
+ {
4018
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4019
+ "anyOf": [
4020
+ {
4021
+ "contentMediaType": "image/png",
4022
+ },
4023
+ {
4024
+ "contentMediaType": "image/jpg",
4025
+ },
4026
+ ],
4027
+ "contentEncoding": "binary",
4028
+ "format": "binary",
4029
+ "maxLength": 10000,
4030
+ "minLength": 1000,
4031
+ "type": "string",
4032
+ }
4033
+ `);
4034
+ });
4035
+
4036
+ test("custom toJSONSchema", () => {
4037
+ const schema = z.instanceof(Date);
4038
+ schema._zod.toJSONSchema = () => ({
4039
+ type: "string",
4040
+ format: "date-time",
4041
+ });
4042
+
4043
+ expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
4044
+ {
4045
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4046
+ "format": "date-time",
4047
+ "type": "string",
4048
+ }
4049
+ `);
4050
+ });
4051
+
4052
+ test("cycle detection - root", () => {
4053
+ const schema = z.object({
4054
+ name: z.string(),
4055
+ get subcategories() {
4056
+ return z.array(schema);
4057
+ },
4058
+ });
4059
+
4060
+ expect(() => z.toJSONSchema(schema, { cycles: "throw" })).toThrowErrorMatchingInlineSnapshot(`
4061
+ [Error: Cycle detected: #/properties/subcategories/items/<root>
4062
+
4063
+ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.]
4064
+ `);
4065
+ });
4066
+
4067
+ test("cycle detection - mutual recursion", () => {
4068
+ const A = z.object({
4069
+ name: z.string(),
4070
+ get subcategories() {
4071
+ return z.array(B);
4072
+ },
4073
+ });
4074
+
4075
+ const B = z.object({
4076
+ name: z.string(),
4077
+ get subcategories() {
4078
+ return z.array(A);
4079
+ },
4080
+ });
4081
+
4082
+ expect(() => z.toJSONSchema(A, { cycles: "throw" })).toThrowErrorMatchingInlineSnapshot(`
4083
+ [Error: Cycle detected: #/properties/subcategories/items/properties/subcategories/items/<root>
4084
+
4085
+ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.]
4086
+ `);
4087
+ });
4088
+
4089
+ test("recursive lazy with describe does not stack overflow", () => {
4090
+ const NodeSchema: z.ZodType = z.lazy(() =>
4091
+ z
4092
+ .object({
4093
+ value: z.string().describe("node value"),
4094
+ children: z.array(NodeSchema.describe("child node")).optional().describe("child list"),
4095
+ })
4096
+ .describe("tree node")
4097
+ );
4098
+
4099
+ const result = z.toJSONSchema(NodeSchema, { cycles: "ref", reused: "ref" });
4100
+ expect(result).toBeDefined();
4101
+ expect(result.$defs).toBeDefined();
4102
+ });
4103
+
4104
+ test("__proto__ shape key is emitted as an own property", () => {
4105
+ const schema = z.object({ ["__proto__"]: z.literal("admin"), role: z.string() });
4106
+ const result = z.toJSONSchema(schema, { io: "input" });
4107
+
4108
+ expect(result.required).toEqual(["__proto__", "role"]);
4109
+ // every required key needs a matching entry in properties
4110
+ for (const key of result.required!) {
4111
+ expect(Object.prototype.hasOwnProperty.call(result.properties, key)).toBe(true);
4112
+ }
4113
+ expect(JSON.parse(JSON.stringify(result)).properties.__proto__).toEqual({ type: "string", const: "admin" });
4114
+ });
4115
+
4116
+ test("__proto__ registry id is emitted as an own entry", () => {
4117
+ const myRegistry = z.registry<{ id: string }>();
4118
+ myRegistry.add(z.object({ a: z.string() }), { id: "__proto__" });
4119
+ myRegistry.add(z.object({ b: z.string() }), { id: "normal" });
4120
+
4121
+ expect(Object.keys(z.toJSONSchema(myRegistry).schemas)).toEqual(["__proto__", "normal"]);
4122
+ });
4123
+
4124
+ test("__proto__ def id emits a resolvable $ref", () => {
4125
+ const myRegistry = z.registry<{ id: string }>();
4126
+ const Inner = z.object({ x: z.string() });
4127
+ myRegistry.add(Inner, { id: "__proto__" });
4128
+
4129
+ const json = JSON.parse(JSON.stringify(z.toJSONSchema(z.object({ a: Inner, b: Inner }), { metadata: myRegistry })));
4130
+ expect(json.properties.a.$ref).toBe("#/$defs/__proto__");
4131
+ expect(json.$defs.__proto__).toBeDefined();
4132
+ });
4133
+
4134
+ test("__proto__ patternProperties key is emitted as an own property", () => {
4135
+ const result = z.toJSONSchema(z.looseRecord(z.string().regex(/__proto__/), z.string()));
4136
+
4137
+ expect(Object.getPrototypeOf(result.patternProperties)).toBe(Object.prototype);
4138
+ expect(Object.prototype.hasOwnProperty.call(result.patternProperties, "__proto__")).toBe(true);
4139
+ expect(result.patternProperties?.__proto__).toEqual({ type: "string" });
4140
+ });
4141
+
4142
+ test("__proto__ metadata survives direct and wrapper metadata merges", () => {
4143
+ for (const schema of [z.string(), z.readonly(z.string())]) {
4144
+ const registry = z.registry<Record<string, unknown>>();
4145
+ registry.add(schema, Object.fromEntries([["__proto__", { marker: true }]]));
4146
+
4147
+ const result: any = z.toJSONSchema(schema, { metadata: registry });
4148
+ expect(Object.getPrototypeOf(result)).toBe(Object.prototype);
4149
+ expect(Object.prototype.hasOwnProperty.call(result, "__proto__")).toBe(true);
4150
+ expect(result.__proto__).toEqual({ marker: true });
4151
+ expect(JSON.parse(JSON.stringify(result)).__proto__).toEqual({ marker: true });
4152
+ }
4153
+ });
4154
+
4155
+ test("partialRecord does not require finite keys", () => {
4156
+ const result = z.toJSONSchema(z.partialRecord(z.enum(["__proto__", "b"]), z.string()));
4157
+
4158
+ expect(result.required).toBeUndefined();
4159
+ expect(result.propertyNames).toEqual({ type: "string", enum: ["__proto__", "b"] });
4160
+ expect(result.additionalProperties).toEqual({ type: "string" });
4161
+ });
4162
+
4163
+ describe("unrepresentable callback", () => {
4164
+ test("is consulted for every unrepresentable type", () => {
4165
+ const seen: string[] = [];
4166
+ const collect: z.core.UnrepresentableHandler<z.core.$ZodTypes> = ({ zodSchema }) => {
4167
+ seen.push(zodSchema._zod.def.type);
4168
+ return "any";
4169
+ };
4170
+
4171
+ const schemas = [
4172
+ z.bigint(),
4173
+ z.symbol(),
4174
+ z.undefined(),
4175
+ z.void(),
4176
+ z.date(),
4177
+ z.nan(),
4178
+ z.custom<string>(),
4179
+ z.map(z.string(), z.string()),
4180
+ z.set(z.string()),
4181
+ z.transform((x: unknown) => x),
4182
+ z.literal([undefined]),
4183
+ z.literal([1n]),
4184
+ z.string().catch(() => {
4185
+ throw new Error("dynamic");
4186
+ }),
4187
+ // z.function() is not a ZodType, but its processor is reachable through the same path
4188
+ z.function() as unknown as z.ZodType,
4189
+ ];
4190
+ for (const schema of schemas) z.toJSONSchema(schema, { unrepresentable: collect });
4191
+
4192
+ expect(seen).toEqual([
4193
+ "bigint",
4194
+ "symbol",
4195
+ "undefined",
4196
+ "void",
4197
+ "date",
4198
+ "nan",
4199
+ "custom",
4200
+ "map",
4201
+ "set",
4202
+ "transform",
4203
+ "literal",
4204
+ "literal",
4205
+ "catch",
4206
+ "function",
4207
+ ]);
4208
+ });
4209
+
4210
+ test("returned JSON Schema replaces the unrepresentable node", () => {
4211
+ // the motivating case: represent dates, keep throwing for everything else
4212
+ const params: z.core.ToJSONSchemaParams = {
4213
+ unrepresentable: ({ zodSchema }) =>
4214
+ zodSchema._zod.def.type === "date" ? { type: "string", format: "date-time" } : "throw",
4215
+ };
4216
+ expect(z.toJSONSchema(z.object({ when: z.date() }), params)).toMatchInlineSnapshot(`
4217
+ {
4218
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4219
+ "additionalProperties": false,
4220
+ "properties": {
4221
+ "when": {
4222
+ "format": "date-time",
4223
+ "type": "string",
4224
+ },
4225
+ },
4226
+ "required": [
4227
+ "when",
4228
+ ],
4229
+ "type": "object",
4230
+ }
4231
+ `);
4232
+ expect(() => z.toJSONSchema(z.object({ id: z.bigint() }), params)).toThrow(
4233
+ "BigInt cannot be represented in JSON Schema"
4234
+ );
4235
+ });
4236
+
4237
+ test("`throw` and `undefined` returns produce the default error", () => {
4238
+ expect(() => z.toJSONSchema(z.date(), { unrepresentable: () => "throw" })).toThrow(
4239
+ "Date cannot be represented in JSON Schema"
4240
+ );
4241
+ expect(() => z.toJSONSchema(z.date(), { unrepresentable: () => undefined })).toThrow(
4242
+ "Date cannot be represented in JSON Schema"
4243
+ );
4244
+ });
4245
+
4246
+ test("`any` return matches the string option", () => {
4247
+ expect(z.toJSONSchema(z.date(), { unrepresentable: () => "any" })).toEqual(
4248
+ z.toJSONSchema(z.date(), { unrepresentable: "any" })
4249
+ );
4250
+ });
4251
+
4252
+ test("`message` distinguishes sites that share a schema", () => {
4253
+ const seen: string[] = [];
4254
+ expect(
4255
+ z.toJSONSchema(z.literal([undefined, 1n, "a"]), {
4256
+ unrepresentable: ({ zodSchema, message }) => {
4257
+ seen.push(`${zodSchema._zod.def.type}: ${message}`);
4258
+ return "any";
4259
+ },
4260
+ })
4261
+ ).toMatchInlineSnapshot(`
4262
+ {
4263
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4264
+ "enum": [
4265
+ 1,
4266
+ "a",
4267
+ ],
4268
+ }
4269
+ `);
4270
+ // same `zodSchema`, different message -- the only way to tell the two literal sites apart
4271
+ expect(seen).toEqual([
4272
+ "literal: Literal `undefined` cannot be represented in JSON Schema",
4273
+ "literal: BigInt literals cannot be represented in JSON Schema",
4274
+ ]);
4275
+ });
4276
+
4277
+ test("errors thrown by the callback propagate", () => {
4278
+ expect(() =>
4279
+ z.toJSONSchema(z.object({ when: z.date() }), {
4280
+ unrepresentable: ({ zodSchema, path }) => {
4281
+ throw new Error(`${zodSchema._zod.def.type} at /${path.join("/")}`);
4282
+ },
4283
+ })
4284
+ ).toThrow("date at /properties/when");
4285
+ });
4286
+
4287
+ test("runs before `override`", () => {
4288
+ const order: string[] = [];
4289
+ expect(
4290
+ z.toJSONSchema(z.date(), {
4291
+ unrepresentable: () => {
4292
+ order.push("unrepresentable");
4293
+ return { type: "string" };
4294
+ },
4295
+ override: (ctx) => {
4296
+ order.push("override");
4297
+ if (ctx.jsonSchema.type === "string") ctx.jsonSchema.format = "date-time";
4298
+ },
4299
+ })
4300
+ ).toMatchInlineSnapshot(`
4301
+ {
4302
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4303
+ "format": "date-time",
4304
+ "type": "string",
4305
+ }
4306
+ `);
4307
+ expect(order).toEqual(["unrepresentable", "override"]);
4308
+ });
4309
+
4310
+ test("a returned schema replaces the whole literal", () => {
4311
+ expect(
4312
+ z.toJSONSchema(z.literal(["a", 1n]), {
4313
+ unrepresentable: () => ({ type: "string", pattern: "^\\d+$" }),
4314
+ })
4315
+ ).toMatchInlineSnapshot(`
4316
+ {
4317
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4318
+ "pattern": "^\\d+$",
4319
+ "type": "string",
4320
+ }
4321
+ `);
4322
+
4323
+ // "any" keeps the existing per-value behavior: undefined dropped, bigint coerced
4324
+ expect(z.toJSONSchema(z.literal(["a", 1n, undefined]), { unrepresentable: () => "any" })).toEqual(
4325
+ z.toJSONSchema(z.literal(["a", 1n, undefined]), { unrepresentable: "any" })
4326
+ );
4327
+ });
4328
+
4329
+ const dateToString: z.core.ToJSONSchemaParams["unrepresentable"] = ({ zodSchema }) =>
4330
+ zodSchema._zod.def.type === "date" ? { type: "string", format: "date-time" } : "throw";
4331
+
4332
+ test("emits a valid OpenAPI 3.0 schema", async () => {
4333
+ const jsonSchema = z.toJSONSchema(z.object({ start: z.date() }), {
4334
+ target: "openapi-3.0",
4335
+ unrepresentable: dateToString,
4336
+ });
4337
+ expect(jsonSchema).toMatchInlineSnapshot(`
4338
+ {
4339
+ "additionalProperties": false,
4340
+ "properties": {
4341
+ "start": {
4342
+ "format": "date-time",
4343
+ "type": "string",
4344
+ },
4345
+ },
4346
+ "required": [
4347
+ "start",
4348
+ ],
4349
+ "type": "object",
4350
+ }
4351
+ `);
4352
+ await expect(validateOpenAPI30Schema(jsonSchema)).resolves.toBe(true);
4353
+ });
4354
+
4355
+ test("the returned schema survives extraction into $defs", () => {
4356
+ const When = z.date().meta({ id: "When" });
4357
+ expect(
4358
+ z.toJSONSchema(z.object({ start: When, end: When }), { unrepresentable: dateToString })
4359
+ ).toMatchInlineSnapshot(`
4360
+ {
4361
+ "$defs": {
4362
+ "When": {
4363
+ "format": "date-time",
4364
+ "type": "string",
4365
+ },
4366
+ },
4367
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4368
+ "additionalProperties": false,
4369
+ "properties": {
4370
+ "end": {
4371
+ "$ref": "#/$defs/When",
4372
+ },
4373
+ "start": {
4374
+ "$ref": "#/$defs/When",
4375
+ },
4376
+ },
4377
+ "required": [
4378
+ "start",
4379
+ "end",
4380
+ ],
4381
+ "type": "object",
4382
+ }
4383
+ `);
4384
+ });
4385
+
4386
+ test("applies to dynamic catch values", () => {
4387
+ const schema = z.string().catch(() => {
4388
+ throw new Error("dynamic");
4389
+ });
4390
+ expect(
4391
+ z.toJSONSchema(schema, {
4392
+ unrepresentable: () => ({ default: "fallback" }),
4393
+ })
4394
+ ).toMatchInlineSnapshot(`
4395
+ {
4396
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4397
+ "default": "fallback",
4398
+ "type": "string",
4399
+ }
4400
+ `);
4401
+ });
4402
+ });
4403
+
4404
+ describe("intersection folding", () => {
4405
+ const TARGETS = ["draft-2020-12", "draft-07", "draft-04", "openapi-3.0"] as const;
4406
+ const body = (schema: z.ZodType, params?: Parameters<typeof z.toJSONSchema>[1]) => {
4407
+ const { $schema, ...rest } = z.toJSONSchema(schema, params) as Record<string, unknown>;
4408
+ return rest;
4409
+ };
4410
+
4411
+ test("two objects become one object", () => {
4412
+ expect(body(z.object({ name: z.string() }).and(z.object({ age: z.number() })))).toMatchInlineSnapshot(`
4413
+ {
4414
+ "additionalProperties": false,
4415
+ "properties": {
4416
+ "age": {
4417
+ "type": "number",
4418
+ },
4419
+ "name": {
4420
+ "type": "string",
4421
+ },
4422
+ },
4423
+ "required": [
4424
+ "name",
4425
+ "age",
4426
+ ],
4427
+ "type": "object",
4428
+ }
4429
+ `);
4430
+ });
4431
+
4432
+ test("the folded shape is identical on every target", () => {
4433
+ const schema = z.object({ name: z.string() }).and(z.object({ age: z.number() }));
4434
+ const bodies = TARGETS.map((target) => body(schema, { target }));
4435
+ for (const emitted of bodies) expect(emitted).toEqual(bodies[0]);
4436
+ });
4437
+
4438
+ test("closed only when every member is closed", () => {
4439
+ expect(body(z.strictObject({ a: z.string() }).and(z.strictObject({ b: z.number() })))).toMatchObject({
4440
+ additionalProperties: false,
4441
+ });
4442
+ // A loose member keeps the intersection open, which is what the parser does: it merges both results, so the loose side's extra keys survive.
4443
+ expect(body(z.looseObject({ a: z.string() }).and(z.object({ b: z.number() })))).not.toHaveProperty(
4444
+ "additionalProperties"
4445
+ );
4446
+ });
4447
+
4448
+ test("chained and nested intersections fold flat", () => {
4449
+ const chained = z
4450
+ .object({ a: z.string() })
4451
+ .and(z.object({ b: z.string() }))
4452
+ .and(z.object({ c: z.string() }));
4453
+ expect(body(chained)).toMatchObject({ properties: { a: {}, b: {}, c: {} }, required: ["a", "b", "c"] });
4454
+ const nested = z.object({ a: z.string() }).and(z.object({ b: z.string() }).and(z.object({ c: z.string() })));
4455
+ expect(body(nested)).toEqual(body(chained));
4456
+ });
4457
+
4458
+ test("required is the union, and an optional key stays optional", () => {
4459
+ expect(body(z.object({ a: z.string().optional() }).and(z.object({ b: z.string() })))).toMatchObject({
4460
+ properties: { a: { type: "string" }, b: { type: "string" } },
4461
+ required: ["b"],
4462
+ });
4463
+ });
4464
+
4465
+ test("a key both members declare has to satisfy both", () => {
4466
+ // identical declarations collapse
4467
+ expect(body(z.object({ k: z.string() }).and(z.object({ k: z.string() })))).toMatchObject({
4468
+ properties: { k: { type: "string" } },
4469
+ });
4470
+ // object declarations fold, matching the parser's deep merge
4471
+ expect(
4472
+ body(z.object({ k: z.object({ a: z.string() }) }).and(z.object({ k: z.object({ b: z.string() }) })))
4473
+ ).toMatchObject({
4474
+ properties: { k: { type: "object", properties: { a: {}, b: {} }, required: ["a", "b"] } },
4475
+ });
4476
+ // anything else stays an intersection one level down
4477
+ expect(body(z.object({ k: z.string() }).and(z.object({ k: z.number() })))).toMatchObject({
4478
+ properties: { k: { allOf: [{ type: "string" }, { type: "number" }] } },
4479
+ });
4480
+ });
4481
+
4482
+ test("an intersection distributes over a union", () => {
4483
+ const schema = z
4484
+ .object({ name: z.string() })
4485
+ .and(
4486
+ z.discriminatedUnion("type", [
4487
+ z.object({ type: z.literal("a"), value: z.string() }),
4488
+ z.object({ type: z.literal("b"), count: z.number() }),
4489
+ ])
4490
+ );
4491
+ expect(body(schema)).toMatchObject({
4492
+ oneOf: [
4493
+ { type: "object", properties: { name: {}, type: {}, value: {} }, additionalProperties: false },
4494
+ { type: "object", properties: { name: {}, type: {}, count: {} }, additionalProperties: false },
4495
+ ],
4496
+ });
4497
+ const inclusive = z
4498
+ .object({ name: z.string() })
4499
+ .and(z.union([z.object({ v: z.string() }), z.object({ c: z.number() })]));
4500
+ expect(body(inclusive)).toMatchObject({
4501
+ anyOf: [{ properties: { name: {}, v: {} } }, { properties: { name: {}, c: {} } }],
4502
+ });
4503
+ });
4504
+
4505
+ test("input conversion has nothing to close", () => {
4506
+ expect(body(z.object({ a: z.string() }).and(z.object({ b: z.string() })), { io: "input" })).toEqual({
4507
+ type: "object",
4508
+ properties: { a: { type: "string" }, b: { type: "string" } },
4509
+ required: ["a", "b"],
4510
+ });
4511
+ });
4512
+
4513
+ test("folds through a property and through z.lazy", () => {
4514
+ expect(body(z.object({ inner: z.object({ a: z.string() }).and(z.object({ b: z.string() })) }))).toMatchObject({
4515
+ properties: { inner: { type: "object", properties: { a: {}, b: {} } } },
4516
+ });
4517
+ const self: z.ZodType = z.lazy(() => z.object({ a: z.string() }).and(z.object({ next: z.optional(self) })));
4518
+ expect(body(self)).toMatchObject({ type: "object", properties: { a: {}, next: { $ref: "#" } } });
4519
+ });
4520
+
4521
+ test("metadata on the intersection itself survives", () => {
4522
+ expect(
4523
+ body(
4524
+ z
4525
+ .object({ a: z.string() })
4526
+ .and(z.object({ b: z.string() }))
4527
+ .meta({ title: "T" })
4528
+ )
4529
+ ).toMatchObject({
4530
+ title: "T",
4531
+ type: "object",
4532
+ properties: { a: {}, b: {} },
4533
+ });
4534
+ });
4535
+
4536
+ test("a catchall constrains the sibling's keys too", () => {
4537
+ // The catchall member does not declare `b`, so its `additionalProperties` is what it demands of `b`. Folding `b` into `properties` has to carry that demand across, or the key would escape it.
4538
+ const schema = z
4539
+ .object({ a: z.string() })
4540
+ .catchall(z.number())
4541
+ .and(z.object({ b: z.string() }));
4542
+ expect(body(schema)).toEqual({
4543
+ type: "object",
4544
+ properties: { a: { type: "string" }, b: { allOf: [{ type: "number" }, { type: "string" }] } },
4545
+ required: ["a", "b"],
4546
+ additionalProperties: { type: "number" },
4547
+ });
4548
+ });
4549
+
4550
+ test("two catchalls both constrain the keys neither declares", () => {
4551
+ const schema = z
4552
+ .object({})
4553
+ .catchall(z.number())
4554
+ .and(z.object({}).catchall(z.number().min(0)));
4555
+ expect(body(schema)).toEqual({
4556
+ type: "object",
4557
+ properties: {},
4558
+ additionalProperties: { allOf: [{ type: "number" }, { type: "number", minimum: 0 }] },
4559
+ });
4560
+ expect(schema.safeParse({ zz: 5 }).success).toBe(true);
4561
+ expect(schema.safeParse({ zz: -1 }).success).toBe(false);
4562
+ });
4563
+
4564
+ test("the emitted openness agrees with the parser for every pair of object modes", () => {
4565
+ const modes = {
4566
+ strip: (shape: z.ZodRawShape) => z.object(shape),
4567
+ strict: (shape: z.ZodRawShape) => z.strictObject(shape),
4568
+ loose: (shape: z.ZodRawShape) => z.looseObject(shape),
4569
+ catchall: (shape: z.ZodRawShape) => z.object(shape).catchall(z.number()),
4570
+ };
4571
+ const grid: Record<string, unknown> = {};
4572
+ for (const [leftName, left] of Object.entries(modes)) {
4573
+ for (const [rightName, right] of Object.entries(modes)) {
4574
+ const schema = left({ a: z.string() }).and(right({ b: z.number() }));
4575
+ const emitted = body(schema) as { additionalProperties?: unknown };
4576
+ grid[`${leftName} & ${rightName}`] = emitted.additionalProperties ?? "open";
4577
+
4578
+ // Whatever the emitted keyword says, it has to agree with what the parser does with a key neither member declares.
4579
+ const parsed = schema.safeParse({ a: "s", b: 1, zz: 7 });
4580
+ const keepsUnknown = parsed.success && Object.prototype.hasOwnProperty.call(parsed.data, "zz");
4581
+ if (keepsUnknown) expect(emitted.additionalProperties).not.toBe(false);
4582
+ }
4583
+ }
4584
+ expect(grid).toMatchInlineSnapshot(`
4585
+ {
4586
+ "catchall & catchall": {
4587
+ "type": "number",
4588
+ },
4589
+ "catchall & loose": {
4590
+ "type": "number",
4591
+ },
4592
+ "catchall & strict": {
4593
+ "type": "number",
4594
+ },
4595
+ "catchall & strip": {
4596
+ "type": "number",
4597
+ },
4598
+ "loose & catchall": {
4599
+ "type": "number",
4600
+ },
4601
+ "loose & loose": "open",
4602
+ "loose & strict": "open",
4603
+ "loose & strip": "open",
4604
+ "strict & catchall": {
4605
+ "type": "number",
4606
+ },
4607
+ "strict & loose": "open",
4608
+ "strict & strict": false,
4609
+ "strict & strip": false,
4610
+ "strip & catchall": {
4611
+ "type": "number",
4612
+ },
4613
+ "strip & loose": "open",
4614
+ "strip & strict": false,
4615
+ "strip & strip": false,
4616
+ }
4617
+ `);
4618
+ });
4619
+
4620
+ test("a __proto__ key stays an own property", () => {
4621
+ const folded = body(z.object({ ["__proto__"]: z.string() }).and(z.object({ b: z.number() }))) as any;
4622
+ expect(Object.prototype.hasOwnProperty.call(folded.properties, "__proto__")).toBe(true);
4623
+ expect(folded.required).toEqual(["__proto__", "b"]);
4624
+ });
4625
+ });
4626
+
4627
+ describe("intersection folding declines", () => {
4628
+ // Every case here keeps the `allOf` it produces today. The fold only understands the four object keywords, so a member carrying anything else is left alone rather than having a constraint dropped or an annotation re-scoped.
4629
+ const allOf = (schema: z.ZodType, params?: Parameters<typeof z.toJSONSchema>[1]) =>
4630
+ (z.toJSONSchema(schema, params) as any).allOf;
4631
+
4632
+ test("a member that is a reference keeps its reference", () => {
4633
+ const named = z.object({ a: z.string() }).meta({ id: "Named" });
4634
+ expect(allOf(named.and(z.object({ b: z.string() })))[0]).toEqual({ $ref: "#/$defs/Named" });
4635
+
4636
+ const shared = z.object({ c: z.string() });
4637
+ const reused = z.toJSONSchema(z.object({ x: shared.and(z.object({ d: z.string() })), y: shared }), {
4638
+ reused: "ref",
4639
+ }) as any;
4640
+ expect(reused.properties.x.allOf[0]).toEqual({ $ref: "#/$defs/__schema0" });
4641
+
4642
+ const cyclic: any = z.object({
4643
+ get next() {
4644
+ return z.optional(cyclic);
4645
+ },
4646
+ n: z.string(),
4647
+ });
4648
+ expect(allOf(cyclic.and(z.object({ m: z.string() })))[0].$ref).toBe("#/$defs/__schema0");
4649
+ });
4650
+
4651
+ test("an annotated member keeps its place", () => {
4652
+ expect(
4653
+ allOf(
4654
+ z
4655
+ .object({ a: z.string() })
4656
+ .describe("A")
4657
+ .and(z.object({ b: z.string() }))
4658
+ )[0]
4659
+ ).toMatchObject({
4660
+ description: "A",
4661
+ });
4662
+ });
4663
+
4664
+ test("members that are not plain objects are left alone", () => {
4665
+ expect(allOf(z.intersection(z.string().min(2), z.string().max(5)))).toHaveLength(2);
4666
+ expect(allOf(z.object({ a: z.string() }).and(z.nullable(z.object({ b: z.string() }))))).toHaveLength(2);
4667
+ expect(
4668
+ allOf(z.object({ label: z.string() }).and(z.looseRecord(z.string().regex(/^label:[a-z]{2}$/), z.string())))
4669
+ ).toHaveLength(2);
4670
+ });
4671
+
4672
+ test("a shared member is never rewritten for its other uses", () => {
4673
+ const shared = z.object({ c: z.string() });
4674
+ const result = z.toJSONSchema(z.object({ x: shared.and(z.object({ d: z.string() })), y: shared })) as any;
4675
+ expect(result.properties.x).toMatchObject({ properties: { c: {}, d: {} }, additionalProperties: false });
4676
+ // `y` is the same Zod schema, emitted separately, and keeps the closedness it had on its own.
4677
+ expect(result.properties.y).toEqual({
4678
+ type: "object",
4679
+ properties: { c: { type: "string" } },
4680
+ required: ["c"],
4681
+ additionalProperties: false,
4682
+ });
4683
+ });
4684
+
4685
+ test("registry conversion keeps its cross-references", () => {
4686
+ const registry = z.registry<{ id: string }>();
4687
+ const left = z.object({ p: z.string() });
4688
+ const right = z.object({ q: z.string() });
4689
+ registry.add(left, { id: "P" });
4690
+ registry.add(right, { id: "Q" });
4691
+ registry.add(left.and(right), { id: "PQ" });
4692
+ expect((z.toJSONSchema(registry) as any).schemas.PQ.allOf).toEqual([{ $ref: "P" }, { $ref: "Q" }]);
4693
+ });
4694
+
4695
+ test("override still runs, and sees the intersection before it folds", () => {
4696
+ const schema = z.object({ a: z.string() }).and(z.object({ b: z.string() }));
4697
+ const result = z.toJSONSchema(schema, {
4698
+ override(ctx) {
4699
+ if ((ctx.jsonSchema as any).allOf) (ctx.jsonSchema as any).title = "intersection";
4700
+ },
4701
+ }) as any;
4702
+ expect(result).toMatchObject({ title: "intersection", type: "object", properties: { a: {}, b: {} } });
4703
+ });
4704
+
4705
+ test("an override that writes object keywords wins over the fold", () => {
4706
+ // The override runs first, so anything it puts on the intersection is deliberate. Folding would overwrite it silently, so the fold stands down instead.
4707
+ const result = z.toJSONSchema(z.object({ a: z.string() }).and(z.object({ b: z.string() })), {
4708
+ override(ctx) {
4709
+ if ((ctx.jsonSchema as any).allOf) (ctx.jsonSchema as any).additionalProperties = true;
4710
+ },
4711
+ }) as any;
4712
+ expect(result.additionalProperties).toBe(true);
4713
+ expect(result.allOf).toHaveLength(2);
4714
+ });
4715
+
4716
+ test("more than one union member is left alone rather than multiplied out", () => {
4717
+ // The second union lands among the members the first is distributed across, and a union is not an object, so every branch fails to fold and the whole intersection stands down.
4718
+ const schema = z
4719
+ .object({ a: z.string() })
4720
+ .and(z.union([z.object({ v: z.string() }), z.object({ w: z.string() })]))
4721
+ .and(z.union([z.object({ x: z.string() }), z.object({ y: z.string() })]));
4722
+ expect(allOf(schema)).toHaveLength(3);
4723
+ });
4724
+ });
4725
+
4726
+ test("currency code", () => {
4727
+ expect(z.toJSONSchema(z.currencyCode())).toEqual({
4728
+ $schema: "https://json-schema.org/draft/2020-12/schema",
4729
+ type: "string",
4730
+ format: "currency_code",
4731
+ pattern: z.regexes.currencyCode.source,
4732
+ });
4733
+ });