zod-compiler 1.23.0 → 1.23.2

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 (494) hide show
  1. package/README.md +9 -6
  2. package/dist/cli/commands/check.d.ts +10 -7
  3. package/dist/cli/commands/check.d.ts.map +1 -1
  4. package/dist/cli/commands/check.js +125 -148
  5. package/dist/cli/commands/check.js.map +1 -1
  6. package/dist/cli/commands/generate.d.ts +22 -19
  7. package/dist/cli/commands/generate.d.ts.map +1 -1
  8. package/dist/cli/commands/generate.js +102 -133
  9. package/dist/cli/commands/generate.js.map +1 -1
  10. package/dist/cli/commands/watch.d.ts +17 -15
  11. package/dist/cli/commands/watch.d.ts.map +1 -1
  12. package/dist/cli/commands/watch.js +126 -154
  13. package/dist/cli/commands/watch.js.map +1 -1
  14. package/dist/cli/emitter.d.ts +19 -16
  15. package/dist/cli/emitter.d.ts.map +1 -1
  16. package/dist/cli/emitter.js +55 -71
  17. package/dist/cli/emitter.js.map +1 -1
  18. package/dist/cli/errors.d.ts +4 -1
  19. package/dist/cli/errors.d.ts.map +1 -1
  20. package/dist/cli/errors.js +6 -2
  21. package/dist/cli/errors.js.map +1 -1
  22. package/dist/cli/index.d.ts +1 -3
  23. package/dist/cli/index.js +147 -160
  24. package/dist/cli/index.js.map +1 -1
  25. package/dist/cli/logger.d.ts +18 -15
  26. package/dist/cli/logger.d.ts.map +1 -1
  27. package/dist/cli/logger.js +38 -37
  28. package/dist/cli/logger.js.map +1 -1
  29. package/dist/core/codegen/build-path.d.ts +7 -41
  30. package/dist/core/codegen/build-path.d.ts.map +1 -1
  31. package/dist/core/codegen/build-path.js +481 -570
  32. package/dist/core/codegen/build-path.js.map +1 -1
  33. package/dist/core/codegen/context.d.ts +256 -253
  34. package/dist/core/codegen/context.d.ts.map +1 -1
  35. package/dist/core/codegen/context.js +363 -437
  36. package/dist/core/codegen/context.js.map +1 -1
  37. package/dist/core/codegen/dedupe.d.ts +22 -56
  38. package/dist/core/codegen/dedupe.d.ts.map +1 -1
  39. package/dist/core/codegen/dedupe.js +150 -242
  40. package/dist/core/codegen/dedupe.js.map +1 -1
  41. package/dist/core/codegen/emit-issue.d.ts +44 -68
  42. package/dist/core/codegen/emit-issue.d.ts.map +1 -1
  43. package/dist/core/codegen/emit-issue.js +76 -108
  44. package/dist/core/codegen/emit-issue.js.map +1 -1
  45. package/dist/core/codegen/emit.d.ts +4 -1
  46. package/dist/core/codegen/emit.d.ts.map +1 -1
  47. package/dist/core/codegen/emit.js +16 -13
  48. package/dist/core/codegen/emit.js.map +1 -1
  49. package/dist/core/codegen/fast-path.d.ts +7 -12
  50. package/dist/core/codegen/fast-path.d.ts.map +1 -1
  51. package/dist/core/codegen/fast-path.js +116 -145
  52. package/dist/core/codegen/fast-path.js.map +1 -1
  53. package/dist/core/codegen/fast-size.d.ts +12 -26
  54. package/dist/core/codegen/fast-size.d.ts.map +1 -1
  55. package/dist/core/codegen/fast-size.js +169 -244
  56. package/dist/core/codegen/fast-size.js.map +1 -1
  57. package/dist/core/codegen/index.d.ts +25 -23
  58. package/dist/core/codegen/index.d.ts.map +1 -1
  59. package/dist/core/codegen/index.js +239 -405
  60. package/dist/core/codegen/index.js.map +1 -1
  61. package/dist/core/codegen/issue-decls.d.ts +15 -12
  62. package/dist/core/codegen/issue-decls.d.ts.map +1 -1
  63. package/dist/core/codegen/issue-decls.js +131 -162
  64. package/dist/core/codegen/issue-decls.js.map +1 -1
  65. package/dist/core/codegen/regex-unroll.d.ts +4 -1
  66. package/dist/core/codegen/regex-unroll.d.ts.map +1 -1
  67. package/dist/core/codegen/regex-unroll.js +173 -197
  68. package/dist/core/codegen/regex-unroll.js.map +1 -1
  69. package/dist/core/codegen/schemas/any.d.ts +7 -4
  70. package/dist/core/codegen/schemas/any.d.ts.map +1 -1
  71. package/dist/core/codegen/schemas/any.js +8 -4
  72. package/dist/core/codegen/schemas/any.js.map +1 -1
  73. package/dist/core/codegen/schemas/array.d.ts +8 -5
  74. package/dist/core/codegen/schemas/array.d.ts.map +1 -1
  75. package/dist/core/codegen/schemas/array.js +77 -95
  76. package/dist/core/codegen/schemas/array.js.map +1 -1
  77. package/dist/core/codegen/schemas/bigint.d.ts +7 -4
  78. package/dist/core/codegen/schemas/bigint.d.ts.map +1 -1
  79. package/dist/core/codegen/schemas/bigint.js +44 -56
  80. package/dist/core/codegen/schemas/bigint.js.map +1 -1
  81. package/dist/core/codegen/schemas/boolean.d.ts +7 -4
  82. package/dist/core/codegen/schemas/boolean.d.ts.map +1 -1
  83. package/dist/core/codegen/schemas/boolean.js +12 -11
  84. package/dist/core/codegen/schemas/boolean.js.map +1 -1
  85. package/dist/core/codegen/schemas/catch.d.ts +8 -5
  86. package/dist/core/codegen/schemas/catch.d.ts.map +1 -1
  87. package/dist/core/codegen/schemas/catch.js +23 -23
  88. package/dist/core/codegen/schemas/catch.js.map +1 -1
  89. package/dist/core/codegen/schemas/date.d.ts +7 -4
  90. package/dist/core/codegen/schemas/date.d.ts.map +1 -1
  91. package/dist/core/codegen/schemas/date.js +49 -68
  92. package/dist/core/codegen/schemas/date.js.map +1 -1
  93. package/dist/core/codegen/schemas/default.d.ts +9 -6
  94. package/dist/core/codegen/schemas/default.d.ts.map +1 -1
  95. package/dist/core/codegen/schemas/default.js +29 -27
  96. package/dist/core/codegen/schemas/default.js.map +1 -1
  97. package/dist/core/codegen/schemas/discriminated-union.d.ts +12 -10
  98. package/dist/core/codegen/schemas/discriminated-union.d.ts.map +1 -1
  99. package/dist/core/codegen/schemas/discriminated-union.js +153 -178
  100. package/dist/core/codegen/schemas/discriminated-union.js.map +1 -1
  101. package/dist/core/codegen/schemas/effect.d.ts +9 -6
  102. package/dist/core/codegen/schemas/effect.d.ts.map +1 -1
  103. package/dist/core/codegen/schemas/effect.js +54 -67
  104. package/dist/core/codegen/schemas/effect.js.map +1 -1
  105. package/dist/core/codegen/schemas/enum.d.ts +7 -4
  106. package/dist/core/codegen/schemas/enum.d.ts.map +1 -1
  107. package/dist/core/codegen/schemas/enum.js +15 -21
  108. package/dist/core/codegen/schemas/enum.js.map +1 -1
  109. package/dist/core/codegen/schemas/fallback.d.ts +6 -3
  110. package/dist/core/codegen/schemas/fallback.d.ts.map +1 -1
  111. package/dist/core/codegen/schemas/fallback.js +14 -13
  112. package/dist/core/codegen/schemas/fallback.js.map +1 -1
  113. package/dist/core/codegen/schemas/file.d.ts +7 -4
  114. package/dist/core/codegen/schemas/file.d.ts.map +1 -1
  115. package/dist/core/codegen/schemas/file.js +51 -57
  116. package/dist/core/codegen/schemas/file.js.map +1 -1
  117. package/dist/core/codegen/schemas/intersection.d.ts +8 -5
  118. package/dist/core/codegen/schemas/intersection.d.ts.map +1 -1
  119. package/dist/core/codegen/schemas/intersection.js +16 -13
  120. package/dist/core/codegen/schemas/intersection.js.map +1 -1
  121. package/dist/core/codegen/schemas/literal.d.ts +7 -4
  122. package/dist/core/codegen/schemas/literal.d.ts.map +1 -1
  123. package/dist/core/codegen/schemas/literal.js +20 -23
  124. package/dist/core/codegen/schemas/literal.js.map +1 -1
  125. package/dist/core/codegen/schemas/map.d.ts +8 -5
  126. package/dist/core/codegen/schemas/map.d.ts.map +1 -1
  127. package/dist/core/codegen/schemas/map.js +61 -67
  128. package/dist/core/codegen/schemas/map.js.map +1 -1
  129. package/dist/core/codegen/schemas/nan.d.ts +7 -4
  130. package/dist/core/codegen/schemas/nan.d.ts.map +1 -1
  131. package/dist/core/codegen/schemas/nan.js +8 -4
  132. package/dist/core/codegen/schemas/nan.js.map +1 -1
  133. package/dist/core/codegen/schemas/never.d.ts +7 -4
  134. package/dist/core/codegen/schemas/never.d.ts.map +1 -1
  135. package/dist/core/codegen/schemas/never.js +8 -4
  136. package/dist/core/codegen/schemas/never.js.map +1 -1
  137. package/dist/core/codegen/schemas/null.d.ts +7 -4
  138. package/dist/core/codegen/schemas/null.d.ts.map +1 -1
  139. package/dist/core/codegen/schemas/null.js +8 -4
  140. package/dist/core/codegen/schemas/null.js.map +1 -1
  141. package/dist/core/codegen/schemas/nullable.d.ts +8 -5
  142. package/dist/core/codegen/schemas/nullable.d.ts.map +1 -1
  143. package/dist/core/codegen/schemas/nullable.js +8 -5
  144. package/dist/core/codegen/schemas/nullable.js.map +1 -1
  145. package/dist/core/codegen/schemas/number.d.ts +7 -4
  146. package/dist/core/codegen/schemas/number.d.ts.map +1 -1
  147. package/dist/core/codegen/schemas/number.js +120 -176
  148. package/dist/core/codegen/schemas/number.js.map +1 -1
  149. package/dist/core/codegen/schemas/object.d.ts +8 -5
  150. package/dist/core/codegen/schemas/object.d.ts.map +1 -1
  151. package/dist/core/codegen/schemas/object.js +144 -231
  152. package/dist/core/codegen/schemas/object.js.map +1 -1
  153. package/dist/core/codegen/schemas/optional.d.ts +9 -6
  154. package/dist/core/codegen/schemas/optional.d.ts.map +1 -1
  155. package/dist/core/codegen/schemas/optional.js +23 -31
  156. package/dist/core/codegen/schemas/optional.js.map +1 -1
  157. package/dist/core/codegen/schemas/pipe.d.ts +8 -5
  158. package/dist/core/codegen/schemas/pipe.d.ts.map +1 -1
  159. package/dist/core/codegen/schemas/pipe.js +20 -27
  160. package/dist/core/codegen/schemas/pipe.js.map +1 -1
  161. package/dist/core/codegen/schemas/readonly.d.ts +8 -5
  162. package/dist/core/codegen/schemas/readonly.d.ts.map +1 -1
  163. package/dist/core/codegen/schemas/readonly.js +8 -5
  164. package/dist/core/codegen/schemas/readonly.js.map +1 -1
  165. package/dist/core/codegen/schemas/record.d.ts +8 -5
  166. package/dist/core/codegen/schemas/record.d.ts.map +1 -1
  167. package/dist/core/codegen/schemas/record.js +52 -65
  168. package/dist/core/codegen/schemas/record.js.map +1 -1
  169. package/dist/core/codegen/schemas/recursive-ref.d.ts +9 -6
  170. package/dist/core/codegen/schemas/recursive-ref.d.ts.map +1 -1
  171. package/dist/core/codegen/schemas/recursive-ref.js +44 -44
  172. package/dist/core/codegen/schemas/recursive-ref.js.map +1 -1
  173. package/dist/core/codegen/schemas/set.d.ts +8 -5
  174. package/dist/core/codegen/schemas/set.d.ts.map +1 -1
  175. package/dist/core/codegen/schemas/set.js +61 -73
  176. package/dist/core/codegen/schemas/set.js.map +1 -1
  177. package/dist/core/codegen/schemas/string-bool.d.ts +6 -3
  178. package/dist/core/codegen/schemas/string-bool.d.ts.map +1 -1
  179. package/dist/core/codegen/schemas/string-bool.js +22 -23
  180. package/dist/core/codegen/schemas/string-bool.js.map +1 -1
  181. package/dist/core/codegen/schemas/string.d.ts +8 -5
  182. package/dist/core/codegen/schemas/string.d.ts.map +1 -1
  183. package/dist/core/codegen/schemas/string.js +168 -207
  184. package/dist/core/codegen/schemas/string.js.map +1 -1
  185. package/dist/core/codegen/schemas/symbol.d.ts +7 -4
  186. package/dist/core/codegen/schemas/symbol.d.ts.map +1 -1
  187. package/dist/core/codegen/schemas/symbol.js +8 -4
  188. package/dist/core/codegen/schemas/symbol.js.map +1 -1
  189. package/dist/core/codegen/schemas/template-literal.d.ts +7 -4
  190. package/dist/core/codegen/schemas/template-literal.d.ts.map +1 -1
  191. package/dist/core/codegen/schemas/template-literal.js +12 -13
  192. package/dist/core/codegen/schemas/template-literal.js.map +1 -1
  193. package/dist/core/codegen/schemas/tuple.d.ts +8 -5
  194. package/dist/core/codegen/schemas/tuple.d.ts.map +1 -1
  195. package/dist/core/codegen/schemas/tuple.js +84 -94
  196. package/dist/core/codegen/schemas/tuple.js.map +1 -1
  197. package/dist/core/codegen/schemas/undefined.d.ts +7 -4
  198. package/dist/core/codegen/schemas/undefined.d.ts.map +1 -1
  199. package/dist/core/codegen/schemas/undefined.js +8 -4
  200. package/dist/core/codegen/schemas/undefined.js.map +1 -1
  201. package/dist/core/codegen/schemas/union.d.ts +8 -5
  202. package/dist/core/codegen/schemas/union.d.ts.map +1 -1
  203. package/dist/core/codegen/schemas/union.js +49 -69
  204. package/dist/core/codegen/schemas/union.js.map +1 -1
  205. package/dist/core/codegen/schemas/unknown.d.ts +7 -4
  206. package/dist/core/codegen/schemas/unknown.d.ts.map +1 -1
  207. package/dist/core/codegen/schemas/unknown.js +8 -4
  208. package/dist/core/codegen/schemas/unknown.js.map +1 -1
  209. package/dist/core/codegen/schemas/void.d.ts +7 -4
  210. package/dist/core/codegen/schemas/void.d.ts.map +1 -1
  211. package/dist/core/codegen/schemas/void.js +8 -4
  212. package/dist/core/codegen/schemas/void.js.map +1 -1
  213. package/dist/core/codegen/slow-path.d.ts +7 -4
  214. package/dist/core/codegen/slow-path.d.ts.map +1 -1
  215. package/dist/core/codegen/slow-path.js +71 -96
  216. package/dist/core/codegen/slow-path.js.map +1 -1
  217. package/dist/core/codegen/well-known-regex.d.ts +22 -19
  218. package/dist/core/codegen/well-known-regex.d.ts.map +1 -1
  219. package/dist/core/codegen/well-known-regex.js +127 -96
  220. package/dist/core/codegen/well-known-regex.js.map +1 -1
  221. package/dist/core/compile.d.ts +7 -4
  222. package/dist/core/compile.d.ts.map +1 -1
  223. package/dist/core/compile.js +48 -48
  224. package/dist/core/compile.js.map +1 -1
  225. package/dist/core/diagnostic.d.ts +38 -39
  226. package/dist/core/diagnostic.d.ts.map +1 -1
  227. package/dist/core/diagnostic.js +140 -164
  228. package/dist/core/diagnostic.js.map +1 -1
  229. package/dist/core/extract/checks.d.ts +18 -15
  230. package/dist/core/extract/checks.d.ts.map +1 -1
  231. package/dist/core/extract/checks.js +318 -311
  232. package/dist/core/extract/checks.js.map +1 -1
  233. package/dist/core/extract/effects.d.ts +13 -10
  234. package/dist/core/extract/effects.d.ts.map +1 -1
  235. package/dist/core/extract/effects.js +153 -222
  236. package/dist/core/extract/effects.js.map +1 -1
  237. package/dist/core/extract/extractors/any.d.ts +5 -2
  238. package/dist/core/extract/extractors/any.d.ts.map +1 -1
  239. package/dist/core/extract/extractors/any.js +5 -1
  240. package/dist/core/extract/extractors/any.js.map +1 -1
  241. package/dist/core/extract/extractors/array.d.ts +6 -3
  242. package/dist/core/extract/extractors/array.d.ts.map +1 -1
  243. package/dist/core/extract/extractors/array.js +25 -20
  244. package/dist/core/extract/extractors/array.js.map +1 -1
  245. package/dist/core/extract/extractors/bigint.d.ts +6 -3
  246. package/dist/core/extract/extractors/bigint.d.ts.map +1 -1
  247. package/dist/core/extract/extractors/bigint.js +66 -64
  248. package/dist/core/extract/extractors/bigint.js.map +1 -1
  249. package/dist/core/extract/extractors/boolean.d.ts +5 -2
  250. package/dist/core/extract/extractors/boolean.d.ts.map +1 -1
  251. package/dist/core/extract/extractors/boolean.js +7 -3
  252. package/dist/core/extract/extractors/boolean.js.map +1 -1
  253. package/dist/core/extract/extractors/catch.d.ts +6 -3
  254. package/dist/core/extract/extractors/catch.d.ts.map +1 -1
  255. package/dist/core/extract/extractors/catch.js +26 -17
  256. package/dist/core/extract/extractors/catch.js.map +1 -1
  257. package/dist/core/extract/extractors/date.d.ts +6 -3
  258. package/dist/core/extract/extractors/date.d.ts.map +1 -1
  259. package/dist/core/extract/extractors/date.js +42 -46
  260. package/dist/core/extract/extractors/date.js.map +1 -1
  261. package/dist/core/extract/extractors/default.d.ts +6 -3
  262. package/dist/core/extract/extractors/default.d.ts.map +1 -1
  263. package/dist/core/extract/extractors/default.js +20 -14
  264. package/dist/core/extract/extractors/default.js.map +1 -1
  265. package/dist/core/extract/extractors/enum.d.ts +5 -2
  266. package/dist/core/extract/extractors/enum.d.ts.map +1 -1
  267. package/dist/core/extract/extractors/enum.js +12 -13
  268. package/dist/core/extract/extractors/enum.js.map +1 -1
  269. package/dist/core/extract/extractors/file.d.ts +6 -3
  270. package/dist/core/extract/extractors/file.d.ts.map +1 -1
  271. package/dist/core/extract/extractors/file.js +34 -28
  272. package/dist/core/extract/extractors/file.js.map +1 -1
  273. package/dist/core/extract/extractors/intersection.d.ts +5 -2
  274. package/dist/core/extract/extractors/intersection.d.ts.map +1 -1
  275. package/dist/core/extract/extractors/intersection.js +13 -11
  276. package/dist/core/extract/extractors/intersection.js.map +1 -1
  277. package/dist/core/extract/extractors/lazy.d.ts +6 -3
  278. package/dist/core/extract/extractors/lazy.d.ts.map +1 -1
  279. package/dist/core/extract/extractors/lazy.js +21 -30
  280. package/dist/core/extract/extractors/lazy.js.map +1 -1
  281. package/dist/core/extract/extractors/literal.d.ts +5 -2
  282. package/dist/core/extract/extractors/literal.d.ts.map +1 -1
  283. package/dist/core/extract/extractors/literal.js +8 -1
  284. package/dist/core/extract/extractors/literal.js.map +1 -1
  285. package/dist/core/extract/extractors/map.d.ts +6 -3
  286. package/dist/core/extract/extractors/map.d.ts.map +1 -1
  287. package/dist/core/extract/extractors/map.js +10 -4
  288. package/dist/core/extract/extractors/map.js.map +1 -1
  289. package/dist/core/extract/extractors/nan.d.ts +5 -2
  290. package/dist/core/extract/extractors/nan.d.ts.map +1 -1
  291. package/dist/core/extract/extractors/nan.js +5 -1
  292. package/dist/core/extract/extractors/nan.js.map +1 -1
  293. package/dist/core/extract/extractors/never.d.ts +5 -2
  294. package/dist/core/extract/extractors/never.d.ts.map +1 -1
  295. package/dist/core/extract/extractors/never.js +5 -1
  296. package/dist/core/extract/extractors/never.js.map +1 -1
  297. package/dist/core/extract/extractors/null.d.ts +5 -2
  298. package/dist/core/extract/extractors/null.d.ts.map +1 -1
  299. package/dist/core/extract/extractors/null.js +5 -1
  300. package/dist/core/extract/extractors/null.js.map +1 -1
  301. package/dist/core/extract/extractors/nullable.d.ts +5 -2
  302. package/dist/core/extract/extractors/nullable.d.ts.map +1 -1
  303. package/dist/core/extract/extractors/nullable.js +7 -3
  304. package/dist/core/extract/extractors/nullable.js.map +1 -1
  305. package/dist/core/extract/extractors/number.d.ts +6 -3
  306. package/dist/core/extract/extractors/number.d.ts.map +1 -1
  307. package/dist/core/extract/extractors/number.js +35 -35
  308. package/dist/core/extract/extractors/number.js.map +1 -1
  309. package/dist/core/extract/extractors/object.d.ts +6 -3
  310. package/dist/core/extract/extractors/object.d.ts.map +1 -1
  311. package/dist/core/extract/extractors/object.js +49 -76
  312. package/dist/core/extract/extractors/object.js.map +1 -1
  313. package/dist/core/extract/extractors/optional.d.ts +5 -2
  314. package/dist/core/extract/extractors/optional.d.ts.map +1 -1
  315. package/dist/core/extract/extractors/optional.js +10 -12
  316. package/dist/core/extract/extractors/optional.js.map +1 -1
  317. package/dist/core/extract/extractors/pipe.d.ts +6 -3
  318. package/dist/core/extract/extractors/pipe.d.ts.map +1 -1
  319. package/dist/core/extract/extractors/pipe.js +40 -41
  320. package/dist/core/extract/extractors/pipe.js.map +1 -1
  321. package/dist/core/extract/extractors/readonly.d.ts +5 -2
  322. package/dist/core/extract/extractors/readonly.d.ts.map +1 -1
  323. package/dist/core/extract/extractors/readonly.js +10 -6
  324. package/dist/core/extract/extractors/readonly.js.map +1 -1
  325. package/dist/core/extract/extractors/record.d.ts +6 -3
  326. package/dist/core/extract/extractors/record.d.ts.map +1 -1
  327. package/dist/core/extract/extractors/record.js +24 -35
  328. package/dist/core/extract/extractors/record.js.map +1 -1
  329. package/dist/core/extract/extractors/set.d.ts +6 -3
  330. package/dist/core/extract/extractors/set.d.ts.map +1 -1
  331. package/dist/core/extract/extractors/set.js +36 -30
  332. package/dist/core/extract/extractors/set.js.map +1 -1
  333. package/dist/core/extract/extractors/string-bool.d.ts +7 -4
  334. package/dist/core/extract/extractors/string-bool.d.ts.map +1 -1
  335. package/dist/core/extract/extractors/string-bool.js +66 -84
  336. package/dist/core/extract/extractors/string-bool.js.map +1 -1
  337. package/dist/core/extract/extractors/string.d.ts +6 -3
  338. package/dist/core/extract/extractors/string.d.ts.map +1 -1
  339. package/dist/core/extract/extractors/string.js +34 -37
  340. package/dist/core/extract/extractors/string.js.map +1 -1
  341. package/dist/core/extract/extractors/symbol.d.ts +5 -2
  342. package/dist/core/extract/extractors/symbol.d.ts.map +1 -1
  343. package/dist/core/extract/extractors/symbol.js +5 -1
  344. package/dist/core/extract/extractors/symbol.js.map +1 -1
  345. package/dist/core/extract/extractors/template-literal.d.ts +6 -3
  346. package/dist/core/extract/extractors/template-literal.d.ts.map +1 -1
  347. package/dist/core/extract/extractors/template-literal.js +11 -6
  348. package/dist/core/extract/extractors/template-literal.js.map +1 -1
  349. package/dist/core/extract/extractors/tuple.d.ts +6 -3
  350. package/dist/core/extract/extractors/tuple.d.ts.map +1 -1
  351. package/dist/core/extract/extractors/tuple.js +10 -4
  352. package/dist/core/extract/extractors/tuple.js.map +1 -1
  353. package/dist/core/extract/extractors/undefined.d.ts +5 -2
  354. package/dist/core/extract/extractors/undefined.d.ts.map +1 -1
  355. package/dist/core/extract/extractors/undefined.js +5 -1
  356. package/dist/core/extract/extractors/undefined.js.map +1 -1
  357. package/dist/core/extract/extractors/union.d.ts +6 -3
  358. package/dist/core/extract/extractors/union.d.ts.map +1 -1
  359. package/dist/core/extract/extractors/union.js +38 -64
  360. package/dist/core/extract/extractors/union.js.map +1 -1
  361. package/dist/core/extract/extractors/unknown.d.ts +5 -2
  362. package/dist/core/extract/extractors/unknown.d.ts.map +1 -1
  363. package/dist/core/extract/extractors/unknown.js +5 -1
  364. package/dist/core/extract/extractors/unknown.js.map +1 -1
  365. package/dist/core/extract/extractors/void.d.ts +5 -2
  366. package/dist/core/extract/extractors/void.d.ts.map +1 -1
  367. package/dist/core/extract/extractors/void.js +5 -1
  368. package/dist/core/extract/extractors/void.js.map +1 -1
  369. package/dist/core/extract/fallback.d.ts +6 -3
  370. package/dist/core/extract/fallback.d.ts.map +1 -1
  371. package/dist/core/extract/fallback.js +21 -7
  372. package/dist/core/extract/fallback.js.map +1 -1
  373. package/dist/core/extract/index.d.ts +6 -4
  374. package/dist/core/extract/index.d.ts.map +1 -1
  375. package/dist/core/extract/index.js +15 -15
  376. package/dist/core/extract/index.js.map +1 -1
  377. package/dist/core/extract/registry.d.ts +39 -36
  378. package/dist/core/extract/registry.d.ts.map +1 -1
  379. package/dist/core/extract/registry.js +96 -123
  380. package/dist/core/extract/registry.js.map +1 -1
  381. package/dist/core/extract/types.d.ts +124 -120
  382. package/dist/core/extract/types.d.ts.map +1 -1
  383. package/dist/core/extract/types.js +0 -1
  384. package/dist/core/iife.d.ts +14 -15
  385. package/dist/core/iife.d.ts.map +1 -1
  386. package/dist/core/iife.js +182 -206
  387. package/dist/core/iife.js.map +1 -1
  388. package/dist/core/pipeline.d.ts +33 -30
  389. package/dist/core/pipeline.d.ts.map +1 -1
  390. package/dist/core/pipeline.js +67 -74
  391. package/dist/core/pipeline.js.map +1 -1
  392. package/dist/core/types.d.ts +430 -427
  393. package/dist/core/types.d.ts.map +1 -1
  394. package/dist/core/types.js +0 -5
  395. package/dist/discovery.d.ts +8 -5
  396. package/dist/discovery.d.ts.map +1 -1
  397. package/dist/discovery.js +31 -32
  398. package/dist/discovery.js.map +1 -1
  399. package/dist/index.d.ts +4 -4
  400. package/dist/index.js +2 -2
  401. package/dist/jit.d.ts +15 -42
  402. package/dist/jit.d.ts.map +1 -1
  403. package/dist/jit.js +187 -216
  404. package/dist/jit.js.map +1 -1
  405. package/dist/loader.d.ts +14 -11
  406. package/dist/loader.d.ts.map +1 -1
  407. package/dist/loader.js +226 -258
  408. package/dist/loader.js.map +1 -1
  409. package/dist/static-filter.d.ts +4 -1
  410. package/dist/static-filter.d.ts.map +1 -1
  411. package/dist/static-filter.js +240 -367
  412. package/dist/static-filter.js.map +1 -1
  413. package/dist/swc.d.ts +38 -35
  414. package/dist/swc.d.ts.map +1 -1
  415. package/dist/swc.js +83 -76
  416. package/dist/swc.js.map +1 -1
  417. package/dist/unplugin/bun.d.ts +5 -2
  418. package/dist/unplugin/bun.d.ts.map +1 -1
  419. package/dist/unplugin/bun.js +5 -1
  420. package/dist/unplugin/bun.js.map +1 -1
  421. package/dist/unplugin/dep-graph.d.ts +10 -7
  422. package/dist/unplugin/dep-graph.d.ts.map +1 -1
  423. package/dist/unplugin/dep-graph.js +216 -252
  424. package/dist/unplugin/dep-graph.js.map +1 -1
  425. package/dist/unplugin/disk-cache.d.ts +121 -92
  426. package/dist/unplugin/disk-cache.d.ts.map +1 -1
  427. package/dist/unplugin/disk-cache.js +425 -444
  428. package/dist/unplugin/disk-cache.js.map +1 -1
  429. package/dist/unplugin/edits.d.ts +15 -12
  430. package/dist/unplugin/edits.d.ts.map +1 -1
  431. package/dist/unplugin/edits.js +24 -37
  432. package/dist/unplugin/edits.js.map +1 -1
  433. package/dist/unplugin/esbuild.d.ts +5 -2
  434. package/dist/unplugin/esbuild.d.ts.map +1 -1
  435. package/dist/unplugin/esbuild.js +5 -1
  436. package/dist/unplugin/esbuild.js.map +1 -1
  437. package/dist/unplugin/farm.d.ts +5 -2
  438. package/dist/unplugin/farm.d.ts.map +1 -1
  439. package/dist/unplugin/farm.js +5 -1
  440. package/dist/unplugin/farm.js.map +1 -1
  441. package/dist/unplugin/hoist-compile.d.ts +14 -42
  442. package/dist/unplugin/hoist-compile.d.ts.map +1 -1
  443. package/dist/unplugin/hoist-compile.js +67 -112
  444. package/dist/unplugin/hoist-compile.js.map +1 -1
  445. package/dist/unplugin/hoist.d.ts +56 -54
  446. package/dist/unplugin/hoist.d.ts.map +1 -1
  447. package/dist/unplugin/hoist.js +945 -1170
  448. package/dist/unplugin/hoist.js.map +1 -1
  449. package/dist/unplugin/index.d.ts +5 -3
  450. package/dist/unplugin/index.d.ts.map +1 -1
  451. package/dist/unplugin/index.js +175 -250
  452. package/dist/unplugin/index.js.map +1 -1
  453. package/dist/unplugin/rolldown.d.ts +5 -2
  454. package/dist/unplugin/rolldown.d.ts.map +1 -1
  455. package/dist/unplugin/rolldown.js +5 -1
  456. package/dist/unplugin/rolldown.js.map +1 -1
  457. package/dist/unplugin/rollup.d.ts +5 -2
  458. package/dist/unplugin/rollup.d.ts.map +1 -1
  459. package/dist/unplugin/rollup.js +5 -1
  460. package/dist/unplugin/rollup.js.map +1 -1
  461. package/dist/unplugin/rsbuild.d.ts +6 -3
  462. package/dist/unplugin/rsbuild.d.ts.map +1 -1
  463. package/dist/unplugin/rsbuild.js +15 -11
  464. package/dist/unplugin/rsbuild.js.map +1 -1
  465. package/dist/unplugin/rspack.d.ts +5 -2
  466. package/dist/unplugin/rspack.d.ts.map +1 -1
  467. package/dist/unplugin/rspack.js +5 -1
  468. package/dist/unplugin/rspack.js.map +1 -1
  469. package/dist/unplugin/transform.d.ts +30 -27
  470. package/dist/unplugin/transform.d.ts.map +1 -1
  471. package/dist/unplugin/transform.js +433 -620
  472. package/dist/unplugin/transform.js.map +1 -1
  473. package/dist/unplugin/types.d.ts +189 -184
  474. package/dist/unplugin/types.d.ts.map +1 -1
  475. package/dist/unplugin/types.js +22 -18
  476. package/dist/unplugin/types.js.map +1 -1
  477. package/dist/unplugin/virtual.d.ts +11 -8
  478. package/dist/unplugin/virtual.d.ts.map +1 -1
  479. package/dist/unplugin/virtual.js +65 -83
  480. package/dist/unplugin/virtual.js.map +1 -1
  481. package/dist/unplugin/vite.d.ts +5 -2
  482. package/dist/unplugin/vite.d.ts.map +1 -1
  483. package/dist/unplugin/vite.js +5 -1
  484. package/dist/unplugin/vite.js.map +1 -1
  485. package/dist/unplugin/webpack.d.ts +5 -2
  486. package/dist/unplugin/webpack.d.ts.map +1 -1
  487. package/dist/unplugin/webpack.js +5 -1
  488. package/dist/unplugin/webpack.js.map +1 -1
  489. package/package.json +23 -14
  490. package/dist/cli/index.d.ts.map +0 -1
  491. package/dist/core/extract/types.js.map +0 -1
  492. package/dist/core/types.js.map +0 -1
  493. package/dist/index.d.ts.map +0 -1
  494. package/dist/index.js.map +0 -1
