@highstate/designer 0.19.1 → 0.20.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 (512) hide show
  1. package/.output/nitro.json +3 -3
  2. package/.output/public/_nuxt/57B6Rca8.js +1 -0
  3. package/.output/public/_nuxt/5X7smno1.js +1 -0
  4. package/.output/public/_nuxt/{Cp2bjttb.js → 83L43bj1.js} +1 -1
  5. package/.output/public/_nuxt/8MSfy8uY.js +1 -0
  6. package/.output/public/_nuxt/9I37tBe7.js +1 -0
  7. package/.output/public/_nuxt/Aopv2gwH.js +1 -0
  8. package/.output/public/_nuxt/B13uiJCv.js +1 -0
  9. package/.output/public/_nuxt/B7c-h3xW.js +1 -0
  10. package/.output/public/_nuxt/B8nw2aST.js +2 -0
  11. package/.output/public/_nuxt/{1DNp92w6.js → B93PlW-d.js} +1 -1
  12. package/.output/public/_nuxt/BA0jw7CM.js +1 -0
  13. package/.output/public/_nuxt/BBf5iR-q.js +1 -0
  14. package/.output/public/_nuxt/BCVaR2pQ.js +1 -0
  15. package/.output/public/_nuxt/BDAHnC4j.js +1 -0
  16. package/.output/public/_nuxt/BDa1f6PF.js +2 -0
  17. package/.output/public/_nuxt/{YB_1Ta41.js → BDs6uo3D.js} +1 -1
  18. package/.output/public/_nuxt/BEEt8Am7.js +1 -0
  19. package/.output/public/_nuxt/BE_Meo09.js +269 -0
  20. package/.output/public/_nuxt/BGHnOYBU.js +1 -0
  21. package/.output/public/_nuxt/BH7IYjvW.js +1 -0
  22. package/.output/public/_nuxt/BJDFO7_C.js +1 -0
  23. package/.output/public/_nuxt/BJK6uMxG.js +1 -0
  24. package/.output/public/_nuxt/BLF3u89x.js +1 -0
  25. package/.output/public/_nuxt/{Xi2tawMN.js → BLmx8bSh.js} +1 -1
  26. package/.output/public/_nuxt/{DlfHMoPT.js → BPQ3VLAy.js} +1 -1
  27. package/.output/public/_nuxt/BPcwi1q2.js +1 -0
  28. package/.output/public/_nuxt/{BBGuKPBd.js → BR5kRUq4.js} +1 -1
  29. package/.output/public/_nuxt/BTifaqeh.js +1 -0
  30. package/.output/public/_nuxt/BUNf2Yb8.js +1 -0
  31. package/.output/public/_nuxt/BUw7H-hv.js +1 -0
  32. package/.output/public/_nuxt/{DRprw4p4.js → BVQ-GDCI.js} +1 -1
  33. package/.output/public/_nuxt/{BbQj0Z2C.js → BYV0-3_D.js} +1 -1
  34. package/.output/public/_nuxt/BZvkOJ9d.js +1 -0
  35. package/.output/public/_nuxt/Ba13S78F.js +1 -0
  36. package/.output/public/_nuxt/BcVCzyr7.js +1 -0
  37. package/.output/public/_nuxt/BhRPY-oY.js +1 -0
  38. package/.output/public/_nuxt/{uMbE6_td.js → Bhrxn6JZ.js} +1 -1
  39. package/.output/public/_nuxt/BkNNRtnm.js +1 -0
  40. package/.output/public/_nuxt/BlfjmxyP.js +1 -0
  41. package/.output/public/_nuxt/Bmn6On1c.js +1 -0
  42. package/.output/public/_nuxt/Bo8jzlL1.js +18 -0
  43. package/.output/public/_nuxt/BpkvlDNi.js +1 -0
  44. package/.output/public/_nuxt/{BIAuTxu3.js → Br6cN0cg.js} +1 -1
  45. package/.output/public/_nuxt/{CUEJCptM.js → BrzmwbiE.js} +1 -1
  46. package/.output/public/_nuxt/{D32k8WzR.js → BtvRca6l.js} +1 -1
  47. package/.output/public/_nuxt/BuJgCY_C.js +1 -0
  48. package/.output/public/_nuxt/Bv_4Rxtq.js +1 -0
  49. package/.output/public/_nuxt/BvzEVeQv.js +1 -0
  50. package/.output/public/_nuxt/BxAss8Tj.js +1 -0
  51. package/.output/public/_nuxt/BxaP9l2T.js +1 -0
  52. package/.output/public/_nuxt/BxgE0vQu.js +1 -0
  53. package/.output/public/_nuxt/ByBNG4eo.js +1 -0
  54. package/.output/public/_nuxt/{COI20M4I.js → BzTr9Aqm.js} +1 -1
  55. package/.output/public/_nuxt/{CXu1NL6O.js → C-HG3fhB.js} +1 -1
  56. package/.output/public/_nuxt/C-sUppwS.js +1 -0
  57. package/.output/public/_nuxt/C1FLL1Qz.js +1 -0
  58. package/.output/public/_nuxt/C3Wv6jpd.js +1 -0
  59. package/.output/public/_nuxt/C47S-Tmv.js +1 -0
  60. package/.output/public/_nuxt/C4EeE6gA.js +1 -0
  61. package/.output/public/_nuxt/{C-Jbm3Hp.js → C4gqWexZ.js} +1 -1
  62. package/.output/public/_nuxt/{DTMYz4Jt.js → C5YyOfLZ.js} +1 -1
  63. package/.output/public/_nuxt/C7zT0LnQ.js +1 -0
  64. package/.output/public/_nuxt/C8lm7lgC.js +1 -0
  65. package/.output/public/_nuxt/C9dUb6Cb.js +1 -0
  66. package/.output/public/_nuxt/{DS1LvVMU.js → C9oPPf7i.js} +1 -1
  67. package/.output/public/_nuxt/{D1uDOp7C.js → CFHQjOhq.js} +1 -1
  68. package/.output/public/_nuxt/{Dtc2v4kS.js → CGscLIrv.js} +1 -1
  69. package/.output/public/_nuxt/{DKzvysjW.js → CH1njM8p.js} +1 -1
  70. package/.output/public/_nuxt/CJWmG4YP.js +12 -0
  71. package/.output/public/_nuxt/CLZrNe3w.js +1 -0
  72. package/.output/public/_nuxt/CMTm3GFP.js +1 -0
  73. package/.output/public/_nuxt/CMjwMIkn.js +1 -0
  74. package/.output/public/_nuxt/COcwbKMJ.js +1 -0
  75. package/.output/public/_nuxt/CPZSvMBB.js +1 -0
  76. package/.output/public/_nuxt/CPpO8vcZ.js +1 -0
  77. package/.output/public/_nuxt/CQ8jqdy-.js +1 -0
  78. package/.output/public/_nuxt/CV5MeYf9.js +1 -0
  79. package/.output/public/_nuxt/{CcyOm34o.js → CVdnzihN.js} +1 -1
  80. package/.output/public/_nuxt/CW8IKDeL.js +1 -0
  81. package/.output/public/_nuxt/{pkIJ47B4.js → CXZktZb0.js} +1 -1
  82. package/.output/public/_nuxt/CYsAdtH9.js +1 -0
  83. package/.output/public/_nuxt/{BUyGWigt.js → CZhp0h8q.js} +1 -1
  84. package/.output/public/_nuxt/CaJ-zn_Z.js +2 -0
  85. package/.output/public/_nuxt/CcOKGYBt.js +1 -0
  86. package/.output/public/_nuxt/{oTG82Wo1.js → CenWIFCC.js} +1 -1
  87. package/.output/public/_nuxt/ChaZkl1J.js +1 -0
  88. package/.output/public/_nuxt/CjoLj4QM.js +1 -0
  89. package/.output/public/_nuxt/{BtsDLbAf.js → Cl0AqbOI.js} +1 -1
  90. package/.output/public/_nuxt/Cm-2nZ05.js +1 -0
  91. package/.output/public/_nuxt/{DUSGQflk.js → Cm3UrAx6.js} +1 -1
  92. package/.output/public/_nuxt/{BGHREFWD.js → CmIQRyeF.js} +1 -1
  93. package/.output/public/_nuxt/{f7oK2omx.js → Cn7AkR1O.js} +1 -1
  94. package/.output/public/_nuxt/{JhPuU2gP.js → CnnebwVN.js} +1 -1
  95. package/.output/public/_nuxt/CnsnAmq5.js +1 -0
  96. package/.output/public/_nuxt/CoDkCxhg.js +1 -0
  97. package/.output/public/_nuxt/{B-hkwWGT.js → CpOuai2O.js} +1 -1
  98. package/.output/public/_nuxt/CudFwYib.js +1 -0
  99. package/.output/public/_nuxt/{BDzgwa52.js → CufHLc7y.js} +1 -1
  100. package/.output/public/_nuxt/CwoSXNpI.js +1 -0
  101. package/.output/public/_nuxt/CxEW7TG8.js +1 -0
  102. package/.output/public/_nuxt/CxLEBnE3.js +1 -0
  103. package/.output/public/_nuxt/{DNrj_gVY.js → CxbxFI8M.js} +1 -1
  104. package/.output/public/_nuxt/CzSiA7V6.js +1 -0
  105. package/.output/public/_nuxt/D-wGZMZP.js +1 -0
  106. package/.output/public/_nuxt/D27ZAKIj.js +1 -0
  107. package/.output/public/_nuxt/D2aToa54.js +1 -0
  108. package/.output/public/_nuxt/D2obegTF.js +1 -0
  109. package/.output/public/_nuxt/{NleAzG8P.js → D4_iv3hh.js} +1 -1
  110. package/.output/public/_nuxt/D53aC0YG.js +1 -0
  111. package/.output/public/_nuxt/D5z-4QVk.js +1 -0
  112. package/.output/public/_nuxt/D6fh7rEe.js +2 -0
  113. package/.output/public/_nuxt/D87Tk5Gz.js +1 -0
  114. package/.output/public/_nuxt/D8_7TLub.js +1 -0
  115. package/.output/public/_nuxt/D91rOou-.js +13 -0
  116. package/.output/public/_nuxt/DCBCRx0O.js +1 -0
  117. package/.output/public/_nuxt/DCR009rv.js +1 -0
  118. package/.output/public/_nuxt/DCinzvm1.js +1 -0
  119. package/.output/public/_nuxt/DEthMvLe.js +1 -0
  120. package/.output/public/_nuxt/DFWUc33u.js +1 -0
  121. package/.output/public/_nuxt/{5bLW0GMw.js → DGP4VlC8.js} +1 -1
  122. package/.output/public/_nuxt/{CnK8MTSM.js → DHQR4-dF.js} +1 -1
  123. package/.output/public/_nuxt/DJN0y8jO.js +1 -0
  124. package/.output/public/_nuxt/DJjDtW9f.js +1 -0
  125. package/.output/public/_nuxt/DKhcu7kD.js +1 -0
  126. package/.output/public/_nuxt/DMwsHuHA.js +1 -0
  127. package/.output/public/_nuxt/{GAB5JH5K.js → DNqd6Nek.js} +1 -1
  128. package/.output/public/_nuxt/DOMRsNpU.js +1 -0
  129. package/.output/public/_nuxt/DOPqH6_T.js +1 -0
  130. package/.output/public/_nuxt/DQHHT9y-.js +1 -0
  131. package/.output/public/_nuxt/{B5ZR69Tn.js → DQwYQDb2.js} +1 -1
  132. package/.output/public/_nuxt/DQyhUUbL.js +1 -0
  133. package/.output/public/_nuxt/DRfxs3PN.js +1 -0
  134. package/.output/public/_nuxt/{DPcUKYIF.js → DRw_LuNl.js} +1 -1
  135. package/.output/public/_nuxt/DV7GczEv.js +1 -0
  136. package/.output/public/_nuxt/DWQRqdcR.js +1 -0
  137. package/.output/public/_nuxt/DWa2aw6r.js +1 -0
  138. package/.output/public/_nuxt/DYoxhk2S.js +1 -0
  139. package/.output/public/_nuxt/DZf3V79B.js +1 -0
  140. package/.output/public/_nuxt/{BPzJO5Oe.js → DZu-aV2c.js} +1 -1
  141. package/.output/public/_nuxt/Dbwml2gB.js +1 -0
  142. package/.output/public/_nuxt/DfvKjH24.js +1 -0
  143. package/.output/public/_nuxt/{Cdx7mHEO.js → DhmSosst.js} +1 -1
  144. package/.output/public/_nuxt/DiTMzCP2.js +1 -0
  145. package/.output/public/_nuxt/{CA7CTBwS.js → Dph4kLrZ.js} +1 -1
  146. package/.output/public/_nuxt/DqQDbK_p.js +1 -0
  147. package/.output/public/_nuxt/DsS90Fp6.js +1 -0
  148. package/.output/public/_nuxt/Dspwwk_N.js +1 -0
  149. package/.output/public/_nuxt/DsumFeuD.js +1 -0
  150. package/.output/public/_nuxt/DxERyYWQ.js +1 -0
  151. package/.output/public/_nuxt/{D7ScPSBf.js → DxNHbxmM.js} +1 -1
  152. package/.output/public/_nuxt/{CLvts2aQ.js → DxSwrfjg.js} +1 -1
  153. package/.output/public/_nuxt/{DcmvOc98.js → DyMmfYiE.js} +1 -1
  154. package/.output/public/_nuxt/DzWdbJvx.js +1 -0
  155. package/.output/public/_nuxt/{COEtLSDF.js → Dzze3sRP.js} +1 -1
  156. package/.output/public/_nuxt/G13IRnB2.js +1 -0
  157. package/.output/public/_nuxt/GDxZ_Nvm.js +14 -0
  158. package/.output/public/_nuxt/GgtqCdye.js +1 -0
  159. package/.output/public/_nuxt/{DkhsQLT2.js → GsRaNv29.js} +1 -1
  160. package/.output/public/_nuxt/IF9eRakj.js +1 -0
  161. package/.output/public/_nuxt/RCBWmVHz.js +1 -0
  162. package/.output/public/_nuxt/{Cb0HU5_O.js → RNghxpo_.js} +1 -1
  163. package/.output/public/_nuxt/{SecretValueField.DcyO8gGc.css → SecretValueField.Dy80RlGP.css} +1 -1
  164. package/.output/public/_nuxt/{B8ROHVmM.js → TsXTqZ29.js} +1 -1
  165. package/.output/public/_nuxt/VCDPK7BO.js +1 -0
  166. package/.output/public/_nuxt/{CU27uY9n.js → W9tJ9s81.js} +1 -1
  167. package/.output/public/_nuxt/{CmALWFRB.js → XEA9GSJd.js} +16 -468
  168. package/.output/public/_nuxt/{DeWFVDHI.js → YqXBG_HV.js} +1 -1
  169. package/.output/public/_nuxt/ZbicA1ry.js +1 -0
  170. package/.output/public/_nuxt/_snapshotId_.ChuSNeNY.css +1 -0
  171. package/.output/public/_nuxt/builds/latest.json +1 -1
  172. package/.output/public/_nuxt/builds/meta/a1fec520-0c95-4ae0-af5e-964780fad341.json +1 -0
  173. package/.output/public/_nuxt/d-NZQb9b.js +1 -0
  174. package/.output/public/_nuxt/edge-router-BdPMCV6u.js +1 -0
  175. package/.output/public/_nuxt/{entry.dxugZJXl.css → entry.Bc0aTA0K.css} +1 -1
  176. package/.output/public/_nuxt/error-404.X7H_YhdC.css +1 -0
  177. package/.output/public/_nuxt/error-500.BOQe1fsk.css +1 -0
  178. package/.output/public/_nuxt/f3TOpYbw.js +1 -0
  179. package/.output/public/_nuxt/{DrZfEa88.js → fKv21gyL.js} +1 -1
  180. package/.output/public/_nuxt/graph-layout-B7wl80r3.js +1 -0
  181. package/.output/public/_nuxt/graph-resolver-DKNtntr2.js +180 -0
  182. package/.output/public/_nuxt/{CGqH5EJj.js → hJgmCMqR.js} +1 -1
  183. package/.output/public/_nuxt/{BoKiGodi.js → k_qm7-4y.js} +1 -1
  184. package/.output/public/_nuxt/{IvJ92aGK.js → m17aaUwq.js} +1 -1
  185. package/.output/public/_nuxt/mUFnM-_q.js +1 -0
  186. package/.output/public/_nuxt/mWjccvbQ.js +1 -0
  187. package/.output/public/_nuxt/{BXY8tDGw.js → mjskCLCv.js} +1 -1
  188. package/.output/public/_nuxt/n0RAZLbO.js +1 -0
  189. package/.output/public/_nuxt/n2N0HUVH.js +1 -0
  190. package/.output/public/_nuxt/o_m1mZtJ.js +6 -0
  191. package/.output/public/_nuxt/pxXmJ8QX.js +1 -0
  192. package/.output/public/_nuxt/{BHrmToEH.js → qdsjHGoJ.js} +1 -1
  193. package/.output/public/_nuxt/{BbcW6ACK.js → rGO070M0.js} +1 -1
  194. package/.output/public/_nuxt/rcFevLEP.js +2 -0
  195. package/.output/public/_nuxt/rgN_MdZl.js +1 -0
  196. package/.output/public/_nuxt/tsyQDnRt.js +5 -0
  197. package/.output/public/_nuxt/u5AG7uiY.js +1 -0
  198. package/.output/public/_nuxt/uYugtg8r.js +1 -0
  199. package/.output/public/_nuxt/vuetify.BzdWZaIq.css +1 -0
  200. package/.output/public/_nuxt/{BMMyXqK5.js → wDzz0qaB.js} +1 -1
  201. package/.output/public/_nuxt/xA6NntuA.js +1 -0
  202. package/.output/public/_nuxt/xdsXwj_J.js +1 -0
  203. package/.output/public/_nuxt/xp27HhqZ.js +1 -0
  204. package/.output/public/_nuxt/xrNU8mHG.js +3 -0
  205. package/.output/public/_nuxt/yaml.worker-C1Cl1y5J.js +399 -0
  206. package/.output/public/_nuxt/ziXKbM2N.js +1 -0
  207. package/.output/public/libavoid.wasm +0 -0
  208. package/.output/server/index.mjs +2213 -6830
  209. package/.output/server/index.mjs.map +1 -1
  210. package/.output/server/node_modules/@babel/parser/lib/index.js +427 -440
  211. package/.output/server/node_modules/@babel/parser/package.json +6 -6
  212. package/.output/server/node_modules/@trpc/server/dist/adapters/fetch/index.mjs +4 -4
  213. package/.output/server/node_modules/@trpc/server/dist/adapters/ws.mjs +10 -10
  214. package/.output/server/node_modules/@trpc/server/dist/{utils-CLZnJdb_.mjs → codes-DagpWZLc.mjs} +66 -66
  215. package/.output/server/node_modules/@trpc/server/dist/{getErrorShape-BH60iMC2.mjs → getErrorShape-vC8mUXJD.mjs} +3 -3
  216. package/.output/server/node_modules/@trpc/server/dist/index.mjs +4 -4
  217. package/.output/server/node_modules/@trpc/server/dist/{initTRPC-CB9uBez5.mjs → initTRPC-RoZMIBeA.mjs} +4 -4
  218. package/.output/server/node_modules/@trpc/server/dist/{node-http-8dtdvMrE.mjs → node-http-DtA2iLK9.mjs} +7 -5
  219. package/.output/server/node_modules/@trpc/server/dist/{parseTRPCMessage-BlZeZ60t.mjs → parseTRPCMessage-CTow-umk.mjs} +2 -2
  220. package/.output/server/node_modules/@trpc/server/dist/{resolveResponse-DngSgha6.mjs → resolveResponse-BVDlNZwN.mjs} +45 -48
  221. package/.output/server/node_modules/@trpc/server/dist/{tracked-Blz8XOf1.mjs → tracked-Bjtgv3wJ.mjs} +11 -9
  222. package/.output/server/node_modules/@trpc/server/dist/{unstable-core-do-not-import-D89CaGtL.mjs → unstable-core-do-not-import-9NNw8uQM.mjs} +5 -3
  223. package/.output/server/node_modules/@trpc/server/dist/{ws-BR20IWki.mjs → ws-CJgZE7Hg.mjs} +60 -20
  224. package/.output/server/node_modules/@trpc/server/package.json +6 -6
  225. package/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +128 -106
  226. package/.output/server/node_modules/@vue/compiler-core/package.json +5 -5
  227. package/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +54 -54
  228. package/.output/server/node_modules/@vue/compiler-dom/package.json +3 -3
  229. package/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +35 -33
  230. package/.output/server/node_modules/@vue/compiler-ssr/package.json +3 -3
  231. package/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +105 -42
  232. package/.output/server/node_modules/@vue/reactivity/package.json +2 -2
  233. package/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +2129 -2063
  234. package/.output/server/node_modules/@vue/runtime-core/package.json +3 -3
  235. package/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +78 -31
  236. package/.output/server/node_modules/@vue/runtime-dom/package.json +5 -5
  237. package/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +6 -6
  238. package/.output/server/node_modules/@vue/server-renderer/package.json +4 -4
  239. package/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +1 -1
  240. package/.output/server/node_modules/@vue/shared/package.json +1 -1
  241. package/.output/server/node_modules/copy-anything/dist/index.js +47 -31
  242. package/.output/server/node_modules/copy-anything/package.json +19 -72
  243. package/.output/server/node_modules/devalue/index.js +1 -0
  244. package/.output/server/node_modules/devalue/package.json +2 -2
  245. package/.output/server/node_modules/devalue/src/constants.js +1 -0
  246. package/.output/server/node_modules/devalue/src/parse.js +55 -4
  247. package/.output/server/node_modules/devalue/src/stringify.js +101 -12
  248. package/.output/server/node_modules/devalue/src/uneval.js +100 -13
  249. package/.output/server/node_modules/devalue/src/utils.js +35 -1
  250. package/.output/server/node_modules/entities/{lib/decode_codepoint.js → dist/commonjs/decode-codepoint.js} +16 -15
  251. package/.output/server/node_modules/entities/{lib → dist/commonjs}/decode.js +200 -168
  252. package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
  253. package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
  254. package/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
  255. package/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
  256. package/.output/server/node_modules/entities/dist/commonjs/package.json +3 -0
  257. package/.output/server/node_modules/entities/package.json +99 -69
  258. package/.output/server/node_modules/hookable/dist/index.mjs +244 -268
  259. package/.output/server/node_modules/hookable/package.json +29 -26
  260. package/.output/server/node_modules/is-what/dist/getType.js +4 -0
  261. package/.output/server/node_modules/is-what/dist/index.js +43 -171
  262. package/.output/server/node_modules/is-what/dist/isAnyObject.js +8 -0
  263. package/.output/server/node_modules/is-what/dist/isArray.js +5 -0
  264. package/.output/server/node_modules/is-what/dist/isBigInt.js +5 -0
  265. package/.output/server/node_modules/is-what/dist/isBlob.js +5 -0
  266. package/.output/server/node_modules/is-what/dist/isBoolean.js +5 -0
  267. package/.output/server/node_modules/is-what/dist/isDate.js +5 -0
  268. package/.output/server/node_modules/is-what/dist/isEmptyArray.js +5 -0
  269. package/.output/server/node_modules/is-what/dist/isEmptyObject.js +8 -0
  270. package/.output/server/node_modules/is-what/dist/isEmptyString.js +4 -0
  271. package/.output/server/node_modules/is-what/dist/isError.js +5 -0
  272. package/.output/server/node_modules/is-what/dist/isFile.js +5 -0
  273. package/.output/server/node_modules/is-what/dist/isFullArray.js +5 -0
  274. package/.output/server/node_modules/is-what/dist/isFullObject.js +8 -0
  275. package/.output/server/node_modules/is-what/dist/isFullString.js +5 -0
  276. package/.output/server/node_modules/is-what/dist/isFunction.js +4 -0
  277. package/.output/server/node_modules/is-what/dist/isHexDecimal.js +12 -0
  278. package/.output/server/node_modules/is-what/dist/isInstanceOf.js +19 -0
  279. package/.output/server/node_modules/is-what/dist/isInteger.js +5 -0
  280. package/.output/server/node_modules/is-what/dist/isIterable.js +16 -0
  281. package/.output/server/node_modules/is-what/dist/isMap.js +5 -0
  282. package/.output/server/node_modules/is-what/dist/isNaNValue.js +5 -0
  283. package/.output/server/node_modules/is-what/dist/isNegativeInteger.js +5 -0
  284. package/.output/server/node_modules/is-what/dist/isNegativeNumber.js +5 -0
  285. package/.output/server/node_modules/is-what/dist/isNull.js +5 -0
  286. package/.output/server/node_modules/is-what/dist/isNullOrUndefined.js +5 -0
  287. package/.output/server/node_modules/is-what/dist/isNumber.js +9 -0
  288. package/.output/server/node_modules/is-what/dist/isObject.js +8 -0
  289. package/.output/server/node_modules/is-what/dist/isObjectLike.js +11 -0
  290. package/.output/server/node_modules/is-what/dist/isOneOf.js +15 -0
  291. package/.output/server/node_modules/is-what/dist/isPlainObject.js +11 -0
  292. package/.output/server/node_modules/is-what/dist/isPositiveInteger.js +5 -0
  293. package/.output/server/node_modules/is-what/dist/isPositiveNumber.js +5 -0
  294. package/.output/server/node_modules/is-what/dist/isPrimitive.js +21 -0
  295. package/.output/server/node_modules/is-what/dist/isPromise.js +5 -0
  296. package/.output/server/node_modules/is-what/dist/isRegExp.js +5 -0
  297. package/.output/server/node_modules/is-what/dist/isSet.js +5 -0
  298. package/.output/server/node_modules/is-what/dist/isString.js +5 -0
  299. package/.output/server/node_modules/is-what/dist/isSymbol.js +5 -0
  300. package/.output/server/node_modules/is-what/dist/isType.js +20 -0
  301. package/.output/server/node_modules/is-what/dist/isUndefined.js +5 -0
  302. package/.output/server/node_modules/is-what/dist/isWeakMap.js +5 -0
  303. package/.output/server/node_modules/is-what/dist/isWeakSet.js +5 -0
  304. package/.output/server/node_modules/is-what/package.json +23 -88
  305. package/.output/server/node_modules/superjson/dist/index.js +9 -6
  306. package/.output/server/node_modules/superjson/dist/pathstringifier.js +13 -2
  307. package/.output/server/node_modules/superjson/dist/plainer.js +23 -11
  308. package/.output/server/node_modules/superjson/dist/transformer.js +4 -1
  309. package/.output/server/node_modules/superjson/package.json +5 -21
  310. package/.output/server/node_modules/ufo/dist/index.mjs +16 -9
  311. package/.output/server/node_modules/ufo/package.json +15 -14
  312. package/.output/server/node_modules/unhead/dist/plugins.mjs +2 -2
  313. package/.output/server/node_modules/unhead/dist/server.mjs +4 -6
  314. package/.output/server/node_modules/unhead/dist/shared/{unhead.DH45uomy.mjs → unhead.BFfcxOoW.mjs} +3 -3
  315. package/.output/server/node_modules/unhead/dist/shared/{unhead.DZbvapt-.mjs → unhead.CbpEuj3y.mjs} +3 -2
  316. package/.output/server/node_modules/unhead/dist/shared/{unhead.Djo8ep_Y.mjs → unhead.ckV6dpEQ.mjs} +1 -1
  317. package/.output/server/node_modules/unhead/dist/shared/{unhead.BpRRHAhY.mjs → unhead.eK9_7LaY.mjs} +16 -12
  318. package/.output/server/node_modules/unhead/dist/utils.mjs +2 -2
  319. package/.output/server/node_modules/unhead/package.json +2 -2
  320. package/.output/server/node_modules/vue/dist/vue.cjs.js +1 -1
  321. package/.output/server/node_modules/vue/dist/vue.cjs.prod.js +1 -1
  322. package/.output/server/node_modules/vue/package.json +6 -6
  323. package/.output/server/node_modules/ws/lib/constants.js +1 -0
  324. package/.output/server/node_modules/ws/lib/websocket-server.js +5 -1
  325. package/.output/server/node_modules/ws/lib/websocket.js +13 -8
  326. package/.output/server/node_modules/ws/package.json +1 -1
  327. package/.output/server/node_modules/zod/package.json +1 -1
  328. package/.output/server/node_modules/zod/v4/classic/checks.js +1 -1
  329. package/.output/server/node_modules/zod/v4/classic/external.js +3 -1
  330. package/.output/server/node_modules/zod/v4/classic/from-json-schema.js +584 -0
  331. package/.output/server/node_modules/zod/v4/classic/schemas.js +121 -4
  332. package/.output/server/node_modules/zod/v4/core/api.js +157 -0
  333. package/.output/server/node_modules/zod/v4/core/checks.js +8 -2
  334. package/.output/server/node_modules/zod/v4/core/core.js +20 -11
  335. package/.output/server/node_modules/zod/v4/core/index.js +2 -0
  336. package/.output/server/node_modules/zod/v4/core/json-schema-generator.js +95 -0
  337. package/.output/server/node_modules/zod/v4/core/json-schema-processors.js +605 -0
  338. package/.output/server/node_modules/zod/v4/core/regexes.js +8 -2
  339. package/.output/server/node_modules/zod/v4/core/registries.js +3 -4
  340. package/.output/server/node_modules/zod/v4/core/schemas.js +204 -66
  341. package/.output/server/node_modules/zod/v4/core/to-json-schema.js +391 -869
  342. package/.output/server/node_modules/zod/v4/core/util.js +58 -8
  343. package/.output/server/node_modules/zod/v4/core/versions.js +2 -2
  344. package/.output/server/node_modules/zod/v4/locales/ar.js +14 -24
  345. package/.output/server/node_modules/zod/v4/locales/az.js +14 -24
  346. package/.output/server/node_modules/zod/v4/locales/be.js +16 -24
  347. package/.output/server/node_modules/zod/v4/locales/bg.js +16 -24
  348. package/.output/server/node_modules/zod/v4/locales/ca.js +14 -25
  349. package/.output/server/node_modules/zod/v4/locales/cs.js +18 -42
  350. package/.output/server/node_modules/zod/v4/locales/da.js +23 -39
  351. package/.output/server/node_modules/zod/v4/locales/de.js +16 -24
  352. package/.output/server/node_modules/zod/v4/locales/en.js +16 -24
  353. package/.output/server/node_modules/zod/v4/locales/eo.js +17 -24
  354. package/.output/server/node_modules/zod/v4/locales/es.js +42 -59
  355. package/.output/server/node_modules/zod/v4/locales/fa.js +16 -24
  356. package/.output/server/node_modules/zod/v4/locales/fi.js +14 -24
  357. package/.output/server/node_modules/zod/v4/locales/fr-CA.js +14 -24
  358. package/.output/server/node_modules/zod/v4/locales/fr.js +16 -24
  359. package/.output/server/node_modules/zod/v4/locales/he.js +175 -78
  360. package/.output/server/node_modules/zod/v4/locales/hu.js +16 -25
  361. package/.output/server/node_modules/zod/v4/locales/hy.js +147 -0
  362. package/.output/server/node_modules/zod/v4/locales/id.js +14 -24
  363. package/.output/server/node_modules/zod/v4/locales/index.js +2 -0
  364. package/.output/server/node_modules/zod/v4/locales/is.js +16 -24
  365. package/.output/server/node_modules/zod/v4/locales/it.js +16 -25
  366. package/.output/server/node_modules/zod/v4/locales/ja.js +16 -24
  367. package/.output/server/node_modules/zod/v4/locales/ka.js +19 -32
  368. package/.output/server/node_modules/zod/v4/locales/km.js +17 -24
  369. package/.output/server/node_modules/zod/v4/locales/ko.js +14 -24
  370. package/.output/server/node_modules/zod/v4/locales/lt.js +27 -54
  371. package/.output/server/node_modules/zod/v4/locales/mk.js +16 -25
  372. package/.output/server/node_modules/zod/v4/locales/ms.js +15 -24
  373. package/.output/server/node_modules/zod/v4/locales/nl.js +25 -32
  374. package/.output/server/node_modules/zod/v4/locales/no.js +16 -24
  375. package/.output/server/node_modules/zod/v4/locales/ota.js +17 -25
  376. package/.output/server/node_modules/zod/v4/locales/pl.js +16 -24
  377. package/.output/server/node_modules/zod/v4/locales/ps.js +16 -24
  378. package/.output/server/node_modules/zod/v4/locales/pt.js +16 -24
  379. package/.output/server/node_modules/zod/v4/locales/ru.js +16 -24
  380. package/.output/server/node_modules/zod/v4/locales/sl.js +16 -24
  381. package/.output/server/node_modules/zod/v4/locales/sv.js +16 -24
  382. package/.output/server/node_modules/zod/v4/locales/ta.js +17 -24
  383. package/.output/server/node_modules/zod/v4/locales/th.js +17 -24
  384. package/.output/server/node_modules/zod/v4/locales/tr.js +14 -24
  385. package/.output/server/node_modules/zod/v4/locales/uk.js +16 -25
  386. package/.output/server/node_modules/zod/v4/locales/ur.js +17 -24
  387. package/.output/server/node_modules/zod/v4/locales/uz.js +109 -0
  388. package/.output/server/node_modules/zod/v4/locales/vi.js +16 -24
  389. package/.output/server/node_modules/zod/v4/locales/yo.js +16 -24
  390. package/.output/server/node_modules/zod/v4/locales/zh-CN.js +17 -24
  391. package/.output/server/node_modules/zod/v4/locales/zh-TW.js +14 -24
  392. package/.output/server/package.json +22 -22
  393. package/package.json +6 -6
  394. package/.output/public/_nuxt/-oaD50UK.js +0 -1
  395. package/.output/public/_nuxt/0ekw3e2V.js +0 -1
  396. package/.output/public/_nuxt/1f5tAgHw.js +0 -1
  397. package/.output/public/_nuxt/5ggY4uig.js +0 -1
  398. package/.output/public/_nuxt/6nHXG8SA.js +0 -1
  399. package/.output/public/_nuxt/9hmcqHPO.js +0 -1
  400. package/.output/public/_nuxt/BBxmzUt6.js +0 -1
  401. package/.output/public/_nuxt/BE2KfCdU.js +0 -1
  402. package/.output/public/_nuxt/BFNM2w_f.js +0 -1
  403. package/.output/public/_nuxt/BGLu70Yq.js +0 -1
  404. package/.output/public/_nuxt/BIuj43Wh.js +0 -1
  405. package/.output/public/_nuxt/BLsOQd1H.js +0 -280
  406. package/.output/public/_nuxt/BNGfscqk.js +0 -1
  407. package/.output/public/_nuxt/BQvybpQq.js +0 -1
  408. package/.output/public/_nuxt/BU7Cl-8B.js +0 -1
  409. package/.output/public/_nuxt/BUXOnL59.js +0 -1
  410. package/.output/public/_nuxt/Bbwybh3N.js +0 -2
  411. package/.output/public/_nuxt/BczD6j-v.js +0 -1
  412. package/.output/public/_nuxt/BepWV7mh.js +0 -1
  413. package/.output/public/_nuxt/Bh0qehhp.js +0 -1
  414. package/.output/public/_nuxt/Bl2oy6fF.js +0 -1
  415. package/.output/public/_nuxt/BmDdxTjo.js +0 -1
  416. package/.output/public/_nuxt/BqeRdtD4.js +0 -2
  417. package/.output/public/_nuxt/BvAqAH-y.js +0 -1
  418. package/.output/public/_nuxt/BxZD33h1.js +0 -1
  419. package/.output/public/_nuxt/C4zpeTvm.js +0 -1
  420. package/.output/public/_nuxt/C7Pw0Ztw.js +0 -1
  421. package/.output/public/_nuxt/C8-UwF3o.js +0 -1
  422. package/.output/public/_nuxt/CCd08HS_.js +0 -1
  423. package/.output/public/_nuxt/CEYFgC8B.js +0 -1
  424. package/.output/public/_nuxt/CHadp7IV.js +0 -1
  425. package/.output/public/_nuxt/CHh-QcGE.js +0 -1
  426. package/.output/public/_nuxt/CIUZ1G5V.js +0 -1
  427. package/.output/public/_nuxt/CJ6lOLXp.js +0 -1
  428. package/.output/public/_nuxt/CN9dMhDM.js +0 -1
  429. package/.output/public/_nuxt/CQ4fj8p0.js +0 -1
  430. package/.output/public/_nuxt/CTWiQX6C.js +0 -1
  431. package/.output/public/_nuxt/CXxzV4dz.js +0 -1
  432. package/.output/public/_nuxt/CZlF05X6.js +0 -1
  433. package/.output/public/_nuxt/CatV_12G.js +0 -1
  434. package/.output/public/_nuxt/CeMkeBDb.js +0 -1
  435. package/.output/public/_nuxt/CelvVQyk.js +0 -1
  436. package/.output/public/_nuxt/CfV455SO.js +0 -1
  437. package/.output/public/_nuxt/CfeIJUat.js +0 -1
  438. package/.output/public/_nuxt/CfqrF6sE.js +0 -1
  439. package/.output/public/_nuxt/Cfs9EX91.js +0 -1
  440. package/.output/public/_nuxt/ChH_ziBE.js +0 -1
  441. package/.output/public/_nuxt/ChM1GEGa.js +0 -1
  442. package/.output/public/_nuxt/Cu8OsqJL.js +0 -1
  443. package/.output/public/_nuxt/CusJppg0.js +0 -1
  444. package/.output/public/_nuxt/Cv9koXgw.js +0 -1
  445. package/.output/public/_nuxt/CvELRi2k.js +0 -5
  446. package/.output/public/_nuxt/Cw6nGM9K.js +0 -1
  447. package/.output/public/_nuxt/CwUT5n6w.js +0 -1
  448. package/.output/public/_nuxt/D-AHKB2i.js +0 -6
  449. package/.output/public/_nuxt/D-kcn2fr.js +0 -1
  450. package/.output/public/_nuxt/D08WgyRC.js +0 -1
  451. package/.output/public/_nuxt/D1Jbgd7O.js +0 -13
  452. package/.output/public/_nuxt/D1ibY74j.js +0 -1
  453. package/.output/public/_nuxt/D22FLkUw.js +0 -1
  454. package/.output/public/_nuxt/D2CYqzqI.js +0 -1
  455. package/.output/public/_nuxt/D34EmFco.js +0 -1
  456. package/.output/public/_nuxt/D4OhWExI.js +0 -1
  457. package/.output/public/_nuxt/DDHikT5j.js +0 -1
  458. package/.output/public/_nuxt/DDTT3lYc.js +0 -1
  459. package/.output/public/_nuxt/DHLkt8Yr.js +0 -1
  460. package/.output/public/_nuxt/DHuTDtaT.js +0 -12
  461. package/.output/public/_nuxt/DKYwYmdq.js +0 -1
  462. package/.output/public/_nuxt/DMDPKkZ0.js +0 -1
  463. package/.output/public/_nuxt/DNEoBllO.js +0 -1
  464. package/.output/public/_nuxt/DRzH1pOL.js +0 -1
  465. package/.output/public/_nuxt/DSUF3NDE.js +0 -1
  466. package/.output/public/_nuxt/DTAwr92a.js +0 -1
  467. package/.output/public/_nuxt/DWmtspXK.js +0 -1
  468. package/.output/public/_nuxt/DXh9HyqW.js +0 -1
  469. package/.output/public/_nuxt/DXtl0MQI.js +0 -1
  470. package/.output/public/_nuxt/D_zCY0Xl.js +0 -1
  471. package/.output/public/_nuxt/DaZJpzOl.js +0 -1
  472. package/.output/public/_nuxt/Df68jz8_.js +0 -1
  473. package/.output/public/_nuxt/DhQfdAdO.js +0 -1
  474. package/.output/public/_nuxt/DiinP2Uv.js +0 -1
  475. package/.output/public/_nuxt/DljmTZ5-.js +0 -1
  476. package/.output/public/_nuxt/Dm4QKadl.js +0 -26
  477. package/.output/public/_nuxt/DmCK90gL.js +0 -1
  478. package/.output/public/_nuxt/Dn2_MT6a.js +0 -1
  479. package/.output/public/_nuxt/Don94nLk.js +0 -1
  480. package/.output/public/_nuxt/Dr8Zlu6v.js +0 -1
  481. package/.output/public/_nuxt/Drp5UXmf.js +0 -1
  482. package/.output/public/_nuxt/DtFoCuZo.js +0 -1
  483. package/.output/public/_nuxt/DxuitVdg.js +0 -2
  484. package/.output/public/_nuxt/DyJlTyXw.js +0 -1
  485. package/.output/public/_nuxt/Jep7L2Wt.js +0 -1
  486. package/.output/public/_nuxt/LUl67wzp.js +0 -1
  487. package/.output/public/_nuxt/M2rHlmBj.js +0 -1
  488. package/.output/public/_nuxt/N3RVRbLb.js +0 -1
  489. package/.output/public/_nuxt/NBseiqgx.js +0 -1
  490. package/.output/public/_nuxt/PoHY5YXO.js +0 -1
  491. package/.output/public/_nuxt/SdwduGaY.js +0 -1
  492. package/.output/public/_nuxt/SytC7lKg.js +0 -1
  493. package/.output/public/_nuxt/U3pqMjXV.js +0 -1
  494. package/.output/public/_nuxt/UInuXPgp.js +0 -1
  495. package/.output/public/_nuxt/YXI84j39.js +0 -2
  496. package/.output/public/_nuxt/ZZ6g6dXy.js +0 -2
  497. package/.output/public/_nuxt/builds/meta/033f259e-8ba9-4c82-8824-56febea80b7d.json +0 -1
  498. package/.output/public/_nuxt/dglhsJpM.js +0 -1
  499. package/.output/public/_nuxt/dwrHE3tM.js +0 -14
  500. package/.output/public/_nuxt/edge-router-yEORMNQw.js +0 -4
  501. package/.output/public/_nuxt/error-404.CttAF9VE.css +0 -1
  502. package/.output/public/_nuxt/error-500.DXXd6-x4.css +0 -1
  503. package/.output/public/_nuxt/ga9TZ2z5.js +0 -1
  504. package/.output/public/_nuxt/graph-layout-CFj469YF.js +0 -1
  505. package/.output/public/_nuxt/graph-resolver-eG1ZUsYn.js +0 -166
  506. package/.output/public/_nuxt/ov4D99rA.js +0 -1
  507. package/.output/public/_nuxt/qYU5Tabh.js +0 -1
  508. package/.output/public/_nuxt/qliWkHmV.js +0 -1
  509. package/.output/public/_nuxt/vuetify.BrkCt9t5.css +0 -5
  510. package/.output/public/_nuxt/yaml.worker-CQ6dFw39.js +0 -405
  511. package/.output/server/node_modules/entities/lib/generated/decode-data-html.js +0 -9
  512. package/.output/server/node_modules/entities/lib/generated/decode-data-xml.js +0 -9
