@evoscientist/webui 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/dist/.next/BUILD_ID +1 -1
  2. package/dist/.next/build-manifest.json +6 -6
  3. package/dist/.next/prerender-manifest.json +6 -6
  4. package/dist/.next/required-server-files.json +7 -1
  5. package/dist/.next/server/app/_global-error/page/build-manifest.json +3 -3
  6. package/dist/.next/server/app/_global-error/page.js +3 -3
  7. package/dist/.next/server/app/_global-error/page.js.nft.json +1 -1
  8. package/dist/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/dist/.next/server/app/_global-error.html +1 -1
  10. package/dist/.next/server/app/_global-error.meta +8 -0
  11. package/dist/.next/server/app/_global-error.rsc +1 -1
  12. package/dist/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  13. package/dist/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  14. package/dist/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/dist/.next/server/app/_not-found/page/build-manifest.json +3 -3
  16. package/dist/.next/server/app/_not-found/page.js +3 -3
  17. package/dist/.next/server/app/_not-found/page.js.nft.json +1 -1
  18. package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  19. package/dist/.next/server/app/_not-found.html +1 -1
  20. package/dist/.next/server/app/_not-found.meta +8 -0
  21. package/dist/.next/server/app/_not-found.rsc +2 -2
  22. package/dist/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  23. package/dist/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  24. package/dist/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  25. package/dist/.next/server/app/api/evosci-config/route.js +1 -1
  26. package/dist/.next/server/app/api/evosci-config/route.js.nft.json +1 -1
  27. package/dist/.next/server/app/api/evosci-config/route_client-reference-manifest.js +1 -1
  28. package/dist/.next/server/app/api/memory/executions/route.js +1 -1
  29. package/dist/.next/server/app/api/memory/executions/route.js.nft.json +1 -1
  30. package/dist/.next/server/app/api/memory/executions/route_client-reference-manifest.js +1 -1
  31. package/dist/.next/server/app/api/memory/observations/route.js +1 -1
  32. package/dist/.next/server/app/api/memory/observations/route.js.nft.json +1 -1
  33. package/dist/.next/server/app/api/memory/observations/route_client-reference-manifest.js +1 -1
  34. package/dist/.next/server/app/api/memory/route.js +1 -1
  35. package/dist/.next/server/app/api/memory/route.js.nft.json +1 -1
  36. package/dist/.next/server/app/api/memory/route_client-reference-manifest.js +1 -1
  37. package/dist/.next/server/app/api/skills/catalog/route.js +1 -1
  38. package/dist/.next/server/app/api/skills/catalog/route.js.nft.json +1 -1
  39. package/dist/.next/server/app/api/skills/catalog/route_client-reference-manifest.js +1 -1
  40. package/dist/.next/server/app/api/skills/detail/route.js +1 -1
  41. package/dist/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
  42. package/dist/.next/server/app/api/skills/detail/route_client-reference-manifest.js +1 -1
  43. package/dist/.next/server/app/api/skills/install/route.js +1 -1
  44. package/dist/.next/server/app/api/skills/install/route.js.nft.json +1 -1
  45. package/dist/.next/server/app/api/skills/install/route_client-reference-manifest.js +1 -1
  46. package/dist/.next/server/app/api/skills/route.js +1 -1
  47. package/dist/.next/server/app/api/skills/route.js.nft.json +1 -1
  48. package/dist/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  49. package/dist/.next/server/app/api/workspace/download/route.js +1 -1
  50. package/dist/.next/server/app/api/workspace/download/route.js.nft.json +1 -1
  51. package/dist/.next/server/app/api/workspace/download/route_client-reference-manifest.js +1 -1
  52. package/dist/.next/server/app/api/workspace/file/route.js +1 -1
  53. package/dist/.next/server/app/api/workspace/file/route.js.nft.json +1 -1
  54. package/dist/.next/server/app/api/workspace/file/route_client-reference-manifest.js +1 -1
  55. package/dist/.next/server/app/api/workspace/route.js +1 -1
  56. package/dist/.next/server/app/api/workspace/route.js.nft.json +1 -1
  57. package/dist/.next/server/app/api/workspace/route_client-reference-manifest.js +1 -1
  58. package/dist/.next/server/app/api/workspace/upload/route.js +1 -1
  59. package/dist/.next/server/app/api/workspace/upload/route.js.nft.json +1 -1
  60. package/dist/.next/server/app/api/workspace/upload/route_client-reference-manifest.js +1 -1
  61. package/dist/.next/server/app/icon.png/route.js +1 -1
  62. package/dist/.next/server/app/icon.png/route.js.nft.json +1 -1
  63. package/dist/.next/server/app/icon.png.meta +1 -1
  64. package/dist/.next/server/app/index.html +1 -1
  65. package/dist/.next/server/app/index.meta +8 -0
  66. package/dist/.next/server/app/index.rsc +3 -3
  67. package/dist/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  68. package/dist/.next/server/app/index.segments/_full.segment.rsc +3 -3
  69. package/dist/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  70. package/dist/.next/server/app/page/build-manifest.json +3 -3
  71. package/dist/.next/server/app/page.js +3 -3
  72. package/dist/.next/server/app/page.js.nft.json +1 -1
  73. package/dist/.next/server/app/page_client-reference-manifest.js +1 -1
  74. package/dist/.next/server/chunks/{[externals]__0l8ei7u._.js → [externals]__12s2uxr._.js} +2 -2
  75. package/dist/.next/server/chunks/[root-of-the-server]__0239a1s._.js +1 -1
  76. package/dist/.next/server/chunks/[root-of-the-server]__0l3yhx4._.js +2 -2
  77. package/dist/.next/server/chunks/{[root-of-the-server]__0c_9zoh._.js → [root-of-the-server]__0lmbd-x._.js} +1 -1
  78. package/dist/.next/server/chunks/{[root-of-the-server]__08gtyud._.js → [root-of-the-server]__0o8rrlw._.js} +1 -1
  79. package/dist/.next/server/chunks/{[root-of-the-server]__0dsauq5._.js → [root-of-the-server]__0tsmn4o._.js} +1 -1
  80. package/dist/.next/server/chunks/{[root-of-the-server]__1nb3ezt._.js → [root-of-the-server]__1301wm3._.js} +1 -1
  81. package/dist/.next/server/chunks/[root-of-the-server]__13z7yld._.js +3 -0
  82. package/dist/.next/server/chunks/[root-of-the-server]__1csj9d7._.js +6 -0
  83. package/dist/.next/server/chunks/[root-of-the-server]__1lhglnn._.js +6 -0
  84. package/dist/.next/server/chunks/[root-of-the-server]__21ai51o._.js +6 -0
  85. package/dist/.next/server/chunks/_00r_7g_._.js +1 -1
  86. package/dist/.next/server/chunks/_042sj8j._.js +1 -1
  87. package/dist/.next/server/chunks/_0lp3ten._.js +1 -1
  88. package/dist/.next/server/chunks/_0m7b81h._.js +1 -1
  89. package/dist/.next/server/chunks/_13lro7d._.js +1 -1
  90. package/dist/.next/server/chunks/_154zcbx._.js +1 -1
  91. package/dist/.next/server/chunks/_1_oz68h._.js +1 -1
  92. package/dist/.next/server/chunks/_1lqtgjk._.js +1 -1
  93. package/dist/.next/server/chunks/ssr/{[root-of-the-server]__0xpcv9w._.js → [root-of-the-server]__0gz0l81._.js} +4 -4
  94. package/dist/.next/server/chunks/ssr/{[root-of-the-server]__0o0ct70._.js → [root-of-the-server]__0ofckpb._.js} +2 -2
  95. package/dist/.next/server/chunks/ssr/[root-of-the-server]__1q-wcrf._.js +5 -5
  96. package/dist/.next/server/chunks/ssr/{node_modules_09pkkps._.js → node_modules_05olfud._.js} +2 -2
  97. package/dist/.next/server/chunks/ssr/{node_modules_0sfdscp._.js → node_modules_0707c4h._.js} +2 -2
  98. package/dist/.next/server/chunks/ssr/{node_modules_13418z5._.js → node_modules_0784dh-._.js} +1 -1
  99. package/dist/.next/server/chunks/ssr/{node_modules_1ic3g8m._.js → node_modules_09zrx7f._.js} +1 -1
  100. package/dist/.next/server/chunks/ssr/{node_modules_1di__7s._.js → node_modules_0afp9zt._.js} +1 -1
  101. package/dist/.next/server/chunks/ssr/{node_modules_0265-rz._.js → node_modules_0bhc62w._.js} +1 -1
  102. package/dist/.next/server/chunks/ssr/{node_modules_0mshgc0._.js → node_modules_0d3782d._.js} +1 -1
  103. package/dist/.next/server/chunks/ssr/{node_modules_0y4c6ao._.js → node_modules_0gczflt._.js} +1 -1
  104. package/dist/.next/server/chunks/ssr/{node_modules_0lb0yml._.js → node_modules_0i24s-o._.js} +2 -2
  105. package/dist/.next/server/chunks/ssr/{node_modules_1frmxq2._.js → node_modules_0jt-p_3._.js} +2 -2
  106. package/dist/.next/server/chunks/ssr/{node_modules_1yw7dd6._.js → node_modules_0jwjxy_._.js} +2 -2
  107. package/dist/.next/server/chunks/ssr/{node_modules_16r2-d4._.js → node_modules_0l773dp._.js} +1 -1
  108. package/dist/.next/server/chunks/ssr/{node_modules_10xlaeo._.js → node_modules_0m8u9v1._.js} +1 -1
  109. package/dist/.next/server/chunks/ssr/{node_modules_0zinurw._.js → node_modules_0ml23_q._.js} +2 -2
  110. package/dist/.next/server/chunks/ssr/{node_modules_0r6hp0p._.js → node_modules_0rlst0z._.js} +1 -1
  111. package/dist/.next/server/chunks/ssr/{node_modules_0f1vz2j._.js → node_modules_0tivl4k._.js} +2 -2
  112. package/dist/.next/server/chunks/ssr/{node_modules_0653v7w._.js → node_modules_13v6kpn._.js} +2 -2
  113. package/dist/.next/server/chunks/ssr/{node_modules_0snw7z_._.js → node_modules_168xluw._.js} +1 -1
  114. package/dist/.next/server/chunks/ssr/{node_modules_0gq6n6w._.js → node_modules_16ad5zu._.js} +2 -2
  115. package/dist/.next/server/chunks/ssr/{node_modules_0tbm7m-._.js → node_modules_18bc60h._.js} +1 -1
  116. package/dist/.next/server/chunks/ssr/{node_modules_0e21i6_._.js → node_modules_1aavgsp._.js} +1 -1
  117. package/dist/.next/server/chunks/ssr/{node_modules_0tfd3hd._.js → node_modules_1bo2k7k._.js} +1 -1
  118. package/dist/.next/server/chunks/ssr/{node_modules_0zz_c7x._.js → node_modules_1ch0k2m._.js} +1 -1
  119. package/dist/.next/server/chunks/ssr/{node_modules_1e3xu34._.js → node_modules_1dc_thh._.js} +1 -1
  120. package/dist/.next/server/chunks/ssr/{node_modules_0fpr7k8._.js → node_modules_1mqkp65._.js} +1 -1
  121. package/dist/.next/server/chunks/ssr/{node_modules_0d4t5t-._.js → node_modules_1t21v31._.js} +1 -1
  122. package/dist/.next/server/chunks/ssr/{node_modules_0revk50._.js → node_modules_1u__5g0._.js} +1 -1
  123. package/dist/.next/server/chunks/ssr/{node_modules_11xf286._.js → node_modules_1vsvm0k._.js} +2 -2
  124. package/dist/.next/server/chunks/ssr/{node_modules_1_uze58._.js → node_modules_1z3x6_m._.js} +1 -1
  125. package/dist/.next/server/chunks/ssr/{node_modules_1nia3l1._.js → node_modules_1zm22k3._.js} +1 -1
  126. package/dist/.next/server/chunks/ssr/{node_modules_katex_dist_katex_mjs_0rmimx0._.js → node_modules_katex_dist_katex_mjs_02vnq48._.js} +1 -1
  127. package/dist/.next/server/chunks/ssr/node_modules_mermaid_dist_chunks_mermaid_core_chunk-DU6HZSFF_mjs_20hsuk9._.js +2 -2
  128. package/dist/.next/server/chunks/ssr/node_modules_next_dist_0nkkbfv._.js +6 -0
  129. package/dist/.next/server/middleware-build-manifest.js +6 -6
  130. package/dist/.next/server/pages/404.html +1 -1
  131. package/dist/.next/server/pages/500.html +1 -1
  132. package/dist/.next/server/server-reference-manifest.js +1 -1
  133. package/dist/.next/server/server-reference-manifest.json +1 -1
  134. package/dist/.next/static/chunks/09nrlxui_thd6.css +3 -0
  135. package/dist/.next/static/chunks/13ss71zqoc3if.js +122 -0
  136. package/dist/.next/static/chunks/{02g89o135esk3.js → 36z02g61bmnkq.js} +1 -1
  137. package/dist/.next/static/chunks/3ckjr-0dkyr_7.js +13 -0
  138. package/dist/.next/static/chunks/{2zf625u-tcwdn.js → 3gwb465dhjxo9.js} +1 -1
  139. package/dist/.next/static/chunks/{3fg_vuz1xt14w.js → 45asonyfr0kfy.js} +1 -1
  140. package/dist/.next/static/chunks/{turbopack-3cm-eevva8ksw.js → turbopack-3it-vrv5uq3no.js} +1 -1
  141. package/dist/node_modules/@next/env/package.json +1 -1
  142. package/dist/node_modules/next/dist/build/swc/index.js +1 -1
  143. package/dist/node_modules/next/dist/compiled/hash.js/sha256/256.js +1 -0
  144. package/dist/node_modules/next/dist/compiled/hash.js/sha256/package.json +1 -0
  145. package/dist/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +17 -17
  146. package/dist/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +18 -18
  147. package/dist/node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js +3 -3
  148. package/dist/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +13 -13
  149. package/dist/node_modules/next/dist/experimental/testmode/fetch.js +10 -2
  150. package/dist/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
  151. package/dist/node_modules/next/dist/lib/typescript/runTypeScriptCli.js +2 -2
  152. package/dist/node_modules/next/dist/lib/verify-typescript-setup.js +3 -1
  153. package/dist/node_modules/next/dist/server/app-render/create-component-styles-and-scripts.js +2 -1
  154. package/dist/node_modules/next/dist/server/base-server.js +1 -2
  155. package/dist/node_modules/next/dist/server/config.js +1 -1
  156. package/dist/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +2 -2
  157. package/dist/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
  158. package/dist/node_modules/next/dist/server/image-optimizer.js +281 -55
  159. package/dist/node_modules/next/dist/server/lib/app-info-log.js +1 -1
  160. package/dist/node_modules/next/dist/server/lib/disk-lru-cache.external.js +7 -1
  161. package/dist/node_modules/next/dist/server/lib/incremental-cache/file-system-cache.js +177 -19
  162. package/dist/node_modules/next/dist/server/lib/incremental-cache/index.js +36 -17
  163. package/dist/node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js +14 -6
  164. package/dist/node_modules/next/dist/server/lib/match-next-data-pathname.js +3 -1
  165. package/dist/node_modules/next/dist/server/lib/node-fs-methods.js +14 -0
  166. package/dist/node_modules/next/dist/server/lib/route-cache-key.js +77 -0
  167. package/dist/node_modules/next/dist/server/lib/router-utils/block-cross-site-dev.js +9 -11
  168. package/dist/node_modules/next/dist/server/lib/start-server.js +1 -1
  169. package/dist/node_modules/next/dist/server/mcp/get-mcp-middleware.js +4 -2
  170. package/dist/node_modules/next/dist/server/next-server.js +7 -3
  171. package/dist/node_modules/next/dist/server/response-cache/index.js +32 -16
  172. package/dist/node_modules/next/dist/server/route-matcher-providers/app-page-route-matcher-provider.js +2 -2
  173. package/dist/node_modules/next/dist/server/route-modules/pages/pages-handler.js +6 -1
  174. package/dist/node_modules/next/dist/server/route-modules/route-module.js +9 -2
  175. package/dist/node_modules/next/dist/server/use-cache/use-cache-wrapper.js +36 -30
  176. package/dist/node_modules/next/dist/shared/lib/router/utils/app-paths.js +18 -1
  177. package/dist/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
  178. package/dist/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
  179. package/dist/node_modules/next/dist/telemetry/events/version.js +2 -2
  180. package/dist/node_modules/next/package.json +11 -11
  181. package/dist/package.json +3 -3
  182. package/dist/server.js +1 -1
  183. package/package.json +3 -3
  184. package/dist/.next/server/chunks/[root-of-the-server]__01e0ekn._.js +0 -6
  185. package/dist/.next/server/chunks/[root-of-the-server]__0d2jr7j._.js +0 -3
  186. package/dist/.next/server/chunks/[root-of-the-server]__0om1fsa._.js +0 -6
  187. package/dist/.next/server/chunks/[root-of-the-server]__19l67fj._.js +0 -6
  188. package/dist/.next/server/chunks/ssr/node_modules_next_dist_1n3w9lb._.js +0 -6
  189. package/dist/.next/static/chunks/357uypdcfkasu.js +0 -13
  190. package/dist/.next/static/chunks/3cmvtz1y1tcd1.css +0 -3
  191. package/dist/.next/static/chunks/3zgnmu3cnahk0.js +0 -122
  192. package/dist/node_modules/@img/colour/color.cjs +0 -1596
  193. package/dist/node_modules/@img/colour/index.cjs +0 -1
  194. package/dist/node_modules/@img/colour/package.json +0 -58
  195. package/dist/node_modules/@img/sharp-darwin-arm64/index.cjs +0 -2
  196. package/dist/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64-0.35.4.node +0 -0
  197. package/dist/node_modules/@img/sharp-darwin-arm64/package.json +0 -41
  198. package/dist/node_modules/@img/sharp-libvips-darwin-arm64/README.md +0 -46
  199. package/dist/node_modules/@img/sharp-libvips-darwin-arm64/lib/glib-2.0/include/glibconfig.h +0 -218
  200. package/dist/node_modules/@img/sharp-libvips-darwin-arm64/lib/index.js +0 -1
  201. package/dist/node_modules/@img/sharp-libvips-darwin-arm64/lib/libvips-cpp.8.18.6.dylib +0 -0
  202. package/dist/node_modules/@img/sharp-libvips-darwin-arm64/package.json +0 -37
  203. package/dist/node_modules/@img/sharp-libvips-darwin-arm64/versions.json +0 -30
  204. package/dist/node_modules/detect-libc/lib/detect-libc.js +0 -313
  205. package/dist/node_modules/detect-libc/lib/elf.js +0 -39
  206. package/dist/node_modules/detect-libc/lib/filesystem.js +0 -51
  207. package/dist/node_modules/detect-libc/lib/process.js +0 -24
  208. package/dist/node_modules/detect-libc/package.json +0 -44
  209. package/dist/node_modules/semver/package.json +0 -38
  210. package/dist/node_modules/sharp/dist/channel.cjs +0 -177
  211. package/dist/node_modules/sharp/dist/channel.mjs +0 -177
  212. package/dist/node_modules/sharp/dist/colour.cjs +0 -199
  213. package/dist/node_modules/sharp/dist/colour.mjs +0 -199
  214. package/dist/node_modules/sharp/dist/composite.cjs +0 -213
  215. package/dist/node_modules/sharp/dist/composite.mjs +0 -213
  216. package/dist/node_modules/sharp/dist/constructor.cjs +0 -511
  217. package/dist/node_modules/sharp/dist/constructor.mjs +0 -511
  218. package/dist/node_modules/sharp/dist/index.cjs +0 -25
  219. package/dist/node_modules/sharp/dist/index.d.cts +0 -1999
  220. package/dist/node_modules/sharp/dist/index.d.mts +0 -2046
  221. package/dist/node_modules/sharp/dist/index.mjs +0 -25
  222. package/dist/node_modules/sharp/dist/input.cjs +0 -819
  223. package/dist/node_modules/sharp/dist/input.mjs +0 -819
  224. package/dist/node_modules/sharp/dist/is.cjs +0 -143
  225. package/dist/node_modules/sharp/dist/is.mjs +0 -143
  226. package/dist/node_modules/sharp/dist/libvips.cjs +0 -212
  227. package/dist/node_modules/sharp/dist/libvips.mjs +0 -212
  228. package/dist/node_modules/sharp/dist/operation.cjs +0 -1002
  229. package/dist/node_modules/sharp/dist/operation.mjs +0 -1002
  230. package/dist/node_modules/sharp/dist/output.cjs +0 -1785
  231. package/dist/node_modules/sharp/dist/output.mjs +0 -1785
  232. package/dist/node_modules/sharp/dist/resize.cjs +0 -617
  233. package/dist/node_modules/sharp/dist/resize.mjs +0 -617
  234. package/dist/node_modules/sharp/dist/sharp.cjs +0 -174
  235. package/dist/node_modules/sharp/dist/sharp.mjs +0 -174
  236. package/dist/node_modules/sharp/dist/utility.cjs +0 -301
  237. package/dist/node_modules/sharp/dist/utility.mjs +0 -301
  238. package/dist/node_modules/sharp/node_modules/semver/classes/comparator.js +0 -143
  239. package/dist/node_modules/sharp/node_modules/semver/classes/range.js +0 -577
  240. package/dist/node_modules/sharp/node_modules/semver/classes/semver.js +0 -350
  241. package/dist/node_modules/sharp/node_modules/semver/functions/clean.js +0 -8
  242. package/dist/node_modules/sharp/node_modules/semver/functions/cmp.js +0 -54
  243. package/dist/node_modules/sharp/node_modules/semver/functions/coerce.js +0 -62
  244. package/dist/node_modules/sharp/node_modules/semver/functions/compare-build.js +0 -9
  245. package/dist/node_modules/sharp/node_modules/semver/functions/compare-loose.js +0 -5
  246. package/dist/node_modules/sharp/node_modules/semver/functions/compare.js +0 -7
  247. package/dist/node_modules/sharp/node_modules/semver/functions/diff.js +0 -60
  248. package/dist/node_modules/sharp/node_modules/semver/functions/eq.js +0 -5
  249. package/dist/node_modules/sharp/node_modules/semver/functions/gt.js +0 -5
  250. package/dist/node_modules/sharp/node_modules/semver/functions/gte.js +0 -5
  251. package/dist/node_modules/sharp/node_modules/semver/functions/inc.js +0 -21
  252. package/dist/node_modules/sharp/node_modules/semver/functions/lt.js +0 -5
  253. package/dist/node_modules/sharp/node_modules/semver/functions/lte.js +0 -5
  254. package/dist/node_modules/sharp/node_modules/semver/functions/major.js +0 -5
  255. package/dist/node_modules/sharp/node_modules/semver/functions/minor.js +0 -5
  256. package/dist/node_modules/sharp/node_modules/semver/functions/neq.js +0 -5
  257. package/dist/node_modules/sharp/node_modules/semver/functions/parse.js +0 -18
  258. package/dist/node_modules/sharp/node_modules/semver/functions/patch.js +0 -5
  259. package/dist/node_modules/sharp/node_modules/semver/functions/prerelease.js +0 -8
  260. package/dist/node_modules/sharp/node_modules/semver/functions/rcompare.js +0 -5
  261. package/dist/node_modules/sharp/node_modules/semver/functions/rsort.js +0 -5
  262. package/dist/node_modules/sharp/node_modules/semver/functions/satisfies.js +0 -12
  263. package/dist/node_modules/sharp/node_modules/semver/functions/sort.js +0 -5
  264. package/dist/node_modules/sharp/node_modules/semver/functions/truncate.js +0 -48
  265. package/dist/node_modules/sharp/node_modules/semver/functions/valid.js +0 -8
  266. package/dist/node_modules/sharp/node_modules/semver/index.js +0 -93
  267. package/dist/node_modules/sharp/node_modules/semver/internal/constants.js +0 -37
  268. package/dist/node_modules/sharp/node_modules/semver/internal/debug.js +0 -11
  269. package/dist/node_modules/sharp/node_modules/semver/internal/identifiers.js +0 -29
  270. package/dist/node_modules/sharp/node_modules/semver/internal/lrucache.js +0 -42
  271. package/dist/node_modules/sharp/node_modules/semver/internal/parse-options.js +0 -17
  272. package/dist/node_modules/sharp/node_modules/semver/internal/re.js +0 -223
  273. package/dist/node_modules/sharp/node_modules/semver/package.json +0 -78
  274. package/dist/node_modules/sharp/node_modules/semver/ranges/gtr.js +0 -6
  275. package/dist/node_modules/sharp/node_modules/semver/ranges/intersects.js +0 -9
  276. package/dist/node_modules/sharp/node_modules/semver/ranges/ltr.js +0 -6
  277. package/dist/node_modules/sharp/node_modules/semver/ranges/max-satisfying.js +0 -27
  278. package/dist/node_modules/sharp/node_modules/semver/ranges/min-satisfying.js +0 -26
  279. package/dist/node_modules/sharp/node_modules/semver/ranges/min-version.js +0 -63
  280. package/dist/node_modules/sharp/node_modules/semver/ranges/outside.js +0 -82
  281. package/dist/node_modules/sharp/node_modules/semver/ranges/simplify.js +0 -49
  282. package/dist/node_modules/sharp/node_modules/semver/ranges/subset.js +0 -249
  283. package/dist/node_modules/sharp/node_modules/semver/ranges/to-comparators.js +0 -10
  284. package/dist/node_modules/sharp/node_modules/semver/ranges/valid.js +0 -13
  285. package/dist/node_modules/sharp/package.json +0 -227
  286. /package/dist/.next/static/{GuE943tuTCMHEfFMDvjrJ → 6-cCzudznf5YJPljIySXU}/_buildManifest.js +0 -0
  287. /package/dist/.next/static/{GuE943tuTCMHEfFMDvjrJ → 6-cCzudznf5YJPljIySXU}/_clientMiddlewareManifest.js +0 -0
  288. /package/dist/.next/static/{GuE943tuTCMHEfFMDvjrJ → 6-cCzudznf5YJPljIySXU}/_ssgManifest.js +0 -0