@@ -1,263 +1,188 @@
1
- import process from "node:process";
2
- import { createUnplugin } from "unplugin";
3
1
  import { getFirstPartyModulePaths, invalidateModuleCache } from "../loader.js";
2
+ import { RESOLVED_RUNTIME_ID_FILTER, RUNTIME_SPECIFIER_FILTER, VIRTUAL_RUNTIME_ID, WP_RUNTIME_ID, loadVirtual, resolveVirtualId } from "./virtual.js";
3
+ import { TRANSFORM_ID_FILTER, log, shouldTransform, transformCodeFilter, transformCodeWithMap } from "./transform.js";
4
4
  import { collectStaticDeps, resetDepGraphMemo } from "./dep-graph.js";
5
5
  import { DiskCache, resetDepValidationMemo } from "./disk-cache.js";
6
- import { log, shouldTransform, TRANSFORM_ID_FILTER, transformCodeFilter, transformCodeWithMap, } from "./transform.js";
7
6
  import { BuildStatsAccumulator } from "./types.js";
8
- import { loadVirtual, RESOLVED_RUNTIME_ID_FILTER, resolveVirtualId, RUNTIME_SPECIFIER_FILTER, VIRTUAL_RUNTIME_ID, WP_RUNTIME_ID, } from "./virtual.js";
7
+ import process from "node:process";
8
+ import { createUnplugin } from "unplugin";
9
+ //#region src/unplugin/index.ts
9
10
  /**
10
- * Frameworks whose resolveId/load hooks receive any import specifier, including
11
- * `virtual:` URIs and bare specifiers, so lean-mode cross-file dedup works.
12
- * webpack / rspack reject the `virtual:` URI scheme but accept bare specifiers,
13
- * so they use WP_RUNTIME_ID (`__zod-compiler-runtime__`) instead of VIRTUAL_RUNTIME_ID.
14
- */
15
- const VIRTUAL_MODULE_FRAMEWORKS = new Set([
16
- "vite",
17
- "rollup",
18
- "rolldown",
19
- "esbuild",
20
- "farm",
21
- "bun",
22
- "rspack",
23
- "webpack",
11
+ * Frameworks whose resolveId/load hooks receive any import specifier, including
12
+ * `virtual:` URIs and bare specifiers, so lean-mode cross-file dedup works.
13
+ * webpack / rspack reject the `virtual:` URI scheme but accept bare specifiers,
14
+ * so they use WP_RUNTIME_ID (`__zod-compiler-runtime__`) instead of VIRTUAL_RUNTIME_ID.
15
+ */
16
+ const VIRTUAL_MODULE_FRAMEWORKS = /* @__PURE__ */ new Set([
17
+ "vite",
18
+ "rollup",
19
+ "rolldown",
20
+ "esbuild",
21
+ "farm",
22
+ "bun",
23
+ "rspack",
24
+ "webpack"
24
25
  ]);
25
26
  /** Frameworks that need the bare-specifier runtime ID instead of `virtual:`. */
26
- const WP_FRAMEWORKS = new Set(["rspack", "webpack"]);
27
+ const WP_FRAMEWORKS = /* @__PURE__ */ new Set(["rspack", "webpack"]);
27
28
  /** File extensions whose changes can affect a schema module graph. */
28
29
  const SOURCE_LIKE = /\.([cm]?[jt]sx?|json)$/;
29
30
  /**
30
- * esbuild has no hook-filter support of its own: unplugin registers a single
31
- * `onLoad` covering both the load and transform hooks, and its transform shim
32
- * reads the file off disk before any JS-side filter runs. `onLoadFilter` is
33
- * the one filter esbuild itself applies (in Go, before calling into JS), so it
34
- * carries the union of what either hook can handle — source files for
35
- * transform, the resolved runtime module for load (derived from the load
36
- * filter so the two cannot drift; a miss there would leave the lean-mode
37
- * runtime import unresolved). The hooks' own filters narrow it further.
38
- */
31
+ * esbuild has no hook-filter support of its own: unplugin registers a single
32
+ * `onLoad` covering both the load and transform hooks, and its transform shim
33
+ * reads the file off disk before any JS-side filter runs. `onLoadFilter` is
34
+ * the one filter esbuild itself applies (in Go, before calling into JS), so it
35
+ * carries the union of what either hook can handle — source files for
36
+ * transform, the resolved runtime module for load (derived from the load
37
+ * filter so the two cannot drift; a miss there would leave the lean-mode
38
+ * runtime import unresolved). The hooks' own filters narrow it further.
39
+ */
39
40
  const ESBUILD_LOAD_FILTER = new RegExp(`\\.[cm]?[jt]sx?$|${RESOLVED_RUNTIME_ID_FILTER.source}`);
40
- export const unplugin = createUnplugin((options, meta) => {
41
- const schemasMode = options?.schemas ?? "auto";
42
- const autoDiscover = schemasMode === "auto";
43
- const outputMode = options?.output ?? "schema";
44
- // "compact" keeps the Zod schema (its safeParse IS the cold error path) — so
45
- // it is zod-compatible like "schema"; only "bag" drops the schema object.
46
- const zodCompat = outputMode === "schema" || outputMode === "compact";
47
- const compact = outputMode === "compact";
48
- const stats = new BuildStatsAccumulator();
49
- // Transform results keyed by id, validated by content: bundlers re-run
50
- // transform for the same file (multiple environments, watch rebuilds) —
51
- // identical content returns the cached result, changed content recomputes.
52
- const cache = new Map();
53
- const verbose = options?.verbose === true;
54
- const mode = options?.codegenMode ?? (VIRTUAL_MODULE_FRAMEWORKS.has(meta.framework) ? "lean" : "inline");
55
- const runtimeId = WP_FRAMEWORKS.has(meta.framework) ? WP_RUNTIME_ID : VIRTUAL_RUNTIME_ID;
56
- // Persistent transform-result cache: discovery executes schema files (and
57
- // their import graphs) in-process, and the in-memory caches die with the
58
- // process — without a disk cache every test run / build re-pays that cost.
59
- // Entries self-validate against dep content hashes, so watch invalidation
60
- // semantics carry across processes.
61
- const cacheOption = options?.cache ?? true;
62
- const diskCache = cacheOption === false
63
- ? null
64
- : new DiskCache(DiskCache.resolveDir(cacheOption), JSON.stringify({
65
- mode,
66
- runtimeId,
67
- output: outputMode,
68
- schemas: schemasMode,
69
- hoist: typeof options?.hoist === "object"
70
- ? String(options.hoist.schemaNamePattern ?? "default")
71
- : (options?.hoist ?? true),
72
- }), getFirstPartyModulePaths);
73
- // Vite only (other bundlers ignore the field): when the plugin runs.
74
- // The default compiles production builds AND test runs — tests should
75
- // exercise (and benefit from) the validators that ship — while plain dev
76
- // servers skip AOT cost and use the Zod fallback. Vitest runs Vite in
77
- // serve mode but is detectable via the VITEST env var / "test" mode.
78
- const viteApply = options?.apply === "all"
79
- ? undefined
80
- : (options?.apply ??
81
- ((_config, env) => env.command === "build" || env.mode === "test" || process.env["VITEST"] !== undefined));
82
- // Hook filters (unplugin object hooks): bundlers that support them
83
- // natively — Rolldown, Vite, Rollup 4.40+ — reject a module before ever
84
- // calling into JS, and unplugin applies the same patterns itself
85
- // everywhere else. The `code` filter is the big one: a file that never
86
- // mentions zod cannot produce output, so it no longer costs a hook call,
87
- // a content hash and an import scan per build.
88
- const codeFilter = transformCodeFilter(options);
89
- const transformFilter = codeFilter === undefined
90
- ? { id: TRANSFORM_ID_FILTER }
91
- : { code: codeFilter, id: TRANSFORM_ID_FILTER };
92
- return {
93
- name: "zod-compiler",
94
- enforce: "pre",
95
- vite: viteApply === undefined ? {} : { apply: viteApply },
96
- esbuild: { onLoadFilter: ESBUILD_LOAD_FILTER },
97
- resolveId: {
98
- filter: { id: RUNTIME_SPECIFIER_FILTER },
99
- handler(id) {
100
- return resolveVirtualId(id);
101
- },
102
- },
103
- load: {
104
- filter: { id: RESOLVED_RUNTIME_ID_FILTER },
105
- handler(id) {
106
- return loadVirtual(id);
107
- },
108
- },
109
- transform: {
110
- filter: transformFilter,
111
- async handler(code, id) {
112
- // The filter covers the static half of shouldTransform(); the
113
- // include/exclude options — picomatch `contains` semantics, which the
114
- // native filters do not reproduce — are applied here, as is the whole
115
- // check for hosts that ignore filters.
116
- if (!shouldTransform(id, options))
117
- return;
118
- const cached = cache.get(id);
119
- if (cached && cached.code === code) {
120
- return cached.result === null
121
- ? undefined
122
- : { code: cached.result, map: cached.map ?? null };
123
- }
124
- if (cached) {
125
- // Content changed but no watchChange fired (bundlers without the
126
- // hook): drop stale module executions before re-discovering.
127
- invalidateModuleCache();
128
- }
129
- // Disk cache: skip static-filtering, discovery (file execution!) and
130
- // codegen entirely when a previous process already transformed this
131
- // exact content and every dep it executed is unchanged.
132
- const diskKey = diskCache === null ? null : diskCache.key(id, code);
133
- if (diskCache !== null && diskKey !== null) {
134
- const entry = diskCache.load(diskKey);
135
- if (entry !== null) {
136
- cache.set(id, { code, result: entry.result, map: entry.map ?? null });
137
- if (entry.stats) {
138
- stats.add({
139
- files: 1,
140
- schemas: entry.stats.schemas,
141
- optimized: entry.stats.optimized,
142
- failed: 0,
143
- });
144
- }
145
- if (verbose && entry.result !== null) {
146
- log(`Using cached transform for ${id}`);
147
- }
148
- return entry.result === null
149
- ? undefined
150
- : { code: entry.result, map: entry.map ?? null };
151
- }
152
- }
153
- let discoveryRan = false;
154
- let substantialWork = false;
155
- let uncacheable = false;
156
- let fileStats = null;
157
- const output = await transformCodeWithMap(code, id, {
158
- mode,
159
- runtimeId,
160
- verbose,
161
- zodCompat,
162
- compact,
163
- autoDiscover,
164
- hoist: options?.hoist,
165
- onDiscovery() {
166
- discoveryRan = true;
167
- },
168
- onSubstantialWork() {
169
- substantialWork = true;
170
- },
171
- onUncacheableResult() {
172
- uncacheable = true;
173
- },
174
- onBuildStats(s) {
175
- stats.add(s);
176
- fileStats = s;
177
- },
178
- });
179
- const result = output === null ? null : output.code;
180
- const map = output === null ? null : output.map;
181
- cache.set(id, { code, result, map });
182
- // Persist when the transform did real work: produced output, ran
183
- // discovery, or did parse-level work (hoist scan / static filter) —
184
- // even when that work concluded "no transform needed". Null results
185
- // used to be skipped on the theory that bail-outs are cheaper than a
186
- // cache probe; that holds for textual bail-outs (still never
187
- // persisted) but not for the scans: hoist-only mode re-paid a full
188
- // scan per zod-importing file per run (35.8s/run in a field report)
189
- // purely to re-derive nulls.
190
- if (diskCache !== null &&
191
- diskKey !== null &&
192
- !uncacheable &&
193
- (result !== null || discoveryRan || substantialWork)) {
194
- // TS narrows fileStats to null here (assignment happens inside a
195
- // callback it cannot track) — widen back.
196
- const s = fileStats;
197
- const entryStats = s === null ? undefined : { schemas: s.schemas, optimized: s.optimized };
198
- if (!discoveryRan) {
199
- // Discovery-free results (hoist scans, static-filter rejections,
200
- // hoist-only rewrites) are pure functions of the file content:
201
- // no deps.
202
- diskCache.save(diskKey, result, [], entryStats, map);
203
- }
204
- else {
205
- // Per-file dependency sets: the file's static first-party import
206
- // graph, so editing an unrelated file no longer invalidates this
207
- // entry (the global superset recorded the whole project — in
208
- // large codebases every commit wiped the entire cache). The
209
- // entry file itself is always a dep: the cache key hashes the
210
- // content the BUNDLER passed, but discovery executed the file
211
- // from DISK — recording it guards the (rare) divergence between
212
- // the two. When the graph cannot be fully analyzed (non-literal
213
- // dynamic imports, unresolvable relative specifiers), the entry
214
- // is deferred and flushed in buildEnd against ONE end-of-build
215
- // executed-modules superset — immediate snapshots gave every
216
- // entry a distinct point-in-time copy (283 MB in the field).
217
- const staticDeps = collectStaticDeps(id);
218
- if (staticDeps.complete) {
219
- diskCache.save(diskKey, result, [id, ...staticDeps.deps], entryStats, map);
220
- }
221
- else {
222
- diskCache.saveDeferred(diskKey, result, entryStats, map);
223
- }
224
- }
225
- }
226
- if (!result)
227
- return;
228
- return { code: result, map };
229
- },
230
- },
231
- watchChange(id) {
232
- if (!SOURCE_LIKE.test(id))
233
- return;
234
- if (id.includes("node_modules"))
235
- return;
236
- // The changed file may be a dependency of any schema file, so both
237
- // the module cache (executions) and the transform result cache are
238
- // invalidated wholesale. node_modules stay warm in the loader. Disk
239
- // cache entries self-validate via dep hashes — only the per-process
240
- // stat memo needs resetting so changed files re-hash. Pending
241
- // deferred entries predate the change and must not flush against
242
- // post-change dep hashes.
243
- invalidateModuleCache();
244
- resetDepValidationMemo();
245
- resetDepGraphMemo();
246
- diskCache?.dropDeferred();
247
- cache.clear();
248
- },
249
- buildEnd() {
250
- // The loader's executed-modules superset is final here — persist the
251
- // queued incomplete-crawl entries against one shared snapshot.
252
- diskCache?.flushDeferred();
253
- if (!verbose)
254
- return;
255
- if (stats.schemas === 0)
256
- return;
257
- log(`Build summary: ${stats.optimized}/${stats.schemas} schemas optimized across ${stats.files} file(s)` +
258
- (stats.failed > 0 ? `, ${stats.failed} failed` : ""));
259
- stats.reset();
260
- },
261
- };
41
+ const unplugin = createUnplugin((options, meta) => {
42
+ const schemasMode = options?.schemas ?? "auto";
43
+ const autoDiscover = schemasMode === "auto";
44
+ const outputMode = options?.output ?? "schema";
45
+ const zodCompat = outputMode === "schema" || outputMode === "compact";
46
+ const compact = outputMode === "compact";
47
+ const stats = new BuildStatsAccumulator();
48
+ const cache = /* @__PURE__ */ new Map();
49
+ const verbose = options?.verbose === true;
50
+ const mode = options?.codegenMode ?? (VIRTUAL_MODULE_FRAMEWORKS.has(meta.framework) ? "lean" : "inline");
51
+ const runtimeId = WP_FRAMEWORKS.has(meta.framework) ? WP_RUNTIME_ID : VIRTUAL_RUNTIME_ID;
52
+ const cacheOption = options?.cache ?? true;
53
+ const diskCache = cacheOption === false ? null : new DiskCache(DiskCache.resolveDir(cacheOption), JSON.stringify({
54
+ mode,
55
+ runtimeId,
56
+ output: outputMode,
57
+ schemas: schemasMode,
58
+ hoist: typeof options?.hoist === "object" ? String(options.hoist.schemaNamePattern ?? "default") : options?.hoist ?? true
59
+ }), getFirstPartyModulePaths);
60
+ const viteApply = options?.apply === "all" ? void 0 : options?.apply ?? ((_config, env) => env.command === "build" || env.mode === "test" || process.env["VITEST"] !== void 0);
61
+ const codeFilter = transformCodeFilter(options);
62
+ return {
63
+ name: "zod-compiler",
64
+ enforce: "pre",
65
+ vite: viteApply === void 0 ? {} : { apply: viteApply },
66
+ esbuild: { onLoadFilter: ESBUILD_LOAD_FILTER },
67
+ resolveId: {
68
+ filter: { id: RUNTIME_SPECIFIER_FILTER },
69
+ handler(id) {
70
+ return resolveVirtualId(id);
71
+ }
72
+ },
73
+ load: {
74
+ filter: { id: RESOLVED_RUNTIME_ID_FILTER },
75
+ handler(id) {
76
+ return loadVirtual(id);
77
+ }
78
+ },
79
+ transform: {
80
+ filter: codeFilter === void 0 ? { id: TRANSFORM_ID_FILTER } : {
81
+ code: codeFilter,
82
+ id: TRANSFORM_ID_FILTER
83
+ },
84
+ async handler(code, id) {
85
+ if (!shouldTransform(id, options)) return;
86
+ const cached = cache.get(id);
87
+ if (cached && cached.code === code) return cached.result === null ? void 0 : {
88
+ code: cached.result,
89
+ map: cached.map ?? null
90
+ };
91
+ if (cached) invalidateModuleCache();
92
+ const diskKey = diskCache === null ? null : diskCache.key(id, code);
93
+ if (diskCache !== null && diskKey !== null) {
94
+ const entry = diskCache.load(diskKey);
95
+ if (entry !== null) {
96
+ cache.set(id, {
97
+ code,
98
+ result: entry.result,
99
+ map: entry.map ?? null
100
+ });
101
+ if (entry.stats) stats.add({
102
+ files: 1,
103
+ schemas: entry.stats.schemas,
104
+ optimized: entry.stats.optimized,
105
+ failed: 0
106
+ });
107
+ if (verbose && entry.result !== null) log(`Using cached transform for ${id}`);
108
+ return entry.result === null ? void 0 : {
109
+ code: entry.result,
110
+ map: entry.map ?? null
111
+ };
112
+ }
113
+ }
114
+ let discoveryRan = false;
115
+ let substantialWork = false;
116
+ let uncacheable = false;
117
+ let fileStats = null;
118
+ const output = await transformCodeWithMap(code, id, {
119
+ mode,
120
+ runtimeId,
121
+ verbose,
122
+ zodCompat,
123
+ compact,
124
+ autoDiscover,
125
+ hoist: options?.hoist,
126
+ onDiscovery() {
127
+ discoveryRan = true;
128
+ },
129
+ onSubstantialWork() {
130
+ substantialWork = true;
131
+ },
132
+ onUncacheableResult() {
133
+ uncacheable = true;
134
+ },
135
+ onBuildStats(s) {
136
+ stats.add(s);
137
+ fileStats = s;
138
+ }
139
+ });
140
+ const result = output === null ? null : output.code;
141
+ const map = output === null ? null : output.map;
142
+ cache.set(id, {
143
+ code,
144
+ result,
145
+ map
146
+ });
147
+ if (diskCache !== null && diskKey !== null && !uncacheable && (result !== null || discoveryRan || substantialWork)) {
148
+ const s = fileStats;
149
+ const entryStats = s === null ? void 0 : {
150
+ schemas: s.schemas,
151
+ optimized: s.optimized
152
+ };
153
+ if (!discoveryRan) diskCache.save(diskKey, result, [], entryStats, map);
154
+ else {
155
+ const staticDeps = collectStaticDeps(id);
156
+ if (staticDeps.complete) diskCache.save(diskKey, result, [id, ...staticDeps.deps], entryStats, map);
157
+ else diskCache.saveDeferred(diskKey, result, entryStats, map);
158
+ }
159
+ }
160
+ if (!result) return;
161
+ return {
162
+ code: result,
163
+ map
164
+ };
165
+ }
166
+ },
167
+ watchChange(id) {
168
+ if (!SOURCE_LIKE.test(id)) return;
169
+ if (id.includes("node_modules")) return;
170
+ invalidateModuleCache();
171
+ resetDepValidationMemo();
172
+ resetDepGraphMemo();
173
+ diskCache?.dropDeferred();
174
+ cache.clear();
175
+ },
176
+ buildEnd() {
177
+ diskCache?.flushDeferred();
178
+ if (!verbose) return;
179
+ if (stats.schemas === 0) return;
180
+ log(`Build summary: ${stats.optimized}/${stats.schemas} schemas optimized across ${stats.files} file(s)` + (stats.failed > 0 ? `, ${stats.failed} failed` : ""));
181
+ stats.reset();
182
+ }
183
+ };
262
184
  });
185
+ //#endregion
186
+ export { unplugin };
187
+
263
188
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/unplugin/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/unplugin/index.ts"],"sourcesContent":["import process from \"node:process\";\nimport { createUnplugin, type UnpluginContextMeta } from \"unplugin\";\nimport type { CodegenMode } from \"../core/codegen/context.js\";\nimport { getFirstPartyModulePaths, invalidateModuleCache } from \"../loader.js\";\nimport { collectStaticDeps, resetDepGraphMemo } from \"./dep-graph.js\";\nimport { DiskCache, resetDepValidationMemo } from \"./disk-cache.js\";\nimport {\n log,\n shouldTransform,\n TRANSFORM_ID_FILTER,\n transformCodeFilter,\n type TransformSourceMap,\n transformCodeWithMap,\n} from \"./transform.js\";\nimport type { BuildStats, ZodCompilerPluginOptions } from \"./types.js\";\nimport { BuildStatsAccumulator } from \"./types.js\";\nimport {\n loadVirtual,\n RESOLVED_RUNTIME_ID_FILTER,\n resolveVirtualId,\n RUNTIME_SPECIFIER_FILTER,\n VIRTUAL_RUNTIME_ID,\n WP_RUNTIME_ID,\n} from \"./virtual.js\";\n\n/**\n * Frameworks whose resolveId/load hooks receive any import specifier, including\n * `virtual:` URIs and bare specifiers, so lean-mode cross-file dedup works.\n * webpack / rspack reject the `virtual:` URI scheme but accept bare specifiers,\n * so they use WP_RUNTIME_ID (`__zod-compiler-runtime__`) instead of VIRTUAL_RUNTIME_ID.\n */\nconst VIRTUAL_MODULE_FRAMEWORKS = new Set([\n \"vite\",\n \"rollup\",\n \"rolldown\",\n \"esbuild\",\n \"farm\",\n \"bun\",\n \"rspack\",\n \"webpack\",\n]);\n\n/** Frameworks that need the bare-specifier runtime ID instead of `virtual:`. */\nconst WP_FRAMEWORKS = new Set([\"rspack\", \"webpack\"]);\n\n/** File extensions whose changes can affect a schema module graph. */\nconst SOURCE_LIKE = /\\.([cm]?[jt]sx?|json)$/;\n\n/**\n * esbuild has no hook-filter support of its own: unplugin registers a single\n * `onLoad` covering both the load and transform hooks, and its transform shim\n * reads the file off disk before any JS-side filter runs. `onLoadFilter` is\n * the one filter esbuild itself applies (in Go, before calling into JS), so it\n * carries the union of what either hook can handle — source files for\n * transform, the resolved runtime module for load (derived from the load\n * filter so the two cannot drift; a miss there would leave the lean-mode\n * runtime import unresolved). The hooks' own filters narrow it further.\n */\nconst ESBUILD_LOAD_FILTER = new RegExp(`\\\\.[cm]?[jt]sx?$|${RESOLVED_RUNTIME_ID_FILTER.source}`);\n\nexport const unplugin = createUnplugin(\n (options: ZodCompilerPluginOptions | undefined, meta: UnpluginContextMeta) => {\n const schemasMode = options?.schemas ?? \"auto\";\n const autoDiscover = schemasMode === \"auto\";\n const outputMode = options?.output ?? \"schema\";\n // \"compact\" keeps the Zod schema (its safeParse IS the cold error path) — so\n // it is zod-compatible like \"schema\"; only \"bag\" drops the schema object.\n const zodCompat = outputMode === \"schema\" || outputMode === \"compact\";\n const compact = outputMode === \"compact\";\n const stats = new BuildStatsAccumulator();\n // Transform results keyed by id, validated by content: bundlers re-run\n // transform for the same file (multiple environments, watch rebuilds) —\n // identical content returns the cached result, changed content recomputes.\n const cache = new Map<\n string,\n { code: string; result: string | null; map?: TransformSourceMap | null }\n >();\n const verbose = options?.verbose === true;\n const mode: CodegenMode =\n options?.codegenMode ?? (VIRTUAL_MODULE_FRAMEWORKS.has(meta.framework) ? \"lean\" : \"inline\");\n const runtimeId = WP_FRAMEWORKS.has(meta.framework) ? WP_RUNTIME_ID : VIRTUAL_RUNTIME_ID;\n // Persistent transform-result cache: discovery executes schema files (and\n // their import graphs) in-process, and the in-memory caches die with the\n // process — without a disk cache every test run / build re-pays that cost.\n // Entries self-validate against dep content hashes, so watch invalidation\n // semantics carry across processes.\n const cacheOption = options?.cache ?? true;\n const diskCache =\n cacheOption === false\n ? null\n : new DiskCache(\n DiskCache.resolveDir(cacheOption),\n JSON.stringify({\n mode,\n runtimeId,\n output: outputMode,\n schemas: schemasMode,\n hoist:\n typeof options?.hoist === \"object\"\n ? String(options.hoist.schemaNamePattern ?? \"default\")\n : (options?.hoist ?? true),\n }),\n getFirstPartyModulePaths,\n );\n // Vite only (other bundlers ignore the field): when the plugin runs.\n // The default compiles production builds AND test runs — tests should\n // exercise (and benefit from) the validators that ship — while plain dev\n // servers skip AOT cost and use the Zod fallback. Vitest runs Vite in\n // serve mode but is detectable via the VITEST env var / \"test\" mode.\n const viteApply =\n options?.apply === \"all\"\n ? undefined\n : (options?.apply ??\n ((_config: unknown, env: { command: string; mode: string }) =>\n env.command === \"build\" || env.mode === \"test\" || process.env[\"VITEST\"] !== undefined));\n\n // Hook filters (unplugin object hooks): bundlers that support them\n // natively — Rolldown, Vite, Rollup 4.40+ — reject a module before ever\n // calling into JS, and unplugin applies the same patterns itself\n // everywhere else. The `code` filter is the big one: a file that never\n // mentions zod cannot produce output, so it no longer costs a hook call,\n // a content hash and an import scan per build.\n const codeFilter = transformCodeFilter(options);\n const transformFilter =\n codeFilter === undefined\n ? { id: TRANSFORM_ID_FILTER }\n : { code: codeFilter, id: TRANSFORM_ID_FILTER };\n\n return {\n name: \"zod-compiler\",\n enforce: \"pre\" as const,\n\n vite: viteApply === undefined ? {} : { apply: viteApply },\n\n esbuild: { onLoadFilter: ESBUILD_LOAD_FILTER },\n\n resolveId: {\n filter: { id: RUNTIME_SPECIFIER_FILTER },\n handler(id: string) {\n return resolveVirtualId(id);\n },\n },\n\n load: {\n filter: { id: RESOLVED_RUNTIME_ID_FILTER },\n handler(id: string) {\n return loadVirtual(id);\n },\n },\n\n transform: {\n filter: transformFilter,\n async handler(code: string, id: string) {\n // The filter covers the static half of shouldTransform(); the\n // include/exclude options — picomatch `contains` semantics, which the\n // native filters do not reproduce — are applied here, as is the whole\n // check for hosts that ignore filters.\n if (!shouldTransform(id, options)) return;\n\n const cached = cache.get(id);\n if (cached && cached.code === code) {\n return cached.result === null\n ? undefined\n : { code: cached.result, map: cached.map ?? null };\n }\n if (cached) {\n // Content changed but no watchChange fired (bundlers without the\n // hook): drop stale module executions before re-discovering.\n invalidateModuleCache();\n }\n\n // Disk cache: skip static-filtering, discovery (file execution!) and\n // codegen entirely when a previous process already transformed this\n // exact content and every dep it executed is unchanged.\n const diskKey = diskCache === null ? null : diskCache.key(id, code);\n if (diskCache !== null && diskKey !== null) {\n const entry = diskCache.load(diskKey);\n if (entry !== null) {\n cache.set(id, { code, result: entry.result, map: entry.map ?? null });\n if (entry.stats) {\n stats.add({\n files: 1,\n schemas: entry.stats.schemas,\n optimized: entry.stats.optimized,\n failed: 0,\n });\n }\n if (verbose && entry.result !== null) {\n log(`Using cached transform for ${id}`);\n }\n return entry.result === null\n ? undefined\n : { code: entry.result, map: entry.map ?? null };\n }\n }\n\n let discoveryRan = false;\n let substantialWork = false;\n let uncacheable = false;\n let fileStats: BuildStats | null = null;\n const output = await transformCodeWithMap(code, id, {\n mode,\n runtimeId,\n verbose,\n zodCompat,\n compact,\n autoDiscover,\n hoist: options?.hoist,\n onDiscovery() {\n discoveryRan = true;\n },\n onSubstantialWork() {\n substantialWork = true;\n },\n onUncacheableResult() {\n uncacheable = true;\n },\n onBuildStats(s) {\n stats.add(s);\n fileStats = s;\n },\n });\n const result = output === null ? null : output.code;\n const map = output === null ? null : output.map;\n cache.set(id, { code, result, map });\n\n // Persist when the transform did real work: produced output, ran\n // discovery, or did parse-level work (hoist scan / static filter) —\n // even when that work concluded \"no transform needed\". Null results\n // used to be skipped on the theory that bail-outs are cheaper than a\n // cache probe; that holds for textual bail-outs (still never\n // persisted) but not for the scans: hoist-only mode re-paid a full\n // scan per zod-importing file per run (35.8s/run in a field report)\n // purely to re-derive nulls.\n if (\n diskCache !== null &&\n diskKey !== null &&\n !uncacheable &&\n (result !== null || discoveryRan || substantialWork)\n ) {\n // TS narrows fileStats to null here (assignment happens inside a\n // callback it cannot track) — widen back.\n const s = fileStats as BuildStats | null;\n const entryStats =\n s === null ? undefined : { schemas: s.schemas, optimized: s.optimized };\n if (!discoveryRan) {\n // Discovery-free results (hoist scans, static-filter rejections,\n // hoist-only rewrites) are pure functions of the file content:\n // no deps.\n diskCache.save(diskKey, result, [], entryStats, map);\n } else {\n // Per-file dependency sets: the file's static first-party import\n // graph, so editing an unrelated file no longer invalidates this\n // entry (the global superset recorded the whole project — in\n // large codebases every commit wiped the entire cache). The\n // entry file itself is always a dep: the cache key hashes the\n // content the BUNDLER passed, but discovery executed the file\n // from DISK — recording it guards the (rare) divergence between\n // the two. When the graph cannot be fully analyzed (non-literal\n // dynamic imports, unresolvable relative specifiers), the entry\n // is deferred and flushed in buildEnd against ONE end-of-build\n // executed-modules superset — immediate snapshots gave every\n // entry a distinct point-in-time copy (283 MB in the field).\n const staticDeps = collectStaticDeps(id);\n if (staticDeps.complete) {\n diskCache.save(diskKey, result, [id, ...staticDeps.deps], entryStats, map);\n } else {\n diskCache.saveDeferred(diskKey, result, entryStats, map);\n }\n }\n }\n\n if (!result) return;\n return { code: result, map };\n },\n },\n\n watchChange(id: string) {\n if (!SOURCE_LIKE.test(id)) return;\n if (id.includes(\"node_modules\")) return;\n // The changed file may be a dependency of any schema file, so both\n // the module cache (executions) and the transform result cache are\n // invalidated wholesale. node_modules stay warm in the loader. Disk\n // cache entries self-validate via dep hashes — only the per-process\n // stat memo needs resetting so changed files re-hash. Pending\n // deferred entries predate the change and must not flush against\n // post-change dep hashes.\n invalidateModuleCache();\n resetDepValidationMemo();\n resetDepGraphMemo();\n diskCache?.dropDeferred();\n cache.clear();\n },\n\n buildEnd() {\n // The loader's executed-modules superset is final here — persist the\n // queued incomplete-crawl entries against one shared snapshot.\n diskCache?.flushDeferred();\n if (!verbose) return;\n if (stats.schemas === 0) return;\n log(\n `Build summary: ${stats.optimized}/${stats.schemas} schemas optimized across ${stats.files} file(s)` +\n (stats.failed > 0 ? `, ${stats.failed} failed` : \"\"),\n );\n stats.reset();\n },\n };\n },\n);\n\nexport type { ZodCompilerPluginOptions } from \"./types.js\";\n"],"mappings":"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"}
@@ -1,3 +1,6 @@
1
- declare const _default: (options?: import("./types.js").ZodCompilerPluginOptions | undefined) => import("rolldown").Plugin<any> | import("rolldown").Plugin<any>[];
2
- export default _default;
1
+ import { ZodCompilerPluginOptions } from "./types.js";
2
+ //#region src/unplugin/rolldown.d.ts
3
+ declare const _default: (options?: ZodCompilerPluginOptions | undefined) => import("unplugin").RolldownPlugin<any> | import("unplugin").RolldownPlugin<any>[];
4
+ //#endregion
5
+ export { _default as default };
3
6
  //# sourceMappingURL=rolldown.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rolldown.d.ts","sourceRoot":"","sources":["../../src/unplugin/rolldown.ts"],"names":[],"mappings":";AAEA,wBAAiC"}
1
+ {"version":3,"file":"rolldown.d.ts","names":[],"sources":["../../src/unplugin/rolldown.ts"],"mappings":""}
@@ -1,3 +1,7 @@
1
1
  import { unplugin } from "./index.js";
2
- export default unplugin.rolldown;
2
+ //#region src/unplugin/rolldown.ts
3
+ var rolldown_default = unplugin.rolldown;
4
+ //#endregion
5
+ export { rolldown_default as default };
6
+
3
7
  //# sourceMappingURL=rolldown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rolldown.js","sourceRoot":"","sources":["../../src/unplugin/rolldown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,eAAe,QAAQ,CAAC,QAAQ,CAAC"}
1
+ {"version":3,"file":"rolldown.js","names":[],"sources":["../../src/unplugin/rolldown.ts"],"sourcesContent":["import { unplugin } from \"./index.js\";\n\nexport default unplugin.rolldown;\n"],"mappings":";;AAEA,IAAA,mBAAe,SAAS"}
@@ -1,3 +1,6 @@
1
- declare const _default: (options?: import("./types.js").ZodCompilerPluginOptions | undefined) => any;
2
- export default _default;
1
+ import { ZodCompilerPluginOptions } from "./types.js";
2
+ //#region src/unplugin/rollup.d.ts
3
+ declare const _default: (options?: ZodCompilerPluginOptions | undefined) => any;
4
+ //#endregion
5
+ export { _default as default };
3
6
  //# sourceMappingURL=rollup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/unplugin/rollup.ts"],"names":[],"mappings":";AAEA,wBAA+B"}
1
+ {"version":3,"file":"rollup.d.ts","names":[],"sources":["../../src/unplugin/rollup.ts"],"mappings":""}
@@ -1,3 +1,7 @@
1
1
  import { unplugin } from "./index.js";
2
- export default unplugin.rollup;
2
+ //#region src/unplugin/rollup.ts
3
+ var rollup_default = unplugin.rollup;
4
+ //#endregion
5
+ export { rollup_default as default };
6
+
3
7
  //# sourceMappingURL=rollup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rollup.js","sourceRoot":"","sources":["../../src/unplugin/rollup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,eAAe,QAAQ,CAAC,MAAM,CAAC"}
1
+ {"version":3,"file":"rollup.js","names":[],"sources":["../../src/unplugin/rollup.ts"],"sourcesContent":["import { unplugin } from \"./index.js\";\n\nexport default unplugin.rollup;\n"],"mappings":";;AAEA,IAAA,iBAAe,SAAS"}
@@ -1,4 +1,7 @@
1
- import type { RsbuildPlugin } from "@rsbuild/core";
2
- import type { ZodCompilerPluginOptions } from "./types.js";
3
- export default function zodCompiler(options?: ZodCompilerPluginOptions): RsbuildPlugin;
1
+ import { ZodCompilerPluginOptions } from "./types.js";
2
+ import { RsbuildPlugin } from "@rsbuild/core";
3
+ //#region src/unplugin/rsbuild.d.ts
4
+ declare function zodCompiler(options?: ZodCompilerPluginOptions): RsbuildPlugin;
5
+ //#endregion
6
+ export { zodCompiler as default };
4
7
  //# sourceMappingURL=rsbuild.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rsbuild.d.ts","sourceRoot":"","sources":["../../src/unplugin/rsbuild.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAG3D,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,aAAa,CAUrF"}
1
+ {"version":3,"file":"rsbuild.d.ts","names":[],"sources":["../../src/unplugin/rsbuild.ts"],"mappings":";;;iBAIwB,YAAY,UAAU,2BAA2B"}
@@ -1,13 +1,17 @@
1
- import zodCompilerRspack from "./rspack.js";
2
- export default function zodCompiler(options) {
3
- return {
4
- name: "zod-compiler",
5
- setup(api) {
6
- api.modifyRspackConfig((config) => {
7
- config.plugins ??= [];
8
- config.plugins.push(zodCompilerRspack(options));
9
- });
10
- },
11
- };
1
+ import rspack_default from "./rspack.js";
2
+ //#region src/unplugin/rsbuild.ts
3
+ function zodCompiler(options) {
4
+ return {
5
+ name: "zod-compiler",
6
+ setup(api) {
7
+ api.modifyRspackConfig((config) => {
8
+ config.plugins ??= [];
9
+ config.plugins.push(rspack_default(options));
10
+ });
11
+ }
12
+ };
12
13
  }
14
+ //#endregion
15
+ export { zodCompiler as default };
16
+
13
17
  //# sourceMappingURL=rsbuild.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rsbuild.js","sourceRoot":"","sources":["../../src/unplugin/rsbuild.ts"],"names":[],"mappings":"AAEA,OAAO,iBAAiB,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,OAAkC;IACpE,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,KAAK,CAAC,GAAG;YACP,GAAG,CAAC,kBAAkB,CAAC,CAAC,MAAM,EAAE,EAAE;gBAChC,MAAM,CAAC,OAAO,KAAK,EAAE,CAAC;gBACtB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"rsbuild.js","names":["zodCompilerRspack"],"sources":["../../src/unplugin/rsbuild.ts"],"sourcesContent":["import type { RsbuildPlugin } from \"@rsbuild/core\";\nimport type { ZodCompilerPluginOptions } from \"./types.js\";\nimport zodCompilerRspack from \"./rspack.js\";\n\nexport default function zodCompiler(options?: ZodCompilerPluginOptions): RsbuildPlugin {\n return {\n name: \"zod-compiler\",\n setup(api) {\n api.modifyRspackConfig((config) => {\n config.plugins ??= [];\n config.plugins.push(zodCompilerRspack(options));\n });\n },\n };\n}\n"],"mappings":";;AAIA,SAAwB,YAAY,SAAmD;CACrF,OAAO;EACL,MAAM;EACN,MAAM,KAAK;GACT,IAAI,oBAAoB,WAAW;IACjC,OAAO,YAAY,CAAC;IACpB,OAAO,QAAQ,KAAKA,eAAkB,OAAO,CAAC;GAChD,CAAC;EACH;CACF;AACF"}