@pagesmith/docs 0.1.0 → 0.2.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 (626) hide show
  1. package/dist/cli/bin.mjs +14 -2
  2. package/dist/cli/bin.mjs.map +1 -1
  3. package/dist/index.d.mts +55 -5
  4. package/dist/index.d.mts.map +1 -1
  5. package/dist/index.mjs +2 -2
  6. package/dist/preset.mjs +1 -1
  7. package/dist/schemas/index.d.mts +2 -1615
  8. package/dist/schemas/index.mjs +2 -263
  9. package/dist/site-BY2caZ_v.mjs +11834 -0
  10. package/dist/site-BY2caZ_v.mjs.map +1 -0
  11. package/package.json +3 -15
  12. package/theme/components/Html.tsx +9 -0
  13. package/dist/abap-DriO5VG6.mjs +0 -5
  14. package/dist/abap-DriO5VG6.mjs.map +0 -1
  15. package/dist/actionscript-3-G6toewHp.mjs +0 -5
  16. package/dist/actionscript-3-G6toewHp.mjs.map +0 -1
  17. package/dist/ada-C_QiJ0Pq.mjs +0 -5
  18. package/dist/ada-C_QiJ0Pq.mjs.map +0 -1
  19. package/dist/andromeeda-CoIEPgYR.mjs +0 -6
  20. package/dist/andromeeda-CoIEPgYR.mjs.map +0 -1
  21. package/dist/angular-html-D9wIlok7.mjs +0 -35
  22. package/dist/angular-html-D9wIlok7.mjs.map +0 -1
  23. package/dist/angular-ts-Dxk7hl9Z.mjs +0 -29
  24. package/dist/angular-ts-Dxk7hl9Z.mjs.map +0 -1
  25. package/dist/apache-B1aRGcgY.mjs +0 -5
  26. package/dist/apache-B1aRGcgY.mjs.map +0 -1
  27. package/dist/apex-FoK4UgwA.mjs +0 -5
  28. package/dist/apex-FoK4UgwA.mjs.map +0 -1
  29. package/dist/apl-DwmTqCJs.mjs +0 -19
  30. package/dist/apl-DwmTqCJs.mjs.map +0 -1
  31. package/dist/applescript-eBeY0Hp4.mjs +0 -5
  32. package/dist/applescript-eBeY0Hp4.mjs.map +0 -1
  33. package/dist/ara-CkIucGv1.mjs +0 -5
  34. package/dist/ara-CkIucGv1.mjs.map +0 -1
  35. package/dist/asciidoc-AIdrECCR.mjs +0 -5
  36. package/dist/asciidoc-AIdrECCR.mjs.map +0 -1
  37. package/dist/asm-CflFLM6a.mjs +0 -5
  38. package/dist/asm-CflFLM6a.mjs.map +0 -1
  39. package/dist/astro-DLt5gl0n.mjs +0 -21
  40. package/dist/astro-DLt5gl0n.mjs.map +0 -1
  41. package/dist/aurora-x-DbqEqkUT.mjs +0 -6
  42. package/dist/aurora-x-DbqEqkUT.mjs.map +0 -1
  43. package/dist/awk-Br_61sCS.mjs +0 -5
  44. package/dist/awk-Br_61sCS.mjs.map +0 -1
  45. package/dist/ayu-dark-DdJXJf7U.mjs +0 -6
  46. package/dist/ayu-dark-DdJXJf7U.mjs.map +0 -1
  47. package/dist/ayu-light-Bg-9Hujp.mjs +0 -6
  48. package/dist/ayu-light-Bg-9Hujp.mjs.map +0 -1
  49. package/dist/ayu-mirage-7v6-qMvl.mjs +0 -6
  50. package/dist/ayu-mirage-7v6-qMvl.mjs.map +0 -1
  51. package/dist/ballerina-D-8GYl8R.mjs +0 -5
  52. package/dist/ballerina-D-8GYl8R.mjs.map +0 -1
  53. package/dist/bat-CJ4nIaxw.mjs +0 -5
  54. package/dist/bat-CJ4nIaxw.mjs.map +0 -1
  55. package/dist/beancount-DFPOglwN.mjs +0 -5
  56. package/dist/beancount-DFPOglwN.mjs.map +0 -1
  57. package/dist/berry-DiM_rwEt.mjs +0 -5
  58. package/dist/berry-DiM_rwEt.mjs.map +0 -1
  59. package/dist/bibtex-ryU9pJLB.mjs +0 -5
  60. package/dist/bibtex-ryU9pJLB.mjs.map +0 -1
  61. package/dist/bicep-DFoNCrG3.mjs +0 -5
  62. package/dist/bicep-DFoNCrG3.mjs.map +0 -1
  63. package/dist/bird2-C3EaFiUY.mjs +0 -5
  64. package/dist/bird2-C3EaFiUY.mjs.map +0 -1
  65. package/dist/blade-Cwq7FVfH.mjs +0 -23
  66. package/dist/blade-Cwq7FVfH.mjs.map +0 -1
  67. package/dist/bsl-Ci4vkNj8.mjs +0 -8
  68. package/dist/bsl-Ci4vkNj8.mjs.map +0 -1
  69. package/dist/c-D7oHDxxD.mjs +0 -8
  70. package/dist/c-D7oHDxxD.mjs.map +0 -1
  71. package/dist/c3-D5hU-x2t.mjs +0 -5
  72. package/dist/c3-D5hU-x2t.mjs.map +0 -1
  73. package/dist/cadence-B-Z42oTz.mjs +0 -5
  74. package/dist/cadence-B-Z42oTz.mjs.map +0 -1
  75. package/dist/cairo-BpET0YK1.mjs +0 -8
  76. package/dist/cairo-BpET0YK1.mjs.map +0 -1
  77. package/dist/catppuccin-frappe-0BRWFMtJ.mjs +0 -6
  78. package/dist/catppuccin-frappe-0BRWFMtJ.mjs.map +0 -1
  79. package/dist/catppuccin-latte-VaqpfzxV.mjs +0 -6
  80. package/dist/catppuccin-latte-VaqpfzxV.mjs.map +0 -1
  81. package/dist/catppuccin-macchiato-qrypRbXk.mjs +0 -6
  82. package/dist/catppuccin-macchiato-qrypRbXk.mjs.map +0 -1
  83. package/dist/catppuccin-mocha-Dvb6gv4O.mjs +0 -6
  84. package/dist/catppuccin-mocha-Dvb6gv4O.mjs.map +0 -1
  85. package/dist/clarity-egx-5RLz.mjs +0 -5
  86. package/dist/clarity-egx-5RLz.mjs.map +0 -1
  87. package/dist/clojure-N5xIuTbG.mjs +0 -5
  88. package/dist/clojure-N5xIuTbG.mjs.map +0 -1
  89. package/dist/cmake-CYzXNVI_.mjs +0 -5
  90. package/dist/cmake-CYzXNVI_.mjs.map +0 -1
  91. package/dist/cobol-DuznKErk.mjs +0 -13
  92. package/dist/cobol-DuznKErk.mjs.map +0 -1
  93. package/dist/codeowners-BaallJaj.mjs +0 -5
  94. package/dist/codeowners-BaallJaj.mjs.map +0 -1
  95. package/dist/codeql-BIahF8Ga.mjs +0 -5
  96. package/dist/codeql-BIahF8Ga.mjs.map +0 -1
  97. package/dist/coffee-t6lXzaXy.mjs +0 -8
  98. package/dist/coffee-t6lXzaXy.mjs.map +0 -1
  99. package/dist/common-lisp-bLMBDFt9.mjs +0 -5
  100. package/dist/common-lisp-bLMBDFt9.mjs.map +0 -1
  101. package/dist/coq-h9z5p2Ui.mjs +0 -5
  102. package/dist/coq-h9z5p2Ui.mjs.map +0 -1
  103. package/dist/cpp-D6_V2gI1.mjs +0 -27
  104. package/dist/cpp-D6_V2gI1.mjs.map +0 -1
  105. package/dist/crystal-BH-Qv6Rl.mjs +0 -21
  106. package/dist/crystal-BH-Qv6Rl.mjs.map +0 -1
  107. package/dist/csharp-BbHR3YVQ.mjs +0 -5
  108. package/dist/csharp-BbHR3YVQ.mjs.map +0 -1
  109. package/dist/css-Wu--EEs5.mjs +0 -8
  110. package/dist/css-Wu--EEs5.mjs.map +0 -1
  111. package/dist/csv-CRvIpAc5.mjs +0 -5
  112. package/dist/csv-CRvIpAc5.mjs.map +0 -1
  113. package/dist/cue-B8A_h-kS.mjs +0 -5
  114. package/dist/cue-B8A_h-kS.mjs.map +0 -1
  115. package/dist/cypher-B8mmimml.mjs +0 -5
  116. package/dist/cypher-B8mmimml.mjs.map +0 -1
  117. package/dist/d-Ddz3GmKc.mjs +0 -5
  118. package/dist/d-Ddz3GmKc.mjs.map +0 -1
  119. package/dist/dark-plus-BjClkp3W.mjs +0 -6
  120. package/dist/dark-plus-BjClkp3W.mjs.map +0 -1
  121. package/dist/dart-BOQAkR91.mjs +0 -5
  122. package/dist/dart-BOQAkR91.mjs.map +0 -1
  123. package/dist/dax-D3YKmfop.mjs +0 -5
  124. package/dist/dax-D3YKmfop.mjs.map +0 -1
  125. package/dist/desktop-wo52vLHj.mjs +0 -5
  126. package/dist/desktop-wo52vLHj.mjs.map +0 -1
  127. package/dist/diff-nA9OrLiI.mjs +0 -5
  128. package/dist/diff-nA9OrLiI.mjs.map +0 -1
  129. package/dist/docker-BgWkJ5L9.mjs +0 -5
  130. package/dist/docker-BgWkJ5L9.mjs.map +0 -1
  131. package/dist/dotenv-90bAk1yC.mjs +0 -5
  132. package/dist/dotenv-90bAk1yC.mjs.map +0 -1
  133. package/dist/dracula-EYPvHKFq.mjs +0 -6
  134. package/dist/dracula-EYPvHKFq.mjs.map +0 -1
  135. package/dist/dracula-soft-Bb4JppaT.mjs +0 -6
  136. package/dist/dracula-soft-Bb4JppaT.mjs.map +0 -1
  137. package/dist/dream-maker-DbEH6ABX.mjs +0 -5
  138. package/dist/dream-maker-DbEH6ABX.mjs.map +0 -1
  139. package/dist/edge-CiNxTnJq.mjs +0 -15
  140. package/dist/edge-CiNxTnJq.mjs.map +0 -1
  141. package/dist/elixir-M-tyUuPQ.mjs +0 -8
  142. package/dist/elixir-M-tyUuPQ.mjs.map +0 -1
  143. package/dist/elm-CPy7ntV_.mjs +0 -8
  144. package/dist/elm-CPy7ntV_.mjs.map +0 -1
  145. package/dist/emacs-lisp-Brxx0Sbt.mjs +0 -5
  146. package/dist/emacs-lisp-Brxx0Sbt.mjs.map +0 -1
  147. package/dist/engine-javascript-CjxD84Z_.mjs +0 -3058
  148. package/dist/engine-javascript-CjxD84Z_.mjs.map +0 -1
  149. package/dist/engine-oniguruma-B2buYh9y.mjs +0 -389
  150. package/dist/engine-oniguruma-B2buYh9y.mjs.map +0 -1
  151. package/dist/erb-CP0kP8S1.mjs +0 -13
  152. package/dist/erb-CP0kP8S1.mjs.map +0 -1
  153. package/dist/erlang-Ji96SB8L.mjs +0 -8
  154. package/dist/erlang-Ji96SB8L.mjs.map +0 -1
  155. package/dist/everforest-dark-mXu75VmU.mjs +0 -6
  156. package/dist/everforest-dark-mXu75VmU.mjs.map +0 -1
  157. package/dist/everforest-light-B0xAPlUp.mjs +0 -6
  158. package/dist/everforest-light-B0xAPlUp.mjs.map +0 -1
  159. package/dist/fennel-DZeZiT-Z.mjs +0 -5
  160. package/dist/fennel-DZeZiT-Z.mjs.map +0 -1
  161. package/dist/fish-BW_XyVWl.mjs +0 -5
  162. package/dist/fish-BW_XyVWl.mjs.map +0 -1
  163. package/dist/fluent-D5wjIx4S.mjs +0 -5
  164. package/dist/fluent-D5wjIx4S.mjs.map +0 -1
  165. package/dist/fortran-fixed-form-pFDq8aul.mjs +0 -8
  166. package/dist/fortran-fixed-form-pFDq8aul.mjs.map +0 -1
  167. package/dist/fortran-free-form-B6T0euh-.mjs +0 -5
  168. package/dist/fortran-free-form-B6T0euh-.mjs.map +0 -1
  169. package/dist/fsharp-DFzfL_uZ.mjs +0 -8
  170. package/dist/fsharp-DFzfL_uZ.mjs.map +0 -1
  171. package/dist/gdresource-DZkMKM9Q.mjs +0 -13
  172. package/dist/gdresource-DZkMKM9Q.mjs.map +0 -1
  173. package/dist/gdscript-DwtQqEcX.mjs +0 -5
  174. package/dist/gdscript-DwtQqEcX.mjs.map +0 -1
  175. package/dist/gdshader-rDwkUCaa.mjs +0 -5
  176. package/dist/gdshader-rDwkUCaa.mjs.map +0 -1
  177. package/dist/genie-BfhM6kGv.mjs +0 -5
  178. package/dist/genie-BfhM6kGv.mjs.map +0 -1
  179. package/dist/gherkin-G-JA03FJ.mjs +0 -5
  180. package/dist/gherkin-G-JA03FJ.mjs.map +0 -1
  181. package/dist/git-commit-drj2jjWh.mjs +0 -8
  182. package/dist/git-commit-drj2jjWh.mjs.map +0 -1
  183. package/dist/git-rebase-CaohyQnS.mjs +0 -8
  184. package/dist/git-rebase-CaohyQnS.mjs.map +0 -1
  185. package/dist/github-dark-CTenoRQ8.mjs +0 -6
  186. package/dist/github-dark-CTenoRQ8.mjs.map +0 -1
  187. package/dist/github-dark-default-Con6b1h-.mjs +0 -6
  188. package/dist/github-dark-default-Con6b1h-.mjs.map +0 -1
  189. package/dist/github-dark-dimmed-CaAnvWw3.mjs +0 -6
  190. package/dist/github-dark-dimmed-CaAnvWw3.mjs.map +0 -1
  191. package/dist/github-dark-high-contrast-COm7y1Rv.mjs +0 -6
  192. package/dist/github-dark-high-contrast-COm7y1Rv.mjs.map +0 -1
  193. package/dist/github-light-D74aa4dO.mjs +0 -6
  194. package/dist/github-light-D74aa4dO.mjs.map +0 -1
  195. package/dist/github-light-default-BBVzuVUz.mjs +0 -6
  196. package/dist/github-light-default-BBVzuVUz.mjs.map +0 -1
  197. package/dist/github-light-high-contrast-CqxSzsLD.mjs +0 -6
  198. package/dist/github-light-high-contrast-CqxSzsLD.mjs.map +0 -1
  199. package/dist/gleam-DzWkrReo.mjs +0 -5
  200. package/dist/gleam-DzWkrReo.mjs.map +0 -1
  201. package/dist/glimmer-js-BNQY0kPX.mjs +0 -17
  202. package/dist/glimmer-js-BNQY0kPX.mjs.map +0 -1
  203. package/dist/glimmer-ts-DO-qafJY.mjs +0 -17
  204. package/dist/glimmer-ts-DO-qafJY.mjs.map +0 -1
  205. package/dist/glsl-wU4MxvvQ.mjs +0 -10
  206. package/dist/glsl-wU4MxvvQ.mjs.map +0 -1
  207. package/dist/gn-DVz3m6tN.mjs +0 -5
  208. package/dist/gn-DVz3m6tN.mjs.map +0 -1
  209. package/dist/gnuplot-D4teOAbn.mjs +0 -5
  210. package/dist/gnuplot-D4teOAbn.mjs.map +0 -1
  211. package/dist/go-DcqYXZDE.mjs +0 -5
  212. package/dist/go-DcqYXZDE.mjs.map +0 -1
  213. package/dist/graphql-CAmmtGyG.mjs +0 -19
  214. package/dist/graphql-CAmmtGyG.mjs.map +0 -1
  215. package/dist/groovy-BdsJaZey.mjs +0 -5
  216. package/dist/groovy-BdsJaZey.mjs.map +0 -1
  217. package/dist/gruvbox-dark-hard-CGsJkBU-.mjs +0 -6
  218. package/dist/gruvbox-dark-hard-CGsJkBU-.mjs.map +0 -1
  219. package/dist/gruvbox-dark-medium-uVadnpDA.mjs +0 -6
  220. package/dist/gruvbox-dark-medium-uVadnpDA.mjs.map +0 -1
  221. package/dist/gruvbox-dark-soft-CGpZgcKq.mjs +0 -6
  222. package/dist/gruvbox-dark-soft-CGpZgcKq.mjs.map +0 -1
  223. package/dist/gruvbox-light-hard-BXZeSfoD.mjs +0 -6
  224. package/dist/gruvbox-light-hard-BXZeSfoD.mjs.map +0 -1
  225. package/dist/gruvbox-light-medium-D7mAxe90.mjs +0 -6
  226. package/dist/gruvbox-light-medium-D7mAxe90.mjs.map +0 -1
  227. package/dist/gruvbox-light-soft-enFNSJ1V.mjs +0 -6
  228. package/dist/gruvbox-light-soft-enFNSJ1V.mjs.map +0 -1
  229. package/dist/hack-DgaC5QUw.mjs +0 -13
  230. package/dist/hack-DgaC5QUw.mjs.map +0 -1
  231. package/dist/haml-1vrxYPQe.mjs +0 -15
  232. package/dist/haml-1vrxYPQe.mjs.map +0 -1
  233. package/dist/handlebars-BOf036w9.mjs +0 -17
  234. package/dist/handlebars-BOf036w9.mjs.map +0 -1
  235. package/dist/haskell-BgXObw3Z.mjs +0 -5
  236. package/dist/haskell-BgXObw3Z.mjs.map +0 -1
  237. package/dist/haxe-SN6gQnv7.mjs +0 -5
  238. package/dist/haxe-SN6gQnv7.mjs.map +0 -1
  239. package/dist/hcl-DfQ78ybU.mjs +0 -5
  240. package/dist/hcl-DfQ78ybU.mjs.map +0 -1
  241. package/dist/hjson-DsbHj1Vu.mjs +0 -5
  242. package/dist/hjson-DsbHj1Vu.mjs.map +0 -1
  243. package/dist/hlsl-DErhWTj4.mjs +0 -5
  244. package/dist/hlsl-DErhWTj4.mjs.map +0 -1
  245. package/dist/horizon-bright-BLpSmqnO.mjs +0 -6
  246. package/dist/horizon-bright-BLpSmqnO.mjs.map +0 -1
  247. package/dist/horizon-mHk0xSKw.mjs +0 -6
  248. package/dist/horizon-mHk0xSKw.mjs.map +0 -1
  249. package/dist/houston-CJWIjsF-.mjs +0 -6
  250. package/dist/houston-CJWIjsF-.mjs.map +0 -1
  251. package/dist/html-derivative-CoKpUZPA.mjs +0 -8
  252. package/dist/html-derivative-CoKpUZPA.mjs.map +0 -1
  253. package/dist/html-hLCdjm8s.mjs +0 -15
  254. package/dist/html-hLCdjm8s.mjs.map +0 -1
  255. package/dist/http-Cu2vb2m1.mjs +0 -17
  256. package/dist/http-Cu2vb2m1.mjs.map +0 -1
  257. package/dist/hurl-DXLUiPe9.mjs +0 -15
  258. package/dist/hurl-DXLUiPe9.mjs.map +0 -1
  259. package/dist/hxml-D53ff3CT.mjs +0 -8
  260. package/dist/hxml-D53ff3CT.mjs.map +0 -1
  261. package/dist/hy-V5YDnsp0.mjs +0 -5
  262. package/dist/hy-V5YDnsp0.mjs.map +0 -1
  263. package/dist/imba-Dj8CXVx-.mjs +0 -5
  264. package/dist/imba-Dj8CXVx-.mjs.map +0 -1
  265. package/dist/ini-BBJUwrOG.mjs +0 -5
  266. package/dist/ini-BBJUwrOG.mjs.map +0 -1
  267. package/dist/java-YvKbK6tX.mjs +0 -8
  268. package/dist/java-YvKbK6tX.mjs.map +0 -1
  269. package/dist/javascript-YIAaXWRu.mjs +0 -8
  270. package/dist/javascript-YIAaXWRu.mjs.map +0 -1
  271. package/dist/jinja-ENyZ39OR.mjs +0 -12
  272. package/dist/jinja-ENyZ39OR.mjs.map +0 -1
  273. package/dist/jison-a-QW5GR4.mjs +0 -8
  274. package/dist/jison-a-QW5GR4.mjs.map +0 -1
  275. package/dist/json-D_p_sVuw.mjs +0 -8
  276. package/dist/json-D_p_sVuw.mjs.map +0 -1
  277. package/dist/json5-DC6Kkd4p.mjs +0 -5
  278. package/dist/json5-DC6Kkd4p.mjs.map +0 -1
  279. package/dist/jsonc-CXqrxP7Z.mjs +0 -5
  280. package/dist/jsonc-CXqrxP7Z.mjs.map +0 -1
  281. package/dist/jsonl-CzqgMhZd.mjs +0 -5
  282. package/dist/jsonl-CzqgMhZd.mjs.map +0 -1
  283. package/dist/jsonnet-Hvy31yDW.mjs +0 -5
  284. package/dist/jsonnet-Hvy31yDW.mjs.map +0 -1
  285. package/dist/jssm-CKXXM0Nd.mjs +0 -5
  286. package/dist/jssm-CKXXM0Nd.mjs.map +0 -1
  287. package/dist/jsx-Cmr67-nO.mjs +0 -8
  288. package/dist/jsx-Cmr67-nO.mjs.map +0 -1
  289. package/dist/julia-apY6-EoT.mjs +0 -19
  290. package/dist/julia-apY6-EoT.mjs.map +0 -1
  291. package/dist/just-DPxowZX-.mjs +0 -21
  292. package/dist/just-DPxowZX-.mjs.map +0 -1
  293. package/dist/kanagawa-dragon-bgbtpXkX.mjs +0 -6
  294. package/dist/kanagawa-dragon-bgbtpXkX.mjs.map +0 -1
  295. package/dist/kanagawa-lotus-CAjM2aBD.mjs +0 -6
  296. package/dist/kanagawa-lotus-CAjM2aBD.mjs.map +0 -1
  297. package/dist/kanagawa-wave-gUF-XydY.mjs +0 -6
  298. package/dist/kanagawa-wave-gUF-XydY.mjs.map +0 -1
  299. package/dist/kdl-DakeRkny.mjs +0 -5
  300. package/dist/kdl-DakeRkny.mjs.map +0 -1
  301. package/dist/kotlin-Cy2z7uIJ.mjs +0 -5
  302. package/dist/kotlin-Cy2z7uIJ.mjs.map +0 -1
  303. package/dist/kusto-8vFexomq.mjs +0 -5
  304. package/dist/kusto-8vFexomq.mjs.map +0 -1
  305. package/dist/laserwave-afq0Xxwk.mjs +0 -6
  306. package/dist/laserwave-afq0Xxwk.mjs.map +0 -1
  307. package/dist/latex-D_F2h8-H.mjs +0 -8
  308. package/dist/latex-D_F2h8-H.mjs.map +0 -1
  309. package/dist/lean-IHm98qhW.mjs +0 -5
  310. package/dist/lean-IHm98qhW.mjs.map +0 -1
  311. package/dist/less-D6RfQ6-S.mjs +0 -5
  312. package/dist/less-D6RfQ6-S.mjs.map +0 -1
  313. package/dist/light-plus-Dwa6Dmsm.mjs +0 -6
  314. package/dist/light-plus-Dwa6Dmsm.mjs.map +0 -1
  315. package/dist/liquid-DK7BdQ-d.mjs +0 -17
  316. package/dist/liquid-DK7BdQ-d.mjs.map +0 -1
  317. package/dist/llvm-CbsqsAF1.mjs +0 -5
  318. package/dist/llvm-CbsqsAF1.mjs.map +0 -1
  319. package/dist/log-CutLVNLV.mjs +0 -5
  320. package/dist/log-CutLVNLV.mjs.map +0 -1
  321. package/dist/logo-DNTC5lxi.mjs +0 -5
  322. package/dist/logo-DNTC5lxi.mjs.map +0 -1
  323. package/dist/lua-NCVDi2Y_.mjs +0 -10
  324. package/dist/lua-NCVDi2Y_.mjs.map +0 -1
  325. package/dist/luau-Z-b9t2YR.mjs +0 -5
  326. package/dist/luau-Z-b9t2YR.mjs.map +0 -1
  327. package/dist/make-D7o-TjTO.mjs +0 -5
  328. package/dist/make-D7o-TjTO.mjs.map +0 -1
  329. package/dist/markdown-CEvLuIE_.mjs +0 -5
  330. package/dist/markdown-CEvLuIE_.mjs.map +0 -1
  331. package/dist/markdown-config-BGDiDMhB.d.mts +0 -2094
  332. package/dist/markdown-config-BGDiDMhB.d.mts.map +0 -1
  333. package/dist/marko-DyPWMVoi.mjs +0 -17
  334. package/dist/marko-DyPWMVoi.mjs.map +0 -1
  335. package/dist/material-theme-BMSwLkhz.mjs +0 -6
  336. package/dist/material-theme-BMSwLkhz.mjs.map +0 -1
  337. package/dist/material-theme-darker-DREhSOvw.mjs +0 -6
  338. package/dist/material-theme-darker-DREhSOvw.mjs.map +0 -1
  339. package/dist/material-theme-lighter-egkNOF68.mjs +0 -6
  340. package/dist/material-theme-lighter-egkNOF68.mjs.map +0 -1
  341. package/dist/material-theme-ocean-CNqBAXQm.mjs +0 -6
  342. package/dist/material-theme-ocean-CNqBAXQm.mjs.map +0 -1
  343. package/dist/material-theme-palenight-DtcONgpr.mjs +0 -6
  344. package/dist/material-theme-palenight-DtcONgpr.mjs.map +0 -1
  345. package/dist/matlab-DHZHeFXY.mjs +0 -5
  346. package/dist/matlab-DHZHeFXY.mjs.map +0 -1
  347. package/dist/mdc-MKPEEsGA.mjs +0 -15
  348. package/dist/mdc-MKPEEsGA.mjs.map +0 -1
  349. package/dist/mdx-ClLOyMcG.mjs +0 -5
  350. package/dist/mdx-ClLOyMcG.mjs.map +0 -1
  351. package/dist/mermaid-CfX58h2h.mjs +0 -5
  352. package/dist/mermaid-CfX58h2h.mjs.map +0 -1
  353. package/dist/min-dark-CvIB8xOx.mjs +0 -6
  354. package/dist/min-dark-CvIB8xOx.mjs.map +0 -1
  355. package/dist/min-light-DnoFQoeu.mjs +0 -6
  356. package/dist/min-light-DnoFQoeu.mjs.map +0 -1
  357. package/dist/mipsasm-BPlrYcYb.mjs +0 -5
  358. package/dist/mipsasm-BPlrYcYb.mjs.map +0 -1
  359. package/dist/mojo-C5Qzk_lA.mjs +0 -5
  360. package/dist/mojo-C5Qzk_lA.mjs.map +0 -1
  361. package/dist/monokai-CmoRmG4x.mjs +0 -6
  362. package/dist/monokai-CmoRmG4x.mjs.map +0 -1
  363. package/dist/moonbit-BzaO7bLo.mjs +0 -5
  364. package/dist/moonbit-BzaO7bLo.mjs.map +0 -1
  365. package/dist/move-CAZmkwHx.mjs +0 -5
  366. package/dist/move-CAZmkwHx.mjs.map +0 -1
  367. package/dist/narrat-DN2gLj7A.mjs +0 -5
  368. package/dist/narrat-DN2gLj7A.mjs.map +0 -1
  369. package/dist/nextflow-DhVPPjdW.mjs +0 -8
  370. package/dist/nextflow-DhVPPjdW.mjs.map +0 -1
  371. package/dist/nextflow-groovy-DJq82mRo.mjs +0 -5
  372. package/dist/nextflow-groovy-DJq82mRo.mjs.map +0 -1
  373. package/dist/nginx-CU-DGOv1.mjs +0 -8
  374. package/dist/nginx-CU-DGOv1.mjs.map +0 -1
  375. package/dist/night-owl-Cs13ScSs.mjs +0 -6
  376. package/dist/night-owl-Cs13ScSs.mjs.map +0 -1
  377. package/dist/night-owl-light--HbEFF7Y.mjs +0 -6
  378. package/dist/night-owl-light--HbEFF7Y.mjs.map +0 -1
  379. package/dist/nim-3UbGj8cc.mjs +0 -23
  380. package/dist/nim-3UbGj8cc.mjs.map +0 -1
  381. package/dist/nix-CjXcUl9k.mjs +0 -9
  382. package/dist/nix-CjXcUl9k.mjs.map +0 -1
  383. package/dist/nord-C9GqXk2p.mjs +0 -6
  384. package/dist/nord-C9GqXk2p.mjs.map +0 -1
  385. package/dist/nushell-C4iFdrTc.mjs +0 -5
  386. package/dist/nushell-C4iFdrTc.mjs.map +0 -1
  387. package/dist/objective-c-CXuDGuMm.mjs +0 -5
  388. package/dist/objective-c-CXuDGuMm.mjs.map +0 -1
  389. package/dist/objective-cpp-V9yvCIRm.mjs +0 -5
  390. package/dist/objective-cpp-V9yvCIRm.mjs.map +0 -1
  391. package/dist/ocaml-D9fCj6sT.mjs +0 -5
  392. package/dist/ocaml-D9fCj6sT.mjs.map +0 -1
  393. package/dist/odin-CAKGLqrj.mjs +0 -5
  394. package/dist/odin-CAKGLqrj.mjs.map +0 -1
  395. package/dist/one-dark-pro-DW7BmY6Q.mjs +0 -6
  396. package/dist/one-dark-pro-DW7BmY6Q.mjs.map +0 -1
  397. package/dist/one-light-DCu0Wv9N.mjs +0 -6
  398. package/dist/one-light-DCu0Wv9N.mjs.map +0 -1
  399. package/dist/openscad-BdLZBBab.mjs +0 -5
  400. package/dist/openscad-BdLZBBab.mjs.map +0 -1
  401. package/dist/pascal-nsk9MKFb.mjs +0 -5
  402. package/dist/pascal-nsk9MKFb.mjs.map +0 -1
  403. package/dist/perl-DI9oLKmv.mjs +0 -19
  404. package/dist/perl-DI9oLKmv.mjs.map +0 -1
  405. package/dist/php-DJjzFdsM.mjs +0 -21
  406. package/dist/php-DJjzFdsM.mjs.map +0 -1
  407. package/dist/pkl-BVtC2QFe.mjs +0 -5
  408. package/dist/pkl-BVtC2QFe.mjs.map +0 -1
  409. package/dist/plastic-qUgYNoeW.mjs +0 -6
  410. package/dist/plastic-qUgYNoeW.mjs.map +0 -1
  411. package/dist/plsql-BwM0DOLE.mjs +0 -5
  412. package/dist/plsql-BwM0DOLE.mjs.map +0 -1
  413. package/dist/po-D39EqRsl.mjs +0 -5
  414. package/dist/po-D39EqRsl.mjs.map +0 -1
  415. package/dist/poimandres-DPRzGPvx.mjs +0 -6
  416. package/dist/poimandres-DPRzGPvx.mjs.map +0 -1
  417. package/dist/polar-DCBzWT3J.mjs +0 -5
  418. package/dist/polar-DCBzWT3J.mjs.map +0 -1
  419. package/dist/postcss-L6y-bzEw.mjs +0 -5
  420. package/dist/postcss-L6y-bzEw.mjs.map +0 -1
  421. package/dist/powerquery-BHkUTyux.mjs +0 -5
  422. package/dist/powerquery-BHkUTyux.mjs.map +0 -1
  423. package/dist/powershell-C80dlfD8.mjs +0 -5
  424. package/dist/powershell-C80dlfD8.mjs.map +0 -1
  425. package/dist/prisma-D407qtUw.mjs +0 -5
  426. package/dist/prisma-D407qtUw.mjs.map +0 -1
  427. package/dist/prolog-CSrn8-6K.mjs +0 -5
  428. package/dist/prolog-CSrn8-6K.mjs.map +0 -1
  429. package/dist/proto-ClvDy0H0.mjs +0 -5
  430. package/dist/proto-ClvDy0H0.mjs.map +0 -1
  431. package/dist/pug-Cyyu0V2y.mjs +0 -15
  432. package/dist/pug-Cyyu0V2y.mjs.map +0 -1
  433. package/dist/puppet-D5ZQtSNi.mjs +0 -5
  434. package/dist/puppet-D5ZQtSNi.mjs.map +0 -1
  435. package/dist/purescript-30PxZSjT.mjs +0 -5
  436. package/dist/purescript-30PxZSjT.mjs.map +0 -1
  437. package/dist/python-CpiNX4Ip.mjs +0 -5
  438. package/dist/python-CpiNX4Ip.mjs.map +0 -1
  439. package/dist/qml-PuKhTmY-.mjs +0 -8
  440. package/dist/qml-PuKhTmY-.mjs.map +0 -1
  441. package/dist/qmldir-BTwcIF6g.mjs +0 -5
  442. package/dist/qmldir-BTwcIF6g.mjs.map +0 -1
  443. package/dist/qss-DcpQyHuk.mjs +0 -5
  444. package/dist/qss-DcpQyHuk.mjs.map +0 -1
  445. package/dist/r-DcW8EcF5.mjs +0 -8
  446. package/dist/r-DcW8EcF5.mjs.map +0 -1
  447. package/dist/racket-D-BwrG5z.mjs +0 -5
  448. package/dist/racket-D-BwrG5z.mjs.map +0 -1
  449. package/dist/raku-CM1N1WTp.mjs +0 -5
  450. package/dist/raku-CM1N1WTp.mjs.map +0 -1
  451. package/dist/razor-C912Hs6M.mjs +0 -13
  452. package/dist/razor-C912Hs6M.mjs.map +0 -1
  453. package/dist/red-DhGHw_i_.mjs +0 -6
  454. package/dist/red-DhGHw_i_.mjs.map +0 -1
  455. package/dist/reg-MlBfIgTN.mjs +0 -5
  456. package/dist/reg-MlBfIgTN.mjs.map +0 -1
  457. package/dist/regexp-CEVpExph.mjs +0 -8
  458. package/dist/regexp-CEVpExph.mjs.map +0 -1
  459. package/dist/rel-Dg_W2E_N.mjs +0 -5
  460. package/dist/rel-Dg_W2E_N.mjs.map +0 -1
  461. package/dist/riscv-BoH7mqNI.mjs +0 -5
  462. package/dist/riscv-BoH7mqNI.mjs.map +0 -1
  463. package/dist/ron-DbOWX1T7.mjs +0 -5
  464. package/dist/ron-DbOWX1T7.mjs.map +0 -1
  465. package/dist/rose-pine-78rugKGO.mjs +0 -6
  466. package/dist/rose-pine-78rugKGO.mjs.map +0 -1
  467. package/dist/rose-pine-dawn-C_mYSEtu.mjs +0 -6
  468. package/dist/rose-pine-dawn-C_mYSEtu.mjs.map +0 -1
  469. package/dist/rose-pine-moon-Cz7-JQvG.mjs +0 -6
  470. package/dist/rose-pine-moon-Cz7-JQvG.mjs.map +0 -1
  471. package/dist/rosmsg-Ca1BpyBh.mjs +0 -5
  472. package/dist/rosmsg-Ca1BpyBh.mjs.map +0 -1
  473. package/dist/rst-DbIJV67W.mjs +0 -25
  474. package/dist/rst-DbIJV67W.mjs.map +0 -1
  475. package/dist/ruby-D-Lps7Dp.mjs +0 -33
  476. package/dist/ruby-D-Lps7Dp.mjs.map +0 -1
  477. package/dist/rust-Dk6HN1uF.mjs +0 -5
  478. package/dist/rust-Dk6HN1uF.mjs.map +0 -1
  479. package/dist/sas-QckC_qvJ.mjs +0 -8
  480. package/dist/sas-QckC_qvJ.mjs.map +0 -1
  481. package/dist/sass-BWOQVuIy.mjs +0 -5
  482. package/dist/sass-BWOQVuIy.mjs.map +0 -1
  483. package/dist/scala-BoffQEnY.mjs +0 -5
  484. package/dist/scala-BoffQEnY.mjs.map +0 -1
  485. package/dist/schemas/index.d.mts.map +0 -1
  486. package/dist/schemas/index.mjs.map +0 -1
  487. package/dist/schemas-By1qE0sQ.mjs +0 -3881
  488. package/dist/schemas-By1qE0sQ.mjs.map +0 -1
  489. package/dist/scheme-C2D8wvUe.mjs +0 -5
  490. package/dist/scheme-C2D8wvUe.mjs.map +0 -1
  491. package/dist/scss-D1vWunvk.mjs +0 -10
  492. package/dist/scss-D1vWunvk.mjs.map +0 -1
  493. package/dist/sdbl-DkThjfrg.mjs +0 -5
  494. package/dist/sdbl-DkThjfrg.mjs.map +0 -1
  495. package/dist/shaderlab-D0NLokaw.mjs +0 -8
  496. package/dist/shaderlab-D0NLokaw.mjs.map +0 -1
  497. package/dist/shellscript-BHpEag8P.mjs +0 -8
  498. package/dist/shellscript-BHpEag8P.mjs.map +0 -1
  499. package/dist/shellsession-CSdmCfg4.mjs +0 -8
  500. package/dist/shellsession-CSdmCfg4.mjs.map +0 -1
  501. package/dist/site-D8l4ghX0.mjs +0 -71441
  502. package/dist/site-D8l4ghX0.mjs.map +0 -1
  503. package/dist/slack-dark-Cj8kL6BM.mjs +0 -6
  504. package/dist/slack-dark-Cj8kL6BM.mjs.map +0 -1
  505. package/dist/slack-ochin-B4Rna-gD.mjs +0 -6
  506. package/dist/slack-ochin-B4Rna-gD.mjs.map +0 -1
  507. package/dist/smalltalk-ZNQAnLNC.mjs +0 -5
  508. package/dist/smalltalk-ZNQAnLNC.mjs.map +0 -1
  509. package/dist/snazzy-light-CF7MTUt6.mjs +0 -6
  510. package/dist/snazzy-light-CF7MTUt6.mjs.map +0 -1
  511. package/dist/solarized-dark-DBFHIE1d.mjs +0 -6
  512. package/dist/solarized-dark-DBFHIE1d.mjs.map +0 -1
  513. package/dist/solarized-light-Del516-O.mjs +0 -6
  514. package/dist/solarized-light-Del516-O.mjs.map +0 -1
  515. package/dist/solidity-Ddf3MOD2.mjs +0 -5
  516. package/dist/solidity-Ddf3MOD2.mjs.map +0 -1
  517. package/dist/soy-PW0jpJKW.mjs +0 -8
  518. package/dist/soy-PW0jpJKW.mjs.map +0 -1
  519. package/dist/sparql-rX-q1CB9.mjs +0 -8
  520. package/dist/sparql-rX-q1CB9.mjs.map +0 -1
  521. package/dist/splunk-DcREbx5k.mjs +0 -5
  522. package/dist/splunk-DcREbx5k.mjs.map +0 -1
  523. package/dist/sql-Cq_hpY16.mjs +0 -8
  524. package/dist/sql-Cq_hpY16.mjs.map +0 -1
  525. package/dist/ssh-config-DIv0Kb8E.mjs +0 -5
  526. package/dist/ssh-config-DIv0Kb8E.mjs.map +0 -1
  527. package/dist/stata-rEmfzZT7.mjs +0 -8
  528. package/dist/stata-rEmfzZT7.mjs.map +0 -1
  529. package/dist/stylus-DHanz1Kd.mjs +0 -5
  530. package/dist/stylus-DHanz1Kd.mjs.map +0 -1
  531. package/dist/surrealql-BdfgI90j.mjs +0 -8
  532. package/dist/surrealql-BdfgI90j.mjs.map +0 -1
  533. package/dist/svelte-DFFWgqCr.mjs +0 -17
  534. package/dist/svelte-DFFWgqCr.mjs.map +0 -1
  535. package/dist/swift-Ci7klDIa.mjs +0 -5
  536. package/dist/swift-Ci7klDIa.mjs.map +0 -1
  537. package/dist/synthwave-84-T5fF9-Op.mjs +0 -6
  538. package/dist/synthwave-84-T5fF9-Op.mjs.map +0 -1
  539. package/dist/system-verilog-tLSd9PYh.mjs +0 -5
  540. package/dist/system-verilog-tLSd9PYh.mjs.map +0 -1
  541. package/dist/systemd-C_LIvN4y.mjs +0 -5
  542. package/dist/systemd-C_LIvN4y.mjs.map +0 -1
  543. package/dist/talonscript-2cIfb9F4.mjs +0 -5
  544. package/dist/talonscript-2cIfb9F4.mjs.map +0 -1
  545. package/dist/tasl-iwLzpKVu.mjs +0 -5
  546. package/dist/tasl-iwLzpKVu.mjs.map +0 -1
  547. package/dist/tcl-DR2zhegR.mjs +0 -5
  548. package/dist/tcl-DR2zhegR.mjs.map +0 -1
  549. package/dist/templ-BDCp727o.mjs +0 -15
  550. package/dist/templ-BDCp727o.mjs.map +0 -1
  551. package/dist/terraform-BH4YC6Zk.mjs +0 -5
  552. package/dist/terraform-BH4YC6Zk.mjs.map +0 -1
  553. package/dist/tex-DGRDr7pd.mjs +0 -8
  554. package/dist/tex-DGRDr7pd.mjs.map +0 -1
  555. package/dist/tokyo-night-YpyXNs_N.mjs +0 -6
  556. package/dist/tokyo-night-YpyXNs_N.mjs.map +0 -1
  557. package/dist/toml-CECsyL8x.mjs +0 -5
  558. package/dist/toml-CECsyL8x.mjs.map +0 -1
  559. package/dist/ts-tags-BsG9I5cd.mjs +0 -61
  560. package/dist/ts-tags-BsG9I5cd.mjs.map +0 -1
  561. package/dist/tsv-BwwAUdIn.mjs +0 -5
  562. package/dist/tsv-BwwAUdIn.mjs.map +0 -1
  563. package/dist/tsx-qx39NaGS.mjs +0 -8
  564. package/dist/tsx-qx39NaGS.mjs.map +0 -1
  565. package/dist/turtle-D8n7HFvE.mjs +0 -5
  566. package/dist/turtle-D8n7HFvE.mjs.map +0 -1
  567. package/dist/twig-DsMUiWk8.mjs +0 -21
  568. package/dist/twig-DsMUiWk8.mjs.map +0 -1
  569. package/dist/typescript-BZXFn-rd.mjs +0 -8
  570. package/dist/typescript-BZXFn-rd.mjs.map +0 -1
  571. package/dist/typespec-ClgDzShT.mjs +0 -5
  572. package/dist/typespec-ClgDzShT.mjs.map +0 -1
  573. package/dist/typst-CMN2lhh3.mjs +0 -5
  574. package/dist/typst-CMN2lhh3.mjs.map +0 -1
  575. package/dist/v-CA1cYsER.mjs +0 -5
  576. package/dist/v-CA1cYsER.mjs.map +0 -1
  577. package/dist/vala-DuBY1WKl.mjs +0 -5
  578. package/dist/vala-DuBY1WKl.mjs.map +0 -1
  579. package/dist/vb-XQBHWfW8.mjs +0 -5
  580. package/dist/vb-XQBHWfW8.mjs.map +0 -1
  581. package/dist/verilog-CWqhvrSz.mjs +0 -5
  582. package/dist/verilog-CWqhvrSz.mjs.map +0 -1
  583. package/dist/vesper-CigfTEKg.mjs +0 -6
  584. package/dist/vesper-CigfTEKg.mjs.map +0 -1
  585. package/dist/vhdl-C67Bhzjr.mjs +0 -5
  586. package/dist/vhdl-C67Bhzjr.mjs.map +0 -1
  587. package/dist/viml-C26cD_wa.mjs +0 -5
  588. package/dist/viml-C26cD_wa.mjs.map +0 -1
  589. package/dist/vitesse-black-DYCj3nJd.mjs +0 -6
  590. package/dist/vitesse-black-DYCj3nJd.mjs.map +0 -1
  591. package/dist/vitesse-dark-BMGIMsRz.mjs +0 -6
  592. package/dist/vitesse-dark-BMGIMsRz.mjs.map +0 -1
  593. package/dist/vitesse-light-SKJOp9ZR.mjs +0 -6
  594. package/dist/vitesse-light-SKJOp9ZR.mjs.map +0 -1
  595. package/dist/vue-bb5YUHg6.mjs +0 -33
  596. package/dist/vue-bb5YUHg6.mjs.map +0 -1
  597. package/dist/vue-html-ypB-H6rb.mjs +0 -8
  598. package/dist/vue-html-ypB-H6rb.mjs.map +0 -1
  599. package/dist/vue-vine-Cl_j-Bb5.mjs +0 -21
  600. package/dist/vue-vine-Cl_j-Bb5.mjs.map +0 -1
  601. package/dist/vyper-gBkdcGC5.mjs +0 -5
  602. package/dist/vyper-gBkdcGC5.mjs.map +0 -1
  603. package/dist/wasm-B1KmdQo5.mjs +0 -9
  604. package/dist/wasm-B1KmdQo5.mjs.map +0 -1
  605. package/dist/wasm-D4mFcPzE.mjs +0 -5
  606. package/dist/wasm-D4mFcPzE.mjs.map +0 -1
  607. package/dist/wenyan-D1TI9OZw.mjs +0 -5
  608. package/dist/wenyan-D1TI9OZw.mjs.map +0 -1
  609. package/dist/wgsl-DzVADIua.mjs +0 -5
  610. package/dist/wgsl-DzVADIua.mjs.map +0 -1
  611. package/dist/wikitext-DPnM1XoL.mjs +0 -5
  612. package/dist/wikitext-DPnM1XoL.mjs.map +0 -1
  613. package/dist/wit-Bewokpy8.mjs +0 -5
  614. package/dist/wit-Bewokpy8.mjs.map +0 -1
  615. package/dist/wolfram-DVQXO29Z.mjs +0 -5
  616. package/dist/wolfram-DVQXO29Z.mjs.map +0 -1
  617. package/dist/xml-TYYGqgP3.mjs +0 -10
  618. package/dist/xml-TYYGqgP3.mjs.map +0 -1
  619. package/dist/xsl-BOev1i40.mjs +0 -8
  620. package/dist/xsl-BOev1i40.mjs.map +0 -1
  621. package/dist/yaml-Xue9e-YO.mjs +0 -8
  622. package/dist/yaml-Xue9e-YO.mjs.map +0 -1
  623. package/dist/zenscript-CwrU69w6.mjs +0 -5
  624. package/dist/zenscript-CwrU69w6.mjs.map +0 -1
  625. package/dist/zig-NT9tMYQ2.mjs +0 -5
  626. package/dist/zig-NT9tMYQ2.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"site-BY2caZ_v.mjs","names":["JSON5","initializer","util.jsonStringifyReplacer","core.$ZodAsyncError","util.finalizeIssue","core.config","parse","errors.$ZodRealError","parseAsync","errors.$ZodError","safeParse","safeParseAsync","encode","decode","encodeAsync","decodeAsync","safeEncode","safeDecode","safeEncodeAsync","safeDecodeAsync","duration","_emoji","date","time","datetime","string","number","boolean","util.floatSafeRemainder","util.NUMBER_FORMAT_RANGES","regexes.integer","util.nullish","util.getLengthableOrigin","regexes.lowercase","regexes.uppercase","util.escapeRegex","util.aborted","core.$ZodAsyncError","safeParse","safeParseAsync","regexes.string","regexes.guid","regexes.uuid","regexes.email","regexes.emoji","regexes.nanoid","regexes.cuid","regexes.cuid2","regexes.ulid","regexes.xid","regexes.ksuid","regexes.datetime","regexes.date","regexes.time","regexes.duration","regexes.ipv4","regexes.ipv6","regexes.cidrv4","regexes.cidrv6","regexes.base64","regexes.base64url","regexes.e164","regexes.number","regexes.boolean","util.prefixIssues","util.optionalKeys","util.cached","isObject","util.isObject","util.esc","allowsEval","util.allowsEval","util.finalizeIssue","core.config","util.cleanRegex","util.isPlainObject","util.getEnumValues","util.escapeRegex","core.$ZodEncodeError","util.issue","util.normalizeParams","checks.$ZodCheckLessThan","checks.$ZodCheckGreaterThan","checks.$ZodCheckMultipleOf","checks.$ZodCheckMaxLength","checks.$ZodCheckMinLength","checks.$ZodCheckLengthEquals","checks.$ZodCheckRegex","checks.$ZodCheckLowerCase","checks.$ZodCheckUpperCase","checks.$ZodCheckIncludes","checks.$ZodCheckStartsWith","checks.$ZodCheckEndsWith","checks.$ZodCheckOverwrite","util.slugify","issue","util.issue","checks.$ZodCheck","describe","meta","process","process","core._isoDateTime","core._isoDate","core._isoTime","core._isoDuration","core.formatError","core.flattenError","util.jsonStringifyReplacer","core.$constructor","util.mergeDefs","core.clone","parse.parse","parse.safeParse","parse.parseAsync","parse.safeParseAsync","parse.encode","parse.decode","parse.encodeAsync","parse.decodeAsync","parse.safeEncode","parse.safeDecode","parse.safeEncodeAsync","parse.safeDecodeAsync","checks.overwrite","processors.stringProcessor","checks.regex","checks.includes","checks.startsWith","checks.endsWith","checks.minLength","checks.maxLength","checks.length","checks.lowercase","checks.uppercase","checks.trim","checks.normalize","checks.toLowerCase","checks.toUpperCase","checks.slugify","core._email","core._url","core._jwt","core._emoji","core._guid","core._uuid","core._uuidv4","core._uuidv6","core._uuidv7","core._nanoid","core._cuid","core._cuid2","core._ulid","core._base64","core._base64url","core._xid","core._ksuid","core._ipv4","core._ipv6","core._cidrv4","core._cidrv6","core._e164","iso.datetime","iso.date","iso.time","iso.duration","core._string","processors.numberProcessor","checks.gt","checks.gte","checks.lt","checks.lte","checks.multipleOf","core._number","core._int","processors.booleanProcessor","core._boolean","processors.anyProcessor","core._any","processors.unknownProcessor","core._unknown","processors.neverProcessor","core._never","processors.arrayProcessor","core._array","processors.objectProcessor","util.extend","util.safeExtend","util.merge","util.pick","util.omit","util.partial","util.required","util.normalizeParams","processors.unionProcessor","processors.intersectionProcessor","processors.recordProcessor","processors.enumProcessor","processors.transformProcessor","core.$ZodEncodeError","issue","util.issue","processors.optionalProcessor","processors.nullableProcessor","processors.defaultProcessor","util.shallowClone","processors.prefaultProcessor","processors.nonoptionalProcessor","processors.catchProcessor","processors.pipeProcessor","processors.readonlyProcessor","processors.customProcessor","core._refine","core._superRefine","core.describe","core.meta","z\n .object","z.string","z.number","z.boolean","z.record","z.any","z.array","lstat","stat","presolve","readdir","pjoin","prelative","realpath","psep","osType","fs_watch","stat","fsrealpath","EV","stat","watch","EventEmitter","http","URL","createHash","Duplex","EventEmitter","createHash","WebSocketServer","watch"],"sources":["../../../node_modules/json5/lib/unicode.js","../../../node_modules/json5/lib/util.js","../../../node_modules/json5/lib/parse.js","../../../node_modules/json5/lib/stringify.js","../../../node_modules/json5/lib/index.js","../src/config.ts","../../../node_modules/zod/v4/core/core.js","../../../node_modules/zod/v4/core/util.js","../../../node_modules/zod/v4/core/errors.js","../../../node_modules/zod/v4/core/parse.js","../../../node_modules/zod/v4/core/regexes.js","../../../node_modules/zod/v4/core/checks.js","../../../node_modules/zod/v4/core/doc.js","../../../node_modules/zod/v4/core/versions.js","../../../node_modules/zod/v4/core/schemas.js","../../../node_modules/zod/v4/core/registries.js","../../../node_modules/zod/v4/core/api.js","../../../node_modules/zod/v4/core/to-json-schema.js","../../../node_modules/zod/v4/core/json-schema-processors.js","../../../node_modules/zod/v4/classic/iso.js","../../../node_modules/zod/v4/classic/errors.js","../../../node_modules/zod/v4/classic/parse.js","../../../node_modules/zod/v4/classic/schemas.js","../../../node_modules/unist-util-is/lib/index.js","../../../node_modules/unist-util-visit-parents/lib/color.node.js","../../../node_modules/unist-util-visit-parents/lib/index.js","../../../node_modules/unist-util-visit/lib/index.js","../src/markdown/plugins/rehype-asset-transform.ts","../src/content.ts","../src/navigation.ts","../theme/components/DocFooter.tsx","../theme/components/DocHeader.tsx","../theme/components/DocSidebar.tsx","../theme/components/Html.tsx","../theme/layouts/DocHome.tsx","../theme/layouts/DocNotFound.tsx","../theme/components/DocTOC.tsx","../theme/layouts/DocPage.tsx","../src/render.ts","../src/build.ts","../../../node_modules/readdirp/esm/index.js","../../../node_modules/chokidar/esm/handler.js","../../../node_modules/chokidar/esm/index.js","../../../node_modules/ws/lib/constants.js","../../../node_modules/ws/lib/buffer-util.js","../../../node_modules/ws/lib/limiter.js","../../../node_modules/ws/lib/permessage-deflate.js","../../../node_modules/ws/lib/validation.js","../../../node_modules/ws/lib/receiver.js","../../../node_modules/ws/lib/sender.js","../../../node_modules/ws/lib/event-target.js","../../../node_modules/ws/lib/extension.js","../../../node_modules/ws/lib/websocket.js","../../../node_modules/ws/lib/stream.js","../../../node_modules/ws/lib/subprotocol.js","../../../node_modules/ws/lib/websocket-server.js","../../../node_modules/ws/wrapper.mjs","../src/server.ts"],"sourcesContent":["// This is a generated file. Do not edit.\nmodule.exports.Space_Separator = /[\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/\nmodule.exports.ID_Start = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]/\nmodule.exports.ID_Continue = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF9\\u1D00-\\u1DF9\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE83\\uDE86-\\uDE99\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4A\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/\n","const unicode = require('../lib/unicode')\n\nmodule.exports = {\n isSpaceSeparator (c) {\n return typeof c === 'string' && unicode.Space_Separator.test(c)\n },\n\n isIdStartChar (c) {\n return typeof c === 'string' && (\n (c >= 'a' && c <= 'z') ||\n (c >= 'A' && c <= 'Z') ||\n (c === '$') || (c === '_') ||\n unicode.ID_Start.test(c)\n )\n },\n\n isIdContinueChar (c) {\n return typeof c === 'string' && (\n (c >= 'a' && c <= 'z') ||\n (c >= 'A' && c <= 'Z') ||\n (c >= '0' && c <= '9') ||\n (c === '$') || (c === '_') ||\n (c === '\\u200C') || (c === '\\u200D') ||\n unicode.ID_Continue.test(c)\n )\n },\n\n isDigit (c) {\n return typeof c === 'string' && /[0-9]/.test(c)\n },\n\n isHexDigit (c) {\n return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)\n },\n}\n","const util = require('./util')\n\nlet source\nlet parseState\nlet stack\nlet pos\nlet line\nlet column\nlet token\nlet key\nlet root\n\nmodule.exports = function parse (text, reviver) {\n source = String(text)\n parseState = 'start'\n stack = []\n pos = 0\n line = 1\n column = 0\n token = undefined\n key = undefined\n root = undefined\n\n do {\n token = lex()\n\n // This code is unreachable.\n // if (!parseStates[parseState]) {\n // throw invalidParseState()\n // }\n\n parseStates[parseState]()\n } while (token.type !== 'eof')\n\n if (typeof reviver === 'function') {\n return internalize({'': root}, '', reviver)\n }\n\n return root\n}\n\nfunction internalize (holder, name, reviver) {\n const value = holder[name]\n if (value != null && typeof value === 'object') {\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const key = String(i)\n const replacement = internalize(value, key, reviver)\n if (replacement === undefined) {\n delete value[key]\n } else {\n Object.defineProperty(value, key, {\n value: replacement,\n writable: true,\n enumerable: true,\n configurable: true,\n })\n }\n }\n } else {\n for (const key in value) {\n const replacement = internalize(value, key, reviver)\n if (replacement === undefined) {\n delete value[key]\n } else {\n Object.defineProperty(value, key, {\n value: replacement,\n writable: true,\n enumerable: true,\n configurable: true,\n })\n }\n }\n }\n }\n\n return reviver.call(holder, name, value)\n}\n\nlet lexState\nlet buffer\nlet doubleQuote\nlet sign\nlet c\n\nfunction lex () {\n lexState = 'default'\n buffer = ''\n doubleQuote = false\n sign = 1\n\n for (;;) {\n c = peek()\n\n // This code is unreachable.\n // if (!lexStates[lexState]) {\n // throw invalidLexState(lexState)\n // }\n\n const token = lexStates[lexState]()\n if (token) {\n return token\n }\n }\n}\n\nfunction peek () {\n if (source[pos]) {\n return String.fromCodePoint(source.codePointAt(pos))\n }\n}\n\nfunction read () {\n const c = peek()\n\n if (c === '\\n') {\n line++\n column = 0\n } else if (c) {\n column += c.length\n } else {\n column++\n }\n\n if (c) {\n pos += c.length\n }\n\n return c\n}\n\nconst lexStates = {\n default () {\n switch (c) {\n case '\\t':\n case '\\v':\n case '\\f':\n case ' ':\n case '\\u00A0':\n case '\\uFEFF':\n case '\\n':\n case '\\r':\n case '\\u2028':\n case '\\u2029':\n read()\n return\n\n case '/':\n read()\n lexState = 'comment'\n return\n\n case undefined:\n read()\n return newToken('eof')\n }\n\n if (util.isSpaceSeparator(c)) {\n read()\n return\n }\n\n // This code is unreachable.\n // if (!lexStates[parseState]) {\n // throw invalidLexState(parseState)\n // }\n\n return lexStates[parseState]()\n },\n\n comment () {\n switch (c) {\n case '*':\n read()\n lexState = 'multiLineComment'\n return\n\n case '/':\n read()\n lexState = 'singleLineComment'\n return\n }\n\n throw invalidChar(read())\n },\n\n multiLineComment () {\n switch (c) {\n case '*':\n read()\n lexState = 'multiLineCommentAsterisk'\n return\n\n case undefined:\n throw invalidChar(read())\n }\n\n read()\n },\n\n multiLineCommentAsterisk () {\n switch (c) {\n case '*':\n read()\n return\n\n case '/':\n read()\n lexState = 'default'\n return\n\n case undefined:\n throw invalidChar(read())\n }\n\n read()\n lexState = 'multiLineComment'\n },\n\n singleLineComment () {\n switch (c) {\n case '\\n':\n case '\\r':\n case '\\u2028':\n case '\\u2029':\n read()\n lexState = 'default'\n return\n\n case undefined:\n read()\n return newToken('eof')\n }\n\n read()\n },\n\n value () {\n switch (c) {\n case '{':\n case '[':\n return newToken('punctuator', read())\n\n case 'n':\n read()\n literal('ull')\n return newToken('null', null)\n\n case 't':\n read()\n literal('rue')\n return newToken('boolean', true)\n\n case 'f':\n read()\n literal('alse')\n return newToken('boolean', false)\n\n case '-':\n case '+':\n if (read() === '-') {\n sign = -1\n }\n\n lexState = 'sign'\n return\n\n case '.':\n buffer = read()\n lexState = 'decimalPointLeading'\n return\n\n case '0':\n buffer = read()\n lexState = 'zero'\n return\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n buffer = read()\n lexState = 'decimalInteger'\n return\n\n case 'I':\n read()\n literal('nfinity')\n return newToken('numeric', Infinity)\n\n case 'N':\n read()\n literal('aN')\n return newToken('numeric', NaN)\n\n case '\"':\n case \"'\":\n doubleQuote = (read() === '\"')\n buffer = ''\n lexState = 'string'\n return\n }\n\n throw invalidChar(read())\n },\n\n identifierNameStartEscape () {\n if (c !== 'u') {\n throw invalidChar(read())\n }\n\n read()\n const u = unicodeEscape()\n switch (u) {\n case '$':\n case '_':\n break\n\n default:\n if (!util.isIdStartChar(u)) {\n throw invalidIdentifier()\n }\n\n break\n }\n\n buffer += u\n lexState = 'identifierName'\n },\n\n identifierName () {\n switch (c) {\n case '$':\n case '_':\n case '\\u200C':\n case '\\u200D':\n buffer += read()\n return\n\n case '\\\\':\n read()\n lexState = 'identifierNameEscape'\n return\n }\n\n if (util.isIdContinueChar(c)) {\n buffer += read()\n return\n }\n\n return newToken('identifier', buffer)\n },\n\n identifierNameEscape () {\n if (c !== 'u') {\n throw invalidChar(read())\n }\n\n read()\n const u = unicodeEscape()\n switch (u) {\n case '$':\n case '_':\n case '\\u200C':\n case '\\u200D':\n break\n\n default:\n if (!util.isIdContinueChar(u)) {\n throw invalidIdentifier()\n }\n\n break\n }\n\n buffer += u\n lexState = 'identifierName'\n },\n\n sign () {\n switch (c) {\n case '.':\n buffer = read()\n lexState = 'decimalPointLeading'\n return\n\n case '0':\n buffer = read()\n lexState = 'zero'\n return\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n buffer = read()\n lexState = 'decimalInteger'\n return\n\n case 'I':\n read()\n literal('nfinity')\n return newToken('numeric', sign * Infinity)\n\n case 'N':\n read()\n literal('aN')\n return newToken('numeric', NaN)\n }\n\n throw invalidChar(read())\n },\n\n zero () {\n switch (c) {\n case '.':\n buffer += read()\n lexState = 'decimalPoint'\n return\n\n case 'e':\n case 'E':\n buffer += read()\n lexState = 'decimalExponent'\n return\n\n case 'x':\n case 'X':\n buffer += read()\n lexState = 'hexadecimal'\n return\n }\n\n return newToken('numeric', sign * 0)\n },\n\n decimalInteger () {\n switch (c) {\n case '.':\n buffer += read()\n lexState = 'decimalPoint'\n return\n\n case 'e':\n case 'E':\n buffer += read()\n lexState = 'decimalExponent'\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read()\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n decimalPointLeading () {\n if (util.isDigit(c)) {\n buffer += read()\n lexState = 'decimalFraction'\n return\n }\n\n throw invalidChar(read())\n },\n\n decimalPoint () {\n switch (c) {\n case 'e':\n case 'E':\n buffer += read()\n lexState = 'decimalExponent'\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read()\n lexState = 'decimalFraction'\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n decimalFraction () {\n switch (c) {\n case 'e':\n case 'E':\n buffer += read()\n lexState = 'decimalExponent'\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read()\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n decimalExponent () {\n switch (c) {\n case '+':\n case '-':\n buffer += read()\n lexState = 'decimalExponentSign'\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read()\n lexState = 'decimalExponentInteger'\n return\n }\n\n throw invalidChar(read())\n },\n\n decimalExponentSign () {\n if (util.isDigit(c)) {\n buffer += read()\n lexState = 'decimalExponentInteger'\n return\n }\n\n throw invalidChar(read())\n },\n\n decimalExponentInteger () {\n if (util.isDigit(c)) {\n buffer += read()\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n hexadecimal () {\n if (util.isHexDigit(c)) {\n buffer += read()\n lexState = 'hexadecimalInteger'\n return\n }\n\n throw invalidChar(read())\n },\n\n hexadecimalInteger () {\n if (util.isHexDigit(c)) {\n buffer += read()\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n string () {\n switch (c) {\n case '\\\\':\n read()\n buffer += escape()\n return\n\n case '\"':\n if (doubleQuote) {\n read()\n return newToken('string', buffer)\n }\n\n buffer += read()\n return\n\n case \"'\":\n if (!doubleQuote) {\n read()\n return newToken('string', buffer)\n }\n\n buffer += read()\n return\n\n case '\\n':\n case '\\r':\n throw invalidChar(read())\n\n case '\\u2028':\n case '\\u2029':\n separatorChar(c)\n break\n\n case undefined:\n throw invalidChar(read())\n }\n\n buffer += read()\n },\n\n start () {\n switch (c) {\n case '{':\n case '[':\n return newToken('punctuator', read())\n\n // This code is unreachable since the default lexState handles eof.\n // case undefined:\n // return newToken('eof')\n }\n\n lexState = 'value'\n },\n\n beforePropertyName () {\n switch (c) {\n case '$':\n case '_':\n buffer = read()\n lexState = 'identifierName'\n return\n\n case '\\\\':\n read()\n lexState = 'identifierNameStartEscape'\n return\n\n case '}':\n return newToken('punctuator', read())\n\n case '\"':\n case \"'\":\n doubleQuote = (read() === '\"')\n lexState = 'string'\n return\n }\n\n if (util.isIdStartChar(c)) {\n buffer += read()\n lexState = 'identifierName'\n return\n }\n\n throw invalidChar(read())\n },\n\n afterPropertyName () {\n if (c === ':') {\n return newToken('punctuator', read())\n }\n\n throw invalidChar(read())\n },\n\n beforePropertyValue () {\n lexState = 'value'\n },\n\n afterPropertyValue () {\n switch (c) {\n case ',':\n case '}':\n return newToken('punctuator', read())\n }\n\n throw invalidChar(read())\n },\n\n beforeArrayValue () {\n if (c === ']') {\n return newToken('punctuator', read())\n }\n\n lexState = 'value'\n },\n\n afterArrayValue () {\n switch (c) {\n case ',':\n case ']':\n return newToken('punctuator', read())\n }\n\n throw invalidChar(read())\n },\n\n end () {\n // This code is unreachable since it's handled by the default lexState.\n // if (c === undefined) {\n // read()\n // return newToken('eof')\n // }\n\n throw invalidChar(read())\n },\n}\n\nfunction newToken (type, value) {\n return {\n type,\n value,\n line,\n column,\n }\n}\n\nfunction literal (s) {\n for (const c of s) {\n const p = peek()\n\n if (p !== c) {\n throw invalidChar(read())\n }\n\n read()\n }\n}\n\nfunction escape () {\n const c = peek()\n switch (c) {\n case 'b':\n read()\n return '\\b'\n\n case 'f':\n read()\n return '\\f'\n\n case 'n':\n read()\n return '\\n'\n\n case 'r':\n read()\n return '\\r'\n\n case 't':\n read()\n return '\\t'\n\n case 'v':\n read()\n return '\\v'\n\n case '0':\n read()\n if (util.isDigit(peek())) {\n throw invalidChar(read())\n }\n\n return '\\0'\n\n case 'x':\n read()\n return hexEscape()\n\n case 'u':\n read()\n return unicodeEscape()\n\n case '\\n':\n case '\\u2028':\n case '\\u2029':\n read()\n return ''\n\n case '\\r':\n read()\n if (peek() === '\\n') {\n read()\n }\n\n return ''\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n throw invalidChar(read())\n\n case undefined:\n throw invalidChar(read())\n }\n\n return read()\n}\n\nfunction hexEscape () {\n let buffer = ''\n let c = peek()\n\n if (!util.isHexDigit(c)) {\n throw invalidChar(read())\n }\n\n buffer += read()\n\n c = peek()\n if (!util.isHexDigit(c)) {\n throw invalidChar(read())\n }\n\n buffer += read()\n\n return String.fromCodePoint(parseInt(buffer, 16))\n}\n\nfunction unicodeEscape () {\n let buffer = ''\n let count = 4\n\n while (count-- > 0) {\n const c = peek()\n if (!util.isHexDigit(c)) {\n throw invalidChar(read())\n }\n\n buffer += read()\n }\n\n return String.fromCodePoint(parseInt(buffer, 16))\n}\n\nconst parseStates = {\n start () {\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n push()\n },\n\n beforePropertyName () {\n switch (token.type) {\n case 'identifier':\n case 'string':\n key = token.value\n parseState = 'afterPropertyName'\n return\n\n case 'punctuator':\n // This code is unreachable since it's handled by the lexState.\n // if (token.value !== '}') {\n // throw invalidToken()\n // }\n\n pop()\n return\n\n case 'eof':\n throw invalidEOF()\n }\n\n // This code is unreachable since it's handled by the lexState.\n // throw invalidToken()\n },\n\n afterPropertyName () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'punctuator' || token.value !== ':') {\n // throw invalidToken()\n // }\n\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n parseState = 'beforePropertyValue'\n },\n\n beforePropertyValue () {\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n push()\n },\n\n beforeArrayValue () {\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n if (token.type === 'punctuator' && token.value === ']') {\n pop()\n return\n }\n\n push()\n },\n\n afterPropertyValue () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'punctuator') {\n // throw invalidToken()\n // }\n\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n switch (token.value) {\n case ',':\n parseState = 'beforePropertyName'\n return\n\n case '}':\n pop()\n }\n\n // This code is unreachable since it's handled by the lexState.\n // throw invalidToken()\n },\n\n afterArrayValue () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'punctuator') {\n // throw invalidToken()\n // }\n\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n switch (token.value) {\n case ',':\n parseState = 'beforeArrayValue'\n return\n\n case ']':\n pop()\n }\n\n // This code is unreachable since it's handled by the lexState.\n // throw invalidToken()\n },\n\n end () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'eof') {\n // throw invalidToken()\n // }\n },\n}\n\nfunction push () {\n let value\n\n switch (token.type) {\n case 'punctuator':\n switch (token.value) {\n case '{':\n value = {}\n break\n\n case '[':\n value = []\n break\n }\n\n break\n\n case 'null':\n case 'boolean':\n case 'numeric':\n case 'string':\n value = token.value\n break\n\n // This code is unreachable.\n // default:\n // throw invalidToken()\n }\n\n if (root === undefined) {\n root = value\n } else {\n const parent = stack[stack.length - 1]\n if (Array.isArray(parent)) {\n parent.push(value)\n } else {\n Object.defineProperty(parent, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n })\n }\n }\n\n if (value !== null && typeof value === 'object') {\n stack.push(value)\n\n if (Array.isArray(value)) {\n parseState = 'beforeArrayValue'\n } else {\n parseState = 'beforePropertyName'\n }\n } else {\n const current = stack[stack.length - 1]\n if (current == null) {\n parseState = 'end'\n } else if (Array.isArray(current)) {\n parseState = 'afterArrayValue'\n } else {\n parseState = 'afterPropertyValue'\n }\n }\n}\n\nfunction pop () {\n stack.pop()\n\n const current = stack[stack.length - 1]\n if (current == null) {\n parseState = 'end'\n } else if (Array.isArray(current)) {\n parseState = 'afterArrayValue'\n } else {\n parseState = 'afterPropertyValue'\n }\n}\n\n// This code is unreachable.\n// function invalidParseState () {\n// return new Error(`JSON5: invalid parse state '${parseState}'`)\n// }\n\n// This code is unreachable.\n// function invalidLexState (state) {\n// return new Error(`JSON5: invalid lex state '${state}'`)\n// }\n\nfunction invalidChar (c) {\n if (c === undefined) {\n return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n }\n\n return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n}\n\nfunction invalidEOF () {\n return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n}\n\n// This code is unreachable.\n// function invalidToken () {\n// if (token.type === 'eof') {\n// return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n// }\n\n// const c = String.fromCodePoint(token.value.codePointAt(0))\n// return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n// }\n\nfunction invalidIdentifier () {\n column -= 5\n return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`)\n}\n\nfunction separatorChar (c) {\n console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`)\n}\n\nfunction formatChar (c) {\n const replacements = {\n \"'\": \"\\\\'\",\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\',\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n '\\v': '\\\\v',\n '\\0': '\\\\0',\n '\\u2028': '\\\\u2028',\n '\\u2029': '\\\\u2029',\n }\n\n if (replacements[c]) {\n return replacements[c]\n }\n\n if (c < ' ') {\n const hexString = c.charCodeAt(0).toString(16)\n return '\\\\x' + ('00' + hexString).substring(hexString.length)\n }\n\n return c\n}\n\nfunction syntaxError (message) {\n const err = new SyntaxError(message)\n err.lineNumber = line\n err.columnNumber = column\n return err\n}\n","const util = require('./util')\n\nmodule.exports = function stringify (value, replacer, space) {\n const stack = []\n let indent = ''\n let propertyList\n let replacerFunc\n let gap = ''\n let quote\n\n if (\n replacer != null &&\n typeof replacer === 'object' &&\n !Array.isArray(replacer)\n ) {\n space = replacer.space\n quote = replacer.quote\n replacer = replacer.replacer\n }\n\n if (typeof replacer === 'function') {\n replacerFunc = replacer\n } else if (Array.isArray(replacer)) {\n propertyList = []\n for (const v of replacer) {\n let item\n\n if (typeof v === 'string') {\n item = v\n } else if (\n typeof v === 'number' ||\n v instanceof String ||\n v instanceof Number\n ) {\n item = String(v)\n }\n\n if (item !== undefined && propertyList.indexOf(item) < 0) {\n propertyList.push(item)\n }\n }\n }\n\n if (space instanceof Number) {\n space = Number(space)\n } else if (space instanceof String) {\n space = String(space)\n }\n\n if (typeof space === 'number') {\n if (space > 0) {\n space = Math.min(10, Math.floor(space))\n gap = ' '.substr(0, space)\n }\n } else if (typeof space === 'string') {\n gap = space.substr(0, 10)\n }\n\n return serializeProperty('', {'': value})\n\n function serializeProperty (key, holder) {\n let value = holder[key]\n if (value != null) {\n if (typeof value.toJSON5 === 'function') {\n value = value.toJSON5(key)\n } else if (typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n }\n }\n\n if (replacerFunc) {\n value = replacerFunc.call(holder, key, value)\n }\n\n if (value instanceof Number) {\n value = Number(value)\n } else if (value instanceof String) {\n value = String(value)\n } else if (value instanceof Boolean) {\n value = value.valueOf()\n }\n\n switch (value) {\n case null: return 'null'\n case true: return 'true'\n case false: return 'false'\n }\n\n if (typeof value === 'string') {\n return quoteString(value, false)\n }\n\n if (typeof value === 'number') {\n return String(value)\n }\n\n if (typeof value === 'object') {\n return Array.isArray(value) ? serializeArray(value) : serializeObject(value)\n }\n\n return undefined\n }\n\n function quoteString (value) {\n const quotes = {\n \"'\": 0.1,\n '\"': 0.2,\n }\n\n const replacements = {\n \"'\": \"\\\\'\",\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\',\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n '\\v': '\\\\v',\n '\\0': '\\\\0',\n '\\u2028': '\\\\u2028',\n '\\u2029': '\\\\u2029',\n }\n\n let product = ''\n\n for (let i = 0; i < value.length; i++) {\n const c = value[i]\n switch (c) {\n case \"'\":\n case '\"':\n quotes[c]++\n product += c\n continue\n\n case '\\0':\n if (util.isDigit(value[i + 1])) {\n product += '\\\\x00'\n continue\n }\n }\n\n if (replacements[c]) {\n product += replacements[c]\n continue\n }\n\n if (c < ' ') {\n let hexString = c.charCodeAt(0).toString(16)\n product += '\\\\x' + ('00' + hexString).substring(hexString.length)\n continue\n }\n\n product += c\n }\n\n const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b)\n\n product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar])\n\n return quoteChar + product + quoteChar\n }\n\n function serializeObject (value) {\n if (stack.indexOf(value) >= 0) {\n throw TypeError('Converting circular structure to JSON5')\n }\n\n stack.push(value)\n\n let stepback = indent\n indent = indent + gap\n\n let keys = propertyList || Object.keys(value)\n let partial = []\n for (const key of keys) {\n const propertyString = serializeProperty(key, value)\n if (propertyString !== undefined) {\n let member = serializeKey(key) + ':'\n if (gap !== '') {\n member += ' '\n }\n member += propertyString\n partial.push(member)\n }\n }\n\n let final\n if (partial.length === 0) {\n final = '{}'\n } else {\n let properties\n if (gap === '') {\n properties = partial.join(',')\n final = '{' + properties + '}'\n } else {\n let separator = ',\\n' + indent\n properties = partial.join(separator)\n final = '{\\n' + indent + properties + ',\\n' + stepback + '}'\n }\n }\n\n stack.pop()\n indent = stepback\n return final\n }\n\n function serializeKey (key) {\n if (key.length === 0) {\n return quoteString(key, true)\n }\n\n const firstChar = String.fromCodePoint(key.codePointAt(0))\n if (!util.isIdStartChar(firstChar)) {\n return quoteString(key, true)\n }\n\n for (let i = firstChar.length; i < key.length; i++) {\n if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {\n return quoteString(key, true)\n }\n }\n\n return key\n }\n\n function serializeArray (value) {\n if (stack.indexOf(value) >= 0) {\n throw TypeError('Converting circular structure to JSON5')\n }\n\n stack.push(value)\n\n let stepback = indent\n indent = indent + gap\n\n let partial = []\n for (let i = 0; i < value.length; i++) {\n const propertyString = serializeProperty(String(i), value)\n partial.push((propertyString !== undefined) ? propertyString : 'null')\n }\n\n let final\n if (partial.length === 0) {\n final = '[]'\n } else {\n if (gap === '') {\n let properties = partial.join(',')\n final = '[' + properties + ']'\n } else {\n let separator = ',\\n' + indent\n let properties = partial.join(separator)\n final = '[\\n' + indent + properties + ',\\n' + stepback + ']'\n }\n }\n\n stack.pop()\n indent = stepback\n return final\n }\n}\n","const parse = require('./parse')\nconst stringify = require('./stringify')\n\nconst JSON5 = {\n parse,\n stringify,\n}\n\nmodule.exports = JSON5\n","import type { MarkdownConfig } from '@pagesmith/core/markdown'\nimport { existsSync, readFileSync } from 'fs'\nimport JSON5 from 'json5'\nimport { basename, dirname, join, resolve } from 'path'\nimport { fileURLToPath } from 'url'\n\ntype FooterLink = {\n label: string\n path: string\n}\n\nexport type DocsUserConfig = {\n name?: string\n title?: string\n description?: string\n origin?: string\n language?: string\n contentDir?: string\n outDir?: string\n publicDir?: string\n /** Base path for deployment under a subdirectory (e.g. '/docs'). Overridden by BASE_URL env var. */\n basePath?: string\n /** Override the header logo link destination (defaults to basePath). */\n homeLink?: string\n footerLinks?: FooterLink[]\n sidebar?: {\n /** Enable collapsible sidebar section groups (default: false) */\n collapsible?: boolean\n }\n search?: {\n enabled?: boolean\n /** Show images in search results (default: false) */\n showImages?: boolean\n /** Show sub-results/sections within pages (default: true) */\n showSubResults?: boolean\n /** Extra CLI flags passed to the pagefind binary */\n pagefindFlags?: string[]\n }\n theme?: {\n lightColor?: string\n darkColor?: string\n layouts?: Record<string, string>\n }\n analytics?: {\n googleAnalytics?: string\n }\n /** Path to favicon file relative to project root. Defaults to 'public/favicon.svg'. Set to false to disable. */\n favicon?: string | false\n markdown?: MarkdownConfig\n home?: {\n configFile?: string\n }\n /** Optional multi-package navigation labels. Maps section slug to display label. */\n packages?: Record<string, { label: string }>\n}\n\nexport type ResolvedDocsConfig = {\n rootDir: string\n contentDir: string\n outDir: string\n publicDir: string\n basePath: string\n homeLink?: string\n name: string\n title: string\n description: string\n origin: string\n language: string\n footerLinks: FooterLink[]\n sidebar: {\n collapsible: boolean\n }\n search: {\n enabled: boolean\n showImages: boolean\n showSubResults: boolean\n pagefindFlags: string[]\n }\n theme?: {\n lightColor?: string\n darkColor?: string\n layouts?: Record<string, string>\n }\n analytics?: {\n googleAnalytics?: string\n }\n /** Resolved absolute path to favicon file, or false if disabled. */\n favicon: string | false\n markdown?: MarkdownConfig\n homeConfigFile?: string\n packages?: Record<string, { label: string }>\n}\n\nexport type DocsBuildOptions = {\n configPath?: string\n /** Override output directory from CLI (takes precedence over config). */\n outDir?: string\n /** Override base path from CLI (takes precedence over config and BASE_URL env). */\n basePath?: string\n}\n\nexport type DocsDevOptions = DocsBuildOptions & {\n port?: number\n open?: boolean\n}\n\nexport function defineDocsConfig(config: DocsUserConfig): DocsUserConfig {\n return config\n}\n\nexport function loadDocsConfig(configPath?: string): DocsUserConfig {\n const resolvedConfigPath = resolve(configPath ?? join(process.cwd(), 'pagesmith.config.json5'))\n if (!existsSync(resolvedConfigPath)) {\n return {}\n }\n\n return JSON5.parse(readFileSync(resolvedConfigPath, 'utf-8')) as DocsUserConfig\n}\n\nexport function resolveDocsConfig(\n configPath?: string,\n overrides?: { outDir?: string; basePath?: string },\n): ResolvedDocsConfig {\n const resolvedConfigPath = resolve(configPath ?? join(process.cwd(), 'pagesmith.config.json5'))\n const rootDir = dirname(resolvedConfigPath)\n const userConfig = loadDocsConfig(resolvedConfigPath)\n const packageName = basename(rootDir)\n\n // CLI flag > BASE_URL env > config basePath > default '/'\n const rawBase = overrides?.basePath ?? process.env.BASE_URL ?? userConfig.basePath ?? '/'\n const basePath = rawBase.replace(/\\/+$/, '') // strip trailing slash, '/' becomes ''\n\n // Resolve favicon path\n let resolvedFavicon: string | false\n if (userConfig.favicon === false) {\n resolvedFavicon = false\n } else if (typeof userConfig.favicon === 'string') {\n resolvedFavicon = resolve(rootDir, userConfig.favicon)\n } else {\n // Default: check public/favicon.svg, then public/favicon.ico, then bundled default\n const publicDir = resolve(rootDir, userConfig.publicDir ?? 'public')\n const svgPath = join(publicDir, 'favicon.svg')\n const icoPath = join(publicDir, 'favicon.ico')\n if (existsSync(svgPath)) {\n resolvedFavicon = svgPath\n } else if (existsSync(icoPath)) {\n resolvedFavicon = icoPath\n } else {\n const corePkgDir = dirname(fileURLToPath(import.meta.resolve('@pagesmith/core/package.json')))\n resolvedFavicon = join(corePkgDir, 'assets', 'favicon.svg')\n }\n }\n\n return {\n rootDir,\n contentDir: resolve(rootDir, userConfig.contentDir ?? 'content'),\n outDir: overrides?.outDir ?? resolve(rootDir, userConfig.outDir ?? 'dist'),\n publicDir: resolve(rootDir, userConfig.publicDir ?? 'public'),\n basePath,\n homeLink: userConfig.homeLink,\n name: userConfig.name ?? userConfig.title ?? packageName,\n title: userConfig.title ?? userConfig.name ?? packageName,\n description: userConfig.description ?? 'Documentation site powered by @pagesmith/docs',\n origin: userConfig.origin ?? 'https://example.com',\n language: userConfig.language ?? 'en',\n footerLinks: userConfig.footerLinks ?? [],\n search: {\n enabled: userConfig.search?.enabled ?? true,\n showImages: userConfig.search?.showImages ?? false,\n showSubResults: userConfig.search?.showSubResults ?? true,\n pagefindFlags: userConfig.search?.pagefindFlags ?? [],\n },\n sidebar: {\n collapsible: userConfig.sidebar?.collapsible ?? false,\n },\n favicon: resolvedFavicon,\n theme: userConfig.theme,\n analytics: userConfig.analytics,\n markdown: userConfig.markdown,\n homeConfigFile: userConfig.home?.configFile\n ? resolve(rootDir, userConfig.home.configFile)\n : resolve(rootDir, 'content/home.json5'),\n packages: userConfig.packages,\n }\n}\n\nexport function readJson5File<T>(filePath: string): T | undefined {\n if (!existsSync(filePath)) return undefined\n return JSON5.parse(readFileSync(filePath, 'utf-8')) as T\n}\n\nexport function toTitleCase(value: string): string {\n return value.replace(/[-_]/g, ' ').replace(/\\b\\w/g, (char) => char.toUpperCase())\n}\n\nexport function getPackageDir(): string {\n return resolve(import.meta.dirname, '..')\n}\n\nexport function getThemeRoot(): string {\n return resolve(getPackageDir(), 'theme')\n}\n\nexport function getThemeStylesEntry(): string {\n return resolve(getThemeRoot(), 'styles/main.css')\n}\n\nexport function getThemeRuntimeEntry(): string {\n return resolve(getThemeRoot(), 'runtime/main.ts')\n}\n","/** A special constant with type `never` */\nexport const NEVER = Object.freeze({\n status: \"aborted\",\n});\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n function init(inst, def) {\n if (!inst._zod) {\n Object.defineProperty(inst, \"_zod\", {\n value: {\n def,\n constr: _,\n traits: new Set(),\n },\n enumerable: false,\n });\n }\n if (inst._zod.traits.has(name)) {\n return;\n }\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n const proto = _.prototype;\n const keys = Object.keys(proto);\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n if (!(k in inst)) {\n inst[k] = proto[k].bind(inst);\n }\n }\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred) {\n fn();\n }\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nexport const $brand = Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nexport class $ZodEncodeError extends Error {\n constructor(name) {\n super(`Encountered unidirectional transform during encode: ${name}`);\n this.name = \"ZodEncodeError\";\n }\n}\nexport const globalConfig = {};\nexport function config(newConfig) {\n if (newConfig)\n Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\n","// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n throw new Error(\"Unexpected value in exhaustive check\");\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nexport function joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nexport function cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nexport function nullish(input) {\n return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepString = step.toString();\n let stepDecCount = (stepString.split(\".\")[1] || \"\").length;\n if (stepDecCount === 0 && /\\d?e-\\d?/.test(stepString)) {\n const match = stepString.match(/\\d?e-(\\d?)/);\n if (match?.[1]) {\n stepDecCount = Number.parseInt(match[1]);\n }\n }\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nconst EVALUATING = Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nexport function objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nexport function mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nexport function randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nexport function esc(str) {\n return JSON.stringify(str);\n}\nexport function slugify(input) {\n return input\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\")\n .replace(/[\\s_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = cached(() => {\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nexport function isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n if (typeof ctor !== \"function\")\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nexport function shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n return o;\n}\nexport function numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexport const propertyKeyTypes = new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = new Set([\"string\", \"number\", \"bigint\", \"boolean\", \"symbol\", \"undefined\"]);\nexport function escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nexport function normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nexport function createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nexport function stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nexport function optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nexport const NUMBER_FORMAT_RANGES = {\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n newShape[key] = currDef.shape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function omit(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...schema._zod.def.shape };\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n // Only throw if new shape overlaps with existing shape\n // Use getOwnPropertyDescriptor to check key existence without accessing values\n const existingShape = schema._zod.def.shape;\n for (const key in shape) {\n if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n }\n }\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function merge(a, b) {\n const def = mergeDefs(a._zod.def, {\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: [], // delete existing checks\n });\n return clone(a, def);\n}\nexport function partial(Class, schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".partial() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n for (const key in oldShape) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key in oldShape) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\nexport function prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nexport function unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n const full = { ...iss, path: iss.path ?? [] };\n // for backwards compatibility\n if (!iss.message) {\n const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\";\n full.message = message;\n }\n // delete (full as any).def;\n delete full.inst;\n delete full.continue;\n if (!ctx?.reportInput) {\n delete full.input;\n }\n return full;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nexport function parsedType(data) {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"nan\" : \"number\";\n }\n case \"object\": {\n if (data === null) {\n return \"null\";\n }\n if (Array.isArray(data)) {\n return \"array\";\n }\n const obj = data;\n if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n return obj.constructor.name;\n }\n }\n }\n return t;\n}\nexport function issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nexport function cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n","import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false,\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false,\n });\n inst.message = JSON.stringify(def, util.jsonStringifyReplacer, 2);\n Object.defineProperty(inst, \"toString\", {\n value: () => inst.message,\n enumerable: false,\n });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\nexport function flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\nexport function formatError(error, mapper = (issue) => issue.message) {\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues });\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues });\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(error);\n return fieldErrors;\n}\nexport function treeifyError(error, mapper = (issue) => issue.message) {\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a, _b;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, issue.path));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * ✖ Expected number, received string at \"username\n * favoriteNumbers[0]\n * ✖ Invalid input: expected number\n * ```\n */\nexport function toDotPath(_path) {\n const segs = [];\n const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nexport function prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`✖ ${issue.message}`);\n if (issue.path?.length)\n lines.push(` → at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n","import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\nexport const _parse = (_Err) => (schema, value, _ctx, _params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, _params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length\n ? {\n success: false,\n error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length\n ? {\n success: false,\n error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\nexport const _encode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parse(_Err)(schema, value, ctx);\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => (schema, value, _ctx) => {\n return _parse(_Err)(schema, value, _ctx);\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parseAsync(_Err)(schema, value, ctx);\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _parseAsync(_Err)(schema, value, _ctx);\n};\nexport const decodeAsync = /* @__PURE__*/ _decodeAsync(errors.$ZodRealError);\nexport const _safeEncode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParse(_Err)(schema, value, ctx);\n};\nexport const safeEncode = /* @__PURE__*/ _safeEncode(errors.$ZodRealError);\nexport const _safeDecode = (_Err) => (schema, value, _ctx) => {\n return _safeParse(_Err)(schema, value, _ctx);\n};\nexport const safeDecode = /* @__PURE__*/ _safeDecode(errors.$ZodRealError);\nexport const _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParseAsync(_Err)(schema, value, ctx);\n};\nexport const safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(errors.$ZodRealError);\nexport const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nexport const safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(errors.$ZodRealError);\n","import * as util from \"./util.js\";\nexport const cuid = /^[cC][^\\s-]{8,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n if (!version)\n return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const idnEmail = unicodeEmail;\nexport const browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nexport function emoji() {\n return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;\nexport const mac = (delimiter) => {\n const escapedDelim = util.escapeRegex(delimiter ?? \":\");\n return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`);\n};\nexport const cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nexport const domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\n// E.164: leading digit must be 1-9; total digits (excluding '+') between 7-15\nexport const e164 = /^\\+[1-9]\\d{6,14}$/;\n// const dateSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\nexport const date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\"\n ? args.precision === -1\n ? `${hhmm}`\n : args.precision === 0\n ? `${hhmm}:[0-5]\\\\d`\n : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nexport function time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n const time = timeSource({ precision: args.precision });\n const opts = [\"Z\"];\n if (args.local)\n opts.push(\"\");\n // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n if (args.offset)\n opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nexport const string = (params) => {\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^-?\\d+n?$/;\nexport const integer = /^-?\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?$/;\nexport const boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\nexport { _null as null };\nconst _undefined = /^undefined$/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nexport const hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexport const md5_hex = /^[0-9a-fA-F]{32}$/;\nexport const md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nexport const md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexport const sha1_hex = /^[0-9a-fA-F]{40}$/;\nexport const sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nexport const sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexport const sha256_hex = /^[0-9a-fA-F]{64}$/;\nexport const sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nexport const sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexport const sha384_hex = /^[0-9a-fA-F]{96}$/;\nexport const sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nexport const sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexport const sha512_hex = /^[0-9a-fA-F]{128}$/;\nexport const sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nexport const sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\n","// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n if (def.value < curr) {\n if (def.inclusive)\n bag.maximum = def.value;\n else\n bag.exclusiveMaximum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n if (def.value > curr) {\n if (def.inclusive)\n bag.minimum = def.value;\n else\n bag.exclusiveMinimum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n var _a;\n (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n });\n inst._zod.check = (payload) => {\n if (typeof payload.value !== typeof def.value)\n throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\"\n ? payload.value % def.value === BigInt(0)\n : util.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple)\n return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n if (isInt)\n bag.pattern = regexes.integer;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (isInt) {\n if (!Number.isInteger(input)) {\n // invalid_format issue\n // payload.issues.push({\n // expected: def.format,\n // format: def.format,\n // code: \"invalid_format\",\n // input,\n // inst,\n // });\n // invalid_type issue\n payload.issues.push({\n expected: origin,\n format: def.format,\n code: \"invalid_type\",\n continue: false,\n input,\n inst,\n });\n return;\n // not_multiple_of issue\n // payload.issues.push({\n // code: \"not_multiple_of\",\n // origin: \"number\",\n // input,\n // inst,\n // divisor: 1,\n // });\n }\n if (!Number.isSafeInteger(input)) {\n if (input > 0) {\n // too_big\n payload.issues.push({\n input,\n code: \"too_big\",\n maximum: Number.MAX_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n else {\n // too_small\n payload.issues.push({\n input,\n code: \"too_small\",\n minimum: Number.MIN_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n return;\n }\n }\n if (input < minimum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_small\",\n minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.size;\n bag.maximum = def.size;\n bag.size = def.size;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size === def.size)\n return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length <= def.maximum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length >= def.minimum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.length;\n bag.maximum = def.length;\n bag.length = def.length;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length === def.length)\n return;\n const origin = util.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n var _a, _b;\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n if (def.pattern) {\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(def.pattern);\n }\n });\n if (def.pattern)\n (_a = inst._zod).check ?? (_a.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n inst,\n continue: !def.abort,\n });\n });\n else\n (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n $ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.lowercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.uppercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const escapedRegex = util.escapeRegex(def.includes);\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.includes(def.includes, def.position))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"includes\",\n includes: def.includes,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.startsWith(def.prefix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"starts_with\",\n prefix: def.prefix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.endsWith(def.suffix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"ends_with\",\n suffix: def.suffix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n///////////////////////////////////\n///// $ZodCheckProperty /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(property, result.issues));\n }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n const result = def.schema._zod.run({\n value: payload.value[def.property],\n issues: [],\n }, {});\n if (result instanceof Promise) {\n return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n }\n handleCheckPropertyResult(result, payload, def.property);\n return;\n };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const mimeSet = new Set(def.mime);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.mime = def.mime;\n });\n inst._zod.check = (payload) => {\n if (mimeSet.has(payload.value.type))\n return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n payload.value = def.tx(payload.value);\n };\n});\n","export class Doc {\n constructor(args = []) {\n this.content = [];\n this.indent = 0;\n if (this)\n this.args = args;\n }\n indented(fn) {\n this.indent += 1;\n fn(this);\n this.indent -= 1;\n }\n write(arg) {\n if (typeof arg === \"function\") {\n arg(this, { execution: \"sync\" });\n arg(this, { execution: \"async\" });\n return;\n }\n const content = arg;\n const lines = content.split(\"\\n\").filter((x) => x);\n const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n for (const line of dedented) {\n this.content.push(line);\n }\n }\n compile() {\n const F = Function;\n const args = this?.args;\n const content = this?.content ?? [``];\n const lines = [...content.map((x) => ` ${x}`)];\n // console.log(lines.join(\"\\n\"));\n return new F(...args, lines.join(\"\\n\"));\n }\n}\n","export const version = {\n major: 4,\n minor: 3,\n patch: 6,\n};\n","import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { parse, parseAsync, safeParse, safeParseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n var _a;\n inst ?? (inst = {});\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = version;\n const checks = [...(inst._zod.def.checks ?? [])];\n // if inst is itself a checks.$ZodCheck, run it as a check\n if (inst._zod.traits.has(\"$ZodCheck\")) {\n checks.unshift(inst);\n }\n for (const ch of checks) {\n for (const fn of ch._zod.onattach) {\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer\n // inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(() => {\n inst._zod.run = inst._zod.parse;\n });\n }\n else {\n const runChecks = (payload, checks, ctx) => {\n let isAborted = util.aborted(payload);\n let asyncResult;\n for (const ch of checks) {\n if (ch._zod.def.when) {\n const shouldRun = ch._zod.def.when(payload);\n if (!shouldRun)\n continue;\n }\n else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new core.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n return;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n });\n }\n else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n continue;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(() => {\n return payload;\n });\n }\n return payload;\n };\n const handleCanaryResult = (canary, payload, ctx) => {\n // abort if the canary is aborted\n if (util.aborted(canary)) {\n canary.aborted = true;\n return canary;\n }\n // run checks first, then\n const checkResult = runChecks(payload, checks, ctx);\n if (checkResult instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n }\n return inst._zod.parse(checkResult, ctx);\n };\n inst._zod.run = (payload, ctx) => {\n if (ctx.skipChecks) {\n return inst._zod.parse(payload, ctx);\n }\n if (ctx.direction === \"backward\") {\n // run canary\n // initial pass (no checks)\n const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n if (canary instanceof Promise) {\n return canary.then((canary) => {\n return handleCanaryResult(canary, payload, ctx);\n });\n }\n return handleCanaryResult(canary, payload, ctx);\n }\n // forward\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return result.then((result) => runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n // Lazy initialize ~standard to avoid creating objects for every schema\n util.defineLazy(inst, \"~standard\", () => ({\n validate: (value) => {\n try {\n const r = safeParse(inst, value);\n return r.success ? { value: r.data } : { issues: r.error?.issues };\n }\n catch (_) {\n return safeParseAsync(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n }\n },\n vendor: \"zod\",\n version: 1,\n }));\n});\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n inst._zod.parse = (payload, _) => {\n if (def.coerce)\n try {\n payload.value = String(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"string\")\n return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n // check initialization must come first\n checks.$ZodCheckStringFormat.init(inst, def);\n $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.guid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8,\n };\n const v = versionMap[def.version];\n if (v === undefined)\n throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = regexes.uuid(v));\n }\n else\n def.pattern ?? (def.pattern = regexes.uuid());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.email);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n try {\n // Trim whitespace from input\n const trimmed = payload.value.trim();\n // @ts-ignore\n const url = new URL(trimmed);\n if (def.hostname) {\n def.hostname.lastIndex = 0;\n if (!def.hostname.test(url.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: def.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n if (def.protocol) {\n def.protocol.lastIndex = 0;\n if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n // Set the output value based on normalize flag\n if (def.normalize) {\n // Use normalized URL\n payload.value = url.href;\n }\n else {\n // Preserve the original input (trimmed)\n payload.value = trimmed;\n }\n return;\n }\n catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.emoji());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.nanoid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid2);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ulid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.xid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ksuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.datetime(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.date);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.time(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.duration);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv4);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv4`;\n});\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv6);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv6`;\n inst._zod.check = (payload) => {\n try {\n // @ts-ignore\n new URL(`http://[${payload.value}]`);\n // return;\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodMAC = /*@__PURE__*/ core.$constructor(\"$ZodMAC\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.mac(def.delimiter));\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `mac`;\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv4);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n const parts = payload.value.split(\"/\");\n try {\n if (parts.length !== 2)\n throw new Error();\n const [address, prefix] = parts;\n if (!prefix)\n throw new Error();\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n throw new Error();\n if (prefixNum < 0 || prefixNum > 128)\n throw new Error();\n // @ts-ignore\n new URL(`http://[${address}]`);\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64(data) {\n if (data === \"\")\n return true;\n if (data.length % 4 !== 0)\n return false;\n try {\n // @ts-ignore\n atob(data);\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64\";\n inst._zod.check = (payload) => {\n if (isValidBase64(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64URL(data) {\n if (!regexes.base64url.test(data))\n return false;\n const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64url);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64url\";\n inst._zod.check = (payload) => {\n if (isValidBase64URL(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.e164);\n $ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodJWT //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3)\n return false;\n const [header] = tokensParts;\n if (!header)\n return false;\n // @ts-ignore\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n return false;\n if (!parsedHeader.alg)\n return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidJWT(payload.value, def.alg))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (def.fn(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Number(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\"\n ? Number.isNaN(input)\n ? \"NaN\"\n : !Number.isFinite(input)\n ? \"Infinity\"\n : undefined\n : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...(received ? { received } : {}),\n });\n return payload;\n };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumberFormat\", (inst, def) => {\n checks.$ZodCheckNumberFormat.init(inst, def);\n $ZodNumber.init(inst, def); // no format checks\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.boolean;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Boolean(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"boolean\")\n return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.bigint;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = BigInt(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"bigint\")\n return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigIntFormat\", (inst, def) => {\n checks.$ZodCheckBigIntFormat.init(inst, def);\n $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"symbol\")\n return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.undefined;\n inst._zod.values = new Set([undefined]);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.null;\n inst._zod.values = new Set([null]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input === null)\n return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n }\n catch (_err) { }\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate)\n return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...(isDate ? { received: \"Invalid Date\" } : {}),\n inst,\n });\n return payload;\n };\n});\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = Array(input.length);\n const proms = [];\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n const result = def.element._zod.run({\n value: item,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n }\n else {\n handleArrayResult(result, payload, i);\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n});\nfunction handlePropertyResult(result, final, key, input, isOptionalOut) {\n if (result.issues.length) {\n // For optional-out schemas, ignore errors on absent keys\n if (isOptionalOut && !(key in input)) {\n return;\n }\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n if (result.value === undefined) {\n if (key in input) {\n final.value[key] = undefined;\n }\n }\n else {\n final.value[key] = result.value;\n }\n}\nfunction normalizeDef(def) {\n const keys = Object.keys(def.shape);\n for (const k of keys) {\n if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n }\n }\n const okeys = util.optionalKeys(def.shape);\n return {\n ...def,\n keys,\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n const unrecognized = [];\n // iterate over input keys\n const keySet = def.keySet;\n const _catchall = def.catchall._zod;\n const t = _catchall.def.type;\n const isOptionalOut = _catchall.optout === \"optional\";\n for (const key in input) {\n if (keySet.has(key))\n continue;\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalOut);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n}\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodType.init(inst, def);\n // const sh = def.shape;\n const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n if (!desc?.get) {\n const sh = def.shape;\n Object.defineProperty(def, \"shape\", {\n get: () => {\n const newSh = { ...sh };\n Object.defineProperty(def, \"shape\", {\n value: newSh,\n });\n return newSh;\n },\n });\n }\n const _normalized = util.cached(() => normalizeDef(def));\n util.defineLazy(inst._zod, \"propValues\", () => {\n const shape = def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n propValues[key] ?? (propValues[key] = new Set());\n for (const v of field.values)\n propValues[key].add(v);\n }\n }\n return propValues;\n });\n const isObject = util.isObject;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = {};\n const proms = [];\n const shape = value.shape;\n for (const key of value.keys) {\n const el = shape[key];\n const isOptionalOut = el._zod.optout === \"optional\";\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalOut);\n }\n }\n if (!catchall) {\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n };\n});\nexport const $ZodObjectJIT = /*@__PURE__*/ core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodObject.init(inst, def);\n const superParse = inst._zod.parse;\n const _normalized = util.cached(() => normalizeDef(def));\n const generateFastpass = (shape) => {\n const doc = new Doc([\"shape\", \"payload\", \"ctx\"]);\n const normalized = _normalized.value;\n const parseStr = (key) => {\n const k = util.esc(key);\n return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n };\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.keys) {\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(`const newResult = {};`);\n for (const key of normalized.keys) {\n const id = ids[key];\n const k = util.esc(key);\n const schema = shape[key];\n const isOptionalOut = schema?._zod?.optout === \"optional\";\n doc.write(`const ${id} = ${parseStr(key)};`);\n if (isOptionalOut) {\n // For optional-out schemas, ignore errors on absent keys\n doc.write(`\n if (${id}.issues.length) {\n if (${k} in input) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n else {\n doc.write(`\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n const fn = doc.compile();\n return (payload, ctx) => fn(shape, payload, ctx);\n };\n let fastpass;\n const isObject = util.isObject;\n const jit = !core.globalConfig.jitless;\n const allowsEval = util.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass)\n fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n if (!catchall)\n return payload;\n return handleCatchall([], input, payload, ctx, value, inst);\n }\n return superParse(payload, ctx);\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results) {\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n const nonaborted = results.filter((r) => !util.aborted(r));\n if (nonaborted.length === 1) {\n final.value = nonaborted[0].value;\n return nonaborted[0];\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"values\", () => {\n if (def.options.every((o) => o._zod.values)) {\n return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n if (def.options.every((o) => o._zod.pattern)) {\n const patterns = def.options.map((o) => o._zod.pattern);\n return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n if (result.issues.length === 0)\n return result;\n results.push(result);\n }\n }\n if (!async)\n return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nfunction handleExclusiveUnionResults(results, final, inst, ctx) {\n const successes = results.filter((r) => r.issues.length === 0);\n if (successes.length === 1) {\n final.value = successes[0].value;\n return final;\n }\n if (successes.length === 0) {\n // No matches - same as regular union\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n }\n else {\n // Multiple matches - exclusive union failure\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: [],\n inclusive: false,\n });\n }\n return final;\n}\nexport const $ZodXor = /*@__PURE__*/ core.$constructor(\"$ZodXor\", (inst, def) => {\n $ZodUnion.init(inst, def);\n def.inclusive = false;\n const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n results.push(result);\n }\n }\n if (!async)\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n });\n };\n});\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n def.inclusive = false;\n $ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n util.defineLazy(inst._zod, \"propValues\", () => {\n const propValues = {};\n for (const option of def.options) {\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)) {\n if (!propValues[k])\n propValues[k] = new Set();\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n return propValues;\n });\n const disc = util.cached(() => {\n const opts = def.options;\n const map = new Map();\n for (const o of opts) {\n const values = o._zod.propValues?.[def.discriminator];\n if (!values || values.size === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n for (const v of values) {\n if (map.has(v)) {\n throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n }\n map.set(v, o);\n }\n }\n return map;\n });\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isObject(input)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"object\",\n input,\n inst,\n });\n return payload;\n }\n const opt = disc.value.get(input?.[def.discriminator]);\n if (opt) {\n return opt._zod.run(payload, ctx);\n }\n if (def.unionFallback) {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n discriminator: def.discriminator,\n input,\n path: [def.discriminator],\n inst,\n });\n return payload;\n };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([left, right]).then(([left, right]) => {\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nfunction mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return { valid: true, data: a };\n }\n if (util.isPlainObject(a) && util.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return { valid: false, mergeErrorPath: [] };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n // Track which side(s) report each key as unrecognized\n const unrecKeys = new Map();\n let unrecIssue;\n for (const iss of left.issues) {\n if (iss.code === \"unrecognized_keys\") {\n unrecIssue ?? (unrecIssue = iss);\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).l = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n for (const iss of right.issues) {\n if (iss.code === \"unrecognized_keys\") {\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).r = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n // Report only keys unrecognized by BOTH sides\n const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n if (bothKeys.length && unrecIssue) {\n result.issues.push({ ...unrecIssue, keys: bothKeys });\n }\n if (util.aborted(result))\n return result;\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n $ZodType.init(inst, def);\n const items = def.items;\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\",\n });\n return payload;\n }\n payload.value = [];\n const proms = [];\n const reversedIndex = [...items].reverse().findIndex((item) => item._zod.optin !== \"optional\");\n const optStart = reversedIndex === -1 ? 0 : items.length - reversedIndex;\n if (!def.rest) {\n const tooBig = input.length > items.length;\n const tooSmall = input.length < optStart - 1;\n if (tooBig || tooSmall) {\n payload.issues.push({\n ...(tooBig\n ? { code: \"too_big\", maximum: items.length, inclusive: true }\n : { code: \"too_small\", minimum: items.length }),\n input,\n inst,\n origin: \"array\",\n });\n return payload;\n }\n }\n let i = -1;\n for (const item of items) {\n i++;\n if (i >= input.length)\n if (i >= optStart)\n continue;\n const result = item._zod.run({\n value: input[i],\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n if (def.rest) {\n const rest = input.slice(items.length);\n for (const el of rest) {\n i++;\n const result = def.rest._zod.run({\n value: el,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n const values = def.keyType._zod.values;\n if (values) {\n payload.value = {};\n const recordKeys = new Set();\n for (const key of values) {\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n recordKeys.add(typeof key === \"number\" ? key.toString() : key);\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }\n }\n }\n let unrecognized;\n for (const key in input) {\n if (!recordKeys.has(key)) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n });\n }\n }\n else {\n payload.value = {};\n for (const key of Reflect.ownKeys(input)) {\n if (key === \"__proto__\")\n continue;\n let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n // Numeric string fallback: if key is a numeric string and failed, retry with Number(key)\n // This handles z.number(), z.literal([1, 2, 3]), and unions containing numeric literals\n const checkNumericKey = typeof key === \"string\" && regexes.number.test(key) && keyResult.issues.length;\n if (checkNumericKey) {\n const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);\n if (retryResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (retryResult.issues.length === 0) {\n keyResult = retryResult;\n }\n }\n if (keyResult.issues.length) {\n if (def.mode === \"loose\") {\n // Pass through unchanged\n payload.value[key] = input[key];\n }\n else {\n // Default \"strict\" behavior: error on invalid key\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n }\n continue;\n }\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload;\n };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n payload.value = new Map();\n for (const [key, value] of input) {\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n if (keyResult instanceof Promise || valueResult instanceof Promise) {\n proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }));\n }\n else {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, keyResult.issues));\n }\n else {\n final.issues.push({\n code: \"invalid_key\",\n origin: \"map\",\n input,\n inst,\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n if (valueResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, valueResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\",\n });\n return payload;\n }\n const proms = [];\n payload.value = new Set();\n for (const item of input) {\n const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleSetResult(result, payload)));\n }\n else\n handleSetResult(result, payload);\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleSetResult(result, final) {\n if (result.issues.length) {\n final.issues.push(...result.issues);\n }\n final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n $ZodType.init(inst, def);\n const values = util.getEnumValues(def.entries);\n const valuesSet = new Set(values);\n inst._zod.values = valuesSet;\n inst._zod.pattern = new RegExp(`^(${values\n .filter((k) => util.propertyKeyTypes.has(typeof k))\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (valuesSet.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n if (def.values.length === 0) {\n throw new Error(\"Cannot create literal schema with no valid values\");\n }\n const values = new Set(def.values);\n inst._zod.values = values;\n inst._zod.pattern = new RegExp(`^(${def.values\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o)))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n // @ts-ignore\n if (input instanceof File)\n return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n const _out = def.transform(payload.value, payload);\n if (ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n payload.value = _out;\n return payload;\n };\n});\nfunction handleOptionalResult(result, input) {\n if (result.issues.length && input === undefined) {\n return { issues: [], value: undefined };\n }\n return result;\n}\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (def.innerType._zod.optin === \"optional\") {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise)\n return result.then((r) => handleOptionalResult(r, payload.value));\n return handleOptionalResult(result, payload.value);\n }\n if (payload.value === undefined) {\n return payload;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodExactOptional = /*@__PURE__*/ core.$constructor(\"$ZodExactOptional\", (inst, def) => {\n // Call parent init - inherits optin/optout = \"optional\"\n $ZodOptional.init(inst, def);\n // Override values/pattern to NOT add undefined\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"pattern\", () => def.innerType._zod.pattern);\n // Override parse to just delegate (no undefined handling)\n inst._zod.parse = (payload, ctx) => {\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n // Forward direction (decode): allow null to pass through\n if (payload.value === null)\n return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n $ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply defaults for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault returns the default value immediately in forward direction.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n return payload;\n }\n // Forward direction: continue with default handling\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply prefault for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => {\n const v = def.innerType._zod.values;\n return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst,\n });\n }\n return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(\"ZodSuccess\");\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply catch logic\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n });\n }\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\",\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handlePipeResult(right, def.in, ctx));\n }\n return handlePipeResult(right, def.in, ctx);\n }\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def.out, ctx));\n }\n return handlePipeResult(left, def.out, ctx);\n };\n});\nfunction handlePipeResult(left, next, ctx) {\n if (left.issues.length) {\n // prevent further checks\n left.aborted = true;\n return left;\n }\n return next._zod.run({ value: left.value, issues: left.issues }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handleCodecAResult(left, def, ctx));\n }\n return handleCodecAResult(left, def, ctx);\n }\n else {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handleCodecAResult(right, def, ctx));\n }\n return handleCodecAResult(right, def, ctx);\n }\n };\n});\nfunction handleCodecAResult(result, def, ctx) {\n if (result.issues.length) {\n // prevent further checks\n result.aborted = true;\n return result;\n }\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const transformed = def.transform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n }\n return handleCodecTxResult(result, transformed, def.out, ctx);\n }\n else {\n const transformed = def.reverseTransform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n }\n return handleCodecTxResult(result, transformed, def.in, ctx);\n }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n // Check if transform added any issues\n if (left.issues.length) {\n left.aborted = true;\n return left;\n }\n return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType?._zod?.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType?._zod?.optout);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n payload.value = Object.freeze(payload.value);\n return payload;\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n const regexParts = [];\n for (const part of def.parts) {\n if (typeof part === \"object\" && part !== null) {\n // is Zod schema\n if (!part._zod.pattern) {\n // if (!source)\n throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n }\n const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n if (!source)\n throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n regexParts.push(source.slice(start, end));\n }\n else if (part === null || util.primitiveTypes.has(typeof part)) {\n regexParts.push(util.escapeRegex(`${part}`));\n }\n else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"string\",\n code: \"invalid_type\",\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: def.format ?? \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodFunction = /*@__PURE__*/ core.$constructor(\"$ZodFunction\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._def = def;\n inst._zod.def = def;\n inst.implement = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n return function (...args) {\n const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args;\n const result = Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return parse(inst._def.output, result);\n }\n return result;\n };\n };\n inst.implementAsync = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implementAsync() must be called with a function\");\n }\n return async function (...args) {\n const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args;\n const result = await Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return await parseAsync(inst._def.output, result);\n }\n return result;\n };\n };\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"function\") {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"function\",\n input: payload.value,\n inst,\n });\n return payload;\n }\n // Check if output is a promise type to determine if we should use async implementation\n const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n if (hasPromiseOutput) {\n payload.value = inst.implementAsync(payload.value);\n }\n else {\n payload.value = inst.implement(payload.value);\n }\n return payload;\n };\n inst.input = (...args) => {\n const F = inst.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: inst._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: inst._def.output,\n });\n };\n inst.output = (output) => {\n const F = inst.constructor;\n return new F({\n type: \"function\",\n input: inst._def.input,\n output,\n });\n };\n return inst;\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n $ZodType.init(inst, def);\n // let _innerType!: any;\n // util.defineLazy(def, \"getter\", () => {\n // if (!_innerType) {\n // _innerType = def.getter();\n // }\n // return () => _innerType;\n // });\n util.defineLazy(inst._zod, \"innerType\", () => def.getter());\n util.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType?._zod?.pattern);\n util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType?._zod?.propValues);\n util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType?._zod?.optin ?? undefined);\n util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType?._zod?.optout ?? undefined);\n inst._zod.parse = (payload, ctx) => {\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n checks.$ZodCheck.init(inst, def);\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _) => {\n return payload;\n };\n inst._zod.check = (payload) => {\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r) => handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst, // incorporates params.error into issue reporting\n path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n continue: !inst._zod.def.abort,\n // params: inst._zod.def.params,\n };\n if (inst._zod.def.params)\n _iss.params = inst._zod.def.params;\n payload.issues.push(util.issue(_iss));\n }\n}\n","var _a;\nexport const $output = Symbol(\"ZodOutput\");\nexport const $input = Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n constructor() {\n this._map = new WeakMap();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new WeakMap();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = { ...(this.get(p) ?? {}) };\n delete pm.id; // do not inherit id\n const f = { ...pm, ...this._map.get(schema) };\n return Object.keys(f).length ? f : undefined;\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\n// registries\nexport function registry() {\n return new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nexport const globalRegistry = globalThis.__zod_globalRegistry;\n","import * as checks from \"./checks.js\";\nimport * as registries from \"./registries.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\n// @__NO_SIDE_EFFECTS__\nexport function _string(Class, params) {\n return new Class({\n type: \"string\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mac(Class, params) {\n return new Class({\n type: \"string\",\n format: \"mac\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport const TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6,\n};\n// @__NO_SIDE_EFFECTS__\nexport function _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _null(Class, params) {\n return new Class({\n type: \"null\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _never(Class, params) {\n return new Class({\n type: \"never\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _void(Class, params) {\n return new Class({\n type: \"void\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _date(Class, params) {\n return new Class({\n type: \"date\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lt(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lte(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\n// @__NO_SIDE_EFFECTS__\nexport function _gt(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _gte(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\n// @__NO_SIDE_EFFECTS__\nexport function _positive(params) {\n return _gt(0, params);\n}\n// negative\n// @__NO_SIDE_EFFECTS__\nexport function _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\n// @__NO_SIDE_EFFECTS__\nexport function _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\n// @__NO_SIDE_EFFECTS__\nexport function _nonnegative(params) {\n return _gte(0, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function _multipleOf(value, params) {\n return new checks.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ...util.normalizeParams(params),\n value,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxSize(maximum, params) {\n return new checks.$ZodCheckMaxSize({\n check: \"max_size\",\n ...util.normalizeParams(params),\n maximum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minSize(minimum, params) {\n return new checks.$ZodCheckMinSize({\n check: \"min_size\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _size(size, params) {\n return new checks.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ...util.normalizeParams(params),\n size,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxLength(maximum, params) {\n const ch = new checks.$ZodCheckMaxLength({\n check: \"max_length\",\n ...util.normalizeParams(params),\n maximum,\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minLength(minimum, params) {\n return new checks.$ZodCheckMinLength({\n check: \"min_length\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _length(length, params) {\n return new checks.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ...util.normalizeParams(params),\n length,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _regex(pattern, params) {\n return new checks.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ...util.normalizeParams(params),\n pattern,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lowercase(params) {\n return new checks.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uppercase(params) {\n return new checks.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _includes(includes, params) {\n return new checks.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ...util.normalizeParams(params),\n includes,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _startsWith(prefix, params) {\n return new checks.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ...util.normalizeParams(params),\n prefix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _endsWith(suffix, params) {\n return new checks.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ...util.normalizeParams(params),\n suffix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _property(property, schema, params) {\n return new checks.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mime(types, params) {\n return new checks.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _overwrite(tx) {\n return new checks.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx,\n });\n}\n// normalize\n// @__NO_SIDE_EFFECTS__\nexport function _normalize(form) {\n return _overwrite((input) => input.normalize(form));\n}\n// trim\n// @__NO_SIDE_EFFECTS__\nexport function _trim() {\n return _overwrite((input) => input.trim());\n}\n// toLowerCase\n// @__NO_SIDE_EFFECTS__\nexport function _toLowerCase() {\n return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\n// @__NO_SIDE_EFFECTS__\nexport function _toUpperCase() {\n return _overwrite((input) => input.toUpperCase());\n}\n// slugify\n// @__NO_SIDE_EFFECTS__\nexport function _slugify() {\n return _overwrite((input) => util.slugify(input));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ...util.normalizeParams(params),\n });\n}\nexport function _xor(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass<schemas.$ZodTuple>,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\n// @__NO_SIDE_EFFECTS__\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _file(Class, params) {\n return new Class({\n type: \"file\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _custom(Class, fn, _params) {\n const norm = util.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// same as _custom but defaults to abort:false\n// @__NO_SIDE_EFFECTS__\nexport function _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...util.normalizeParams(_params),\n });\n return schema;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _superRefine(fn) {\n const ch = _check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _check(fn, params) {\n const ch = new checks.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function describe(description) {\n const ch = new checks.$ZodCheck({ check: \"describe\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, description });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function meta(metadata) {\n const ch = new checks.$ZodCheck({ check: \"meta\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, ...metadata });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringbool(Classes, _params) {\n const params = util.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const stringSchema = new _String({ type: \"string\", error: params.error });\n const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n const codec = new _Codec({\n type: \"pipe\",\n in: stringSchema,\n out: booleanSchema,\n transform: ((input, payload) => {\n let data = input;\n if (params.case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: codec,\n continue: false,\n });\n return {};\n }\n }),\n reverseTransform: ((input, _payload) => {\n if (input === true) {\n return truthyArray[0] || \"true\";\n }\n else {\n return falsyArray[0] || \"false\";\n }\n }),\n error: params.error,\n });\n return codec;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = util.normalizeParams(_params);\n const def = {\n ...util.normalizeParams(_params),\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n ...params,\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\n","import { globalRegistry } from \"./registries.js\";\n// function initializeContext<T extends schemas.$ZodType>(inputs: JSONSchemaGeneratorParams<T>): ToJSONSchemaContext<T> {\n// return {\n// processor: inputs.processor,\n// metadataRegistry: inputs.metadata ?? globalRegistry,\n// target: inputs.target ?? \"draft-2020-12\",\n// unrepresentable: inputs.unrepresentable ?? \"throw\",\n// };\n// }\nexport function initializeContext(params) {\n // Normalize target: convert old non-hyphenated versions to hyphenated versions\n let target = params?.target ?? \"draft-2020-12\";\n if (target === \"draft-4\")\n target = \"draft-04\";\n if (target === \"draft-7\")\n target = \"draft-07\";\n return {\n processors: params.processors ?? {},\n metadataRegistry: params?.metadata ?? globalRegistry,\n target,\n unrepresentable: params?.unrepresentable ?? \"throw\",\n override: params?.override ?? (() => { }),\n io: params?.io ?? \"output\",\n counter: 0,\n seen: new Map(),\n cycles: params?.cycles ?? \"ref\",\n reused: params?.reused ?? \"inline\",\n external: params?.external ?? undefined,\n };\n}\nexport function process(schema, ctx, _params = { path: [], schemaPath: [] }) {\n var _a;\n const def = schema._zod.def;\n // check for schema in seens\n const seen = ctx.seen.get(schema);\n if (seen) {\n seen.count++;\n // check if cycle\n const isCycle = _params.schemaPath.includes(schema);\n if (isCycle) {\n seen.cycle = _params.path;\n }\n return seen.schema;\n }\n // initialize\n const result = { schema: {}, count: 1, cycle: undefined, path: _params.path };\n ctx.seen.set(schema, result);\n // custom method overrides default behavior\n const overrideSchema = schema._zod.toJSONSchema?.();\n if (overrideSchema) {\n result.schema = overrideSchema;\n }\n else {\n const params = {\n ..._params,\n schemaPath: [..._params.schemaPath, schema],\n path: _params.path,\n };\n if (schema._zod.processJSONSchema) {\n schema._zod.processJSONSchema(ctx, result.schema, params);\n }\n else {\n const _json = result.schema;\n const processor = ctx.processors[def.type];\n if (!processor) {\n throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);\n }\n processor(schema, ctx, _json, params);\n }\n const parent = schema._zod.parent;\n if (parent) {\n // Also set ref if processor didn't (for inheritance)\n if (!result.ref)\n result.ref = parent;\n process(parent, ctx, params);\n ctx.seen.get(parent).isParent = true;\n }\n }\n // metadata\n const meta = ctx.metadataRegistry.get(schema);\n if (meta)\n Object.assign(result.schema, meta);\n if (ctx.io === \"input\" && isTransforming(schema)) {\n // examples/defaults only apply to output type of pipe\n delete result.schema.examples;\n delete result.schema.default;\n }\n // set prefault as default\n if (ctx.io === \"input\" && result.schema._prefault)\n (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n delete result.schema._prefault;\n // pulling fresh from ctx.seen in case it was overwritten\n const _result = ctx.seen.get(schema);\n return _result.schema;\n}\nexport function extractDefs(ctx, schema\n// params: EmitParams\n) {\n // iterate over seen map;\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // Track ids to detect duplicates across different schemas\n const idToSchema = new Map();\n for (const entry of ctx.seen.entries()) {\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n const existing = idToSchema.get(id);\n if (existing && existing !== entry[0]) {\n throw new Error(`Duplicate schema id \"${id}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n }\n idToSchema.set(id, entry[0]);\n }\n }\n // returns a ref to the schema\n // defId will be empty if the ref points to an external schema (or #)\n const makeURI = (entry) => {\n // comparing the seen objects because sometimes\n // multiple schemas map to the same seen object.\n // e.g. lazy\n // external is configured\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (ctx.external) {\n const externalId = ctx.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${ctx.counter++}`;\n // check if schema is in the external registry\n const uriGenerator = ctx.external.uri ?? ((id) => id);\n if (externalId) {\n return { ref: uriGenerator(externalId) };\n }\n // otherwise, add to __shared\n const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`;\n entry[1].defId = id; // set defId so it will be reused if needed\n return { defId: id, ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${id}` };\n }\n if (entry[1] === root) {\n return { ref: \"#\" };\n }\n // self-contained schema\n const uriPrefix = `#`;\n const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n return { defId, ref: defUriPrefix + defId };\n };\n // stored cached version in `def` property\n // remove all properties, set $ref\n const extractToDef = (entry) => {\n // if the schema is already a reference, do not extract it\n if (entry[1].schema.$ref) {\n return;\n }\n const seen = entry[1];\n const { ref, defId } = makeURI(entry);\n seen.def = { ...seen.schema };\n // defId won't be set if the schema is a reference to an external schema\n // or if the schema is the root schema\n if (defId)\n seen.defId = defId;\n // wipe away all properties except $ref\n const schema = seen.schema;\n for (const key in schema) {\n delete schema[key];\n }\n schema.$ref = ref;\n };\n // throw on cycles\n // break cycles\n if (ctx.cycles === \"throw\") {\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.cycle) {\n throw new Error(\"Cycle detected: \" +\n `#/${seen.cycle?.join(\"/\")}/<root>` +\n '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n }\n }\n }\n // extract schemas into $defs\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n // convert root schema to # $ref\n if (schema === entry[0]) {\n extractToDef(entry); // this has special handling for the root schema\n continue;\n }\n // extract schemas that are in the external registry\n if (ctx.external) {\n const ext = ctx.external.registry.get(entry[0])?.id;\n if (schema !== entry[0] && ext) {\n extractToDef(entry);\n continue;\n }\n }\n // extract schemas with `id` meta\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n extractToDef(entry);\n continue;\n }\n // break cycles\n if (seen.cycle) {\n // any\n extractToDef(entry);\n continue;\n }\n // extract reused schemas\n if (seen.count > 1) {\n if (ctx.reused === \"ref\") {\n extractToDef(entry);\n // biome-ignore lint:\n continue;\n }\n }\n }\n}\nexport function finalize(ctx, schema) {\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // flatten refs - inherit properties from parent schemas\n const flattenRef = (zodSchema) => {\n const seen = ctx.seen.get(zodSchema);\n // already processed\n if (seen.ref === null)\n return;\n const schema = seen.def ?? seen.schema;\n const _cached = { ...schema };\n const ref = seen.ref;\n seen.ref = null; // prevent infinite recursion\n if (ref) {\n flattenRef(ref);\n const refSeen = ctx.seen.get(ref);\n const refSchema = refSeen.schema;\n // merge referenced schema into current\n if (refSchema.$ref && (ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\")) {\n // older drafts can't combine $ref with other properties\n schema.allOf = schema.allOf ?? [];\n schema.allOf.push(refSchema);\n }\n else {\n Object.assign(schema, refSchema);\n }\n // restore child's own properties (child wins)\n Object.assign(schema, _cached);\n const isParentRef = zodSchema._zod.parent === ref;\n // For parent chain, child is a refinement - remove parent-only properties\n if (isParentRef) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (!(key in _cached)) {\n delete schema[key];\n }\n }\n }\n // When ref was extracted to $defs, remove properties that match the definition\n if (refSchema.$ref && refSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in refSeen.def && JSON.stringify(schema[key]) === JSON.stringify(refSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n // If parent was extracted (has $ref), propagate $ref to this schema\n // This handles cases like: readonly().meta({id}).describe()\n // where processor sets ref to innerType but parent should be referenced\n const parent = zodSchema._zod.parent;\n if (parent && parent !== ref) {\n // Ensure parent is processed first so its def has inherited properties\n flattenRef(parent);\n const parentSeen = ctx.seen.get(parent);\n if (parentSeen?.schema.$ref) {\n schema.$ref = parentSeen.schema.$ref;\n // De-duplicate with parent's definition\n if (parentSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in parentSeen.def && JSON.stringify(schema[key]) === JSON.stringify(parentSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n }\n // execute overrides\n ctx.override({\n zodSchema: zodSchema,\n jsonSchema: schema,\n path: seen.path ?? [],\n });\n };\n for (const entry of [...ctx.seen.entries()].reverse()) {\n flattenRef(entry[0]);\n }\n const result = {};\n if (ctx.target === \"draft-2020-12\") {\n result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n }\n else if (ctx.target === \"draft-07\") {\n result.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (ctx.target === \"draft-04\") {\n result.$schema = \"http://json-schema.org/draft-04/schema#\";\n }\n else if (ctx.target === \"openapi-3.0\") {\n // OpenAPI 3.0 schema objects should not include a $schema property\n }\n else {\n // Arbitrary string values are allowed but won't have a $schema property set\n }\n if (ctx.external?.uri) {\n const id = ctx.external.registry.get(schema)?.id;\n if (!id)\n throw new Error(\"Schema is missing an `id` property\");\n result.$id = ctx.external.uri(id);\n }\n Object.assign(result, root.def ?? root.schema);\n // build defs object\n const defs = ctx.external?.defs ?? {};\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.def && seen.defId) {\n defs[seen.defId] = seen.def;\n }\n }\n // set definitions in result\n if (ctx.external) {\n }\n else {\n if (Object.keys(defs).length > 0) {\n if (ctx.target === \"draft-2020-12\") {\n result.$defs = defs;\n }\n else {\n result.definitions = defs;\n }\n }\n }\n try {\n // this \"finalizes\" this schema and ensures all cycles are removed\n // each call to finalize() is functionally independent\n // though the seen map is shared\n const finalized = JSON.parse(JSON.stringify(result));\n Object.defineProperty(finalized, \"~standard\", {\n value: {\n ...schema[\"~standard\"],\n jsonSchema: {\n input: createStandardJSONSchemaMethod(schema, \"input\", ctx.processors),\n output: createStandardJSONSchemaMethod(schema, \"output\", ctx.processors),\n },\n },\n enumerable: false,\n writable: false,\n });\n return finalized;\n }\n catch (_err) {\n throw new Error(\"Error converting schema to JSON.\");\n }\n}\nfunction isTransforming(_schema, _ctx) {\n const ctx = _ctx ?? { seen: new Set() };\n if (ctx.seen.has(_schema))\n return false;\n ctx.seen.add(_schema);\n const def = _schema._zod.def;\n if (def.type === \"transform\")\n return true;\n if (def.type === \"array\")\n return isTransforming(def.element, ctx);\n if (def.type === \"set\")\n return isTransforming(def.valueType, ctx);\n if (def.type === \"lazy\")\n return isTransforming(def.getter(), ctx);\n if (def.type === \"promise\" ||\n def.type === \"optional\" ||\n def.type === \"nonoptional\" ||\n def.type === \"nullable\" ||\n def.type === \"readonly\" ||\n def.type === \"default\" ||\n def.type === \"prefault\") {\n return isTransforming(def.innerType, ctx);\n }\n if (def.type === \"intersection\") {\n return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n }\n if (def.type === \"record\" || def.type === \"map\") {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n if (def.type === \"pipe\") {\n return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n }\n if (def.type === \"object\") {\n for (const key in def.shape) {\n if (isTransforming(def.shape[key], ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"union\") {\n for (const option of def.options) {\n if (isTransforming(option, ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"tuple\") {\n for (const item of def.items) {\n if (isTransforming(item, ctx))\n return true;\n }\n if (def.rest && isTransforming(def.rest, ctx))\n return true;\n return false;\n }\n return false;\n}\n/**\n * Creates a toJSONSchema method for a schema instance.\n * This encapsulates the logic of initializing context, processing, extracting defs, and finalizing.\n */\nexport const createToJSONSchemaMethod = (schema, processors = {}) => (params) => {\n const ctx = initializeContext({ ...params, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\nexport const createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => {\n const { libraryOptions, target } = params ?? {};\n const ctx = initializeContext({ ...(libraryOptions ?? {}), target, io, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\n","import { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\nimport { getEnumValues } from \"./util.js\";\nconst formatMap = {\n guid: \"uuid\",\n url: \"uri\",\n datetime: \"date-time\",\n json_string: \"json-string\",\n regex: \"\", // do not set\n};\n// ==================== SIMPLE TYPE PROCESSORS ====================\nexport const stringProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n json.type = \"string\";\n const { minimum, maximum, format, patterns, contentEncoding } = schema._zod\n .bag;\n if (typeof minimum === \"number\")\n json.minLength = minimum;\n if (typeof maximum === \"number\")\n json.maxLength = maximum;\n // custom pattern overrides format\n if (format) {\n json.format = formatMap[format] ?? format;\n if (json.format === \"\")\n delete json.format; // empty format is not valid\n // JSON Schema format: \"time\" requires a full time with offset or Z\n // z.iso.time() does not include timezone information, so format: \"time\" should never be used\n if (format === \"time\") {\n delete json.format;\n }\n }\n if (contentEncoding)\n json.contentEncoding = contentEncoding;\n if (patterns && patterns.size > 0) {\n const regexes = [...patterns];\n if (regexes.length === 1)\n json.pattern = regexes[0].source;\n else if (regexes.length > 1) {\n json.allOf = [\n ...regexes.map((regex) => ({\n ...(ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\"\n ? { type: \"string\" }\n : {}),\n pattern: regex.source,\n })),\n ];\n }\n }\n};\nexport const numberProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag;\n if (typeof format === \"string\" && format.includes(\"int\"))\n json.type = \"integer\";\n else\n json.type = \"number\";\n if (typeof exclusiveMinimum === \"number\") {\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.minimum = exclusiveMinimum;\n json.exclusiveMinimum = true;\n }\n else {\n json.exclusiveMinimum = exclusiveMinimum;\n }\n }\n if (typeof minimum === \"number\") {\n json.minimum = minimum;\n if (typeof exclusiveMinimum === \"number\" && ctx.target !== \"draft-04\") {\n if (exclusiveMinimum >= minimum)\n delete json.minimum;\n else\n delete json.exclusiveMinimum;\n }\n }\n if (typeof exclusiveMaximum === \"number\") {\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.maximum = exclusiveMaximum;\n json.exclusiveMaximum = true;\n }\n else {\n json.exclusiveMaximum = exclusiveMaximum;\n }\n }\n if (typeof maximum === \"number\") {\n json.maximum = maximum;\n if (typeof exclusiveMaximum === \"number\" && ctx.target !== \"draft-04\") {\n if (exclusiveMaximum <= maximum)\n delete json.maximum;\n else\n delete json.exclusiveMaximum;\n }\n }\n if (typeof multipleOf === \"number\")\n json.multipleOf = multipleOf;\n};\nexport const booleanProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const bigintProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt cannot be represented in JSON Schema\");\n }\n};\nexport const symbolProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Symbols cannot be represented in JSON Schema\");\n }\n};\nexport const nullProcessor = (_schema, ctx, json, _params) => {\n if (ctx.target === \"openapi-3.0\") {\n json.type = \"string\";\n json.nullable = true;\n json.enum = [null];\n }\n else {\n json.type = \"null\";\n }\n};\nexport const undefinedProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Undefined cannot be represented in JSON Schema\");\n }\n};\nexport const voidProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Void cannot be represented in JSON Schema\");\n }\n};\nexport const neverProcessor = (_schema, _ctx, json, _params) => {\n json.not = {};\n};\nexport const anyProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const unknownProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const dateProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Date cannot be represented in JSON Schema\");\n }\n};\nexport const enumProcessor = (schema, _ctx, json, _params) => {\n const def = schema._zod.def;\n const values = getEnumValues(def.entries);\n // Number enums can have both string and number values\n if (values.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (values.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n json.enum = values;\n};\nexport const literalProcessor = (schema, ctx, json, _params) => {\n const def = schema._zod.def;\n const vals = [];\n for (const val of def.values) {\n if (val === undefined) {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n }\n else {\n // do not add to vals\n }\n }\n else if (typeof val === \"bigint\") {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n }\n else {\n vals.push(Number(val));\n }\n }\n else {\n vals.push(val);\n }\n }\n if (vals.length === 0) {\n // do nothing (an undefined literal was stripped)\n }\n else if (vals.length === 1) {\n const val = vals[0];\n json.type = val === null ? \"null\" : typeof val;\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.enum = [val];\n }\n else {\n json.const = val;\n }\n }\n else {\n if (vals.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (vals.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n if (vals.every((v) => typeof v === \"boolean\"))\n json.type = \"boolean\";\n if (vals.every((v) => v === null))\n json.type = \"null\";\n json.enum = vals;\n }\n};\nexport const nanProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"NaN cannot be represented in JSON Schema\");\n }\n};\nexport const templateLiteralProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const pattern = schema._zod.pattern;\n if (!pattern)\n throw new Error(\"Pattern not found in template literal\");\n _json.type = \"string\";\n _json.pattern = pattern.source;\n};\nexport const fileProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const file = {\n type: \"string\",\n format: \"binary\",\n contentEncoding: \"binary\",\n };\n const { minimum, maximum, mime } = schema._zod.bag;\n if (minimum !== undefined)\n file.minLength = minimum;\n if (maximum !== undefined)\n file.maxLength = maximum;\n if (mime) {\n if (mime.length === 1) {\n file.contentMediaType = mime[0];\n Object.assign(_json, file);\n }\n else {\n Object.assign(_json, file); // shared props at root\n _json.anyOf = mime.map((m) => ({ contentMediaType: m })); // only contentMediaType differs\n }\n }\n else {\n Object.assign(_json, file);\n }\n};\nexport const successProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const customProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Custom types cannot be represented in JSON Schema\");\n }\n};\nexport const functionProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Function types cannot be represented in JSON Schema\");\n }\n};\nexport const transformProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Transforms cannot be represented in JSON Schema\");\n }\n};\nexport const mapProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Map cannot be represented in JSON Schema\");\n }\n};\nexport const setProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Set cannot be represented in JSON Schema\");\n }\n};\n// ==================== COMPOSITE TYPE PROCESSORS ====================\nexport const arrayProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n json.type = \"array\";\n json.items = process(def.element, ctx, { ...params, path: [...params.path, \"items\"] });\n};\nexport const objectProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n json.properties = {};\n const shape = def.shape;\n for (const key in shape) {\n json.properties[key] = process(shape[key], ctx, {\n ...params,\n path: [...params.path, \"properties\", key],\n });\n }\n // required keys\n const allKeys = new Set(Object.keys(shape));\n const requiredKeys = new Set([...allKeys].filter((key) => {\n const v = def.shape[key]._zod;\n if (ctx.io === \"input\") {\n return v.optin === undefined;\n }\n else {\n return v.optout === undefined;\n }\n }));\n if (requiredKeys.size > 0) {\n json.required = Array.from(requiredKeys);\n }\n // catchall\n if (def.catchall?._zod.def.type === \"never\") {\n // strict\n json.additionalProperties = false;\n }\n else if (!def.catchall) {\n // regular\n if (ctx.io === \"output\")\n json.additionalProperties = false;\n }\n else if (def.catchall) {\n json.additionalProperties = process(def.catchall, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n};\nexport const unionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n // Exclusive unions (inclusive === false) use oneOf (exactly one match) instead of anyOf (one or more matches)\n // This includes both z.xor() and discriminated unions\n const isExclusive = def.inclusive === false;\n const options = def.options.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, isExclusive ? \"oneOf\" : \"anyOf\", i],\n }));\n if (isExclusive) {\n json.oneOf = options;\n }\n else {\n json.anyOf = options;\n }\n};\nexport const intersectionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const a = process(def.left, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 0],\n });\n const b = process(def.right, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 1],\n });\n const isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n const allOf = [\n ...(isSimpleIntersection(a) ? a.allOf : [a]),\n ...(isSimpleIntersection(b) ? b.allOf : [b]),\n ];\n json.allOf = allOf;\n};\nexport const tupleProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"array\";\n const prefixPath = ctx.target === \"draft-2020-12\" ? \"prefixItems\" : \"items\";\n const restPath = ctx.target === \"draft-2020-12\" ? \"items\" : ctx.target === \"openapi-3.0\" ? \"items\" : \"additionalItems\";\n const prefixItems = def.items.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, prefixPath, i],\n }));\n const rest = def.rest\n ? process(def.rest, ctx, {\n ...params,\n path: [...params.path, restPath, ...(ctx.target === \"openapi-3.0\" ? [def.items.length] : [])],\n })\n : null;\n if (ctx.target === \"draft-2020-12\") {\n json.prefixItems = prefixItems;\n if (rest) {\n json.items = rest;\n }\n }\n else if (ctx.target === \"openapi-3.0\") {\n json.items = {\n anyOf: prefixItems,\n };\n if (rest) {\n json.items.anyOf.push(rest);\n }\n json.minItems = prefixItems.length;\n if (!rest) {\n json.maxItems = prefixItems.length;\n }\n }\n else {\n json.items = prefixItems;\n if (rest) {\n json.additionalItems = rest;\n }\n }\n // length\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n};\nexport const recordProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n // For looseRecord with regex patterns, use patternProperties\n // This correctly represents \"only validate keys matching the pattern\" semantics\n // and composes well with allOf (intersections)\n const keyType = def.keyType;\n const keyBag = keyType._zod.bag;\n const patterns = keyBag?.patterns;\n if (def.mode === \"loose\" && patterns && patterns.size > 0) {\n // Use patternProperties for looseRecord with regex patterns\n const valueSchema = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"patternProperties\", \"*\"],\n });\n json.patternProperties = {};\n for (const pattern of patterns) {\n json.patternProperties[pattern.source] = valueSchema;\n }\n }\n else {\n // Default behavior: use propertyNames + additionalProperties\n if (ctx.target === \"draft-07\" || ctx.target === \"draft-2020-12\") {\n json.propertyNames = process(def.keyType, ctx, {\n ...params,\n path: [...params.path, \"propertyNames\"],\n });\n }\n json.additionalProperties = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n // Add required for keys with discrete values (enum, literal, etc.)\n const keyValues = keyType._zod.values;\n if (keyValues) {\n const validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n if (validKeyValues.length > 0) {\n json.required = validKeyValues;\n }\n }\n};\nexport const nullableProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const inner = process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n if (ctx.target === \"openapi-3.0\") {\n seen.ref = def.innerType;\n json.nullable = true;\n }\n else {\n json.anyOf = [inner, { type: \"null\" }];\n }\n};\nexport const nonoptionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const defaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.default = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const prefaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n if (ctx.io === \"input\")\n json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const catchProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n let catchValue;\n try {\n catchValue = def.catchValue(undefined);\n }\n catch {\n throw new Error(\"Dynamic catch values are not supported in JSON Schema\");\n }\n json.default = catchValue;\n};\nexport const pipeProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n const innerType = ctx.io === \"input\" ? (def.in._zod.def.type === \"transform\" ? def.out : def.in) : def.out;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\nexport const readonlyProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.readOnly = true;\n};\nexport const promiseProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const optionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const lazyProcessor = (schema, ctx, _json, params) => {\n const innerType = schema._zod.innerType;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\n// ==================== ALL PROCESSORS ====================\nexport const allProcessors = {\n string: stringProcessor,\n number: numberProcessor,\n boolean: booleanProcessor,\n bigint: bigintProcessor,\n symbol: symbolProcessor,\n null: nullProcessor,\n undefined: undefinedProcessor,\n void: voidProcessor,\n never: neverProcessor,\n any: anyProcessor,\n unknown: unknownProcessor,\n date: dateProcessor,\n enum: enumProcessor,\n literal: literalProcessor,\n nan: nanProcessor,\n template_literal: templateLiteralProcessor,\n file: fileProcessor,\n success: successProcessor,\n custom: customProcessor,\n function: functionProcessor,\n transform: transformProcessor,\n map: mapProcessor,\n set: setProcessor,\n array: arrayProcessor,\n object: objectProcessor,\n union: unionProcessor,\n intersection: intersectionProcessor,\n tuple: tupleProcessor,\n record: recordProcessor,\n nullable: nullableProcessor,\n nonoptional: nonoptionalProcessor,\n default: defaultProcessor,\n prefault: prefaultProcessor,\n catch: catchProcessor,\n pipe: pipeProcessor,\n readonly: readonlyProcessor,\n promise: promiseProcessor,\n optional: optionalProcessor,\n lazy: lazyProcessor,\n};\nexport function toJSONSchema(input, params) {\n if (\"_idmap\" in input) {\n // Registry case\n const registry = input;\n const ctx = initializeContext({ ...params, processors: allProcessors });\n const defs = {};\n // First pass: process all schemas to build the seen map\n for (const entry of registry._idmap.entries()) {\n const [_, schema] = entry;\n process(schema, ctx);\n }\n const schemas = {};\n const external = {\n registry,\n uri: params?.uri,\n defs,\n };\n // Update the context with external configuration\n ctx.external = external;\n // Second pass: emit each schema\n for (const entry of registry._idmap.entries()) {\n const [key, schema] = entry;\n extractDefs(ctx, schema);\n schemas[key] = finalize(ctx, schema);\n }\n if (Object.keys(defs).length > 0) {\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n schemas.__shared = {\n [defsSegment]: defs,\n };\n }\n return { schemas };\n }\n // Single schema case\n const ctx = initializeContext({ ...params, processors: allProcessors });\n process(input, ctx);\n extractDefs(ctx, input);\n return finalize(ctx, input);\n}\n","import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n core.$ZodISODateTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function datetime(params) {\n return core._isoDateTime(ZodISODateTime, params);\n}\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n core.$ZodISODate.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function date(params) {\n return core._isoDate(ZodISODate, params);\n}\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n core.$ZodISOTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function time(params) {\n return core._isoTime(ZodISOTime, params);\n}\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n core.$ZodISODuration.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function duration(params) {\n return core._isoDuration(ZodISODuration, params);\n}\n","import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\nconst initializer = (inst, issues) => {\n $ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n Object.defineProperties(inst, {\n format: {\n value: (mapper) => core.formatError(inst, mapper),\n // enumerable: false,\n },\n flatten: {\n value: (mapper) => core.flattenError(inst, mapper),\n // enumerable: false,\n },\n addIssue: {\n value: (issue) => {\n inst.issues.push(issue);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n addIssues: {\n value: (issues) => {\n inst.issues.push(...issues);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n isEmpty: {\n get() {\n return inst.issues.length === 0;\n },\n // enumerable: false,\n },\n });\n // Object.defineProperty(inst, \"isEmpty\", {\n // get() {\n // return inst.issues.length === 0;\n // },\n // });\n};\nexport const ZodError = core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = core.$constructor(\"ZodError\", initializer, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n","import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\n// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError);\n","import * as core from \"../core/index.js\";\nimport { util } from \"../core/index.js\";\nimport * as processors from \"../core/json-schema-processors.js\";\nimport { createStandardJSONSchemaMethod, createToJSONSchemaMethod } from \"../core/to-json-schema.js\";\nimport * as checks from \"./checks.js\";\nimport * as iso from \"./iso.js\";\nimport * as parse from \"./parse.js\";\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n core.$ZodType.init(inst, def);\n Object.assign(inst[\"~standard\"], {\n jsonSchema: {\n input: createStandardJSONSchemaMethod(inst, \"input\"),\n output: createStandardJSONSchemaMethod(inst, \"output\"),\n },\n });\n inst.toJSONSchema = createToJSONSchemaMethod(inst, {});\n inst.def = def;\n inst.type = def.type;\n Object.defineProperty(inst, \"_def\", { value: def });\n // base methods\n inst.check = (...checks) => {\n return inst.clone(util.mergeDefs(def, {\n checks: [\n ...(def.checks ?? []),\n ...checks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }), {\n parent: true,\n });\n };\n inst.with = inst.check;\n inst.clone = (def, params) => core.clone(inst, def, params);\n inst.brand = () => inst;\n inst.register = ((reg, meta) => {\n reg.add(inst, meta);\n return inst;\n });\n // parsing\n inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n inst.spa = inst.safeParseAsync;\n // encoding/decoding\n inst.encode = (data, params) => parse.encode(inst, data, params);\n inst.decode = (data, params) => parse.decode(inst, data, params);\n inst.encodeAsync = async (data, params) => parse.encodeAsync(inst, data, params);\n inst.decodeAsync = async (data, params) => parse.decodeAsync(inst, data, params);\n inst.safeEncode = (data, params) => parse.safeEncode(inst, data, params);\n inst.safeDecode = (data, params) => parse.safeDecode(inst, data, params);\n inst.safeEncodeAsync = async (data, params) => parse.safeEncodeAsync(inst, data, params);\n inst.safeDecodeAsync = async (data, params) => parse.safeDecodeAsync(inst, data, params);\n // refinements\n inst.refine = (check, params) => inst.check(refine(check, params));\n inst.superRefine = (refinement) => inst.check(superRefine(refinement));\n inst.overwrite = (fn) => inst.check(checks.overwrite(fn));\n // wrappers\n inst.optional = () => optional(inst);\n inst.exactOptional = () => exactOptional(inst);\n inst.nullable = () => nullable(inst);\n inst.nullish = () => optional(nullable(inst));\n inst.nonoptional = (params) => nonoptional(inst, params);\n inst.array = () => array(inst);\n inst.or = (arg) => union([inst, arg]);\n inst.and = (arg) => intersection(inst, arg);\n inst.transform = (tx) => pipe(inst, transform(tx));\n inst.default = (def) => _default(inst, def);\n inst.prefault = (def) => prefault(inst, def);\n // inst.coalesce = (def, params) => coalesce(inst, def, params);\n inst.catch = (params) => _catch(inst, params);\n inst.pipe = (target) => pipe(inst, target);\n inst.readonly = () => readonly(inst);\n // meta\n inst.describe = (description) => {\n const cl = inst.clone();\n core.globalRegistry.add(cl, { description });\n return cl;\n };\n Object.defineProperty(inst, \"description\", {\n get() {\n return core.globalRegistry.get(inst)?.description;\n },\n configurable: true,\n });\n inst.meta = (...args) => {\n if (args.length === 0) {\n return core.globalRegistry.get(inst);\n }\n const cl = inst.clone();\n core.globalRegistry.add(cl, args[0]);\n return cl;\n };\n // helpers\n inst.isOptional = () => inst.safeParse(undefined).success;\n inst.isNullable = () => inst.safeParse(null).success;\n inst.apply = (fn) => fn(inst);\n return inst;\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.stringProcessor(inst, ctx, json, params);\n const bag = inst._zod.bag;\n inst.format = bag.format ?? null;\n inst.minLength = bag.minimum ?? null;\n inst.maxLength = bag.maximum ?? null;\n // validations\n inst.regex = (...args) => inst.check(checks.regex(...args));\n inst.includes = (...args) => inst.check(checks.includes(...args));\n inst.startsWith = (...args) => inst.check(checks.startsWith(...args));\n inst.endsWith = (...args) => inst.check(checks.endsWith(...args));\n inst.min = (...args) => inst.check(checks.minLength(...args));\n inst.max = (...args) => inst.check(checks.maxLength(...args));\n inst.length = (...args) => inst.check(checks.length(...args));\n inst.nonempty = (...args) => inst.check(checks.minLength(1, ...args));\n inst.lowercase = (params) => inst.check(checks.lowercase(params));\n inst.uppercase = (params) => inst.check(checks.uppercase(params));\n // transforms\n inst.trim = () => inst.check(checks.trim());\n inst.normalize = (...args) => inst.check(checks.normalize(...args));\n inst.toLowerCase = () => inst.check(checks.toLowerCase());\n inst.toUpperCase = () => inst.check(checks.toUpperCase());\n inst.slugify = () => inst.check(checks.slugify());\n});\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n _ZodString.init(inst, def);\n inst.email = (params) => inst.check(core._email(ZodEmail, params));\n inst.url = (params) => inst.check(core._url(ZodURL, params));\n inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params));\n inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params));\n inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params));\n inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params));\n inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params));\n inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params));\n inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params));\n inst.ulid = (params) => inst.check(core._ulid(ZodULID, params));\n inst.base64 = (params) => inst.check(core._base64(ZodBase64, params));\n inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params));\n inst.xid = (params) => inst.check(core._xid(ZodXID, params));\n inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params));\n inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params));\n inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params));\n inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params));\n inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params));\n inst.e164 = (params) => inst.check(core._e164(ZodE164, params));\n // iso\n inst.datetime = (params) => inst.check(iso.datetime(params));\n inst.date = (params) => inst.check(iso.date(params));\n inst.time = (params) => inst.check(iso.time(params));\n inst.duration = (params) => inst.check(iso.duration(params));\n});\nexport function string(params) {\n return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n core.$ZodStringFormat.init(inst, def);\n _ZodString.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmail.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodGUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodUUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodURL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n return core._url(ZodURL, params);\n}\nexport function httpUrl(params) {\n return core._url(ZodURL, {\n protocol: /^https?$/,\n hostname: core.regexes.domain,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmoji.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodNanoID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n return core._nanoid(ZodNanoID, params);\n}\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid(params) {\n return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID2.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodULID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodXID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodKSUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n return core._ipv4(ZodIPv4, params);\n}\nexport const ZodMAC = /*@__PURE__*/ core.$constructor(\"ZodMAC\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodMAC.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function mac(params) {\n return core._mac(ZodMAC, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n core.$ZodCIDRv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n core.$ZodCIDRv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64URL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodE164.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n return core._e164(ZodE164, params);\n}\nexport const ZodJWT = /*@__PURE__*/ core.$constructor(\"ZodJWT\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodJWT.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function jwt(params) {\n return core._jwt(ZodJWT, params);\n}\nexport const ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCustomStringFormat.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nexport function hostname(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hostname\", core.regexes.hostname, _params);\n}\nexport function hex(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hex\", core.regexes.hex, _params);\n}\nexport function hash(alg, params) {\n const enc = params?.enc ?? \"hex\";\n const format = `${alg}_${enc}`;\n const regex = core.regexes[format];\n if (!regex)\n throw new Error(`Unrecognized hash format: ${format}`);\n return core._stringFormat(ZodCustomStringFormat, format, regex, params);\n}\nexport const ZodNumber = /*@__PURE__*/ core.$constructor(\"ZodNumber\", (inst, def) => {\n core.$ZodNumber.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.numberProcessor(inst, ctx, json, params);\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.int = (params) => inst.check(int(params));\n inst.safe = (params) => inst.check(int(params));\n inst.positive = (params) => inst.check(checks.gt(0, params));\n inst.nonnegative = (params) => inst.check(checks.gte(0, params));\n inst.negative = (params) => inst.check(checks.lt(0, params));\n inst.nonpositive = (params) => inst.check(checks.lte(0, params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n inst.step = (value, params) => inst.check(checks.multipleOf(value, params));\n // inst.finite = (params) => inst.check(core.finite(params));\n inst.finite = () => inst;\n const bag = inst._zod.bag;\n inst.minValue =\n Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n inst.maxValue =\n Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n inst.isFinite = true;\n inst.format = bag.format ?? null;\n});\nexport function number(params) {\n return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n core.$ZodNumberFormat.init(inst, def);\n ZodNumber.init(inst, def);\n});\nexport function int(params) {\n return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n core.$ZodBoolean.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.booleanProcessor(inst, ctx, json, params);\n});\nexport function boolean(params) {\n return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n core.$ZodBigInt.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.bigintProcessor(inst, ctx, json, params);\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));\n inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));\n inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));\n inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n const bag = inst._zod.bag;\n inst.minValue = bag.minimum ?? null;\n inst.maxValue = bag.maximum ?? null;\n inst.format = bag.format ?? null;\n});\nexport function bigint(params) {\n return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n core.$ZodBigIntFormat.init(inst, def);\n ZodBigInt.init(inst, def);\n});\n// int64\nexport function int64(params) {\n return core._int64(ZodBigIntFormat, params);\n}\n// uint64\nexport function uint64(params) {\n return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n core.$ZodSymbol.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.symbolProcessor(inst, ctx, json, params);\n});\nexport function symbol(params) {\n return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n core.$ZodUndefined.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.undefinedProcessor(inst, ctx, json, params);\n});\nfunction _undefined(params) {\n return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n core.$ZodNull.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullProcessor(inst, ctx, json, params);\n});\nfunction _null(params) {\n return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n core.$ZodAny.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.anyProcessor(inst, ctx, json, params);\n});\nexport function any() {\n return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n core.$ZodUnknown.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unknownProcessor(inst, ctx, json, params);\n});\nexport function unknown() {\n return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n core.$ZodNever.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.neverProcessor(inst, ctx, json, params);\n});\nexport function never(params) {\n return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n core.$ZodVoid.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.voidProcessor(inst, ctx, json, params);\n});\nfunction _void(params) {\n return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n core.$ZodDate.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.dateProcessor(inst, ctx, json, params);\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n const c = inst._zod.bag;\n inst.minDate = c.minimum ? new Date(c.minimum) : null;\n inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nexport function date(params) {\n return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n core.$ZodArray.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.arrayProcessor(inst, ctx, json, params);\n inst.element = def.element;\n inst.min = (minLength, params) => inst.check(checks.minLength(minLength, params));\n inst.nonempty = (params) => inst.check(checks.minLength(1, params));\n inst.max = (maxLength, params) => inst.check(checks.maxLength(maxLength, params));\n inst.length = (len, params) => inst.check(checks.length(len, params));\n inst.unwrap = () => inst.element;\n});\nexport function array(element, params) {\n return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n const shape = schema._zod.def.shape;\n return _enum(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n core.$ZodObjectJIT.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.objectProcessor(inst, ctx, json, params);\n util.defineLazy(inst, \"shape\", () => {\n return def.shape;\n });\n inst.keyof = () => _enum(Object.keys(inst._zod.def.shape));\n inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall: catchall });\n inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.loose = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.strict = () => inst.clone({ ...inst._zod.def, catchall: never() });\n inst.strip = () => inst.clone({ ...inst._zod.def, catchall: undefined });\n inst.extend = (incoming) => {\n return util.extend(inst, incoming);\n };\n inst.safeExtend = (incoming) => {\n return util.safeExtend(inst, incoming);\n };\n inst.merge = (other) => util.merge(inst, other);\n inst.pick = (mask) => util.pick(inst, mask);\n inst.omit = (mask) => util.omit(inst, mask);\n inst.partial = (...args) => util.partial(ZodOptional, inst, args[0]);\n inst.required = (...args) => util.required(ZodNonOptional, inst, args[0]);\n});\nexport function object(shape, params) {\n const def = {\n type: \"object\",\n shape: shape ?? {},\n ...util.normalizeParams(params),\n };\n return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: never(),\n ...util.normalizeParams(params),\n });\n}\n// looseObject\nexport function looseObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: unknown(),\n ...util.normalizeParams(params),\n });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n core.$ZodUnion.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\nexport function union(options, params) {\n return new ZodUnion({\n type: \"union\",\n options: options,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodXor = /*@__PURE__*/ core.$constructor(\"ZodXor\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodXor.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\n/** Creates an exclusive union (XOR) where exactly one option must match.\n * Unlike regular unions that succeed when any option matches, xor fails if\n * zero or more than one option matches the input. */\nexport function xor(options, params) {\n return new ZodXor({\n type: \"union\",\n options: options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n // const [options, params] = args;\n return new ZodDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n core.$ZodIntersection.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.intersectionProcessor(inst, ctx, json, params);\n});\nexport function intersection(left, right) {\n return new ZodIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n core.$ZodTuple.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.tupleProcessor(inst, ctx, json, params);\n inst.rest = (rest) => inst.clone({\n ...inst._zod.def,\n rest: rest,\n });\n});\nexport function tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof core.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodTuple({\n type: \"tuple\",\n items: items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n core.$ZodRecord.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.recordProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\n// type alksjf = core.output<core.$ZodRecordKey>;\nexport function partialRecord(keyType, valueType, params) {\n const k = core.clone(keyType);\n k._zod.values = undefined;\n return new ZodRecord({\n type: \"record\",\n keyType: k,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function looseRecord(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n mode: \"loose\",\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n core.$ZodMap.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.mapProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function map(keyType, valueType, params) {\n return new ZodMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n core.$ZodSet.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.setProcessor(inst, ctx, json, params);\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n return new ZodSet({\n type: \"set\",\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n core.$ZodEnum.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.enumProcessor(inst, ctx, json, params);\n inst.enum = def.entries;\n inst.options = Object.values(def.entries);\n const keys = new Set(Object.keys(def.entries));\n inst.extract = (values, params) => {\n const newEntries = {};\n for (const value of values) {\n if (keys.has(value)) {\n newEntries[value] = def.entries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n inst.exclude = (values, params) => {\n const newEntries = { ...def.entries };\n for (const value of values) {\n if (keys.has(value)) {\n delete newEntries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n core.$ZodLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.literalProcessor(inst, ctx, json, params);\n inst.values = new Set(def.values);\n Object.defineProperty(inst, \"value\", {\n get() {\n if (def.values.length > 1) {\n throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n }\n return def.values[0];\n },\n });\n});\nexport function literal(value, params) {\n return new ZodLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n core.$ZodFile.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.fileProcessor(inst, ctx, json, params);\n inst.min = (size, params) => inst.check(core._minSize(size, params));\n inst.max = (size, params) => inst.check(core._maxSize(size, params));\n inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n core.$ZodTransform.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.transformProcessor(inst, ctx, json, params);\n inst._zod.parse = (payload, _ctx) => {\n if (_ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = inst);\n // _issue.continue ??= true;\n payload.issues.push(util.issue(_issue));\n }\n };\n const output = def.transform(payload.value, payload);\n if (output instanceof Promise) {\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n payload.value = output;\n return payload;\n };\n});\nexport function transform(fn) {\n return new ZodTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n core.$ZodOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n return new ZodOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodExactOptional = /*@__PURE__*/ core.$constructor(\"ZodExactOptional\", (inst, def) => {\n core.$ZodExactOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function exactOptional(innerType) {\n return new ZodExactOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n core.$ZodNullable.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullableProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n return new ZodNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\nexport function nullish(innerType) {\n return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n core.$ZodDefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.defaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n return new ZodDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n core.$ZodPrefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.prefaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n return new ZodPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n core.$ZodNonOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nonoptionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n return new ZodNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n core.$ZodSuccess.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.successProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n return new ZodSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n core.$ZodCatch.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.catchProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n return new ZodCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n core.$ZodNaN.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nanProcessor(inst, ctx, json, params);\n});\nexport function nan(params) {\n return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n core.$ZodPipe.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.pipeProcessor(inst, ctx, json, params);\n inst.in = def.in;\n inst.out = def.out;\n});\nexport function pipe(in_, out) {\n return new ZodPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n // ...util.normalizeParams(params),\n });\n}\nexport const ZodCodec = /*@__PURE__*/ core.$constructor(\"ZodCodec\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodCodec.init(inst, def);\n});\nexport function codec(in_, out, params) {\n return new ZodCodec({\n type: \"pipe\",\n in: in_,\n out: out,\n transform: params.decode,\n reverseTransform: params.encode,\n });\n}\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.readonlyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function readonly(innerType) {\n return new ZodReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n core.$ZodTemplateLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.templateLiteralProcessor(inst, ctx, json, params);\n});\nexport function templateLiteral(parts, params) {\n return new ZodTemplateLiteral({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n core.$ZodLazy.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.lazyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n return new ZodLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n core.$ZodPromise.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.promiseProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n return new ZodPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nexport const ZodFunction = /*@__PURE__*/ core.$constructor(\"ZodFunction\", (inst, def) => {\n core.$ZodFunction.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.functionProcessor(inst, ctx, json, params);\n});\nexport function _function(params) {\n return new ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n output: params?.output ?? unknown(),\n });\n}\nexport { _function as function };\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n core.$ZodCustom.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.customProcessor(inst, ctx, json, params);\n});\n// custom checks\nexport function check(fn) {\n const ch = new core.$ZodCheck({\n check: \"custom\",\n // ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nexport function custom(fn, _params) {\n return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn) {\n return core._superRefine(fn);\n}\n// Re-export describe and meta from core\nexport const describe = core.describe;\nexport const meta = core.meta;\nfunction _instanceof(cls, params = {}) {\n const inst = new ZodCustom({\n type: \"custom\",\n check: \"custom\",\n fn: (data) => data instanceof cls,\n abort: true,\n ...util.normalizeParams(params),\n });\n inst._zod.bag.Class = cls;\n // Override check to emit invalid_type instead of custom\n inst._zod.check = (payload) => {\n if (!(payload.value instanceof cls)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: cls.name,\n input: payload.value,\n inst,\n path: [...(inst._zod.def.path ?? [])],\n });\n }\n };\n return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n Codec: ZodCodec,\n Boolean: ZodBoolean,\n String: ZodString,\n}, ...args);\nexport function json(params) {\n const jsonSchema = lazy(() => {\n return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n });\n return jsonSchema;\n}\n// preprocess\n// /** @deprecated Use `z.pipe()` and `z.transform()` instead. */\nexport function preprocess(fn, schema) {\n return pipe(transform(fn), schema);\n}\n","/**\n * @import {Node, Parent} from 'unist'\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record<string, unknown> | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array<Props | TestFunction | string> | ReadonlyArray<Props | TestFunction | string> | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends ReadonlyArray<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * (<Condition extends Array<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * (<Condition extends string>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test)\n ? anyFactory(test)\n : // Cast because `ReadonlyArray` goes into the above but `isArray`\n // narrows to `Array`.\n propertiesFactory(/** @type {Props} */ (test))\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array<Props | TestFunction | string>} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array<Check>} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propertiesFactory(check) {\n const checkAsRecord = /** @type {Record<string, unknown>} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record<string, unknown>} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @param {string} d\n * @returns {string}\n */\nexport function color(d) {\n return '\\u001B[33m' + d + '\\u001B[39m'\n}\n","/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends ReadonlyArray<infer T>\n * ? MatchesOne<Value, T>\n * : Check extends Array<infer T>\n * ? MatchesOne<Value, T>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array<infer Children>}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent<Node, Child>\n * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor<InclusiveDescendant<Tree>, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array<VisitedParents>} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly<ActionTuple>} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array<UnistParent>} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record<string, unknown>} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly<ActionTuple>} */\n let result = empty\n /** @type {Readonly<ActionTuple>} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array<UnistParent>} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly<ActionTuple>}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n * @import {VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends ReadonlyArray<any>\n * ? MatchesOne<Value, Check[number]>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array<infer Children>}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent<Node, Child>\n * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Visited, Parent<Ancestor, Visited>>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches<Descendant, Check>,\n * Extract<Descendant, UnistParent>\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant<Tree>,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array<UnistParent>} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n","/**\n * Rehype plugin: transform relative asset references to /assets/ URLs.\n *\n * Converts references like `./image.png` or `./assets/image.png`\n * into site-relative URLs like `/assets/image.png`.\n *\n * Special handling:\n * - `.inline.svg` files: read from disk and embed as inline SVG (supports currentColor)\n * - `.invert.` files: add `invert-on-dark` class for CSS dark-mode inversion\n *\n * Handles <img src=\"...\">, <source srcset=\"...\">, and <a href=\"...\"> for asset files.\n */\n\nimport { existsSync, readFileSync } from 'fs'\nimport type { Element, Root } from 'hast'\nimport { basename, join } from 'path'\nimport { SKIP, visit } from 'unist-util-visit'\n\nconst ASSET_EXTS = /\\.(svg|png|jpg|jpeg|gif|webp|avif|ico)$/i\n\ninterface AssetTransformOptions {\n contentDir?: string\n}\n\nexport function rehypeAssetTransform(options: AssetTransformOptions = {}) {\n return (tree: Root) => {\n visit(tree, 'element', (node: Element, index, parent) => {\n // Transform img src\n if (node.tagName === 'img') {\n const src = node.properties?.src\n if (typeof src !== 'string' || !src.startsWith('./') || !ASSET_EXTS.test(src)) return\n\n // Inline SVG: embed content directly in HTML\n if (src.endsWith('.inline.svg') && options.contentDir) {\n const filePath = join(options.contentDir, src.replace('./', ''))\n if (existsSync(filePath)) {\n let svgContent = readFileSync(filePath, 'utf-8')\n // Strip XML declaration and DOCTYPE\n svgContent = svgContent.replace(/<\\?xml[^?]*\\?>\\s*/g, '')\n svgContent = svgContent.replace(/<!DOCTYPE[^>]*>\\s*/g, '')\n // Add accessibility and styling attributes to root <svg>\n const alt = node.properties?.alt || ''\n svgContent = svgContent.replace(\n '<svg',\n `<svg role=\"img\" aria-label=\"${String(alt).replace(\n /\"/g,\n '&quot;',\n )}\" class=\"inline-svg\"`,\n )\n if (parent && index !== undefined) {\n ;(parent.children as any[])[index] = { type: 'raw', value: svgContent }\n return SKIP\n }\n }\n }\n\n node.properties = node.properties || {}\n node.properties.src = `/assets/${basename(src)}`\n\n // Add invert class for .invert. images\n if (basename(src).includes('.invert.')) {\n const existing = node.properties.className\n node.properties.className = existing\n ? ([...(Array.isArray(existing) ? existing : [existing]), 'invert-on-dark'] as (\n | string\n | number\n )[])\n : ['invert-on-dark']\n }\n }\n\n // Transform source srcset (for <picture> elements)\n if (node.tagName === 'source') {\n const srcset = node.properties?.srcset\n if (typeof srcset === 'string' && srcset.startsWith('./') && ASSET_EXTS.test(srcset)) {\n node.properties = node.properties || {}\n node.properties.srcset = `/assets/${basename(srcset)}`\n }\n }\n\n // Transform a href pointing to asset files\n if (node.tagName === 'a') {\n const href = node.properties?.href\n if (typeof href === 'string' && href.startsWith('./') && ASSET_EXTS.test(href)) {\n node.properties = node.properties || {}\n node.properties.href = `/assets/${basename(href)}`\n }\n }\n })\n }\n}\n","import { processMarkdown, type MarkdownConfig } from '@pagesmith/core/markdown'\nimport type { Heading } from '@pagesmith/core/schemas'\nimport { existsSync, readFileSync, readdirSync } from 'fs'\nimport { dirname, extname, join, relative } from 'path'\nimport { z } from 'zod'\nimport { readJson5File, toTitleCase, type ResolvedDocsConfig } from './config.js'\nimport { rehypeAssetTransform } from './markdown/plugins/rehype-asset-transform'\n\nexport type NavItem = {\n label: string\n path: string\n}\n\nexport type SidebarItem = {\n title: string\n path: string\n children?: SidebarItem[]\n}\n\nexport type SidebarSection = {\n title: string\n slug: string\n collapsed?: boolean\n items: SidebarItem[]\n}\n\nexport type PrevNextLink = {\n title: string\n path: string\n}\n\nexport type DocsRootMeta = {\n displayName?: string\n description?: string\n headerLinks?: Array<{ label: string; path: string }>\n footerLinks?: Array<{ label: string; path: string }>\n}\n\nexport type DocsSectionMeta = {\n displayName?: string\n description?: string\n layout?: string\n itemLayout?: string\n orderBy?: 'manual' | 'publishedDate'\n /** Start the sidebar section collapsed (only effective when sidebar.collapsible is true) */\n collapsed?: boolean\n items?: string[]\n series?: Array<{\n slug: string\n displayName: string\n shortName?: string\n description?: string\n articles: string[]\n }>\n}\n\nexport const DocsFrontmatterSchema = z\n .object({\n title: z.string().optional(),\n description: z.string().optional(),\n navLabel: z.string().optional(),\n sidebarLabel: z.string().optional(),\n order: z.number().optional(),\n draft: z.boolean().optional(),\n hero: z.record(z.string(), z.any()).optional(),\n features: z.array(z.record(z.string(), z.any())).optional(),\n })\n .passthrough()\n\nexport type DocsFrontmatter = z.infer<typeof DocsFrontmatterSchema>\n\nexport type DocsPage = {\n title: string\n routePath: string\n contentSlug: string\n section?: string\n frontmatter: DocsFrontmatter\n html: string\n headings: Heading[]\n sourcePath: string\n isHome: boolean\n layoutName: string\n}\n\nexport type SiteModel = {\n navItems: NavItem[]\n sidebarBySection: Map<string, SidebarSection[]>\n pageByPath: Map<string, DocsPage>\n rootMeta?: DocsRootMeta\n sectionMetas: Map<string, DocsSectionMeta>\n}\n\nexport const CONTENT_ASSET_EXTS = new Set([\n '.svg',\n '.png',\n '.jpg',\n '.jpeg',\n '.gif',\n '.webp',\n '.avif',\n '.ico',\n])\n\nexport function toContentSlug(filePath: string, contentDir: string): string {\n const ext = extname(filePath)\n let slug = relative(contentDir, filePath).replace(/\\\\/g, '/')\n\n if (ext) {\n slug = slug.slice(0, -ext.length)\n }\n\n if (slug === 'README' || slug === 'index') return '/'\n if (slug.endsWith('/README')) slug = slug.slice(0, -7)\n if (slug.endsWith('/index')) slug = slug.slice(0, -6)\n\n return slug\n}\n\nexport function loadRootMeta(contentDir: string): DocsRootMeta | undefined {\n return readJson5File<DocsRootMeta>(join(contentDir, 'meta.json5'))\n}\n\nexport function loadSectionMetas(contentDir: string): Map<string, DocsSectionMeta> {\n const metas = new Map<string, DocsSectionMeta>()\n if (!existsSync(contentDir)) return metas\n for (const entry of readdirSync(contentDir, { withFileTypes: true })) {\n if (!entry.isDirectory() || entry.name.startsWith('.')) continue\n const meta = readJson5File<DocsSectionMeta>(join(contentDir, entry.name, 'meta.json5'))\n if (meta) metas.set(entry.name, meta)\n }\n return metas\n}\n\nfunction collectMarkdownFiles(contentDir: string): string[] {\n const files: string[] = []\n\n function walk(currentDir: string): void {\n for (const entry of readdirSync(currentDir, { withFileTypes: true })) {\n if (entry.name.startsWith('.')) continue\n const fullPath = join(currentDir, entry.name)\n\n if (entry.isDirectory()) {\n walk(fullPath)\n continue\n }\n\n if (entry.name.endsWith('.md')) {\n files.push(fullPath)\n }\n }\n }\n\n if (existsSync(contentDir)) {\n walk(contentDir)\n }\n\n return files.sort()\n}\n\nfunction createRelativeLinkTransform(filePath: string, contentDir: string, basePath: string) {\n return () => (tree: any) => {\n const visit = (node: any): void => {\n if (node?.type === 'element' && node.tagName === 'a') {\n const href = node.properties?.href\n if (typeof href === 'string' && href.includes('.md') && !href.startsWith('http')) {\n // Transform .md references to route paths\n const [rawPath, hash = ''] = href.split('#')\n const targetPath = join(dirname(filePath), rawPath)\n const slug = toContentSlug(targetPath, contentDir)\n const routePath = slug === '/' ? '/' : `/${slug}/`\n const fullPath = `${basePath}${routePath}`\n node.properties = node.properties || {}\n node.properties.href = hash ? `${fullPath}#${hash}` : fullPath\n } else if (\n basePath &&\n typeof href === 'string' &&\n href.startsWith('/') &&\n !href.startsWith('//') &&\n !href.startsWith(basePath)\n ) {\n // Prefix absolute internal links with basePath\n node.properties = node.properties || {}\n node.properties.href = `${basePath}${href}`\n }\n }\n\n if (Array.isArray(node?.children)) {\n for (const child of node.children) {\n visit(child)\n }\n }\n }\n\n visit(tree)\n }\n}\n\nexport async function loadDocsPages(\n config: ResolvedDocsConfig,\n sectionMetas?: Map<string, DocsSectionMeta>,\n): Promise<DocsPage[]> {\n const pages: DocsPage[] = []\n const homeConfig = config.homeConfigFile\n ? readJson5File<Record<string, unknown>>(config.homeConfigFile)\n : undefined\n\n for (const filePath of collectMarkdownFiles(config.contentDir)) {\n const raw = readFileSync(filePath, 'utf-8')\n const markdownConfig: MarkdownConfig = {\n ...(config.markdown ?? {}),\n rehypePlugins: [\n ...(config.markdown?.rehypePlugins ?? []),\n [rehypeAssetTransform, { contentDir: dirname(filePath) }] as const,\n createRelativeLinkTransform(filePath, config.contentDir, config.basePath),\n ],\n }\n\n const result = await processMarkdown(raw, markdownConfig)\n const parsedFrontmatter = DocsFrontmatterSchema.parse(result.frontmatter ?? {})\n const contentSlug = toContentSlug(filePath, config.contentDir)\n const isHome = contentSlug === '/'\n\n const frontmatter =\n isHome && homeConfig ? { ...homeConfig, ...parsedFrontmatter } : parsedFrontmatter\n if (frontmatter.draft) continue\n\n const routePath = isHome ? '/' : `/${contentSlug}`\n const section = isHome ? undefined : contentSlug.split('/')[0]\n const title =\n frontmatter.title ??\n (isHome ? config.title : toTitleCase(contentSlug.split('/').at(-1) ?? section ?? 'Home'))\n\n // Resolve layout name from section meta\n const sectionMeta = section ? sectionMetas?.get(section) : undefined\n const isLanding = section != null && contentSlug === section\n let layoutName: string\n if (isHome) {\n layoutName = 'home'\n } else if (isLanding && sectionMeta?.layout) {\n layoutName = sectionMeta.layout\n } else if (!isLanding && sectionMeta?.itemLayout) {\n layoutName = sectionMeta.itemLayout\n } else {\n layoutName = 'page'\n }\n\n pages.push({\n title,\n routePath,\n contentSlug,\n section,\n frontmatter,\n html: result.html,\n headings: result.headings,\n sourcePath: filePath,\n isHome,\n layoutName,\n })\n }\n\n return pages.sort((left, right) => left.routePath.localeCompare(right.routePath))\n}\n\nexport function collectContentAssets(contentDir: string): Map<string, string> {\n const assets = new Map<string, string>()\n\n function walk(currentDir: string): void {\n if (!existsSync(currentDir)) return\n\n for (const entry of readdirSync(currentDir, { withFileTypes: true })) {\n if (entry.name.startsWith('.')) continue\n\n const fullPath = join(currentDir, entry.name)\n if (entry.isDirectory()) {\n walk(fullPath)\n continue\n }\n\n if (!CONTENT_ASSET_EXTS.has(extname(entry.name).toLowerCase())) continue\n\n if (assets.has(entry.name) && assets.get(entry.name) !== fullPath) {\n console.warn(\n `pagesmith:docs duplicate companion asset basename \"${entry.name}\" detected; using ${fullPath}`,\n )\n }\n\n assets.set(entry.name, fullPath)\n }\n }\n\n walk(contentDir)\n return assets\n}\n","import { basename } from 'path'\nimport { toTitleCase, type ResolvedDocsConfig } from './config.js'\nimport type {\n DocsPage,\n DocsSectionMeta,\n DocsRootMeta,\n NavItem,\n PrevNextLink,\n SidebarItem,\n SidebarSection,\n SiteModel,\n} from './content.js'\n\nfunction getOrder(page: DocsPage): number {\n return typeof page.frontmatter.order === 'number'\n ? page.frontmatter.order\n : Number.MAX_SAFE_INTEGER\n}\n\nfunction sortPages(pages: DocsPage[]): DocsPage[] {\n return [...pages].sort((left, right) => {\n const orderDelta = getOrder(left) - getOrder(right)\n if (orderDelta !== 0) return orderDelta\n return left.routePath.localeCompare(right.routePath)\n })\n}\n\nfunction sortSectionPages(pages: DocsPage[], meta?: DocsSectionMeta): DocsPage[] {\n if (!meta?.orderBy) return sortPages(pages)\n\n if (meta.orderBy === 'publishedDate') {\n const getPublishedTime = (value: unknown): number => {\n if (!value) return 0\n if (value instanceof Date) return value.getTime()\n if (typeof value === 'string' || typeof value === 'number') {\n return new Date(value).getTime()\n }\n return 0\n }\n\n return [...pages].sort((a, b) => {\n const dateA = getPublishedTime(a.frontmatter.publishedDate)\n const dateB = getPublishedTime(b.frontmatter.publishedDate)\n return dateB - dateA\n })\n }\n\n if (meta.orderBy === 'manual' && meta.items) {\n const order = new Map(meta.items.map((slug, i) => [slug, i]))\n return [...pages].sort((a, b) => {\n const slugA = a.contentSlug.split('/').pop() ?? ''\n const slugB = b.contentSlug.split('/').pop() ?? ''\n const posA = order.get(slugA) ?? Number.MAX_SAFE_INTEGER\n const posB = order.get(slugB) ?? Number.MAX_SAFE_INTEGER\n return posA - posB\n })\n }\n\n return sortPages(pages)\n}\n\nfunction buildSidebarWithSeries(\n sectionSlug: string,\n sectionPages: DocsPage[],\n meta: DocsSectionMeta,\n basePath: string,\n): SidebarSection[] {\n const sections: SidebarSection[] = []\n const pageBySlug = new Map(sectionPages.map((p) => [p.contentSlug.split('/').pop(), p]))\n const landing = sectionPages.find((p) => p.contentSlug === sectionSlug)\n\n for (const series of meta.series!) {\n const items: SidebarItem[] = series.articles\n .map((slug) => pageBySlug.get(slug))\n .filter((p): p is DocsPage => p != null)\n .map((page) => ({\n title: page.frontmatter.sidebarLabel ?? page.title,\n path: `${basePath}${page.routePath}`,\n }))\n\n if (items.length > 0) {\n sections.push({ title: series.displayName, slug: series.slug, items })\n }\n }\n\n // Prepend landing page to first section if exists\n if (landing && sections.length > 0) {\n sections[0].items.unshift({\n title: landing.frontmatter.sidebarLabel ?? landing.title,\n path: `${basePath}${landing.routePath}`,\n })\n }\n\n return sections\n}\n\nfunction buildSidebarItems(\n sectionSlug: string,\n sectionPages: DocsPage[],\n basePath: string,\n sectionMeta?: DocsSectionMeta,\n): SidebarItem[] {\n type Node = {\n key: string\n title: string\n path: string\n order: number\n children: Map<string, Node>\n }\n\n const roots = new Map<string, Node>()\n const landingPage = sectionPages.find((page) => page.contentSlug === sectionSlug)\n\n for (const page of sortSectionPages(\n sectionPages.filter((entry) => entry.contentSlug !== sectionSlug),\n sectionMeta,\n )) {\n const remainder = page.contentSlug.slice(sectionSlug.length + 1)\n if (!remainder) continue\n\n const segments = remainder.split('/')\n let level = roots\n let accumulated = sectionSlug\n\n for (const [index, segment] of segments.entries()) {\n accumulated = `${accumulated}/${segment}`\n let node = level.get(segment)\n if (!node) {\n node = {\n key: accumulated,\n title: toTitleCase(segment),\n path: `${basePath}${page.routePath}`,\n order: getOrder(page),\n children: new Map<string, Node>(),\n }\n level.set(segment, node)\n }\n\n if (index === segments.length - 1) {\n node.title = page.frontmatter.sidebarLabel ?? page.title\n node.path = `${basePath}${page.routePath}`\n node.order = getOrder(page)\n }\n\n level = node.children\n }\n }\n\n const toItems = (nodes: Map<string, Node>): SidebarItem[] =>\n Array.from(nodes.values())\n .sort((left, right) => {\n const orderDelta = left.order - right.order\n if (orderDelta !== 0) return orderDelta\n return left.title.localeCompare(right.title)\n })\n .map((node) => ({\n title: node.title,\n path: node.path,\n ...(node.children.size > 0 ? { children: toItems(node.children) } : {}),\n }))\n\n const items = toItems(roots)\n\n if (!landingPage) {\n return items\n }\n\n return [\n {\n title: landingPage.frontmatter.sidebarLabel ?? landingPage.title,\n path: `${basePath}${landingPage.routePath}`,\n },\n ...items,\n ]\n}\n\n/**\n * Find the first content page in a section, respecting meta ordering.\n * Excludes the landing page (README.md) itself — returns the first \"child\" page.\n */\nfunction findFirstSectionPage(\n sectionSlug: string,\n sectionPages: DocsPage[],\n meta?: DocsSectionMeta,\n): DocsPage | undefined {\n const nonLanding = sectionPages.filter((p) => p.contentSlug !== sectionSlug)\n if (nonLanding.length === 0) return undefined\n\n // For manual ordering with series, the first article of the first series wins\n if (meta?.orderBy === 'manual' && meta.series && meta.series.length > 0) {\n const pageBySlug = new Map(nonLanding.map((p) => [p.contentSlug.split('/').pop(), p]))\n for (const series of meta.series) {\n for (const slug of series.articles) {\n const page = pageBySlug.get(slug)\n if (page) return page\n }\n }\n }\n\n // For manual ordering with items array\n if (meta?.orderBy === 'manual' && meta.items && meta.items.length > 0) {\n const pageBySlug = new Map(nonLanding.map((p) => [p.contentSlug.split('/').pop(), p]))\n for (const slug of meta.items) {\n const page = pageBySlug.get(slug)\n if (page) return page\n }\n }\n\n // Default: use sortSectionPages\n return sortSectionPages(nonLanding, meta)[0]\n}\n\nexport function buildSiteModel(\n config: ResolvedDocsConfig,\n pages: DocsPage[],\n rootMeta?: DocsRootMeta,\n sectionMetas?: Map<string, DocsSectionMeta>,\n): SiteModel {\n const pageByPath = new Map(pages.map((page) => [page.routePath, page]))\n const sidebarBySection = new Map<string, SidebarSection[]>()\n const navItems: NavItem[] = []\n const pagesBySection = new Map<string, DocsPage[]>()\n\n for (const page of pages) {\n if (!page.section) continue\n if (!pagesBySection.has(page.section)) {\n pagesBySection.set(page.section, [])\n }\n pagesBySection.get(page.section)!.push(page)\n }\n\n for (const [sectionSlug, sectionPages] of Array.from(pagesBySection.entries()).sort((a, b) =>\n a[0].localeCompare(b[0]),\n )) {\n const sectionMeta = sectionMetas?.get(sectionSlug)\n const landingPage = sectionPages.find((page) => page.contentSlug === sectionSlug)\n const firstPage = findFirstSectionPage(sectionSlug, sectionPages, sectionMeta)\n const label =\n sectionMeta?.displayName ??\n config.packages?.[sectionSlug]?.label ??\n landingPage?.frontmatter.navLabel ??\n landingPage?.title ??\n firstPage?.frontmatter.navLabel ??\n toTitleCase(sectionSlug)\n const sectionPath = landingPage?.routePath ?? firstPage?.routePath ?? `/${sectionSlug}`\n\n // Only auto-generate nav items if root meta didn't provide explicit headerLinks\n if (!rootMeta?.headerLinks || rootMeta.headerLinks.length === 0) {\n navItems.push({ label, path: `${config.basePath}${sectionPath}` })\n }\n\n // Build sidebar: use series grouping if defined, otherwise flat list\n if (sectionMeta?.series && sectionMeta.series.length > 0) {\n sidebarBySection.set(\n sectionSlug,\n buildSidebarWithSeries(sectionSlug, sectionPages, sectionMeta, config.basePath),\n )\n } else {\n sidebarBySection.set(sectionSlug, [\n {\n title: label,\n slug: sectionSlug,\n collapsed: sectionMeta?.collapsed,\n items: buildSidebarItems(sectionSlug, sectionPages, config.basePath, sectionMeta),\n },\n ])\n }\n }\n\n // If root meta provides explicit header links, resolve section paths to actual pages\n if (rootMeta?.headerLinks && rootMeta.headerLinks.length > 0) {\n for (const link of rootMeta.headerLinks) {\n const rawPath = link.path.startsWith('/') ? link.path : `/${link.path}`\n const sectionSlug = rawPath.replace(/^\\//, '').replace(/\\/.*$/, '')\n const sectionPages = pagesBySection.get(sectionSlug)\n let resolvedPath = rawPath\n\n if (sectionPages) {\n const landing = sectionPages.find((p) => p.contentSlug === sectionSlug)\n if (landing) {\n resolvedPath = landing.routePath\n } else {\n const first = findFirstSectionPage(\n sectionSlug,\n sectionPages,\n sectionMetas?.get(sectionSlug),\n )\n if (first) resolvedPath = first.routePath\n }\n }\n\n navItems.push({\n label: link.label,\n path: `${config.basePath}${resolvedPath}`,\n })\n }\n }\n\n return {\n navItems,\n sidebarBySection,\n pageByPath,\n rootMeta,\n sectionMetas: sectionMetas ?? new Map(),\n }\n}\n\nfunction flattenSidebarItems(items: SidebarItem[]): SidebarItem[] {\n const flattened: SidebarItem[] = []\n\n for (const item of items) {\n flattened.push(item)\n if (item.children) {\n flattened.push(...flattenSidebarItems(item.children))\n }\n }\n\n return flattened\n}\n\nexport function getPrevNext(\n sidebarSections: SidebarSection[] | undefined,\n routePath: string,\n): { prev?: PrevNextLink; next?: PrevNextLink } {\n if (!sidebarSections?.length) return {}\n const flat = flattenSidebarItems(sidebarSections.flatMap((section) => section.items))\n const index = flat.findIndex((item) => item.path === routePath)\n if (index < 0) return {}\n\n const prev = index > 0 ? flat[index - 1] : undefined\n const next = index < flat.length - 1 ? flat[index + 1] : undefined\n\n return {\n prev: prev ? { title: prev.title, path: prev.path } : undefined,\n next: next ? { title: next.title, path: next.path } : undefined,\n }\n}\n\nexport function getSitePayload(config: ResolvedDocsConfig, model: SiteModel) {\n const base = config.basePath\n\n // Use root meta footer links if provided, otherwise config footer links\n const rawFooterLinks = model.rootMeta?.footerLinks ?? config.footerLinks\n\n // Prefix internal footer link paths with basePath\n const footerLinks = base\n ? rawFooterLinks.map((link) => ({\n ...link,\n path:\n link.path.startsWith('/') && !link.path.startsWith('//') && !link.path.startsWith(base)\n ? `${base}${link.path}`\n : link.path,\n }))\n : rawFooterLinks\n\n return {\n origin: config.origin,\n basePath: config.basePath,\n homeLink: config.homeLink,\n name: config.name,\n title: config.title,\n description: config.description,\n language: config.language,\n navItems: model.navItems,\n footerLinks,\n search: config.search,\n sidebar: config.sidebar,\n analytics: config.analytics,\n theme: config.theme,\n favicon: config.favicon !== false ? `${config.basePath}/${basename(config.favicon)}` : false,\n }\n}\n","import { Fragment, h } from '@pagesmith/core/jsx-runtime'\n\ntype PrevNext = {\n title: string\n path: string\n}\n\ntype Props = {\n prev?: PrevNext\n next?: PrevNext\n links?: Array<{ label: string; path: string }>\n copyright?: {\n holder: string\n startYear: number\n }\n}\n\nexport function DocFooter({ prev, next, links, copyright }: Props) {\n const hasPrevNext = prev || next\n const year = new Date().getFullYear()\n\n return (\n <footer class=\"doc-footer\">\n {hasPrevNext ? (\n <nav class=\"doc-footer-nav\" aria-label=\"Page navigation\">\n {prev ? (\n <a href={prev.path + '/'} class=\"doc-footer-link doc-footer-prev\">\n <span class=\"doc-footer-label\">Previous</span>\n <span class=\"doc-footer-title\">{prev.title}</span>\n </a>\n ) : (\n <span />\n )}\n {next ? (\n <a href={next.path + '/'} class=\"doc-footer-link doc-footer-next\">\n <span class=\"doc-footer-label\">Next</span>\n <span class=\"doc-footer-title\">{next.title}</span>\n </a>\n ) : (\n <span />\n )}\n </nav>\n ) : null}\n {links && links.length > 0 ? (\n <nav class=\"doc-footer-links\" aria-label=\"Footer links\">\n {links.map((link) => (\n <a href={link.path}>{link.label}</a>\n ))}\n </nav>\n ) : null}\n {copyright ? (\n <p class=\"doc-footer-copyright\">\n &copy; {copyright.startYear < year ? `${copyright.startYear}–${year}` : `${year}`}{' '}\n {copyright.holder}\n </p>\n ) : null}\n </footer>\n )\n}\n","import { h } from '@pagesmith/core/jsx-runtime'\n\ntype Props = {\n siteName: string\n basePath?: string\n homeLink?: string\n navItems?: Array<{ path: string; label: string }>\n slug: string\n searchEnabled?: boolean\n}\n\nconst hamburgerIcon =\n '<svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"><path d=\"M3 5h14M3 10h14M3 15h14\"/></svg>'\n\nconst searchIcon =\n '<svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"><circle cx=\"8.5\" cy=\"8.5\" r=\"5.5\"/><path d=\"m13 13 4 4\"/></svg>'\n\nexport function DocHeader({ siteName, basePath, homeLink, navItems, slug, searchEnabled }: Props) {\n const homePath = homeLink || (basePath ? `${basePath}/` : '/')\n const hasNav = navItems && navItems.length > 0\n const base = (basePath || '').replace(/\\/+$/, '')\n\n function isNavActive(itemPath: string): boolean {\n // Extract the section prefix from the nav item path (e.g., /pagesmith/guide)\n const relative = itemPath.startsWith(base) ? itemPath.slice(base.length) : itemPath\n const section = relative.replace(/^\\//, '').split('/')[0]\n return slug.startsWith(`${base}/${section}`)\n }\n\n return (\n <header class=\"doc-header\">\n <div class=\"doc-header-inner\">\n <div class=\"doc-header-left\">\n {hasNav ? (\n <button\n type=\"button\"\n class=\"doc-sidebar-toggle\"\n aria-label=\"Toggle navigation\"\n data-sidebar-toggle=\"\"\n innerHTML={hamburgerIcon}\n />\n ) : null}\n <a href={homePath} class=\"doc-logo\">\n {siteName}\n </a>\n </div>\n {hasNav ? (\n <nav class=\"doc-nav\">\n {navItems!.map((item) => (\n <a href={item.path} class={isNavActive(item.path) ? 'active' : ''}>\n {item.label}\n </a>\n ))}\n </nav>\n ) : null}\n {searchEnabled ? (\n <button\n type=\"button\"\n class=\"doc-search-trigger\"\n aria-label=\"Search\"\n data-search-trigger=\"\"\n >\n <span class=\"doc-search-icon\" innerHTML={searchIcon} />\n <kbd class=\"doc-search-shortcut\">\n <span class=\"doc-search-shortcut-key\">⌘</span>K\n </kbd>\n </button>\n ) : null}\n </div>\n </header>\n )\n}\n","import { Fragment, h } from '@pagesmith/core/jsx-runtime'\n\ntype SidebarItem = {\n title: string\n slug: string\n path: string\n children?: SidebarItem[]\n}\n\ntype SidebarSection = {\n title: string\n collapsed?: boolean\n items: SidebarItem[]\n}\n\ntype Props = {\n sections?: SidebarSection[]\n currentSlug?: string\n collapsible?: boolean\n}\n\nfunction isSectionActive(items: SidebarItem[], currentSlug: string): boolean {\n for (const item of items) {\n if (currentSlug === item.path || currentSlug.startsWith(item.path + '/')) return true\n if (item.children && isSectionActive(item.children, currentSlug)) return true\n }\n return false\n}\n\nfunction renderItems(items: SidebarItem[], currentSlug: string, depth: number = 0): any {\n return (\n <ul class={`doc-sidebar-list ${depth > 0 ? 'doc-sidebar-nested' : ''}`}>\n {items.map((item) => {\n const isActive = currentSlug === item.path\n const hasChildren = item.children && item.children.length > 0\n const isExpanded =\n hasChildren &&\n item.children!.some(\n (child) => currentSlug === child.path || currentSlug.startsWith(child.path + '/'),\n )\n\n return (\n <li\n class={`doc-sidebar-item ${isActive ? 'active' : ''} ${isExpanded ? 'expanded' : ''}`}\n >\n <a href={item.path + '/'} class=\"doc-sidebar-link\">\n {item.title}\n </a>\n {hasChildren ? renderItems(item.children!, currentSlug, depth + 1) : null}\n </li>\n )\n })}\n </ul>\n )\n}\n\nexport function DocSidebar({ sections, currentSlug = '/', collapsible = false }: Props) {\n if (!sections || sections.length === 0) return <Fragment />\n\n return (\n <aside class=\"doc-sidebar\">\n <nav class=\"doc-sidebar-nav\" aria-label=\"Documentation navigation\">\n {sections.map((section) => {\n const sectionActive = isSectionActive(section.items, currentSlug)\n // Section is open if: explicitly not collapsed, or contains the active page\n const isOpen = !section.collapsed || sectionActive\n\n if (collapsible) {\n return (\n <details\n class=\"doc-sidebar-section doc-sidebar-collapsible\"\n open={isOpen || undefined}\n >\n <summary class=\"doc-sidebar-heading\">{section.title}</summary>\n {renderItems(section.items, currentSlug)}\n </details>\n )\n }\n\n return (\n <div class=\"doc-sidebar-section\">\n <p class=\"doc-sidebar-heading\">{section.title}</p>\n {renderItems(section.items, currentSlug)}\n </div>\n )\n })}\n </nav>\n </aside>\n )\n}\n","import { Fragment, h } from '@pagesmith/core/jsx-runtime'\n\ntype Props = {\n title: string\n description?: string\n url?: string\n site: {\n origin: string\n basePath?: string\n name: string\n language?: string\n seo?: { locale?: string; twitterHandle?: string; defaultOgType?: string }\n theme?: { lightColor?: string; darkColor?: string }\n analytics?: { googleAnalytics?: string }\n footerLinks?: Array<{ label: string; path: string }>\n search?: { enabled?: boolean; showImages?: boolean; showSubResults?: boolean }\n favicon?: string | false\n }\n children?: any\n}\n\nexport function Html({ title, description, url, site, children }: Props) {\n const origin = site.origin.replace(/\\/$/, '')\n const base = site.basePath || ''\n const canonicalUrl = url ? `${origin}${url}` : undefined\n const locale = site.seo?.locale || 'en_US'\n const lightColor = site.theme?.lightColor || '#f8fafc'\n const darkColor = site.theme?.darkColor || '#020617'\n const gaId = site.analytics?.googleAnalytics\n const searchEnabled = site.search?.enabled !== false\n const favicon = site.favicon\n\n return (\n <html lang={site.language || 'en'} class=\"no-js\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <meta name=\"color-scheme\" content=\"light dark\" />\n <title>{title}</title>\n {favicon !== false && favicon ? (\n <link\n rel=\"icon\"\n href={favicon}\n type={favicon.endsWith('.svg') ? 'image/svg+xml' : 'image/x-icon'}\n />\n ) : null}\n {description ? <meta name=\"description\" content={description} /> : null}\n\n {/* Canonical URL */}\n {canonicalUrl ? <link rel=\"canonical\" href={canonicalUrl} /> : null}\n\n {/* OpenGraph */}\n <meta property=\"og:type\" content=\"website\" />\n {canonicalUrl ? <meta property=\"og:url\" content={canonicalUrl} /> : null}\n <meta property=\"og:title\" content={title} />\n {description ? <meta property=\"og:description\" content={description} /> : null}\n <meta property=\"og:locale\" content={locale} />\n <meta property=\"og:site_name\" content={site.name} />\n\n {/* Theme color */}\n <meta name=\"theme-color\" content={lightColor} media=\"(prefers-color-scheme: light)\" />\n <meta name=\"theme-color\" content={darkColor} media=\"(prefers-color-scheme: dark)\" />\n\n {/* CSS */}\n <link rel=\"stylesheet\" href={`${base}/assets/style.css`} />\n {searchEnabled ? <link rel=\"stylesheet\" href={`${base}/pagefind/pagefind-ui.css`} /> : null}\n\n {/* Remove no-js class */}\n <script innerHTML=\"document.documentElement.classList.remove('no-js')\" />\n {searchEnabled ? <script src={`${base}/pagefind/pagefind-ui.js`} defer /> : null}\n {searchEnabled ? (\n <noscript>\n <style innerHTML=\".doc-search-trigger{display:none!important}\" />\n </noscript>\n ) : null}\n\n {/* Google Analytics */}\n {gaId ? (\n <Fragment>\n <script async src={`https://www.googletagmanager.com/gtag/js?id=${gaId}`} />\n <script\n innerHTML={`window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());gtag('config','${gaId}');`}\n />\n </Fragment>\n ) : null}\n </head>\n <body>\n {children}\n {searchEnabled ? (\n <dialog\n class=\"doc-search-modal\"\n id=\"search-modal\"\n aria-label=\"Search documentation\"\n data-search-show-images={site.search?.showImages ? 'true' : 'false'}\n data-search-show-sub-results={site.search?.showSubResults !== false ? 'true' : 'false'}\n >\n <div class=\"doc-search-modal-inner\">\n <div class=\"doc-search-modal-header\">\n <span class=\"doc-search-modal-title\">Search</span>\n <button\n type=\"button\"\n class=\"doc-search-modal-close\"\n aria-label=\"Close search\"\n data-search-close=\"\"\n innerHTML='<svg viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"><path d=\"m5 5 10 10M15 5 5 15\"/></svg>'\n />\n </div>\n <div class=\"doc-search-modal-body\" data-pagefind-search=\"\" />\n </div>\n </dialog>\n ) : null}\n <script src={`${base}/assets/main.js`} defer />\n </body>\n </html>\n )\n}\n","/**\n * DocHome layout.\n *\n * Documentation landing page with hero, install snippet, features grid,\n * packages grid, code example, and optional markdown content.\n *\n * All sections are optional — omit the frontmatter key and the section\n * is not rendered. Supports both single-package and monorepo projects.\n */\n\nimport { h } from '@pagesmith/core/jsx-runtime'\nimport { DocFooter } from '../components/DocFooter'\nimport { DocHeader } from '../components/DocHeader'\nimport { DocSidebar } from '../components/DocSidebar'\nimport { Html } from '../components/Html'\n\ntype Props = {\n content: string\n frontmatter: Record<string, any>\n headings: Array<{ depth: number; text: string; slug: string }>\n slug: string\n site: any\n [key: string]: any\n}\n\nexport default function DocHome(props: Props) {\n const { content, frontmatter, slug, site } = props\n\n const hero =\n frontmatter.hero ??\n (frontmatter.title || frontmatter.tagline || frontmatter.actions\n ? {\n name: frontmatter.title || site.name,\n text: frontmatter.tagline || frontmatter.title,\n tagline: frontmatter.description,\n badge: frontmatter.badge,\n actions: frontmatter.actions,\n }\n : undefined)\n const features = frontmatter.features\n const install = frontmatter.install\n const packages = frontmatter.packages\n const codeExample = frontmatter.codeExample\n\n // Build sidebar sections from navItems for mobile hamburger menu\n const navItems = site.navItems as Array<{ path: string; label: string }> | undefined\n const sidebarSections =\n navItems && navItems.length > 0\n ? [\n {\n title: 'Navigation',\n items: navItems.map((item: { path: string; label: string }) => ({\n title: item.label,\n slug: item.path,\n path: item.path,\n })),\n },\n ]\n : undefined\n\n return (\n <Html\n title={hero?.name || frontmatter.title || site.title}\n description={hero?.tagline || frontmatter.description || site.description}\n url=\"/\"\n site={site}\n >\n <DocHeader\n siteName={site.name}\n basePath={site.basePath}\n homeLink={site.homeLink}\n navItems={site.navItems}\n slug={slug}\n searchEnabled={site.search?.enabled}\n />\n <main class=\"doc-home\" data-pagefind-body=\"\">\n {/* Mobile sidebar (visible on small screens via hamburger toggle) */}\n <DocSidebar sections={sidebarSections} currentSlug={slug} />\n\n {/* Hero section */}\n {hero ? (\n <section class=\"doc-home-section doc-hero\">\n {hero.badge ? (\n <div class=\"doc-hero-badge\">\n <span class=\"doc-hero-badge-dot\" />\n {hero.badge}\n </div>\n ) : null}\n {hero.name ? <p class=\"doc-hero-name\">{hero.name}</p> : null}\n {hero.text ? <h1 class=\"doc-hero-text\">{hero.text}</h1> : null}\n {hero.tagline ? <p class=\"doc-hero-tagline\">{hero.tagline}</p> : null}\n {hero.actions && hero.actions.length > 0 ? (\n <div class=\"doc-hero-actions\">\n {hero.actions.map((action: any) => (\n <a\n href={action.link}\n class={`doc-hero-action doc-hero-action-${action.theme || 'brand'}`}\n >\n {action.icon ? (\n <span class=\"doc-hero-action-icon\" innerHTML={action.icon} />\n ) : null}\n {action.text}\n </a>\n ))}\n </div>\n ) : null}\n </section>\n ) : null}\n\n {/* Install snippet */}\n {install ? (\n <div class=\"doc-home-section doc-home-install\">\n <div class=\"doc-install-bar\">\n <div class=\"doc-install-header\">\n <span class=\"doc-install-dot doc-install-dot-r\" />\n <span class=\"doc-install-dot doc-install-dot-y\" />\n <span class=\"doc-install-dot doc-install-dot-g\" />\n <span class=\"doc-install-title\">Terminal</span>\n <span style=\"width:36px\" />\n </div>\n <div class=\"doc-install-body\">\n <code>\n <span class=\"doc-install-prompt\">$ </span>\n {install}\n </code>\n <button\n type=\"button\"\n class=\"doc-install-copy\"\n data-copy-text={install}\n onclick={`navigator.clipboard.writeText(this.dataset.copyText);this.textContent='Copied!';setTimeout(()=>this.textContent='Copy',1500)`}\n >\n Copy\n </button>\n </div>\n </div>\n </div>\n ) : null}\n\n {/* Features grid */}\n {features && features.length > 0 ? (\n <section class=\"doc-home-section\">\n <p class=\"doc-home-section-label\">Features</p>\n <div class=\"doc-features\">\n {features.map((feature: any) => (\n <div class=\"doc-feature-card\">\n {feature.icon ? <span class=\"doc-feature-icon\" innerHTML={feature.icon} /> : null}\n <h3 class=\"doc-feature-title\">{feature.title}</h3>\n <p class=\"doc-feature-details\">{feature.details}</p>\n </div>\n ))}\n </div>\n </section>\n ) : null}\n\n {/* Packages grid (monorepo) */}\n {packages && packages.length > 0 ? (\n <section class=\"doc-home-section\">\n <p class=\"doc-home-section-label\">Packages</p>\n <div class=\"doc-packages\">\n {packages.map((pkg: any) => {\n const Tag = pkg.href ? 'a' : 'div'\n return (\n <Tag class=\"doc-package-card\" href={pkg.href || undefined}>\n <div class=\"doc-package-name\">{pkg.name}</div>\n <p class=\"doc-package-desc\">{pkg.description}</p>\n {pkg.version || pkg.tag ? (\n <div class=\"doc-package-meta\">\n {pkg.version ? (\n <span class=\"doc-package-version\">{pkg.version}</span>\n ) : null}\n {pkg.tag ? <span class=\"doc-package-tag\">{pkg.tag}</span> : null}\n </div>\n ) : null}\n </Tag>\n )\n })}\n </div>\n </section>\n ) : null}\n\n {/* Code example */}\n {codeExample ? (\n <section class=\"doc-home-section\">\n <p class=\"doc-home-section-label\">{codeExample.label || 'Quick Start'}</p>\n <div class=\"doc-home-code\">\n <div class=\"doc-home-code-header\">\n <span class=\"doc-install-dot doc-install-dot-r\" />\n <span class=\"doc-install-dot doc-install-dot-y\" />\n <span class=\"doc-install-dot doc-install-dot-g\" />\n <span class=\"doc-home-code-title\">{codeExample.title || ''}</span>\n <span style=\"width:36px\" />\n </div>\n <pre innerHTML={codeExample.code} />\n </div>\n </section>\n ) : null}\n\n {/* Content (if any markdown content is provided) */}\n {content ? (\n <section class=\"doc-home-content\">\n <div class=\"prose\" innerHTML={content} />\n </section>\n ) : null}\n\n {/* Footer */}\n <div class=\"doc-home-footer\">\n <DocFooter links={site.footerLinks} copyright={site.copyright} />\n </div>\n </main>\n </Html>\n )\n}\n","/**\n * DocNotFound layout.\n *\n * 404 page for documentation sites.\n */\n\nimport { h } from '@pagesmith/core/jsx-runtime'\nimport { DocHeader } from '../components/DocHeader'\nimport { Html } from '../components/Html'\n\ntype Props = {\n content: string\n frontmatter: Record<string, any>\n headings: Array<{ depth: number; text: string; slug: string }>\n slug: string\n site: any\n [key: string]: any\n}\n\nexport default function DocNotFound(props: Props) {\n const { site, slug } = props\n const homePath = site.homeLink || (site.basePath ? `${site.basePath}/` : '/')\n\n return (\n <Html\n title={`Page Not Found — ${site.title}`}\n description=\"The requested page could not be found.\"\n url={`${slug}/`}\n site={site}\n >\n <DocHeader\n siteName={site.name}\n basePath={site.basePath}\n homeLink={site.homeLink}\n navItems={site.navItems}\n slug={slug}\n searchEnabled={site.search?.enabled}\n />\n <main class=\"doc-not-found\">\n <div class=\"doc-not-found-container\">\n <p class=\"doc-not-found-code\">404</p>\n <h1 class=\"doc-not-found-title\">Page Not Found</h1>\n <p class=\"doc-not-found-text\">\n The page you are looking for might have been moved or no longer exists.\n </p>\n <div class=\"doc-not-found-actions\">\n <a href={homePath} class=\"doc-not-found-btn doc-not-found-btn-primary\">\n Go Home\n </a>\n </div>\n </div>\n </main>\n </Html>\n )\n}\n","import { Fragment, h } from '@pagesmith/core/jsx-runtime'\nimport type { Heading } from '@pagesmith/core/schemas'\n\ntype Props = {\n headings: Heading[]\n title?: string\n}\n\nexport function DocTOC({ headings, title = 'On this page' }: Props) {\n const filtered = headings.filter((h) => h.depth >= 2 && h.depth <= 3)\n if (filtered.length === 0) return <Fragment />\n\n return (\n <nav class=\"doc-toc\" aria-label=\"Table of contents\">\n <p class=\"doc-toc-title\">{title}</p>\n <ul class=\"doc-toc-list\">\n {filtered.map((heading) => (\n <li class={`doc-toc-item depth-${heading.depth}`}>\n <a href={`#${heading.slug}`}>{heading.text}</a>\n </li>\n ))}\n </ul>\n </nav>\n )\n}\n","/**\n * DocPage layout.\n *\n * Standard documentation page with 3-column grid:\n * left sidebar (navigation) | content | right TOC\n */\n\nimport { h } from '@pagesmith/core/jsx-runtime'\nimport { DocFooter } from '../components/DocFooter'\nimport { DocHeader } from '../components/DocHeader'\nimport { DocSidebar } from '../components/DocSidebar'\nimport { DocTOC } from '../components/DocTOC'\nimport { Html } from '../components/Html'\n\ntype Props = {\n content: string\n frontmatter: Record<string, any>\n headings: Array<{ depth: number; text: string; slug: string }>\n slug: string\n site: any\n pages?: any[]\n sidebarSections?: any[]\n prev?: { title: string; path: string }\n next?: { title: string; path: string }\n [key: string]: any\n}\n\nexport default function DocPage(props: Props) {\n const { content, frontmatter, headings, slug, site, next, prev, sidebarSections } = props\n\n const pageTitle = frontmatter.title ? `${frontmatter.title} — ${site.title}` : site.title\n\n return (\n <Html\n title={pageTitle}\n description={frontmatter.description || site.description}\n url={`${slug}/`}\n site={site}\n >\n <DocHeader\n siteName={site.name}\n basePath={site.basePath}\n homeLink={site.homeLink}\n navItems={site.navItems}\n slug={slug}\n searchEnabled={site.search?.enabled}\n />\n <div class=\"doc-layout\">\n <DocSidebar\n sections={sidebarSections}\n currentSlug={slug}\n collapsible={site.sidebar?.collapsible}\n />\n <main class=\"doc-main\" data-pagefind-body=\"\">\n {/* Mobile TOC — always at top of content area */}\n {headings.length > 0 ? (\n <details class=\"doc-toc-mobile\">\n <summary>On this page</summary>\n <DocTOC headings={headings} />\n </details>\n ) : null}\n\n <article>\n <div class=\"prose\" innerHTML={content} />\n </article>\n <DocFooter prev={prev} next={next} links={site.footerLinks} copyright={site.copyright} />\n </main>\n <aside class=\"doc-aside\">\n <DocTOC headings={headings} />\n </aside>\n </div>\n </Html>\n )\n}\n","import { createHash } from 'crypto'\nimport { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from 'fs'\nimport { basename, dirname, join, resolve } from 'path'\nimport type { ResolvedDocsConfig } from './config.js'\nimport type { DocsPage, DocsSectionMeta } from './content.js'\nimport { loadDocsPages, loadRootMeta, loadSectionMetas } from './content.js'\nimport { buildSiteModel, getPrevNext, getSitePayload } from './navigation.js'\nimport DocHome from '../theme/layouts/DocHome'\nimport DocNotFound from '../theme/layouts/DocNotFound'\nimport DocPage from '../theme/layouts/DocPage'\n\ntype DocsRenderable = (props: any) => unknown\n\ntype DocsLayoutRegistry = Record<string, DocsRenderable>\n\nasync function loadUserThemeModule(\n entryPath: string,\n rootDir: string,\n): Promise<Record<string, any>> {\n const { build } = await import('rolldown')\n const { pathToFileURL } = await import('url')\n\n const cacheDir = join(rootDir, 'node_modules', '.cache', 'pagesmith-docs-layouts')\n mkdirSync(cacheDir, { recursive: true })\n\n // Clean up old cached files before writing a new one\n for (const file of readdirSync(cacheDir)) {\n if (file.endsWith('.mjs')) {\n try {\n rmSync(join(cacheDir, file))\n } catch {\n // Ignore errors from concurrent cleanup\n }\n }\n }\n\n // Use content-hash-based filename for stability\n const entryContent = readFileSync(entryPath, 'utf-8')\n const contentHash = createHash('md5').update(entryContent).digest('hex').slice(0, 12)\n const safeBase = basename(entryPath)\n .replace(/[^a-z0-9]+/gi, '-')\n .toLowerCase()\n const outFile = join(cacheDir, `${safeBase}-${contentHash}.mjs`)\n\n // Skip rebuild if cached output already exists\n if (!existsSync(outFile)) {\n const rolldownBuild = build as any\n\n await rolldownBuild({\n input: entryPath,\n output: {\n file: outFile,\n format: 'esm',\n },\n platform: 'node',\n logLevel: 'warn',\n external: [/^node:/, /^@pagesmith\\//],\n moduleTypes: {\n '.ts': 'ts',\n '.tsx': 'tsx',\n },\n })\n }\n\n return import(`${pathToFileURL(outFile).href}?t=${Date.now()}`) as Promise<Record<string, any>>\n}\n\nasync function resolveDocsLayout(\n name: string,\n config: ResolvedDocsConfig,\n fallback?: DocsRenderable,\n): Promise<DocsRenderable> {\n const overridePath = config.theme?.layouts?.[name]\n if (!overridePath) {\n if (fallback) return fallback\n throw new Error(\n `Theme layout \"${name}\" is referenced in meta.json5 but not registered in theme.layouts config`,\n )\n }\n\n const absolutePath = resolve(config.rootDir, overridePath)\n const module = await loadUserThemeModule(absolutePath, config.rootDir)\n\n const knownExports: Record<string, string[]> = {\n home: ['default', 'DocHome', 'Home'],\n page: ['default', 'DocPage', 'Page'],\n notFound: ['default', 'DocNotFound', 'NotFound'],\n }\n const exportNames = knownExports[name] ?? ['default', name]\n\n for (const exportName of exportNames) {\n const candidate = module[exportName]\n if (typeof candidate === 'function') {\n return candidate as DocsRenderable\n }\n }\n\n throw new Error(\n `Theme layout \"${name}\" at ${absolutePath} must export a component as default or one of: ${exportNames.join(', ')}`,\n )\n}\n\nasync function resolveDocsLayouts(\n config: ResolvedDocsConfig,\n sectionMetas?: Map<string, DocsSectionMeta>,\n): Promise<DocsLayoutRegistry> {\n const registry: DocsLayoutRegistry = {\n home: await resolveDocsLayout('home', config, DocHome),\n page: await resolveDocsLayout('page', config, DocPage),\n notFound: await resolveDocsLayout('notFound', config, DocNotFound),\n }\n\n // Collect unique layout names from section metas\n if (sectionMetas) {\n const extraNames = new Set<string>()\n for (const meta of sectionMetas.values()) {\n if (meta.layout && !registry[meta.layout]) extraNames.add(meta.layout)\n if (meta.itemLayout && !registry[meta.itemLayout]) extraNames.add(meta.itemLayout)\n }\n for (const name of extraNames) {\n registry[name] = await resolveDocsLayout(name, config)\n }\n }\n\n return registry\n}\n\nfunction writeHtml(outDir: string, routePath: string, html: string): void {\n const outputPath =\n routePath === '/' ? join(outDir, 'index.html') : join(outDir, routePath.slice(1), 'index.html')\n mkdirSync(dirname(outputPath), { recursive: true })\n writeFileSync(outputPath, `<!DOCTYPE html>\\n${html}`)\n}\n\nexport async function renderDocs(config: ResolvedDocsConfig): Promise<void> {\n const rootMeta = loadRootMeta(config.contentDir)\n const sectionMetas = loadSectionMetas(config.contentDir)\n const pages = await loadDocsPages(config, sectionMetas)\n const model = buildSiteModel(config, pages, rootMeta, sectionMetas)\n const site = getSitePayload(config, model)\n const layouts = await resolveDocsLayouts(config, sectionMetas)\n\n const base = config.basePath\n\n for (const page of pages) {\n const urlPath = `${base}${page.routePath}`\n\n if (page.isHome) {\n // Prefix internal hero action links with basePath\n const frontmatter = { ...page.frontmatter }\n if (frontmatter.hero?.actions) {\n frontmatter.hero = {\n ...frontmatter.hero,\n actions: frontmatter.hero.actions.map((a: any) => ({\n ...a,\n link:\n typeof a.link === 'string' && a.link.startsWith('/') ? `${base}${a.link}` : a.link,\n })),\n }\n }\n const homeActions = Array.isArray(frontmatter.actions) ? frontmatter.actions : undefined\n if (homeActions) {\n frontmatter.actions = homeActions.map((a: any) => ({\n ...a,\n link: typeof a.link === 'string' && a.link.startsWith('/') ? `${base}${a.link}` : a.link,\n }))\n }\n\n const layout = layouts[page.layoutName] ?? layouts.home\n const output = layout({\n content: page.html,\n frontmatter,\n headings: page.headings,\n slug: urlPath,\n site,\n })\n writeHtml(config.outDir, page.routePath, String(output))\n continue\n }\n\n const sidebarSections = page.section ? model.sidebarBySection.get(page.section) : undefined\n const { prev, next } = getPrevNext(sidebarSections, urlPath)\n const layout = layouts[page.layoutName] ?? layouts.page\n const output = layout({\n content: page.html,\n frontmatter: page.frontmatter,\n headings: page.headings,\n slug: urlPath,\n site,\n sidebarSections,\n prev,\n next,\n })\n writeHtml(config.outDir, page.routePath, String(output))\n }\n\n const notFound = layouts.notFound({\n content: '',\n frontmatter: {\n title: 'Page not found',\n description: 'The page you requested could not be found.',\n },\n headings: [],\n slug: `${base}/404`,\n site,\n })\n const notFoundHtml = `<!DOCTYPE html>\\n${String(notFound)}`\n writeHtml(config.outDir, '/404', String(notFound))\n // Also write 404.html at root for GitHub Pages\n writeFileSync(join(config.outDir, '404.html'), notFoundHtml)\n}\n","import { copyPublicFiles } from '@pagesmith/core/assets'\nimport { buildCss } from '@pagesmith/core/css'\nimport { copyFileSync, existsSync, mkdirSync, readdirSync, rmSync, writeFileSync } from 'fs'\nimport { basename, dirname, join } from 'path'\nimport { fileURLToPath } from 'url'\nimport {\n getThemeRuntimeEntry,\n getThemeStylesEntry,\n resolveDocsConfig,\n type DocsBuildOptions,\n type ResolvedDocsConfig,\n} from './config.js'\nimport { collectContentAssets } from './content.js'\nimport { renderDocs } from './render.js'\n\nasync function bundleThemeAssets(config: ResolvedDocsConfig): Promise<void> {\n const assetsDir = join(config.outDir, 'assets')\n mkdirSync(assetsDir, { recursive: true })\n\n const css = buildCss(getThemeStylesEntry(), { minify: true })\n writeFileSync(join(assetsDir, 'style.css'), css)\n\n const { build } = await import('rolldown')\n\n await build({\n input: getThemeRuntimeEntry(),\n output: {\n dir: assetsDir,\n entryFileNames: 'main.js',\n format: 'esm',\n minify: true,\n },\n platform: 'browser',\n logLevel: 'warn',\n })\n\n // Copy bundled font files to assets/fonts/\n const corePkgDir = dirname(fileURLToPath(import.meta.resolve('@pagesmith/core/package.json')))\n const coreFontsDir = join(corePkgDir, 'assets', 'fonts')\n const outFontsDir = join(assetsDir, 'fonts')\n mkdirSync(outFontsDir, { recursive: true })\n for (const file of readdirSync(coreFontsDir)) {\n if (file.endsWith('.woff2')) {\n copyFileSync(join(coreFontsDir, file), join(outFontsDir, file))\n }\n }\n}\n\nfunction copyPublicAssets(config: ResolvedDocsConfig): void {\n copyPublicFiles(config.publicDir, config.outDir)\n}\n\nfunction copyContentAssetsToOutput(outDir: string, assets: Map<string, string>): void {\n if (assets.size === 0) return\n\n const assetsDir = join(outDir, 'assets')\n mkdirSync(assetsDir, { recursive: true })\n\n for (const [fileName, sourcePath] of assets) {\n copyFileSync(sourcePath, join(assetsDir, fileName))\n }\n}\n\nasync function runPagefind(outDir: string, extraFlags: string[] = []): Promise<void> {\n // Resolve pagefind's main entry via import.meta.resolve (works with exports-only packages)\n const { fileURLToPath } = await import('url')\n const mainUrl = import.meta.resolve('pagefind')\n const mainPath = fileURLToPath(mainUrl)\n const pagefindRoot = join(mainPath, '..', '..')\n const binaryPath = join(pagefindRoot, 'lib', 'runner', 'bin.cjs')\n\n const { execFileSync } = await import('child_process')\n execFileSync(process.execPath, [binaryPath, '--site', outDir, ...extraFlags], {\n stdio: 'inherit',\n })\n}\n\nexport async function build(options: DocsBuildOptions = {}): Promise<void> {\n const config = resolveDocsConfig(options.configPath, {\n outDir: options.outDir,\n basePath: options.basePath,\n })\n\n if (existsSync(config.outDir)) {\n rmSync(config.outDir, { recursive: true, force: true })\n }\n mkdirSync(config.outDir, { recursive: true })\n\n const contentAssets = collectContentAssets(config.contentDir)\n\n await bundleThemeAssets(config)\n await renderDocs(config)\n copyPublicAssets(config)\n copyContentAssetsToOutput(config.outDir, contentAssets)\n\n // Copy favicon to output if not already present (e.g. bundled default not in public/)\n if (config.favicon) {\n const faviconDest = join(config.outDir, basename(config.favicon))\n if (!existsSync(faviconDest)) {\n copyFileSync(config.favicon, faviconDest)\n }\n }\n\n if (config.search.enabled) {\n await runPagefind(config.outDir, config.search.pagefindFlags)\n }\n}\n","import { stat, lstat, readdir, realpath } from 'node:fs/promises';\nimport { Readable } from 'node:stream';\nimport { resolve as presolve, relative as prelative, join as pjoin, sep as psep } from 'node:path';\nexport const EntryTypes = {\n FILE_TYPE: 'files',\n DIR_TYPE: 'directories',\n FILE_DIR_TYPE: 'files_directories',\n EVERYTHING_TYPE: 'all',\n};\nconst defaultOptions = {\n root: '.',\n fileFilter: (_entryInfo) => true,\n directoryFilter: (_entryInfo) => true,\n type: EntryTypes.FILE_TYPE,\n lstat: false,\n depth: 2147483648,\n alwaysStat: false,\n highWaterMark: 4096,\n};\nObject.freeze(defaultOptions);\nconst RECURSIVE_ERROR_CODE = 'READDIRP_RECURSIVE_ERROR';\nconst NORMAL_FLOW_ERRORS = new Set(['ENOENT', 'EPERM', 'EACCES', 'ELOOP', RECURSIVE_ERROR_CODE]);\nconst ALL_TYPES = [\n EntryTypes.DIR_TYPE,\n EntryTypes.EVERYTHING_TYPE,\n EntryTypes.FILE_DIR_TYPE,\n EntryTypes.FILE_TYPE,\n];\nconst DIR_TYPES = new Set([\n EntryTypes.DIR_TYPE,\n EntryTypes.EVERYTHING_TYPE,\n EntryTypes.FILE_DIR_TYPE,\n]);\nconst FILE_TYPES = new Set([\n EntryTypes.EVERYTHING_TYPE,\n EntryTypes.FILE_DIR_TYPE,\n EntryTypes.FILE_TYPE,\n]);\nconst isNormalFlowError = (error) => NORMAL_FLOW_ERRORS.has(error.code);\nconst wantBigintFsStats = process.platform === 'win32';\nconst emptyFn = (_entryInfo) => true;\nconst normalizeFilter = (filter) => {\n if (filter === undefined)\n return emptyFn;\n if (typeof filter === 'function')\n return filter;\n if (typeof filter === 'string') {\n const fl = filter.trim();\n return (entry) => entry.basename === fl;\n }\n if (Array.isArray(filter)) {\n const trItems = filter.map((item) => item.trim());\n return (entry) => trItems.some((f) => entry.basename === f);\n }\n return emptyFn;\n};\n/** Readable readdir stream, emitting new files as they're being listed. */\nexport class ReaddirpStream extends Readable {\n constructor(options = {}) {\n super({\n objectMode: true,\n autoDestroy: true,\n highWaterMark: options.highWaterMark,\n });\n const opts = { ...defaultOptions, ...options };\n const { root, type } = opts;\n this._fileFilter = normalizeFilter(opts.fileFilter);\n this._directoryFilter = normalizeFilter(opts.directoryFilter);\n const statMethod = opts.lstat ? lstat : stat;\n // Use bigint stats if it's windows and stat() supports options (node 10+).\n if (wantBigintFsStats) {\n this._stat = (path) => statMethod(path, { bigint: true });\n }\n else {\n this._stat = statMethod;\n }\n this._maxDepth = opts.depth ?? defaultOptions.depth;\n this._wantsDir = type ? DIR_TYPES.has(type) : false;\n this._wantsFile = type ? FILE_TYPES.has(type) : false;\n this._wantsEverything = type === EntryTypes.EVERYTHING_TYPE;\n this._root = presolve(root);\n this._isDirent = !opts.alwaysStat;\n this._statsProp = this._isDirent ? 'dirent' : 'stats';\n this._rdOptions = { encoding: 'utf8', withFileTypes: this._isDirent };\n // Launch stream with one parent, the root dir.\n this.parents = [this._exploreDir(root, 1)];\n this.reading = false;\n this.parent = undefined;\n }\n async _read(batch) {\n if (this.reading)\n return;\n this.reading = true;\n try {\n while (!this.destroyed && batch > 0) {\n const par = this.parent;\n const fil = par && par.files;\n if (fil && fil.length > 0) {\n const { path, depth } = par;\n const slice = fil.splice(0, batch).map((dirent) => this._formatEntry(dirent, path));\n const awaited = await Promise.all(slice);\n for (const entry of awaited) {\n if (!entry)\n continue;\n if (this.destroyed)\n return;\n const entryType = await this._getEntryType(entry);\n if (entryType === 'directory' && this._directoryFilter(entry)) {\n if (depth <= this._maxDepth) {\n this.parents.push(this._exploreDir(entry.fullPath, depth + 1));\n }\n if (this._wantsDir) {\n this.push(entry);\n batch--;\n }\n }\n else if ((entryType === 'file' || this._includeAsFile(entry)) &&\n this._fileFilter(entry)) {\n if (this._wantsFile) {\n this.push(entry);\n batch--;\n }\n }\n }\n }\n else {\n const parent = this.parents.pop();\n if (!parent) {\n this.push(null);\n break;\n }\n this.parent = await parent;\n if (this.destroyed)\n return;\n }\n }\n }\n catch (error) {\n this.destroy(error);\n }\n finally {\n this.reading = false;\n }\n }\n async _exploreDir(path, depth) {\n let files;\n try {\n files = await readdir(path, this._rdOptions);\n }\n catch (error) {\n this._onError(error);\n }\n return { files, depth, path };\n }\n async _formatEntry(dirent, path) {\n let entry;\n const basename = this._isDirent ? dirent.name : dirent;\n try {\n const fullPath = presolve(pjoin(path, basename));\n entry = { path: prelative(this._root, fullPath), fullPath, basename };\n entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath);\n }\n catch (err) {\n this._onError(err);\n return;\n }\n return entry;\n }\n _onError(err) {\n if (isNormalFlowError(err) && !this.destroyed) {\n this.emit('warn', err);\n }\n else {\n this.destroy(err);\n }\n }\n async _getEntryType(entry) {\n // entry may be undefined, because a warning or an error were emitted\n // and the statsProp is undefined\n if (!entry && this._statsProp in entry) {\n return '';\n }\n const stats = entry[this._statsProp];\n if (stats.isFile())\n return 'file';\n if (stats.isDirectory())\n return 'directory';\n if (stats && stats.isSymbolicLink()) {\n const full = entry.fullPath;\n try {\n const entryRealPath = await realpath(full);\n const entryRealPathStats = await lstat(entryRealPath);\n if (entryRealPathStats.isFile()) {\n return 'file';\n }\n if (entryRealPathStats.isDirectory()) {\n const len = entryRealPath.length;\n if (full.startsWith(entryRealPath) && full.substr(len, 1) === psep) {\n const recursiveError = new Error(`Circular symlink detected: \"${full}\" points to \"${entryRealPath}\"`);\n // @ts-ignore\n recursiveError.code = RECURSIVE_ERROR_CODE;\n return this._onError(recursiveError);\n }\n return 'directory';\n }\n }\n catch (error) {\n this._onError(error);\n return '';\n }\n }\n }\n _includeAsFile(entry) {\n const stats = entry && entry[this._statsProp];\n return stats && this._wantsEverything && !stats.isDirectory();\n }\n}\n/**\n * Streaming version: Reads all files and directories in given root recursively.\n * Consumes ~constant small amount of RAM.\n * @param root Root directory\n * @param options Options to specify root (start directory), filters and recursion depth\n */\nexport function readdirp(root, options = {}) {\n // @ts-ignore\n let type = options.entryType || options.type;\n if (type === 'both')\n type = EntryTypes.FILE_DIR_TYPE; // backwards-compatibility\n if (type)\n options.type = type;\n if (!root) {\n throw new Error('readdirp: root argument is required. Usage: readdirp(root, options)');\n }\n else if (typeof root !== 'string') {\n throw new TypeError('readdirp: root argument must be a string. Usage: readdirp(root, options)');\n }\n else if (type && !ALL_TYPES.includes(type)) {\n throw new Error(`readdirp: Invalid type passed. Use one of ${ALL_TYPES.join(', ')}`);\n }\n options.root = root;\n return new ReaddirpStream(options);\n}\n/**\n * Promise version: Reads all files and directories in given root recursively.\n * Compared to streaming version, will consume a lot of RAM e.g. when 1 million files are listed.\n * @returns array of paths and their entry infos\n */\nexport function readdirpPromise(root, options = {}) {\n return new Promise((resolve, reject) => {\n const files = [];\n readdirp(root, options)\n .on('data', (entry) => files.push(entry))\n .on('end', () => resolve(files))\n .on('error', (error) => reject(error));\n });\n}\nexport default readdirp;\n","import { watchFile, unwatchFile, watch as fs_watch } from 'fs';\nimport { open, stat, lstat, realpath as fsrealpath } from 'fs/promises';\nimport * as sysPath from 'path';\nimport { type as osType } from 'os';\nexport const STR_DATA = 'data';\nexport const STR_END = 'end';\nexport const STR_CLOSE = 'close';\nexport const EMPTY_FN = () => { };\nexport const IDENTITY_FN = (val) => val;\nconst pl = process.platform;\nexport const isWindows = pl === 'win32';\nexport const isMacos = pl === 'darwin';\nexport const isLinux = pl === 'linux';\nexport const isFreeBSD = pl === 'freebsd';\nexport const isIBMi = osType() === 'OS400';\nexport const EVENTS = {\n ALL: 'all',\n READY: 'ready',\n ADD: 'add',\n CHANGE: 'change',\n ADD_DIR: 'addDir',\n UNLINK: 'unlink',\n UNLINK_DIR: 'unlinkDir',\n RAW: 'raw',\n ERROR: 'error',\n};\nconst EV = EVENTS;\nconst THROTTLE_MODE_WATCH = 'watch';\nconst statMethods = { lstat, stat };\nconst KEY_LISTENERS = 'listeners';\nconst KEY_ERR = 'errHandlers';\nconst KEY_RAW = 'rawEmitters';\nconst HANDLER_KEYS = [KEY_LISTENERS, KEY_ERR, KEY_RAW];\n// prettier-ignore\nconst binaryExtensions = new Set([\n '3dm', '3ds', '3g2', '3gp', '7z', 'a', 'aac', 'adp', 'afdesign', 'afphoto', 'afpub', 'ai',\n 'aif', 'aiff', 'alz', 'ape', 'apk', 'appimage', 'ar', 'arj', 'asf', 'au', 'avi',\n 'bak', 'baml', 'bh', 'bin', 'bk', 'bmp', 'btif', 'bz2', 'bzip2',\n 'cab', 'caf', 'cgm', 'class', 'cmx', 'cpio', 'cr2', 'cur', 'dat', 'dcm', 'deb', 'dex', 'djvu',\n 'dll', 'dmg', 'dng', 'doc', 'docm', 'docx', 'dot', 'dotm', 'dra', 'DS_Store', 'dsk', 'dts',\n 'dtshd', 'dvb', 'dwg', 'dxf',\n 'ecelp4800', 'ecelp7470', 'ecelp9600', 'egg', 'eol', 'eot', 'epub', 'exe',\n 'f4v', 'fbs', 'fh', 'fla', 'flac', 'flatpak', 'fli', 'flv', 'fpx', 'fst', 'fvt',\n 'g3', 'gh', 'gif', 'graffle', 'gz', 'gzip',\n 'h261', 'h263', 'h264', 'icns', 'ico', 'ief', 'img', 'ipa', 'iso',\n 'jar', 'jpeg', 'jpg', 'jpgv', 'jpm', 'jxr', 'key', 'ktx',\n 'lha', 'lib', 'lvp', 'lz', 'lzh', 'lzma', 'lzo',\n 'm3u', 'm4a', 'm4v', 'mar', 'mdi', 'mht', 'mid', 'midi', 'mj2', 'mka', 'mkv', 'mmr', 'mng',\n 'mobi', 'mov', 'movie', 'mp3',\n 'mp4', 'mp4a', 'mpeg', 'mpg', 'mpga', 'mxu',\n 'nef', 'npx', 'numbers', 'nupkg',\n 'o', 'odp', 'ods', 'odt', 'oga', 'ogg', 'ogv', 'otf', 'ott',\n 'pages', 'pbm', 'pcx', 'pdb', 'pdf', 'pea', 'pgm', 'pic', 'png', 'pnm', 'pot', 'potm',\n 'potx', 'ppa', 'ppam',\n 'ppm', 'pps', 'ppsm', 'ppsx', 'ppt', 'pptm', 'pptx', 'psd', 'pya', 'pyc', 'pyo', 'pyv',\n 'qt',\n 'rar', 'ras', 'raw', 'resources', 'rgb', 'rip', 'rlc', 'rmf', 'rmvb', 'rpm', 'rtf', 'rz',\n 's3m', 's7z', 'scpt', 'sgi', 'shar', 'snap', 'sil', 'sketch', 'slk', 'smv', 'snk', 'so',\n 'stl', 'suo', 'sub', 'swf',\n 'tar', 'tbz', 'tbz2', 'tga', 'tgz', 'thmx', 'tif', 'tiff', 'tlz', 'ttc', 'ttf', 'txz',\n 'udf', 'uvh', 'uvi', 'uvm', 'uvp', 'uvs', 'uvu',\n 'viv', 'vob',\n 'war', 'wav', 'wax', 'wbmp', 'wdp', 'weba', 'webm', 'webp', 'whl', 'wim', 'wm', 'wma',\n 'wmv', 'wmx', 'woff', 'woff2', 'wrm', 'wvx',\n 'xbm', 'xif', 'xla', 'xlam', 'xls', 'xlsb', 'xlsm', 'xlsx', 'xlt', 'xltm', 'xltx', 'xm',\n 'xmind', 'xpi', 'xpm', 'xwd', 'xz',\n 'z', 'zip', 'zipx',\n]);\nconst isBinaryPath = (filePath) => binaryExtensions.has(sysPath.extname(filePath).slice(1).toLowerCase());\n// TODO: emit errors properly. Example: EMFILE on Macos.\nconst foreach = (val, fn) => {\n if (val instanceof Set) {\n val.forEach(fn);\n }\n else {\n fn(val);\n }\n};\nconst addAndConvert = (main, prop, item) => {\n let container = main[prop];\n if (!(container instanceof Set)) {\n main[prop] = container = new Set([container]);\n }\n container.add(item);\n};\nconst clearItem = (cont) => (key) => {\n const set = cont[key];\n if (set instanceof Set) {\n set.clear();\n }\n else {\n delete cont[key];\n }\n};\nconst delFromSet = (main, prop, item) => {\n const container = main[prop];\n if (container instanceof Set) {\n container.delete(item);\n }\n else if (container === item) {\n delete main[prop];\n }\n};\nconst isEmptySet = (val) => (val instanceof Set ? val.size === 0 : !val);\nconst FsWatchInstances = new Map();\n/**\n * Instantiates the fs_watch interface\n * @param path to be watched\n * @param options to be passed to fs_watch\n * @param listener main event handler\n * @param errHandler emits info about errors\n * @param emitRaw emits raw event data\n * @returns {NativeFsWatcher}\n */\nfunction createFsWatchInstance(path, options, listener, errHandler, emitRaw) {\n const handleEvent = (rawEvent, evPath) => {\n listener(path);\n emitRaw(rawEvent, evPath, { watchedPath: path });\n // emit based on events occurring for files from a directory's watcher in\n // case the file's watcher misses it (and rely on throttling to de-dupe)\n if (evPath && path !== evPath) {\n fsWatchBroadcast(sysPath.resolve(path, evPath), KEY_LISTENERS, sysPath.join(path, evPath));\n }\n };\n try {\n return fs_watch(path, {\n persistent: options.persistent,\n }, handleEvent);\n }\n catch (error) {\n errHandler(error);\n return undefined;\n }\n}\n/**\n * Helper for passing fs_watch event data to a collection of listeners\n * @param fullPath absolute path bound to fs_watch instance\n */\nconst fsWatchBroadcast = (fullPath, listenerType, val1, val2, val3) => {\n const cont = FsWatchInstances.get(fullPath);\n if (!cont)\n return;\n foreach(cont[listenerType], (listener) => {\n listener(val1, val2, val3);\n });\n};\n/**\n * Instantiates the fs_watch interface or binds listeners\n * to an existing one covering the same file system entry\n * @param path\n * @param fullPath absolute path\n * @param options to be passed to fs_watch\n * @param handlers container for event listener functions\n */\nconst setFsWatchListener = (path, fullPath, options, handlers) => {\n const { listener, errHandler, rawEmitter } = handlers;\n let cont = FsWatchInstances.get(fullPath);\n let watcher;\n if (!options.persistent) {\n watcher = createFsWatchInstance(path, options, listener, errHandler, rawEmitter);\n if (!watcher)\n return;\n return watcher.close.bind(watcher);\n }\n if (cont) {\n addAndConvert(cont, KEY_LISTENERS, listener);\n addAndConvert(cont, KEY_ERR, errHandler);\n addAndConvert(cont, KEY_RAW, rawEmitter);\n }\n else {\n watcher = createFsWatchInstance(path, options, fsWatchBroadcast.bind(null, fullPath, KEY_LISTENERS), errHandler, // no need to use broadcast here\n fsWatchBroadcast.bind(null, fullPath, KEY_RAW));\n if (!watcher)\n return;\n watcher.on(EV.ERROR, async (error) => {\n const broadcastErr = fsWatchBroadcast.bind(null, fullPath, KEY_ERR);\n if (cont)\n cont.watcherUnusable = true; // documented since Node 10.4.1\n // Workaround for https://github.com/joyent/node/issues/4337\n if (isWindows && error.code === 'EPERM') {\n try {\n const fd = await open(path, 'r');\n await fd.close();\n broadcastErr(error);\n }\n catch (err) {\n // do nothing\n }\n }\n else {\n broadcastErr(error);\n }\n });\n cont = {\n listeners: listener,\n errHandlers: errHandler,\n rawEmitters: rawEmitter,\n watcher,\n };\n FsWatchInstances.set(fullPath, cont);\n }\n // const index = cont.listeners.indexOf(listener);\n // removes this instance's listeners and closes the underlying fs_watch\n // instance if there are no more listeners left\n return () => {\n delFromSet(cont, KEY_LISTENERS, listener);\n delFromSet(cont, KEY_ERR, errHandler);\n delFromSet(cont, KEY_RAW, rawEmitter);\n if (isEmptySet(cont.listeners)) {\n // Check to protect against issue gh-730.\n // if (cont.watcherUnusable) {\n cont.watcher.close();\n // }\n FsWatchInstances.delete(fullPath);\n HANDLER_KEYS.forEach(clearItem(cont));\n // @ts-ignore\n cont.watcher = undefined;\n Object.freeze(cont);\n }\n };\n};\n// fs_watchFile helpers\n// object to hold per-process fs_watchFile instances\n// (may be shared across chokidar FSWatcher instances)\nconst FsWatchFileInstances = new Map();\n/**\n * Instantiates the fs_watchFile interface or binds listeners\n * to an existing one covering the same file system entry\n * @param path to be watched\n * @param fullPath absolute path\n * @param options options to be passed to fs_watchFile\n * @param handlers container for event listener functions\n * @returns closer\n */\nconst setFsWatchFileListener = (path, fullPath, options, handlers) => {\n const { listener, rawEmitter } = handlers;\n let cont = FsWatchFileInstances.get(fullPath);\n // let listeners = new Set();\n // let rawEmitters = new Set();\n const copts = cont && cont.options;\n if (copts && (copts.persistent < options.persistent || copts.interval > options.interval)) {\n // \"Upgrade\" the watcher to persistence or a quicker interval.\n // This creates some unlikely edge case issues if the user mixes\n // settings in a very weird way, but solving for those cases\n // doesn't seem worthwhile for the added complexity.\n // listeners = cont.listeners;\n // rawEmitters = cont.rawEmitters;\n unwatchFile(fullPath);\n cont = undefined;\n }\n if (cont) {\n addAndConvert(cont, KEY_LISTENERS, listener);\n addAndConvert(cont, KEY_RAW, rawEmitter);\n }\n else {\n // TODO\n // listeners.add(listener);\n // rawEmitters.add(rawEmitter);\n cont = {\n listeners: listener,\n rawEmitters: rawEmitter,\n options,\n watcher: watchFile(fullPath, options, (curr, prev) => {\n foreach(cont.rawEmitters, (rawEmitter) => {\n rawEmitter(EV.CHANGE, fullPath, { curr, prev });\n });\n const currmtime = curr.mtimeMs;\n if (curr.size !== prev.size || currmtime > prev.mtimeMs || currmtime === 0) {\n foreach(cont.listeners, (listener) => listener(path, curr));\n }\n }),\n };\n FsWatchFileInstances.set(fullPath, cont);\n }\n // const index = cont.listeners.indexOf(listener);\n // Removes this instance's listeners and closes the underlying fs_watchFile\n // instance if there are no more listeners left.\n return () => {\n delFromSet(cont, KEY_LISTENERS, listener);\n delFromSet(cont, KEY_RAW, rawEmitter);\n if (isEmptySet(cont.listeners)) {\n FsWatchFileInstances.delete(fullPath);\n unwatchFile(fullPath);\n cont.options = cont.watcher = undefined;\n Object.freeze(cont);\n }\n };\n};\n/**\n * @mixin\n */\nexport class NodeFsHandler {\n constructor(fsW) {\n this.fsw = fsW;\n this._boundHandleError = (error) => fsW._handleError(error);\n }\n /**\n * Watch file for changes with fs_watchFile or fs_watch.\n * @param path to file or dir\n * @param listener on fs change\n * @returns closer for the watcher instance\n */\n _watchWithNodeFs(path, listener) {\n const opts = this.fsw.options;\n const directory = sysPath.dirname(path);\n const basename = sysPath.basename(path);\n const parent = this.fsw._getWatchedDir(directory);\n parent.add(basename);\n const absolutePath = sysPath.resolve(path);\n const options = {\n persistent: opts.persistent,\n };\n if (!listener)\n listener = EMPTY_FN;\n let closer;\n if (opts.usePolling) {\n const enableBin = opts.interval !== opts.binaryInterval;\n options.interval = enableBin && isBinaryPath(basename) ? opts.binaryInterval : opts.interval;\n closer = setFsWatchFileListener(path, absolutePath, options, {\n listener,\n rawEmitter: this.fsw._emitRaw,\n });\n }\n else {\n closer = setFsWatchListener(path, absolutePath, options, {\n listener,\n errHandler: this._boundHandleError,\n rawEmitter: this.fsw._emitRaw,\n });\n }\n return closer;\n }\n /**\n * Watch a file and emit add event if warranted.\n * @returns closer for the watcher instance\n */\n _handleFile(file, stats, initialAdd) {\n if (this.fsw.closed) {\n return;\n }\n const dirname = sysPath.dirname(file);\n const basename = sysPath.basename(file);\n const parent = this.fsw._getWatchedDir(dirname);\n // stats is always present\n let prevStats = stats;\n // if the file is already being watched, do nothing\n if (parent.has(basename))\n return;\n const listener = async (path, newStats) => {\n if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file, 5))\n return;\n if (!newStats || newStats.mtimeMs === 0) {\n try {\n const newStats = await stat(file);\n if (this.fsw.closed)\n return;\n // Check that change event was not fired because of changed only accessTime.\n const at = newStats.atimeMs;\n const mt = newStats.mtimeMs;\n if (!at || at <= mt || mt !== prevStats.mtimeMs) {\n this.fsw._emit(EV.CHANGE, file, newStats);\n }\n if ((isMacos || isLinux || isFreeBSD) && prevStats.ino !== newStats.ino) {\n this.fsw._closeFile(path);\n prevStats = newStats;\n const closer = this._watchWithNodeFs(file, listener);\n if (closer)\n this.fsw._addPathCloser(path, closer);\n }\n else {\n prevStats = newStats;\n }\n }\n catch (error) {\n // Fix issues where mtime is null but file is still present\n this.fsw._remove(dirname, basename);\n }\n // add is about to be emitted if file not already tracked in parent\n }\n else if (parent.has(basename)) {\n // Check that change event was not fired because of changed only accessTime.\n const at = newStats.atimeMs;\n const mt = newStats.mtimeMs;\n if (!at || at <= mt || mt !== prevStats.mtimeMs) {\n this.fsw._emit(EV.CHANGE, file, newStats);\n }\n prevStats = newStats;\n }\n };\n // kick off the watcher\n const closer = this._watchWithNodeFs(file, listener);\n // emit an add event if we're supposed to\n if (!(initialAdd && this.fsw.options.ignoreInitial) && this.fsw._isntIgnored(file)) {\n if (!this.fsw._throttle(EV.ADD, file, 0))\n return;\n this.fsw._emit(EV.ADD, file, stats);\n }\n return closer;\n }\n /**\n * Handle symlinks encountered while reading a dir.\n * @param entry returned by readdirp\n * @param directory path of dir being read\n * @param path of this item\n * @param item basename of this item\n * @returns true if no more processing is needed for this entry.\n */\n async _handleSymlink(entry, directory, path, item) {\n if (this.fsw.closed) {\n return;\n }\n const full = entry.fullPath;\n const dir = this.fsw._getWatchedDir(directory);\n if (!this.fsw.options.followSymlinks) {\n // watch symlink directly (don't follow) and detect changes\n this.fsw._incrReadyCount();\n let linkPath;\n try {\n linkPath = await fsrealpath(path);\n }\n catch (e) {\n this.fsw._emitReady();\n return true;\n }\n if (this.fsw.closed)\n return;\n if (dir.has(item)) {\n if (this.fsw._symlinkPaths.get(full) !== linkPath) {\n this.fsw._symlinkPaths.set(full, linkPath);\n this.fsw._emit(EV.CHANGE, path, entry.stats);\n }\n }\n else {\n dir.add(item);\n this.fsw._symlinkPaths.set(full, linkPath);\n this.fsw._emit(EV.ADD, path, entry.stats);\n }\n this.fsw._emitReady();\n return true;\n }\n // don't follow the same symlink more than once\n if (this.fsw._symlinkPaths.has(full)) {\n return true;\n }\n this.fsw._symlinkPaths.set(full, true);\n }\n _handleRead(directory, initialAdd, wh, target, dir, depth, throttler) {\n // Normalize the directory name on Windows\n directory = sysPath.join(directory, '');\n throttler = this.fsw._throttle('readdir', directory, 1000);\n if (!throttler)\n return;\n const previous = this.fsw._getWatchedDir(wh.path);\n const current = new Set();\n let stream = this.fsw._readdirp(directory, {\n fileFilter: (entry) => wh.filterPath(entry),\n directoryFilter: (entry) => wh.filterDir(entry),\n });\n if (!stream)\n return;\n stream\n .on(STR_DATA, async (entry) => {\n if (this.fsw.closed) {\n stream = undefined;\n return;\n }\n const item = entry.path;\n let path = sysPath.join(directory, item);\n current.add(item);\n if (entry.stats.isSymbolicLink() &&\n (await this._handleSymlink(entry, directory, path, item))) {\n return;\n }\n if (this.fsw.closed) {\n stream = undefined;\n return;\n }\n // Files that present in current directory snapshot\n // but absent in previous are added to watch list and\n // emit `add` event.\n if (item === target || (!target && !previous.has(item))) {\n this.fsw._incrReadyCount();\n // ensure relativeness of path is preserved in case of watcher reuse\n path = sysPath.join(dir, sysPath.relative(dir, path));\n this._addToNodeFs(path, initialAdd, wh, depth + 1);\n }\n })\n .on(EV.ERROR, this._boundHandleError);\n return new Promise((resolve, reject) => {\n if (!stream)\n return reject();\n stream.once(STR_END, () => {\n if (this.fsw.closed) {\n stream = undefined;\n return;\n }\n const wasThrottled = throttler ? throttler.clear() : false;\n resolve(undefined);\n // Files that absent in current directory snapshot\n // but present in previous emit `remove` event\n // and are removed from @watched[directory].\n previous\n .getChildren()\n .filter((item) => {\n return item !== directory && !current.has(item);\n })\n .forEach((item) => {\n this.fsw._remove(directory, item);\n });\n stream = undefined;\n // one more time for any missed in case changes came in extremely quickly\n if (wasThrottled)\n this._handleRead(directory, false, wh, target, dir, depth, throttler);\n });\n });\n }\n /**\n * Read directory to add / remove files from `@watched` list and re-read it on change.\n * @param dir fs path\n * @param stats\n * @param initialAdd\n * @param depth relative to user-supplied path\n * @param target child path targeted for watch\n * @param wh Common watch helpers for this path\n * @param realpath\n * @returns closer for the watcher instance.\n */\n async _handleDir(dir, stats, initialAdd, depth, target, wh, realpath) {\n const parentDir = this.fsw._getWatchedDir(sysPath.dirname(dir));\n const tracked = parentDir.has(sysPath.basename(dir));\n if (!(initialAdd && this.fsw.options.ignoreInitial) && !target && !tracked) {\n this.fsw._emit(EV.ADD_DIR, dir, stats);\n }\n // ensure dir is tracked (harmless if redundant)\n parentDir.add(sysPath.basename(dir));\n this.fsw._getWatchedDir(dir);\n let throttler;\n let closer;\n const oDepth = this.fsw.options.depth;\n if ((oDepth == null || depth <= oDepth) && !this.fsw._symlinkPaths.has(realpath)) {\n if (!target) {\n await this._handleRead(dir, initialAdd, wh, target, dir, depth, throttler);\n if (this.fsw.closed)\n return;\n }\n closer = this._watchWithNodeFs(dir, (dirPath, stats) => {\n // if current directory is removed, do nothing\n if (stats && stats.mtimeMs === 0)\n return;\n this._handleRead(dirPath, false, wh, target, dir, depth, throttler);\n });\n }\n return closer;\n }\n /**\n * Handle added file, directory, or glob pattern.\n * Delegates call to _handleFile / _handleDir after checks.\n * @param path to file or ir\n * @param initialAdd was the file added at watch instantiation?\n * @param priorWh depth relative to user-supplied path\n * @param depth Child path actually targeted for watch\n * @param target Child path actually targeted for watch\n */\n async _addToNodeFs(path, initialAdd, priorWh, depth, target) {\n const ready = this.fsw._emitReady;\n if (this.fsw._isIgnored(path) || this.fsw.closed) {\n ready();\n return false;\n }\n const wh = this.fsw._getWatchHelpers(path);\n if (priorWh) {\n wh.filterPath = (entry) => priorWh.filterPath(entry);\n wh.filterDir = (entry) => priorWh.filterDir(entry);\n }\n // evaluate what is at the path we're being asked to watch\n try {\n const stats = await statMethods[wh.statMethod](wh.watchPath);\n if (this.fsw.closed)\n return;\n if (this.fsw._isIgnored(wh.watchPath, stats)) {\n ready();\n return false;\n }\n const follow = this.fsw.options.followSymlinks;\n let closer;\n if (stats.isDirectory()) {\n const absPath = sysPath.resolve(path);\n const targetPath = follow ? await fsrealpath(path) : path;\n if (this.fsw.closed)\n return;\n closer = await this._handleDir(wh.watchPath, stats, initialAdd, depth, target, wh, targetPath);\n if (this.fsw.closed)\n return;\n // preserve this symlink's target path\n if (absPath !== targetPath && targetPath !== undefined) {\n this.fsw._symlinkPaths.set(absPath, targetPath);\n }\n }\n else if (stats.isSymbolicLink()) {\n const targetPath = follow ? await fsrealpath(path) : path;\n if (this.fsw.closed)\n return;\n const parent = sysPath.dirname(wh.watchPath);\n this.fsw._getWatchedDir(parent).add(wh.watchPath);\n this.fsw._emit(EV.ADD, wh.watchPath, stats);\n closer = await this._handleDir(parent, stats, initialAdd, depth, path, wh, targetPath);\n if (this.fsw.closed)\n return;\n // preserve this symlink's target path\n if (targetPath !== undefined) {\n this.fsw._symlinkPaths.set(sysPath.resolve(path), targetPath);\n }\n }\n else {\n closer = this._handleFile(wh.watchPath, stats, initialAdd);\n }\n ready();\n if (closer)\n this.fsw._addPathCloser(path, closer);\n return false;\n }\n catch (error) {\n if (this.fsw._handleError(error)) {\n ready();\n return path;\n }\n }\n }\n}\n","/*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */\nimport { stat as statcb } from 'fs';\nimport { stat, readdir } from 'fs/promises';\nimport { EventEmitter } from 'events';\nimport * as sysPath from 'path';\nimport { readdirp } from 'readdirp';\nimport { NodeFsHandler, EVENTS as EV, isWindows, isIBMi, EMPTY_FN, STR_CLOSE, STR_END, } from './handler.js';\nconst SLASH = '/';\nconst SLASH_SLASH = '//';\nconst ONE_DOT = '.';\nconst TWO_DOTS = '..';\nconst STRING_TYPE = 'string';\nconst BACK_SLASH_RE = /\\\\/g;\nconst DOUBLE_SLASH_RE = /\\/\\//;\nconst DOT_RE = /\\..*\\.(sw[px])$|~$|\\.subl.*\\.tmp/;\nconst REPLACER_RE = /^\\.[/\\\\]/;\nfunction arrify(item) {\n return Array.isArray(item) ? item : [item];\n}\nconst isMatcherObject = (matcher) => typeof matcher === 'object' && matcher !== null && !(matcher instanceof RegExp);\nfunction createPattern(matcher) {\n if (typeof matcher === 'function')\n return matcher;\n if (typeof matcher === 'string')\n return (string) => matcher === string;\n if (matcher instanceof RegExp)\n return (string) => matcher.test(string);\n if (typeof matcher === 'object' && matcher !== null) {\n return (string) => {\n if (matcher.path === string)\n return true;\n if (matcher.recursive) {\n const relative = sysPath.relative(matcher.path, string);\n if (!relative) {\n return false;\n }\n return !relative.startsWith('..') && !sysPath.isAbsolute(relative);\n }\n return false;\n };\n }\n return () => false;\n}\nfunction normalizePath(path) {\n if (typeof path !== 'string')\n throw new Error('string expected');\n path = sysPath.normalize(path);\n path = path.replace(/\\\\/g, '/');\n let prepend = false;\n if (path.startsWith('//'))\n prepend = true;\n const DOUBLE_SLASH_RE = /\\/\\//;\n while (path.match(DOUBLE_SLASH_RE))\n path = path.replace(DOUBLE_SLASH_RE, '/');\n if (prepend)\n path = '/' + path;\n return path;\n}\nfunction matchPatterns(patterns, testString, stats) {\n const path = normalizePath(testString);\n for (let index = 0; index < patterns.length; index++) {\n const pattern = patterns[index];\n if (pattern(path, stats)) {\n return true;\n }\n }\n return false;\n}\nfunction anymatch(matchers, testString) {\n if (matchers == null) {\n throw new TypeError('anymatch: specify first argument');\n }\n // Early cache for matchers.\n const matchersArray = arrify(matchers);\n const patterns = matchersArray.map((matcher) => createPattern(matcher));\n if (testString == null) {\n return (testString, stats) => {\n return matchPatterns(patterns, testString, stats);\n };\n }\n return matchPatterns(patterns, testString);\n}\nconst unifyPaths = (paths_) => {\n const paths = arrify(paths_).flat();\n if (!paths.every((p) => typeof p === STRING_TYPE)) {\n throw new TypeError(`Non-string provided as watch path: ${paths}`);\n }\n return paths.map(normalizePathToUnix);\n};\n// If SLASH_SLASH occurs at the beginning of path, it is not replaced\n// because \"//StoragePC/DrivePool/Movies\" is a valid network path\nconst toUnix = (string) => {\n let str = string.replace(BACK_SLASH_RE, SLASH);\n let prepend = false;\n if (str.startsWith(SLASH_SLASH)) {\n prepend = true;\n }\n while (str.match(DOUBLE_SLASH_RE)) {\n str = str.replace(DOUBLE_SLASH_RE, SLASH);\n }\n if (prepend) {\n str = SLASH + str;\n }\n return str;\n};\n// Our version of upath.normalize\n// TODO: this is not equal to path-normalize module - investigate why\nconst normalizePathToUnix = (path) => toUnix(sysPath.normalize(toUnix(path)));\n// TODO: refactor\nconst normalizeIgnored = (cwd = '') => (path) => {\n if (typeof path === 'string') {\n return normalizePathToUnix(sysPath.isAbsolute(path) ? path : sysPath.join(cwd, path));\n }\n else {\n return path;\n }\n};\nconst getAbsolutePath = (path, cwd) => {\n if (sysPath.isAbsolute(path)) {\n return path;\n }\n return sysPath.join(cwd, path);\n};\nconst EMPTY_SET = Object.freeze(new Set());\n/**\n * Directory entry.\n */\nclass DirEntry {\n constructor(dir, removeWatcher) {\n this.path = dir;\n this._removeWatcher = removeWatcher;\n this.items = new Set();\n }\n add(item) {\n const { items } = this;\n if (!items)\n return;\n if (item !== ONE_DOT && item !== TWO_DOTS)\n items.add(item);\n }\n async remove(item) {\n const { items } = this;\n if (!items)\n return;\n items.delete(item);\n if (items.size > 0)\n return;\n const dir = this.path;\n try {\n await readdir(dir);\n }\n catch (err) {\n if (this._removeWatcher) {\n this._removeWatcher(sysPath.dirname(dir), sysPath.basename(dir));\n }\n }\n }\n has(item) {\n const { items } = this;\n if (!items)\n return;\n return items.has(item);\n }\n getChildren() {\n const { items } = this;\n if (!items)\n return [];\n return [...items.values()];\n }\n dispose() {\n this.items.clear();\n this.path = '';\n this._removeWatcher = EMPTY_FN;\n this.items = EMPTY_SET;\n Object.freeze(this);\n }\n}\nconst STAT_METHOD_F = 'stat';\nconst STAT_METHOD_L = 'lstat';\nexport class WatchHelper {\n constructor(path, follow, fsw) {\n this.fsw = fsw;\n const watchPath = path;\n this.path = path = path.replace(REPLACER_RE, '');\n this.watchPath = watchPath;\n this.fullWatchPath = sysPath.resolve(watchPath);\n this.dirParts = [];\n this.dirParts.forEach((parts) => {\n if (parts.length > 1)\n parts.pop();\n });\n this.followSymlinks = follow;\n this.statMethod = follow ? STAT_METHOD_F : STAT_METHOD_L;\n }\n entryPath(entry) {\n return sysPath.join(this.watchPath, sysPath.relative(this.watchPath, entry.fullPath));\n }\n filterPath(entry) {\n const { stats } = entry;\n if (stats && stats.isSymbolicLink())\n return this.filterDir(entry);\n const resolvedPath = this.entryPath(entry);\n // TODO: what if stats is undefined? remove !\n return this.fsw._isntIgnored(resolvedPath, stats) && this.fsw._hasReadPermissions(stats);\n }\n filterDir(entry) {\n return this.fsw._isntIgnored(this.entryPath(entry), entry.stats);\n }\n}\n/**\n * Watches files & directories for changes. Emitted events:\n * `add`, `addDir`, `change`, `unlink`, `unlinkDir`, `all`, `error`\n *\n * new FSWatcher()\n * .add(directories)\n * .on('add', path => log('File', path, 'was added'))\n */\nexport class FSWatcher extends EventEmitter {\n // Not indenting methods for history sake; for now.\n constructor(_opts = {}) {\n super();\n this.closed = false;\n this._closers = new Map();\n this._ignoredPaths = new Set();\n this._throttled = new Map();\n this._streams = new Set();\n this._symlinkPaths = new Map();\n this._watched = new Map();\n this._pendingWrites = new Map();\n this._pendingUnlinks = new Map();\n this._readyCount = 0;\n this._readyEmitted = false;\n const awf = _opts.awaitWriteFinish;\n const DEF_AWF = { stabilityThreshold: 2000, pollInterval: 100 };\n const opts = {\n // Defaults\n persistent: true,\n ignoreInitial: false,\n ignorePermissionErrors: false,\n interval: 100,\n binaryInterval: 300,\n followSymlinks: true,\n usePolling: false,\n // useAsync: false,\n atomic: true, // NOTE: overwritten later (depends on usePolling)\n ..._opts,\n // Change format\n ignored: _opts.ignored ? arrify(_opts.ignored) : arrify([]),\n awaitWriteFinish: awf === true ? DEF_AWF : typeof awf === 'object' ? { ...DEF_AWF, ...awf } : false,\n };\n // Always default to polling on IBM i because fs.watch() is not available on IBM i.\n if (isIBMi)\n opts.usePolling = true;\n // Editor atomic write normalization enabled by default with fs.watch\n if (opts.atomic === undefined)\n opts.atomic = !opts.usePolling;\n // opts.atomic = typeof _opts.atomic === 'number' ? _opts.atomic : 100;\n // Global override. Useful for developers, who need to force polling for all\n // instances of chokidar, regardless of usage / dependency depth\n const envPoll = process.env.CHOKIDAR_USEPOLLING;\n if (envPoll !== undefined) {\n const envLower = envPoll.toLowerCase();\n if (envLower === 'false' || envLower === '0')\n opts.usePolling = false;\n else if (envLower === 'true' || envLower === '1')\n opts.usePolling = true;\n else\n opts.usePolling = !!envLower;\n }\n const envInterval = process.env.CHOKIDAR_INTERVAL;\n if (envInterval)\n opts.interval = Number.parseInt(envInterval, 10);\n // This is done to emit ready only once, but each 'add' will increase that?\n let readyCalls = 0;\n this._emitReady = () => {\n readyCalls++;\n if (readyCalls >= this._readyCount) {\n this._emitReady = EMPTY_FN;\n this._readyEmitted = true;\n // use process.nextTick to allow time for listener to be bound\n process.nextTick(() => this.emit(EV.READY));\n }\n };\n this._emitRaw = (...args) => this.emit(EV.RAW, ...args);\n this._boundRemove = this._remove.bind(this);\n this.options = opts;\n this._nodeFsHandler = new NodeFsHandler(this);\n // You’re frozen when your heart’s not open.\n Object.freeze(opts);\n }\n _addIgnoredPath(matcher) {\n if (isMatcherObject(matcher)) {\n // return early if we already have a deeply equal matcher object\n for (const ignored of this._ignoredPaths) {\n if (isMatcherObject(ignored) &&\n ignored.path === matcher.path &&\n ignored.recursive === matcher.recursive) {\n return;\n }\n }\n }\n this._ignoredPaths.add(matcher);\n }\n _removeIgnoredPath(matcher) {\n this._ignoredPaths.delete(matcher);\n // now find any matcher objects with the matcher as path\n if (typeof matcher === 'string') {\n for (const ignored of this._ignoredPaths) {\n // TODO (43081j): make this more efficient.\n // probably just make a `this._ignoredDirectories` or some\n // such thing.\n if (isMatcherObject(ignored) && ignored.path === matcher) {\n this._ignoredPaths.delete(ignored);\n }\n }\n }\n }\n // Public methods\n /**\n * Adds paths to be watched on an existing FSWatcher instance.\n * @param paths_ file or file list. Other arguments are unused\n */\n add(paths_, _origAdd, _internal) {\n const { cwd } = this.options;\n this.closed = false;\n this._closePromise = undefined;\n let paths = unifyPaths(paths_);\n if (cwd) {\n paths = paths.map((path) => {\n const absPath = getAbsolutePath(path, cwd);\n // Check `path` instead of `absPath` because the cwd portion can't be a glob\n return absPath;\n });\n }\n paths.forEach((path) => {\n this._removeIgnoredPath(path);\n });\n this._userIgnored = undefined;\n if (!this._readyCount)\n this._readyCount = 0;\n this._readyCount += paths.length;\n Promise.all(paths.map(async (path) => {\n const res = await this._nodeFsHandler._addToNodeFs(path, !_internal, undefined, 0, _origAdd);\n if (res)\n this._emitReady();\n return res;\n })).then((results) => {\n if (this.closed)\n return;\n results.forEach((item) => {\n if (item)\n this.add(sysPath.dirname(item), sysPath.basename(_origAdd || item));\n });\n });\n return this;\n }\n /**\n * Close watchers or start ignoring events from specified paths.\n */\n unwatch(paths_) {\n if (this.closed)\n return this;\n const paths = unifyPaths(paths_);\n const { cwd } = this.options;\n paths.forEach((path) => {\n // convert to absolute path unless relative path already matches\n if (!sysPath.isAbsolute(path) && !this._closers.has(path)) {\n if (cwd)\n path = sysPath.join(cwd, path);\n path = sysPath.resolve(path);\n }\n this._closePath(path);\n this._addIgnoredPath(path);\n if (this._watched.has(path)) {\n this._addIgnoredPath({\n path,\n recursive: true,\n });\n }\n // reset the cached userIgnored anymatch fn\n // to make ignoredPaths changes effective\n this._userIgnored = undefined;\n });\n return this;\n }\n /**\n * Close watchers and remove all listeners from watched paths.\n */\n close() {\n if (this._closePromise) {\n return this._closePromise;\n }\n this.closed = true;\n // Memory management.\n this.removeAllListeners();\n const closers = [];\n this._closers.forEach((closerList) => closerList.forEach((closer) => {\n const promise = closer();\n if (promise instanceof Promise)\n closers.push(promise);\n }));\n this._streams.forEach((stream) => stream.destroy());\n this._userIgnored = undefined;\n this._readyCount = 0;\n this._readyEmitted = false;\n this._watched.forEach((dirent) => dirent.dispose());\n this._closers.clear();\n this._watched.clear();\n this._streams.clear();\n this._symlinkPaths.clear();\n this._throttled.clear();\n this._closePromise = closers.length\n ? Promise.all(closers).then(() => undefined)\n : Promise.resolve();\n return this._closePromise;\n }\n /**\n * Expose list of watched paths\n * @returns for chaining\n */\n getWatched() {\n const watchList = {};\n this._watched.forEach((entry, dir) => {\n const key = this.options.cwd ? sysPath.relative(this.options.cwd, dir) : dir;\n const index = key || ONE_DOT;\n watchList[index] = entry.getChildren().sort();\n });\n return watchList;\n }\n emitWithAll(event, args) {\n this.emit(event, ...args);\n if (event !== EV.ERROR)\n this.emit(EV.ALL, event, ...args);\n }\n // Common helpers\n // --------------\n /**\n * Normalize and emit events.\n * Calling _emit DOES NOT MEAN emit() would be called!\n * @param event Type of event\n * @param path File or directory path\n * @param stats arguments to be passed with event\n * @returns the error if defined, otherwise the value of the FSWatcher instance's `closed` flag\n */\n async _emit(event, path, stats) {\n if (this.closed)\n return;\n const opts = this.options;\n if (isWindows)\n path = sysPath.normalize(path);\n if (opts.cwd)\n path = sysPath.relative(opts.cwd, path);\n const args = [path];\n if (stats != null)\n args.push(stats);\n const awf = opts.awaitWriteFinish;\n let pw;\n if (awf && (pw = this._pendingWrites.get(path))) {\n pw.lastChange = new Date();\n return this;\n }\n if (opts.atomic) {\n if (event === EV.UNLINK) {\n this._pendingUnlinks.set(path, [event, ...args]);\n setTimeout(() => {\n this._pendingUnlinks.forEach((entry, path) => {\n this.emit(...entry);\n this.emit(EV.ALL, ...entry);\n this._pendingUnlinks.delete(path);\n });\n }, typeof opts.atomic === 'number' ? opts.atomic : 100);\n return this;\n }\n if (event === EV.ADD && this._pendingUnlinks.has(path)) {\n event = EV.CHANGE;\n this._pendingUnlinks.delete(path);\n }\n }\n if (awf && (event === EV.ADD || event === EV.CHANGE) && this._readyEmitted) {\n const awfEmit = (err, stats) => {\n if (err) {\n event = EV.ERROR;\n args[0] = err;\n this.emitWithAll(event, args);\n }\n else if (stats) {\n // if stats doesn't exist the file must have been deleted\n if (args.length > 1) {\n args[1] = stats;\n }\n else {\n args.push(stats);\n }\n this.emitWithAll(event, args);\n }\n };\n this._awaitWriteFinish(path, awf.stabilityThreshold, event, awfEmit);\n return this;\n }\n if (event === EV.CHANGE) {\n const isThrottled = !this._throttle(EV.CHANGE, path, 50);\n if (isThrottled)\n return this;\n }\n if (opts.alwaysStat &&\n stats === undefined &&\n (event === EV.ADD || event === EV.ADD_DIR || event === EV.CHANGE)) {\n const fullPath = opts.cwd ? sysPath.join(opts.cwd, path) : path;\n let stats;\n try {\n stats = await stat(fullPath);\n }\n catch (err) {\n // do nothing\n }\n // Suppress event when fs_stat fails, to avoid sending undefined 'stat'\n if (!stats || this.closed)\n return;\n args.push(stats);\n }\n this.emitWithAll(event, args);\n return this;\n }\n /**\n * Common handler for errors\n * @returns The error if defined, otherwise the value of the FSWatcher instance's `closed` flag\n */\n _handleError(error) {\n const code = error && error.code;\n if (error &&\n code !== 'ENOENT' &&\n code !== 'ENOTDIR' &&\n (!this.options.ignorePermissionErrors || (code !== 'EPERM' && code !== 'EACCES'))) {\n this.emit(EV.ERROR, error);\n }\n return error || this.closed;\n }\n /**\n * Helper utility for throttling\n * @param actionType type being throttled\n * @param path being acted upon\n * @param timeout duration of time to suppress duplicate actions\n * @returns tracking object or false if action should be suppressed\n */\n _throttle(actionType, path, timeout) {\n if (!this._throttled.has(actionType)) {\n this._throttled.set(actionType, new Map());\n }\n const action = this._throttled.get(actionType);\n if (!action)\n throw new Error('invalid throttle');\n const actionPath = action.get(path);\n if (actionPath) {\n actionPath.count++;\n return false;\n }\n // eslint-disable-next-line prefer-const\n let timeoutObject;\n const clear = () => {\n const item = action.get(path);\n const count = item ? item.count : 0;\n action.delete(path);\n clearTimeout(timeoutObject);\n if (item)\n clearTimeout(item.timeoutObject);\n return count;\n };\n timeoutObject = setTimeout(clear, timeout);\n const thr = { timeoutObject, clear, count: 0 };\n action.set(path, thr);\n return thr;\n }\n _incrReadyCount() {\n return this._readyCount++;\n }\n /**\n * Awaits write operation to finish.\n * Polls a newly created file for size variations. When files size does not change for 'threshold' milliseconds calls callback.\n * @param path being acted upon\n * @param threshold Time in milliseconds a file size must be fixed before acknowledging write OP is finished\n * @param event\n * @param awfEmit Callback to be called when ready for event to be emitted.\n */\n _awaitWriteFinish(path, threshold, event, awfEmit) {\n const awf = this.options.awaitWriteFinish;\n if (typeof awf !== 'object')\n return;\n const pollInterval = awf.pollInterval;\n let timeoutHandler;\n let fullPath = path;\n if (this.options.cwd && !sysPath.isAbsolute(path)) {\n fullPath = sysPath.join(this.options.cwd, path);\n }\n const now = new Date();\n const writes = this._pendingWrites;\n function awaitWriteFinishFn(prevStat) {\n statcb(fullPath, (err, curStat) => {\n if (err || !writes.has(path)) {\n if (err && err.code !== 'ENOENT')\n awfEmit(err);\n return;\n }\n const now = Number(new Date());\n if (prevStat && curStat.size !== prevStat.size) {\n writes.get(path).lastChange = now;\n }\n const pw = writes.get(path);\n const df = now - pw.lastChange;\n if (df >= threshold) {\n writes.delete(path);\n awfEmit(undefined, curStat);\n }\n else {\n timeoutHandler = setTimeout(awaitWriteFinishFn, pollInterval, curStat);\n }\n });\n }\n if (!writes.has(path)) {\n writes.set(path, {\n lastChange: now,\n cancelWait: () => {\n writes.delete(path);\n clearTimeout(timeoutHandler);\n return event;\n },\n });\n timeoutHandler = setTimeout(awaitWriteFinishFn, pollInterval);\n }\n }\n /**\n * Determines whether user has asked to ignore this path.\n */\n _isIgnored(path, stats) {\n if (this.options.atomic && DOT_RE.test(path))\n return true;\n if (!this._userIgnored) {\n const { cwd } = this.options;\n const ign = this.options.ignored;\n const ignored = (ign || []).map(normalizeIgnored(cwd));\n const ignoredPaths = [...this._ignoredPaths];\n const list = [...ignoredPaths.map(normalizeIgnored(cwd)), ...ignored];\n this._userIgnored = anymatch(list, undefined);\n }\n return this._userIgnored(path, stats);\n }\n _isntIgnored(path, stat) {\n return !this._isIgnored(path, stat);\n }\n /**\n * Provides a set of common helpers and properties relating to symlink handling.\n * @param path file or directory pattern being watched\n */\n _getWatchHelpers(path) {\n return new WatchHelper(path, this.options.followSymlinks, this);\n }\n // Directory helpers\n // -----------------\n /**\n * Provides directory tracking objects\n * @param directory path of the directory\n */\n _getWatchedDir(directory) {\n const dir = sysPath.resolve(directory);\n if (!this._watched.has(dir))\n this._watched.set(dir, new DirEntry(dir, this._boundRemove));\n return this._watched.get(dir);\n }\n // File helpers\n // ------------\n /**\n * Check for read permissions: https://stackoverflow.com/a/11781404/1358405\n */\n _hasReadPermissions(stats) {\n if (this.options.ignorePermissionErrors)\n return true;\n return Boolean(Number(stats.mode) & 0o400);\n }\n /**\n * Handles emitting unlink events for\n * files and directories, and via recursion, for\n * files and directories within directories that are unlinked\n * @param directory within which the following item is located\n * @param item base path of item/directory\n */\n _remove(directory, item, isDirectory) {\n // if what is being deleted is a directory, get that directory's paths\n // for recursive deleting and cleaning of watched object\n // if it is not a directory, nestedDirectoryChildren will be empty array\n const path = sysPath.join(directory, item);\n const fullPath = sysPath.resolve(path);\n isDirectory =\n isDirectory != null ? isDirectory : this._watched.has(path) || this._watched.has(fullPath);\n // prevent duplicate handling in case of arriving here nearly simultaneously\n // via multiple paths (such as _handleFile and _handleDir)\n if (!this._throttle('remove', path, 100))\n return;\n // if the only watched file is removed, watch for its return\n if (!isDirectory && this._watched.size === 1) {\n this.add(directory, item, true);\n }\n // This will create a new entry in the watched object in either case\n // so we got to do the directory check beforehand\n const wp = this._getWatchedDir(path);\n const nestedDirectoryChildren = wp.getChildren();\n // Recursively remove children directories / files.\n nestedDirectoryChildren.forEach((nested) => this._remove(path, nested));\n // Check if item was on the watched list and remove it\n const parent = this._getWatchedDir(directory);\n const wasTracked = parent.has(item);\n parent.remove(item);\n // Fixes issue #1042 -> Relative paths were detected and added as symlinks\n // (https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L612),\n // but never removed from the map in case the path was deleted.\n // This leads to an incorrect state if the path was recreated:\n // https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L553\n if (this._symlinkPaths.has(fullPath)) {\n this._symlinkPaths.delete(fullPath);\n }\n // If we wait for this file to be fully written, cancel the wait.\n let relPath = path;\n if (this.options.cwd)\n relPath = sysPath.relative(this.options.cwd, path);\n if (this.options.awaitWriteFinish && this._pendingWrites.has(relPath)) {\n const event = this._pendingWrites.get(relPath).cancelWait();\n if (event === EV.ADD)\n return;\n }\n // The Entry will either be a directory that just got removed\n // or a bogus entry to a file, in either case we have to remove it\n this._watched.delete(path);\n this._watched.delete(fullPath);\n const eventName = isDirectory ? EV.UNLINK_DIR : EV.UNLINK;\n if (wasTracked && !this._isIgnored(path))\n this._emit(eventName, path);\n // Avoid conflicts if we later create another file with the same name\n this._closePath(path);\n }\n /**\n * Closes all watchers for a path\n */\n _closePath(path) {\n this._closeFile(path);\n const dir = sysPath.dirname(path);\n this._getWatchedDir(dir).remove(sysPath.basename(path));\n }\n /**\n * Closes only file-specific watchers\n */\n _closeFile(path) {\n const closers = this._closers.get(path);\n if (!closers)\n return;\n closers.forEach((closer) => closer());\n this._closers.delete(path);\n }\n _addPathCloser(path, closer) {\n if (!closer)\n return;\n let list = this._closers.get(path);\n if (!list) {\n list = [];\n this._closers.set(path, list);\n }\n list.push(closer);\n }\n _readdirp(root, opts) {\n if (this.closed)\n return;\n const options = { type: EV.ALL, alwaysStat: true, lstat: true, ...opts, depth: 0 };\n let stream = readdirp(root, options);\n this._streams.add(stream);\n stream.once(STR_CLOSE, () => {\n stream = undefined;\n });\n stream.once(STR_END, () => {\n if (stream) {\n this._streams.delete(stream);\n stream = undefined;\n }\n });\n return stream;\n }\n}\n/**\n * Instantiates watcher with paths to be tracked.\n * @param paths file / directory paths\n * @param options opts, such as `atomic`, `awaitWriteFinish`, `ignored`, and others\n * @returns an instance of FSWatcher for chaining.\n * @example\n * const watcher = watch('.').on('all', (event, path) => { console.log(event, path); });\n * watch('.', { atomic: true, awaitWriteFinish: true, ignored: (f, stats) => stats?.isFile() && !f.endsWith('.js') })\n */\nexport function watch(paths, options = {}) {\n const watcher = new FSWatcher(options);\n watcher.add(paths);\n return watcher;\n}\nexport default { watch, FSWatcher };\n","'use strict';\n\nconst BINARY_TYPES = ['nodebuffer', 'arraybuffer', 'fragments'];\nconst hasBlob = typeof Blob !== 'undefined';\n\nif (hasBlob) BINARY_TYPES.push('blob');\n\nmodule.exports = {\n BINARY_TYPES,\n CLOSE_TIMEOUT: 30000,\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n hasBlob,\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n","'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) {\n return new FastBuffer(target.buffer, target.byteOffset, offset);\n }\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.length === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = new FastBuffer(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n","'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n","'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {Boolean} [options.isServer=false] Create the instance in either\n * server or client mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n */\n constructor(options) {\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._maxPayload = this._options.maxPayload | 0;\n this._isServer = !!this._options.isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) {\n data = new FastBuffer(data.buffer, data.byteOffset, data.length - 4);\n }\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n\n //\n // The choice to employ `zlib.reset()` over `zlib.close()` is dictated by the\n // fact that in Node.js versions prior to 13.10.0, the callback for\n // `zlib.flush()` is not called if `zlib.close()` is used. Utilizing\n // `zlib.reset()` ensures that either the callback is invoked or an error is\n // emitted.\n //\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n\n if (this[kError]) {\n this[kCallback](this[kError]);\n return;\n }\n\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n","'use strict';\n\nconst { isUtf8 } = require('buffer');\n\nconst { hasBlob } = require('./constants');\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Determines whether a value is a `Blob`.\n *\n * @param {*} value The value to be tested\n * @return {Boolean} `true` if `value` is a `Blob`, else `false`\n * @private\n */\nfunction isBlob(value) {\n return (\n hasBlob &&\n typeof value === 'object' &&\n typeof value.arrayBuffer === 'function' &&\n typeof value.type === 'string' &&\n typeof value.stream === 'function' &&\n (value[Symbol.toStringTag] === 'Blob' ||\n value[Symbol.toStringTag] === 'File')\n );\n}\n\nmodule.exports = {\n isBlob,\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n};\n\nif (isUtf8) {\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);\n };\n} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {\n try {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n","'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst FastBuffer = Buffer[Symbol.species];\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\nconst DEFER_EVENT = 6;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._allowSynchronousEvents =\n options.allowSynchronousEvents !== undefined\n ? options.allowSynchronousEvents\n : true;\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._errored = false;\n this._loop = false;\n this._state = GET_INFO;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n\n return new FastBuffer(buf.buffer, buf.byteOffset, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n this.getInfo(cb);\n break;\n case GET_PAYLOAD_LENGTH_16:\n this.getPayloadLength16(cb);\n break;\n case GET_PAYLOAD_LENGTH_64:\n this.getPayloadLength64(cb);\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n this.getData(cb);\n break;\n case INFLATING:\n case DEFER_EVENT:\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n if (!this._errored) cb();\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @param {Function} cb Callback\n * @private\n */\n getInfo(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n const error = this.createError(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n\n cb(error);\n return;\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fragmented) {\n const error = this.createError(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n const error = this.createError(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n\n cb(error);\n return;\n }\n\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (\n this._payloadLength > 0x7d ||\n (this._opcode === 0x08 && this._payloadLength === 1)\n ) {\n const error = this.createError(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n } else {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n } else if (this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength16(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength64(cb) {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n const error = this.createError(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n this.haveLength(cb);\n }\n\n /**\n * Payload length has been read.\n *\n * @param {Function} cb Callback\n * @private\n */\n haveLength(cb) {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) {\n this.controlMessage(data, cb);\n return;\n }\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n this.dataMessage(cb);\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._fragments.push(buf);\n }\n\n this.dataMessage(cb);\n if (this._state === GET_INFO) this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @param {Function} cb Callback\n * @private\n */\n dataMessage(cb) {\n if (!this._fin) {\n this._state = GET_INFO;\n return;\n }\n\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else if (this._binaryType === 'blob') {\n data = new Blob(fragments);\n } else {\n data = fragments;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit('message', data, true);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', data, true);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n if (this._state === INFLATING || this._allowSynchronousEvents) {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data, cb) {\n if (this._opcode === 0x08) {\n if (data.length === 0) {\n this._loop = false;\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n const error = this.createError(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n\n cb(error);\n return;\n }\n\n const buf = new FastBuffer(\n data.buffer,\n data.byteOffset + 2,\n data.length - 2\n );\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n this._loop = false;\n this.emit('conclude', code, buf);\n this.end();\n }\n\n this._state = GET_INFO;\n return;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n\n /**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\n createError(ErrorCtor, message, prefix, statusCode, errorCode) {\n this._loop = false;\n this._errored = true;\n\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, this.createError);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n }\n}\n\nmodule.exports = Receiver;\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex\" }] */\n\n'use strict';\n\nconst { Duplex } = require('stream');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER, kWebSocket, NOOP } = require('./constants');\nconst { isBlob, isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\nconst RANDOM_POOL_SIZE = 8 * 1024;\nlet randomPool;\nlet randomPoolPointer = RANDOM_POOL_SIZE;\n\nconst DEFAULT = 0;\nconst DEFLATING = 1;\nconst GET_BLOB_DATA = 2;\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {Duplex} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._queue = [];\n this._state = DEFAULT;\n this.onerror = NOOP;\n this[kWebSocket] = undefined;\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n if (randomPoolPointer === RANDOM_POOL_SIZE) {\n /* istanbul ignore else */\n if (randomPool === undefined) {\n //\n // This is lazily initialized because server-sent frames must not\n // be masked so it may never be used.\n //\n randomPool = Buffer.alloc(RANDOM_POOL_SIZE);\n }\n\n randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);\n randomPoolPointer = 0;\n }\n\n mask[0] = randomPool[randomPoolPointer++];\n mask[1] = randomPool[randomPoolPointer++];\n mask[2] = randomPool[randomPoolPointer++];\n mask[3] = randomPool[randomPoolPointer++];\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else {\n buf.set(data, 2);\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, this._compress, opts, cb]);\n } else {\n this.getBlobData(data, this._compress, opts, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n }\n\n /**\n * Gets the contents of a blob as binary data.\n *\n * @param {Blob} blob The blob\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * the data\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n getBlobData(blob, compress, options, cb) {\n this._bufferedBytes += options[kByteLength];\n this._state = GET_BLOB_DATA;\n\n blob\n .arrayBuffer()\n .then((arrayBuffer) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while the blob was being read'\n );\n\n //\n // `callCallbacks` is called in the next tick to ensure that errors\n // that might be thrown in the callbacks behave like errors thrown\n // outside the promise chain.\n //\n process.nextTick(callCallbacks, this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n const data = toBuffer(arrayBuffer);\n\n if (!compress) {\n this._state = DEFAULT;\n this.sendFrame(Sender.frame(data, options), cb);\n this.dequeue();\n } else {\n this.dispatch(data, compress, options, cb);\n }\n })\n .catch((err) => {\n //\n // `onError` is called in the next tick for the same reason that\n // `callCallbacks` above is.\n //\n process.nextTick(onError, this, err, cb);\n });\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._state = DEFLATING;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n callCallbacks(this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._state = DEFAULT;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (this._state === DEFAULT && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {(Buffer | String)[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n\n/**\n * Calls queued callbacks with an error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error to call the callbacks with\n * @param {Function} [cb] The first callback\n * @private\n */\nfunction callCallbacks(sender, err, cb) {\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < sender._queue.length; i++) {\n const params = sender._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n}\n\n/**\n * Handles a `Sender` error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error\n * @param {Function} [cb] The first pending callback\n * @private\n */\nfunction onError(sender, err, cb) {\n callCallbacks(sender, err, cb);\n sender.onerror(err);\n}\n","'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n","'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex|Readable$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Duplex, Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst { isBlob } = require('./validation');\n\nconst {\n BINARY_TYPES,\n CLOSE_TIMEOUT,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._errorEmitted = false;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._autoPong = options.autoPong;\n this._closeTimeout = options.closeTimeout;\n this._isServer = true;\n }\n }\n\n /**\n * For historical reasons, the custom \"nodebuffer\" type is used by the default\n * instead of \"blob\".\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n allowSynchronousEvents: options.allowSynchronousEvents,\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n const sender = new Sender(socket, this._extensions, options.generateMask);\n\n this._receiver = receiver;\n this._sender = sender;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n sender[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n sender.onerror = senderOnError;\n\n //\n // These methods may not be available if `socket` is just a `Duplex`.\n //\n if (socket.setTimeout) socket.setTimeout(0);\n if (socket.setNoDelay) socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n setCloseTimer(this);\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether any\n * of the `'message'`, `'ping'`, and `'pong'` events can be emitted multiple\n * times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to wait\n * for the closing handshake to finish after `websocket.close()` is called\n * @param {Function} [options.finishRequest] A function which can be used to\n * customize the headers of each http request before it is sent\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n allowSynchronousEvents: true,\n autoPong: true,\n closeTimeout: CLOSE_TIMEOUT,\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: 'GET',\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n websocket._autoPong = opts.autoPong;\n websocket._closeTimeout = opts.closeTimeout;\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n }\n\n if (parsedUrl.protocol === 'http:') {\n parsedUrl.protocol = 'ws:';\n } else if (parsedUrl.protocol === 'https:') {\n parsedUrl.protocol = 'wss:';\n }\n\n websocket._url = parsedUrl.href;\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n let invalidUrlMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n invalidUrlMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", ' +\n '\"http:\", \"https:\", or \"ws+unix:\"';\n } else if (isIpcUrl && !parsedUrl.pathname) {\n invalidUrlMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidUrlMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidUrlMessage) {\n const err = new SyntaxError(invalidUrlMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const request = isSecure ? https.request : http.request;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection =\n opts.createConnection || (isSecure ? tlsConnect : netConnect);\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n ...opts.headers,\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket'\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate({\n ...opts.perMessageDeflate,\n isServer: false,\n maxPayload: opts.maxPayload\n });\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isIpcUrl) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req;\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalIpc = isIpcUrl;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isIpcUrl\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (websocket.listenerCount('redirect') === 0) {\n const isSameHost = isIpcUrl\n ? websocket._originalIpc\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalIpc\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n\n req = websocket._req = request(opts);\n\n if (websocket._redirects) {\n //\n // Unlike what is done for the `'upgrade'` event, no early exit is\n // triggered here if the user calls `websocket.close()` or\n // `websocket.terminate()` from a listener of the `'redirect'` event. This\n // is because the user can also call `request.destroy()` with an error\n // before calling `websocket.close()` or `websocket.terminate()` and this\n // would result in an error being emitted on the `request` object with no\n // `'error'` event listeners attached.\n //\n websocket.emit('redirect', websocket.url, req);\n }\n } else {\n req = websocket._req = request(opts);\n }\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req[kAborted]) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the\n // `'upgrade'` event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const upgrade = res.headers.upgrade;\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n allowSynchronousEvents: opts.allowSynchronousEvents,\n generateMask: opts.generateMask,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n\n if (opts.finishRequest) {\n opts.finishRequest(req, websocket);\n } else {\n req.end();\n }\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n //\n // The following assignment is practically useless and is done only for\n // consistency.\n //\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream[kAborted] = true;\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n process.nextTick(emitErrorAndClose, websocket, err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = isBlob(data) ? data.size : toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n process.nextTick(cb, err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The `Sender` error event handler.\n *\n * @param {Error} The error\n * @private\n */\nfunction senderOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket.readyState === WebSocket.CLOSED) return;\n if (websocket.readyState === WebSocket.OPEN) {\n websocket._readyState = WebSocket.CLOSING;\n setCloseTimer(websocket);\n }\n\n //\n // `socket.end()` is used instead of `socket.destroy()` to allow the other\n // peer to finish sending queued data. There is no need to set a timer here\n // because `CLOSING` means that it is already set or not needed.\n //\n this._socket.end();\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * Set a timer to destroy the underlying raw socket of a WebSocket.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @private\n */\nfunction setCloseTimer(websocket) {\n websocket._closeTimer = setTimeout(\n websocket._socket.destroy.bind(websocket._socket),\n websocket._closeTimeout\n );\n}\n\n/**\n * The listener of the socket `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written. If instead, the\n // socket is paused, any possible buffered data will be read as a single\n // chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n this._readableState.length !== 0\n ) {\n const chunk = this.read(this._readableState.length);\n\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the socket `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the socket `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the socket `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^WebSocket$\" }] */\n'use strict';\n\nconst WebSocket = require('./websocket');\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n","'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst { Duplex } = require('stream');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { CLOSE_TIMEOUT, GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to\n * wait for the closing handshake to finish after `websocket.close()` is\n * called\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n allowSynchronousEvents: true,\n autoPong: true,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n closeTimeout: CLOSE_TIMEOUT,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key = req.headers['sec-websocket-key'];\n const upgrade = req.headers.upgrade;\n const version = +req.headers['sec-websocket-version'];\n\n if (req.method !== 'GET') {\n const message = 'Invalid HTTP method';\n abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n return;\n }\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n const message = 'Invalid Upgrade header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (key === undefined || !keyRegex.test(key)) {\n const message = 'Missing or invalid Sec-WebSocket-Key header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (version !== 13 && version !== 8) {\n const message = 'Missing or invalid Sec-WebSocket-Version header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message, {\n 'Sec-WebSocket-Version': '13, 8'\n });\n return;\n }\n\n if (!this.shouldHandle(req)) {\n abortHandshake(socket, 400);\n return;\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Protocol header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate({\n ...this.options.perMessageDeflate,\n isServer: true,\n maxPayload: this.options.maxPayload\n });\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n const message =\n 'Invalid or unacceptable Sec-WebSocket-Extensions header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null, undefined, this.options);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n allowSynchronousEvents: this.options.allowSynchronousEvents,\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of <event, listener>\n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.<String, Function>} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n //\n // The socket is writable unless the user destroyed or ended it before calling\n // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n // error. Handling this does not make much sense as the worst that can happen\n // is that some of the data written by the user might be discarded due to the\n // call to `socket.end()` below, which triggers an `'error'` event that in\n // turn causes the socket to be destroyed.\n //\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.once('finish', socket.destroy);\n\n socket.end(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @param {Object} [headers] The HTTP response headers\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(\n server,\n req,\n socket,\n code,\n message,\n headers\n) {\n if (server.listenerCount('wsClientError')) {\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n server.emit('wsClientError', err, socket, req);\n } else {\n abortHandshake(socket, code, message, headers);\n }\n}\n","import createWebSocketStream from './lib/stream.js';\nimport extension from './lib/extension.js';\nimport PerMessageDeflate from './lib/permessage-deflate.js';\nimport Receiver from './lib/receiver.js';\nimport Sender from './lib/sender.js';\nimport subprotocol from './lib/subprotocol.js';\nimport WebSocket from './lib/websocket.js';\nimport WebSocketServer from './lib/websocket-server.js';\n\nexport {\n createWebSocketStream,\n extension,\n PerMessageDeflate,\n Receiver,\n Sender,\n subprotocol,\n WebSocket,\n WebSocketServer\n};\n\nexport default WebSocket;\n","import { exec } from 'child_process'\nimport { existsSync, readFileSync } from 'fs'\nimport { createServer, type IncomingMessage, type ServerResponse } from 'http'\nimport { dirname, extname, join, resolve } from 'path'\nimport { fileURLToPath } from 'url'\nimport { watch } from 'chokidar'\nimport { type WebSocket, WebSocketServer } from 'ws'\nimport { getThemeRoot, resolveDocsConfig, type DocsDevOptions } from './config.js'\nimport { build } from './build.js'\n\nconst MIME: Record<string, string> = {\n '.html': 'text/html; charset=utf-8',\n '.css': 'text/css; charset=utf-8',\n '.js': 'text/javascript; charset=utf-8',\n '.json': 'application/json',\n '.png': 'image/png',\n '.jpg': 'image/jpeg',\n '.jpeg': 'image/jpeg',\n '.gif': 'image/gif',\n '.svg': 'image/svg+xml',\n '.webp': 'image/webp',\n '.ico': 'image/x-icon',\n '.woff': 'font/woff',\n '.woff2': 'font/woff2',\n '.xml': 'application/xml',\n '.txt': 'text/plain; charset=utf-8',\n}\n\nconst WS_CLIENT_SCRIPT = `<script>\n(function() {\n var ws = new WebSocket('ws://' + location.host + '/__ws');\n ws.onmessage = function(e) {\n var msg = JSON.parse(e.data);\n if (msg.type === 'reload') location.reload();\n };\n ws.onclose = function() {\n setTimeout(function() { location.reload(); }, 1000);\n };\n})();\n</script>`\n\nfunction serveFile(\n filePath: string,\n res: ServerResponse,\n injectReload = false,\n statusCode = 200,\n): void {\n const ext = extname(filePath)\n const contentType = MIME[ext] || 'application/octet-stream'\n const body = readFileSync(filePath)\n\n if (ext === '.html' && injectReload) {\n const html = body.toString().replace('</body>', `${WS_CLIENT_SCRIPT}</body>`)\n res.writeHead(statusCode, { 'Content-Type': contentType })\n res.end(html)\n return\n }\n\n res.writeHead(statusCode, { 'Content-Type': contentType })\n res.end(body)\n}\n\nfunction openBrowser(url: string): void {\n const cmd =\n process.platform === 'darwin' ? 'open' : process.platform === 'win32' ? 'start' : 'xdg-open'\n exec(`${cmd} ${url}`)\n}\n\nexport async function startDev(options: DocsDevOptions = {}): Promise<void> {\n const configPath = resolve(options.configPath ?? join(process.cwd(), 'pagesmith.config.json5'))\n const port = options.port ?? 3001\n\n await build({ configPath })\n const config = resolveDocsConfig(configPath)\n const watchTargets = [config.contentDir, configPath, getThemeRoot()]\n if (existsSync(config.publicDir)) {\n watchTargets.push(config.publicDir)\n }\n\n let rebuilding = false\n let pending = false\n const clients = new Set<WebSocket>()\n\n const base = config.basePath.replace(/\\/+$/, '')\n\n function log(status: number, method: string, pathname: string): void {\n const color = status < 300 ? '\\x1b[32m' : status < 400 ? '\\x1b[36m' : '\\x1b[33m'\n console.log(` ${color}${status}\\x1b[0m ${method} ${pathname}`)\n }\n\n const server = createServer((req: IncomingMessage, res: ServerResponse) => {\n const url = new URL(req.url || '/', `http://localhost:${port}`)\n const method = req.method || 'GET'\n let pathname = url.pathname\n\n // Redirect root to basePath\n if (base && (pathname === '/' || pathname === '')) {\n log(302, method, pathname)\n res.writeHead(302, { Location: `${base}/` })\n res.end()\n return\n }\n\n // Strip basePath prefix so file lookup matches outDir structure\n if (base && pathname.startsWith(base)) {\n pathname = pathname.slice(base.length) || '/'\n }\n\n // Serve font files from core assets during dev\n if (pathname.startsWith('/assets/fonts/')) {\n const fontFile = pathname.replace('/assets/fonts/', '')\n const corePkgDir = dirname(fileURLToPath(import.meta.resolve('@pagesmith/core/package.json')))\n const fontPath = join(corePkgDir, 'assets', 'fonts', fontFile)\n if (existsSync(fontPath)) {\n log(200, method, url.pathname)\n res.writeHead(200, {\n 'Content-Type': 'font/woff2',\n 'Cache-Control': 'public, max-age=31536000',\n })\n res.end(readFileSync(fontPath))\n return\n }\n }\n\n let filePath = join(config.outDir, pathname)\n\n if (existsSync(filePath) && !extname(filePath)) {\n filePath = join(filePath, 'index.html')\n }\n\n if (!existsSync(filePath)) {\n // Try 404/index.html then 404.html (GitHub Pages convention)\n const notFoundDir = join(config.outDir, '404', 'index.html')\n const notFoundFile = join(config.outDir, '404.html')\n const notFoundPath = existsSync(notFoundDir)\n ? notFoundDir\n : existsSync(notFoundFile)\n ? notFoundFile\n : null\n if (notFoundPath) {\n log(404, method, url.pathname)\n serveFile(notFoundPath, res, true, 404)\n return\n }\n log(404, method, url.pathname)\n res.writeHead(404, { 'Content-Type': 'text/html; charset=utf-8' })\n res.end('<h1>404</h1>')\n return\n }\n\n log(200, method, url.pathname)\n serveFile(filePath, res, true)\n })\n\n const wss = new WebSocketServer({ server, path: '/__ws' })\n wss.on('connection', (socket) => {\n clients.add(socket)\n socket.on('close', () => clients.delete(socket))\n })\n\n const devUrl = `http://localhost:${port}${base}/`\n server.listen(port, () => {\n console.log(`\\nDocs dev server: ${devUrl}\\n`)\n if (options.open) openBrowser(devUrl)\n })\n\n const watcher = watch(watchTargets, { ignoreInitial: true })\n watcher.on('all', async () => {\n if (rebuilding) {\n pending = true\n return\n }\n\n rebuilding = true\n try {\n await build({ configPath })\n const payload = JSON.stringify({ type: 'reload' })\n for (const client of clients) {\n client.send(payload)\n }\n } finally {\n rebuilding = false\n if (pending) {\n pending = false\n await build({ configPath })\n }\n }\n })\n}\n\nexport async function preview(options: DocsDevOptions = {}): Promise<void> {\n const config = resolveDocsConfig(options.configPath)\n const port = options.port ?? 4173\n const previewBase = config.basePath.replace(/\\/+$/, '')\n\n const server = createServer((req: IncomingMessage, res: ServerResponse) => {\n const url = new URL(req.url || '/', `http://localhost:${port}`)\n let pathname = url.pathname\n\n // Redirect root to basePath\n if (previewBase && (pathname === '/' || pathname === '')) {\n res.writeHead(302, { Location: `${previewBase}/` })\n res.end()\n return\n }\n\n // Strip basePath prefix\n if (previewBase && pathname.startsWith(previewBase)) {\n pathname = pathname.slice(previewBase.length) || '/'\n }\n\n let filePath = join(config.outDir, pathname)\n\n if (existsSync(filePath) && !extname(filePath)) {\n filePath = join(filePath, 'index.html')\n }\n\n if (!existsSync(filePath)) {\n filePath = join(config.outDir, '404', 'index.html')\n if (!existsSync(filePath)) {\n res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' })\n res.end('Not found')\n return\n }\n serveFile(filePath, res, false, 404)\n return\n }\n\n serveFile(filePath, res)\n })\n\n const previewUrl = `http://localhost:${port}${previewBase}/`\n server.listen(port, () => {\n console.log(`\\nDocs preview: ${previewUrl}\\n`)\n if (options.open) openBrowser(previewUrl)\n })\n}\n"],"x_google_ignoreList":[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56],"mappings":"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"}