zod-compiler 0.1.0 → 1.0.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 (451) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +381 -28
  3. package/dist/cli/commands/check.d.ts +9 -0
  4. package/dist/cli/commands/check.d.ts.map +1 -0
  5. package/dist/cli/commands/check.js +150 -0
  6. package/dist/cli/commands/check.js.map +1 -0
  7. package/dist/cli/commands/generate.d.ts +34 -0
  8. package/dist/cli/commands/generate.d.ts.map +1 -0
  9. package/dist/cli/commands/generate.js +135 -0
  10. package/dist/cli/commands/generate.js.map +1 -0
  11. package/dist/cli/commands/watch.d.ts +33 -0
  12. package/dist/cli/commands/watch.d.ts.map +1 -0
  13. package/dist/cli/commands/watch.js +163 -0
  14. package/dist/cli/commands/watch.js.map +1 -0
  15. package/dist/cli/emitter.d.ts +21 -0
  16. package/dist/cli/emitter.d.ts.map +1 -0
  17. package/dist/cli/emitter.js +64 -0
  18. package/dist/cli/emitter.js.map +1 -0
  19. package/dist/cli/errors.d.ts +2 -0
  20. package/dist/cli/errors.d.ts.map +1 -0
  21. package/dist/cli/errors.js +4 -0
  22. package/dist/cli/errors.js.map +1 -0
  23. package/dist/cli/index.d.ts +3 -0
  24. package/dist/cli/index.d.ts.map +1 -0
  25. package/dist/cli/index.js +181 -0
  26. package/dist/cli/index.js.map +1 -0
  27. package/dist/cli/logger.d.ts +18 -0
  28. package/dist/cli/logger.d.ts.map +1 -0
  29. package/dist/cli/logger.js +46 -0
  30. package/dist/cli/logger.js.map +1 -0
  31. package/dist/core/codegen/context.d.ts +138 -0
  32. package/dist/core/codegen/context.d.ts.map +1 -0
  33. package/dist/core/codegen/context.js +213 -0
  34. package/dist/core/codegen/context.js.map +1 -0
  35. package/dist/core/codegen/emit-issue.d.ts +74 -0
  36. package/dist/core/codegen/emit-issue.d.ts.map +1 -0
  37. package/dist/core/codegen/emit-issue.js +116 -0
  38. package/dist/core/codegen/emit-issue.js.map +1 -0
  39. package/dist/core/codegen/emit.d.ts +8 -0
  40. package/dist/core/codegen/emit.d.ts.map +1 -0
  41. package/dist/core/codegen/emit.js +16 -0
  42. package/dist/core/codegen/emit.js.map +1 -0
  43. package/dist/core/codegen/fast-path.d.ts +17 -0
  44. package/dist/core/codegen/fast-path.d.ts.map +1 -0
  45. package/dist/core/codegen/fast-path.js +114 -0
  46. package/dist/core/codegen/fast-path.js.map +1 -0
  47. package/dist/core/codegen/index.d.ts +19 -0
  48. package/dist/core/codegen/index.d.ts.map +1 -0
  49. package/dist/core/codegen/index.js +54 -0
  50. package/dist/core/codegen/index.js.map +1 -0
  51. package/dist/core/codegen/issue-decls.d.ts +37 -0
  52. package/dist/core/codegen/issue-decls.d.ts.map +1 -0
  53. package/dist/core/codegen/issue-decls.js +47 -0
  54. package/dist/core/codegen/issue-decls.js.map +1 -0
  55. package/dist/core/codegen/schemas/any.d.ts +5 -0
  56. package/dist/core/codegen/schemas/any.d.ts.map +1 -0
  57. package/dist/core/codegen/schemas/any.js +7 -0
  58. package/dist/core/codegen/schemas/any.js.map +1 -0
  59. package/dist/core/codegen/schemas/array.d.ts +7 -0
  60. package/dist/core/codegen/schemas/array.d.ts.map +1 -0
  61. package/dist/core/codegen/schemas/array.js +86 -0
  62. package/dist/core/codegen/schemas/array.js.map +1 -0
  63. package/dist/core/codegen/schemas/bigint.d.ts +5 -0
  64. package/dist/core/codegen/schemas/bigint.d.ts.map +1 -0
  65. package/dist/core/codegen/schemas/bigint.js +80 -0
  66. package/dist/core/codegen/schemas/bigint.js.map +1 -0
  67. package/dist/core/codegen/schemas/boolean.d.ts +5 -0
  68. package/dist/core/codegen/schemas/boolean.d.ts.map +1 -0
  69. package/dist/core/codegen/schemas/boolean.js +20 -0
  70. package/dist/core/codegen/schemas/boolean.js.map +1 -0
  71. package/dist/core/codegen/schemas/catch.d.ts +7 -0
  72. package/dist/core/codegen/schemas/catch.d.ts.map +1 -0
  73. package/dist/core/codegen/schemas/catch.js +26 -0
  74. package/dist/core/codegen/schemas/catch.js.map +1 -0
  75. package/dist/core/codegen/schemas/date.d.ts +5 -0
  76. package/dist/core/codegen/schemas/date.d.ts.map +1 -0
  77. package/dist/core/codegen/schemas/date.js +79 -0
  78. package/dist/core/codegen/schemas/date.js.map +1 -0
  79. package/dist/core/codegen/schemas/default.d.ts +5 -0
  80. package/dist/core/codegen/schemas/default.d.ts.map +1 -0
  81. package/dist/core/codegen/schemas/default.js +17 -0
  82. package/dist/core/codegen/schemas/default.js.map +1 -0
  83. package/dist/core/codegen/schemas/discriminated-union.d.ts +7 -0
  84. package/dist/core/codegen/schemas/discriminated-union.d.ts.map +1 -0
  85. package/dist/core/codegen/schemas/discriminated-union.js +45 -0
  86. package/dist/core/codegen/schemas/discriminated-union.js.map +1 -0
  87. package/dist/core/codegen/schemas/effect.d.ts +17 -0
  88. package/dist/core/codegen/schemas/effect.d.ts.map +1 -0
  89. package/dist/core/codegen/schemas/effect.js +35 -0
  90. package/dist/core/codegen/schemas/effect.js.map +1 -0
  91. package/dist/core/codegen/schemas/enum.d.ts +5 -0
  92. package/dist/core/codegen/schemas/enum.d.ts.map +1 -0
  93. package/dist/core/codegen/schemas/enum.js +33 -0
  94. package/dist/core/codegen/schemas/enum.js.map +1 -0
  95. package/dist/core/codegen/schemas/fallback.d.ts +4 -0
  96. package/dist/core/codegen/schemas/fallback.d.ts.map +1 -0
  97. package/dist/core/codegen/schemas/fallback.js +23 -0
  98. package/dist/core/codegen/schemas/fallback.js.map +1 -0
  99. package/dist/core/codegen/schemas/file.d.ts +5 -0
  100. package/dist/core/codegen/schemas/file.d.ts.map +1 -0
  101. package/dist/core/codegen/schemas/file.js +78 -0
  102. package/dist/core/codegen/schemas/file.js.map +1 -0
  103. package/dist/core/codegen/schemas/intersection.d.ts +7 -0
  104. package/dist/core/codegen/schemas/intersection.d.ts.map +1 -0
  105. package/dist/core/codegen/schemas/intersection.js +13 -0
  106. package/dist/core/codegen/schemas/intersection.js.map +1 -0
  107. package/dist/core/codegen/schemas/literal.d.ts +5 -0
  108. package/dist/core/codegen/schemas/literal.d.ts.map +1 -0
  109. package/dist/core/codegen/schemas/literal.js +31 -0
  110. package/dist/core/codegen/schemas/literal.js.map +1 -0
  111. package/dist/core/codegen/schemas/map.d.ts +7 -0
  112. package/dist/core/codegen/schemas/map.d.ts.map +1 -0
  113. package/dist/core/codegen/schemas/map.js +46 -0
  114. package/dist/core/codegen/schemas/map.js.map +1 -0
  115. package/dist/core/codegen/schemas/nan.d.ts +5 -0
  116. package/dist/core/codegen/schemas/nan.d.ts.map +1 -0
  117. package/dist/core/codegen/schemas/nan.js +13 -0
  118. package/dist/core/codegen/schemas/nan.js.map +1 -0
  119. package/dist/core/codegen/schemas/never.d.ts +5 -0
  120. package/dist/core/codegen/schemas/never.d.ts.map +1 -0
  121. package/dist/core/codegen/schemas/never.js +11 -0
  122. package/dist/core/codegen/schemas/never.js.map +1 -0
  123. package/dist/core/codegen/schemas/null.d.ts +5 -0
  124. package/dist/core/codegen/schemas/null.d.ts.map +1 -0
  125. package/dist/core/codegen/schemas/null.js +13 -0
  126. package/dist/core/codegen/schemas/null.js.map +1 -0
  127. package/dist/core/codegen/schemas/nullable.d.ts +7 -0
  128. package/dist/core/codegen/schemas/nullable.d.ts.map +1 -0
  129. package/dist/core/codegen/schemas/nullable.js +15 -0
  130. package/dist/core/codegen/schemas/nullable.js.map +1 -0
  131. package/dist/core/codegen/schemas/number.d.ts +5 -0
  132. package/dist/core/codegen/schemas/number.d.ts.map +1 -0
  133. package/dist/core/codegen/schemas/number.js +186 -0
  134. package/dist/core/codegen/schemas/number.js.map +1 -0
  135. package/dist/core/codegen/schemas/object.d.ts +7 -0
  136. package/dist/core/codegen/schemas/object.d.ts.map +1 -0
  137. package/dist/core/codegen/schemas/object.js +65 -0
  138. package/dist/core/codegen/schemas/object.js.map +1 -0
  139. package/dist/core/codegen/schemas/optional.d.ts +7 -0
  140. package/dist/core/codegen/schemas/optional.d.ts.map +1 -0
  141. package/dist/core/codegen/schemas/optional.js +15 -0
  142. package/dist/core/codegen/schemas/optional.js.map +1 -0
  143. package/dist/core/codegen/schemas/pipe.d.ts +7 -0
  144. package/dist/core/codegen/schemas/pipe.d.ts.map +1 -0
  145. package/dist/core/codegen/schemas/pipe.js +18 -0
  146. package/dist/core/codegen/schemas/pipe.js.map +1 -0
  147. package/dist/core/codegen/schemas/readonly.d.ts +7 -0
  148. package/dist/core/codegen/schemas/readonly.d.ts.map +1 -0
  149. package/dist/core/codegen/schemas/readonly.js +7 -0
  150. package/dist/core/codegen/schemas/readonly.js.map +1 -0
  151. package/dist/core/codegen/schemas/record.d.ts +7 -0
  152. package/dist/core/codegen/schemas/record.d.ts.map +1 -0
  153. package/dist/core/codegen/schemas/record.js +53 -0
  154. package/dist/core/codegen/schemas/record.js.map +1 -0
  155. package/dist/core/codegen/schemas/recursive-ref.d.ts +5 -0
  156. package/dist/core/codegen/schemas/recursive-ref.d.ts.map +1 -0
  157. package/dist/core/codegen/schemas/recursive-ref.js +24 -0
  158. package/dist/core/codegen/schemas/recursive-ref.js.map +1 -0
  159. package/dist/core/codegen/schemas/set.d.ts +7 -0
  160. package/dist/core/codegen/schemas/set.d.ts.map +1 -0
  161. package/dist/core/codegen/schemas/set.js +88 -0
  162. package/dist/core/codegen/schemas/set.js.map +1 -0
  163. package/dist/core/codegen/schemas/string-bool.d.ts +4 -0
  164. package/dist/core/codegen/schemas/string-bool.d.ts.map +1 -0
  165. package/dist/core/codegen/schemas/string-bool.js +39 -0
  166. package/dist/core/codegen/schemas/string-bool.js.map +1 -0
  167. package/dist/core/codegen/schemas/string.d.ts +5 -0
  168. package/dist/core/codegen/schemas/string.d.ts.map +1 -0
  169. package/dist/core/codegen/schemas/string.js +226 -0
  170. package/dist/core/codegen/schemas/string.js.map +1 -0
  171. package/dist/core/codegen/schemas/symbol.d.ts +5 -0
  172. package/dist/core/codegen/schemas/symbol.d.ts.map +1 -0
  173. package/dist/core/codegen/schemas/symbol.js +13 -0
  174. package/dist/core/codegen/schemas/symbol.js.map +1 -0
  175. package/dist/core/codegen/schemas/template-literal.d.ts +5 -0
  176. package/dist/core/codegen/schemas/template-literal.d.ts.map +1 -0
  177. package/dist/core/codegen/schemas/template-literal.js +16 -0
  178. package/dist/core/codegen/schemas/template-literal.js.map +1 -0
  179. package/dist/core/codegen/schemas/tuple.d.ts +15 -0
  180. package/dist/core/codegen/schemas/tuple.d.ts.map +1 -0
  181. package/dist/core/codegen/schemas/tuple.js +111 -0
  182. package/dist/core/codegen/schemas/tuple.js.map +1 -0
  183. package/dist/core/codegen/schemas/undefined.d.ts +5 -0
  184. package/dist/core/codegen/schemas/undefined.d.ts.map +1 -0
  185. package/dist/core/codegen/schemas/undefined.js +13 -0
  186. package/dist/core/codegen/schemas/undefined.js.map +1 -0
  187. package/dist/core/codegen/schemas/union.d.ts +7 -0
  188. package/dist/core/codegen/schemas/union.d.ts.map +1 -0
  189. package/dist/core/codegen/schemas/union.js +95 -0
  190. package/dist/core/codegen/schemas/union.js.map +1 -0
  191. package/dist/core/codegen/schemas/unknown.d.ts +5 -0
  192. package/dist/core/codegen/schemas/unknown.d.ts.map +1 -0
  193. package/dist/core/codegen/schemas/unknown.js +7 -0
  194. package/dist/core/codegen/schemas/unknown.js.map +1 -0
  195. package/dist/core/codegen/schemas/void.d.ts +5 -0
  196. package/dist/core/codegen/schemas/void.d.ts.map +1 -0
  197. package/dist/core/codegen/schemas/void.js +13 -0
  198. package/dist/core/codegen/schemas/void.js.map +1 -0
  199. package/dist/core/codegen/slow-path.d.ts +5 -0
  200. package/dist/core/codegen/slow-path.d.ts.map +1 -0
  201. package/dist/core/codegen/slow-path.js +113 -0
  202. package/dist/core/codegen/slow-path.js.map +1 -0
  203. package/dist/core/codegen/well-known-regex.d.ts +27 -0
  204. package/dist/core/codegen/well-known-regex.d.ts.map +1 -0
  205. package/dist/core/codegen/well-known-regex.js +51 -0
  206. package/dist/core/codegen/well-known-regex.js.map +1 -0
  207. package/dist/core/compile.d.ts +19 -0
  208. package/dist/core/compile.d.ts.map +1 -0
  209. package/dist/core/compile.js +37 -0
  210. package/dist/core/compile.js.map +1 -0
  211. package/dist/core/diagnostic.d.ts +46 -0
  212. package/dist/core/diagnostic.d.ts.map +1 -0
  213. package/dist/core/diagnostic.js +174 -0
  214. package/dist/core/diagnostic.js.map +1 -0
  215. package/dist/core/extract/checks.d.ts +35 -0
  216. package/dist/core/extract/checks.d.ts.map +1 -0
  217. package/dist/core/extract/checks.js +249 -0
  218. package/dist/core/extract/checks.js.map +1 -0
  219. package/dist/core/extract/effects.d.ts +12 -0
  220. package/dist/core/extract/effects.d.ts.map +1 -0
  221. package/dist/core/extract/effects.js +204 -0
  222. package/dist/core/extract/effects.js.map +1 -0
  223. package/dist/core/extract/extractors/any.d.ts +3 -0
  224. package/dist/core/extract/extractors/any.d.ts.map +1 -0
  225. package/dist/core/extract/extractors/any.js +2 -0
  226. package/dist/core/extract/extractors/any.js.map +1 -0
  227. package/dist/core/extract/extractors/array.d.ts +4 -0
  228. package/dist/core/extract/extractors/array.d.ts.map +1 -0
  229. package/dist/core/extract/extractors/array.js +19 -0
  230. package/dist/core/extract/extractors/array.js.map +1 -0
  231. package/dist/core/extract/extractors/bigint.d.ts +4 -0
  232. package/dist/core/extract/extractors/bigint.d.ts.map +1 -0
  233. package/dist/core/extract/extractors/bigint.js +70 -0
  234. package/dist/core/extract/extractors/bigint.js.map +1 -0
  235. package/dist/core/extract/extractors/boolean.d.ts +3 -0
  236. package/dist/core/extract/extractors/boolean.d.ts.map +1 -0
  237. package/dist/core/extract/extractors/boolean.js +5 -0
  238. package/dist/core/extract/extractors/boolean.js.map +1 -0
  239. package/dist/core/extract/extractors/catch.d.ts +11 -0
  240. package/dist/core/extract/extractors/catch.d.ts.map +1 -0
  241. package/dist/core/extract/extractors/catch.js +20 -0
  242. package/dist/core/extract/extractors/catch.js.map +1 -0
  243. package/dist/core/extract/extractors/date.d.ts +4 -0
  244. package/dist/core/extract/extractors/date.d.ts.map +1 -0
  245. package/dist/core/extract/extractors/date.js +49 -0
  246. package/dist/core/extract/extractors/date.js.map +1 -0
  247. package/dist/core/extract/extractors/default.d.ts +4 -0
  248. package/dist/core/extract/extractors/default.d.ts.map +1 -0
  249. package/dist/core/extract/extractors/default.js +11 -0
  250. package/dist/core/extract/extractors/default.js.map +1 -0
  251. package/dist/core/extract/extractors/enum.d.ts +3 -0
  252. package/dist/core/extract/extractors/enum.d.ts.map +1 -0
  253. package/dist/core/extract/extractors/enum.js +15 -0
  254. package/dist/core/extract/extractors/enum.js.map +1 -0
  255. package/dist/core/extract/extractors/file.d.ts +4 -0
  256. package/dist/core/extract/extractors/file.d.ts.map +1 -0
  257. package/dist/core/extract/extractors/file.js +24 -0
  258. package/dist/core/extract/extractors/file.js.map +1 -0
  259. package/dist/core/extract/extractors/index.d.ts +32 -0
  260. package/dist/core/extract/extractors/index.d.ts.map +1 -0
  261. package/dist/core/extract/extractors/index.js +32 -0
  262. package/dist/core/extract/extractors/index.js.map +1 -0
  263. package/dist/core/extract/extractors/intersection.d.ts +3 -0
  264. package/dist/core/extract/extractors/intersection.d.ts.map +1 -0
  265. package/dist/core/extract/extractors/intersection.js +14 -0
  266. package/dist/core/extract/extractors/intersection.js.map +1 -0
  267. package/dist/core/extract/extractors/lazy.d.ts +4 -0
  268. package/dist/core/extract/extractors/lazy.d.ts.map +1 -0
  269. package/dist/core/extract/extractors/lazy.js +23 -0
  270. package/dist/core/extract/extractors/lazy.js.map +1 -0
  271. package/dist/core/extract/extractors/literal.d.ts +3 -0
  272. package/dist/core/extract/extractors/literal.d.ts.map +1 -0
  273. package/dist/core/extract/extractors/literal.js +2 -0
  274. package/dist/core/extract/extractors/literal.js.map +1 -0
  275. package/dist/core/extract/extractors/map.d.ts +4 -0
  276. package/dist/core/extract/extractors/map.d.ts.map +1 -0
  277. package/dist/core/extract/extractors/map.js +6 -0
  278. package/dist/core/extract/extractors/map.js.map +1 -0
  279. package/dist/core/extract/extractors/nan.d.ts +3 -0
  280. package/dist/core/extract/extractors/nan.d.ts.map +1 -0
  281. package/dist/core/extract/extractors/nan.js +2 -0
  282. package/dist/core/extract/extractors/nan.js.map +1 -0
  283. package/dist/core/extract/extractors/never.d.ts +3 -0
  284. package/dist/core/extract/extractors/never.d.ts.map +1 -0
  285. package/dist/core/extract/extractors/never.js +2 -0
  286. package/dist/core/extract/extractors/never.js.map +1 -0
  287. package/dist/core/extract/extractors/null.d.ts +3 -0
  288. package/dist/core/extract/extractors/null.d.ts.map +1 -0
  289. package/dist/core/extract/extractors/null.js +2 -0
  290. package/dist/core/extract/extractors/null.js.map +1 -0
  291. package/dist/core/extract/extractors/nullable.d.ts +3 -0
  292. package/dist/core/extract/extractors/nullable.d.ts.map +1 -0
  293. package/dist/core/extract/extractors/nullable.js +5 -0
  294. package/dist/core/extract/extractors/nullable.js.map +1 -0
  295. package/dist/core/extract/extractors/number.d.ts +4 -0
  296. package/dist/core/extract/extractors/number.d.ts.map +1 -0
  297. package/dist/core/extract/extractors/number.js +38 -0
  298. package/dist/core/extract/extractors/number.js.map +1 -0
  299. package/dist/core/extract/extractors/object.d.ts +4 -0
  300. package/dist/core/extract/extractors/object.d.ts.map +1 -0
  301. package/dist/core/extract/extractors/object.js +43 -0
  302. package/dist/core/extract/extractors/object.js.map +1 -0
  303. package/dist/core/extract/extractors/optional.d.ts +3 -0
  304. package/dist/core/extract/extractors/optional.d.ts.map +1 -0
  305. package/dist/core/extract/extractors/optional.js +14 -0
  306. package/dist/core/extract/extractors/optional.js.map +1 -0
  307. package/dist/core/extract/extractors/pipe.d.ts +4 -0
  308. package/dist/core/extract/extractors/pipe.d.ts.map +1 -0
  309. package/dist/core/extract/extractors/pipe.js +31 -0
  310. package/dist/core/extract/extractors/pipe.js.map +1 -0
  311. package/dist/core/extract/extractors/readonly.d.ts +9 -0
  312. package/dist/core/extract/extractors/readonly.d.ts.map +1 -0
  313. package/dist/core/extract/extractors/readonly.js +8 -0
  314. package/dist/core/extract/extractors/readonly.js.map +1 -0
  315. package/dist/core/extract/extractors/record.d.ts +4 -0
  316. package/dist/core/extract/extractors/record.d.ts.map +1 -0
  317. package/dist/core/extract/extractors/record.js +39 -0
  318. package/dist/core/extract/extractors/record.js.map +1 -0
  319. package/dist/core/extract/extractors/set.d.ts +4 -0
  320. package/dist/core/extract/extractors/set.d.ts.map +1 -0
  321. package/dist/core/extract/extractors/set.js +33 -0
  322. package/dist/core/extract/extractors/set.js.map +1 -0
  323. package/dist/core/extract/extractors/string-bool.d.ts +10 -0
  324. package/dist/core/extract/extractors/string-bool.d.ts.map +1 -0
  325. package/dist/core/extract/extractors/string-bool.js +92 -0
  326. package/dist/core/extract/extractors/string-bool.js.map +1 -0
  327. package/dist/core/extract/extractors/string.d.ts +4 -0
  328. package/dist/core/extract/extractors/string.d.ts.map +1 -0
  329. package/dist/core/extract/extractors/string.js +41 -0
  330. package/dist/core/extract/extractors/string.js.map +1 -0
  331. package/dist/core/extract/extractors/symbol.d.ts +3 -0
  332. package/dist/core/extract/extractors/symbol.d.ts.map +1 -0
  333. package/dist/core/extract/extractors/symbol.js +2 -0
  334. package/dist/core/extract/extractors/symbol.js.map +1 -0
  335. package/dist/core/extract/extractors/template-literal.d.ts +4 -0
  336. package/dist/core/extract/extractors/template-literal.d.ts.map +1 -0
  337. package/dist/core/extract/extractors/template-literal.js +8 -0
  338. package/dist/core/extract/extractors/template-literal.js.map +1 -0
  339. package/dist/core/extract/extractors/tuple.d.ts +4 -0
  340. package/dist/core/extract/extractors/tuple.d.ts.map +1 -0
  341. package/dist/core/extract/extractors/tuple.js +6 -0
  342. package/dist/core/extract/extractors/tuple.js.map +1 -0
  343. package/dist/core/extract/extractors/undefined.d.ts +3 -0
  344. package/dist/core/extract/extractors/undefined.d.ts.map +1 -0
  345. package/dist/core/extract/extractors/undefined.js +2 -0
  346. package/dist/core/extract/extractors/undefined.js.map +1 -0
  347. package/dist/core/extract/extractors/union.d.ts +4 -0
  348. package/dist/core/extract/extractors/union.d.ts.map +1 -0
  349. package/dist/core/extract/extractors/union.js +44 -0
  350. package/dist/core/extract/extractors/union.js.map +1 -0
  351. package/dist/core/extract/extractors/unknown.d.ts +3 -0
  352. package/dist/core/extract/extractors/unknown.d.ts.map +1 -0
  353. package/dist/core/extract/extractors/unknown.js +2 -0
  354. package/dist/core/extract/extractors/unknown.js.map +1 -0
  355. package/dist/core/extract/extractors/void.d.ts +3 -0
  356. package/dist/core/extract/extractors/void.d.ts.map +1 -0
  357. package/dist/core/extract/extractors/void.js +2 -0
  358. package/dist/core/extract/extractors/void.js.map +1 -0
  359. package/dist/core/extract/fallback.d.ts +4 -0
  360. package/dist/core/extract/fallback.d.ts.map +1 -0
  361. package/dist/core/extract/fallback.js +9 -0
  362. package/dist/core/extract/fallback.js.map +1 -0
  363. package/dist/core/extract/index.d.ts +11 -0
  364. package/dist/core/extract/index.d.ts.map +1 -0
  365. package/dist/core/extract/index.js +11 -0
  366. package/dist/core/extract/index.js.map +1 -0
  367. package/dist/core/extract/registry.d.ts +59 -0
  368. package/dist/core/extract/registry.d.ts.map +1 -0
  369. package/dist/core/extract/registry.js +152 -0
  370. package/dist/core/extract/registry.js.map +1 -0
  371. package/dist/core/extract/types.d.ts +114 -0
  372. package/dist/core/extract/types.d.ts.map +1 -0
  373. package/dist/core/extract/types.js +2 -0
  374. package/dist/core/extract/types.js.map +1 -0
  375. package/dist/core/iife.d.ts +38 -0
  376. package/dist/core/iife.d.ts.map +1 -0
  377. package/dist/core/iife.js +59 -0
  378. package/dist/core/iife.js.map +1 -0
  379. package/dist/core/pipeline.d.ts +26 -0
  380. package/dist/core/pipeline.d.ts.map +1 -0
  381. package/dist/core/pipeline.js +42 -0
  382. package/dist/core/pipeline.js.map +1 -0
  383. package/dist/core/types.d.ts +352 -0
  384. package/dist/core/types.d.ts.map +1 -0
  385. package/dist/core/types.js +6 -0
  386. package/dist/core/types.js.map +1 -0
  387. package/dist/discovery.d.ts +15 -0
  388. package/dist/discovery.d.ts.map +1 -0
  389. package/dist/discovery.js +40 -0
  390. package/dist/discovery.js.map +1 -0
  391. package/dist/index.d.ts +4 -670
  392. package/dist/index.d.ts.map +1 -0
  393. package/dist/index.js +2 -2550
  394. package/dist/index.js.map +1 -0
  395. package/dist/loader.d.ts +12 -0
  396. package/dist/loader.d.ts.map +1 -0
  397. package/dist/loader.js +76 -0
  398. package/dist/loader.js.map +1 -0
  399. package/dist/unplugin/bun.d.ts +3 -0
  400. package/dist/unplugin/bun.d.ts.map +1 -0
  401. package/dist/unplugin/bun.js +3 -0
  402. package/dist/unplugin/bun.js.map +1 -0
  403. package/dist/unplugin/esbuild.d.ts +3 -0
  404. package/dist/unplugin/esbuild.d.ts.map +1 -0
  405. package/dist/unplugin/esbuild.js +3 -0
  406. package/dist/unplugin/esbuild.js.map +1 -0
  407. package/dist/unplugin/farm.d.ts +3 -0
  408. package/dist/unplugin/farm.d.ts.map +1 -0
  409. package/dist/unplugin/farm.js +3 -0
  410. package/dist/unplugin/farm.js.map +1 -0
  411. package/dist/unplugin/index.d.ts +4 -0
  412. package/dist/unplugin/index.d.ts.map +1 -0
  413. package/dist/unplugin/index.js +75 -0
  414. package/dist/unplugin/index.js.map +1 -0
  415. package/dist/unplugin/rolldown.d.ts +3 -0
  416. package/dist/unplugin/rolldown.d.ts.map +1 -0
  417. package/dist/unplugin/rolldown.js +3 -0
  418. package/dist/unplugin/rolldown.js.map +1 -0
  419. package/dist/unplugin/rollup.d.ts +3 -0
  420. package/dist/unplugin/rollup.d.ts.map +1 -0
  421. package/dist/unplugin/rollup.js +3 -0
  422. package/dist/unplugin/rollup.js.map +1 -0
  423. package/dist/unplugin/rspack.d.ts +3 -0
  424. package/dist/unplugin/rspack.d.ts.map +1 -0
  425. package/dist/unplugin/rspack.js +3 -0
  426. package/dist/unplugin/rspack.js.map +1 -0
  427. package/dist/unplugin/transform.d.ts +36 -0
  428. package/dist/unplugin/transform.d.ts.map +1 -0
  429. package/dist/unplugin/transform.js +285 -0
  430. package/dist/unplugin/transform.js.map +1 -0
  431. package/dist/unplugin/types.d.ts +54 -0
  432. package/dist/unplugin/types.d.ts.map +1 -0
  433. package/dist/unplugin/types.js +19 -0
  434. package/dist/unplugin/types.js.map +1 -0
  435. package/dist/unplugin/virtual.d.ts +24 -0
  436. package/dist/unplugin/virtual.d.ts.map +1 -0
  437. package/dist/unplugin/virtual.js +62 -0
  438. package/dist/unplugin/virtual.js.map +1 -0
  439. package/dist/unplugin/vite.d.ts +3 -0
  440. package/dist/unplugin/vite.d.ts.map +1 -0
  441. package/dist/unplugin/vite.js +3 -0
  442. package/dist/unplugin/vite.js.map +1 -0
  443. package/dist/unplugin/webpack.d.ts +3 -0
  444. package/dist/unplugin/webpack.d.ts.map +1 -0
  445. package/dist/unplugin/webpack.js +3 -0
  446. package/dist/unplugin/webpack.js.map +1 -0
  447. package/package.json +110 -51
  448. package/dist/index.mjs +0 -2536
  449. package/dist/standalone.d.ts +0 -294
  450. package/dist/standalone.js +0 -523
  451. package/dist/standalone.mjs +0 -514
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,12 @@
1
+ export interface LoadOptions {
2
+ /** Append a cache-busting query parameter to bypass Node.js module cache (useful for HMR). */
3
+ cacheBust?: boolean | undefined;
4
+ }
5
+ /**
6
+ * Dynamically import a source file (.ts or .js).
7
+ * - Bun/Deno: native TypeScript support, direct import
8
+ * - Node.js: uses jiti for reliable TypeScript transpilation
9
+ * (handles extensionless imports, enums, path aliases, and all TS syntax)
10
+ */
11
+ export declare function loadSourceFile(filePath: string, options?: LoadOptions): Promise<Record<string, unknown>>;
12
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IAC1B,8FAA8F;IAC9F,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACjC;AA+CD;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAmBlC"}
package/dist/loader.js ADDED
@@ -0,0 +1,76 @@
1
+ import path from "node:path";
2
+ import { pathToFileURL } from "node:url";
3
+ import { getTsconfig } from "get-tsconfig";
4
+ function detectRuntime() {
5
+ if ("Bun" in globalThis)
6
+ return "bun";
7
+ if ("Deno" in globalThis)
8
+ return "deno";
9
+ return "node";
10
+ }
11
+ /** Cache: tsconfig.json absolute path → resolved jiti alias map */
12
+ const aliasCache = new Map();
13
+ /**
14
+ * Resolve tsconfig.json path aliases into the format jiti expects.
15
+ * Returns an empty object if no tsconfig.json is found or no paths are configured.
16
+ *
17
+ * tsconfig paths use wildcards: { "@/*": ["./src/*"] }
18
+ * jiti uses prefix matching: { "@": "/absolute/path/to/src" }
19
+ *
20
+ * The trailing "/*" is stripped from both key and value before passing to jiti.
21
+ */
22
+ function resolveTsconfigAliases(fromDir) {
23
+ const tsconfig = getTsconfig(fromDir);
24
+ if (!tsconfig)
25
+ return {};
26
+ const cached = aliasCache.get(tsconfig.path);
27
+ if (cached)
28
+ return cached;
29
+ const paths = tsconfig.config.compilerOptions?.paths;
30
+ if (!paths || Object.keys(paths).length === 0) {
31
+ const empty = {};
32
+ aliasCache.set(tsconfig.path, empty);
33
+ return empty;
34
+ }
35
+ const tsconfigDir = path.dirname(tsconfig.path);
36
+ const baseUrl = tsconfig.config.compilerOptions?.baseUrl;
37
+ const baseDir = baseUrl ? path.resolve(tsconfigDir, baseUrl) : tsconfigDir;
38
+ const alias = {};
39
+ for (const [pattern, targets] of Object.entries(paths)) {
40
+ if (!targets || targets.length === 0)
41
+ continue;
42
+ const target = targets[0];
43
+ if (!target)
44
+ continue;
45
+ // Strip trailing "/*" — jiti uses prefix matching, not glob wildcards
46
+ const key = pattern.endsWith("/*") ? pattern.slice(0, -2) : pattern;
47
+ const val = target.endsWith("/*") ? target.slice(0, -2) : target;
48
+ alias[key] = path.resolve(baseDir, val);
49
+ }
50
+ aliasCache.set(tsconfig.path, alias);
51
+ return alias;
52
+ }
53
+ /**
54
+ * Dynamically import a source file (.ts or .js).
55
+ * - Bun/Deno: native TypeScript support, direct import
56
+ * - Node.js: uses jiti for reliable TypeScript transpilation
57
+ * (handles extensionless imports, enums, path aliases, and all TS syntax)
58
+ */
59
+ export async function loadSourceFile(filePath, options) {
60
+ const absPath = path.resolve(filePath);
61
+ const runtime = detectRuntime();
62
+ const suffix = options?.cacheBust ? `?t=${Date.now()}` : "";
63
+ // Bun and Deno handle TypeScript natively
64
+ if (runtime === "bun" || runtime === "deno") {
65
+ return (await import(pathToFileURL(absPath).href + suffix));
66
+ }
67
+ const alias = resolveTsconfigAliases(path.dirname(absPath));
68
+ const { createJiti } = await import("jiti");
69
+ const jiti = createJiti(pathToFileURL(absPath).href, {
70
+ moduleCache: !options?.cacheBust,
71
+ alias,
72
+ jsx: true,
73
+ });
74
+ return (await jiti.import(absPath));
75
+ }
76
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAI3C,SAAS,aAAa;IACpB,IAAI,KAAK,IAAI,UAAU;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,MAAM,IAAI,UAAU;QAAE,OAAO,MAAM,CAAC;IACxC,OAAO,MAAM,CAAC;AAChB,CAAC;AAOD,mEAAmE;AACnE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkC,CAAC;AAE7D;;;;;;;;GAQG;AACH,SAAS,sBAAsB,CAAC,OAAe;IAC7C,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEzB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC;IACrD,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,KAAK,GAA2B,EAAE,CAAC;QACzC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC;IACzD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAE3E,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,sEAAsE;QACtE,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACpE,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACjE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,OAAqB;IAErB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAE5D,0CAA0C;IAC1C,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC5C,OAAO,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAA4B,CAAC;IACzF,CAAC;IAED,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAE5D,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE;QACnD,WAAW,EAAE,CAAC,OAAO,EAAE,SAAS;QAChC,KAAK;QACL,GAAG,EAAE,IAAI;KACV,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAA4B,CAAC;AACjE,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const _default: (options?: import("./types.js").ZodCompilerPluginOptions | undefined) => Bun.BunPlugin;
2
+ export default _default;
3
+ //# sourceMappingURL=bun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bun.d.ts","sourceRoot":"","sources":["../../src/unplugin/bun.ts"],"names":[],"mappings":";AAEA,wBAA4B"}
@@ -0,0 +1,3 @@
1
+ import { unplugin } from "./index.js";
2
+ export default unplugin.bun;
3
+ //# sourceMappingURL=bun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bun.js","sourceRoot":"","sources":["../../src/unplugin/bun.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,eAAe,QAAQ,CAAC,GAAG,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const _default: (options?: import("./types.js").ZodCompilerPluginOptions | undefined) => import("unplugin").EsbuildPlugin;
2
+ export default _default;
3
+ //# sourceMappingURL=esbuild.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esbuild.d.ts","sourceRoot":"","sources":["../../src/unplugin/esbuild.ts"],"names":[],"mappings":";AAEA,wBAAgC"}
@@ -0,0 +1,3 @@
1
+ import { unplugin } from "./index.js";
2
+ export default unplugin.esbuild;
3
+ //# sourceMappingURL=esbuild.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esbuild.js","sourceRoot":"","sources":["../../src/unplugin/esbuild.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,eAAe,QAAQ,CAAC,OAAO,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const _default: (options?: import("./types.js").ZodCompilerPluginOptions | undefined) => JsPlugin;
2
+ export default _default;
3
+ //# sourceMappingURL=farm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"farm.d.ts","sourceRoot":"","sources":["../../src/unplugin/farm.ts"],"names":[],"mappings":";AAEA,wBAA6B"}
@@ -0,0 +1,3 @@
1
+ import { unplugin } from "./index.js";
2
+ export default unplugin.farm;
3
+ //# sourceMappingURL=farm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"farm.js","sourceRoot":"","sources":["../../src/unplugin/farm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,eAAe,QAAQ,CAAC,IAAI,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ZodCompilerPluginOptions } from "./types.js";
2
+ export declare const unplugin: import("unplugin").UnpluginInstance<ZodCompilerPluginOptions | undefined, boolean>;
3
+ export type { ZodCompilerPluginOptions } from "./types.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/unplugin/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AA8B3D,eAAO,MAAM,QAAQ,oFA2DpB,CAAC;AAEF,YAAY,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,75 @@
1
+ import { createUnplugin } from "unplugin";
2
+ import { log, shouldTransform, transformCode } from "./transform.js";
3
+ import { BuildStatsAccumulator } from "./types.js";
4
+ import { loadVirtual, RESOLVED_RUNTIME_ID, resolveVirtualId, VIRTUAL_RUNTIME_ID, WP_RUNTIME_ID, } from "./virtual.js";
5
+ /**
6
+ * Frameworks whose resolveId/load hooks receive any import specifier, including
7
+ * `virtual:` URIs and bare specifiers, so lean-mode cross-file dedup works.
8
+ * webpack / rspack reject the `virtual:` URI scheme but accept bare specifiers,
9
+ * so they use WP_RUNTIME_ID (`__zod-compiler-runtime__`) instead of VIRTUAL_RUNTIME_ID.
10
+ */
11
+ const VIRTUAL_MODULE_FRAMEWORKS = new Set([
12
+ "vite",
13
+ "rollup",
14
+ "rolldown",
15
+ "esbuild",
16
+ "farm",
17
+ "bun",
18
+ "rspack",
19
+ "webpack",
20
+ ]);
21
+ /** Frameworks that need the bare-specifier runtime ID instead of `virtual:`. */
22
+ const WP_FRAMEWORKS = new Set(["rspack", "webpack"]);
23
+ export const unplugin = createUnplugin((options, meta) => {
24
+ const stats = new BuildStatsAccumulator();
25
+ const cache = new Map();
26
+ const verbose = options?.verbose === true;
27
+ const mode = VIRTUAL_MODULE_FRAMEWORKS.has(meta.framework) ? "lean" : "inline";
28
+ const runtimeId = WP_FRAMEWORKS.has(meta.framework) ? WP_RUNTIME_ID : VIRTUAL_RUNTIME_ID;
29
+ return {
30
+ name: "zod-compiler",
31
+ enforce: "pre",
32
+ resolveId(id) {
33
+ return resolveVirtualId(id);
34
+ },
35
+ loadInclude(id) {
36
+ return id === RESOLVED_RUNTIME_ID;
37
+ },
38
+ load(id) {
39
+ return loadVirtual(id);
40
+ },
41
+ transformInclude(id) {
42
+ return shouldTransform(id, options);
43
+ },
44
+ async transform(code, id) {
45
+ const cached = cache.get(id);
46
+ if (cached)
47
+ return { code: cached, map: null };
48
+ const result = await transformCode(code, id, {
49
+ mode,
50
+ runtimeId,
51
+ verbose,
52
+ zodCompat: options?.zodCompat,
53
+ autoDiscover: options?.autoDiscover,
54
+ onBuildStats(s) {
55
+ stats.add(s);
56
+ },
57
+ });
58
+ if (!result)
59
+ return;
60
+ cache.set(id, result);
61
+ return { code: result, map: null };
62
+ },
63
+ buildEnd() {
64
+ if (!verbose)
65
+ return;
66
+ if (stats.schemas === 0)
67
+ return;
68
+ log(`Build summary: ${stats.optimized}/${stats.schemas} schemas optimized across ${stats.files} file(s)` +
69
+ (stats.failed > 0 ? `, ${stats.failed} failed` : ""));
70
+ stats.reset();
71
+ cache.clear();
72
+ },
73
+ };
74
+ });
75
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/unplugin/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const _default: (options?: import("./types.js").ZodCompilerPluginOptions | undefined) => import("rolldown").Plugin<any> | import("rolldown").Plugin<any>[];
2
+ export default _default;
3
+ //# sourceMappingURL=rolldown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rolldown.d.ts","sourceRoot":"","sources":["../../src/unplugin/rolldown.ts"],"names":[],"mappings":";AAEA,wBAAiC"}
@@ -0,0 +1,3 @@
1
+ import { unplugin } from "./index.js";
2
+ export default unplugin.rolldown;
3
+ //# sourceMappingURL=rolldown.js.map
@@ -0,0 +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"}
@@ -0,0 +1,3 @@
1
+ declare const _default: (options?: import("./types.js").ZodCompilerPluginOptions | undefined) => any;
2
+ export default _default;
3
+ //# sourceMappingURL=rollup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/unplugin/rollup.ts"],"names":[],"mappings":";AAEA,wBAA+B"}
@@ -0,0 +1,3 @@
1
+ import { unplugin } from "./index.js";
2
+ export default unplugin.rollup;
3
+ //# sourceMappingURL=rollup.js.map
@@ -0,0 +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"}
@@ -0,0 +1,3 @@
1
+ declare const _default: (options?: import("./types.js").ZodCompilerPluginOptions | undefined) => import("unplugin").RspackPluginInstance;
2
+ export default _default;
3
+ //# sourceMappingURL=rspack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rspack.d.ts","sourceRoot":"","sources":["../../src/unplugin/rspack.ts"],"names":[],"mappings":";AAEA,wBAA+B"}
@@ -0,0 +1,3 @@
1
+ import { unplugin } from "./index.js";
2
+ export default unplugin.rspack;
3
+ //# sourceMappingURL=rspack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rspack.js","sourceRoot":"","sources":["../../src/unplugin/rspack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,eAAe,QAAQ,CAAC,MAAM,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { type CompiledSchemaInfo } from "#src/core/pipeline.js";
2
+ import type { TransformOptions, ZodCompilerPluginOptions } from "./types.js";
3
+ /**
4
+ * Check if a file should be transformed by the plugin.
5
+ */
6
+ export declare function shouldTransform(id: string, options?: ZodCompilerPluginOptions): boolean;
7
+ export declare function log(msg: string): void;
8
+ /**
9
+ * Transform source code by replacing compile() calls with optimized validators.
10
+ * Returns the transformed code or null if no transformation was needed.
11
+ */
12
+ export declare function transformCode(code: string, id: string, options: TransformOptions): Promise<string | null>;
13
+ /**
14
+ * Rewrite source code by replacing compile() calls with IIFE-wrapped optimized validators.
15
+ */
16
+ export declare function rewriteSource(code: string, schemas: CompiledSchemaInfo[], options?: {
17
+ zodCompat?: boolean | undefined;
18
+ }): string;
19
+ /**
20
+ * Find the end position of a JavaScript expression starting at `start` using acorn.
21
+ * Returns the end offset, or -1 if the expression cannot be parsed.
22
+ */
23
+ export declare function findExpressionEnd(code: string, start: number): number;
24
+ /**
25
+ * Rewrite source code by replacing plain Zod schema exports with IIFE-wrapped optimized validators.
26
+ * Used by autoDiscover mode (no compile() wrappers needed).
27
+ */
28
+ export declare function rewriteSourceAutoDiscover(code: string, schemas: CompiledSchemaInfo[], options?: {
29
+ zodCompat?: boolean | undefined;
30
+ }): string;
31
+ /**
32
+ * Remove the `compile` binding from `import { compile, ... } from "zod-compiler"` statements.
33
+ * If `compile` is the only import, the entire import line is removed.
34
+ */
35
+ export declare function removeCompileImport(code: string): string;
36
+ //# sourceMappingURL=transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/unplugin/transform.ts"],"names":[],"mappings":"AAUA,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAM7E;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAevF;AAED,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAGrC;AAOD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkHxB;AA8DD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,kBAAkB,EAAE,EAC7B,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,GAC5C,MAAM,CA2BR;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAUrE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,kBAAkB,EAAE,EAC7B,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,GAC5C,MAAM,CAuBR;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAaxD"}
@@ -0,0 +1,285 @@
1
+ import { parseExpressionAt } from "acorn";
2
+ import picomatch from "picomatch";
3
+ import { FIN_DECL, generateIIFE, MK_VALIDATOR_DECL, ZOD_CONFIG_IMPORT, ZOD_MSG_DECLARATION, } from "#src/core/iife.js";
4
+ import { aggregateUsedHelpers, compileSchemas, } from "#src/core/pipeline.js";
5
+ import { discoverSchemas } from "#src/discovery.js";
6
+ import { VIRTUAL_RUNTIME_ID } from "./virtual.js";
7
+ /** Matches a runtime (non-type-only) import from "zod". */
8
+ const HAS_RUNTIME_ZOD_IMPORT = /import\s+(?!type\s)[^;]*from\s+["']zod["']/;
9
+ /**
10
+ * Check if a file should be transformed by the plugin.
11
+ */
12
+ export function shouldTransform(id, options) {
13
+ if (!/\.[cm]?[jt]sx?$/.test(id))
14
+ return false;
15
+ if (id.includes("node_modules"))
16
+ return false;
17
+ if (id.endsWith(".d.ts"))
18
+ return false;
19
+ if (id.endsWith(".compiled.ts") || id.endsWith(".compiled.js"))
20
+ return false;
21
+ if (options?.exclude?.some((pattern) => picomatch.isMatch(id, pattern, { contains: true })))
22
+ return false;
23
+ if (options?.include &&
24
+ !options.include.some((pattern) => picomatch.isMatch(id, pattern, { contains: true })))
25
+ return false;
26
+ return true;
27
+ }
28
+ export function log(msg) {
29
+ // biome-ignore lint/suspicious/noConsole: build output
30
+ console.log(`[zod-compiler] ${msg}`);
31
+ }
32
+ function warn(msg) {
33
+ // biome-ignore lint/suspicious/noConsole: build output
34
+ console.warn(`[zod-compiler] ${msg}`);
35
+ }
36
+ /**
37
+ * Transform source code by replacing compile() calls with optimized validators.
38
+ * Returns the transformed code or null if no transformation was needed.
39
+ */
40
+ export async function transformCode(code, id, options) {
41
+ const verbose = options.verbose === true;
42
+ const autoDiscover = options.autoDiscover === true;
43
+ const mode = options.mode;
44
+ // Quick bail-out check
45
+ if (autoDiscover) {
46
+ // autoDiscover: any file with a runtime Zod import is a candidate.
47
+ // Skip `import type` — these files have no runtime schemas.
48
+ if (!HAS_RUNTIME_ZOD_IMPORT.test(code))
49
+ return null;
50
+ }
51
+ else {
52
+ // Legacy mode: require compile() from zod-compiler. The word-boundary
53
+ // check matters: the package name itself contains the substring
54
+ // "compile", so a plain includes("compile") would match every import of
55
+ // "zod-compiler" — \bcompile\b does not match inside "zod-compiler"
56
+ // (no boundary between "e" and "r") but matches compile( / { compile }.
57
+ if (!code.includes("zod-compiler") || !/\bcompile\b/.test(code))
58
+ return null;
59
+ }
60
+ // Discover schemas by executing the file (with cache busting for HMR)
61
+ let schemas;
62
+ try {
63
+ schemas = await discoverSchemas(id, { cacheBust: true, autoDiscover });
64
+ }
65
+ catch (e) {
66
+ const msg = e instanceof Error ? e.message : String(e);
67
+ // In autoDiscover mode, files that can't be loaded (JSX components,
68
+ // unresolved path aliases, etc.) are expected — warn and skip.
69
+ if (autoDiscover) {
70
+ if (verbose) {
71
+ warn(`Skipping ${id}: ${msg}`);
72
+ }
73
+ return null;
74
+ }
75
+ throw new Error(`[zod-compiler] Failed to load schemas from ${id}: ${msg}`);
76
+ }
77
+ if (schemas.length === 0)
78
+ return null;
79
+ // Lean mode (Vite/Rollup/etc.) uses virtual:zod-compiler/runtime imports for cross-file dedup.
80
+ // Inline mode (webpack/rspack) emits self-contained file-level helpers.
81
+ let failedCount = 0;
82
+ const compiled = compileSchemas(schemas, {
83
+ mode,
84
+ onError(exportName, error) {
85
+ failedCount++;
86
+ warn(`Failed to compile "${exportName}" in ${id}: ${error.message}. Keeping original${autoDiscover ? "" : " compile()"} call.`);
87
+ },
88
+ });
89
+ if (verbose) {
90
+ if (autoDiscover) {
91
+ log(`Auto-discovering: ${id} (${schemas.length} Zod export${schemas.length > 1 ? "s" : ""} found)`);
92
+ }
93
+ for (const s of compiled) {
94
+ const rfCount = s.refEntries.length;
95
+ const rfSuffix = rfCount > 0 ? ` (${rfCount} ref${rfCount > 1 ? "s" : ""})` : "";
96
+ log(` ✓ ${s.exportName}${rfSuffix}`);
97
+ }
98
+ if (failedCount > 0) {
99
+ log(` ✗ ${failedCount} schema(s) failed`);
100
+ }
101
+ }
102
+ if (compiled.length === 0)
103
+ return null;
104
+ // Report build stats only when at least one schema was compiled
105
+ options.onBuildStats?.({
106
+ files: 1,
107
+ schemas: schemas.length,
108
+ optimized: compiled.length,
109
+ failed: failedCount,
110
+ });
111
+ // __mkv and __fin are always needed (they wrap every IIFE).
112
+ const usedHelpers = aggregateUsedHelpers(compiled);
113
+ usedHelpers.add("__mkv");
114
+ usedHelpers.add("__fin");
115
+ // Two-pass rewrite: separate compile() schemas from autoDiscover schemas
116
+ if (autoDiscover) {
117
+ // Detect compile() schemas by checking source code patterns
118
+ const compileExportNames = new Set();
119
+ for (const s of compiled) {
120
+ const pattern = new RegExp(`\\b${s.exportName}\\s*=\\s*compile[\\s<(]`);
121
+ if (pattern.test(code)) {
122
+ compileExportNames.add(s.exportName);
123
+ }
124
+ }
125
+ const compileSchemaInfos = compiled.filter((s) => compileExportNames.has(s.exportName));
126
+ const autoDiscoverSchemaInfos = compiled.filter((s) => !compileExportNames.has(s.exportName));
127
+ let result = code;
128
+ // Pass 1: rewrite compile() schemas with existing function
129
+ if (compileSchemaInfos.length > 0) {
130
+ result = rewriteSource(result, compileSchemaInfos, { zodCompat: options.zodCompat });
131
+ }
132
+ // Pass 2: rewrite autoDiscover schemas with new function
133
+ if (autoDiscoverSchemaInfos.length > 0) {
134
+ result = rewriteSourceAutoDiscover(result, autoDiscoverSchemaInfos, {
135
+ zodCompat: options.zodCompat,
136
+ });
137
+ }
138
+ return injectRuntime(result, usedHelpers, mode, options.runtimeId);
139
+ }
140
+ return injectRuntime(rewriteSource(code, compiled, { zodCompat: options.zodCompat }), usedHelpers, mode, options.runtimeId);
141
+ }
142
+ /**
143
+ * Prepend the runtime helpers required by the rewritten source.
144
+ *
145
+ * Lean mode emits a single `import { ... } from "<runtimeId>";` line —
146
+ * bundlers whose resolveId hook intercepts the specifier dedup helpers across
147
+ * every transformed file into one shared virtual module.
148
+ *
149
+ * Inline mode prepends file-level `function __mkv` / `function __fin`
150
+ * declarations directly so the file is self-contained.
151
+ *
152
+ * Idempotent: if the file already contains the relevant marker (re-run during
153
+ * watch/HMR), we skip re-injection.
154
+ */
155
+ function injectRuntime(code, usedHelpers, mode, runtimeId = VIRTUAL_RUNTIME_ID) {
156
+ if (mode === "lean") {
157
+ if (usedHelpers.size === 0)
158
+ return code;
159
+ if (code.includes(runtimeId))
160
+ return code;
161
+ const names = [...usedHelpers].sort().join(", ");
162
+ return `import { ${names} } from "${runtimeId}";\n${code}`;
163
+ }
164
+ // Inline mode (CLI emitter, and any bundler not in VIRTUAL_MODULE_FRAMEWORKS):
165
+ // ship file-level helper declarations instead of a virtual import.
166
+ // Codegen emits per-IIFE issue literals + per-IIFE `__re_*` decls,
167
+ // so we only need __mkv / __fin (plus __msg via the zod config import).
168
+ if (!code.includes("__mkv"))
169
+ return code;
170
+ const prefix = [];
171
+ if (!code.includes("__zodCompilerConfig")) {
172
+ prefix.push(ZOD_CONFIG_IMPORT, ZOD_MSG_DECLARATION);
173
+ }
174
+ if (!code.includes("function __mkv(")) {
175
+ prefix.push(MK_VALIDATOR_DECL);
176
+ }
177
+ if (!code.includes("function __fin(")) {
178
+ prefix.push(FIN_DECL);
179
+ }
180
+ return prefix.length > 0 ? [...prefix, code].join("\n") : code;
181
+ }
182
+ /**
183
+ * Find the matching closing parenthesis for a compile() call,
184
+ * handling nested parentheses like compile(z.object({...})).
185
+ * Returns the index of the closing ')' or -1 if not found.
186
+ */
187
+ function findMatchingParen(code, openIndex) {
188
+ let depth = 1;
189
+ for (let i = openIndex + 1; i < code.length; i++) {
190
+ if (code[i] === "(")
191
+ depth++;
192
+ else if (code[i] === ")") {
193
+ depth--;
194
+ if (depth === 0)
195
+ return i;
196
+ }
197
+ }
198
+ return -1;
199
+ }
200
+ /**
201
+ * Rewrite source code by replacing compile() calls with IIFE-wrapped optimized validators.
202
+ */
203
+ export function rewriteSource(code, schemas, options) {
204
+ let result = code;
205
+ for (const schema of schemas) {
206
+ // Match: <exportName> = compile<...>( with word boundary to prevent substring matches
207
+ const prefixPattern = new RegExp(`(\\b${schema.exportName}\\s*=\\s*)compile\\s*(?:<[^>]*(?:<[^>]*>[^>]*)?>)?\\s*\\(`);
208
+ const match = prefixPattern.exec(result);
209
+ if (!match)
210
+ continue;
211
+ // Find the matching closing paren (handles nested parens)
212
+ const openParenIndex = match.index + match[0].length - 1;
213
+ const closeParenIndex = findMatchingParen(result, openParenIndex);
214
+ if (closeParenIndex === -1)
215
+ continue;
216
+ const schemaArgName = result
217
+ .slice(openParenIndex + 1, closeParenIndex)
218
+ .trim()
219
+ .replace(/,\s*$/, "");
220
+ const prefix = match[1] ?? "";
221
+ const fullMatch = result.slice(match.index, closeParenIndex + 1);
222
+ const replacement = prefix + generateIIFE(schemaArgName, schema, options);
223
+ result = result.replace(fullMatch, replacement);
224
+ }
225
+ return removeCompileImport(result);
226
+ }
227
+ /**
228
+ * Find the end position of a JavaScript expression starting at `start` using acorn.
229
+ * Returns the end offset, or -1 if the expression cannot be parsed.
230
+ */
231
+ export function findExpressionEnd(code, start) {
232
+ try {
233
+ const node = parseExpressionAt(code, start, {
234
+ ecmaVersion: "latest",
235
+ sourceType: "module",
236
+ });
237
+ return node.end;
238
+ }
239
+ catch {
240
+ return -1;
241
+ }
242
+ }
243
+ /**
244
+ * Rewrite source code by replacing plain Zod schema exports with IIFE-wrapped optimized validators.
245
+ * Used by autoDiscover mode (no compile() wrappers needed).
246
+ */
247
+ export function rewriteSourceAutoDiscover(code, schemas, options) {
248
+ let result = code;
249
+ for (const schema of schemas) {
250
+ const escapedName = schema.exportName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
251
+ // Match: export? (const|let|var) ExportName[: TypeAnnotation] = <expr>
252
+ const assignPattern = new RegExp(`((?:export\\s+)?(?:const|let|var)\\s+${escapedName}(?:\\s*:[^=]*)?\\s*=\\s*)`);
253
+ const match = assignPattern.exec(result);
254
+ if (!match)
255
+ continue;
256
+ const rhsStart = match.index + match[0].length;
257
+ const rhsEnd = findExpressionEnd(result, rhsStart);
258
+ if (rhsEnd === -1)
259
+ continue;
260
+ const originalExpr = result.slice(rhsStart, rhsEnd).trim();
261
+ const prefix = match[1] ?? "";
262
+ const iife = generateIIFE(originalExpr, schema, options);
263
+ result = result.slice(0, match.index) + prefix + iife + result.slice(rhsEnd);
264
+ }
265
+ return result;
266
+ }
267
+ /**
268
+ * Remove the `compile` binding from `import { compile, ... } from "zod-compiler"` statements.
269
+ * If `compile` is the only import, the entire import line is removed.
270
+ */
271
+ export function removeCompileImport(code) {
272
+ // Match: import { ... } from "zod-compiler" or 'zod-compiler'
273
+ const importPattern = /import\s*\{([^}]*)\}\s*from\s*["']zod-compiler["'];?/g;
274
+ return code.replace(importPattern, (_match, imports) => {
275
+ const names = imports
276
+ .split(",")
277
+ .map((n) => n.trim())
278
+ .filter(Boolean);
279
+ const remaining = names.filter((n) => n !== "compile");
280
+ if (remaining.length === 0)
281
+ return "";
282
+ return `import { ${remaining.join(", ")} } from "zod-compiler";`;
283
+ });
284
+ }
285
+ //# sourceMappingURL=transform.js.map