@@ -5,6 +5,7 @@ import {
5
5
  NEGATIVE_INFINITY,
6
6
  NEGATIVE_ZERO,
7
7
  POSITIVE_INFINITY,
8
+ SPARSE,
8
9
  UNDEFINED
9
10
  } from './constants.js';
10
11
 
@@ -33,6 +34,13 @@ export function unflatten(parsed, revivers) {
33
34
 
34
35
  const hydrated = Array(values.length);
35
36
 
37
+ /**
38
+ * A set of values currently being hydrated with custom revivers,
39
+ * used to detect invalid cyclical dependencies
40
+ * @type {Set<number> | null}
41
+ */
42
+ let hydrating = null;
43
+
36
44
  /**
37
45
  * @param {number} index
38
46
  * @returns {any}
@@ -58,9 +66,30 @@ export function unflatten(parsed, revivers) {
58
66
  if (typeof value[0] === 'string') {
59
67
  const type = value[0];
60
68
 
61
- const reviver = revivers?.[type];
69
+ const reviver =
70
+ revivers && Object.hasOwn(revivers, type)
71
+ ? revivers[type]
72
+ : undefined;
73
+
62
74
  if (reviver) {
63
- return (hydrated[index] = reviver(hydrate(value[1])));
75
+ let i = value[1];
76
+ if (typeof i !== 'number') {
77
+ // if it's not a number, it was serialized by a builtin reviver
78
+ // so we need to munge it into the format expected by a custom reviver
79
+ i = values.push(value[1]) - 1;
80
+ }
81
+
82
+ hydrating ??= new Set();
83
+
84
+ if (hydrating.has(i)) {
85
+ throw new Error('Invalid circular reference');
86
+ }
87
+
88
+ hydrating.add(i);
89
+ hydrated[index] = reviver(hydrate(i));
90
+ hydrating.delete(i);
91
+
92
+ return hydrated[index];
64
93
  }
65
94
 
66
95
  switch (type) {
@@ -115,8 +144,16 @@ export function unflatten(parsed, revivers) {
115
144
  case 'Float64Array':
116
145
  case 'BigInt64Array':
117
146
  case 'BigUint64Array': {
147
+ if (values[value[1]][0] !== 'ArrayBuffer') {
148
+ // without this, if we receive malformed input we could
149
+ // end up trying to hydrate in a circle or allocate
150
+ // huge amounts of memory when we call `new TypedArrayConstructor(buffer)`
151
+ throw new Error('Invalid data');
152
+ }
153
+
118
154
  const TypedArrayConstructor = globalThis[type];
119
- const typedArray = new TypedArrayConstructor(hydrate(value[1]));
155
+ const buffer = hydrate(value[1]);
156
+ const typedArray = new TypedArrayConstructor(buffer);
120
157
 
121
158
  hydrated[index] =
122
159
  value[2] !== undefined
@@ -128,6 +165,9 @@ export function unflatten(parsed, revivers) {
128
165
 
129
166
  case 'ArrayBuffer': {
130
167
  const base64 = value[1];
168
+ if (typeof base64 !== 'string') {
169
+ throw new Error('Invalid ArrayBuffer encoding');
170
+ }
131
171
  const arraybuffer = decode64(base64);
132
172
  hydrated[index] = arraybuffer;
133
173
  break;
@@ -162,6 +202,17 @@ export function unflatten(parsed, revivers) {
162
202
  default:
163
203
  throw new Error(`Unknown type ${type}`);
164
204
  }
205
+ } else if (value[0] === SPARSE) {
206
+ // Sparse array encoding: [SPARSE, length, idx, val, idx, val, ...]
207
+ const len = value[1];
208
+
209
+ const array = new Array(len);
210
+ hydrated[index] = array;
211
+
212
+ for (let i = 2; i < value.length; i += 2) {
213
+ const idx = value[i];
214
+ array[idx] = hydrate(value[i + 1]);
215
+ }
165
216
  } else {
166
217
  const array = new Array(value.length);
167
218
  hydrated[index] = array;
@@ -178,7 +229,7 @@ export function unflatten(parsed, revivers) {
178
229
  const object = {};
179
230
  hydrated[index] = object;
180
231
 
181
- for (const key in value) {
232
+ for (const key of Object.keys(value)) {
182
233
  if (key === '__proto__') {
183
234
  throw new Error('Cannot parse an object with a `__proto__` property');
184
235
  }
@@ -5,7 +5,8 @@ import {
5
5
  is_plain_object,
6
6
  is_primitive,
7
7
  stringify_key,
8
- stringify_string
8
+ stringify_string,
9
+ valid_array_indices
9
10
  } from './utils.js';
10
11
  import {
11
12
  HOLE,
@@ -13,6 +14,7 @@ import {
13
14
  NEGATIVE_INFINITY,
14
15
  NEGATIVE_ZERO,
15
16
  POSITIVE_INFINITY,
17
+ SPARSE,
16
18
  UNDEFINED
17
19
  } from './constants.js';
18
20
  import { encode64 } from './base64.js';
@@ -44,10 +46,6 @@ export function stringify(value, reducers) {
44
46
 
45
47
  /** @param {any} thing */
46
48
  function flatten(thing) {
47
- if (typeof thing === 'function') {
48
- throw new DevalueError(`Cannot stringify a function`, keys);
49
- }
50
-
51
49
  if (thing === undefined) return UNDEFINED;
52
50
  if (Number.isNaN(thing)) return NAN;
53
51
  if (thing === Infinity) return POSITIVE_INFINITY;
@@ -67,6 +65,10 @@ export function stringify(value, reducers) {
67
65
  }
68
66
  }
69
67
 
68
+ if (typeof thing === 'function') {
69
+ throw new DevalueError(`Cannot stringify a function`, keys, thing, value);
70
+ }
71
+
70
72
  let str = '';
71
73
 
72
74
  if (is_primitive(thing)) {
@@ -105,24 +107,89 @@ export function stringify(value, reducers) {
105
107
  : `["RegExp",${stringify_string(source)}]`;
106
108
  break;
107
109
 
108
- case 'Array':
110
+ case 'Array': {
111
+ // For dense arrays (no holes), we iterate normally.
112
+ // When we encounter the first hole, we call Object.keys
113
+ // to determine the sparseness, then decide between:
114
+ // - HOLE encoding: [-2, val, -2, ...] (default)
115
+ // - Sparse encoding: [-7, length, idx, val, ...] (for very sparse arrays)
116
+ // Only the sparse path avoids iterating every slot, which
117
+ // is what protects against the DoS of e.g. `arr[1000000] = 1`.
118
+ let mostly_dense = false;
119
+
109
120
  str = '[';
110
121
 
111
122
  for (let i = 0; i < thing.length; i += 1) {
112
123
  if (i > 0) str += ',';
113
124
 
114
- if (i in thing) {
125
+ if (Object.hasOwn(thing, i)) {
115
126
  keys.push(`[${i}]`);
116
127
  str += flatten(thing[i]);
117
128
  keys.pop();
118
- } else {
129
+ } else if (mostly_dense) {
130
+ // Use dense encoding. The heuristic guarantees the
131
+ // array is only mildly sparse, so iterating over every
132
+ // slot is fine.
119
133
  str += HOLE;
134
+ } else {
135
+ // Decide between HOLE encoding and sparse encoding.
136
+ //
137
+ // HOLE encoding: each hole is serialized as the HOLE
138
+ // sentinel (-2). For example, [, "a", ,] becomes
139
+ // [-2, 0, -2]. Each hole costs 3 chars ("-2" + comma).
140
+ //
141
+ // Sparse encoding: lists only populated indices.
142
+ // For example, [, "a", ,] becomes [-7, 3, 1, 0] — the
143
+ // -7 sentinel, the array length (3), then index-value
144
+ // pairs. This avoids paying per-hole, but each element
145
+ // costs extra chars to write its index.
146
+ //
147
+ // The values are the same size either way, so the
148
+ // choice comes down to structural overhead:
149
+ //
150
+ // HOLE overhead:
151
+ // 3 chars per hole ("-2" + comma)
152
+ // = (L - P) * 3
153
+ //
154
+ // Sparse overhead:
155
+ // "-7," — 3 chars (sparse sentinel + comma)
156
+ // + length + "," — (d + 1) chars (array length + comma)
157
+ // + per element: index + "," — (d + 1) chars
158
+ // = (4 + d) + P * (d + 1)
159
+ //
160
+ // where L is the array length, P is the number of
161
+ // populated elements, and d is the number of digits
162
+ // in L (an upper bound on the digits in any index).
163
+ //
164
+ // Sparse encoding is cheaper when:
165
+ // (4 + d) + P * (d + 1) < (L - P) * 3
166
+ const populated_keys = valid_array_indices(/** @type {any[]} */ (thing));
167
+ const population = populated_keys.length;
168
+ const d = String(thing.length).length;
169
+
170
+ const hole_cost = (thing.length - population) * 3;
171
+ const sparse_cost = 4 + d + population * (d + 1);
172
+
173
+ if (hole_cost > sparse_cost) {
174
+ str = '[' + SPARSE + ',' + thing.length;
175
+ for (let j = 0; j < populated_keys.length; j++) {
176
+ const key = populated_keys[j];
177
+ keys.push(`[${key}]`);
178
+ str += ',' + key + ',' + flatten(thing[key]);
179
+ keys.pop();
180
+ }
181
+ break;
182
+ } else {
183
+ mostly_dense = true;
184
+ str += HOLE;
185
+ }
120
186
  }
121
187
  }
122
188
 
123
189
  str += ']';
124
190
 
125
191
  break;
192
+ }
126
193
 
127
194
  case 'Set':
128
195
  str = '["Set"';
@@ -200,20 +267,33 @@ export function stringify(value, reducers) {
200
267
  if (!is_plain_object(thing)) {
201
268
  throw new DevalueError(
202
269
  `Cannot stringify arbitrary non-POJOs`,
203
- keys
270
+ keys,
271
+ thing,
272
+ value
204
273
  );
205
274
  }
206
275
 
207
276
  if (enumerable_symbols(thing).length > 0) {
208
277
  throw new DevalueError(
209
278
  `Cannot stringify POJOs with symbolic keys`,
210
- keys
279
+ keys,
280
+ thing,
281
+ value
211
282
  );
212
283
  }
213
284
 
214
285
  if (Object.getPrototypeOf(thing) === null) {
215
286
  str = '["null"';
216
- for (const key in thing) {
287
+ for (const key of Object.keys(thing)) {
288
+ if (key === '__proto__') {
289
+ throw new DevalueError(
290
+ `Cannot stringify objects with __proto__ keys`,
291
+ keys,
292
+ thing,
293
+ value
294
+ );
295
+ }
296
+
217
297
  keys.push(stringify_key(key));
218
298
  str += `,${stringify_string(key)},${flatten(thing[key])}`;
219
299
  keys.pop();
@@ -222,7 +302,16 @@ export function stringify(value, reducers) {
222
302
  } else {
223
303
  str = '{';
224
304
  let started = false;
225
- for (const key in thing) {
305
+ for (const key of Object.keys(thing)) {
306
+ if (key === '__proto__') {
307
+ throw new DevalueError(
308
+ `Cannot stringify objects with __proto__ keys`,
309
+ keys,
310
+ thing,
311
+ value
312
+ );
313
+ }
314
+
226
315
  if (started) str += ',';
227
316
  started = true;
228
317
  keys.push(stringify_key(key));
@@ -6,7 +6,8 @@ import {
6
6
  is_plain_object,
7
7
  is_primitive,
8
8
  stringify_key,
9
- stringify_string
9
+ stringify_string,
10
+ valid_array_indices
10
11
  } from './utils.js';
11
12
 
12
13
  const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$';
@@ -29,10 +30,6 @@ export function uneval(value, replacer) {
29
30
 
30
31
  /** @param {any} thing */
31
32
  function walk(thing) {
32
- if (typeof thing === 'function') {
33
- throw new DevalueError(`Cannot stringify a function`, keys);
34
- }
35
-
36
33
  if (!is_primitive(thing)) {
37
34
  if (counts.has(thing)) {
38
35
  counts.set(thing, counts.get(thing) + 1);
@@ -50,6 +47,10 @@ export function uneval(value, replacer) {
50
47
  }
51
48
  }
52
49
 
50
+ if (typeof thing === 'function') {
51
+ throw new DevalueError(`Cannot stringify a function`, keys, thing, value);
52
+ }
53
+
53
54
  const type = get_type(thing);
54
55
 
55
56
  switch (type) {
@@ -116,18 +117,31 @@ export function uneval(value, replacer) {
116
117
  if (!is_plain_object(thing)) {
117
118
  throw new DevalueError(
118
119
  `Cannot stringify arbitrary non-POJOs`,
119
- keys
120
+ keys,
121
+ thing,
122
+ value
120
123
  );
121
124
  }
122
125
 
123
126
  if (enumerable_symbols(thing).length > 0) {
124
127
  throw new DevalueError(
125
128
  `Cannot stringify POJOs with symbolic keys`,
126
- keys
129
+ keys,
130
+ thing,
131
+ value
127
132
  );
128
133
  }
129
134
 
130
- for (const key in thing) {
135
+ for (const key of Object.keys(thing)) {
136
+ if (key === '__proto__') {
137
+ throw new DevalueError(
138
+ `Cannot stringify objects with __proto__ keys`,
139
+ keys,
140
+ thing,
141
+ value
142
+ );
143
+ }
144
+
131
145
  keys.push(stringify_key(key));
132
146
  walk(thing[key]);
133
147
  keys.pop();
@@ -186,12 +200,85 @@ export function uneval(value, replacer) {
186
200
  case 'URLSearchParams':
187
201
  return `new URLSearchParams(${stringify_string(thing.toString())})`;
188
202
 
189
- case 'Array':
190
- const members = /** @type {any[]} */ (thing).map((v, i) =>
191
- i in thing ? stringify(v) : ''
192
- );
203
+ case 'Array': {
204
+ // For dense arrays (no holes), we iterate normally.
205
+ // When we encounter the first hole, we call Object.keys
206
+ // to determine the sparseness, then decide between:
207
+ // - Array literal with holes: [,"a",,] (default)
208
+ // - Object.assign: Object.assign(Array(n),{...}) (for very sparse arrays)
209
+ // Only the Object.assign path avoids iterating every slot, which
210
+ // is what protects against the DoS of e.g. `arr[1000000] = 1`.
211
+ let has_holes = false;
212
+
213
+ let result = '[';
214
+
215
+ for (let i = 0; i < thing.length; i += 1) {
216
+ if (i > 0) result += ',';
217
+
218
+ if (Object.hasOwn(thing, i)) {
219
+ result += stringify(thing[i]);
220
+ } else if (!has_holes) {
221
+ // Decide between array literal and Object.assign.
222
+ //
223
+ // Array literal: holes are consecutive commas.
224
+ // For example, [, "a", ,] is written as [,"a",,].
225
+ // Each hole costs 1 char (a comma).
226
+ //
227
+ // Object.assign: populated indices are listed explicitly.
228
+ // For example, [, "a", ,] would be written as
229
+ // Object.assign(Array(3),{1:"a"}). This avoids paying
230
+ // per-hole, but has a large fixed overhead for the
231
+ // "Object.assign(Array(n),{...})" wrapper, and each
232
+ // element costs extra chars for its index and colon.
233
+ //
234
+ // The serialized values are the same size either way, so
235
+ // the choice comes down to the structural overhead:
236
+ //
237
+ // Array literal overhead:
238
+ // 1 char per element or hole (comma separators)
239
+ // + 2 chars for "[" and "]"
240
+ // = L + 2
241
+ //
242
+ // Object.assign overhead:
243
+ // "Object.assign(Array(" — 20 chars
244
+ // + length — d chars
245
+ // + "),{" — 3 chars
246
+ // + for each populated element:
247
+ // index + ":" + "," — (d + 2) chars
248
+ // + "})" — 2 chars
249
+ // = (25 + d) + P * (d + 2)
250
+ //
251
+ // where L is the array length, P is the number of
252
+ // populated elements, and d is the number of digits
253
+ // in L (an upper bound on the digits in any index).
254
+ //
255
+ // Object.assign is cheaper when:
256
+ // (25 + d) + P * (d + 2) < L + 2
257
+ const populated_keys = valid_array_indices(/** @type {any[]} */ (thing));
258
+ const population = populated_keys.length;
259
+ const d = String(thing.length).length;
260
+
261
+ const hole_cost = thing.length + 2;
262
+ const sparse_cost = (25 + d) + population * (d + 2);
263
+
264
+ if (hole_cost > sparse_cost) {
265
+ const entries = populated_keys
266
+ .map((k) => `${k}:${stringify(thing[k])}`)
267
+ .join(',');
268
+ return `Object.assign(Array(${thing.length}),{${entries}})`;
269
+ }
270
+
271
+ // Re-process this index as a hole in the array literal
272
+ has_holes = true;
273
+ i -= 1;
274
+ }
275
+ // else: already decided on array literal, hole is just an empty slot
276
+ // (the comma separator is all we need — no content for this position)
277
+ }
278
+
193
279
  const tail = thing.length === 0 || thing.length - 1 in thing ? '' : ',';
194
- return `[${members.join(',')}${tail}]`;
280
+ return result + tail + ']';
281
+ }
195
282
 
196
283
  case 'Set':
197
284
  case 'Map':
@@ -15,11 +15,15 @@ export class DevalueError extends Error {
15
15
  /**
16
16
  * @param {string} message
17
17
  * @param {string[]} keys
18
+ * @param {any} [value] - The value that failed to be serialized
19
+ * @param {any} [root] - The root value being serialized
18
20
  */
19
- constructor(message, keys) {
21
+ constructor(message, keys, value, root) {
20
22
  super(message);
21
23
  this.name = 'DevalueError';
22
24
  this.path = keys.join('');
25
+ this.value = value;
26
+ this.root = root;
23
27
  }
24
28
  }
25
29
 
@@ -112,3 +116,33 @@ const is_identifier = /^[a-zA-Z_$][a-zA-Z_$0-9]*$/;
112
116
  export function stringify_key(key) {
113
117
  return is_identifier.test(key) ? '.' + key : '[' + JSON.stringify(key) + ']';
114
118
  }
119
+
120
+ /** @param {string} s */
121
+ function is_valid_array_index(s) {
122
+ if (s.length === 0) return false;
123
+ if (s.length > 1 && s.charCodeAt(0) === 48) return false; // leading zero
124
+ for (let i = 0; i < s.length; i++) {
125
+ const c = s.charCodeAt(i);
126
+ if (c < 48 || c > 57) return false;
127
+ }
128
+ // by this point we know it's a string of digits, but it has to be within the range of valid array indices
129
+ const n = +s;
130
+ if (n >= 2 ** 32 - 1) return false;
131
+ if (n < 0) return false;
132
+ return true;
133
+ }
134
+
135
+ /**
136
+ * Finds the populated indices of an array.
137
+ * @param {unknown[]} array
138
+ */
139
+ export function valid_array_indices(array) {
140
+ const keys = Object.keys(array);
141
+ for (var i = keys.length - 1; i >= 0; i--) {
142
+ if (is_valid_array_index(keys[i])) {
143
+ break;
144
+ }
145
+ }
146
+ keys.length = i + 1;
147
+ return keys;
148
+ }
@@ -2,8 +2,10 @@
2
2
  // Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
3
3
  var _a;
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.replaceCodePoint = exports.fromCodePoint = void 0;
6
- var decodeMap = new Map([
5
+ exports.fromCodePoint = void 0;
6
+ exports.replaceCodePoint = replaceCodePoint;
7
+ exports.decodeCodePoint = decodeCodePoint;
8
+ const decodeMap = new Map([
7
9
  [0, 65533],
8
10
  // C1 Unicode control character reference replacements
9
11
  [128, 8364],
@@ -38,17 +40,17 @@ var decodeMap = new Map([
38
40
  * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
39
41
  */
40
42
  exports.fromCodePoint =
41
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins
42
- (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {
43
- var output = "";
44
- if (codePoint > 0xffff) {
45
- codePoint -= 0x10000;
46
- output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
47
- codePoint = 0xdc00 | (codePoint & 0x3ff);
43
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins
44
+ (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : ((codePoint) => {
45
+ let output = "";
46
+ if (codePoint > 65535) {
47
+ codePoint -= 65536;
48
+ output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);
49
+ codePoint = 56320 | (codePoint & 1023);
48
50
  }
49
51
  output += String.fromCharCode(codePoint);
50
52
  return output;
51
- };
53
+ });
52
54
  /**
53
55
  * Replace the given code point with a replacement character if it is a
54
56
  * surrogate or is outside the valid range. Otherwise return the code
@@ -56,12 +58,12 @@ exports.fromCodePoint =
56
58
  */
57
59
  function replaceCodePoint(codePoint) {
58
60
  var _a;
59
- if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
60
- return 0xfffd;
61
+ if ((codePoint >= 55296 && codePoint <= 57343) ||
62
+ codePoint > 1114111) {
63
+ return 65533;
61
64
  }
62
65
  return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
63
66
  }
64
- exports.replaceCodePoint = replaceCodePoint;
65
67
  /**
66
68
  * Replace the code point if relevant, then convert it to a string.
67
69
  *
@@ -72,5 +74,4 @@ exports.replaceCodePoint = replaceCodePoint;
72
74
  function decodeCodePoint(codePoint) {
73
75
  return (0, exports.fromCodePoint)(replaceCodePoint(codePoint));
74
76
  }
75
- exports.default = decodeCodePoint;
76
- //# sourceMappingURL=decode_codepoint.js.map
77
+ //# sourceMappingURL=decode-codepoint.js.map