@@ -83,11 +83,19 @@ function buildResponse(proxyResponse) {
83
83
  headers: new Headers(headers)
84
84
  });
85
85
  }
86
+ function passthroughFetch(originalFetch, request) {
87
+ // Mark the request so the ClientRequest interception in `httpget.ts` sends it
88
+ // to the real server instead of intercepting it again. @mswjs/interceptors
89
+ // intercepts at the TCP level, so an unmarked passthrough would re-enter the
90
+ // interception listener from within itself, recursing indefinitely.
91
+ request.headers.set('next-test-internal', '1');
92
+ return originalFetch(request);
93
+ }
86
94
  async function handleFetch(originalFetch, request) {
87
95
  const testInfo = (0, _context.getTestReqInfo)(request, reader);
88
96
  if (!testInfo) {
89
97
  // Passthrough non-test requests.
90
- return originalFetch(request);
98
+ return passthroughFetch(originalFetch, request);
91
99
  }
92
100
  const { testData, proxyPort } = testInfo;
93
101
  const proxyRequest = await buildProxyRequest(testData, request);
@@ -118,7 +126,7 @@ async function handleFetch(originalFetch, request) {
118
126
  const { api } = proxyResponse;
119
127
  switch(api){
120
128
  case 'continue':
121
- return originalFetch(request);
129
+ return passthroughFetch(originalFetch, request);
122
130
  case 'abort':
123
131
  case 'unhandled':
124
132
  throw Object.defineProperty(new Error(`Proxy request aborted [${request.method} ${request.url}]`), "__NEXT_ERROR_CODE", {
@@ -72,7 +72,7 @@ async function fetchPkgInfo(pkg) {
72
72
  });
73
73
  }
74
74
  const data = await res.json();
75
- const versionData = data.versions["16.3.3"];
75
+ const versionData = data.versions["16.3.8"];
76
76
  return {
77
77
  os: versionData.os,
78
78
  cpu: versionData.cpu,
@@ -100,7 +100,7 @@ async function patchIncorrectLockfile(dir) {
100
100
  const expectedSwcPkgs = Object.keys(_packagejson.optionalDependencies || {}).filter((pkg)=>pkg.startsWith('@next/swc-'));
101
101
  const patchDependency = (pkg, pkgData)=>{
102
102
  lockfileParsed.dependencies[pkg] = {
103
- version: "16.3.3",
103
+ version: "16.3.8",
104
104
  resolved: pkgData.tarball,
105
105
  integrity: pkgData.integrity,
106
106
  optional: true
@@ -108,7 +108,7 @@ async function patchIncorrectLockfile(dir) {
108
108
  };
109
109
  const patchPackage = (pkg, pkgData)=>{
110
110
  lockfileParsed.packages[pkg] = {
111
- version: "16.3.3",
111
+ version: "16.3.8",
112
112
  resolved: pkgData.tarball,
113
113
  integrity: pkgData.integrity,
114
114
  cpu: pkgData.cpu,
@@ -44,7 +44,7 @@ function _interop_require_default(obj) {
44
44
  };
45
45
  }
46
46
  function getTypeScriptPackageInfo(baseDir) {
47
- var _packageJson_bin;
47
+ var _packageJson_bin, _Object_entries_find;
48
48
  let packageJsonPath;
49
49
  try {
50
50
  packageJsonPath = (0, _resolvefrom.resolveFrom)(baseDir, 'typescript/package.json');
@@ -54,7 +54,7 @@ function getTypeScriptPackageInfo(baseDir) {
54
54
  const packageJson = JSON.parse((0, _nodefs.readFileSync)(packageJsonPath, 'utf8'));
55
55
  const packageDir = _nodepath.default.dirname(packageJsonPath);
56
56
  const apiPath = _nodepath.default.join(packageDir, 'lib', 'typescript.js');
57
- const tscBin = typeof packageJson.bin === 'string' ? packageJson.bin : (_packageJson_bin = packageJson.bin) == null ? void 0 : _packageJson_bin.tsc;
57
+ const tscBin = typeof packageJson.bin === 'string' ? packageJson.bin : ((_packageJson_bin = packageJson.bin) == null ? void 0 : _packageJson_bin.tsc) ?? ((_Object_entries_find = Object.entries(packageJson.bin ?? {}).find(([name])=>/^tsc\d+$/.test(name))) == null ? void 0 : _Object_entries_find[1]);
58
58
  const tscBinPath = tscBin ? _nodepath.default.resolve(packageDir, tscBin) : undefined;
59
59
  let tscPath = tscBinPath;
60
60
  if (tscBinPath && (0, _nodefs.existsSync)(tscBinPath) && packageJson.type === 'module' && _nodepath.default.extname(tscBinPath) === '') {
@@ -86,7 +86,9 @@ const typescriptApiPackage = {
86
86
  exportsRestrict: true
87
87
  };
88
88
  const typescriptCliPackage = {
89
- file: 'typescript/bin/tsc',
89
+ // The CLI path is resolved from the package's bin metadata after this initial
90
+ // package-presence check, since aliased TypeScript packages may rename it.
91
+ file: 'typescript/package.json',
90
92
  pkg: 'typescript',
91
93
  exportsRestrict: true
92
94
  };
@@ -23,7 +23,8 @@ async function createComponentStylesAndScripts({ filePath, getComponent, injecte
23
23
  scripts.push(createElement('script', {
24
24
  src: `${ctx.assetPrefix}/_next/${(0, _encodeuripath.encodeURIPath)(href)}${(0, _getassetquerystring.getAssetQueryString)(ctx, true)}`,
25
25
  async: true,
26
- key: `script-${scriptIndex}`
26
+ key: `script-${scriptIndex}`,
27
+ nonce: ctx.nonce
27
28
  }));
28
29
  scriptIndex++;
29
30
  }
@@ -1569,8 +1569,7 @@ class Server {
1569
1569
  const isAppPath = Array.isArray(appPaths);
1570
1570
  let page = pathname;
1571
1571
  if (isAppPath) {
1572
- // the last item in the array is the root page, if there are parallel routes
1573
- page = appPaths[appPaths.length - 1];
1572
+ page = (0, _apppaths.selectAppPageEntry)(pathname, appPaths);
1574
1573
  }
1575
1574
  const result = await this.findPageComponents({
1576
1575
  locale: (0, _requestmeta.getRequestMeta)(ctx.req, 'locale'),
@@ -1305,7 +1305,7 @@ async function applyModifyConfig(config, phase, silent, dir) {
1305
1305
  }
1306
1306
  config = await adapterMod.modifyConfig(config, {
1307
1307
  phase,
1308
- nextVersion: "16.3.3",
1308
+ nextVersion: "16.3.8",
1309
1309
  projectDir: dir
1310
1310
  });
1311
1311
  }
@@ -302,7 +302,7 @@ async function createHotReloaderTurbopack(opts, serverFields, distDir, resetFetc
302
302
  }
303
303
  const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
304
304
  const hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, {
305
- version: "16.3.3"
305
+ version: "16.3.8"
306
306
  });
307
307
  // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
308
308
  // of the current `next dev` invocation.
@@ -362,7 +362,7 @@ async function createHotReloaderTurbopack(opts, serverFields, distDir, resetFetc
362
362
  writeRoutesHashesManifest: false,
363
363
  currentNodeJsVersion,
364
364
  isPersistentCachingEnabled: (0, _utils2.isFileSystemCacheEnabledForDev)(opts.nextConfig),
365
- nextVersion: "16.3.3",
365
+ nextVersion: "16.3.8",
366
366
  serverHmr: serverFastRefresh
367
367
  }, {
368
368
  turbopackMemoryEviction: opts.nextConfig.experimental.turbopackMemoryEvictionMode,
@@ -234,7 +234,7 @@ class HotReloaderWebpack {
234
234
  this.previewProps = previewProps;
235
235
  this.rewrites = rewrites;
236
236
  this.hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, {
237
- version: "16.3.3"
237
+ version: "16.3.8"
238
238
  });
239
239
  // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
240
240
  // of the current `next dev` invocation.
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  0 && (module.exports = {
6
6
  ImageError: null,
7
7
  ImageOptimizerCache: null,
8
+ createPinnedLookup: null,
8
9
  detectContentType: null,
9
10
  extractEtag: null,
10
11
  fetchExternalImage: null,
@@ -32,6 +33,9 @@ _export(exports, {
32
33
  ImageOptimizerCache: function() {
33
34
  return ImageOptimizerCache;
34
35
  },
36
+ createPinnedLookup: function() {
37
+ return createPinnedLookup;
38
+ },
35
39
  detectContentType: function() {
36
40
  return detectContentType;
37
41
  },
@@ -74,6 +78,8 @@ _export(exports, {
74
78
  });
75
79
  const _crypto = require("crypto");
76
80
  const _fs = require("fs");
81
+ const _http = require("http");
82
+ const _https = require("https");
77
83
  const _accept = require("next/dist/compiled/@hapi/accept");
78
84
  const _contentdisposition = /*#__PURE__*/ _interop_require_default(require("next/dist/compiled/content-disposition"));
79
85
  const _imagesize = /*#__PURE__*/ _interop_require_default(require("next/dist/compiled/image-size"));
@@ -96,6 +102,8 @@ const _invarianterror = require("../shared/lib/invariant-error");
96
102
  const _promises = require("dns/promises");
97
103
  const _net = require("net");
98
104
  const _dns = require("dns");
105
+ const _stream = require("stream");
106
+ const _zlib = require("zlib");
99
107
  function _interop_require_default(obj) {
100
108
  return obj && obj.__esModule ? obj : {
101
109
  default: obj
@@ -168,8 +176,7 @@ const BYPASS_TYPES = [
168
176
  ICNS,
169
177
  BMP,
170
178
  JXL,
171
- HEIC,
172
- AVIF
179
+ HEIC
173
180
  ];
174
181
  const BLUR_IMG_SIZE = 8 // should match `next-image-loader`
175
182
  ;
@@ -207,6 +214,7 @@ function getSharp(concurrency, operationCache) {
207
214
  });
208
215
  _sharp.unblock({
209
216
  operation: [
217
+ 'VipsForeignLoadHeif',
210
218
  'VipsForeignLoadJpeg',
211
219
  'VipsForeignLoadNsgif',
212
220
  'VipsForeignLoadPng',
@@ -266,6 +274,13 @@ function getImageEtag(image) {
266
274
  ]);
267
275
  }
268
276
  async function writeToCacheDir(cacheDir, cacheKey, extension, maxAge, expireAt, buffer, etag, upstreamEtag) {
277
+ if (buffer.byteLength === 0) {
278
+ throw Object.defineProperty(new Error('Invariant: cannot write an empty buffer to the image cache'), "__NEXT_ERROR_CODE", {
279
+ value: "E1470",
280
+ enumerable: false,
281
+ configurable: true
282
+ });
283
+ }
269
284
  const dir = (0, _path.join)(/* turbopackIgnore: true */ cacheDir, cacheKey);
270
285
  const filename = (0, _path.join)(/* turbopackIgnore: true */ dir, `${maxAge}.${expireAt}.${etag}.${upstreamEtag}.${extension}`);
271
286
  await _fs.promises.rm(dir, {
@@ -291,6 +306,13 @@ async function readFromCacheDir(cacheDir, cacheKey) {
291
306
  const [maxAgeSt, expireAtSt, etag, upstreamEtag, extension] = file.split('.', 5);
292
307
  const filePath = (0, _path.join)(/* turbopackIgnore: true */ dir, file);
293
308
  const buffer = await _fs.promises.readFile(/* turbopackIgnore: true */ filePath);
309
+ if (buffer.byteLength === 0) {
310
+ throw Object.defineProperty(new Error(`Invariant: image cache entry "${cacheKey}" is empty`), "__NEXT_ERROR_CODE", {
311
+ value: "E1469",
312
+ enumerable: false,
313
+ configurable: true
314
+ });
315
+ }
294
316
  const expireAt = Number(expireAtSt);
295
317
  const maxAge = Number(maxAgeSt);
296
318
  return {
@@ -782,6 +804,7 @@ class ImageOptimizerCache {
782
804
  revalidate: effectiveRevalidate
783
805
  };
784
806
  await this.cacheHandler.set(cacheKey, valueWithRevalidate, {
807
+ kind: _responsecache.IncrementalCacheKind.IMAGE,
785
808
  cacheControl: {
786
809
  revalidate: effectiveRevalidate,
787
810
  expire: cacheControl == null ? void 0 : cacheControl.expire
@@ -918,25 +941,210 @@ function isRedirect(statusCode) {
918
941
  308
919
942
  ].includes(statusCode);
920
943
  }
944
+ function upstreamTimedOut(href) {
945
+ _log.error('upstream image response timed out for', href);
946
+ return Object.defineProperty(new ImageError(504, '"url" parameter is valid but upstream response timed out'), "__NEXT_ERROR_CODE", {
947
+ value: "E394",
948
+ enumerable: false,
949
+ configurable: true
950
+ });
951
+ }
952
+ const agentOptions = {
953
+ keepAlive: true,
954
+ timeout: 7000
955
+ };
956
+ const getHttpAgentName = _http.Agent.prototype.getName;
957
+ const getHttpsAgentName = _https.Agent.prototype.getName;
958
+ class ImageHttpAgent extends _http.Agent {
959
+ getName(options = {}) {
960
+ return `${getHttpAgentName.call(this, options)}:${options.imageLookupKey ?? ''}`;
961
+ }
962
+ }
963
+ class ImageHttpsAgent extends _https.Agent {
964
+ getName(options = {}) {
965
+ return `${getHttpsAgentName.call(this, options)}:${options.imageLookupKey ?? ''}`;
966
+ }
967
+ }
968
+ let protectedHttpAgent;
969
+ let protectedHttpsAgent;
970
+ let permissiveHttpAgent;
971
+ let permissiveHttpsAgent;
972
+ function getImageAgent(dangerouslyAllowLocalIP, isHttps) {
973
+ if (isHttps) {
974
+ if (dangerouslyAllowLocalIP) {
975
+ return permissiveHttpsAgent ??= new ImageHttpsAgent(agentOptions);
976
+ }
977
+ return protectedHttpsAgent ??= new ImageHttpsAgent(agentOptions);
978
+ }
979
+ if (dangerouslyAllowLocalIP) {
980
+ return permissiveHttpAgent ??= new ImageHttpAgent(agentOptions);
981
+ }
982
+ return protectedHttpAgent ??= new ImageHttpAgent(agentOptions);
983
+ }
984
+ const BASE_REQ_HEADERS = {
985
+ accept: '*/*',
986
+ 'accept-language': '*',
987
+ 'sec-fetch-mode': 'cors',
988
+ 'user-agent': 'node'
989
+ };
990
+ const HTTP_FETCH_HEADERS = {
991
+ ...BASE_REQ_HEADERS,
992
+ 'accept-encoding': 'gzip, deflate'
993
+ };
994
+ const HTTPS_FETCH_HEADERS = {
995
+ ...BASE_REQ_HEADERS,
996
+ 'accept-encoding': 'br, gzip, deflate'
997
+ };
998
+ /**
999
+ * Resolves `hostname` with the DNS options the socket itself would have used,
1000
+ * so the addresses checked below are the exact set the connection can reach.
1001
+ * Mirrors `lookupAndConnect()` in Node's `lib/net.js`.
1002
+ */ function lookupAsSocketWould(hostname) {
1003
+ return (0, _promises.lookup)(hostname, {
1004
+ all: true,
1005
+ // Node applies ADDRCONFIG whenever no address family is requested,
1006
+ // on every platform except Windows.
1007
+ hints: process.platform === 'win32' ? 0 : _dns.ADDRCONFIG
1008
+ });
1009
+ }
1010
+ function createPinnedLookup(hostname, addresses) {
1011
+ return (lookupHostname, options, callback)=>{
1012
+ if (lookupHostname !== hostname) {
1013
+ callback(new _invarianterror.InvariantError(`Image lookup hostname "${lookupHostname}" does not match request hostname "${hostname}"`), []);
1014
+ return;
1015
+ }
1016
+ const family = typeof options.family === 'number' ? options.family : 0;
1017
+ const matched = family ? addresses.filter((address)=>address.family === family) : addresses;
1018
+ if (matched.length === 0) {
1019
+ // Reporting this as an error rather than an empty list is not optional:
1020
+ // Node destructures the first address, so the resulting TypeError is
1021
+ // thrown inside the socket and escapes the request entirely.
1022
+ const err = new Error(`No IPv${family} address available for ${hostname}`);
1023
+ err.code = 'ENODATA';
1024
+ callback(err, []);
1025
+ return;
1026
+ }
1027
+ if (options.all) {
1028
+ callback(null, matched);
1029
+ } else {
1030
+ callback(null, matched[0].address, matched[0].family);
1031
+ }
1032
+ };
1033
+ }
1034
+ function requestUpstreamImage(url, pinnedLookup, imageLookupKey, dangerouslyAllowLocalIP, signal) {
1035
+ return new Promise((resolve, reject)=>{
1036
+ const isHttps = url.protocol === 'https:';
1037
+ const request = isHttps ? _https.request : _http.request;
1038
+ const options = {
1039
+ agent: getImageAgent(dangerouslyAllowLocalIP, isHttps),
1040
+ headers: isHttps ? HTTPS_FETCH_HEADERS : HTTP_FETCH_HEADERS,
1041
+ imageLookupKey,
1042
+ lookup: pinnedLookup,
1043
+ signal
1044
+ };
1045
+ const req = request(url, options, resolve);
1046
+ req.on('error', reject);
1047
+ req.end();
1048
+ });
1049
+ }
1050
+ class DeflateDecoder extends _stream.Transform {
1051
+ constructor(){
1052
+ super();
1053
+ this.decoder = undefined;
1054
+ }
1055
+ _transform(chunk, encoding, callback) {
1056
+ if (!this.decoder) {
1057
+ if (chunk.length === 0) {
1058
+ callback();
1059
+ return;
1060
+ }
1061
+ const options = {
1062
+ flush: _zlib.constants.Z_SYNC_FLUSH,
1063
+ finishFlush: _zlib.constants.Z_SYNC_FLUSH
1064
+ };
1065
+ this.decoder = (chunk[0] & 0x0f) === 0x08 ? (0, _zlib.createInflate)(options) : (0, _zlib.createInflateRaw)(options);
1066
+ this.decoder.on('data', (data)=>this.push(data));
1067
+ this.decoder.on('end', ()=>this.push(null));
1068
+ this.decoder.on('error', (err)=>this.destroy(err));
1069
+ }
1070
+ this.decoder.write(chunk, encoding, callback);
1071
+ }
1072
+ _final(callback) {
1073
+ var _this_decoder;
1074
+ (_this_decoder = this.decoder) == null ? void 0 : _this_decoder.end();
1075
+ this.decoder = undefined;
1076
+ callback();
1077
+ }
1078
+ }
1079
+ // Matches the chain limit of native fetch (undici), so an upstream cannot
1080
+ // force unbounded decoder allocations with the header alone.
1081
+ const MAX_CONTENT_ENCODINGS = 5;
1082
+ function decodeResponseBody(res, href) {
1083
+ const contentEncoding = res.headers['content-encoding'];
1084
+ if (!contentEncoding) {
1085
+ return res;
1086
+ }
1087
+ const codings = contentEncoding.toLowerCase().split(',');
1088
+ if (codings.length > MAX_CONTENT_ENCODINGS) {
1089
+ _log.error('upstream image response had too many content encodings for', href);
1090
+ throw Object.defineProperty(new ImageError(400, '"url" parameter is valid but upstream response is invalid'), "__NEXT_ERROR_CODE", {
1091
+ value: "E394",
1092
+ enumerable: false,
1093
+ configurable: true
1094
+ });
1095
+ }
1096
+ const decoders = [];
1097
+ for(let i = codings.length - 1; i >= 0; i--){
1098
+ switch(codings[i].trim()){
1099
+ case 'x-gzip':
1100
+ case 'gzip':
1101
+ decoders.push((0, _zlib.createGunzip)({
1102
+ flush: _zlib.constants.Z_SYNC_FLUSH,
1103
+ finishFlush: _zlib.constants.Z_SYNC_FLUSH
1104
+ }));
1105
+ break;
1106
+ case 'deflate':
1107
+ decoders.push(new DeflateDecoder());
1108
+ break;
1109
+ case 'br':
1110
+ decoders.push((0, _zlib.createBrotliDecompress)({
1111
+ flush: _zlib.constants.BROTLI_OPERATION_FLUSH,
1112
+ finishFlush: _zlib.constants.BROTLI_OPERATION_FLUSH
1113
+ }));
1114
+ break;
1115
+ default:
1116
+ return res;
1117
+ }
1118
+ }
1119
+ (0, _stream.pipeline)([
1120
+ res,
1121
+ ...decoders
1122
+ ], ()=>{});
1123
+ return decoders[decoders.length - 1];
1124
+ }
921
1125
  async function fetchExternalImage(href, dangerouslyAllowLocalIP, maximumResponseBody, count = 3) {
1126
+ const url = new URL(href);
1127
+ // `URL.hostname` keeps the brackets around an IPv6 literal, the socket does not
1128
+ const hostname = url.hostname.replace(/^\[|\]$/g, '');
1129
+ let pinnedLookup;
1130
+ let imageLookupKey;
922
1131
  if (!dangerouslyAllowLocalIP) {
923
- const { hostname } = new URL(href);
924
- let ips = [
925
- hostname
926
- ];
927
- if (!(0, _net.isIP)(hostname)) {
928
- const records = await (0, _promises.lookup)(hostname, {
929
- family: 0,
930
- all: true,
931
- hints: _dns.ALL
932
- }).catch((_)=>[
933
- {
934
- address: hostname
935
- }
936
- ]);
937
- ips = records.map((record)=>record.address);
1132
+ const literalFamily = (0, _net.isIP)(hostname);
1133
+ let addresses;
1134
+ if (literalFamily > 0) {
1135
+ // A literal address is connected to as-is, without any DNS resolution
1136
+ addresses = [
1137
+ {
1138
+ address: hostname,
1139
+ family: literalFamily
1140
+ }
1141
+ ];
1142
+ } else {
1143
+ addresses = await lookupAsSocketWould(hostname);
1144
+ pinnedLookup = createPinnedLookup(hostname, addresses);
938
1145
  }
939
- const privateIps = ips.filter((ip)=>(0, _isprivateip.isPrivateIp)(ip));
1146
+ imageLookupKey = addresses.map((address)=>`${address.family}:${address.address}`).join(',');
1147
+ const privateIps = addresses.map((record)=>record.address).filter((ip)=>(0, _isprivateip.isPrivateIp)(ip));
940
1148
  if (privateIps.length > 0) {
941
1149
  _log.error('upstream image', href, 'hostname resolved to private IP', JSON.stringify(privateIps), 'If this is expected and you understand SSRF risk, use images.dangerouslyAllowLocalIP = true to continue.');
942
1150
  throw Object.defineProperty(new ImageError(400, '"url" parameter is not allowed'), "__NEXT_ERROR_CODE", {
@@ -946,24 +1154,31 @@ async function fetchExternalImage(href, dangerouslyAllowLocalIP, maximumResponse
946
1154
  });
947
1155
  }
948
1156
  }
949
- const res = await fetch(href, {
950
- signal: AbortSignal.timeout(7000),
951
- redirect: 'manual'
952
- }).catch((err)=>err);
953
- if (res instanceof Error) {
954
- const err = res;
955
- if (err.name === 'TimeoutError') {
956
- _log.error('upstream image response timed out for', href);
957
- throw Object.defineProperty(new ImageError(504, '"url" parameter is valid but upstream response timed out'), "__NEXT_ERROR_CODE", {
958
- value: "E394",
959
- enumerable: false,
960
- configurable: true
961
- });
1157
+ // The signal is owned here rather than by `requestUpstreamImage()` because it
1158
+ // has to stay readable while the body streams. Node reports an abort during
1159
+ // the body as a plain `ECONNRESET` on the response, so the signal is the only
1160
+ // way to tell a timeout apart from the upstream resetting the connection.
1161
+ const signal = AbortSignal.timeout(agentOptions.timeout);
1162
+ let res;
1163
+ try {
1164
+ res = await requestUpstreamImage(url, pinnedLookup, imageLookupKey, dangerouslyAllowLocalIP, signal);
1165
+ } catch (err) {
1166
+ if (signal.aborted) {
1167
+ throw upstreamTimedOut(href);
962
1168
  }
963
1169
  throw err;
964
1170
  }
965
- const locationHeader = res.headers.get('Location');
966
- if (isRedirect(res.status) && locationHeader && URL.canParse(locationHeader, href)) {
1171
+ const statusCode = res.statusCode;
1172
+ if (statusCode === undefined) {
1173
+ res.destroy();
1174
+ throw new _invarianterror.InvariantError('Expected statusCode on upstream image response');
1175
+ }
1176
+ const locationHeader = res.headers.location;
1177
+ if (isRedirect(statusCode) && locationHeader && URL.canParse(locationHeader, href)) {
1178
+ // Discard the body rather than draining it. A redirect body is never used,
1179
+ // and draining one would download unlimited bytes from the upstream because
1180
+ // `maximumResponseBody` is only enforced on the final response.
1181
+ res.destroy();
967
1182
  if (count === 0) {
968
1183
  _log.error('upstream image response had too many redirects', href);
969
1184
  throw Object.defineProperty(new ImageError(508, '"url" parameter is valid but upstream response is invalid'), "__NEXT_ERROR_CODE", {
@@ -975,15 +1190,41 @@ async function fetchExternalImage(href, dangerouslyAllowLocalIP, maximumResponse
975
1190
  const redirect = new URL(locationHeader, href).href;
976
1191
  return fetchExternalImage(redirect, dangerouslyAllowLocalIP, maximumResponseBody, count - 1);
977
1192
  }
978
- if (!res.ok) {
979
- _log.error('upstream image response failed for', href, res.status);
980
- throw Object.defineProperty(new ImageError(res.status, '"url" parameter is valid but upstream response is invalid'), "__NEXT_ERROR_CODE", {
1193
+ if (statusCode < 200 || statusCode > 299) {
1194
+ res.destroy();
1195
+ _log.error('upstream image response failed for', href, statusCode);
1196
+ throw Object.defineProperty(new ImageError(statusCode, '"url" parameter is valid but upstream response is invalid'), "__NEXT_ERROR_CODE", {
981
1197
  value: "E394",
982
1198
  enumerable: false,
983
1199
  configurable: true
984
1200
  });
985
1201
  }
986
- if (!res.body) {
1202
+ const chunks = [];
1203
+ let totalSize = 0;
1204
+ try {
1205
+ const body = decodeResponseBody(res, href);
1206
+ // Throwing out of this loop destroys the response, so an oversized or
1207
+ // timed out download stops instead of running to completion.
1208
+ for await (const chunk of body){
1209
+ totalSize += chunk.byteLength;
1210
+ if (totalSize > maximumResponseBody) {
1211
+ _log.error('upstream image response exceeded maximum size for', href, totalSize);
1212
+ throw Object.defineProperty(new ImageError(413, '"url" parameter is valid but upstream response is invalid'), "__NEXT_ERROR_CODE", {
1213
+ value: "E394",
1214
+ enumerable: false,
1215
+ configurable: true
1216
+ });
1217
+ }
1218
+ chunks.push(chunk);
1219
+ }
1220
+ } catch (err) {
1221
+ res.destroy();
1222
+ if (signal.aborted) {
1223
+ throw upstreamTimedOut(href);
1224
+ }
1225
+ throw err;
1226
+ }
1227
+ if (totalSize === 0) {
987
1228
  _log.error('upstream image response is empty for', href);
988
1229
  throw Object.defineProperty(new ImageError(400, '"url" parameter is valid but upstream response is invalid'), "__NEXT_ERROR_CODE", {
989
1230
  value: "E394",
@@ -991,25 +1232,10 @@ async function fetchExternalImage(href, dangerouslyAllowLocalIP, maximumResponse
991
1232
  configurable: true
992
1233
  });
993
1234
  }
994
- const chunks = [];
995
- let totalSize = 0;
996
- for await (const c of res.body){
997
- const chunk = Buffer.from(c);
998
- totalSize += chunk.byteLength;
999
- if (totalSize > maximumResponseBody) {
1000
- _log.error('upstream image response exceeded maximum size for', href, totalSize);
1001
- throw Object.defineProperty(new ImageError(413, '"url" parameter is valid but upstream response is invalid'), "__NEXT_ERROR_CODE", {
1002
- value: "E394",
1003
- enumerable: false,
1004
- configurable: true
1005
- });
1006
- }
1007
- chunks.push(chunk);
1008
- }
1009
1235
  const buffer = Buffer.concat(chunks);
1010
- const contentType = res.headers.get('Content-Type');
1011
- const cacheControl = res.headers.get('Cache-Control');
1012
- const etag = extractEtag(res.headers.get('ETag'), buffer);
1236
+ const contentType = res.headers['content-type'];
1237
+ const cacheControl = res.headers['cache-control'];
1238
+ const etag = extractEtag(res.headers.etag, buffer);
1013
1239
  return {
1014
1240
  buffer,
1015
1241
  contentType,
@@ -79,7 +79,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
79
79
  }
80
80
  function logStartInfo({ networkUrl, appUrl, envInfo, logBundler }) {
81
81
  const versionSuffix = logBundler ? ` (${(0, _bundler.bundlerName)((0, _bundler.getBundlerFromEnv)())})` : '';
82
- _log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"16.3.3"}`))}${versionSuffix}`);
82
+ _log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"16.3.8"}`))}${versionSuffix}`);
83
83
  if (appUrl) {
84
84
  _log.bootstrap(`- Local: ${appUrl}`);
85
85
  }
@@ -43,7 +43,13 @@ async function getOrInitDiskLRU(cacheDir, maxDiskSize, readEntries, evictEntry)
43
43
  const lru = new _lrucache.LRUCache(maxSize, (size)=>size, (cacheKey)=>evictEntry(cacheDir, cacheKey));
44
44
  const entries = await readEntries(cacheDir);
45
45
  for (const entry of entries){
46
- lru.set(entry.key, entry.size);
46
+ // Skip entries with a non-positive size: `LRUCache.set()` rejects
47
+ // sizes <= 0, so a single such entry (e.g. a 0-byte or corrupt cache
48
+ // file) would otherwise throw here and permanently reject this cached
49
+ // singleton promise, breaking the disk cache for the whole process.
50
+ if (entry.size > 0) {
51
+ lru.set(entry.key, entry.size);
52
+ }
47
53
  }
48
54
  return lru;
49
55
  })();