@semiont/frontend 0.4.3 → 0.4.5

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 (380) hide show
  1. package/package.json +1 -1
  2. package/standalone/apps/frontend/.next/BUILD_ID +1 -1
  3. package/standalone/apps/frontend/.next/app-path-routes-manifest.json +4 -5
  4. package/standalone/apps/frontend/.next/build-manifest.json +7 -7
  5. package/standalone/apps/frontend/.next/prerender-manifest.json +3 -3
  6. package/standalone/apps/frontend/.next/react-loadable-manifest.json +89 -93
  7. package/standalone/apps/frontend/.next/routes-manifest.json +0 -8
  8. package/standalone/apps/frontend/.next/server/app/[locale]/about/page.js +13 -19
  9. package/standalone/apps/frontend/.next/server/app/[locale]/about/page.js.nft.json +1 -1
  10. package/standalone/apps/frontend/.next/server/app/[locale]/about/page_client-reference-manifest.js +1 -1
  11. package/standalone/apps/frontend/.next/server/app/[locale]/admin/devops/page.js +1913 -2012
  12. package/standalone/apps/frontend/.next/server/app/[locale]/admin/devops/page.js.nft.json +1 -1
  13. package/standalone/apps/frontend/.next/server/app/[locale]/admin/devops/page_client-reference-manifest.js +1 -1
  14. package/standalone/apps/frontend/.next/server/app/[locale]/admin/exchange/page.js +544 -544
  15. package/standalone/apps/frontend/.next/server/app/[locale]/admin/exchange/page.js.nft.json +1 -1
  16. package/standalone/apps/frontend/.next/server/app/[locale]/admin/exchange/page_client-reference-manifest.js +1 -1
  17. package/standalone/apps/frontend/.next/server/app/[locale]/admin/page.js +10 -117
  18. package/standalone/apps/frontend/.next/server/app/[locale]/admin/page.js.nft.json +1 -1
  19. package/standalone/apps/frontend/.next/server/app/[locale]/admin/page_client-reference-manifest.js +1 -1
  20. package/standalone/apps/frontend/.next/server/app/[locale]/admin/security/page.js +257 -257
  21. package/standalone/apps/frontend/.next/server/app/[locale]/admin/security/page.js.nft.json +1 -1
  22. package/standalone/apps/frontend/.next/server/app/[locale]/admin/security/page_client-reference-manifest.js +1 -1
  23. package/standalone/apps/frontend/.next/server/app/[locale]/admin/users/page.js +125 -224
  24. package/standalone/apps/frontend/.next/server/app/[locale]/admin/users/page.js.nft.json +1 -1
  25. package/standalone/apps/frontend/.next/server/app/[locale]/admin/users/page_client-reference-manifest.js +1 -1
  26. package/standalone/apps/frontend/.next/server/app/[locale]/auth/error/page.js +190 -190
  27. package/standalone/apps/frontend/.next/server/app/[locale]/auth/error/page.js.nft.json +1 -1
  28. package/standalone/apps/frontend/.next/server/app/[locale]/auth/error/page_client-reference-manifest.js +1 -1
  29. package/standalone/apps/frontend/.next/server/app/[locale]/auth/mcp-setup/route.js +14 -122
  30. package/standalone/apps/frontend/.next/server/app/[locale]/auth/mcp-setup/route.js.nft.json +1 -1
  31. package/standalone/apps/frontend/.next/server/app/[locale]/auth/mcp-setup/route_client-reference-manifest.js +1 -1
  32. package/standalone/apps/frontend/.next/server/app/[locale]/auth/signin/page.js +59 -70
  33. package/standalone/apps/frontend/.next/server/app/[locale]/auth/signin/page.js.nft.json +1 -1
  34. package/standalone/apps/frontend/.next/server/app/[locale]/auth/signin/page_client-reference-manifest.js +1 -1
  35. package/standalone/apps/frontend/.next/server/app/[locale]/auth/signup/page.js +247 -251
  36. package/standalone/apps/frontend/.next/server/app/[locale]/auth/signup/page.js.nft.json +1 -1
  37. package/standalone/apps/frontend/.next/server/app/[locale]/auth/signup/page_client-reference-manifest.js +1 -1
  38. package/standalone/apps/frontend/.next/server/app/[locale]/auth/welcome/page.js +109 -106
  39. package/standalone/apps/frontend/.next/server/app/[locale]/auth/welcome/page.js.nft.json +1 -1
  40. package/standalone/apps/frontend/.next/server/app/[locale]/auth/welcome/page_client-reference-manifest.js +1 -1
  41. package/standalone/apps/frontend/.next/server/app/[locale]/know/compose/page.js +754 -257
  42. package/standalone/apps/frontend/.next/server/app/[locale]/know/compose/page.js.nft.json +1 -1
  43. package/standalone/apps/frontend/.next/server/app/[locale]/know/compose/page_client-reference-manifest.js +1 -1
  44. package/standalone/apps/frontend/.next/server/app/[locale]/know/discover/page.js +898 -401
  45. package/standalone/apps/frontend/.next/server/app/[locale]/know/discover/page.js.nft.json +1 -1
  46. package/standalone/apps/frontend/.next/server/app/[locale]/know/discover/page_client-reference-manifest.js +1 -1
  47. package/standalone/apps/frontend/.next/server/app/[locale]/know/page.js +1147 -658
  48. package/standalone/apps/frontend/.next/server/app/[locale]/know/page.js.nft.json +1 -1
  49. package/standalone/apps/frontend/.next/server/app/[locale]/know/page_client-reference-manifest.js +1 -1
  50. package/standalone/apps/frontend/.next/server/app/[locale]/know/resource/[id]/page.js +537 -40
  51. package/standalone/apps/frontend/.next/server/app/[locale]/know/resource/[id]/page.js.nft.json +1 -1
  52. package/standalone/apps/frontend/.next/server/app/[locale]/know/resource/[id]/page_client-reference-manifest.js +1 -1
  53. package/standalone/apps/frontend/.next/server/app/[locale]/moderate/entity-tags/page.js +1862 -1961
  54. package/standalone/apps/frontend/.next/server/app/[locale]/moderate/entity-tags/page.js.nft.json +1 -1
  55. package/standalone/apps/frontend/.next/server/app/[locale]/moderate/entity-tags/page_client-reference-manifest.js +1 -1
  56. package/standalone/apps/frontend/.next/server/app/[locale]/moderate/linked-data/page.js +1124 -1223
  57. package/standalone/apps/frontend/.next/server/app/[locale]/moderate/linked-data/page.js.nft.json +1 -1
  58. package/standalone/apps/frontend/.next/server/app/[locale]/moderate/linked-data/page_client-reference-manifest.js +1 -1
  59. package/standalone/apps/frontend/.next/server/app/[locale]/moderate/page.js +361 -468
  60. package/standalone/apps/frontend/.next/server/app/[locale]/moderate/page.js.nft.json +1 -1
  61. package/standalone/apps/frontend/.next/server/app/[locale]/moderate/page_client-reference-manifest.js +1 -1
  62. package/standalone/apps/frontend/.next/server/app/[locale]/moderate/recent/page.js +1878 -1977
  63. package/standalone/apps/frontend/.next/server/app/[locale]/moderate/recent/page.js.nft.json +1 -1
  64. package/standalone/apps/frontend/.next/server/app/[locale]/moderate/recent/page_client-reference-manifest.js +1 -1
  65. package/standalone/apps/frontend/.next/server/app/[locale]/moderate/tag-schemas/page.js +331 -430
  66. package/standalone/apps/frontend/.next/server/app/[locale]/moderate/tag-schemas/page.js.nft.json +1 -1
  67. package/standalone/apps/frontend/.next/server/app/[locale]/moderate/tag-schemas/page_client-reference-manifest.js +1 -1
  68. package/standalone/apps/frontend/.next/server/app/[locale]/page.js +18 -21
  69. package/standalone/apps/frontend/.next/server/app/[locale]/page.js.nft.json +1 -1
  70. package/standalone/apps/frontend/.next/server/app/[locale]/page_client-reference-manifest.js +1 -1
  71. package/standalone/apps/frontend/.next/server/app/[locale]/privacy/page.js +794 -794
  72. package/standalone/apps/frontend/.next/server/app/[locale]/privacy/page.js.nft.json +1 -1
  73. package/standalone/apps/frontend/.next/server/app/[locale]/privacy/page_client-reference-manifest.js +1 -1
  74. package/standalone/apps/frontend/.next/server/app/[locale]/terms/page.js +354 -354
  75. package/standalone/apps/frontend/.next/server/app/[locale]/terms/page.js.nft.json +1 -1
  76. package/standalone/apps/frontend/.next/server/app/[locale]/terms/page_client-reference-manifest.js +1 -1
  77. package/standalone/apps/frontend/.next/server/app/_global-error/page.js +169 -169
  78. package/standalone/apps/frontend/.next/server/app/_global-error/page.js.nft.json +1 -1
  79. package/standalone/apps/frontend/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  80. package/standalone/apps/frontend/.next/server/app/_global-error.html +1 -1
  81. package/standalone/apps/frontend/.next/server/app/_global-error.rsc +7 -7
  82. package/standalone/apps/frontend/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  83. package/standalone/apps/frontend/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +2 -2
  84. package/standalone/apps/frontend/.next/server/app/_global-error.segments/_global-error.segment.rsc +2 -2
  85. package/standalone/apps/frontend/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  86. package/standalone/apps/frontend/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  87. package/standalone/apps/frontend/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  88. package/standalone/apps/frontend/.next/server/app/_not-found/page.js +98 -98
  89. package/standalone/apps/frontend/.next/server/app/_not-found/page.js.nft.json +1 -1
  90. package/standalone/apps/frontend/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  91. package/standalone/apps/frontend/.next/server/app/_not-found.html +1 -1
  92. package/standalone/apps/frontend/.next/server/app/_not-found.rsc +7 -7
  93. package/standalone/apps/frontend/.next/server/app/_not-found.segments/_full.segment.rsc +7 -7
  94. package/standalone/apps/frontend/.next/server/app/_not-found.segments/_head.segment.rsc +3 -3
  95. package/standalone/apps/frontend/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  96. package/standalone/apps/frontend/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  97. package/standalone/apps/frontend/.next/server/app/_not-found.segments/_not-found.segment.rsc +2 -2
  98. package/standalone/apps/frontend/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  99. package/standalone/apps/frontend/.next/server/app/api/cookies/consent/route.js +24 -180
  100. package/standalone/apps/frontend/.next/server/app/api/cookies/consent/route.js.nft.json +1 -1
  101. package/standalone/apps/frontend/.next/server/app/api/cookies/consent/route_client-reference-manifest.js +1 -1
  102. package/standalone/apps/frontend/.next/server/app/api/cookies/export/route.js +39 -177
  103. package/standalone/apps/frontend/.next/server/app/api/cookies/export/route.js.nft.json +1 -1
  104. package/standalone/apps/frontend/.next/server/app/api/cookies/export/route_client-reference-manifest.js +1 -1
  105. package/standalone/apps/frontend/.next/server/app/api/resources/[id]/route.js +35 -217
  106. package/standalone/apps/frontend/.next/server/app/api/resources/[id]/route.js.nft.json +1 -1
  107. package/standalone/apps/frontend/.next/server/app/api/resources/[id]/route_client-reference-manifest.js +1 -1
  108. package/standalone/apps/frontend/.next/server/app-paths-manifest.json +4 -5
  109. package/standalone/apps/frontend/.next/server/chunks/{2967.js → 1175.js} +16 -14
  110. package/standalone/apps/frontend/.next/server/chunks/{8477.js → 1424.js} +16 -14
  111. package/standalone/apps/frontend/.next/server/chunks/{4653.js → 1461.js} +16 -14
  112. package/standalone/apps/frontend/.next/server/chunks/{5866.js → 1515.js} +9015 -219
  113. package/standalone/apps/frontend/.next/server/chunks/1974.js +1 -1
  114. package/standalone/apps/frontend/.next/server/chunks/2245.js +1 -1
  115. package/standalone/apps/frontend/.next/server/chunks/2686.js +1 -1
  116. package/standalone/apps/frontend/.next/server/chunks/{8605.js → 2789.js} +16 -14
  117. package/standalone/apps/frontend/.next/server/chunks/2961.js +1 -1
  118. package/standalone/apps/frontend/.next/server/chunks/2978.js +1 -1
  119. package/standalone/apps/frontend/.next/server/chunks/{2403.js → 3048.js} +16 -14
  120. package/standalone/apps/frontend/.next/server/chunks/3266.js +1 -1
  121. package/standalone/apps/frontend/.next/server/chunks/{5081.js → 3317.js} +16 -14
  122. package/standalone/apps/frontend/.next/server/chunks/3451.js +1 -1
  123. package/standalone/apps/frontend/.next/server/chunks/{2745.js → 3465.js} +16 -14
  124. package/standalone/apps/frontend/.next/server/chunks/3533.js +1 -1
  125. package/standalone/apps/frontend/.next/server/chunks/355.js +2 -2
  126. package/standalone/apps/frontend/.next/server/chunks/{615.js → 3693.js} +16 -14
  127. package/standalone/apps/frontend/.next/server/chunks/{6215.js → 3839.js} +16 -14
  128. package/standalone/apps/frontend/.next/server/chunks/{8880.js → 387.js} +16 -14
  129. package/standalone/apps/frontend/.next/server/chunks/{7492.js → 3883.js} +16 -14
  130. package/standalone/apps/frontend/.next/server/chunks/{1481.js → 395.js} +16 -14
  131. package/standalone/apps/frontend/.next/server/chunks/{7817.js → 4131.js} +16 -14
  132. package/standalone/apps/frontend/.next/server/chunks/{3618.js → 431.js} +16 -14
  133. package/standalone/apps/frontend/.next/server/chunks/4378.js +1 -1
  134. package/standalone/apps/frontend/.next/server/chunks/4546.js +1 -1
  135. package/standalone/apps/frontend/.next/server/chunks/4622.js +1 -1
  136. package/standalone/apps/frontend/.next/server/chunks/4654.js +1 -1
  137. package/standalone/apps/frontend/.next/server/chunks/4750.js +1 -1
  138. package/standalone/apps/frontend/.next/server/chunks/4771.js +1 -1
  139. package/standalone/apps/frontend/.next/server/chunks/4962.js +1 -1
  140. package/standalone/apps/frontend/.next/server/chunks/4968.js +1 -1
  141. package/standalone/apps/frontend/.next/server/chunks/4997.js +1 -1
  142. package/standalone/apps/frontend/.next/server/chunks/501.js +1 -1
  143. package/standalone/apps/frontend/.next/server/chunks/{891.js → 5165.js} +16 -14
  144. package/standalone/apps/frontend/.next/server/chunks/5245.js +1 -1
  145. package/standalone/apps/frontend/.next/server/chunks/5248.js +1 -1
  146. package/standalone/apps/frontend/.next/server/chunks/5343.js +1 -1
  147. package/standalone/apps/frontend/.next/server/chunks/{7800.js → 5347.js} +16 -14
  148. package/standalone/apps/frontend/.next/server/chunks/535.js +1 -1
  149. package/standalone/apps/frontend/.next/server/chunks/5493.js +1 -1
  150. package/standalone/apps/frontend/.next/server/chunks/5636.js +1 -1
  151. package/standalone/apps/frontend/.next/server/chunks/5660.js +1 -1
  152. package/standalone/apps/frontend/.next/server/chunks/5956.js +1 -1
  153. package/standalone/apps/frontend/.next/server/chunks/6135.js +1 -1
  154. package/standalone/apps/frontend/.next/server/chunks/{2183.js → 6224.js} +16 -14
  155. package/standalone/apps/frontend/.next/server/chunks/6315.js +1 -1
  156. package/standalone/apps/frontend/.next/server/chunks/6324.js +1 -1
  157. package/standalone/apps/frontend/.next/server/chunks/{7873.js → 6380.js} +99 -2
  158. package/standalone/apps/frontend/.next/server/chunks/{3231.js → 6426.js} +16 -14
  159. package/standalone/apps/frontend/.next/server/chunks/{3394.js → 6494.js} +16 -14
  160. package/standalone/apps/frontend/.next/server/chunks/{5560.js → 6595.js} +16 -14
  161. package/standalone/apps/frontend/.next/server/chunks/{710.js → 6659.js} +16 -14
  162. package/standalone/apps/frontend/.next/server/chunks/6791.js +1 -1
  163. package/standalone/apps/frontend/.next/server/chunks/6806.js +1 -1
  164. package/standalone/apps/frontend/.next/server/chunks/6832.js +1 -1
  165. package/standalone/apps/frontend/.next/server/chunks/6937.js +2 -2
  166. package/standalone/apps/frontend/.next/server/chunks/695.js +1 -1
  167. package/standalone/apps/frontend/.next/server/chunks/6961.js +1 -1
  168. package/standalone/apps/frontend/.next/server/chunks/7012.js +1 -1
  169. package/standalone/apps/frontend/.next/server/chunks/7020.js +1 -1
  170. package/standalone/apps/frontend/.next/server/chunks/7041.js +1 -1
  171. package/standalone/apps/frontend/.next/server/chunks/7100.js +1 -1
  172. package/standalone/apps/frontend/.next/server/chunks/7143.js +1 -1
  173. package/standalone/apps/frontend/.next/server/chunks/7318.js +1 -1
  174. package/standalone/apps/frontend/.next/server/chunks/736.js +1 -1
  175. package/standalone/apps/frontend/.next/server/chunks/7368.js +1 -1
  176. package/standalone/apps/frontend/.next/server/chunks/7374.js +1 -1
  177. package/standalone/apps/frontend/.next/server/chunks/7465.js +1 -1
  178. package/standalone/apps/frontend/.next/server/chunks/7466.js +1 -1
  179. package/standalone/apps/frontend/.next/server/chunks/7552.js +1 -1
  180. package/standalone/apps/frontend/.next/server/chunks/7571.js +1 -1
  181. package/standalone/apps/frontend/.next/server/chunks/766.js +1196 -0
  182. package/standalone/apps/frontend/.next/server/chunks/{6975.js → 7747.js} +16 -14
  183. package/standalone/apps/frontend/.next/server/chunks/{2361.js → 7791.js} +16 -14
  184. package/standalone/apps/frontend/.next/server/chunks/7839.js +1 -1
  185. package/standalone/apps/frontend/.next/server/chunks/{9356.js → 796.js} +16 -14
  186. package/standalone/apps/frontend/.next/server/chunks/8012.js +1 -1
  187. package/standalone/apps/frontend/.next/server/chunks/{8569.js → 8103.js} +2 -395
  188. package/standalone/apps/frontend/.next/server/chunks/8255.js +71008 -1605
  189. package/standalone/apps/frontend/.next/server/chunks/857.js +1 -1
  190. package/standalone/apps/frontend/.next/server/chunks/8599.js +1 -1
  191. package/standalone/apps/frontend/.next/server/chunks/{9318.js → 868.js} +16 -14
  192. package/standalone/apps/frontend/.next/server/chunks/{8394.js → 8712.js} +47 -146
  193. package/standalone/apps/frontend/.next/server/chunks/8829.js +1 -1
  194. package/standalone/apps/frontend/.next/server/chunks/{730.js → 8835.js} +74 -299
  195. package/standalone/apps/frontend/.next/server/chunks/8930.js +1 -1
  196. package/standalone/apps/frontend/.next/server/chunks/9059.js +1 -1
  197. package/standalone/apps/frontend/.next/server/chunks/9080.js +1 -1
  198. package/standalone/apps/frontend/.next/server/chunks/{3824.js → 927.js} +24 -24
  199. package/standalone/apps/frontend/.next/server/chunks/{9261.js → 9297.js} +16 -14
  200. package/standalone/apps/frontend/.next/server/chunks/9378.js +1 -1
  201. package/standalone/apps/frontend/.next/server/chunks/9552.js +1 -1
  202. package/standalone/apps/frontend/.next/server/chunks/{342.js → 9711.js} +16 -14
  203. package/standalone/apps/frontend/.next/server/chunks/{7842.js → 9911.js} +16 -14
  204. package/standalone/apps/frontend/.next/server/chunks/9927.js +393 -0
  205. package/standalone/apps/frontend/.next/server/middleware-build-manifest.js +1 -1
  206. package/standalone/apps/frontend/.next/server/middleware-react-loadable-manifest.js +1 -1
  207. package/standalone/apps/frontend/.next/server/middleware.js +792 -7147
  208. package/standalone/apps/frontend/.next/server/pages/404.html +1 -1
  209. package/standalone/apps/frontend/.next/server/pages/500.html +1 -1
  210. package/standalone/apps/frontend/.next/server/server-reference-manifest.json +1 -1
  211. package/standalone/apps/frontend/.next/server/webpack-runtime.js +1 -1
  212. package/standalone/apps/frontend/.next/static/{7fwzlNjbcq2vtnM6QhHnm → 5dXfbPlvt4Js0PhZwYimS}/_buildManifest.js +1 -1
  213. package/standalone/apps/frontend/.next/static/chunks/1581.d346066f42ea32d9.js +1 -0
  214. package/standalone/apps/frontend/.next/static/chunks/21.80f630720ce5d399.js +1 -0
  215. package/standalone/apps/frontend/.next/static/chunks/2313.5a58bc49f794dfde.js +1 -0
  216. package/standalone/apps/frontend/.next/static/chunks/2770.a1153fa286f807ca.js +1 -0
  217. package/standalone/apps/frontend/.next/static/chunks/285.4bd38bfe3c47a475.js +1 -0
  218. package/standalone/apps/frontend/.next/static/chunks/317.7f0ece1099484cf9.js +1 -0
  219. package/standalone/apps/frontend/.next/static/chunks/3885.d9113939596bf3b8.js +1 -0
  220. package/standalone/apps/frontend/.next/static/chunks/389.7b458ffc7d516ddd.js +1 -0
  221. package/standalone/apps/frontend/.next/static/chunks/3990.c48a657c9ea9a44b.js +1 -0
  222. package/standalone/apps/frontend/.next/static/chunks/4051.c3994d6f4abcd0e0.js +1 -0
  223. package/standalone/apps/frontend/.next/static/chunks/4068.78ea607d67bd65a0.js +1 -0
  224. package/standalone/apps/frontend/.next/static/chunks/4081.46ad40b822c6916b.js +1 -0
  225. package/standalone/apps/frontend/.next/static/chunks/4543.9278b6d01ee036e1.js +1 -0
  226. package/standalone/apps/frontend/.next/static/chunks/4601.d0fc1677704c70b4.js +1 -0
  227. package/standalone/apps/frontend/.next/static/chunks/4697.bc616cfc8e811e73.js +1 -0
  228. package/standalone/apps/frontend/.next/static/chunks/4775.71ae21f85cb5e145.js +1 -0
  229. package/standalone/apps/frontend/.next/static/chunks/4803.45597c5e81cd3c13.js +1 -0
  230. package/standalone/apps/frontend/.next/static/chunks/5334.1744c780cc556f06.js +1 -0
  231. package/standalone/apps/frontend/.next/static/chunks/5477.2d0f1564203fb566.js +1 -0
  232. package/standalone/apps/frontend/.next/static/chunks/5910.100100966869410e.js +1 -0
  233. package/standalone/apps/frontend/.next/static/chunks/6760.026c5949f3586091.js +1 -0
  234. package/standalone/apps/frontend/.next/static/chunks/6833.dca4879e8a220b69.js +1 -0
  235. package/standalone/apps/frontend/.next/static/chunks/6871.ac58d649278c1506.js +1 -0
  236. package/standalone/apps/frontend/.next/static/chunks/694.43f1b5ec2406a34d.js +1 -0
  237. package/standalone/apps/frontend/.next/static/chunks/6955.f7c9ff28ee7a7499.js +1 -0
  238. package/standalone/apps/frontend/.next/static/chunks/7249.2e31fa450a01a1df.js +1 -0
  239. package/standalone/apps/frontend/.next/static/chunks/7869.675d538426cfcbe9.js +1 -0
  240. package/standalone/apps/frontend/.next/static/chunks/8109.a87a8b9713f2b52e.js +1 -0
  241. package/standalone/apps/frontend/.next/static/chunks/8627.7bb9aaab1ac2f553.js +1 -0
  242. package/standalone/apps/frontend/.next/static/chunks/8637.8d938ed221c34fef.js +1 -0
  243. package/standalone/apps/frontend/.next/static/chunks/87c73c54-6dc57a387011e0eb.js +1 -0
  244. package/standalone/apps/frontend/.next/static/chunks/891cff7f-b4b276af3a3ec6c2.js +1 -0
  245. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/about/page-8c95ed651c95e81d.js +1 -0
  246. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/admin/devops/page-07c243823806d9cd.js +1 -0
  247. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/admin/exchange/page-c4ae2acead0589a5.js +1 -0
  248. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/admin/layout-321849d614eeeb37.js +1 -0
  249. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/admin/page-d354c931ccf79f83.js +1 -0
  250. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/admin/security/page-fc375342b3cfc441.js +1 -0
  251. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/admin/users/page-e7b49e8716c71d4c.js +1 -0
  252. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/auth/error/page-84bb543b60f14a75.js +1 -0
  253. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/auth/mcp-setup/route-a94925dc93ffbc79.js +1 -0
  254. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/auth/signin/page-7f3c48236f101729.js +1 -0
  255. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/auth/signup/page-c9f2dcf33b613491.js +1 -0
  256. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/auth/welcome/page-829aa2aa53d10c09.js +1 -0
  257. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/know/compose/page-de72d045de6a35c6.js +1 -0
  258. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/know/discover/page-c3a797806c29fb1d.js +1 -0
  259. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/know/layout-d6130394cfcdf0b3.js +1 -0
  260. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/know/page-1c71e6c5852e4fd1.js +1 -0
  261. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/know/resource/[id]/page-28cd0a52dc5eb7f7.js +1 -0
  262. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/layout-892c0aed3b6305e6.js +1 -0
  263. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/moderate/entity-tags/page-2570acd78d5ba365.js +1 -0
  264. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/moderate/layout-ed8fba196193bb78.js +1 -0
  265. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/moderate/linked-data/page-121dae57df4247e6.js +1 -0
  266. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/moderate/page-4977a31fd59bad74.js +1 -0
  267. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/moderate/recent/page-f8157849c4259b2d.js +1 -0
  268. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/moderate/tag-schemas/{page-35187d6da8884290.js → page-8d93cbbc2103ce33.js} +1 -1
  269. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/not-found-4a7239a613e6318d.js +1 -0
  270. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/page-5401abd4b8b5a660.js +1 -0
  271. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/privacy/page-c8debdc896fbfb18.js +1 -0
  272. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/terms/page-5352a1dd1485f780.js +1 -0
  273. package/standalone/apps/frontend/.next/static/chunks/app/_global-error/page-654d20a65a117618.js +1 -0
  274. package/standalone/apps/frontend/.next/static/chunks/app/_not-found/page-4b6ea20c964f88d7.js +1 -0
  275. package/standalone/apps/frontend/.next/static/chunks/app/api/cookies/consent/route-c9e8d6dd4d9f06a4.js +1 -0
  276. package/standalone/apps/frontend/.next/static/chunks/app/api/cookies/export/route-a4ab2ad0938d4aa9.js +1 -0
  277. package/standalone/apps/frontend/.next/static/chunks/app/api/resources/[id]/route-197cf90408a76c83.js +1 -0
  278. package/standalone/apps/frontend/.next/static/chunks/app/error-9aba7afd30c62d53.js +1 -0
  279. package/standalone/apps/frontend/.next/static/chunks/app/global-error-eda57df3f34f3fea.js +1 -0
  280. package/standalone/apps/frontend/.next/static/chunks/app/layout-0449f9303123dcff.js +1 -0
  281. package/standalone/apps/frontend/.next/static/chunks/app/not-found-c9bc183da50381ee.js +1 -0
  282. package/standalone/apps/frontend/.next/static/chunks/common-39e39b31d7e98d78.js +63 -0
  283. package/standalone/apps/frontend/.next/static/chunks/framework-7bb6ccfe56e756bc.js +1 -0
  284. package/standalone/apps/frontend/.next/static/chunks/main-app-c035ceb9711489b6.js +1 -0
  285. package/standalone/apps/frontend/.next/static/chunks/{main-7bae9c8a170f1f27.js → main-d9a52d294ecf5b0a.js} +1 -1
  286. package/standalone/apps/frontend/.next/static/chunks/next/dist/client/components/builtin/app-error-c9c4d6e710ccaf49.js +1 -0
  287. package/standalone/apps/frontend/.next/static/chunks/next/dist/client/components/builtin/forbidden-e477fd7b191df4de.js +1 -0
  288. package/standalone/apps/frontend/.next/static/chunks/next/dist/client/components/builtin/unauthorized-9f5fef6300d812a3.js +1 -0
  289. package/standalone/apps/frontend/.next/static/chunks/vendors-f8fa4fd7e9983288.js +40 -0
  290. package/standalone/apps/frontend/.next/static/chunks/webpack-89d7a897970cded3.js +1 -0
  291. package/standalone/apps/frontend/.next/static/css/4d11af642686d027.css +1 -0
  292. package/standalone/apps/frontend/package.json +6 -8
  293. package/standalone/package.json +1 -1
  294. package/standalone/packages/core/package.json +1 -1
  295. package/standalone/apps/frontend/.next/server/app/api/auth/[...nextauth]/route.js +0 -659
  296. package/standalone/apps/frontend/.next/server/app/api/auth/[...nextauth]/route.js.nft.json +0 -1
  297. package/standalone/apps/frontend/.next/server/app/api/auth/[...nextauth]/route_client-reference-manifest.js +0 -1
  298. package/standalone/apps/frontend/.next/server/chunks/5015.js +0 -641
  299. package/standalone/apps/frontend/.next/server/chunks/5056.js +0 -23345
  300. package/standalone/apps/frontend/.next/server/chunks/5440.js +0 -69207
  301. package/standalone/apps/frontend/.next/server/chunks/7420.js +0 -10476
  302. package/standalone/apps/frontend/.next/static/chunks/1747.e63875a6fa49821c.js +0 -1
  303. package/standalone/apps/frontend/.next/static/chunks/1863.d3205f88d6edfe5f.js +0 -1
  304. package/standalone/apps/frontend/.next/static/chunks/2279.abf3c939f7bd44fa.js +0 -1
  305. package/standalone/apps/frontend/.next/static/chunks/2357.a75f04194a4dfd58.js +0 -1
  306. package/standalone/apps/frontend/.next/static/chunks/2663.20812ce79d05999b.js +0 -1
  307. package/standalone/apps/frontend/.next/static/chunks/2801.0ea7bf330ba9283a.js +0 -1
  308. package/standalone/apps/frontend/.next/static/chunks/3907.43a5d26ea19eac0c.js +0 -1
  309. package/standalone/apps/frontend/.next/static/chunks/4296.62618cb57ac26cb0.js +0 -1
  310. package/standalone/apps/frontend/.next/static/chunks/432.8cb455bfe72957a9.js +0 -1
  311. package/standalone/apps/frontend/.next/static/chunks/4745.e6ed60e3b3140203.js +0 -1
  312. package/standalone/apps/frontend/.next/static/chunks/5191.072e0f2a85d349d5.js +0 -1
  313. package/standalone/apps/frontend/.next/static/chunks/5405.85f0cc701aa7d13d.js +0 -1
  314. package/standalone/apps/frontend/.next/static/chunks/5499.e81f8af2544428b2.js +0 -1
  315. package/standalone/apps/frontend/.next/static/chunks/5600.5db5f94f2f65b3cf.js +0 -1
  316. package/standalone/apps/frontend/.next/static/chunks/5720.a73a00d3a3245d5d.js +0 -1
  317. package/standalone/apps/frontend/.next/static/chunks/5793.72f6a2d00649a22a.js +0 -1
  318. package/standalone/apps/frontend/.next/static/chunks/5802.5c30cb4e5490f7a0.js +0 -1
  319. package/standalone/apps/frontend/.next/static/chunks/5933.7a7ad21b052c1a48.js +0 -1
  320. package/standalone/apps/frontend/.next/static/chunks/6269.28ce5b518eff97d7.js +0 -1
  321. package/standalone/apps/frontend/.next/static/chunks/6711.0fbc582d204de7d6.js +0 -1
  322. package/standalone/apps/frontend/.next/static/chunks/7135.d5eb1e6536643fd0.js +0 -1
  323. package/standalone/apps/frontend/.next/static/chunks/7249.90de9d0b8e58d1fd.js +0 -1
  324. package/standalone/apps/frontend/.next/static/chunks/7328.6a2e068d20ee8128.js +0 -1
  325. package/standalone/apps/frontend/.next/static/chunks/7639.07c6b887aa816091.js +0 -1
  326. package/standalone/apps/frontend/.next/static/chunks/7958.fce4e54333f1b4e6.js +0 -1
  327. package/standalone/apps/frontend/.next/static/chunks/8578.c747cd35e98791c9.js +0 -1
  328. package/standalone/apps/frontend/.next/static/chunks/87c73c54-e11922cda838f8cc.js +0 -1
  329. package/standalone/apps/frontend/.next/static/chunks/891cff7f-d7677a8f46c597cc.js +0 -1
  330. package/standalone/apps/frontend/.next/static/chunks/8986.956226a604299681.js +0 -1
  331. package/standalone/apps/frontend/.next/static/chunks/9062.0c17877ace2d6057.js +0 -1
  332. package/standalone/apps/frontend/.next/static/chunks/9201.d94f3c0561593ebd.js +0 -1
  333. package/standalone/apps/frontend/.next/static/chunks/9298.19eee3b7bf0cc24f.js +0 -1
  334. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/about/page-36a8caa614bb409b.js +0 -1
  335. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/admin/devops/page-1ca7ed50ccf09110.js +0 -1
  336. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/admin/exchange/page-88da3ee9c5f3e55c.js +0 -1
  337. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/admin/layout-956ba0ffa1199bff.js +0 -1
  338. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/admin/page-08a07c949ef237ab.js +0 -1
  339. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/admin/security/page-c0c358dc5a31b239.js +0 -1
  340. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/admin/users/page-242c5ca40d8cfdad.js +0 -1
  341. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/auth/error/page-2a3580ff60f5cf8a.js +0 -1
  342. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/auth/mcp-setup/route-3d9d880043f60fda.js +0 -1
  343. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/auth/signin/page-3103f17b15f4a29f.js +0 -1
  344. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/auth/signup/page-f4ee887c37f6c7a1.js +0 -1
  345. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/auth/welcome/page-17b751308fcc346c.js +0 -1
  346. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/know/compose/page-d377d7773b34d2b6.js +0 -1
  347. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/know/discover/page-7546934ec25d0e54.js +0 -1
  348. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/know/layout-8da5f1382c82517a.js +0 -1
  349. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/know/page-2b5d147fc5b43912.js +0 -1
  350. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/know/resource/[id]/page-880c1814b7e76270.js +0 -1
  351. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/layout-b1a244782c4e0bd5.js +0 -1
  352. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/moderate/entity-tags/page-27daa3fe9c00977c.js +0 -1
  353. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/moderate/layout-b60605082e447f42.js +0 -1
  354. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/moderate/linked-data/page-aa3d5c362260d076.js +0 -1
  355. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/moderate/page-4204b564011168b0.js +0 -1
  356. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/moderate/recent/page-b1695fc503599d6f.js +0 -1
  357. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/not-found-543e4c2e7b362566.js +0 -1
  358. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/page-1fb566c126836253.js +0 -1
  359. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/privacy/page-61b871e076d3b1e1.js +0 -1
  360. package/standalone/apps/frontend/.next/static/chunks/app/[locale]/terms/page-95ce3054883c38ba.js +0 -1
  361. package/standalone/apps/frontend/.next/static/chunks/app/_global-error/page-79e9db846cb5b1b0.js +0 -1
  362. package/standalone/apps/frontend/.next/static/chunks/app/_not-found/page-919e7c64c5003035.js +0 -1
  363. package/standalone/apps/frontend/.next/static/chunks/app/api/auth/[...nextauth]/route-a0e1a9709b37316f.js +0 -1
  364. package/standalone/apps/frontend/.next/static/chunks/app/api/cookies/consent/route-7fe48e1a8a111543.js +0 -1
  365. package/standalone/apps/frontend/.next/static/chunks/app/api/cookies/export/route-32b06db0feb2e923.js +0 -1
  366. package/standalone/apps/frontend/.next/static/chunks/app/api/resources/[id]/route-d30a52945e1daab7.js +0 -1
  367. package/standalone/apps/frontend/.next/static/chunks/app/error-b7b996fcd4c281e1.js +0 -1
  368. package/standalone/apps/frontend/.next/static/chunks/app/global-error-9a4752b9d60178d7.js +0 -1
  369. package/standalone/apps/frontend/.next/static/chunks/app/layout-9c385c22b6e7c3bc.js +0 -1
  370. package/standalone/apps/frontend/.next/static/chunks/app/not-found-6c69bcb3b64a5d23.js +0 -1
  371. package/standalone/apps/frontend/.next/static/chunks/common-755716aba1c6723a.js +0 -63
  372. package/standalone/apps/frontend/.next/static/chunks/framework-b879567b90d34fb5.js +0 -1
  373. package/standalone/apps/frontend/.next/static/chunks/main-app-094b6e4e5016338b.js +0 -1
  374. package/standalone/apps/frontend/.next/static/chunks/next/dist/client/components/builtin/app-error-bc9b50e65cc512f7.js +0 -1
  375. package/standalone/apps/frontend/.next/static/chunks/next/dist/client/components/builtin/forbidden-02b63044bb72788d.js +0 -1
  376. package/standalone/apps/frontend/.next/static/chunks/next/dist/client/components/builtin/unauthorized-8922e7db57470d2a.js +0 -1
  377. package/standalone/apps/frontend/.next/static/chunks/vendors-63213253c18580f4.js +0 -40
  378. package/standalone/apps/frontend/.next/static/chunks/webpack-5c05c98a53141f15.js +0 -1
  379. package/standalone/apps/frontend/.next/static/css/05925ad6b995db98.css +0 -1
  380. /package/standalone/apps/frontend/.next/static/{7fwzlNjbcq2vtnM6QhHnm → 5dXfbPlvt4Js0PhZwYimS}/_ssgManifest.js +0 -0
@@ -89,7 +89,7 @@ function() { throw new Error("Attempted to call the default export of \"/home/ru
89
89
  /* harmony export */ C$z: () => (/* reexport safe */ _home_runner_work_semiont_semiont_packages_react_ui_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__.useEventSubscriptions),
90
90
  /* harmony export */ TbX: () => (/* reexport safe */ _home_runner_work_semiont_semiont_packages_react_ui_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__.SimpleNavigation)
91
91
  /* harmony export */ });
92
- /* harmony import */ var _home_runner_work_semiont_semiont_packages_react_ui_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(69792);
92
+ /* harmony import */ var _home_runner_work_semiont_semiont_packages_react_ui_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(41513);
93
93
 
94
94
 
95
95
 
@@ -105,7 +105,7 @@ function() { throw new Error("Attempted to call the default export of \"/home/ru
105
105
  /* harmony export */ pqI: () => (/* reexport safe */ _home_runner_work_semiont_semiont_packages_react_ui_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__.ApiClientProvider),
106
106
  /* harmony export */ wi6: () => (/* reexport safe */ _home_runner_work_semiont_semiont_packages_react_ui_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__.Footer)
107
107
  /* harmony export */ });
108
- /* harmony import */ var _home_runner_work_semiont_semiont_packages_react_ui_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(69792);
108
+ /* harmony import */ var _home_runner_work_semiont_semiont_packages_react_ui_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(41513);
109
109
 
110
110
 
111
111
 
@@ -153,8 +153,6 @@ var react_jsx_runtime = __webpack_require__(92692);
153
153
  var react = __webpack_require__(71277);
154
154
  // EXTERNAL MODULE: ../../node_modules/next-intl/dist/esm/production/react-client/index.js
155
155
  var react_client = __webpack_require__(56305);
156
- // EXTERNAL MODULE: ../../node_modules/next-auth/react/index.js
157
- var next_auth_react = __webpack_require__(62341);
158
156
  // EXTERNAL MODULE: ./src/i18n/routing.ts
159
157
  var routing = __webpack_require__(99704);
160
158
  // EXTERNAL MODULE: __barrel_optimize__?names=SimpleNavigation,useEventSubscriptions!=!../../packages/react-ui/dist/index.mjs
@@ -267,8 +265,10 @@ var CookiePreferences = __webpack_require__(80386);
267
265
  var KeyboardShortcutsContext = __webpack_require__(40953);
268
266
  // EXTERNAL MODULE: ./src/lib/routing.ts
269
267
  var lib_routing = __webpack_require__(46391);
270
- // EXTERNAL MODULE: ./src/hooks/useAuth.ts + 1 modules
271
- var useAuth = __webpack_require__(31039);
268
+ // EXTERNAL MODULE: ./src/hooks/useAuth.ts
269
+ var useAuth = __webpack_require__(65159);
270
+ // EXTERNAL MODULE: ./src/lib/env.ts
271
+ var env = __webpack_require__(23318);
272
272
  ;// ./src/app/[locale]/admin/layout.tsx
273
273
  /* __next_internal_client_entry_do_not_use__ default auto */
274
274
 
@@ -287,15 +287,12 @@ function AdminLayout({ children }) {
287
287
  const tNav = (0,react_client/* useTranslations */.c)('Navigation');
288
288
  const tHome = (0,react_client/* useTranslations */.c)('Home');
289
289
  const keyboardContext = (0,react.useContext)(KeyboardShortcutsContext/* KeyboardShortcutsContext */.GZ);
290
- const { isAuthenticated, isAdmin, isModerator } = (0,useAuth/* useAuth */.As)();
291
- const { data: session } = (0,next_auth_react.useSession)();
292
- // Extract auth token from session
293
- const authToken = session?.backendToken || null;
290
+ const { isAuthenticated, isAdmin, isModerator, token: authToken } = (0,useAuth/* useAuth */.As)();
294
291
  // Middleware has already verified admin access
295
292
  return /*#__PURE__*/ (0,react_jsx_runtime.jsx)(react_ui_dist/* AuthTokenProvider */.ffs, {
296
293
  token: authToken,
297
294
  children: /*#__PURE__*/ (0,react_jsx_runtime.jsx)(react_ui_dist/* ApiClientProvider */.pqI, {
298
- baseUrl: "",
295
+ baseUrl: env/* NEXT_PUBLIC_BACKEND_URL */.xg,
299
296
  children: /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
300
297
  className: "min-h-screen bg-gray-50 dark:bg-gray-900 flex flex-col",
301
298
  children: [
@@ -344,110 +341,6 @@ function AdminLayout({ children }) {
344
341
  }
345
342
 
346
343
 
347
- /***/ }),
348
-
349
- /***/ 31039:
350
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
351
-
352
- "use strict";
353
-
354
- // EXPORTS
355
- __webpack_require__.d(__webpack_exports__, {
356
- As: () => (/* binding */ useAuth)
357
- });
358
-
359
- // UNUSED EXPORTS: usePermissions, useUserPreferences
360
-
361
- // EXTERNAL MODULE: ../../node_modules/next-auth/react/index.js
362
- var react = __webpack_require__(62341);
363
- // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js
364
- var ssr_react = __webpack_require__(71277);
365
- // EXTERNAL MODULE: ../../packages/api-client/dist/index.js
366
- var dist = __webpack_require__(88887);
367
- ;// __barrel_optimize__?names=JWTTokenSchema,validateData!=!../../packages/api-client/dist/index.js
368
-
369
-
370
- ;// ./src/hooks/useAuth.ts
371
- /* __next_internal_client_entry_do_not_use__ useAuth,useUserPreferences,usePermissions auto */
372
-
373
-
374
- /**
375
- * Enhanced authentication hook with validation and user information
376
- */ function useAuth() {
377
- const { data: session, status } = (0,react.useSession)();
378
- const authInfo = (0,ssr_react.useMemo)(()=>{
379
- const isLoading = status === 'loading';
380
- const isAuthenticated = !!session?.user;
381
- // Validate backend token if present
382
- const hasValidBackendToken = session?.backendToken ? (0,dist/* validateData */.lv)(dist/* JWTTokenSchema */.k3, session.backendToken).success : false;
383
- return {
384
- // Session data
385
- session,
386
- user: session?.user,
387
- backendUser: session?.backendUser,
388
- // Status flags
389
- isLoading,
390
- isAuthenticated,
391
- hasValidBackendToken,
392
- // Computed properties
393
- userDomain: session?.backendUser?.domain || session?.user?.email?.split('@')[1],
394
- displayName: session?.user?.name || session?.user?.email?.split('@')[0] || 'User',
395
- avatarUrl: session?.user?.image,
396
- isAdmin: session?.backendUser?.isAdmin || false,
397
- isModerator: session?.backendUser?.isModerator || false,
398
- // Combined auth status
399
- isFullyAuthenticated: isAuthenticated && hasValidBackendToken
400
- };
401
- }, [
402
- session,
403
- status
404
- ]);
405
- return authInfo;
406
- }
407
- /**
408
- * Hook for getting user preferences and settings
409
- */ function useUserPreferences() {
410
- const { session } = useAuth();
411
- return useMemo(()=>{
412
- // In the future, this could fetch user preferences from backend
413
- // For now, return defaults
414
- return {
415
- theme: 'system',
416
- language: 'en',
417
- timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
418
- emailNotifications: true
419
- };
420
- }, [
421
- session
422
- ]);
423
- }
424
- /**
425
- * Hook for checking user permissions (future expansion)
426
- */ function usePermissions() {
427
- const { backendUser, isFullyAuthenticated } = useAuth();
428
- return useMemo(()=>{
429
- if (!isFullyAuthenticated || !backendUser) {
430
- return {
431
- canRead: false,
432
- canWrite: false,
433
- canAdmin: false,
434
- canManageUsers: false
435
- };
436
- }
437
- // Basic permissions - in the future this would come from backend
438
- return {
439
- canRead: true,
440
- canWrite: true,
441
- canAdmin: false,
442
- canManageUsers: false
443
- };
444
- }, [
445
- backendUser,
446
- isFullyAuthenticated
447
- ]);
448
- }
449
-
450
-
451
344
  /***/ }),
452
345
 
453
346
  /***/ 32037:
@@ -492,1975 +385,1983 @@ module.exports = require("path");
492
385
 
493
386
  /***/ }),
494
387
 
495
- /***/ 35299:
496
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
388
+ /***/ 41025:
389
+ /***/ ((module) => {
497
390
 
498
391
  "use strict";
499
- __webpack_require__.r(__webpack_exports__);
500
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
501
- /* harmony export */ __next_app__: () => (/* binding */ __next_app__),
502
- /* harmony export */ handler: () => (/* binding */ handler),
503
- /* harmony export */ routeModule: () => (/* binding */ routeModule)
504
- /* harmony export */ });
505
- /* harmony import */ var next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(80666);
506
- /* harmony import */ var next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__);
507
- /* harmony import */ var next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(51421);
508
- /* harmony import */ var next_dist_server_instrumentation_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4675);
509
- /* harmony import */ var next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(29796);
510
- /* harmony import */ var next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__);
511
- /* harmony import */ var next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(54046);
512
- /* harmony import */ var next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__);
513
- /* harmony import */ var next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(74928);
514
- /* harmony import */ var next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__);
515
- /* harmony import */ var next_dist_server_app_render_interop_default__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(19727);
516
- /* harmony import */ var next_dist_server_app_render_strip_flight_headers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(24268);
517
- /* harmony import */ var next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(60402);
518
- /* harmony import */ var next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__);
519
- /* harmony import */ var next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(22040);
520
- /* harmony import */ var next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__);
521
- /* harmony import */ var next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(27186);
522
- /* harmony import */ var next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__);
523
- /* harmony import */ var next_dist_server_app_render_manifests_singleton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(49228);
524
- /* harmony import */ var next_dist_server_app_render_manifests_singleton__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_manifests_singleton__WEBPACK_IMPORTED_MODULE_11__);
525
- /* harmony import */ var next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(97485);
526
- /* harmony import */ var next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__);
527
- /* harmony import */ var next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(261);
528
- /* harmony import */ var next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_13__);
529
- /* harmony import */ var next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(80885);
530
- /* harmony import */ var next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_14__);
531
- /* harmony import */ var next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(7162);
532
- /* harmony import */ var next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__);
533
- /* harmony import */ var next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(26713);
534
- /* harmony import */ var next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_16__);
535
- /* harmony import */ var next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(70972);
536
- /* harmony import */ var next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_17__);
537
- /* harmony import */ var next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(57341);
538
- /* harmony import */ var next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18__);
539
- /* harmony import */ var next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(95105);
540
- /* harmony import */ var next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(38038);
541
- /* harmony import */ var next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__);
542
- /* harmony import */ var next_dist_server_stream_utils_encoded_tags__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(29898);
543
- /* harmony import */ var next_dist_server_stream_utils_node_web_streams_helper__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(62918);
544
- /* harmony import */ var next_dist_server_stream_utils_node_web_streams_helper__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_stream_utils_node_web_streams_helper__WEBPACK_IMPORTED_MODULE_22__);
545
- /* harmony import */ var next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(98798);
546
- /* harmony import */ var next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__);
547
- /* harmony import */ var next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(86439);
548
- /* harmony import */ var next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__);
549
- /* harmony import */ var next_dist_shared_lib_size_limit__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(77068);
550
- /* harmony import */ var next_dist_shared_lib_size_limit__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_size_limit__WEBPACK_IMPORTED_MODULE_25__);
551
- /* harmony import */ var next_dist_server_lib_postponed_request_body__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(31214);
552
- /* harmony import */ var next_dist_server_lib_postponed_request_body__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_postponed_request_body__WEBPACK_IMPORTED_MODULE_26__);
553
- /* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(35402);
554
- /* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_27__);
555
- /* harmony import */ var next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(29059);
556
- /* harmony import */ var next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_28___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_28__);
557
- /* harmony import */ var next_dist_shared_lib_invariant_error__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(70722);
558
- /* harmony import */ var next_dist_shared_lib_invariant_error__WEBPACK_IMPORTED_MODULE_29___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_invariant_error__WEBPACK_IMPORTED_MODULE_29__);
559
- /* harmony import */ var next_dist_lib_scheduler__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(31182);
560
- /* harmony import */ var next_dist_lib_scheduler__WEBPACK_IMPORTED_MODULE_30___default = /*#__PURE__*/__webpack_require__.n(next_dist_lib_scheduler__WEBPACK_IMPORTED_MODULE_30__);
561
- /* harmony import */ var next_dist_shared_lib_router_utils_interception_routes__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(43954);
562
- /* harmony import */ var next_dist_shared_lib_router_utils_interception_routes__WEBPACK_IMPORTED_MODULE_31___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_interception_routes__WEBPACK_IMPORTED_MODULE_31__);
563
- /* harmony import */ var next_dist_shared_lib_router_utils_get_segment_param__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(17891);
564
- /* harmony import */ var next_dist_shared_lib_router_utils_get_segment_param__WEBPACK_IMPORTED_MODULE_32___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_get_segment_param__WEBPACK_IMPORTED_MODULE_32__);
565
- /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};
566
- /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_27__) if(["default","__next_app__","routeModule","handler"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_27__[__WEBPACK_IMPORT_KEY__]
567
- /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
568
- const module0 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 95235));
569
- const module1 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 25195));
570
- const module2 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 56357));
571
- const module3 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 72353));
572
- const module4 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 4253, 23));
573
- const module5 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 49184, 23));
574
- const module6 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 57149));
575
- const module7 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 56357));
576
- const module8 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 28310));
577
- const module9 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 20706));
578
- const module10 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 56357));
579
- const module11 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 56357));
580
- const page12 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 71977));
392
+ module.exports = require("next/dist/server/app-render/dynamic-access-async-storage.external.js");
581
393
 
394
+ /***/ }),
582
395
 
396
+ /***/ 43954:
397
+ /***/ ((module) => {
583
398
 
399
+ "use strict";
400
+ module.exports = require("next/dist/shared/lib/router/utils/interception-routes");
584
401
 
402
+ /***/ }),
585
403
 
404
+ /***/ 47726:
405
+ /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
586
406
 
407
+ Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 30796));
587
408
 
588
409
 
410
+ /***/ }),
589
411
 
412
+ /***/ 55511:
413
+ /***/ ((module) => {
590
414
 
415
+ "use strict";
416
+ module.exports = require("crypto");
591
417
 
418
+ /***/ }),
592
419
 
420
+ /***/ 56677:
421
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
593
422
 
423
+ "use strict";
424
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
425
+ /* harmony export */ C$z: () => (/* reexport safe */ _home_runner_work_semiont_semiont_packages_react_ui_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__.useEventSubscriptions),
426
+ /* harmony export */ DPo: () => (/* reexport safe */ _home_runner_work_semiont_semiont_packages_react_ui_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__.useTheme),
427
+ /* harmony export */ cvF: () => (/* reexport safe */ _home_runner_work_semiont_semiont_packages_react_ui_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__.useLineNumbers),
428
+ /* harmony export */ ySJ: () => (/* reexport safe */ _home_runner_work_semiont_semiont_packages_react_ui_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__.usePanelBrowse)
429
+ /* harmony export */ });
430
+ /* harmony import */ var _home_runner_work_semiont_semiont_packages_react_ui_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(41513);
594
431
 
595
432
 
596
433
 
434
+ /***/ }),
597
435
 
436
+ /***/ 63033:
437
+ /***/ ((module) => {
598
438
 
439
+ "use strict";
440
+ module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js");
599
441
 
442
+ /***/ }),
600
443
 
444
+ /***/ 70722:
445
+ /***/ ((module) => {
601
446
 
447
+ "use strict";
448
+ module.exports = require("next/dist/shared/lib/invariant-error");
602
449
 
450
+ /***/ }),
603
451
 
452
+ /***/ 71977:
453
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
604
454
 
455
+ "use strict";
456
+ __webpack_require__.r(__webpack_exports__);
457
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
458
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
459
+ /* harmony export */ });
460
+ /* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(30274);
461
+ /* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__);
462
+ // This file is generated by the Webpack next-flight-loader.
605
463
 
464
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__.registerClientReference)(
465
+ function() { throw new Error("Attempted to call the default export of \"/home/runner/work/semiont/semiont/apps/frontend/src/app/[locale]/admin/devops/page.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component."); },
466
+ "/home/runner/work/semiont/semiont/apps/frontend/src/app/[locale]/admin/devops/page.tsx",
467
+ "default",
468
+ ));
606
469
 
607
470
 
608
- // We inject the tree and pages here so that we can use them in the route
609
- // module.
610
- const tree = {
611
- children: [
612
- '',
613
- {
614
- children: [
615
- '[locale]',
616
- {
617
- children: [
618
- 'admin',
619
- {
620
- children: [
621
- 'devops',
622
- {
623
- children: ['__PAGE__', {}, {
624
- page: [page12, "/home/runner/work/semiont/semiont/apps/frontend/src/app/[locale]/admin/devops/page.tsx"],
625
-
626
- }]
627
- },
628
- {
629
- 'global-error': [module11, "/home/runner/work/semiont/semiont/apps/frontend/src/app/global-error.tsx"],
630
-
631
- },
632
- []
633
- ]
634
- },
635
- {
636
- 'layout': [module9, "/home/runner/work/semiont/semiont/apps/frontend/src/app/[locale]/admin/layout.tsx"],
637
- 'global-error': [module10, "/home/runner/work/semiont/semiont/apps/frontend/src/app/global-error.tsx"],
638
-
639
- },
640
- []
641
- ]
642
- },
643
- {
644
- 'layout': [module6, "/home/runner/work/semiont/semiont/apps/frontend/src/app/[locale]/layout.tsx"],
645
- 'global-error': [module7, "/home/runner/work/semiont/semiont/apps/frontend/src/app/global-error.tsx"],
646
- 'not-found': [module8, "/home/runner/work/semiont/semiont/apps/frontend/src/app/[locale]/not-found.tsx"],
647
-
648
- },
649
- ["_not-found","_global-error","api"]
650
- ]
651
- },
652
- {
653
- 'layout': [module0, "/home/runner/work/semiont/semiont/apps/frontend/src/app/layout.tsx"],
654
- 'error': [module1, "/home/runner/work/semiont/semiont/apps/frontend/src/app/error.tsx"],
655
- 'global-error': [module2, "/home/runner/work/semiont/semiont/apps/frontend/src/app/global-error.tsx"],
656
- 'not-found': [module3, "/home/runner/work/semiont/semiont/apps/frontend/src/app/not-found.tsx"],
657
- 'forbidden': [module4, "next/dist/client/components/builtin/forbidden.js"],
658
- 'unauthorized': [module5, "next/dist/client/components/builtin/unauthorized.js"],
659
-
660
- },
661
- []
662
- ]
663
- }.children;
664
- const __next_app_require__ = __webpack_require__
665
- const __next_app_load_chunk__ = () => Promise.resolve()
666
- const __next_app__ = {
667
- require: __next_app_require__,
668
- loadChunk: __next_app_load_chunk__
669
- };
471
+ /***/ }),
670
472
 
473
+ /***/ 76238:
474
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
671
475
 
476
+ "use strict";
672
477
 
478
+ // EXPORTS
479
+ __webpack_require__.d(__webpack_exports__, {
480
+ t: () => (/* binding */ ToolbarPanels)
481
+ });
673
482
 
483
+ // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js
484
+ var react_jsx_runtime = __webpack_require__(92692);
485
+ // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js
486
+ var react = __webpack_require__(71277);
487
+ // EXTERNAL MODULE: ../../packages/react-ui/dist/index.mjs + 26 modules
488
+ var dist = __webpack_require__(41513);
489
+ ;// __barrel_optimize__?names=ResizeHandle,SettingsPanel,useEventSubscriptions,usePanelWidth!=!../../packages/react-ui/dist/index.mjs
674
490
 
675
491
 
492
+ // EXTERNAL MODULE: ../../node_modules/next/dist/api/image.js
493
+ var api_image = __webpack_require__(93523);
494
+ // EXTERNAL MODULE: ../../node_modules/next-intl/dist/esm/production/react-client/index.js
495
+ var react_client = __webpack_require__(56305);
496
+ ;// __barrel_optimize__?names=formatTime,sanitizeImageURL,useApiClient,useSessionExpiry!=!../../packages/react-ui/dist/index.mjs
676
497
 
677
- // Create and export the route module that will be consumed.
678
- const routeModule = new next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__.AppPageRouteModule({
679
- definition: {
680
- kind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE,
681
- page: "/[locale]/admin/devops/page",
682
- pathname: "/[locale]/admin/devops",
683
- // The following aren't used in production.
684
- bundlePath: '',
685
- filename: '',
686
- appPaths: []
687
- },
688
- userland: {
689
- loaderTree: tree
690
- },
691
- distDir: ".next" || 0,
692
- relativeProjectDir: false || ''
693
- });
694
- function buildDynamicSegmentPlaceholder(param) {
695
- const { repeat, optional } = (0,next_dist_shared_lib_router_utils_get_segment_param__WEBPACK_IMPORTED_MODULE_32__.getParamProperties)(param.paramType);
696
- if (optional) {
697
- return `[[...${param.paramName}]]`;
698
- }
699
- if (repeat) {
700
- return `[...${param.paramName}]`;
701
- }
702
- return `[${param.paramName}]`;
703
- }
704
- /**
705
- * Builds the cache key for the most complete prerenderable shell we can derive
706
- * from the shell that matched this request. Only params that can still be
707
- * filled by `generateStaticParams` are substituted; fully dynamic params stay
708
- * as placeholders so a request like `/c/foo` can complete `/[one]/[two]` into
709
- * `/c/[two]` rather than `/c/foo`.
710
- */ function buildCompletedShellCacheKey(fallbackPathname, remainingPrerenderableParams, params) {
711
- const prerenderableParamsByName = new Map(remainingPrerenderableParams.map((param)=>[
712
- param.paramName,
713
- param
714
- ]));
715
- return fallbackPathname.split('/').map((segment)=>{
716
- const segmentParam = (0,next_dist_shared_lib_router_utils_get_segment_param__WEBPACK_IMPORTED_MODULE_32__.getSegmentParam)(segment);
717
- if (!segmentParam) {
718
- return segment;
498
+
499
+ // EXTERNAL MODULE: ./src/hooks/useAuth.ts
500
+ var useAuth = __webpack_require__(65159);
501
+ // EXTERNAL MODULE: ./src/contexts/AuthContext.tsx
502
+ var AuthContext = __webpack_require__(73769);
503
+ // EXTERNAL MODULE: ./src/i18n/routing.ts
504
+ var routing = __webpack_require__(99704);
505
+ ;// ./src/components/UserPanel.tsx
506
+ /* __next_internal_client_entry_do_not_use__ UserPanel auto */
507
+
508
+
509
+
510
+
511
+
512
+
513
+
514
+ // Fallback avatar when image fails to load or is invalid
515
+ const FALLBACK_AVATAR = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiIGZpbGw9IiM2QjcyODAiLz4KPHBhdGggZD0iTTE2IDE2QzE4LjIwOTEgMTYgMjAgMTQuMjA5MSAyMCAxMkMyMCA5Ljc5MDg2IDE4LjIwOTEgOCAxNiA4QzEzLjc5MDkgOCAxMiA5Ljc5MDg2IDEyIDEyQzEyIDE0LjIwOTEgMTMuNzkwOSAxNiAxNiAxNloiIGZpbGw9IiNFNUU3RUIiLz4KPHBhdGggZD0iTTI0IDI1QzI0IDIxLjY4NjMgMjAuNDE4MyAxOSAxNiAxOUMxMS41ODE3IDE5IDggMjEuNjg2MyA4IDI1IiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cjwvc3ZnPg==';
516
+ function UserPanel() {
517
+ const t = (0,react_client/* useTranslations */.c)('UserPanel');
518
+ const { displayName, avatarUrl, userDomain, isAdmin, isModerator } = (0,useAuth/* useAuth */.As)();
519
+ const { clearSession } = (0,AuthContext/* useAuthContext */.Z)();
520
+ const apiClient = (0,dist.useApiClient)();
521
+ const router = (0,routing/* useRouter */.rd)();
522
+ const [imageError, setImageError] = (0,react.useState)(false);
523
+ const { timeRemaining } = (0,dist.useSessionExpiry)();
524
+ const sessionTimeFormatted = (0,dist.formatTime)(timeRemaining) ?? 'Unknown';
525
+ // Sanitize and validate the profile image URL
526
+ const profileImageUrl = (()=>{
527
+ if (!avatarUrl || imageError) {
528
+ return FALLBACK_AVATAR;
719
529
  }
720
- const remainingParam = prerenderableParamsByName.get(segmentParam.paramName);
721
- if (!remainingParam) {
722
- return segment;
530
+ const sanitized = (0,dist.sanitizeImageURL)(avatarUrl);
531
+ if (!sanitized) {
532
+ console.warn('Invalid profile image URL detected, using fallback');
533
+ return FALLBACK_AVATAR;
723
534
  }
724
- const value = params == null ? void 0 : params[remainingParam.paramName];
725
- if (!value) {
726
- return segment;
535
+ return sanitized;
536
+ })();
537
+ const handleSignOut = async ()=>{
538
+ try {
539
+ await apiClient.logout();
540
+ } catch {
541
+ // best-effort — cookie already cleared server-side
727
542
  }
728
- const encodedValue = Array.isArray(value) ? value.map((item)=>encodeURIComponent(item)).join('/') : encodeURIComponent(value);
729
- return segment.replace(buildDynamicSegmentPlaceholder(remainingParam), encodedValue);
730
- }).join('/') || '/';
543
+ clearSession();
544
+ router.push('/');
545
+ };
546
+ return /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
547
+ className: "semiont-user-panel",
548
+ children: [
549
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("h3", {
550
+ className: "semiont-user-panel__title",
551
+ children: t('account')
552
+ }),
553
+ /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
554
+ className: "space-y-4",
555
+ children: [
556
+ /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
557
+ className: "flex items-center gap-3",
558
+ children: [
559
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)(api_image["default"], {
560
+ src: profileImageUrl,
561
+ alt: t('profileAlt', {
562
+ name: displayName || t('user')
563
+ }),
564
+ width: 48,
565
+ height: 48,
566
+ className: "w-12 h-12 rounded-full object-cover",
567
+ onError: ()=>setImageError(true),
568
+ unoptimized: profileImageUrl === FALLBACK_AVATAR,
569
+ sizes: "48px",
570
+ quality: 85
571
+ }),
572
+ /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
573
+ className: "flex-1 min-w-0",
574
+ children: [
575
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
576
+ className: "semiont-panel-text",
577
+ children: displayName || t('user')
578
+ }),
579
+ userDomain && /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
580
+ className: "semiont-panel-text-secondary",
581
+ children: [
582
+ "@",
583
+ userDomain
584
+ ]
585
+ })
586
+ ]
587
+ })
588
+ ]
589
+ }),
590
+ /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
591
+ children: [
592
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("label", {
593
+ className: "semiont-panel-label",
594
+ children: t('session')
595
+ }),
596
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
597
+ className: "semiont-session-box",
598
+ children: /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
599
+ className: "semiont-panel-hint",
600
+ children: t('expiresIn', {
601
+ time: sessionTimeFormatted
602
+ })
603
+ })
604
+ })
605
+ ]
606
+ }),
607
+ (isAdmin || isModerator) && /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
608
+ children: [
609
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("label", {
610
+ className: "semiont-panel-label",
611
+ children: t('privileges')
612
+ }),
613
+ /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
614
+ className: "space-y-1",
615
+ children: [
616
+ isAdmin && /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
617
+ className: "semiont-privilege-badge semiont-privilege-badge--admin",
618
+ children: /*#__PURE__*/ (0,react_jsx_runtime.jsx)("span", {
619
+ className: "semiont-privilege-text",
620
+ children: t('administrator')
621
+ })
622
+ }),
623
+ isModerator && /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
624
+ className: "semiont-privilege-badge semiont-privilege-badge--moderator",
625
+ children: /*#__PURE__*/ (0,react_jsx_runtime.jsx)("span", {
626
+ className: "semiont-privilege-text",
627
+ children: t('moderator')
628
+ })
629
+ })
630
+ ]
631
+ })
632
+ ]
633
+ }),
634
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
635
+ className: "semiont-panel-divider",
636
+ children: /*#__PURE__*/ (0,react_jsx_runtime.jsx)("button", {
637
+ onClick: handleSignOut,
638
+ className: "semiont-signout-button",
639
+ children: t('signOut')
640
+ })
641
+ })
642
+ ]
643
+ })
644
+ ]
645
+ });
731
646
  }
732
- async function handler(req, res, ctx) {
733
- var _this, _prerenderManifest_routes_resolvedPathname, _prerenderInfo_fallbackRootParams, _prerenderInfo_fallbackRouteParams;
734
- if (ctx.requestMeta) {
735
- (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.setRequestMeta)(req, ctx.requestMeta);
736
- }
737
- if (routeModule.isDev) {
738
- (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.addRequestMeta)(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint());
647
+
648
+ // EXTERNAL MODULE: ../../node_modules/use-intl/dist/esm/production/react.js + 18 modules
649
+ var production_react = __webpack_require__(23211);
650
+ ;// __barrel_optimize__?names=COMMON_PANELS!=!../../packages/react-ui/dist/index.mjs
651
+
652
+
653
+ ;// ./src/components/toolbar/ToolbarPanels.tsx
654
+ /* __next_internal_client_entry_do_not_use__ ToolbarPanels auto */
655
+
656
+
657
+
658
+
659
+
660
+
661
+ /**
662
+ * Renders the toolbar panel container with common panels (user, settings)
663
+ * and any context-specific panels passed as children.
664
+ *
665
+ * Settings changes are handled via GlobalSettingsEventBus - no callbacks needed.
666
+ *
667
+ * @example
668
+ * // Simple context (compose, discover, moderate, admin pages)
669
+ * <ToolbarPanels
670
+ * activePanel={activePanel}
671
+ * theme={theme}
672
+ * showLineNumbers={showLineNumbers}
673
+ * />
674
+ *
675
+ * @example
676
+ * // Document context with custom panels
677
+ * <ToolbarPanels
678
+ * activePanel={activePanel}
679
+ * theme={theme}
680
+ * showLineNumbers={showLineNumbers}
681
+ * >
682
+ * {activePanel === 'annotations' && <UnifiedAnnotationsPanel ... />}
683
+ * {activePanel === 'history' && <AnnotationHistory ... />}
684
+ * {activePanel === 'info' && <ResourceInfoPanel ... />}
685
+ * {activePanel === 'collaboration' && <CollaborationPanel ... />}
686
+ * {activePanel === 'jsonld' && <JsonLdPanel ... />}
687
+ * </ToolbarPanels>
688
+ */ function ToolbarPanels({ activePanel, theme, showLineNumbers, hoverDelayMs, children }) {
689
+ const locale = (0,production_react/* useLocale */.Ym)();
690
+ const router = (0,routing/* useRouter */.rd)();
691
+ const pathname = (0,routing/* usePathname */.a8)();
692
+ const [isPending, startTransition] = (0,react.useTransition)();
693
+ // Panel width management with localStorage persistence
694
+ const { width, setWidth, minWidth, maxWidth } = (0,dist.usePanelWidth)();
695
+ // Handle locale change events
696
+ const handleLocaleChanged = (0,react.useCallback)(({ locale: newLocale })=>{
697
+ if (!pathname) return;
698
+ startTransition(()=>{
699
+ // The router from @/i18n/routing is locale-aware and will handle the locale prefix
700
+ router.replace(pathname, {
701
+ locale: newLocale
702
+ });
703
+ });
704
+ }, [
705
+ pathname,
706
+ router,
707
+ startTransition
708
+ ]);
709
+ // Subscribe to locale change events
710
+ (0,dist.useEventSubscriptions)({
711
+ 'settings:locale-changed': handleLocaleChanged
712
+ });
713
+ // Don't render container if no panel is active
714
+ if (!activePanel) {
715
+ return null;
739
716
  }
740
- const isMinimalMode = Boolean((0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'minimalMode'));
741
- let srcPage = "/[locale]/admin/devops/page";
742
- // turbopack doesn't normalize `/index` in the page name
743
- // so we need to to process dynamic routes properly
744
- // TODO: fix turbopack providing differing value from webpack
745
- if (false) {} else if (srcPage === '/index') {
746
- // we always normalize /index specifically
747
- srcPage = '/';
748
- }
749
- const multiZoneDraftMode = false;
750
- const prepareResult = await routeModule.prepare(req, res, {
751
- srcPage,
752
- multiZoneDraftMode
753
- });
754
- if (!prepareResult) {
755
- res.statusCode = 400;
756
- res.end('Bad Request');
757
- ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());
717
+ // In simple context (no children), only user and settings panels are valid.
718
+ // If a resource-specific panel is still active from a previous route, hide the container.
719
+ if (!children && !dist.COMMON_PANELS.includes(activePanel)) {
758
720
  return null;
759
721
  }
760
- const { buildId, query, params, pageIsDynamic, buildManifest, nextFontManifest, reactLoadableManifest, serverActionsManifest, clientReferenceManifest, subresourceIntegrityManifest, prerenderManifest, isDraftMode, resolvedPathname, revalidateOnlyGenerated, routerServerContext, nextConfig, parsedUrl, interceptionRoutePatterns, deploymentId, clientAssetToken } = prepareResult;
761
- const normalizedSrcPage = (0,next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_13__.normalizeAppPath)(srcPage);
762
- let { isOnDemandRevalidate } = prepareResult;
763
- // We use the resolvedPathname instead of the parsedUrl.pathname because it
764
- // is not rewritten as resolvedPathname is. This will ensure that the correct
765
- // prerender info is used instead of using the original pathname as the
766
- // source. If however PPR is enabled and cacheComponents is disabled, we
767
- // treat the pathname as dynamic. Currently, there's a bug in the PPR
768
- // implementation that incorrectly leaves %%drp placeholders in the output of
769
- // parallel routes. This is addressed with cacheComponents.
770
- const prerenderMatch = nextConfig.experimental.ppr && !nextConfig.cacheComponents && (0,next_dist_shared_lib_router_utils_interception_routes__WEBPACK_IMPORTED_MODULE_31__.isInterceptionRouteAppPath)(resolvedPathname) ? null : routeModule.match(resolvedPathname, prerenderManifest);
771
- const prerenderInfo = (prerenderMatch == null ? void 0 : prerenderMatch.route) ?? null;
772
- const isPrerendered = !!prerenderManifest.routes[resolvedPathname];
773
- const userAgent = req.headers['user-agent'] || '';
774
- const botType = (0,next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_16__.getBotType)(userAgent);
775
- const isHtmlBot = (0,next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__.isHtmlBotRequest)(req);
776
- /**
777
- * If true, this indicates that the request being made is for an app
778
- * prefetch request.
779
- */ const isPrefetchRSCRequest = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'isPrefetchRSCRequest') ?? req.headers[next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.NEXT_ROUTER_PREFETCH_HEADER] === '1' // exclude runtime prefetches, which use '2'
780
- ;
781
- // NOTE: Don't delete headers[RSC] yet, it still needs to be used in renderToHTML later
782
- const isRSCRequest = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'isRSCRequest') ?? Boolean(req.headers[next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.RSC_HEADER]);
783
- const isPossibleServerAction = (0,next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_14__.getIsPossibleServerAction)(req);
784
- /**
785
- * If the route being rendered is an app page, and the ppr feature has been
786
- * enabled, then the given route _could_ support PPR.
787
- */ const couldSupportPPR = (0,next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__.checkIsAppPPREnabled)(nextConfig.experimental.ppr);
788
- // Stash postponed state for server actions when in minimal mode.
789
- // We extract it here so the RDC is available for the re-render after the action completes.
790
- const resumeStateLengthHeader = req.headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__.NEXT_RESUME_STATE_LENGTH_HEADER];
791
- if (!(0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'postponed') && isMinimalMode && couldSupportPPR && isPossibleServerAction && resumeStateLengthHeader && typeof resumeStateLengthHeader === 'string') {
792
- const stateLength = parseInt(resumeStateLengthHeader, 10);
793
- const { maxPostponedStateSize, maxPostponedStateSizeBytes } = (0,next_dist_server_lib_postponed_request_body__WEBPACK_IMPORTED_MODULE_26__.getMaxPostponedStateSize)(nextConfig.experimental.maxPostponedStateSize);
794
- if (!isNaN(stateLength) && stateLength > 0) {
795
- var _nextConfig_experimental_serverActions;
796
- if (stateLength > maxPostponedStateSizeBytes) {
797
- res.statusCode = 413;
798
- res.end((0,next_dist_server_lib_postponed_request_body__WEBPACK_IMPORTED_MODULE_26__.getPostponedStateExceededErrorMessage)(maxPostponedStateSize));
799
- ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());
800
- return null;
801
- }
802
- // Calculate max total body size to prevent buffering excessively large
803
- // payloads before the action handler checks. We use stateLength (not
804
- // maxPostponedStateSizeBytes) so the postponed state doesn't eat into
805
- // the action body budget - it's already validated above.
806
- const defaultActionBodySizeLimit = '1 MB';
807
- const actionBodySizeLimit = ((_nextConfig_experimental_serverActions = nextConfig.experimental.serverActions) == null ? void 0 : _nextConfig_experimental_serverActions.bodySizeLimit) ?? defaultActionBodySizeLimit;
808
- const actionBodySizeLimitBytes = actionBodySizeLimit !== defaultActionBodySizeLimit ? (__webpack_require__(32683).parse)(actionBodySizeLimit) : 1024 * 1024 // 1 MB
809
- ;
810
- const maxTotalBodySize = stateLength + actionBodySizeLimitBytes;
811
- const fullBody = await (0,next_dist_server_lib_postponed_request_body__WEBPACK_IMPORTED_MODULE_26__.readBodyWithSizeLimit)(req, maxTotalBodySize);
812
- if (fullBody === null) {
813
- res.statusCode = 413;
814
- res.end(`Request body exceeded limit. ` + `To configure the body size limit for Server Actions, see: https://nextjs.org/docs/app/api-reference/next-config-js/serverActions#bodysizelimit`);
815
- ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());
816
- return null;
817
- }
818
- if (fullBody.length >= stateLength) {
819
- // Extract postponed state from the beginning
820
- const postponedState = fullBody.subarray(0, stateLength).toString('utf8');
821
- (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.addRequestMeta)(req, 'postponed', postponedState);
822
- // Store the remaining action body for the action handler
823
- const actionBody = fullBody.subarray(stateLength);
824
- (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.addRequestMeta)(req, 'actionBody', actionBody);
825
- } else {
826
- throw Object.defineProperty(new Error(`invariant: expected ${stateLength} bytes of postponed state but only received ${fullBody.length} bytes`), "__NEXT_ERROR_CODE", {
827
- value: "E979",
828
- enumerable: false,
829
- configurable: true
830
- });
831
- }
832
- }
833
- }
834
- if (!(0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'postponed') && couldSupportPPR && req.headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__.NEXT_RESUME_HEADER] === '1' && req.method === 'POST') {
835
- const { maxPostponedStateSize, maxPostponedStateSizeBytes } = (0,next_dist_server_lib_postponed_request_body__WEBPACK_IMPORTED_MODULE_26__.getMaxPostponedStateSize)(nextConfig.experimental.maxPostponedStateSize);
836
- // Decode the postponed state from the request body, it will come as
837
- // an array of buffers, so collect them and then concat them to form
838
- // the string.
839
- const body = await (0,next_dist_server_lib_postponed_request_body__WEBPACK_IMPORTED_MODULE_26__.readBodyWithSizeLimit)(req, maxPostponedStateSizeBytes);
840
- if (body === null) {
841
- res.statusCode = 413;
842
- res.end((0,next_dist_server_lib_postponed_request_body__WEBPACK_IMPORTED_MODULE_26__.getPostponedStateExceededErrorMessage)(maxPostponedStateSize));
843
- ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());
844
- return null;
845
- }
846
- const postponed = body.toString('utf8');
847
- (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.addRequestMeta)(req, 'postponed', postponed);
848
- }
849
- // When enabled, this will allow the use of the `?__nextppronly` query to
850
- // enable debugging of the static shell.
851
- const hasDebugStaticShellQuery = false && 0;
852
- // When enabled, this will allow the use of the `?__nextppronly` query
853
- // to enable debugging of the fallback shell.
854
- const hasDebugFallbackShellQuery = hasDebugStaticShellQuery && query.__nextppronly === 'fallback';
855
- // Whether the testing API is exposed (dev mode or explicit flag)
856
- const exposeTestingApi = routeModule.isDev === true || nextConfig.experimental.exposeTestingApiInProductionBuild === true;
857
- // Enable the Instant Navigation Testing API. Renders only the prefetched
858
- // portion of the page, excluding dynamic content. This allows tests to
859
- // assert on the prefetched UI state deterministically.
860
- // - Header: Used for client-side navigations where we can set request headers
861
- // - Cookie: Used for MPA navigations (page reload, full page load) where we
862
- // can't set request headers. Only applies to document requests (no RSC
863
- // header) - RSC requests should proceed normally even during a locked scope,
864
- // with blocking happening on the client side.
865
- const isInstantNavigationTest = exposeTestingApi && (req.headers[next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.NEXT_INSTANT_PREFETCH_HEADER] === '1' || req.headers[next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.RSC_HEADER] === undefined && typeof req.headers.cookie === 'string' && req.headers.cookie.includes(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.NEXT_INSTANT_TEST_COOKIE + '='));
866
- // This page supports PPR if it is marked as being `PARTIALLY_STATIC` in the
867
- // prerender manifest and this is an app page.
868
- const isRoutePPREnabled = // When the instant navigation testing API is active, enable the PPR
869
- // prerender path even without Cache Components. In dev mode without CC,
870
- // static pages need this path to produce buffered segment data (the
871
- // legacy prerender path hangs in dev mode).
872
- (couldSupportPPR || isInstantNavigationTest) && (((_this = prerenderManifest.routes[normalizedSrcPage] ?? prerenderManifest.dynamicRoutes[normalizedSrcPage]) == null ? void 0 : _this.renderingMode) === 'PARTIALLY_STATIC' || // Ideally we'd want to check the appConfig to see if this page has PPR
873
- // enabled or not, but that would require plumbing the appConfig through
874
- // to the server during development. We assume that the page supports it
875
- // but only during development or when the testing API is exposed.
876
- (hasDebugStaticShellQuery || isInstantNavigationTest) && (exposeTestingApi || (routerServerContext == null ? void 0 : routerServerContext.experimentalTestProxy) === true));
877
- const isDebugStaticShell = (hasDebugStaticShellQuery || isInstantNavigationTest) && isRoutePPREnabled;
878
- // We should enable debugging dynamic accesses when the static shell
879
- // debugging has been enabled and we're also in development mode.
880
- const isDebugDynamicAccesses = isDebugStaticShell && routeModule.isDev === true;
881
- const isDebugFallbackShell = hasDebugFallbackShellQuery && isRoutePPREnabled;
882
- // If we're in minimal mode, then try to get the postponed information from
883
- // the request metadata. If available, use it for resuming the postponed
884
- // render.
885
- const minimalPostponed = isRoutePPREnabled ? (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'postponed') : undefined;
886
- // If PPR is enabled, and this is a RSC request (but not a prefetch), then
887
- // we can use this fact to only generate the flight data for the request
888
- // because we can't cache the HTML (as it's also dynamic).
889
- const staticPrefetchDataRoute = (_prerenderManifest_routes_resolvedPathname = prerenderManifest.routes[resolvedPathname]) == null ? void 0 : _prerenderManifest_routes_resolvedPathname.prefetchDataRoute;
890
- let isDynamicRSCRequest = isRoutePPREnabled && isRSCRequest && !isPrefetchRSCRequest && // If generated at build time, treat the RSC request as static
891
- // so we can serve the prebuilt .rsc without a dynamic render.
892
- // Only do this for routes that have a concrete prefetchDataRoute.
893
- !staticPrefetchDataRoute;
894
- // During a PPR revalidation, the RSC request is not dynamic if we do not have the postponed data.
895
- // We only attach the postponed data during a resume. If there's no postponed data, then it must be a revalidation.
896
- // This is to ensure that we don't bypass the cache during a revalidation.
897
- if (isMinimalMode) {
898
- isDynamicRSCRequest = isDynamicRSCRequest && !!minimalPostponed;
899
- }
900
- // Need to read this before it's stripped by stripFlightHeaders. We don't
901
- // need to transfer it to the request meta because it's only read
902
- // within this function; the static segment data should have already been
903
- // generated, so we will always either return a static response or a 404.
904
- const segmentPrefetchHeader = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'segmentPrefetchRSCRequest');
905
- // TODO: investigate existing bug with shouldServeStreamingMetadata always
906
- // being true for a revalidate due to modifying the base-server this.renderOpts
907
- // when fixing this to correct logic it causes hydration issue since we set
908
- // serveStreamingMetadata to true during export
909
- const serveStreamingMetadata = botType && isRoutePPREnabled ? false : !userAgent ? true : (0,next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__.shouldServeStreamingMetadata)(userAgent, nextConfig.htmlLimitedBots);
910
- const isSSG = Boolean((prerenderInfo || isPrerendered || prerenderManifest.routes[normalizedSrcPage]) && // If this is a bot request and PPR is enabled, then we don't want
911
- // to serve a static response. This applies to both DOM bots (like Googlebot)
912
- // and HTML-limited bots.
913
- !(botType && isRoutePPREnabled));
914
- // When a page supports cacheComponents, we can support RDC for Navigations
915
- const supportsRDCForNavigations = isRoutePPREnabled && nextConfig.cacheComponents === true;
916
- // In development, we always want to generate dynamic HTML.
917
- const supportsDynamicResponse = // If we're in development, we always support dynamic HTML, unless it's
918
- // a data request, in which case we only produce static HTML.
919
- routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports
920
- // dynamic HTML.
921
- !isSSG || // If this request has provided postponed data, it supports dynamic
922
- // HTML.
923
- typeof minimalPostponed === 'string' || // If this handler supports onCacheEntryV2, then we can only support
924
- // dynamic responses if it's a dynamic RSC request and not in minimal mode. If it
925
- // doesn't support it we must fallback to the default behavior.
926
- (supportsRDCForNavigations && (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'onCacheEntryV2') ? // which will generate the RDC for the route. When resuming a Dynamic
927
- // RSC request, we'll pass the minimal postponed data to the render
928
- // which will trigger the `supportsDynamicResponse` to be true.
929
- isDynamicRSCRequest && !isMinimalMode : isDynamicRSCRequest);
930
- // When bots request PPR page, perform the full dynamic rendering.
931
- // This applies to both DOM bots (like Googlebot) and HTML-limited bots.
932
- const shouldWaitOnAllReady = Boolean(botType) && isRoutePPREnabled;
933
- const remainingPrerenderableParams = (prerenderInfo == null ? void 0 : prerenderInfo.remainingPrerenderableParams) ?? [];
934
- const hasUnresolvedRootFallbackParams = (prerenderInfo == null ? void 0 : prerenderInfo.fallback) === null && (((_prerenderInfo_fallbackRootParams = prerenderInfo.fallbackRootParams) == null ? void 0 : _prerenderInfo_fallbackRootParams.length) ?? 0) > 0;
935
- let ssgCacheKey = null;
936
- if (!isDraftMode && isSSG && !supportsDynamicResponse && !isPossibleServerAction && !minimalPostponed && !isDynamicRSCRequest) {
937
- // For normal SSG routes we cache by the fully resolved pathname. For
938
- // partial fallbacks we instead derive the cache key from the shell
939
- // that matched this request so `/prefix/[one]/[two]` can specialize into
940
- // `/prefix/c/[two]` without promoting all the way to `/prefix/c/foo`.
941
- const fallbackPathname = prerenderMatch ? typeof (prerenderInfo == null ? void 0 : prerenderInfo.fallback) === 'string' ? prerenderInfo.fallback : prerenderMatch.source : null;
942
- if (nextConfig.experimental.partialFallbacks === true && fallbackPathname && (prerenderInfo == null ? void 0 : prerenderInfo.fallbackRouteParams) && !hasUnresolvedRootFallbackParams) {
943
- if (remainingPrerenderableParams.length > 0) {
944
- const completedShellCacheKey = buildCompletedShellCacheKey(fallbackPathname, remainingPrerenderableParams, params);
945
- // If applying the current request params doesn't make the shell any
946
- // more complete, then this shell is already at its most complete
947
- // form and should remain shared rather than creating a new cache entry.
948
- ssgCacheKey = completedShellCacheKey !== fallbackPathname ? completedShellCacheKey : null;
949
- }
950
- } else {
951
- ssgCacheKey = resolvedPathname;
952
- }
953
- }
954
- // the staticPathKey differs from ssgCacheKey since
955
- // ssgCacheKey is null in dev since we're always in "dynamic"
956
- // mode in dev to bypass the cache. It can also be null for partial
957
- // fallback shells that should remain shared and must not create a
958
- // param-specific ISR entry, but we still need to honor fallback handling.
959
- let staticPathKey = ssgCacheKey;
960
- if (!staticPathKey && (routeModule.isDev || isSSG && pageIsDynamic && (prerenderInfo == null ? void 0 : prerenderInfo.fallbackRouteParams))) {
961
- staticPathKey = resolvedPathname;
962
- }
963
- // If this is a request for an app path that should be statically generated
964
- // and we aren't in the edge runtime, strip the flight headers so it will
965
- // generate the static response.
966
- if (!routeModule.isDev && !isDraftMode && isSSG && isRSCRequest && !isDynamicRSCRequest) {
967
- (0,next_dist_server_app_render_strip_flight_headers__WEBPACK_IMPORTED_MODULE_7__/* .stripFlightHeaders */ .d)(req.headers);
968
- }
969
- const ComponentMod = {
970
- ...next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_27__,
971
- tree,
972
- handler,
973
- routeModule,
974
- __next_app__
975
- };
976
- // Before rendering (which initializes component tree modules), we have to
977
- // set the reference manifests to our global store so Server Action's
978
- // encryption util can access to them at the top level of the page module.
979
- if (serverActionsManifest && clientReferenceManifest) {
980
- (0,next_dist_server_app_render_manifests_singleton__WEBPACK_IMPORTED_MODULE_11__.setManifestsSingleton)({
981
- page: srcPage,
982
- clientReferenceManifest,
983
- serverActionsManifest
984
- });
985
- }
986
- const method = req.method || 'GET';
987
- const tracer = (0,next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__.getTracer)();
988
- const activeSpan = tracer.getActiveScopeSpan();
989
- const isWrappedByNextServer = Boolean(routerServerContext == null ? void 0 : routerServerContext.isWrappedByNextServer);
990
- const remainingFallbackRouteParams = nextConfig.experimental.partialFallbacks === true && remainingPrerenderableParams.length > 0 ? (prerenderInfo == null ? void 0 : (_prerenderInfo_fallbackRouteParams = prerenderInfo.fallbackRouteParams) == null ? void 0 : _prerenderInfo_fallbackRouteParams.filter((param)=>!remainingPrerenderableParams.some((prerenderableParam)=>prerenderableParam.paramName === param.paramName))) ?? [] : [];
991
- const render404 = async ()=>{
992
- // TODO: should route-module itself handle rendering the 404
993
- if (routerServerContext == null ? void 0 : routerServerContext.render404) {
994
- await routerServerContext.render404(req, res, parsedUrl, false);
995
- } else {
996
- res.end('This page could not be found');
722
+ return /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
723
+ className: "semiont-toolbar-panels",
724
+ style: {
725
+ width: `${width}px`,
726
+ position: 'relative'
727
+ },
728
+ children: [
729
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)(dist.ResizeHandle, {
730
+ onResize: setWidth,
731
+ minWidth: minWidth,
732
+ maxWidth: maxWidth,
733
+ position: "left",
734
+ ariaLabel: "Resize right panel"
735
+ }),
736
+ /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
737
+ className: "semiont-toolbar-panels__content",
738
+ children: [
739
+ children,
740
+ activePanel === 'user' && /*#__PURE__*/ (0,react_jsx_runtime.jsx)(UserPanel, {}),
741
+ activePanel === 'settings' && /*#__PURE__*/ (0,react_jsx_runtime.jsx)(dist.SettingsPanel, {
742
+ showLineNumbers: showLineNumbers,
743
+ theme: theme,
744
+ hoverDelayMs: hoverDelayMs,
745
+ locale: locale,
746
+ isPendingLocaleChange: isPending
747
+ })
748
+ ]
749
+ })
750
+ ]
751
+ });
752
+ }
753
+
754
+
755
+ /***/ }),
756
+
757
+ /***/ 77068:
758
+ /***/ ((module) => {
759
+
760
+ "use strict";
761
+ module.exports = require("next/dist/shared/lib/size-limit");
762
+
763
+ /***/ }),
764
+
765
+ /***/ 79551:
766
+ /***/ ((module) => {
767
+
768
+ "use strict";
769
+ module.exports = require("url");
770
+
771
+ /***/ }),
772
+
773
+ /***/ 79591:
774
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
775
+
776
+ "use strict";
777
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
778
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
779
+ /* harmony export */ });
780
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(71277);
781
+
782
+ function CommandLineIcon({ title, titleId, ...props }, svgRef) {
783
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement("svg", Object.assign({
784
+ xmlns: "http://www.w3.org/2000/svg",
785
+ fill: "none",
786
+ viewBox: "0 0 24 24",
787
+ strokeWidth: 1.5,
788
+ stroke: "currentColor",
789
+ "aria-hidden": "true",
790
+ "data-slot": "icon",
791
+ ref: svgRef,
792
+ "aria-labelledby": titleId
793
+ }, props), title ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement("title", {
794
+ id: titleId
795
+ }, title) : null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", {
796
+ strokeLinecap: "round",
797
+ strokeLinejoin: "round",
798
+ d: "m6.75 7.5 3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 18V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v12a2.25 2.25 0 0 0 2.25 2.25Z"
799
+ }));
800
+ }
801
+ const ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(CommandLineIcon);
802
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);
803
+
804
+
805
+ /***/ }),
806
+
807
+ /***/ 86439:
808
+ /***/ ((module) => {
809
+
810
+ "use strict";
811
+ module.exports = require("next/dist/shared/lib/no-fallback-error.external");
812
+
813
+ /***/ }),
814
+
815
+ /***/ 87046:
816
+ /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
817
+
818
+ Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 20706));
819
+
820
+
821
+ /***/ }),
822
+
823
+ /***/ 94996:
824
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
825
+
826
+ "use strict";
827
+ // ESM COMPAT FLAG
828
+ __webpack_require__.r(__webpack_exports__);
829
+
830
+ // EXPORTS
831
+ __webpack_require__.d(__webpack_exports__, {
832
+ "default": () => (/* binding */ DevOpsPage)
833
+ });
834
+
835
+ // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js
836
+ var react_jsx_runtime = __webpack_require__(92692);
837
+ // EXTERNAL MODULE: ../../node_modules/next-intl/dist/esm/production/react-client/index.js
838
+ var react_client = __webpack_require__(56305);
839
+ // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js
840
+ var react = __webpack_require__(71277);
841
+ ;// ../../node_modules/@heroicons/react/24/outline/esm/ChartBarIcon.js
842
+
843
+ function ChartBarIcon({ title, titleId, ...props }, svgRef) {
844
+ return /*#__PURE__*/ react.createElement("svg", Object.assign({
845
+ xmlns: "http://www.w3.org/2000/svg",
846
+ fill: "none",
847
+ viewBox: "0 0 24 24",
848
+ strokeWidth: 1.5,
849
+ stroke: "currentColor",
850
+ "aria-hidden": "true",
851
+ "data-slot": "icon",
852
+ ref: svgRef,
853
+ "aria-labelledby": titleId
854
+ }, props), title ? /*#__PURE__*/ react.createElement("title", {
855
+ id: titleId
856
+ }, title) : null, /*#__PURE__*/ react.createElement("path", {
857
+ strokeLinecap: "round",
858
+ strokeLinejoin: "round",
859
+ d: "M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"
860
+ }));
861
+ }
862
+ const ForwardRef = /*#__PURE__*/ react.forwardRef(ChartBarIcon);
863
+ /* harmony default export */ const esm_ChartBarIcon = (ForwardRef);
864
+
865
+ ;// ../../node_modules/@heroicons/react/24/outline/esm/ServerIcon.js
866
+
867
+ function ServerIcon({ title, titleId, ...props }, svgRef) {
868
+ return /*#__PURE__*/ react.createElement("svg", Object.assign({
869
+ xmlns: "http://www.w3.org/2000/svg",
870
+ fill: "none",
871
+ viewBox: "0 0 24 24",
872
+ strokeWidth: 1.5,
873
+ stroke: "currentColor",
874
+ "aria-hidden": "true",
875
+ "data-slot": "icon",
876
+ ref: svgRef,
877
+ "aria-labelledby": titleId
878
+ }, props), title ? /*#__PURE__*/ react.createElement("title", {
879
+ id: titleId
880
+ }, title) : null, /*#__PURE__*/ react.createElement("path", {
881
+ strokeLinecap: "round",
882
+ strokeLinejoin: "round",
883
+ d: "M21.75 17.25v-.228a4.5 4.5 0 0 0-.12-1.03l-2.268-9.64a3.375 3.375 0 0 0-3.285-2.602H7.923a3.375 3.375 0 0 0-3.285 2.602l-2.268 9.64a4.5 4.5 0 0 0-.12 1.03v.228m19.5 0a3 3 0 0 1-3 3H5.25a3 3 0 0 1-3-3m19.5 0a3 3 0 0 0-3-3H5.25a3 3 0 0 0-3 3m16.5 0h.008v.008h-.008v-.008Zm-3 0h.008v.008h-.008v-.008Z"
884
+ }));
885
+ }
886
+ const ServerIcon_ForwardRef = /*#__PURE__*/ react.forwardRef(ServerIcon);
887
+ /* harmony default export */ const esm_ServerIcon = (ServerIcon_ForwardRef);
888
+
889
+ // EXTERNAL MODULE: ../../node_modules/@heroicons/react/24/outline/esm/CommandLineIcon.js
890
+ var CommandLineIcon = __webpack_require__(79591);
891
+ // EXTERNAL MODULE: ../../packages/react-ui/dist/index.mjs + 26 modules
892
+ var dist = __webpack_require__(41513);
893
+ ;// __barrel_optimize__?names=StatusDisplay,Toolbar!=!../../packages/react-ui/dist/index.mjs
894
+
895
+
896
+ // EXTERNAL MODULE: ./src/components/toolbar/ToolbarPanels.tsx + 4 modules
897
+ var ToolbarPanels = __webpack_require__(76238);
898
+ // EXTERNAL MODULE: __barrel_optimize__?names=useEventSubscriptions,useLineNumbers,usePanelBrowse,useTheme!=!../../packages/react-ui/dist/index.mjs
899
+ var react_ui_dist = __webpack_require__(56677);
900
+ ;// __barrel_optimize__?names=AdminDevOpsPage!=!../../packages/react-ui/dist/index.mjs
901
+
902
+
903
+ // EXTERNAL MODULE: ./src/hooks/useAuth.ts
904
+ var useAuth = __webpack_require__(65159);
905
+ ;// ./src/app/[locale]/admin/devops/page.tsx
906
+ /* __next_internal_client_entry_do_not_use__ default auto */
907
+ /**
908
+ * DevOps Page - Thin Next.js wrapper
909
+ *
910
+ * This page handles Next.js-specific concerns (translations, hooks)
911
+ * and delegates rendering to the pure React AdminDevOpsPage component.
912
+ */
913
+
914
+
915
+
916
+
917
+
918
+
919
+
920
+ // Wrapper component that provides auth props to StatusDisplay
921
+ function StatusDisplayWithAuth() {
922
+ const { isFullyAuthenticated, isAuthenticated, hasValidBackendToken } = (0,useAuth/* useAuth */.As)();
923
+ return /*#__PURE__*/ (0,react_jsx_runtime.jsx)(dist.StatusDisplay, {
924
+ isFullyAuthenticated: isFullyAuthenticated,
925
+ isAuthenticated: isAuthenticated,
926
+ hasValidBackendToken: hasValidBackendToken
927
+ });
928
+ }
929
+ function DevOpsPage() {
930
+ const t = (0,react_client/* useTranslations */.c)('AdminDevOps');
931
+ // Toolbar and settings state
932
+ const { activePanel } = (0,react_ui_dist/* usePanelBrowse */.ySJ)();
933
+ const { theme, setTheme } = (0,react_ui_dist/* useTheme */.DPo)();
934
+ const { showLineNumbers, toggleLineNumbers } = (0,react_ui_dist/* useLineNumbers */.cvF)();
935
+ // Handle theme change events
936
+ const handleThemeChanged = (0,react.useCallback)(({ theme })=>{
937
+ setTheme(theme);
938
+ }, [
939
+ setTheme
940
+ ]);
941
+ // Handle line numbers toggle events
942
+ const handleLineNumbersToggled = (0,react.useCallback)(()=>{
943
+ toggleLineNumbers();
944
+ }, [
945
+ toggleLineNumbers
946
+ ]);
947
+ (0,react_ui_dist/* useEventSubscriptions */.C$z)({
948
+ 'settings:theme-changed': handleThemeChanged,
949
+ 'settings:line-numbers-toggled': handleLineNumbersToggled
950
+ });
951
+ const suggestedFeatures = [
952
+ {
953
+ title: t('systemMonitoring'),
954
+ description: t('systemMonitoringDescription'),
955
+ icon: esm_ChartBarIcon,
956
+ available: t('systemMonitoringCLI')
957
+ },
958
+ {
959
+ title: t('serviceManagement'),
960
+ description: t('serviceManagementDescription'),
961
+ icon: esm_ServerIcon,
962
+ available: t('serviceManagementCLI')
963
+ },
964
+ {
965
+ title: t('deploymentControl'),
966
+ description: t('deploymentControlDescription'),
967
+ icon: CommandLineIcon/* default */.A,
968
+ available: t('deploymentControlCLI')
997
969
  }
998
- return null;
999
- };
1000
- try {
1001
- const varyHeader = routeModule.getVaryHeader(resolvedPathname, interceptionRoutePatterns);
1002
- res.setHeader('Vary', varyHeader);
1003
- let parentSpan;
1004
- const invokeRouteModule = async (span, context)=>{
1005
- const nextReq = new next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__.NodeNextRequest(req);
1006
- const nextRes = new next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__.NodeNextResponse(res);
1007
- return routeModule.render(nextReq, nextRes, context).finally(()=>{
1008
- if (!span) return;
1009
- span.setAttributes({
1010
- 'http.status_code': res.statusCode,
1011
- 'next.rsc': false
1012
- });
1013
- const rootSpanAttributes = tracer.getRootSpanAttributes();
1014
- // We were unable to get attributes, probably OTEL is not enabled
1015
- if (!rootSpanAttributes) {
1016
- return;
1017
- }
1018
- if (rootSpanAttributes.get('next.span_type') !== next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__.BaseServerSpan.handleRequest) {
1019
- console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`);
1020
- return;
1021
- }
1022
- const route = rootSpanAttributes.get('next.route');
1023
- if (route) {
1024
- const name = `${method} ${route}`;
1025
- span.setAttributes({
1026
- 'next.route': route,
1027
- 'http.route': route,
1028
- 'next.span_name': name
1029
- });
1030
- span.updateName(name);
1031
- // Propagate http.route to the parent span if one exists (e.g.
1032
- // a platform-created HTTP span in adapter deployments).
1033
- if (parentSpan && parentSpan !== span) {
1034
- parentSpan.setAttribute('http.route', route);
1035
- parentSpan.updateName(name);
1036
- }
1037
- } else {
1038
- span.updateName(`${method} ${srcPage}`);
1039
- }
1040
- });
1041
- };
1042
- const incrementalCache = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'incrementalCache') || await routeModule.getIncrementalCache(req, nextConfig, prerenderManifest, isMinimalMode);
1043
- incrementalCache == null ? void 0 : incrementalCache.resetRequestCache();
1044
- globalThis.__incrementalCache = incrementalCache;
1045
- const doRender = async ({ span, postponed, fallbackRouteParams, forceStaticRender })=>{
1046
- const context = {
1047
- query,
1048
- params,
1049
- page: normalizedSrcPage,
1050
- sharedContext: {
1051
- buildId,
1052
- deploymentId,
1053
- clientAssetToken
1054
- },
1055
- serverComponentsHmrCache: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'serverComponentsHmrCache'),
1056
- fallbackRouteParams,
1057
- renderOpts: {
1058
- App: ()=>null,
1059
- Document: ()=>null,
1060
- pageConfig: {},
1061
- ComponentMod,
1062
- Component: (0,next_dist_server_app_render_interop_default__WEBPACK_IMPORTED_MODULE_6__/* .interopDefault */ .T)(ComponentMod),
1063
- params,
1064
- routeModule,
1065
- page: srcPage,
1066
- postponed,
1067
- shouldWaitOnAllReady,
1068
- serveStreamingMetadata,
1069
- supportsDynamicResponse: typeof postponed === 'string' || supportsDynamicResponse,
1070
- buildManifest,
1071
- nextFontManifest,
1072
- reactLoadableManifest,
1073
- subresourceIntegrityManifest,
1074
- setCacheStatus: routerServerContext == null ? void 0 : routerServerContext.setCacheStatus,
1075
- setIsrStatus: routerServerContext == null ? void 0 : routerServerContext.setIsrStatus,
1076
- setReactDebugChannel: routerServerContext == null ? void 0 : routerServerContext.setReactDebugChannel,
1077
- sendErrorsToBrowser: routerServerContext == null ? void 0 : routerServerContext.sendErrorsToBrowser,
1078
- dir: true ? (__webpack_require__(33873).join)(/* turbopackIgnore: true */ process.cwd(), routeModule.relativeProjectDir) : 0,
1079
- isDraftMode,
1080
- botType,
1081
- isOnDemandRevalidate,
1082
- isPossibleServerAction,
1083
- assetPrefix: nextConfig.assetPrefix,
1084
- nextConfigOutput: nextConfig.output,
1085
- crossOrigin: nextConfig.crossOrigin,
1086
- trailingSlash: nextConfig.trailingSlash,
1087
- images: nextConfig.images,
1088
- previewProps: prerenderManifest.preview,
1089
- enableTainting: nextConfig.experimental.taint,
1090
- htmlLimitedBots: nextConfig.htmlLimitedBots,
1091
- reactMaxHeadersLength: nextConfig.reactMaxHeadersLength,
1092
- multiZoneDraftMode,
1093
- incrementalCache,
1094
- cacheLifeProfiles: nextConfig.cacheLife,
1095
- basePath: nextConfig.basePath,
1096
- serverActions: nextConfig.experimental.serverActions,
1097
- logServerFunctions: typeof nextConfig.logging === 'object' && Boolean(nextConfig.logging.serverFunctions),
1098
- ...isDebugStaticShell || isDebugDynamicAccesses || isDebugFallbackShell ? {
1099
- isBuildTimePrerendering: true,
1100
- supportsDynamicResponse: false,
1101
- isStaticGeneration: true,
1102
- isDebugDynamicAccesses: isDebugDynamicAccesses
1103
- } : {},
1104
- cacheComponents: Boolean(nextConfig.cacheComponents),
1105
- experimental: {
1106
- isRoutePPREnabled,
1107
- expireTime: nextConfig.expireTime,
1108
- staleTimes: nextConfig.experimental.staleTimes,
1109
- dynamicOnHover: Boolean(nextConfig.experimental.dynamicOnHover),
1110
- optimisticRouting: Boolean(nextConfig.experimental.optimisticRouting),
1111
- inlineCss: Boolean(nextConfig.experimental.inlineCss),
1112
- prefetchInlining: nextConfig.experimental.prefetchInlining ?? false,
1113
- authInterrupts: Boolean(nextConfig.experimental.authInterrupts),
1114
- cachedNavigations: Boolean(nextConfig.experimental.cachedNavigations),
1115
- clientTraceMetadata: nextConfig.experimental.clientTraceMetadata || [],
1116
- clientParamParsingOrigins: nextConfig.experimental.clientParamParsingOrigins,
1117
- maxPostponedStateSizeBytes: (0,next_dist_shared_lib_size_limit__WEBPACK_IMPORTED_MODULE_25__.parseMaxPostponedStateSize)(nextConfig.experimental.maxPostponedStateSize)
1118
- },
1119
- waitUntil: ctx.waitUntil,
1120
- onClose: (cb)=>{
1121
- res.on('close', cb);
1122
- },
1123
- onAfterTaskError: ()=>{},
1124
- onInstrumentationRequestError: (error, _request, errorContext, silenceLog)=>routeModule.onRequestError(req, error, errorContext, silenceLog, routerServerContext),
1125
- err: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'invokeError')
1126
- }
1127
- };
1128
- // When we're revalidating in the background, we should not allow dynamic
1129
- // responses.
1130
- if (forceStaticRender) {
1131
- context.renderOpts.supportsDynamicResponse = false;
1132
- }
1133
- const result = await invokeRouteModule(span, context);
1134
- const { metadata } = result;
1135
- const { cacheControl, headers = {}, // Add any fetch tags that were on the page to the response headers.
1136
- fetchTags: cacheTags, fetchMetrics } = metadata;
1137
- if (cacheTags) {
1138
- headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__.NEXT_CACHE_TAGS_HEADER] = cacheTags;
1139
- }
1140
- // Pull any fetch metrics from the render onto the request.
1141
- ;
1142
- req.fetchMetrics = fetchMetrics;
1143
- // we don't throw static to dynamic errors in dev as isSSG
1144
- // is a best guess in dev since we don't have the prerender pass
1145
- // to know whether the path is actually static or not
1146
- if (isSSG && (cacheControl == null ? void 0 : cacheControl.revalidate) === 0 && !routeModule.isDev && !isRoutePPREnabled) {
1147
- const staticBailoutInfo = metadata.staticBailoutInfo;
1148
- const err = Object.defineProperty(new Error(`Page changed from static to dynamic at runtime ${resolvedPathname}${(staticBailoutInfo == null ? void 0 : staticBailoutInfo.description) ? `, reason: ${staticBailoutInfo.description}` : ``}` + `\nsee more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`), "__NEXT_ERROR_CODE", {
1149
- value: "E132",
1150
- enumerable: false,
1151
- configurable: true
1152
- });
1153
- if (staticBailoutInfo == null ? void 0 : staticBailoutInfo.stack) {
1154
- const stack = staticBailoutInfo.stack;
1155
- err.stack = err.message + stack.substring(stack.indexOf('\n'));
1156
- }
1157
- throw err;
1158
- }
1159
- return {
1160
- value: {
1161
- kind: next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_17__.CachedRouteKind.APP_PAGE,
1162
- html: result,
1163
- headers,
1164
- rscData: metadata.flightData,
1165
- postponed: metadata.postponed,
1166
- status: metadata.statusCode,
1167
- segmentData: metadata.segmentData
1168
- },
1169
- cacheControl
1170
- };
1171
- };
1172
- const responseGenerator = async ({ hasResolved, previousCacheEntry: previousIncrementalCacheEntry, isRevalidating, span, forceStaticRender = false })=>{
1173
- const isProduction = routeModule.isDev === false;
1174
- const didRespond = hasResolved || res.writableEnded;
1175
- // skip on-demand revalidate if cache is not present and
1176
- // revalidate-if-generated is set
1177
- if (isOnDemandRevalidate && revalidateOnlyGenerated && !previousIncrementalCacheEntry && !isMinimalMode) {
1178
- if (routerServerContext == null ? void 0 : routerServerContext.render404) {
1179
- await routerServerContext.render404(req, res);
1180
- } else {
1181
- res.statusCode = 404;
1182
- res.end('This page could not be found');
1183
- }
1184
- return null;
1185
- }
1186
- let fallbackMode;
1187
- if (prerenderInfo) {
1188
- fallbackMode = (0,next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18__.parseFallbackField)(prerenderInfo.fallback);
1189
- }
1190
- if (nextConfig.experimental.partialFallbacks === true && (prerenderInfo == null ? void 0 : prerenderInfo.fallback) === null && !hasUnresolvedRootFallbackParams && remainingPrerenderableParams.length > 0) {
1191
- // Generic source shells without unresolved root params don't have a
1192
- // concrete fallback file of their own, so they're marked as blocking.
1193
- // When we can complete the shell into a more specific
1194
- // prerendered shell for this request, treat it like a prerender
1195
- // fallback so we can serve that shell instead of blocking on the full
1196
- // route. Root-param shells stay blocking, since unknown root branches
1197
- // should not inherit a shell from another generated branch.
1198
- fallbackMode = next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18__.FallbackMode.PRERENDER;
1199
- }
1200
- // When serving a HTML bot request, we want to serve a blocking render and
1201
- // not the prerendered page. This ensures that the correct content is served
1202
- // to the bot in the head.
1203
- if (fallbackMode === next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18__.FallbackMode.PRERENDER && (0,next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_16__.isBot)(userAgent)) {
1204
- if (!isRoutePPREnabled || isHtmlBot) {
1205
- fallbackMode = next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18__.FallbackMode.BLOCKING_STATIC_RENDER;
1206
- }
1207
- }
1208
- if ((previousIncrementalCacheEntry == null ? void 0 : previousIncrementalCacheEntry.isStale) === -1) {
1209
- isOnDemandRevalidate = true;
1210
- }
1211
- // TODO: adapt for PPR
1212
- // only allow on-demand revalidate for fallback: true/blocking
1213
- // or for prerendered fallback: false paths
1214
- if (isOnDemandRevalidate && (fallbackMode !== next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18__.FallbackMode.NOT_FOUND || previousIncrementalCacheEntry)) {
1215
- fallbackMode = next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18__.FallbackMode.BLOCKING_STATIC_RENDER;
1216
- }
1217
- if (!isMinimalMode && fallbackMode !== next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18__.FallbackMode.BLOCKING_STATIC_RENDER && staticPathKey && !didRespond && !isDraftMode && pageIsDynamic && (isProduction || !isPrerendered)) {
1218
- // if the page has dynamicParams: false and this pathname wasn't
1219
- // prerendered trigger the no fallback handling
1220
- if (// In development, fall through to render to handle missing
1221
- // getStaticPaths.
1222
- (isProduction || prerenderInfo) && // When fallback isn't present, abort this render so we 404
1223
- fallbackMode === next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18__.FallbackMode.NOT_FOUND) {
1224
- if (nextConfig.adapterPath) {
1225
- return await render404();
1226
- }
1227
- throw new next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__.NoFallbackError();
1228
- }
1229
- // When cacheComponents is enabled, we can use the fallback
1230
- // response if the request is not a dynamic RSC request because the
1231
- // RSC data when this feature flag is enabled does not contain any
1232
- // param references. Without this feature flag enabled, the RSC data
1233
- // contains param references, and therefore we can't use the fallback.
1234
- if (isRoutePPREnabled && (nextConfig.cacheComponents ? !isDynamicRSCRequest : !isRSCRequest)) {
1235
- const cacheKey = isProduction && typeof (prerenderInfo == null ? void 0 : prerenderInfo.fallback) === 'string' ? prerenderInfo.fallback : normalizedSrcPage;
1236
- const fallbackRouteParams = // In production or when debugging the static shell (e.g. instant
1237
- // navigation testing), use the prerender manifest's fallback
1238
- // route params which correctly identifies which params are
1239
- // unknown. Note: in dev, this block is only entered for
1240
- // non-prerendered URLs (guarded by the outer condition).
1241
- (isProduction || isDebugStaticShell) && (prerenderInfo == null ? void 0 : prerenderInfo.fallbackRouteParams) ? (0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__.createOpaqueFallbackRouteParams)(prerenderInfo.fallbackRouteParams) : // fallback (simulating the worst-case shell).
1242
- isDebugFallbackShell ? (0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__.getFallbackRouteParams)(normalizedSrcPage, routeModule) : null;
1243
- // When rendering a debug static shell, override the fallback
1244
- // params on the request so that the staged rendering correctly
1245
- // defers params that are not statically known.
1246
- if (isDebugStaticShell && fallbackRouteParams) {
1247
- (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.addRequestMeta)(req, 'fallbackParams', fallbackRouteParams);
1248
- }
1249
- // We use the response cache here to handle the revalidation and
1250
- // management of the fallback shell.
1251
- const fallbackResponse = await routeModule.handleResponse({
1252
- cacheKey,
1253
- req,
1254
- nextConfig,
1255
- routeKind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE,
1256
- isFallback: true,
1257
- prerenderManifest,
1258
- isRoutePPREnabled,
1259
- responseGenerator: async ()=>doRender({
1260
- span,
1261
- // We pass `undefined` as rendering a fallback isn't resumed
1262
- // here.
1263
- postponed: undefined,
1264
- // Always serve the shell that matched this request
1265
- // immediately. If there are still prerenderable params left,
1266
- // the background path below will complete the shell into a
1267
- // more specific cache entry for later requests.
1268
- fallbackRouteParams,
1269
- forceStaticRender: true
1270
- }),
1271
- waitUntil: ctx.waitUntil,
1272
- isMinimalMode
1273
- });
1274
- // If the fallback response was set to null, then we should return null.
1275
- if (fallbackResponse === null) return null;
1276
- // Otherwise, if we did get a fallback response, we should return it.
1277
- if (fallbackResponse) {
1278
- if (!isMinimalMode && isRoutePPREnabled && // Match the build-time contract: only fallback shells that can
1279
- // still be completed with prerenderable params should upgrade.
1280
- remainingPrerenderableParams.length > 0 && nextConfig.experimental.partialFallbacks === true && ssgCacheKey && incrementalCache && !isOnDemandRevalidate && !isDebugFallbackShell && // The testing API relies on deterministic shell behavior, so
1281
- // don't upgrade fallback shells in the background when it's
1282
- // exposed.
1283
- !exposeTestingApi && // Instant Navigation Testing API requests intentionally keep
1284
- // the route in shell mode; don't upgrade these in background.
1285
- !isInstantNavigationTest && // Avoid background revalidate during prefetches; this can trigger
1286
- // static prerender errors that surface as 500s for the prefetch
1287
- // request itself.
1288
- !isPrefetchRSCRequest) {
1289
- (0,next_dist_lib_scheduler__WEBPACK_IMPORTED_MODULE_30__.scheduleOnNextTick)(async ()=>{
1290
- const responseCache = routeModule.getResponseCache(req);
1291
- try {
1292
- // Only the params that were just specialized should be
1293
- // removed from the fallback render. Any remaining fallback
1294
- // params stay deferred so the revalidated result is a more
1295
- // specific shell (e.g. `/prefix/c/[two]`), not a fully
1296
- // concrete route (`/prefix/c/foo`).
1297
- await responseCache.revalidate(ssgCacheKey, incrementalCache, isRoutePPREnabled, false, (c)=>{
1298
- return doRender({
1299
- span: c.span,
1300
- postponed: undefined,
1301
- fallbackRouteParams: remainingFallbackRouteParams.length > 0 ? (0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__.createOpaqueFallbackRouteParams)(remainingFallbackRouteParams) : null,
1302
- forceStaticRender: true
1303
- });
1304
- }, // We don't have a prior entry for this param-specific shell.
1305
- null, hasResolved, ctx.waitUntil);
1306
- } catch (err) {
1307
- console.error('Error revalidating the page in the background', err);
1308
- }
1309
- });
1310
- }
1311
- // Remove the cache control from the response to prevent it from being
1312
- // used in the surrounding cache.
1313
- delete fallbackResponse.cacheControl;
1314
- return fallbackResponse;
1315
- }
1316
- }
1317
- }
1318
- // Only requests that aren't revalidating can be resumed. If we have the
1319
- // minimal postponed data, then we should resume the render with it.
1320
- let postponed = !isOnDemandRevalidate && !isRevalidating && minimalPostponed ? minimalPostponed : undefined;
1321
- // If this is a dynamic RSC request or a server action request, we should
1322
- // use the postponed data from the static render (if available). This
1323
- // ensures that we can utilize the resume data cache (RDC) from the static
1324
- // render to ensure that the data is consistent between the static and
1325
- // dynamic renders (for navigations) or when re-rendering after a server
1326
- // action.
1327
- if (// Only enable RDC for Navigations if the feature is enabled.
1328
- supportsRDCForNavigations && "nodejs" !== 'edge' && !isMinimalMode && incrementalCache && // Include both dynamic RSC requests (navigations) and server actions
1329
- (isDynamicRSCRequest || isPossibleServerAction) && // We don't typically trigger an on-demand revalidation for dynamic RSC
1330
- // requests, as we're typically revalidating the page in the background
1331
- // instead. However, if the cache entry is stale, we should trigger a
1332
- // background revalidation on dynamic RSC requests. This prevents us
1333
- // from entering an infinite loop of revalidations.
1334
- !forceStaticRender) {
1335
- const incrementalCacheEntry = await incrementalCache.get(resolvedPathname, {
1336
- kind: next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_17__.IncrementalCacheKind.APP_PAGE,
1337
- isRoutePPREnabled: true,
1338
- isFallback: false
1339
- });
1340
- // If the cache entry is found, we should use the postponed data from
1341
- // the cache.
1342
- if (incrementalCacheEntry && incrementalCacheEntry.value && incrementalCacheEntry.value.kind === next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_17__.CachedRouteKind.APP_PAGE) {
1343
- // CRITICAL: we're assigning the postponed data from the cache entry
1344
- // here as we're using the RDC to resume the render.
1345
- postponed = incrementalCacheEntry.value.postponed;
1346
- // If the cache entry is stale, we should trigger a background
1347
- // revalidation so that subsequent requests will get a fresh response.
1348
- if (incrementalCacheEntry && // We want to trigger this flow if the cache entry is stale and if
1349
- // the requested revalidation flow is either foreground or
1350
- // background.
1351
- (incrementalCacheEntry.isStale === -1 || incrementalCacheEntry.isStale === true)) {
1352
- // We want to schedule this on the next tick to ensure that the
1353
- // render is not blocked on it.
1354
- (0,next_dist_lib_scheduler__WEBPACK_IMPORTED_MODULE_30__.scheduleOnNextTick)(async ()=>{
1355
- const responseCache = routeModule.getResponseCache(req);
1356
- try {
1357
- await responseCache.revalidate(resolvedPathname, incrementalCache, isRoutePPREnabled, false, (c)=>responseGenerator({
1358
- ...c,
1359
- // CRITICAL: we need to set this to true as we're
1360
- // revalidating in the background and typically this dynamic
1361
- // RSC request is not treated as static.
1362
- forceStaticRender: true
1363
- }), // CRITICAL: we need to pass null here because passing the
1364
- // previous cache entry here (which is stale) will switch on
1365
- // isOnDemandRevalidate and break the prerendering.
1366
- null, hasResolved, ctx.waitUntil);
1367
- } catch (err) {
1368
- console.error('Error revalidating the page in the background', err);
1369
- }
1370
- });
1371
- }
1372
- }
1373
- }
1374
- // When we're in minimal mode, if we're trying to debug the static shell,
1375
- // we should just return nothing instead of resuming the dynamic render.
1376
- if ((isDebugStaticShell || isDebugDynamicAccesses) && typeof postponed !== 'undefined') {
1377
- return {
1378
- cacheControl: {
1379
- revalidate: 1,
1380
- expire: undefined
1381
- },
1382
- value: {
1383
- kind: next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_17__.CachedRouteKind.PAGES,
1384
- html: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_19__["default"].EMPTY,
1385
- pageData: {},
1386
- headers: undefined,
1387
- status: undefined
1388
- }
1389
- };
1390
- }
1391
- const fallbackRouteParams = // In production or when debugging the static shell for a
1392
- // non-prerendered URL, use the prerender manifest's fallback route
1393
- // params which correctly identifies which params are unknown.
1394
- (isProduction && (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'renderFallbackShell') || isDebugStaticShell && !isPrerendered) && (prerenderInfo == null ? void 0 : prerenderInfo.fallbackRouteParams) ? (0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__.createOpaqueFallbackRouteParams)(prerenderInfo.fallbackRouteParams) : isDebugFallbackShell ? (0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__.getFallbackRouteParams)(normalizedSrcPage, routeModule) : null;
1395
- // For staged dynamic rendering (Cached Navigations) and debug static
1396
- // shell rendering, pass the fallback params via request meta so the
1397
- // RequestStore knows which params to defer. We don't pass them as
1398
- // fallbackRouteParams because that would replace actual param values
1399
- // with opaque placeholders during segment resolution.
1400
- if ((isProduction || isDebugStaticShell) && nextConfig.cacheComponents && !isPrerendered && (prerenderInfo == null ? void 0 : prerenderInfo.fallbackRouteParams)) {
1401
- const fallbackParams = (0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__.createOpaqueFallbackRouteParams)(prerenderInfo.fallbackRouteParams);
1402
- if (fallbackParams) {
1403
- (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.addRequestMeta)(req, 'fallbackParams', fallbackParams);
1404
- }
1405
- }
1406
- // Perform the render.
1407
- return doRender({
1408
- span,
1409
- postponed,
1410
- fallbackRouteParams,
1411
- forceStaticRender
1412
- });
1413
- };
1414
- const handleResponse = async (span)=>{
1415
- var _cacheEntry_value, _cachedData_headers;
1416
- const cacheEntry = await routeModule.handleResponse({
1417
- cacheKey: ssgCacheKey,
1418
- responseGenerator: (c)=>responseGenerator({
1419
- span,
1420
- ...c
1421
- }),
1422
- routeKind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE,
1423
- isOnDemandRevalidate,
1424
- isRoutePPREnabled,
1425
- req,
1426
- nextConfig,
1427
- prerenderManifest,
1428
- waitUntil: ctx.waitUntil,
1429
- isMinimalMode
1430
- });
1431
- if (isDraftMode) {
1432
- res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate');
1433
- }
1434
- // In dev, we should not cache pages for any reason.
1435
- if (routeModule.isDev) {
1436
- res.setHeader('Cache-Control', 'no-cache, must-revalidate');
970
+ ];
971
+ return /*#__PURE__*/ (0,react_jsx_runtime.jsx)(dist.AdminDevOpsPage, {
972
+ suggestedFeatures: suggestedFeatures,
973
+ theme: theme,
974
+ showLineNumbers: showLineNumbers,
975
+ activePanel: activePanel,
976
+ translations: {
977
+ title: t('title'),
978
+ subtitle: t('subtitle'),
979
+ systemStatus: t('systemStatus'),
980
+ cliOperations: t('cliOperations'),
981
+ cliOperationsDescription: t('cliOperationsDescription'),
982
+ cliTitle: t('cliTitle'),
983
+ cliDescription: t('cliDescription')
984
+ },
985
+ StatusDisplay: StatusDisplayWithAuth,
986
+ ToolbarPanels: ToolbarPanels/* ToolbarPanels */.t,
987
+ Toolbar: dist.Toolbar
988
+ });
989
+ }
990
+
991
+
992
+ /***/ }),
993
+
994
+ /***/ 97953:
995
+ /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
996
+
997
+ Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 71977));
998
+
999
+
1000
+ /***/ }),
1001
+
1002
+ /***/ 98881:
1003
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1004
+
1005
+ "use strict";
1006
+ __webpack_require__.r(__webpack_exports__);
1007
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1008
+ /* harmony export */ __next_app__: () => (/* binding */ __next_app__),
1009
+ /* harmony export */ handler: () => (/* binding */ handler),
1010
+ /* harmony export */ routeModule: () => (/* binding */ routeModule)
1011
+ /* harmony export */ });
1012
+ /* harmony import */ var next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(80666);
1013
+ /* harmony import */ var next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__);
1014
+ /* harmony import */ var next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(51421);
1015
+ /* harmony import */ var next_dist_server_instrumentation_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4675);
1016
+ /* harmony import */ var next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(29796);
1017
+ /* harmony import */ var next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__);
1018
+ /* harmony import */ var next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(54046);
1019
+ /* harmony import */ var next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__);
1020
+ /* harmony import */ var next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(74928);
1021
+ /* harmony import */ var next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__);
1022
+ /* harmony import */ var next_dist_server_app_render_interop_default__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(19727);
1023
+ /* harmony import */ var next_dist_server_app_render_strip_flight_headers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(24268);
1024
+ /* harmony import */ var next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(60402);
1025
+ /* harmony import */ var next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__);
1026
+ /* harmony import */ var next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(22040);
1027
+ /* harmony import */ var next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__);
1028
+ /* harmony import */ var next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(27186);
1029
+ /* harmony import */ var next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__);
1030
+ /* harmony import */ var next_dist_server_app_render_manifests_singleton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(49228);
1031
+ /* harmony import */ var next_dist_server_app_render_manifests_singleton__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_manifests_singleton__WEBPACK_IMPORTED_MODULE_11__);
1032
+ /* harmony import */ var next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(97485);
1033
+ /* harmony import */ var next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__);
1034
+ /* harmony import */ var next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(261);
1035
+ /* harmony import */ var next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_13__);
1036
+ /* harmony import */ var next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(80885);
1037
+ /* harmony import */ var next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_14__);
1038
+ /* harmony import */ var next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(7162);
1039
+ /* harmony import */ var next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__);
1040
+ /* harmony import */ var next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(26713);
1041
+ /* harmony import */ var next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_16__);
1042
+ /* harmony import */ var next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(70972);
1043
+ /* harmony import */ var next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_17__);
1044
+ /* harmony import */ var next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(57341);
1045
+ /* harmony import */ var next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18__);
1046
+ /* harmony import */ var next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(95105);
1047
+ /* harmony import */ var next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(38038);
1048
+ /* harmony import */ var next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__);
1049
+ /* harmony import */ var next_dist_server_stream_utils_encoded_tags__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(29898);
1050
+ /* harmony import */ var next_dist_server_stream_utils_node_web_streams_helper__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(62918);
1051
+ /* harmony import */ var next_dist_server_stream_utils_node_web_streams_helper__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_stream_utils_node_web_streams_helper__WEBPACK_IMPORTED_MODULE_22__);
1052
+ /* harmony import */ var next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(98798);
1053
+ /* harmony import */ var next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__);
1054
+ /* harmony import */ var next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(86439);
1055
+ /* harmony import */ var next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__);
1056
+ /* harmony import */ var next_dist_shared_lib_size_limit__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(77068);
1057
+ /* harmony import */ var next_dist_shared_lib_size_limit__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_size_limit__WEBPACK_IMPORTED_MODULE_25__);
1058
+ /* harmony import */ var next_dist_server_lib_postponed_request_body__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(31214);
1059
+ /* harmony import */ var next_dist_server_lib_postponed_request_body__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_postponed_request_body__WEBPACK_IMPORTED_MODULE_26__);
1060
+ /* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(35402);
1061
+ /* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_27__);
1062
+ /* harmony import */ var next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(29059);
1063
+ /* harmony import */ var next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_28___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_28__);
1064
+ /* harmony import */ var next_dist_shared_lib_invariant_error__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(70722);
1065
+ /* harmony import */ var next_dist_shared_lib_invariant_error__WEBPACK_IMPORTED_MODULE_29___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_invariant_error__WEBPACK_IMPORTED_MODULE_29__);
1066
+ /* harmony import */ var next_dist_lib_scheduler__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(31182);
1067
+ /* harmony import */ var next_dist_lib_scheduler__WEBPACK_IMPORTED_MODULE_30___default = /*#__PURE__*/__webpack_require__.n(next_dist_lib_scheduler__WEBPACK_IMPORTED_MODULE_30__);
1068
+ /* harmony import */ var next_dist_shared_lib_router_utils_interception_routes__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(43954);
1069
+ /* harmony import */ var next_dist_shared_lib_router_utils_interception_routes__WEBPACK_IMPORTED_MODULE_31___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_interception_routes__WEBPACK_IMPORTED_MODULE_31__);
1070
+ /* harmony import */ var next_dist_shared_lib_router_utils_get_segment_param__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(17891);
1071
+ /* harmony import */ var next_dist_shared_lib_router_utils_get_segment_param__WEBPACK_IMPORTED_MODULE_32___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_get_segment_param__WEBPACK_IMPORTED_MODULE_32__);
1072
+ /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};
1073
+ /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_27__) if(["default","__next_app__","routeModule","handler"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_27__[__WEBPACK_IMPORT_KEY__]
1074
+ /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
1075
+ const module0 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 95235));
1076
+ const module1 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 25195));
1077
+ const module2 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 56357));
1078
+ const module3 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 72353));
1079
+ const module4 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 4253, 23));
1080
+ const module5 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.t.bind(__webpack_require__, 49184, 23));
1081
+ const module6 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 57149));
1082
+ const module7 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 56357));
1083
+ const module8 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 28310));
1084
+ const module9 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 20706));
1085
+ const module10 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 56357));
1086
+ const module11 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 56357));
1087
+ const page12 = () => Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 71977));
1088
+
1089
+
1090
+
1091
+
1092
+
1093
+
1094
+
1095
+
1096
+
1097
+
1098
+
1099
+
1100
+
1101
+
1102
+
1103
+
1104
+
1105
+
1106
+
1107
+
1108
+
1109
+
1110
+
1111
+
1112
+
1113
+
1114
+
1115
+ // We inject the tree and pages here so that we can use them in the route
1116
+ // module.
1117
+ const tree = {
1118
+ children: [
1119
+ '',
1120
+ {
1121
+ children: [
1122
+ '[locale]',
1123
+ {
1124
+ children: [
1125
+ 'admin',
1126
+ {
1127
+ children: [
1128
+ 'devops',
1129
+ {
1130
+ children: ['__PAGE__', {}, {
1131
+ page: [page12, "/home/runner/work/semiont/semiont/apps/frontend/src/app/[locale]/admin/devops/page.tsx"],
1132
+
1133
+ }]
1134
+ },
1135
+ {
1136
+ 'global-error': [module11, "/home/runner/work/semiont/semiont/apps/frontend/src/app/global-error.tsx"],
1137
+
1138
+ },
1139
+ []
1140
+ ]
1141
+ },
1142
+ {
1143
+ 'layout': [module9, "/home/runner/work/semiont/semiont/apps/frontend/src/app/[locale]/admin/layout.tsx"],
1144
+ 'global-error': [module10, "/home/runner/work/semiont/semiont/apps/frontend/src/app/global-error.tsx"],
1145
+
1146
+ },
1147
+ []
1148
+ ]
1149
+ },
1150
+ {
1151
+ 'layout': [module6, "/home/runner/work/semiont/semiont/apps/frontend/src/app/[locale]/layout.tsx"],
1152
+ 'global-error': [module7, "/home/runner/work/semiont/semiont/apps/frontend/src/app/global-error.tsx"],
1153
+ 'not-found': [module8, "/home/runner/work/semiont/semiont/apps/frontend/src/app/[locale]/not-found.tsx"],
1154
+
1155
+ },
1156
+ ["_not-found","_global-error","api"]
1157
+ ]
1158
+ },
1159
+ {
1160
+ 'layout': [module0, "/home/runner/work/semiont/semiont/apps/frontend/src/app/layout.tsx"],
1161
+ 'error': [module1, "/home/runner/work/semiont/semiont/apps/frontend/src/app/error.tsx"],
1162
+ 'global-error': [module2, "/home/runner/work/semiont/semiont/apps/frontend/src/app/global-error.tsx"],
1163
+ 'not-found': [module3, "/home/runner/work/semiont/semiont/apps/frontend/src/app/not-found.tsx"],
1164
+ 'forbidden': [module4, "next/dist/client/components/builtin/forbidden.js"],
1165
+ 'unauthorized': [module5, "next/dist/client/components/builtin/unauthorized.js"],
1166
+
1167
+ },
1168
+ []
1169
+ ]
1170
+ }.children;
1171
+ const __next_app_require__ = __webpack_require__
1172
+ const __next_app_load_chunk__ = () => Promise.resolve()
1173
+ const __next_app__ = {
1174
+ require: __next_app_require__,
1175
+ loadChunk: __next_app_load_chunk__
1176
+ };
1177
+
1178
+
1179
+
1180
+
1181
+
1182
+
1183
+
1184
+ // Create and export the route module that will be consumed.
1185
+ const routeModule = new next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__.AppPageRouteModule({
1186
+ definition: {
1187
+ kind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE,
1188
+ page: "/[locale]/admin/devops/page",
1189
+ pathname: "/[locale]/admin/devops",
1190
+ // The following aren't used in production.
1191
+ bundlePath: '',
1192
+ filename: '',
1193
+ appPaths: []
1194
+ },
1195
+ userland: {
1196
+ loaderTree: tree
1197
+ },
1198
+ distDir: ".next" || 0,
1199
+ relativeProjectDir: false || ''
1200
+ });
1201
+ function buildDynamicSegmentPlaceholder(param) {
1202
+ const { repeat, optional } = (0,next_dist_shared_lib_router_utils_get_segment_param__WEBPACK_IMPORTED_MODULE_32__.getParamProperties)(param.paramType);
1203
+ if (optional) {
1204
+ return `[[...${param.paramName}]]`;
1205
+ }
1206
+ if (repeat) {
1207
+ return `[...${param.paramName}]`;
1208
+ }
1209
+ return `[${param.paramName}]`;
1210
+ }
1211
+ /**
1212
+ * Builds the cache key for the most complete prerenderable shell we can derive
1213
+ * from the shell that matched this request. Only params that can still be
1214
+ * filled by `generateStaticParams` are substituted; fully dynamic params stay
1215
+ * as placeholders so a request like `/c/foo` can complete `/[one]/[two]` into
1216
+ * `/c/[two]` rather than `/c/foo`.
1217
+ */ function buildCompletedShellCacheKey(fallbackPathname, remainingPrerenderableParams, params) {
1218
+ const prerenderableParamsByName = new Map(remainingPrerenderableParams.map((param)=>[
1219
+ param.paramName,
1220
+ param
1221
+ ]));
1222
+ return fallbackPathname.split('/').map((segment)=>{
1223
+ const segmentParam = (0,next_dist_shared_lib_router_utils_get_segment_param__WEBPACK_IMPORTED_MODULE_32__.getSegmentParam)(segment);
1224
+ if (!segmentParam) {
1225
+ return segment;
1226
+ }
1227
+ const remainingParam = prerenderableParamsByName.get(segmentParam.paramName);
1228
+ if (!remainingParam) {
1229
+ return segment;
1230
+ }
1231
+ const value = params == null ? void 0 : params[remainingParam.paramName];
1232
+ if (!value) {
1233
+ return segment;
1234
+ }
1235
+ const encodedValue = Array.isArray(value) ? value.map((item)=>encodeURIComponent(item)).join('/') : encodeURIComponent(value);
1236
+ return segment.replace(buildDynamicSegmentPlaceholder(remainingParam), encodedValue);
1237
+ }).join('/') || '/';
1238
+ }
1239
+ async function handler(req, res, ctx) {
1240
+ var _this, _prerenderManifest_routes_resolvedPathname, _prerenderInfo_fallbackRootParams, _prerenderInfo_fallbackRouteParams;
1241
+ if (ctx.requestMeta) {
1242
+ (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.setRequestMeta)(req, ctx.requestMeta);
1243
+ }
1244
+ if (routeModule.isDev) {
1245
+ (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.addRequestMeta)(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint());
1246
+ }
1247
+ const isMinimalMode = Boolean((0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'minimalMode'));
1248
+ let srcPage = "/[locale]/admin/devops/page";
1249
+ // turbopack doesn't normalize `/index` in the page name
1250
+ // so we need to to process dynamic routes properly
1251
+ // TODO: fix turbopack providing differing value from webpack
1252
+ if (false) {} else if (srcPage === '/index') {
1253
+ // we always normalize /index specifically
1254
+ srcPage = '/';
1255
+ }
1256
+ const multiZoneDraftMode = false;
1257
+ const prepareResult = await routeModule.prepare(req, res, {
1258
+ srcPage,
1259
+ multiZoneDraftMode
1260
+ });
1261
+ if (!prepareResult) {
1262
+ res.statusCode = 400;
1263
+ res.end('Bad Request');
1264
+ ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());
1265
+ return null;
1266
+ }
1267
+ const { buildId, query, params, pageIsDynamic, buildManifest, nextFontManifest, reactLoadableManifest, serverActionsManifest, clientReferenceManifest, subresourceIntegrityManifest, prerenderManifest, isDraftMode, resolvedPathname, revalidateOnlyGenerated, routerServerContext, nextConfig, parsedUrl, interceptionRoutePatterns, deploymentId, clientAssetToken } = prepareResult;
1268
+ const normalizedSrcPage = (0,next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_13__.normalizeAppPath)(srcPage);
1269
+ let { isOnDemandRevalidate } = prepareResult;
1270
+ // We use the resolvedPathname instead of the parsedUrl.pathname because it
1271
+ // is not rewritten as resolvedPathname is. This will ensure that the correct
1272
+ // prerender info is used instead of using the original pathname as the
1273
+ // source. If however PPR is enabled and cacheComponents is disabled, we
1274
+ // treat the pathname as dynamic. Currently, there's a bug in the PPR
1275
+ // implementation that incorrectly leaves %%drp placeholders in the output of
1276
+ // parallel routes. This is addressed with cacheComponents.
1277
+ const prerenderMatch = nextConfig.experimental.ppr && !nextConfig.cacheComponents && (0,next_dist_shared_lib_router_utils_interception_routes__WEBPACK_IMPORTED_MODULE_31__.isInterceptionRouteAppPath)(resolvedPathname) ? null : routeModule.match(resolvedPathname, prerenderManifest);
1278
+ const prerenderInfo = (prerenderMatch == null ? void 0 : prerenderMatch.route) ?? null;
1279
+ const isPrerendered = !!prerenderManifest.routes[resolvedPathname];
1280
+ const userAgent = req.headers['user-agent'] || '';
1281
+ const botType = (0,next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_16__.getBotType)(userAgent);
1282
+ const isHtmlBot = (0,next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__.isHtmlBotRequest)(req);
1283
+ /**
1284
+ * If true, this indicates that the request being made is for an app
1285
+ * prefetch request.
1286
+ */ const isPrefetchRSCRequest = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'isPrefetchRSCRequest') ?? req.headers[next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.NEXT_ROUTER_PREFETCH_HEADER] === '1' // exclude runtime prefetches, which use '2'
1287
+ ;
1288
+ // NOTE: Don't delete headers[RSC] yet, it still needs to be used in renderToHTML later
1289
+ const isRSCRequest = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'isRSCRequest') ?? Boolean(req.headers[next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.RSC_HEADER]);
1290
+ const isPossibleServerAction = (0,next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_14__.getIsPossibleServerAction)(req);
1291
+ /**
1292
+ * If the route being rendered is an app page, and the ppr feature has been
1293
+ * enabled, then the given route _could_ support PPR.
1294
+ */ const couldSupportPPR = (0,next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__.checkIsAppPPREnabled)(nextConfig.experimental.ppr);
1295
+ // Stash postponed state for server actions when in minimal mode.
1296
+ // We extract it here so the RDC is available for the re-render after the action completes.
1297
+ const resumeStateLengthHeader = req.headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__.NEXT_RESUME_STATE_LENGTH_HEADER];
1298
+ if (!(0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'postponed') && isMinimalMode && couldSupportPPR && isPossibleServerAction && resumeStateLengthHeader && typeof resumeStateLengthHeader === 'string') {
1299
+ const stateLength = parseInt(resumeStateLengthHeader, 10);
1300
+ const { maxPostponedStateSize, maxPostponedStateSizeBytes } = (0,next_dist_server_lib_postponed_request_body__WEBPACK_IMPORTED_MODULE_26__.getMaxPostponedStateSize)(nextConfig.experimental.maxPostponedStateSize);
1301
+ if (!isNaN(stateLength) && stateLength > 0) {
1302
+ var _nextConfig_experimental_serverActions;
1303
+ if (stateLength > maxPostponedStateSizeBytes) {
1304
+ res.statusCode = 413;
1305
+ res.end((0,next_dist_server_lib_postponed_request_body__WEBPACK_IMPORTED_MODULE_26__.getPostponedStateExceededErrorMessage)(maxPostponedStateSize));
1306
+ ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());
1307
+ return null;
1437
1308
  }
1438
- if (!cacheEntry) {
1439
- if (ssgCacheKey) {
1440
- // A cache entry might not be generated if a response is written
1441
- // in `getInitialProps` or `getServerSideProps`, but those shouldn't
1442
- // have a cache key. If we do have a cache key but we don't end up
1443
- // with a cache entry, then either Next.js or the application has a
1444
- // bug that needs fixing.
1445
- throw Object.defineProperty(new Error('invariant: cache entry required but not generated'), "__NEXT_ERROR_CODE", {
1446
- value: "E62",
1447
- enumerable: false,
1448
- configurable: true
1449
- });
1450
- }
1309
+ // Calculate max total body size to prevent buffering excessively large
1310
+ // payloads before the action handler checks. We use stateLength (not
1311
+ // maxPostponedStateSizeBytes) so the postponed state doesn't eat into
1312
+ // the action body budget - it's already validated above.
1313
+ const defaultActionBodySizeLimit = '1 MB';
1314
+ const actionBodySizeLimit = ((_nextConfig_experimental_serverActions = nextConfig.experimental.serverActions) == null ? void 0 : _nextConfig_experimental_serverActions.bodySizeLimit) ?? defaultActionBodySizeLimit;
1315
+ const actionBodySizeLimitBytes = actionBodySizeLimit !== defaultActionBodySizeLimit ? (__webpack_require__(32683).parse)(actionBodySizeLimit) : 1024 * 1024 // 1 MB
1316
+ ;
1317
+ const maxTotalBodySize = stateLength + actionBodySizeLimitBytes;
1318
+ const fullBody = await (0,next_dist_server_lib_postponed_request_body__WEBPACK_IMPORTED_MODULE_26__.readBodyWithSizeLimit)(req, maxTotalBodySize);
1319
+ if (fullBody === null) {
1320
+ res.statusCode = 413;
1321
+ res.end(`Request body exceeded limit. ` + `To configure the body size limit for Server Actions, see: https://nextjs.org/docs/app/api-reference/next-config-js/serverActions#bodysizelimit`);
1322
+ ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());
1451
1323
  return null;
1452
1324
  }
1453
- if (((_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_17__.CachedRouteKind.APP_PAGE) {
1454
- var _cacheEntry_value1;
1455
- throw Object.defineProperty(new Error(`Invariant app-page handler received invalid cache entry ${(_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", {
1456
- value: "E707",
1325
+ if (fullBody.length >= stateLength) {
1326
+ // Extract postponed state from the beginning
1327
+ const postponedState = fullBody.subarray(0, stateLength).toString('utf8');
1328
+ (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.addRequestMeta)(req, 'postponed', postponedState);
1329
+ // Store the remaining action body for the action handler
1330
+ const actionBody = fullBody.subarray(stateLength);
1331
+ (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.addRequestMeta)(req, 'actionBody', actionBody);
1332
+ } else {
1333
+ throw Object.defineProperty(new Error(`invariant: expected ${stateLength} bytes of postponed state but only received ${fullBody.length} bytes`), "__NEXT_ERROR_CODE", {
1334
+ value: "E979",
1457
1335
  enumerable: false,
1458
1336
  configurable: true
1459
1337
  });
1460
- }
1461
- const didPostpone = typeof cacheEntry.value.postponed === 'string';
1462
- // Set the build ID header for RSC navigation requests when deploymentId is configured. This
1463
- // corresponds with maybeAppendBuildIdToRSCPayload in app-render.tsx which omits the build ID
1464
- // from the RSC payload when deploymentId is set (relying on this header instead). Server
1465
- // actions are excluded here because action redirect responses get the deployment ID header
1466
- // from the pre-fetched redirect target (via createRedirectRenderResult in action-handler.ts
1467
- // which copies headers from the internal RSC fetch).
1468
- // For static prerenders served from CDN, routes-manifest.json adds a header.
1469
- if (isRSCRequest && !isPossibleServerAction && deploymentId) {
1470
- res.setHeader(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__.NEXT_NAV_DEPLOYMENT_ID_HEADER, deploymentId);
1471
- }
1472
- if (isSSG && // We don't want to send a cache header for requests that contain dynamic
1473
- // data. If this is a Dynamic RSC request or wasn't a Prefetch RSC
1474
- // request, then we should set the cache header.
1475
- !isDynamicRSCRequest && (!didPostpone || isPrefetchRSCRequest)) {
1476
- if (!isMinimalMode) {
1477
- // set x-nextjs-cache header to match the header
1478
- // we set for the image-optimizer
1479
- res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT');
1480
- }
1481
- // Set a header used by the client router to signal the response is static
1482
- // and should respect the `static` cache staleTime value.
1483
- res.setHeader(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.NEXT_IS_PRERENDER_HEADER, '1');
1484
- }
1485
- const { value: cachedData } = cacheEntry;
1486
- // Coerce the cache control parameter from the render.
1487
- let cacheControl;
1488
- // If this is a resume request in minimal mode it is streamed with dynamic
1489
- // content and should not be cached.
1490
- if (minimalPostponed) {
1491
- cacheControl = {
1492
- revalidate: 0,
1493
- expire: undefined
1494
- };
1495
- } else if (isDynamicRSCRequest) {
1496
- cacheControl = {
1497
- revalidate: 0,
1498
- expire: undefined
1499
- };
1500
- } else if (!routeModule.isDev) {
1501
- // If this is a preview mode request, we shouldn't cache it
1502
- if (isDraftMode) {
1503
- cacheControl = {
1504
- revalidate: 0,
1505
- expire: undefined
1506
- };
1507
- } else if (!isSSG) {
1508
- if (!res.getHeader('Cache-Control')) {
1509
- cacheControl = {
1510
- revalidate: 0,
1511
- expire: undefined
1512
- };
1513
- }
1514
- } else if (cacheEntry.cacheControl) {
1515
- // If the cache entry has a cache control with a revalidate value that's
1516
- // a number, use it.
1517
- if (typeof cacheEntry.cacheControl.revalidate === 'number') {
1518
- var _cacheEntry_cacheControl;
1519
- if (cacheEntry.cacheControl.revalidate < 1) {
1520
- throw Object.defineProperty(new Error(`Invalid revalidate configuration provided: ${cacheEntry.cacheControl.revalidate} < 1`), "__NEXT_ERROR_CODE", {
1521
- value: "E22",
1522
- enumerable: false,
1523
- configurable: true
1524
- });
1525
- }
1526
- cacheControl = {
1527
- revalidate: cacheEntry.cacheControl.revalidate,
1528
- expire: ((_cacheEntry_cacheControl = cacheEntry.cacheControl) == null ? void 0 : _cacheEntry_cacheControl.expire) ?? nextConfig.expireTime
1529
- };
1530
- } else {
1531
- cacheControl = {
1532
- revalidate: next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__.CACHE_ONE_YEAR_SECONDS,
1533
- expire: undefined
1534
- };
1535
- }
1338
+ }
1339
+ }
1340
+ }
1341
+ if (!(0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'postponed') && couldSupportPPR && req.headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__.NEXT_RESUME_HEADER] === '1' && req.method === 'POST') {
1342
+ const { maxPostponedStateSize, maxPostponedStateSizeBytes } = (0,next_dist_server_lib_postponed_request_body__WEBPACK_IMPORTED_MODULE_26__.getMaxPostponedStateSize)(nextConfig.experimental.maxPostponedStateSize);
1343
+ // Decode the postponed state from the request body, it will come as
1344
+ // an array of buffers, so collect them and then concat them to form
1345
+ // the string.
1346
+ const body = await (0,next_dist_server_lib_postponed_request_body__WEBPACK_IMPORTED_MODULE_26__.readBodyWithSizeLimit)(req, maxPostponedStateSizeBytes);
1347
+ if (body === null) {
1348
+ res.statusCode = 413;
1349
+ res.end((0,next_dist_server_lib_postponed_request_body__WEBPACK_IMPORTED_MODULE_26__.getPostponedStateExceededErrorMessage)(maxPostponedStateSize));
1350
+ ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());
1351
+ return null;
1352
+ }
1353
+ const postponed = body.toString('utf8');
1354
+ (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.addRequestMeta)(req, 'postponed', postponed);
1355
+ }
1356
+ // When enabled, this will allow the use of the `?__nextppronly` query to
1357
+ // enable debugging of the static shell.
1358
+ const hasDebugStaticShellQuery = false && 0;
1359
+ // When enabled, this will allow the use of the `?__nextppronly` query
1360
+ // to enable debugging of the fallback shell.
1361
+ const hasDebugFallbackShellQuery = hasDebugStaticShellQuery && query.__nextppronly === 'fallback';
1362
+ // Whether the testing API is exposed (dev mode or explicit flag)
1363
+ const exposeTestingApi = routeModule.isDev === true || nextConfig.experimental.exposeTestingApiInProductionBuild === true;
1364
+ // Enable the Instant Navigation Testing API. Renders only the prefetched
1365
+ // portion of the page, excluding dynamic content. This allows tests to
1366
+ // assert on the prefetched UI state deterministically.
1367
+ // - Header: Used for client-side navigations where we can set request headers
1368
+ // - Cookie: Used for MPA navigations (page reload, full page load) where we
1369
+ // can't set request headers. Only applies to document requests (no RSC
1370
+ // header) - RSC requests should proceed normally even during a locked scope,
1371
+ // with blocking happening on the client side.
1372
+ const isInstantNavigationTest = exposeTestingApi && (req.headers[next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.NEXT_INSTANT_PREFETCH_HEADER] === '1' || req.headers[next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.RSC_HEADER] === undefined && typeof req.headers.cookie === 'string' && req.headers.cookie.includes(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.NEXT_INSTANT_TEST_COOKIE + '='));
1373
+ // This page supports PPR if it is marked as being `PARTIALLY_STATIC` in the
1374
+ // prerender manifest and this is an app page.
1375
+ const isRoutePPREnabled = // When the instant navigation testing API is active, enable the PPR
1376
+ // prerender path even without Cache Components. In dev mode without CC,
1377
+ // static pages need this path to produce buffered segment data (the
1378
+ // legacy prerender path hangs in dev mode).
1379
+ (couldSupportPPR || isInstantNavigationTest) && (((_this = prerenderManifest.routes[normalizedSrcPage] ?? prerenderManifest.dynamicRoutes[normalizedSrcPage]) == null ? void 0 : _this.renderingMode) === 'PARTIALLY_STATIC' || // Ideally we'd want to check the appConfig to see if this page has PPR
1380
+ // enabled or not, but that would require plumbing the appConfig through
1381
+ // to the server during development. We assume that the page supports it
1382
+ // but only during development or when the testing API is exposed.
1383
+ (hasDebugStaticShellQuery || isInstantNavigationTest) && (exposeTestingApi || (routerServerContext == null ? void 0 : routerServerContext.experimentalTestProxy) === true));
1384
+ const isDebugStaticShell = (hasDebugStaticShellQuery || isInstantNavigationTest) && isRoutePPREnabled;
1385
+ // We should enable debugging dynamic accesses when the static shell
1386
+ // debugging has been enabled and we're also in development mode.
1387
+ const isDebugDynamicAccesses = isDebugStaticShell && routeModule.isDev === true;
1388
+ const isDebugFallbackShell = hasDebugFallbackShellQuery && isRoutePPREnabled;
1389
+ // If we're in minimal mode, then try to get the postponed information from
1390
+ // the request metadata. If available, use it for resuming the postponed
1391
+ // render.
1392
+ const minimalPostponed = isRoutePPREnabled ? (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'postponed') : undefined;
1393
+ // If PPR is enabled, and this is a RSC request (but not a prefetch), then
1394
+ // we can use this fact to only generate the flight data for the request
1395
+ // because we can't cache the HTML (as it's also dynamic).
1396
+ const staticPrefetchDataRoute = (_prerenderManifest_routes_resolvedPathname = prerenderManifest.routes[resolvedPathname]) == null ? void 0 : _prerenderManifest_routes_resolvedPathname.prefetchDataRoute;
1397
+ let isDynamicRSCRequest = isRoutePPREnabled && isRSCRequest && !isPrefetchRSCRequest && // If generated at build time, treat the RSC request as static
1398
+ // so we can serve the prebuilt .rsc without a dynamic render.
1399
+ // Only do this for routes that have a concrete prefetchDataRoute.
1400
+ !staticPrefetchDataRoute;
1401
+ // During a PPR revalidation, the RSC request is not dynamic if we do not have the postponed data.
1402
+ // We only attach the postponed data during a resume. If there's no postponed data, then it must be a revalidation.
1403
+ // This is to ensure that we don't bypass the cache during a revalidation.
1404
+ if (isMinimalMode) {
1405
+ isDynamicRSCRequest = isDynamicRSCRequest && !!minimalPostponed;
1406
+ }
1407
+ // Need to read this before it's stripped by stripFlightHeaders. We don't
1408
+ // need to transfer it to the request meta because it's only read
1409
+ // within this function; the static segment data should have already been
1410
+ // generated, so we will always either return a static response or a 404.
1411
+ const segmentPrefetchHeader = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'segmentPrefetchRSCRequest');
1412
+ // TODO: investigate existing bug with shouldServeStreamingMetadata always
1413
+ // being true for a revalidate due to modifying the base-server this.renderOpts
1414
+ // when fixing this to correct logic it causes hydration issue since we set
1415
+ // serveStreamingMetadata to true during export
1416
+ const serveStreamingMetadata = botType && isRoutePPREnabled ? false : !userAgent ? true : (0,next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__.shouldServeStreamingMetadata)(userAgent, nextConfig.htmlLimitedBots);
1417
+ const isSSG = Boolean((prerenderInfo || isPrerendered || prerenderManifest.routes[normalizedSrcPage]) && // If this is a bot request and PPR is enabled, then we don't want
1418
+ // to serve a static response. This applies to both DOM bots (like Googlebot)
1419
+ // and HTML-limited bots.
1420
+ !(botType && isRoutePPREnabled));
1421
+ // When a page supports cacheComponents, we can support RDC for Navigations
1422
+ const supportsRDCForNavigations = isRoutePPREnabled && nextConfig.cacheComponents === true;
1423
+ // In development, we always want to generate dynamic HTML.
1424
+ const supportsDynamicResponse = // If we're in development, we always support dynamic HTML, unless it's
1425
+ // a data request, in which case we only produce static HTML.
1426
+ routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports
1427
+ // dynamic HTML.
1428
+ !isSSG || // If this request has provided postponed data, it supports dynamic
1429
+ // HTML.
1430
+ typeof minimalPostponed === 'string' || // If this handler supports onCacheEntryV2, then we can only support
1431
+ // dynamic responses if it's a dynamic RSC request and not in minimal mode. If it
1432
+ // doesn't support it we must fallback to the default behavior.
1433
+ (supportsRDCForNavigations && (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'onCacheEntryV2') ? // which will generate the RDC for the route. When resuming a Dynamic
1434
+ // RSC request, we'll pass the minimal postponed data to the render
1435
+ // which will trigger the `supportsDynamicResponse` to be true.
1436
+ isDynamicRSCRequest && !isMinimalMode : isDynamicRSCRequest);
1437
+ // When bots request PPR page, perform the full dynamic rendering.
1438
+ // This applies to both DOM bots (like Googlebot) and HTML-limited bots.
1439
+ const shouldWaitOnAllReady = Boolean(botType) && isRoutePPREnabled;
1440
+ const remainingPrerenderableParams = (prerenderInfo == null ? void 0 : prerenderInfo.remainingPrerenderableParams) ?? [];
1441
+ const hasUnresolvedRootFallbackParams = (prerenderInfo == null ? void 0 : prerenderInfo.fallback) === null && (((_prerenderInfo_fallbackRootParams = prerenderInfo.fallbackRootParams) == null ? void 0 : _prerenderInfo_fallbackRootParams.length) ?? 0) > 0;
1442
+ let ssgCacheKey = null;
1443
+ if (!isDraftMode && isSSG && !supportsDynamicResponse && !isPossibleServerAction && !minimalPostponed && !isDynamicRSCRequest) {
1444
+ // For normal SSG routes we cache by the fully resolved pathname. For
1445
+ // partial fallbacks we instead derive the cache key from the shell
1446
+ // that matched this request so `/prefix/[one]/[two]` can specialize into
1447
+ // `/prefix/c/[two]` without promoting all the way to `/prefix/c/foo`.
1448
+ const fallbackPathname = prerenderMatch ? typeof (prerenderInfo == null ? void 0 : prerenderInfo.fallback) === 'string' ? prerenderInfo.fallback : prerenderMatch.source : null;
1449
+ if (nextConfig.experimental.partialFallbacks === true && fallbackPathname && (prerenderInfo == null ? void 0 : prerenderInfo.fallbackRouteParams) && !hasUnresolvedRootFallbackParams) {
1450
+ if (remainingPrerenderableParams.length > 0) {
1451
+ const completedShellCacheKey = buildCompletedShellCacheKey(fallbackPathname, remainingPrerenderableParams, params);
1452
+ // If applying the current request params doesn't make the shell any
1453
+ // more complete, then this shell is already at its most complete
1454
+ // form and should remain shared rather than creating a new cache entry.
1455
+ ssgCacheKey = completedShellCacheKey !== fallbackPathname ? completedShellCacheKey : null;
1456
+ }
1457
+ } else {
1458
+ ssgCacheKey = resolvedPathname;
1459
+ }
1460
+ }
1461
+ // the staticPathKey differs from ssgCacheKey since
1462
+ // ssgCacheKey is null in dev since we're always in "dynamic"
1463
+ // mode in dev to bypass the cache. It can also be null for partial
1464
+ // fallback shells that should remain shared and must not create a
1465
+ // param-specific ISR entry, but we still need to honor fallback handling.
1466
+ let staticPathKey = ssgCacheKey;
1467
+ if (!staticPathKey && (routeModule.isDev || isSSG && pageIsDynamic && (prerenderInfo == null ? void 0 : prerenderInfo.fallbackRouteParams))) {
1468
+ staticPathKey = resolvedPathname;
1469
+ }
1470
+ // If this is a request for an app path that should be statically generated
1471
+ // and we aren't in the edge runtime, strip the flight headers so it will
1472
+ // generate the static response.
1473
+ if (!routeModule.isDev && !isDraftMode && isSSG && isRSCRequest && !isDynamicRSCRequest) {
1474
+ (0,next_dist_server_app_render_strip_flight_headers__WEBPACK_IMPORTED_MODULE_7__/* .stripFlightHeaders */ .d)(req.headers);
1475
+ }
1476
+ const ComponentMod = {
1477
+ ...next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_27__,
1478
+ tree,
1479
+ handler,
1480
+ routeModule,
1481
+ __next_app__
1482
+ };
1483
+ // Before rendering (which initializes component tree modules), we have to
1484
+ // set the reference manifests to our global store so Server Action's
1485
+ // encryption util can access to them at the top level of the page module.
1486
+ if (serverActionsManifest && clientReferenceManifest) {
1487
+ (0,next_dist_server_app_render_manifests_singleton__WEBPACK_IMPORTED_MODULE_11__.setManifestsSingleton)({
1488
+ page: srcPage,
1489
+ clientReferenceManifest,
1490
+ serverActionsManifest
1491
+ });
1492
+ }
1493
+ const method = req.method || 'GET';
1494
+ const tracer = (0,next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__.getTracer)();
1495
+ const activeSpan = tracer.getActiveScopeSpan();
1496
+ const isWrappedByNextServer = Boolean(routerServerContext == null ? void 0 : routerServerContext.isWrappedByNextServer);
1497
+ const remainingFallbackRouteParams = nextConfig.experimental.partialFallbacks === true && remainingPrerenderableParams.length > 0 ? (prerenderInfo == null ? void 0 : (_prerenderInfo_fallbackRouteParams = prerenderInfo.fallbackRouteParams) == null ? void 0 : _prerenderInfo_fallbackRouteParams.filter((param)=>!remainingPrerenderableParams.some((prerenderableParam)=>prerenderableParam.paramName === param.paramName))) ?? [] : [];
1498
+ const render404 = async ()=>{
1499
+ // TODO: should route-module itself handle rendering the 404
1500
+ if (routerServerContext == null ? void 0 : routerServerContext.render404) {
1501
+ await routerServerContext.render404(req, res, parsedUrl, false);
1502
+ } else {
1503
+ res.end('This page could not be found');
1504
+ }
1505
+ return null;
1506
+ };
1507
+ try {
1508
+ const varyHeader = routeModule.getVaryHeader(resolvedPathname, interceptionRoutePatterns);
1509
+ res.setHeader('Vary', varyHeader);
1510
+ let parentSpan;
1511
+ const invokeRouteModule = async (span, context)=>{
1512
+ const nextReq = new next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__.NodeNextRequest(req);
1513
+ const nextRes = new next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__.NodeNextResponse(res);
1514
+ return routeModule.render(nextReq, nextRes, context).finally(()=>{
1515
+ if (!span) return;
1516
+ span.setAttributes({
1517
+ 'http.status_code': res.statusCode,
1518
+ 'next.rsc': false
1519
+ });
1520
+ const rootSpanAttributes = tracer.getRootSpanAttributes();
1521
+ // We were unable to get attributes, probably OTEL is not enabled
1522
+ if (!rootSpanAttributes) {
1523
+ return;
1536
1524
  }
1537
- }
1538
- cacheEntry.cacheControl = cacheControl;
1539
- if (typeof segmentPrefetchHeader === 'string' && (cachedData == null ? void 0 : cachedData.kind) === next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_17__.CachedRouteKind.APP_PAGE && cachedData.segmentData) {
1540
- var _cachedData_headers1;
1541
- // This is a prefetch request issued by the client Segment Cache. These
1542
- // should never reach the application layer (lambda). We should either
1543
- // respond from the cache (HIT) or respond with 204 No Content (MISS).
1544
- // Set a header to indicate that PPR is enabled for this route. This
1545
- // lets the client distinguish between a regular cache miss and a cache
1546
- // miss due to PPR being disabled. In other contexts this header is used
1547
- // to indicate that the response contains dynamic data, but here we're
1548
- // only using it to indicate that the feature is enabled — the segment
1549
- // response itself contains whether the data is dynamic.
1550
- res.setHeader(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.NEXT_DID_POSTPONE_HEADER, '2');
1551
- // Add the cache tags header to the response if it exists and we're in
1552
- // minimal mode while rendering a static page.
1553
- const tags = (_cachedData_headers1 = cachedData.headers) == null ? void 0 : _cachedData_headers1[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__.NEXT_CACHE_TAGS_HEADER];
1554
- if (isMinimalMode && isSSG && tags && typeof tags === 'string') {
1555
- res.setHeader(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__.NEXT_CACHE_TAGS_HEADER, tags);
1525
+ if (rootSpanAttributes.get('next.span_type') !== next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__.BaseServerSpan.handleRequest) {
1526
+ console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`);
1527
+ return;
1556
1528
  }
1557
- const matchedSegment = cachedData.segmentData.get(segmentPrefetchHeader);
1558
- if (matchedSegment !== undefined) {
1559
- // Cache hit
1560
- return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({
1561
- req,
1562
- res,
1563
- generateEtags: nextConfig.generateEtags,
1564
- poweredByHeader: nextConfig.poweredByHeader,
1565
- result: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_19__["default"].fromStatic(matchedSegment, next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.RSC_CONTENT_TYPE_HEADER),
1566
- cacheControl: cacheEntry.cacheControl
1529
+ const route = rootSpanAttributes.get('next.route');
1530
+ if (route) {
1531
+ const name = `${method} ${route}`;
1532
+ span.setAttributes({
1533
+ 'next.route': route,
1534
+ 'http.route': route,
1535
+ 'next.span_name': name
1567
1536
  });
1568
- }
1569
- // Cache miss. Either a cache entry for this route has not been generated
1570
- // (which technically should not be possible when PPR is enabled, because
1571
- // at a minimum there should always be a fallback entry) or there's no
1572
- // match for the requested segment. Respond with a 204 No Content. We
1573
- // don't bother to respond with 404, because these requests are only
1574
- // issued as part of a prefetch.
1575
- res.statusCode = 204;
1576
- return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({
1577
- req,
1578
- res,
1579
- generateEtags: nextConfig.generateEtags,
1580
- poweredByHeader: nextConfig.poweredByHeader,
1581
- result: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_19__["default"].EMPTY,
1582
- cacheControl: cacheEntry.cacheControl
1583
- });
1584
- }
1585
- // If there's a callback for `onCacheEntry`, call it with the cache entry
1586
- // and the revalidate options. If we support RDC for Navigations, we
1587
- // prefer the `onCacheEntryV2` callback. Once RDC for Navigations is the
1588
- // default, we can remove the fallback to `onCacheEntry` as
1589
- // `onCacheEntryV2` is now fully supported.
1590
- const onCacheEntry = supportsRDCForNavigations ? (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'onCacheEntryV2') ?? (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'onCacheEntry') : (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'onCacheEntry');
1591
- if (onCacheEntry) {
1592
- const finished = await onCacheEntry(cacheEntry, {
1593
- url: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'initURL') ?? req.url
1594
- });
1595
- if (finished) return null;
1596
- }
1597
- if (cachedData.headers) {
1598
- const headers = {
1599
- ...cachedData.headers
1600
- };
1601
- if (!isMinimalMode || !isSSG) {
1602
- delete headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__.NEXT_CACHE_TAGS_HEADER];
1603
- }
1604
- for (let [key, value] of Object.entries(headers)){
1605
- if (typeof value === 'undefined') continue;
1606
- if (Array.isArray(value)) {
1607
- for (const v of value){
1608
- res.appendHeader(key, v);
1609
- }
1610
- } else if (typeof value === 'number') {
1611
- value = value.toString();
1612
- res.appendHeader(key, value);
1613
- } else {
1614
- res.appendHeader(key, value);
1537
+ span.updateName(name);
1538
+ // Propagate http.route to the parent span if one exists (e.g.
1539
+ // a platform-created HTTP span in adapter deployments).
1540
+ if (parentSpan && parentSpan !== span) {
1541
+ parentSpan.setAttribute('http.route', route);
1542
+ parentSpan.updateName(name);
1615
1543
  }
1544
+ } else {
1545
+ span.updateName(`${method} ${srcPage}`);
1546
+ }
1547
+ });
1548
+ };
1549
+ const incrementalCache = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'incrementalCache') || await routeModule.getIncrementalCache(req, nextConfig, prerenderManifest, isMinimalMode);
1550
+ incrementalCache == null ? void 0 : incrementalCache.resetRequestCache();
1551
+ globalThis.__incrementalCache = incrementalCache;
1552
+ const doRender = async ({ span, postponed, fallbackRouteParams, forceStaticRender })=>{
1553
+ const context = {
1554
+ query,
1555
+ params,
1556
+ page: normalizedSrcPage,
1557
+ sharedContext: {
1558
+ buildId,
1559
+ deploymentId,
1560
+ clientAssetToken
1561
+ },
1562
+ serverComponentsHmrCache: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'serverComponentsHmrCache'),
1563
+ fallbackRouteParams,
1564
+ renderOpts: {
1565
+ App: ()=>null,
1566
+ Document: ()=>null,
1567
+ pageConfig: {},
1568
+ ComponentMod,
1569
+ Component: (0,next_dist_server_app_render_interop_default__WEBPACK_IMPORTED_MODULE_6__/* .interopDefault */ .T)(ComponentMod),
1570
+ params,
1571
+ routeModule,
1572
+ page: srcPage,
1573
+ postponed,
1574
+ shouldWaitOnAllReady,
1575
+ serveStreamingMetadata,
1576
+ supportsDynamicResponse: typeof postponed === 'string' || supportsDynamicResponse,
1577
+ buildManifest,
1578
+ nextFontManifest,
1579
+ reactLoadableManifest,
1580
+ subresourceIntegrityManifest,
1581
+ setCacheStatus: routerServerContext == null ? void 0 : routerServerContext.setCacheStatus,
1582
+ setIsrStatus: routerServerContext == null ? void 0 : routerServerContext.setIsrStatus,
1583
+ setReactDebugChannel: routerServerContext == null ? void 0 : routerServerContext.setReactDebugChannel,
1584
+ sendErrorsToBrowser: routerServerContext == null ? void 0 : routerServerContext.sendErrorsToBrowser,
1585
+ dir: true ? (__webpack_require__(33873).join)(/* turbopackIgnore: true */ process.cwd(), routeModule.relativeProjectDir) : 0,
1586
+ isDraftMode,
1587
+ botType,
1588
+ isOnDemandRevalidate,
1589
+ isPossibleServerAction,
1590
+ assetPrefix: nextConfig.assetPrefix,
1591
+ nextConfigOutput: nextConfig.output,
1592
+ crossOrigin: nextConfig.crossOrigin,
1593
+ trailingSlash: nextConfig.trailingSlash,
1594
+ images: nextConfig.images,
1595
+ previewProps: prerenderManifest.preview,
1596
+ enableTainting: nextConfig.experimental.taint,
1597
+ htmlLimitedBots: nextConfig.htmlLimitedBots,
1598
+ reactMaxHeadersLength: nextConfig.reactMaxHeadersLength,
1599
+ multiZoneDraftMode,
1600
+ incrementalCache,
1601
+ cacheLifeProfiles: nextConfig.cacheLife,
1602
+ basePath: nextConfig.basePath,
1603
+ serverActions: nextConfig.experimental.serverActions,
1604
+ logServerFunctions: typeof nextConfig.logging === 'object' && Boolean(nextConfig.logging.serverFunctions),
1605
+ ...isDebugStaticShell || isDebugDynamicAccesses || isDebugFallbackShell ? {
1606
+ isBuildTimePrerendering: true,
1607
+ supportsDynamicResponse: false,
1608
+ isStaticGeneration: true,
1609
+ isDebugDynamicAccesses: isDebugDynamicAccesses
1610
+ } : {},
1611
+ cacheComponents: Boolean(nextConfig.cacheComponents),
1612
+ experimental: {
1613
+ isRoutePPREnabled,
1614
+ expireTime: nextConfig.expireTime,
1615
+ staleTimes: nextConfig.experimental.staleTimes,
1616
+ dynamicOnHover: Boolean(nextConfig.experimental.dynamicOnHover),
1617
+ optimisticRouting: Boolean(nextConfig.experimental.optimisticRouting),
1618
+ inlineCss: Boolean(nextConfig.experimental.inlineCss),
1619
+ prefetchInlining: nextConfig.experimental.prefetchInlining ?? false,
1620
+ authInterrupts: Boolean(nextConfig.experimental.authInterrupts),
1621
+ cachedNavigations: Boolean(nextConfig.experimental.cachedNavigations),
1622
+ clientTraceMetadata: nextConfig.experimental.clientTraceMetadata || [],
1623
+ clientParamParsingOrigins: nextConfig.experimental.clientParamParsingOrigins,
1624
+ maxPostponedStateSizeBytes: (0,next_dist_shared_lib_size_limit__WEBPACK_IMPORTED_MODULE_25__.parseMaxPostponedStateSize)(nextConfig.experimental.maxPostponedStateSize)
1625
+ },
1626
+ waitUntil: ctx.waitUntil,
1627
+ onClose: (cb)=>{
1628
+ res.on('close', cb);
1629
+ },
1630
+ onAfterTaskError: ()=>{},
1631
+ onInstrumentationRequestError: (error, _request, errorContext, silenceLog)=>routeModule.onRequestError(req, error, errorContext, silenceLog, routerServerContext),
1632
+ err: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'invokeError')
1616
1633
  }
1634
+ };
1635
+ // When we're revalidating in the background, we should not allow dynamic
1636
+ // responses.
1637
+ if (forceStaticRender) {
1638
+ context.renderOpts.supportsDynamicResponse = false;
1617
1639
  }
1618
- // Add the cache tags header to the response if it exists and we're in
1619
- // minimal mode while rendering a static page.
1620
- const tags = (_cachedData_headers = cachedData.headers) == null ? void 0 : _cachedData_headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__.NEXT_CACHE_TAGS_HEADER];
1621
- if (isMinimalMode && isSSG && tags && typeof tags === 'string') {
1622
- res.setHeader(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__.NEXT_CACHE_TAGS_HEADER, tags);
1623
- }
1624
- // If the request is a data request, then we shouldn't set the status code
1625
- // from the response because it should always be 200. This should be gated
1626
- // behind the experimental PPR flag.
1627
- if (cachedData.status && (!isRSCRequest || !isRoutePPREnabled)) {
1628
- res.statusCode = cachedData.status;
1629
- }
1630
- // Redirect information is encoded in RSC payload, so we don't need to use redirect status codes
1631
- if (!isMinimalMode && cachedData.status && next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_28__.RedirectStatusCode[cachedData.status] && isRSCRequest) {
1632
- res.statusCode = 200;
1633
- }
1634
- // Mark that the request did postpone.
1635
- if (didPostpone && !isDynamicRSCRequest) {
1636
- res.setHeader(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.NEXT_DID_POSTPONE_HEADER, '1');
1637
- }
1638
- // we don't go through this block when preview mode is true
1639
- // as preview mode is a dynamic request (bypasses cache) and doesn't
1640
- // generate both HTML and payloads in the same request so continue to just
1641
- // return the generated payload
1642
- if (isRSCRequest && !isDraftMode) {
1643
- // If this is a dynamic RSC request, then stream the response.
1644
- if (typeof cachedData.rscData === 'undefined') {
1645
- // If the response is not an RSC response, then we can't serve it.
1646
- if (cachedData.html.contentType !== next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.RSC_CONTENT_TYPE_HEADER) {
1647
- if (nextConfig.cacheComponents) {
1648
- res.statusCode = 404;
1649
- return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({
1650
- req,
1651
- res,
1652
- generateEtags: nextConfig.generateEtags,
1653
- poweredByHeader: nextConfig.poweredByHeader,
1654
- result: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_19__["default"].EMPTY,
1655
- cacheControl: cacheEntry.cacheControl
1656
- });
1657
- } else {
1658
- // Otherwise this case is not expected.
1659
- throw Object.defineProperty(new next_dist_shared_lib_invariant_error__WEBPACK_IMPORTED_MODULE_29__.InvariantError(`Expected RSC response, got ${cachedData.html.contentType}`), "__NEXT_ERROR_CODE", {
1660
- value: "E789",
1661
- enumerable: false,
1662
- configurable: true
1663
- });
1664
- }
1665
- }
1666
- return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({
1667
- req,
1668
- res,
1669
- generateEtags: nextConfig.generateEtags,
1670
- poweredByHeader: nextConfig.poweredByHeader,
1671
- result: cachedData.html,
1672
- cacheControl: cacheEntry.cacheControl
1673
- });
1674
- }
1675
- // As this isn't a prefetch request, we should serve the static flight
1676
- // data.
1677
- return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({
1678
- req,
1679
- res,
1680
- generateEtags: nextConfig.generateEtags,
1681
- poweredByHeader: nextConfig.poweredByHeader,
1682
- result: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_19__["default"].fromStatic(cachedData.rscData, next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.RSC_CONTENT_TYPE_HEADER),
1683
- cacheControl: cacheEntry.cacheControl
1684
- });
1640
+ const result = await invokeRouteModule(span, context);
1641
+ const { metadata } = result;
1642
+ const { cacheControl, headers = {}, // Add any fetch tags that were on the page to the response headers.
1643
+ fetchTags: cacheTags, fetchMetrics } = metadata;
1644
+ if (cacheTags) {
1645
+ headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__.NEXT_CACHE_TAGS_HEADER] = cacheTags;
1685
1646
  }
1686
- // This is a request for HTML data.
1687
- const body = cachedData.html;
1688
- // Instant Navigation Testing API: serve the static shell with an
1689
- // injected script that sets self.__next_instant_test and kicks off a
1690
- // static RSC fetch for hydration. The transform stream also appends
1691
- // closing </body></html> tags so the browser can parse the full document.
1692
- // In dev mode, also inject self.__next_r so the HMR WebSocket and
1693
- // debug channel can initialize.
1694
- if (isInstantNavigationTest && isDebugStaticShell) {
1695
- const instantTestRequestId = routeModule.isDev === true ? crypto.randomUUID() : null;
1696
- body.pipeThrough((0,next_dist_server_stream_utils_node_web_streams_helper__WEBPACK_IMPORTED_MODULE_22__.createInstantTestScriptInsertionTransformStream)(instantTestRequestId));
1697
- return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({
1698
- req,
1699
- res,
1700
- generateEtags: nextConfig.generateEtags,
1701
- poweredByHeader: nextConfig.poweredByHeader,
1702
- result: body,
1703
- cacheControl: {
1704
- revalidate: 0,
1705
- expire: undefined
1706
- }
1647
+ // Pull any fetch metrics from the render onto the request.
1648
+ ;
1649
+ req.fetchMetrics = fetchMetrics;
1650
+ // we don't throw static to dynamic errors in dev as isSSG
1651
+ // is a best guess in dev since we don't have the prerender pass
1652
+ // to know whether the path is actually static or not
1653
+ if (isSSG && (cacheControl == null ? void 0 : cacheControl.revalidate) === 0 && !routeModule.isDev && !isRoutePPREnabled) {
1654
+ const staticBailoutInfo = metadata.staticBailoutInfo;
1655
+ const err = Object.defineProperty(new Error(`Page changed from static to dynamic at runtime ${resolvedPathname}${(staticBailoutInfo == null ? void 0 : staticBailoutInfo.description) ? `, reason: ${staticBailoutInfo.description}` : ``}` + `\nsee more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`), "__NEXT_ERROR_CODE", {
1656
+ value: "E132",
1657
+ enumerable: false,
1658
+ configurable: true
1707
1659
  });
1660
+ if (staticBailoutInfo == null ? void 0 : staticBailoutInfo.stack) {
1661
+ const stack = staticBailoutInfo.stack;
1662
+ err.stack = err.message + stack.substring(stack.indexOf('\n'));
1663
+ }
1664
+ throw err;
1708
1665
  }
1709
- // If there's no postponed state, we should just serve the HTML. This
1710
- // should also be the case for a resume request because it's completed
1711
- // as a server render (rather than a static render).
1712
- if (!didPostpone || isMinimalMode || isRSCRequest) {
1713
- // If we're in test mode, we should add a sentinel chunk to the response
1714
- // that's between the static and dynamic parts so we can compare the
1715
- // chunks and add assertions.
1716
- if (false) {}
1717
- return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({
1718
- req,
1719
- res,
1720
- generateEtags: nextConfig.generateEtags,
1721
- poweredByHeader: nextConfig.poweredByHeader,
1722
- result: body,
1723
- cacheControl: cacheEntry.cacheControl
1724
- });
1666
+ return {
1667
+ value: {
1668
+ kind: next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_17__.CachedRouteKind.APP_PAGE,
1669
+ html: result,
1670
+ headers,
1671
+ rscData: metadata.flightData,
1672
+ postponed: metadata.postponed,
1673
+ status: metadata.statusCode,
1674
+ segmentData: metadata.segmentData
1675
+ },
1676
+ cacheControl
1677
+ };
1678
+ };
1679
+ const responseGenerator = async ({ hasResolved, previousCacheEntry: previousIncrementalCacheEntry, isRevalidating, span, forceStaticRender = false })=>{
1680
+ const isProduction = routeModule.isDev === false;
1681
+ const didRespond = hasResolved || res.writableEnded;
1682
+ // skip on-demand revalidate if cache is not present and
1683
+ // revalidate-if-generated is set
1684
+ if (isOnDemandRevalidate && revalidateOnlyGenerated && !previousIncrementalCacheEntry && !isMinimalMode) {
1685
+ if (routerServerContext == null ? void 0 : routerServerContext.render404) {
1686
+ await routerServerContext.render404(req, res);
1687
+ } else {
1688
+ res.statusCode = 404;
1689
+ res.end('This page could not be found');
1690
+ }
1691
+ return null;
1725
1692
  }
1726
- // If we're debugging the static shell or the dynamic API accesses, we
1727
- // should just serve the HTML without resuming the render. The returned
1728
- // HTML will be the static shell so all the Dynamic API's will be used
1729
- // during static generation.
1730
- if (isDebugStaticShell || isDebugDynamicAccesses) {
1731
- // Since we're not resuming the render, we need to at least add the
1732
- // closing body and html tags to create valid HTML.
1733
- body.push(new ReadableStream({
1734
- start (controller) {
1735
- controller.enqueue(next_dist_server_stream_utils_encoded_tags__WEBPACK_IMPORTED_MODULE_21__.ENCODED_TAGS.CLOSED.BODY_AND_HTML);
1736
- controller.close();
1737
- }
1738
- }));
1739
- return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({
1740
- req,
1741
- res,
1742
- generateEtags: nextConfig.generateEtags,
1743
- poweredByHeader: nextConfig.poweredByHeader,
1744
- result: body,
1745
- cacheControl: {
1746
- revalidate: 0,
1747
- expire: undefined
1748
- }
1749
- });
1693
+ let fallbackMode;
1694
+ if (prerenderInfo) {
1695
+ fallbackMode = (0,next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18__.parseFallbackField)(prerenderInfo.fallback);
1750
1696
  }
1751
- // If we're in test mode, we should add a sentinel chunk to the response
1752
- // that's between the static and dynamic parts so we can compare the
1753
- // chunks and add assertions.
1754
- if (false) {}
1755
- // This request has postponed, so let's create a new transformer that the
1756
- // dynamic data can pipe to that will attach the dynamic data to the end
1757
- // of the response.
1758
- const transformer = new TransformStream();
1759
- body.push(transformer.readable);
1760
- // Perform the render again, but this time, provide the postponed state.
1761
- // We don't await because we want the result to start streaming now, and
1762
- // we've already chained the transformer's readable to the render result.
1763
- doRender({
1764
- span,
1765
- postponed: cachedData.postponed,
1766
- // This is a resume render, not a fallback render, so we don't need to
1767
- // set this.
1768
- fallbackRouteParams: null,
1769
- forceStaticRender: false
1770
- }).then(async (result)=>{
1771
- var _result_value;
1772
- if (!result) {
1773
- throw Object.defineProperty(new Error('Invariant: expected a result to be returned'), "__NEXT_ERROR_CODE", {
1774
- value: "E463",
1775
- enumerable: false,
1776
- configurable: true
1777
- });
1778
- }
1779
- if (((_result_value = result.value) == null ? void 0 : _result_value.kind) !== next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_17__.CachedRouteKind.APP_PAGE) {
1780
- var _result_value1;
1781
- throw Object.defineProperty(new Error(`Invariant: expected a page response, got ${(_result_value1 = result.value) == null ? void 0 : _result_value1.kind}`), "__NEXT_ERROR_CODE", {
1782
- value: "E305",
1783
- enumerable: false,
1784
- configurable: true
1785
- });
1786
- }
1787
- // Pipe the resume result to the transformer.
1788
- await result.value.html.pipeTo(transformer.writable);
1789
- }).catch((err)=>{
1790
- // An error occurred during piping or preparing the render, abort
1791
- // the transformers writer so we can terminate the stream.
1792
- transformer.writable.abort(err).catch((e)=>{
1793
- console.error("couldn't abort transformer", e);
1794
- });
1795
- });
1796
- return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({
1797
- req,
1798
- res,
1799
- generateEtags: nextConfig.generateEtags,
1800
- poweredByHeader: nextConfig.poweredByHeader,
1801
- result: body,
1802
- // We don't want to cache the response if it has postponed data because
1803
- // the response being sent to the client it's dynamic parts are streamed
1804
- // to the client on the same request.
1805
- cacheControl: {
1806
- revalidate: 0,
1807
- expire: undefined
1697
+ if (nextConfig.experimental.partialFallbacks === true && (prerenderInfo == null ? void 0 : prerenderInfo.fallback) === null && !hasUnresolvedRootFallbackParams && remainingPrerenderableParams.length > 0) {
1698
+ // Generic source shells without unresolved root params don't have a
1699
+ // concrete fallback file of their own, so they're marked as blocking.
1700
+ // When we can complete the shell into a more specific
1701
+ // prerendered shell for this request, treat it like a prerender
1702
+ // fallback so we can serve that shell instead of blocking on the full
1703
+ // route. Root-param shells stay blocking, since unknown root branches
1704
+ // should not inherit a shell from another generated branch.
1705
+ fallbackMode = next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18__.FallbackMode.PRERENDER;
1706
+ }
1707
+ // When serving a HTML bot request, we want to serve a blocking render and
1708
+ // not the prerendered page. This ensures that the correct content is served
1709
+ // to the bot in the head.
1710
+ if (fallbackMode === next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18__.FallbackMode.PRERENDER && (0,next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_16__.isBot)(userAgent)) {
1711
+ if (!isRoutePPREnabled || isHtmlBot) {
1712
+ fallbackMode = next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18__.FallbackMode.BLOCKING_STATIC_RENDER;
1808
1713
  }
1809
- });
1810
- };
1811
- // TODO: activeSpan code path is for when wrapped by
1812
- // next-server can be removed when this is no longer used
1813
- if (isWrappedByNextServer && activeSpan) {
1814
- await handleResponse(activeSpan);
1815
- } else {
1816
- parentSpan = tracer.getActiveScopeSpan();
1817
- return await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__.BaseServerSpan.handleRequest, {
1818
- spanName: `${method} ${srcPage}`,
1819
- kind: next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__.SpanKind.SERVER,
1820
- attributes: {
1821
- 'http.method': method,
1822
- 'http.target': req.url
1714
+ }
1715
+ if ((previousIncrementalCacheEntry == null ? void 0 : previousIncrementalCacheEntry.isStale) === -1) {
1716
+ isOnDemandRevalidate = true;
1717
+ }
1718
+ // TODO: adapt for PPR
1719
+ // only allow on-demand revalidate for fallback: true/blocking
1720
+ // or for prerendered fallback: false paths
1721
+ if (isOnDemandRevalidate && (fallbackMode !== next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18__.FallbackMode.NOT_FOUND || previousIncrementalCacheEntry)) {
1722
+ fallbackMode = next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18__.FallbackMode.BLOCKING_STATIC_RENDER;
1723
+ }
1724
+ if (!isMinimalMode && fallbackMode !== next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18__.FallbackMode.BLOCKING_STATIC_RENDER && staticPathKey && !didRespond && !isDraftMode && pageIsDynamic && (isProduction || !isPrerendered)) {
1725
+ // if the page has dynamicParams: false and this pathname wasn't
1726
+ // prerendered trigger the no fallback handling
1727
+ if (// In development, fall through to render to handle missing
1728
+ // getStaticPaths.
1729
+ (isProduction || prerenderInfo) && // When fallback isn't present, abort this render so we 404
1730
+ fallbackMode === next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_18__.FallbackMode.NOT_FOUND) {
1731
+ if (nextConfig.adapterPath) {
1732
+ return await render404();
1823
1733
  }
1824
- }, handleResponse), undefined, !isWrappedByNextServer);
1825
- }
1826
- } catch (err) {
1827
- if (!(err instanceof next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__.NoFallbackError)) {
1828
- const silenceLog = false;
1829
- await routeModule.onRequestError(req, err, {
1830
- routerKind: 'App Router',
1831
- routePath: srcPage,
1832
- routeType: 'render',
1833
- revalidateReason: (0,next_dist_server_instrumentation_utils__WEBPACK_IMPORTED_MODULE_2__/* .getRevalidateReason */ .c)({
1834
- isStaticGeneration: isSSG,
1835
- isOnDemandRevalidate
1836
- })
1837
- }, silenceLog, routerServerContext);
1838
- }
1839
- // rethrow so that we can handle serving error page
1840
- throw err;
1841
- }
1842
- }
1843
- // TODO: omit this from production builds, only test builds should include it
1844
- /**
1845
- * Creates a readable stream that emits a PPR boundary sentinel.
1846
- *
1847
- * @returns A readable stream that emits a PPR boundary sentinel.
1848
- */ function createPPRBoundarySentinel() {
1849
- return new ReadableStream({
1850
- start (controller) {
1851
- controller.enqueue(new TextEncoder().encode('<!-- PPR_BOUNDARY_SENTINEL -->'));
1852
- controller.close();
1853
- }
1854
- });
1855
- }
1856
-
1857
- //# sourceMappingURL=app-page.js.map
1858
-
1859
-
1860
- /***/ }),
1861
-
1862
- /***/ 41025:
1863
- /***/ ((module) => {
1864
-
1865
- "use strict";
1866
- module.exports = require("next/dist/server/app-render/dynamic-access-async-storage.external.js");
1867
-
1868
- /***/ }),
1869
-
1870
- /***/ 43954:
1871
- /***/ ((module) => {
1872
-
1873
- "use strict";
1874
- module.exports = require("next/dist/shared/lib/router/utils/interception-routes");
1875
-
1876
- /***/ }),
1877
-
1878
- /***/ 47726:
1879
- /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
1880
-
1881
- Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 30796));
1882
-
1883
-
1884
- /***/ }),
1885
-
1886
- /***/ 50436:
1887
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1888
-
1889
- "use strict";
1890
-
1891
- // EXPORTS
1892
- __webpack_require__.d(__webpack_exports__, {
1893
- t: () => (/* binding */ ToolbarPanels)
1894
- });
1895
-
1896
- // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js
1897
- var react_jsx_runtime = __webpack_require__(92692);
1898
- // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js
1899
- var react = __webpack_require__(71277);
1900
- // EXTERNAL MODULE: ../../packages/react-ui/dist/index.mjs + 26 modules
1901
- var dist = __webpack_require__(69792);
1902
- ;// __barrel_optimize__?names=ResizeHandle,SettingsPanel,useEventSubscriptions,usePanelWidth!=!../../packages/react-ui/dist/index.mjs
1903
-
1904
-
1905
- // EXTERNAL MODULE: ../../node_modules/next-auth/react/index.js
1906
- var next_auth_react = __webpack_require__(62341);
1907
- // EXTERNAL MODULE: ../../node_modules/next/dist/api/image.js
1908
- var api_image = __webpack_require__(93523);
1909
- // EXTERNAL MODULE: ../../node_modules/next-intl/dist/esm/production/react-client/index.js
1910
- var react_client = __webpack_require__(56305);
1911
- ;// __barrel_optimize__?names=formatTime,sanitizeImageURL,useSessionExpiry!=!../../packages/react-ui/dist/index.mjs
1912
-
1913
-
1914
- // EXTERNAL MODULE: ./src/hooks/useAuth.ts + 1 modules
1915
- var useAuth = __webpack_require__(31039);
1916
- ;// ./src/components/UserPanel.tsx
1917
- /* __next_internal_client_entry_do_not_use__ UserPanel auto */
1918
-
1919
-
1920
-
1921
-
1922
-
1923
-
1924
- // Fallback avatar when image fails to load or is invalid
1925
- const FALLBACK_AVATAR = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiIGZpbGw9IiM2QjcyODAiLz4KPHBhdGggZD0iTTE2IDE2QzE4LjIwOTEgMTYgMjAgMTQuMjA5MSAyMCAxMkMyMCA5Ljc5MDg2IDE4LjIwOTEgOCAxNiA4QzEzLjc5MDkgOCAxMiA5Ljc5MDg2IDEyIDEyQzEyIDE0LjIwOTEgMTMuNzkwOSAxNiAxNiAxNloiIGZpbGw9IiNFNUU3RUIiLz4KPHBhdGggZD0iTTI0IDI1QzI0IDIxLjY4NjMgMjAuNDE4MyAxOSAxNiAxOUMxMS41ODE3IDE5IDggMjEuNjg2MyA4IDI1IiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cjwvc3ZnPg==';
1926
- function UserPanel() {
1927
- const t = (0,react_client/* useTranslations */.c)('UserPanel');
1928
- const { displayName, avatarUrl, userDomain, isAdmin, isModerator } = (0,useAuth/* useAuth */.As)();
1929
- const [imageError, setImageError] = (0,react.useState)(false);
1930
- const { timeRemaining } = (0,dist.useSessionExpiry)();
1931
- const sessionTimeFormatted = (0,dist.formatTime)(timeRemaining) ?? 'Unknown';
1932
- // Sanitize and validate the profile image URL
1933
- const profileImageUrl = (()=>{
1934
- if (!avatarUrl || imageError) {
1935
- return FALLBACK_AVATAR;
1936
- }
1937
- const sanitized = (0,dist.sanitizeImageURL)(avatarUrl);
1938
- if (!sanitized) {
1939
- console.warn('Invalid profile image URL detected, using fallback');
1940
- return FALLBACK_AVATAR;
1941
- }
1942
- return sanitized;
1943
- })();
1944
- const handleSignOut = async ()=>{
1945
- await (0,next_auth_react.signOut)({
1946
- callbackUrl: '/'
1947
- });
1948
- };
1949
- return /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
1950
- className: "semiont-user-panel",
1951
- children: [
1952
- /*#__PURE__*/ (0,react_jsx_runtime.jsx)("h3", {
1953
- className: "semiont-user-panel__title",
1954
- children: t('account')
1955
- }),
1956
- /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
1957
- className: "space-y-4",
1958
- children: [
1959
- /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
1960
- className: "flex items-center gap-3",
1961
- children: [
1962
- /*#__PURE__*/ (0,react_jsx_runtime.jsx)(api_image["default"], {
1963
- src: profileImageUrl,
1964
- alt: t('profileAlt', {
1965
- name: displayName || t('user')
1966
- }),
1967
- width: 48,
1968
- height: 48,
1969
- className: "w-12 h-12 rounded-full object-cover",
1970
- onError: ()=>setImageError(true),
1971
- unoptimized: profileImageUrl === FALLBACK_AVATAR,
1972
- sizes: "48px",
1973
- quality: 85
1974
- }),
1975
- /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
1976
- className: "flex-1 min-w-0",
1977
- children: [
1978
- /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
1979
- className: "semiont-panel-text",
1980
- children: displayName || t('user')
1981
- }),
1982
- userDomain && /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
1983
- className: "semiont-panel-text-secondary",
1984
- children: [
1985
- "@",
1986
- userDomain
1987
- ]
1988
- })
1989
- ]
1990
- })
1991
- ]
1992
- }),
1993
- /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
1994
- children: [
1995
- /*#__PURE__*/ (0,react_jsx_runtime.jsx)("label", {
1996
- className: "semiont-panel-label",
1997
- children: t('session')
1998
- }),
1999
- /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
2000
- className: "semiont-session-box",
2001
- children: /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
2002
- className: "semiont-panel-hint",
2003
- children: t('expiresIn', {
2004
- time: sessionTimeFormatted
2005
- })
2006
- })
2007
- })
2008
- ]
2009
- }),
2010
- (isAdmin || isModerator) && /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
2011
- children: [
2012
- /*#__PURE__*/ (0,react_jsx_runtime.jsx)("label", {
2013
- className: "semiont-panel-label",
2014
- children: t('privileges')
1734
+ throw new next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__.NoFallbackError();
1735
+ }
1736
+ // When cacheComponents is enabled, we can use the fallback
1737
+ // response if the request is not a dynamic RSC request because the
1738
+ // RSC data when this feature flag is enabled does not contain any
1739
+ // param references. Without this feature flag enabled, the RSC data
1740
+ // contains param references, and therefore we can't use the fallback.
1741
+ if (isRoutePPREnabled && (nextConfig.cacheComponents ? !isDynamicRSCRequest : !isRSCRequest)) {
1742
+ const cacheKey = isProduction && typeof (prerenderInfo == null ? void 0 : prerenderInfo.fallback) === 'string' ? prerenderInfo.fallback : normalizedSrcPage;
1743
+ const fallbackRouteParams = // In production or when debugging the static shell (e.g. instant
1744
+ // navigation testing), use the prerender manifest's fallback
1745
+ // route params which correctly identifies which params are
1746
+ // unknown. Note: in dev, this block is only entered for
1747
+ // non-prerendered URLs (guarded by the outer condition).
1748
+ (isProduction || isDebugStaticShell) && (prerenderInfo == null ? void 0 : prerenderInfo.fallbackRouteParams) ? (0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__.createOpaqueFallbackRouteParams)(prerenderInfo.fallbackRouteParams) : // fallback (simulating the worst-case shell).
1749
+ isDebugFallbackShell ? (0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__.getFallbackRouteParams)(normalizedSrcPage, routeModule) : null;
1750
+ // When rendering a debug static shell, override the fallback
1751
+ // params on the request so that the staged rendering correctly
1752
+ // defers params that are not statically known.
1753
+ if (isDebugStaticShell && fallbackRouteParams) {
1754
+ (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.addRequestMeta)(req, 'fallbackParams', fallbackRouteParams);
1755
+ }
1756
+ // We use the response cache here to handle the revalidation and
1757
+ // management of the fallback shell.
1758
+ const fallbackResponse = await routeModule.handleResponse({
1759
+ cacheKey,
1760
+ req,
1761
+ nextConfig,
1762
+ routeKind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE,
1763
+ isFallback: true,
1764
+ prerenderManifest,
1765
+ isRoutePPREnabled,
1766
+ responseGenerator: async ()=>doRender({
1767
+ span,
1768
+ // We pass `undefined` as rendering a fallback isn't resumed
1769
+ // here.
1770
+ postponed: undefined,
1771
+ // Always serve the shell that matched this request
1772
+ // immediately. If there are still prerenderable params left,
1773
+ // the background path below will complete the shell into a
1774
+ // more specific cache entry for later requests.
1775
+ fallbackRouteParams,
1776
+ forceStaticRender: true
2015
1777
  }),
2016
- /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
2017
- className: "space-y-1",
2018
- children: [
2019
- isAdmin && /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
2020
- className: "semiont-privilege-badge semiont-privilege-badge--admin",
2021
- children: /*#__PURE__*/ (0,react_jsx_runtime.jsx)("span", {
2022
- className: "semiont-privilege-text",
2023
- children: t('administrator')
2024
- })
2025
- }),
2026
- isModerator && /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
2027
- className: "semiont-privilege-badge semiont-privilege-badge--moderator",
2028
- children: /*#__PURE__*/ (0,react_jsx_runtime.jsx)("span", {
2029
- className: "semiont-privilege-text",
2030
- children: t('moderator')
2031
- })
2032
- })
2033
- ]
2034
- })
2035
- ]
1778
+ waitUntil: ctx.waitUntil,
1779
+ isMinimalMode
1780
+ });
1781
+ // If the fallback response was set to null, then we should return null.
1782
+ if (fallbackResponse === null) return null;
1783
+ // Otherwise, if we did get a fallback response, we should return it.
1784
+ if (fallbackResponse) {
1785
+ if (!isMinimalMode && isRoutePPREnabled && // Match the build-time contract: only fallback shells that can
1786
+ // still be completed with prerenderable params should upgrade.
1787
+ remainingPrerenderableParams.length > 0 && nextConfig.experimental.partialFallbacks === true && ssgCacheKey && incrementalCache && !isOnDemandRevalidate && !isDebugFallbackShell && // The testing API relies on deterministic shell behavior, so
1788
+ // don't upgrade fallback shells in the background when it's
1789
+ // exposed.
1790
+ !exposeTestingApi && // Instant Navigation Testing API requests intentionally keep
1791
+ // the route in shell mode; don't upgrade these in background.
1792
+ !isInstantNavigationTest && // Avoid background revalidate during prefetches; this can trigger
1793
+ // static prerender errors that surface as 500s for the prefetch
1794
+ // request itself.
1795
+ !isPrefetchRSCRequest) {
1796
+ (0,next_dist_lib_scheduler__WEBPACK_IMPORTED_MODULE_30__.scheduleOnNextTick)(async ()=>{
1797
+ const responseCache = routeModule.getResponseCache(req);
1798
+ try {
1799
+ // Only the params that were just specialized should be
1800
+ // removed from the fallback render. Any remaining fallback
1801
+ // params stay deferred so the revalidated result is a more
1802
+ // specific shell (e.g. `/prefix/c/[two]`), not a fully
1803
+ // concrete route (`/prefix/c/foo`).
1804
+ await responseCache.revalidate(ssgCacheKey, incrementalCache, isRoutePPREnabled, false, (c)=>{
1805
+ return doRender({
1806
+ span: c.span,
1807
+ postponed: undefined,
1808
+ fallbackRouteParams: remainingFallbackRouteParams.length > 0 ? (0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__.createOpaqueFallbackRouteParams)(remainingFallbackRouteParams) : null,
1809
+ forceStaticRender: true
1810
+ });
1811
+ }, // We don't have a prior entry for this param-specific shell.
1812
+ null, hasResolved, ctx.waitUntil);
1813
+ } catch (err) {
1814
+ console.error('Error revalidating the page in the background', err);
1815
+ }
1816
+ });
1817
+ }
1818
+ // Remove the cache control from the response to prevent it from being
1819
+ // used in the surrounding cache.
1820
+ delete fallbackResponse.cacheControl;
1821
+ return fallbackResponse;
1822
+ }
1823
+ }
1824
+ }
1825
+ // Only requests that aren't revalidating can be resumed. If we have the
1826
+ // minimal postponed data, then we should resume the render with it.
1827
+ let postponed = !isOnDemandRevalidate && !isRevalidating && minimalPostponed ? minimalPostponed : undefined;
1828
+ // If this is a dynamic RSC request or a server action request, we should
1829
+ // use the postponed data from the static render (if available). This
1830
+ // ensures that we can utilize the resume data cache (RDC) from the static
1831
+ // render to ensure that the data is consistent between the static and
1832
+ // dynamic renders (for navigations) or when re-rendering after a server
1833
+ // action.
1834
+ if (// Only enable RDC for Navigations if the feature is enabled.
1835
+ supportsRDCForNavigations && "nodejs" !== 'edge' && !isMinimalMode && incrementalCache && // Include both dynamic RSC requests (navigations) and server actions
1836
+ (isDynamicRSCRequest || isPossibleServerAction) && // We don't typically trigger an on-demand revalidation for dynamic RSC
1837
+ // requests, as we're typically revalidating the page in the background
1838
+ // instead. However, if the cache entry is stale, we should trigger a
1839
+ // background revalidation on dynamic RSC requests. This prevents us
1840
+ // from entering an infinite loop of revalidations.
1841
+ !forceStaticRender) {
1842
+ const incrementalCacheEntry = await incrementalCache.get(resolvedPathname, {
1843
+ kind: next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_17__.IncrementalCacheKind.APP_PAGE,
1844
+ isRoutePPREnabled: true,
1845
+ isFallback: false
1846
+ });
1847
+ // If the cache entry is found, we should use the postponed data from
1848
+ // the cache.
1849
+ if (incrementalCacheEntry && incrementalCacheEntry.value && incrementalCacheEntry.value.kind === next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_17__.CachedRouteKind.APP_PAGE) {
1850
+ // CRITICAL: we're assigning the postponed data from the cache entry
1851
+ // here as we're using the RDC to resume the render.
1852
+ postponed = incrementalCacheEntry.value.postponed;
1853
+ // If the cache entry is stale, we should trigger a background
1854
+ // revalidation so that subsequent requests will get a fresh response.
1855
+ if (incrementalCacheEntry && // We want to trigger this flow if the cache entry is stale and if
1856
+ // the requested revalidation flow is either foreground or
1857
+ // background.
1858
+ (incrementalCacheEntry.isStale === -1 || incrementalCacheEntry.isStale === true)) {
1859
+ // We want to schedule this on the next tick to ensure that the
1860
+ // render is not blocked on it.
1861
+ (0,next_dist_lib_scheduler__WEBPACK_IMPORTED_MODULE_30__.scheduleOnNextTick)(async ()=>{
1862
+ const responseCache = routeModule.getResponseCache(req);
1863
+ try {
1864
+ await responseCache.revalidate(resolvedPathname, incrementalCache, isRoutePPREnabled, false, (c)=>responseGenerator({
1865
+ ...c,
1866
+ // CRITICAL: we need to set this to true as we're
1867
+ // revalidating in the background and typically this dynamic
1868
+ // RSC request is not treated as static.
1869
+ forceStaticRender: true
1870
+ }), // CRITICAL: we need to pass null here because passing the
1871
+ // previous cache entry here (which is stale) will switch on
1872
+ // isOnDemandRevalidate and break the prerendering.
1873
+ null, hasResolved, ctx.waitUntil);
1874
+ } catch (err) {
1875
+ console.error('Error revalidating the page in the background', err);
1876
+ }
1877
+ });
1878
+ }
1879
+ }
1880
+ }
1881
+ // When we're in minimal mode, if we're trying to debug the static shell,
1882
+ // we should just return nothing instead of resuming the dynamic render.
1883
+ if ((isDebugStaticShell || isDebugDynamicAccesses) && typeof postponed !== 'undefined') {
1884
+ return {
1885
+ cacheControl: {
1886
+ revalidate: 1,
1887
+ expire: undefined
1888
+ },
1889
+ value: {
1890
+ kind: next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_17__.CachedRouteKind.PAGES,
1891
+ html: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_19__["default"].EMPTY,
1892
+ pageData: {},
1893
+ headers: undefined,
1894
+ status: undefined
1895
+ }
1896
+ };
1897
+ }
1898
+ const fallbackRouteParams = // In production or when debugging the static shell for a
1899
+ // non-prerendered URL, use the prerender manifest's fallback route
1900
+ // params which correctly identifies which params are unknown.
1901
+ (isProduction && (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'renderFallbackShell') || isDebugStaticShell && !isPrerendered) && (prerenderInfo == null ? void 0 : prerenderInfo.fallbackRouteParams) ? (0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__.createOpaqueFallbackRouteParams)(prerenderInfo.fallbackRouteParams) : isDebugFallbackShell ? (0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__.getFallbackRouteParams)(normalizedSrcPage, routeModule) : null;
1902
+ // For staged dynamic rendering (Cached Navigations) and debug static
1903
+ // shell rendering, pass the fallback params via request meta so the
1904
+ // RequestStore knows which params to defer. We don't pass them as
1905
+ // fallbackRouteParams because that would replace actual param values
1906
+ // with opaque placeholders during segment resolution.
1907
+ if ((isProduction || isDebugStaticShell) && nextConfig.cacheComponents && !isPrerendered && (prerenderInfo == null ? void 0 : prerenderInfo.fallbackRouteParams)) {
1908
+ const fallbackParams = (0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__.createOpaqueFallbackRouteParams)(prerenderInfo.fallbackRouteParams);
1909
+ if (fallbackParams) {
1910
+ (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.addRequestMeta)(req, 'fallbackParams', fallbackParams);
1911
+ }
1912
+ }
1913
+ // Perform the render.
1914
+ return doRender({
1915
+ span,
1916
+ postponed,
1917
+ fallbackRouteParams,
1918
+ forceStaticRender
1919
+ });
1920
+ };
1921
+ const handleResponse = async (span)=>{
1922
+ var _cacheEntry_value, _cachedData_headers;
1923
+ const cacheEntry = await routeModule.handleResponse({
1924
+ cacheKey: ssgCacheKey,
1925
+ responseGenerator: (c)=>responseGenerator({
1926
+ span,
1927
+ ...c
2036
1928
  }),
2037
- /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
2038
- className: "semiont-panel-divider",
2039
- children: /*#__PURE__*/ (0,react_jsx_runtime.jsx)("button", {
2040
- onClick: handleSignOut,
2041
- className: "semiont-signout-button",
2042
- children: t('signOut')
2043
- })
2044
- })
2045
- ]
2046
- })
2047
- ]
2048
- });
2049
- }
2050
-
2051
- // EXTERNAL MODULE: ../../node_modules/use-intl/dist/esm/production/react.js + 18 modules
2052
- var production_react = __webpack_require__(23211);
2053
- // EXTERNAL MODULE: ./src/i18n/routing.ts
2054
- var routing = __webpack_require__(99704);
2055
- ;// __barrel_optimize__?names=COMMON_PANELS!=!../../packages/react-ui/dist/index.mjs
2056
-
2057
-
2058
- ;// ./src/components/toolbar/ToolbarPanels.tsx
2059
- /* __next_internal_client_entry_do_not_use__ ToolbarPanels auto */
2060
-
2061
-
2062
-
2063
-
2064
-
2065
-
2066
- /**
2067
- * Renders the toolbar panel container with common panels (user, settings)
2068
- * and any context-specific panels passed as children.
2069
- *
2070
- * Settings changes are handled via GlobalSettingsEventBus - no callbacks needed.
2071
- *
2072
- * @example
2073
- * // Simple context (compose, discover, moderate, admin pages)
2074
- * <ToolbarPanels
2075
- * activePanel={activePanel}
2076
- * theme={theme}
2077
- * showLineNumbers={showLineNumbers}
2078
- * />
2079
- *
2080
- * @example
2081
- * // Document context with custom panels
2082
- * <ToolbarPanels
2083
- * activePanel={activePanel}
2084
- * theme={theme}
2085
- * showLineNumbers={showLineNumbers}
2086
- * >
2087
- * {activePanel === 'annotations' && <UnifiedAnnotationsPanel ... />}
2088
- * {activePanel === 'history' && <AnnotationHistory ... />}
2089
- * {activePanel === 'info' && <ResourceInfoPanel ... />}
2090
- * {activePanel === 'collaboration' && <CollaborationPanel ... />}
2091
- * {activePanel === 'jsonld' && <JsonLdPanel ... />}
2092
- * </ToolbarPanels>
2093
- */ function ToolbarPanels({ activePanel, theme, showLineNumbers, hoverDelayMs, children }) {
2094
- const locale = (0,production_react/* useLocale */.Ym)();
2095
- const router = (0,routing/* useRouter */.rd)();
2096
- const pathname = (0,routing/* usePathname */.a8)();
2097
- const [isPending, startTransition] = (0,react.useTransition)();
2098
- // Panel width management with localStorage persistence
2099
- const { width, setWidth, minWidth, maxWidth } = (0,dist.usePanelWidth)();
2100
- // Handle locale change events
2101
- const handleLocaleChanged = (0,react.useCallback)(({ locale: newLocale })=>{
2102
- if (!pathname) return;
2103
- startTransition(()=>{
2104
- // The router from @/i18n/routing is locale-aware and will handle the locale prefix
2105
- router.replace(pathname, {
2106
- locale: newLocale
1929
+ routeKind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE,
1930
+ isOnDemandRevalidate,
1931
+ isRoutePPREnabled,
1932
+ req,
1933
+ nextConfig,
1934
+ prerenderManifest,
1935
+ waitUntil: ctx.waitUntil,
1936
+ isMinimalMode
2107
1937
  });
2108
- });
2109
- }, [
2110
- pathname,
2111
- router,
2112
- startTransition
2113
- ]);
2114
- // Subscribe to locale change events
2115
- (0,dist.useEventSubscriptions)({
2116
- 'settings:locale-changed': handleLocaleChanged
2117
- });
2118
- // Don't render container if no panel is active
2119
- if (!activePanel) {
2120
- return null;
2121
- }
2122
- // In simple context (no children), only user and settings panels are valid.
2123
- // If a resource-specific panel is still active from a previous route, hide the container.
2124
- if (!children && !dist.COMMON_PANELS.includes(activePanel)) {
2125
- return null;
2126
- }
2127
- return /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
2128
- className: "semiont-toolbar-panels",
2129
- style: {
2130
- width: `${width}px`,
2131
- position: 'relative'
2132
- },
2133
- children: [
2134
- /*#__PURE__*/ (0,react_jsx_runtime.jsx)(dist.ResizeHandle, {
2135
- onResize: setWidth,
2136
- minWidth: minWidth,
2137
- maxWidth: maxWidth,
2138
- position: "left",
2139
- ariaLabel: "Resize right panel"
2140
- }),
2141
- /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
2142
- className: "semiont-toolbar-panels__content",
2143
- children: [
2144
- children,
2145
- activePanel === 'user' && /*#__PURE__*/ (0,react_jsx_runtime.jsx)(UserPanel, {}),
2146
- activePanel === 'settings' && /*#__PURE__*/ (0,react_jsx_runtime.jsx)(dist.SettingsPanel, {
2147
- showLineNumbers: showLineNumbers,
2148
- theme: theme,
2149
- hoverDelayMs: hoverDelayMs,
2150
- locale: locale,
2151
- isPendingLocaleChange: isPending
2152
- })
2153
- ]
2154
- })
2155
- ]
2156
- });
2157
- }
2158
-
2159
-
2160
- /***/ }),
2161
-
2162
- /***/ 55511:
2163
- /***/ ((module) => {
2164
-
2165
- "use strict";
2166
- module.exports = require("crypto");
2167
-
2168
- /***/ }),
2169
-
2170
- /***/ 56677:
2171
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2172
-
2173
- "use strict";
2174
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2175
- /* harmony export */ C$z: () => (/* reexport safe */ _home_runner_work_semiont_semiont_packages_react_ui_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__.useEventSubscriptions),
2176
- /* harmony export */ DPo: () => (/* reexport safe */ _home_runner_work_semiont_semiont_packages_react_ui_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__.useTheme),
2177
- /* harmony export */ cvF: () => (/* reexport safe */ _home_runner_work_semiont_semiont_packages_react_ui_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__.useLineNumbers),
2178
- /* harmony export */ ySJ: () => (/* reexport safe */ _home_runner_work_semiont_semiont_packages_react_ui_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__.usePanelBrowse)
2179
- /* harmony export */ });
2180
- /* harmony import */ var _home_runner_work_semiont_semiont_packages_react_ui_dist_index_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(69792);
2181
-
2182
-
2183
-
2184
- /***/ }),
2185
-
2186
- /***/ 63033:
2187
- /***/ ((module) => {
2188
-
2189
- "use strict";
2190
- module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js");
2191
-
2192
- /***/ }),
2193
-
2194
- /***/ 70722:
2195
- /***/ ((module) => {
2196
-
2197
- "use strict";
2198
- module.exports = require("next/dist/shared/lib/invariant-error");
2199
-
2200
- /***/ }),
2201
-
2202
- /***/ 71977:
2203
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2204
-
2205
- "use strict";
2206
- __webpack_require__.r(__webpack_exports__);
2207
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2208
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2209
- /* harmony export */ });
2210
- /* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(30274);
2211
- /* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__);
2212
- // This file is generated by the Webpack next-flight-loader.
2213
-
2214
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__.registerClientReference)(
2215
- function() { throw new Error("Attempted to call the default export of \"/home/runner/work/semiont/semiont/apps/frontend/src/app/[locale]/admin/devops/page.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component."); },
2216
- "/home/runner/work/semiont/semiont/apps/frontend/src/app/[locale]/admin/devops/page.tsx",
2217
- "default",
2218
- ));
2219
-
2220
-
2221
- /***/ }),
2222
-
2223
- /***/ 77068:
2224
- /***/ ((module) => {
2225
-
2226
- "use strict";
2227
- module.exports = require("next/dist/shared/lib/size-limit");
2228
-
2229
- /***/ }),
2230
-
2231
- /***/ 79551:
2232
- /***/ ((module) => {
2233
-
2234
- "use strict";
2235
- module.exports = require("url");
2236
-
2237
- /***/ }),
2238
-
2239
- /***/ 79591:
2240
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
2241
-
2242
- "use strict";
2243
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2244
- /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
2245
- /* harmony export */ });
2246
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(71277);
2247
-
2248
- function CommandLineIcon({ title, titleId, ...props }, svgRef) {
2249
- return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement("svg", Object.assign({
2250
- xmlns: "http://www.w3.org/2000/svg",
2251
- fill: "none",
2252
- viewBox: "0 0 24 24",
2253
- strokeWidth: 1.5,
2254
- stroke: "currentColor",
2255
- "aria-hidden": "true",
2256
- "data-slot": "icon",
2257
- ref: svgRef,
2258
- "aria-labelledby": titleId
2259
- }, props), title ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement("title", {
2260
- id: titleId
2261
- }, title) : null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", {
2262
- strokeLinecap: "round",
2263
- strokeLinejoin: "round",
2264
- d: "m6.75 7.5 3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 18V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v12a2.25 2.25 0 0 0 2.25 2.25Z"
2265
- }));
2266
- }
2267
- const ForwardRef = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(CommandLineIcon);
2268
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ForwardRef);
2269
-
2270
-
2271
- /***/ }),
2272
-
2273
- /***/ 86439:
2274
- /***/ ((module) => {
2275
-
2276
- "use strict";
2277
- module.exports = require("next/dist/shared/lib/no-fallback-error.external");
2278
-
2279
- /***/ }),
2280
-
2281
- /***/ 87046:
2282
- /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
2283
-
2284
- Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 20706));
2285
-
2286
-
2287
- /***/ }),
2288
-
2289
- /***/ 94996:
2290
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2291
-
2292
- "use strict";
2293
- // ESM COMPAT FLAG
2294
- __webpack_require__.r(__webpack_exports__);
2295
-
2296
- // EXPORTS
2297
- __webpack_require__.d(__webpack_exports__, {
2298
- "default": () => (/* binding */ DevOpsPage)
2299
- });
2300
-
2301
- // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js
2302
- var react_jsx_runtime = __webpack_require__(92692);
2303
- // EXTERNAL MODULE: ../../node_modules/next-intl/dist/esm/production/react-client/index.js
2304
- var react_client = __webpack_require__(56305);
2305
- // EXTERNAL MODULE: ../../node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js
2306
- var react = __webpack_require__(71277);
2307
- ;// ../../node_modules/@heroicons/react/24/outline/esm/ChartBarIcon.js
2308
-
2309
- function ChartBarIcon({ title, titleId, ...props }, svgRef) {
2310
- return /*#__PURE__*/ react.createElement("svg", Object.assign({
2311
- xmlns: "http://www.w3.org/2000/svg",
2312
- fill: "none",
2313
- viewBox: "0 0 24 24",
2314
- strokeWidth: 1.5,
2315
- stroke: "currentColor",
2316
- "aria-hidden": "true",
2317
- "data-slot": "icon",
2318
- ref: svgRef,
2319
- "aria-labelledby": titleId
2320
- }, props), title ? /*#__PURE__*/ react.createElement("title", {
2321
- id: titleId
2322
- }, title) : null, /*#__PURE__*/ react.createElement("path", {
2323
- strokeLinecap: "round",
2324
- strokeLinejoin: "round",
2325
- d: "M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"
2326
- }));
2327
- }
2328
- const ForwardRef = /*#__PURE__*/ react.forwardRef(ChartBarIcon);
2329
- /* harmony default export */ const esm_ChartBarIcon = (ForwardRef);
2330
-
2331
- ;// ../../node_modules/@heroicons/react/24/outline/esm/ServerIcon.js
2332
-
2333
- function ServerIcon({ title, titleId, ...props }, svgRef) {
2334
- return /*#__PURE__*/ react.createElement("svg", Object.assign({
2335
- xmlns: "http://www.w3.org/2000/svg",
2336
- fill: "none",
2337
- viewBox: "0 0 24 24",
2338
- strokeWidth: 1.5,
2339
- stroke: "currentColor",
2340
- "aria-hidden": "true",
2341
- "data-slot": "icon",
2342
- ref: svgRef,
2343
- "aria-labelledby": titleId
2344
- }, props), title ? /*#__PURE__*/ react.createElement("title", {
2345
- id: titleId
2346
- }, title) : null, /*#__PURE__*/ react.createElement("path", {
2347
- strokeLinecap: "round",
2348
- strokeLinejoin: "round",
2349
- d: "M21.75 17.25v-.228a4.5 4.5 0 0 0-.12-1.03l-2.268-9.64a3.375 3.375 0 0 0-3.285-2.602H7.923a3.375 3.375 0 0 0-3.285 2.602l-2.268 9.64a4.5 4.5 0 0 0-.12 1.03v.228m19.5 0a3 3 0 0 1-3 3H5.25a3 3 0 0 1-3-3m19.5 0a3 3 0 0 0-3-3H5.25a3 3 0 0 0-3 3m16.5 0h.008v.008h-.008v-.008Zm-3 0h.008v.008h-.008v-.008Z"
2350
- }));
1938
+ if (isDraftMode) {
1939
+ res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate');
1940
+ }
1941
+ // In dev, we should not cache pages for any reason.
1942
+ if (routeModule.isDev) {
1943
+ res.setHeader('Cache-Control', 'no-cache, must-revalidate');
1944
+ }
1945
+ if (!cacheEntry) {
1946
+ if (ssgCacheKey) {
1947
+ // A cache entry might not be generated if a response is written
1948
+ // in `getInitialProps` or `getServerSideProps`, but those shouldn't
1949
+ // have a cache key. If we do have a cache key but we don't end up
1950
+ // with a cache entry, then either Next.js or the application has a
1951
+ // bug that needs fixing.
1952
+ throw Object.defineProperty(new Error('invariant: cache entry required but not generated'), "__NEXT_ERROR_CODE", {
1953
+ value: "E62",
1954
+ enumerable: false,
1955
+ configurable: true
1956
+ });
1957
+ }
1958
+ return null;
1959
+ }
1960
+ if (((_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_17__.CachedRouteKind.APP_PAGE) {
1961
+ var _cacheEntry_value1;
1962
+ throw Object.defineProperty(new Error(`Invariant app-page handler received invalid cache entry ${(_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", {
1963
+ value: "E707",
1964
+ enumerable: false,
1965
+ configurable: true
1966
+ });
1967
+ }
1968
+ const didPostpone = typeof cacheEntry.value.postponed === 'string';
1969
+ // Set the build ID header for RSC navigation requests when deploymentId is configured. This
1970
+ // corresponds with maybeAppendBuildIdToRSCPayload in app-render.tsx which omits the build ID
1971
+ // from the RSC payload when deploymentId is set (relying on this header instead). Server
1972
+ // actions are excluded here because action redirect responses get the deployment ID header
1973
+ // from the pre-fetched redirect target (via createRedirectRenderResult in action-handler.ts
1974
+ // which copies headers from the internal RSC fetch).
1975
+ // For static prerenders served from CDN, routes-manifest.json adds a header.
1976
+ if (isRSCRequest && !isPossibleServerAction && deploymentId) {
1977
+ res.setHeader(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__.NEXT_NAV_DEPLOYMENT_ID_HEADER, deploymentId);
1978
+ }
1979
+ if (isSSG && // We don't want to send a cache header for requests that contain dynamic
1980
+ // data. If this is a Dynamic RSC request or wasn't a Prefetch RSC
1981
+ // request, then we should set the cache header.
1982
+ !isDynamicRSCRequest && (!didPostpone || isPrefetchRSCRequest)) {
1983
+ if (!isMinimalMode) {
1984
+ // set x-nextjs-cache header to match the header
1985
+ // we set for the image-optimizer
1986
+ res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT');
1987
+ }
1988
+ // Set a header used by the client router to signal the response is static
1989
+ // and should respect the `static` cache staleTime value.
1990
+ res.setHeader(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.NEXT_IS_PRERENDER_HEADER, '1');
1991
+ }
1992
+ const { value: cachedData } = cacheEntry;
1993
+ // Coerce the cache control parameter from the render.
1994
+ let cacheControl;
1995
+ // If this is a resume request in minimal mode it is streamed with dynamic
1996
+ // content and should not be cached.
1997
+ if (minimalPostponed) {
1998
+ cacheControl = {
1999
+ revalidate: 0,
2000
+ expire: undefined
2001
+ };
2002
+ } else if (isDynamicRSCRequest) {
2003
+ cacheControl = {
2004
+ revalidate: 0,
2005
+ expire: undefined
2006
+ };
2007
+ } else if (!routeModule.isDev) {
2008
+ // If this is a preview mode request, we shouldn't cache it
2009
+ if (isDraftMode) {
2010
+ cacheControl = {
2011
+ revalidate: 0,
2012
+ expire: undefined
2013
+ };
2014
+ } else if (!isSSG) {
2015
+ if (!res.getHeader('Cache-Control')) {
2016
+ cacheControl = {
2017
+ revalidate: 0,
2018
+ expire: undefined
2019
+ };
2020
+ }
2021
+ } else if (cacheEntry.cacheControl) {
2022
+ // If the cache entry has a cache control with a revalidate value that's
2023
+ // a number, use it.
2024
+ if (typeof cacheEntry.cacheControl.revalidate === 'number') {
2025
+ var _cacheEntry_cacheControl;
2026
+ if (cacheEntry.cacheControl.revalidate < 1) {
2027
+ throw Object.defineProperty(new Error(`Invalid revalidate configuration provided: ${cacheEntry.cacheControl.revalidate} < 1`), "__NEXT_ERROR_CODE", {
2028
+ value: "E22",
2029
+ enumerable: false,
2030
+ configurable: true
2031
+ });
2032
+ }
2033
+ cacheControl = {
2034
+ revalidate: cacheEntry.cacheControl.revalidate,
2035
+ expire: ((_cacheEntry_cacheControl = cacheEntry.cacheControl) == null ? void 0 : _cacheEntry_cacheControl.expire) ?? nextConfig.expireTime
2036
+ };
2037
+ } else {
2038
+ cacheControl = {
2039
+ revalidate: next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__.CACHE_ONE_YEAR_SECONDS,
2040
+ expire: undefined
2041
+ };
2042
+ }
2043
+ }
2044
+ }
2045
+ cacheEntry.cacheControl = cacheControl;
2046
+ if (typeof segmentPrefetchHeader === 'string' && (cachedData == null ? void 0 : cachedData.kind) === next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_17__.CachedRouteKind.APP_PAGE && cachedData.segmentData) {
2047
+ var _cachedData_headers1;
2048
+ // This is a prefetch request issued by the client Segment Cache. These
2049
+ // should never reach the application layer (lambda). We should either
2050
+ // respond from the cache (HIT) or respond with 204 No Content (MISS).
2051
+ // Set a header to indicate that PPR is enabled for this route. This
2052
+ // lets the client distinguish between a regular cache miss and a cache
2053
+ // miss due to PPR being disabled. In other contexts this header is used
2054
+ // to indicate that the response contains dynamic data, but here we're
2055
+ // only using it to indicate that the feature is enabled — the segment
2056
+ // response itself contains whether the data is dynamic.
2057
+ res.setHeader(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.NEXT_DID_POSTPONE_HEADER, '2');
2058
+ // Add the cache tags header to the response if it exists and we're in
2059
+ // minimal mode while rendering a static page.
2060
+ const tags = (_cachedData_headers1 = cachedData.headers) == null ? void 0 : _cachedData_headers1[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__.NEXT_CACHE_TAGS_HEADER];
2061
+ if (isMinimalMode && isSSG && tags && typeof tags === 'string') {
2062
+ res.setHeader(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__.NEXT_CACHE_TAGS_HEADER, tags);
2063
+ }
2064
+ const matchedSegment = cachedData.segmentData.get(segmentPrefetchHeader);
2065
+ if (matchedSegment !== undefined) {
2066
+ // Cache hit
2067
+ return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({
2068
+ req,
2069
+ res,
2070
+ generateEtags: nextConfig.generateEtags,
2071
+ poweredByHeader: nextConfig.poweredByHeader,
2072
+ result: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_19__["default"].fromStatic(matchedSegment, next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.RSC_CONTENT_TYPE_HEADER),
2073
+ cacheControl: cacheEntry.cacheControl
2074
+ });
2075
+ }
2076
+ // Cache miss. Either a cache entry for this route has not been generated
2077
+ // (which technically should not be possible when PPR is enabled, because
2078
+ // at a minimum there should always be a fallback entry) or there's no
2079
+ // match for the requested segment. Respond with a 204 No Content. We
2080
+ // don't bother to respond with 404, because these requests are only
2081
+ // issued as part of a prefetch.
2082
+ res.statusCode = 204;
2083
+ return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({
2084
+ req,
2085
+ res,
2086
+ generateEtags: nextConfig.generateEtags,
2087
+ poweredByHeader: nextConfig.poweredByHeader,
2088
+ result: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_19__["default"].EMPTY,
2089
+ cacheControl: cacheEntry.cacheControl
2090
+ });
2091
+ }
2092
+ // If there's a callback for `onCacheEntry`, call it with the cache entry
2093
+ // and the revalidate options. If we support RDC for Navigations, we
2094
+ // prefer the `onCacheEntryV2` callback. Once RDC for Navigations is the
2095
+ // default, we can remove the fallback to `onCacheEntry` as
2096
+ // `onCacheEntryV2` is now fully supported.
2097
+ const onCacheEntry = supportsRDCForNavigations ? (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'onCacheEntryV2') ?? (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'onCacheEntry') : (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'onCacheEntry');
2098
+ if (onCacheEntry) {
2099
+ const finished = await onCacheEntry(cacheEntry, {
2100
+ url: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'initURL') ?? req.url
2101
+ });
2102
+ if (finished) return null;
2103
+ }
2104
+ if (cachedData.headers) {
2105
+ const headers = {
2106
+ ...cachedData.headers
2107
+ };
2108
+ if (!isMinimalMode || !isSSG) {
2109
+ delete headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__.NEXT_CACHE_TAGS_HEADER];
2110
+ }
2111
+ for (let [key, value] of Object.entries(headers)){
2112
+ if (typeof value === 'undefined') continue;
2113
+ if (Array.isArray(value)) {
2114
+ for (const v of value){
2115
+ res.appendHeader(key, v);
2116
+ }
2117
+ } else if (typeof value === 'number') {
2118
+ value = value.toString();
2119
+ res.appendHeader(key, value);
2120
+ } else {
2121
+ res.appendHeader(key, value);
2122
+ }
2123
+ }
2124
+ }
2125
+ // Add the cache tags header to the response if it exists and we're in
2126
+ // minimal mode while rendering a static page.
2127
+ const tags = (_cachedData_headers = cachedData.headers) == null ? void 0 : _cachedData_headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__.NEXT_CACHE_TAGS_HEADER];
2128
+ if (isMinimalMode && isSSG && tags && typeof tags === 'string') {
2129
+ res.setHeader(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_20__.NEXT_CACHE_TAGS_HEADER, tags);
2130
+ }
2131
+ // If the request is a data request, then we shouldn't set the status code
2132
+ // from the response because it should always be 200. This should be gated
2133
+ // behind the experimental PPR flag.
2134
+ if (cachedData.status && (!isRSCRequest || !isRoutePPREnabled)) {
2135
+ res.statusCode = cachedData.status;
2136
+ }
2137
+ // Redirect information is encoded in RSC payload, so we don't need to use redirect status codes
2138
+ if (!isMinimalMode && cachedData.status && next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_28__.RedirectStatusCode[cachedData.status] && isRSCRequest) {
2139
+ res.statusCode = 200;
2140
+ }
2141
+ // Mark that the request did postpone.
2142
+ if (didPostpone && !isDynamicRSCRequest) {
2143
+ res.setHeader(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.NEXT_DID_POSTPONE_HEADER, '1');
2144
+ }
2145
+ // we don't go through this block when preview mode is true
2146
+ // as preview mode is a dynamic request (bypasses cache) and doesn't
2147
+ // generate both HTML and payloads in the same request so continue to just
2148
+ // return the generated payload
2149
+ if (isRSCRequest && !isDraftMode) {
2150
+ // If this is a dynamic RSC request, then stream the response.
2151
+ if (typeof cachedData.rscData === 'undefined') {
2152
+ // If the response is not an RSC response, then we can't serve it.
2153
+ if (cachedData.html.contentType !== next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.RSC_CONTENT_TYPE_HEADER) {
2154
+ if (nextConfig.cacheComponents) {
2155
+ res.statusCode = 404;
2156
+ return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({
2157
+ req,
2158
+ res,
2159
+ generateEtags: nextConfig.generateEtags,
2160
+ poweredByHeader: nextConfig.poweredByHeader,
2161
+ result: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_19__["default"].EMPTY,
2162
+ cacheControl: cacheEntry.cacheControl
2163
+ });
2164
+ } else {
2165
+ // Otherwise this case is not expected.
2166
+ throw Object.defineProperty(new next_dist_shared_lib_invariant_error__WEBPACK_IMPORTED_MODULE_29__.InvariantError(`Expected RSC response, got ${cachedData.html.contentType}`), "__NEXT_ERROR_CODE", {
2167
+ value: "E789",
2168
+ enumerable: false,
2169
+ configurable: true
2170
+ });
2171
+ }
2172
+ }
2173
+ return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({
2174
+ req,
2175
+ res,
2176
+ generateEtags: nextConfig.generateEtags,
2177
+ poweredByHeader: nextConfig.poweredByHeader,
2178
+ result: cachedData.html,
2179
+ cacheControl: cacheEntry.cacheControl
2180
+ });
2181
+ }
2182
+ // As this isn't a prefetch request, we should serve the static flight
2183
+ // data.
2184
+ return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({
2185
+ req,
2186
+ res,
2187
+ generateEtags: nextConfig.generateEtags,
2188
+ poweredByHeader: nextConfig.poweredByHeader,
2189
+ result: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_19__["default"].fromStatic(cachedData.rscData, next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_15__.RSC_CONTENT_TYPE_HEADER),
2190
+ cacheControl: cacheEntry.cacheControl
2191
+ });
2192
+ }
2193
+ // This is a request for HTML data.
2194
+ const body = cachedData.html;
2195
+ // Instant Navigation Testing API: serve the static shell with an
2196
+ // injected script that sets self.__next_instant_test and kicks off a
2197
+ // static RSC fetch for hydration. The transform stream also appends
2198
+ // closing </body></html> tags so the browser can parse the full document.
2199
+ // In dev mode, also inject self.__next_r so the HMR WebSocket and
2200
+ // debug channel can initialize.
2201
+ if (isInstantNavigationTest && isDebugStaticShell) {
2202
+ const instantTestRequestId = routeModule.isDev === true ? crypto.randomUUID() : null;
2203
+ body.pipeThrough((0,next_dist_server_stream_utils_node_web_streams_helper__WEBPACK_IMPORTED_MODULE_22__.createInstantTestScriptInsertionTransformStream)(instantTestRequestId));
2204
+ return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({
2205
+ req,
2206
+ res,
2207
+ generateEtags: nextConfig.generateEtags,
2208
+ poweredByHeader: nextConfig.poweredByHeader,
2209
+ result: body,
2210
+ cacheControl: {
2211
+ revalidate: 0,
2212
+ expire: undefined
2213
+ }
2214
+ });
2215
+ }
2216
+ // If there's no postponed state, we should just serve the HTML. This
2217
+ // should also be the case for a resume request because it's completed
2218
+ // as a server render (rather than a static render).
2219
+ if (!didPostpone || isMinimalMode || isRSCRequest) {
2220
+ // If we're in test mode, we should add a sentinel chunk to the response
2221
+ // that's between the static and dynamic parts so we can compare the
2222
+ // chunks and add assertions.
2223
+ if (false) {}
2224
+ return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({
2225
+ req,
2226
+ res,
2227
+ generateEtags: nextConfig.generateEtags,
2228
+ poweredByHeader: nextConfig.poweredByHeader,
2229
+ result: body,
2230
+ cacheControl: cacheEntry.cacheControl
2231
+ });
2232
+ }
2233
+ // If we're debugging the static shell or the dynamic API accesses, we
2234
+ // should just serve the HTML without resuming the render. The returned
2235
+ // HTML will be the static shell so all the Dynamic API's will be used
2236
+ // during static generation.
2237
+ if (isDebugStaticShell || isDebugDynamicAccesses) {
2238
+ // Since we're not resuming the render, we need to at least add the
2239
+ // closing body and html tags to create valid HTML.
2240
+ body.push(new ReadableStream({
2241
+ start (controller) {
2242
+ controller.enqueue(next_dist_server_stream_utils_encoded_tags__WEBPACK_IMPORTED_MODULE_21__.ENCODED_TAGS.CLOSED.BODY_AND_HTML);
2243
+ controller.close();
2244
+ }
2245
+ }));
2246
+ return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({
2247
+ req,
2248
+ res,
2249
+ generateEtags: nextConfig.generateEtags,
2250
+ poweredByHeader: nextConfig.poweredByHeader,
2251
+ result: body,
2252
+ cacheControl: {
2253
+ revalidate: 0,
2254
+ expire: undefined
2255
+ }
2256
+ });
2257
+ }
2258
+ // If we're in test mode, we should add a sentinel chunk to the response
2259
+ // that's between the static and dynamic parts so we can compare the
2260
+ // chunks and add assertions.
2261
+ if (false) {}
2262
+ // This request has postponed, so let's create a new transformer that the
2263
+ // dynamic data can pipe to that will attach the dynamic data to the end
2264
+ // of the response.
2265
+ const transformer = new TransformStream();
2266
+ body.push(transformer.readable);
2267
+ // Perform the render again, but this time, provide the postponed state.
2268
+ // We don't await because we want the result to start streaming now, and
2269
+ // we've already chained the transformer's readable to the render result.
2270
+ doRender({
2271
+ span,
2272
+ postponed: cachedData.postponed,
2273
+ // This is a resume render, not a fallback render, so we don't need to
2274
+ // set this.
2275
+ fallbackRouteParams: null,
2276
+ forceStaticRender: false
2277
+ }).then(async (result)=>{
2278
+ var _result_value;
2279
+ if (!result) {
2280
+ throw Object.defineProperty(new Error('Invariant: expected a result to be returned'), "__NEXT_ERROR_CODE", {
2281
+ value: "E463",
2282
+ enumerable: false,
2283
+ configurable: true
2284
+ });
2285
+ }
2286
+ if (((_result_value = result.value) == null ? void 0 : _result_value.kind) !== next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_17__.CachedRouteKind.APP_PAGE) {
2287
+ var _result_value1;
2288
+ throw Object.defineProperty(new Error(`Invariant: expected a page response, got ${(_result_value1 = result.value) == null ? void 0 : _result_value1.kind}`), "__NEXT_ERROR_CODE", {
2289
+ value: "E305",
2290
+ enumerable: false,
2291
+ configurable: true
2292
+ });
2293
+ }
2294
+ // Pipe the resume result to the transformer.
2295
+ await result.value.html.pipeTo(transformer.writable);
2296
+ }).catch((err)=>{
2297
+ // An error occurred during piping or preparing the render, abort
2298
+ // the transformers writer so we can terminate the stream.
2299
+ transformer.writable.abort(err).catch((e)=>{
2300
+ console.error("couldn't abort transformer", e);
2301
+ });
2302
+ });
2303
+ return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({
2304
+ req,
2305
+ res,
2306
+ generateEtags: nextConfig.generateEtags,
2307
+ poweredByHeader: nextConfig.poweredByHeader,
2308
+ result: body,
2309
+ // We don't want to cache the response if it has postponed data because
2310
+ // the response being sent to the client it's dynamic parts are streamed
2311
+ // to the client on the same request.
2312
+ cacheControl: {
2313
+ revalidate: 0,
2314
+ expire: undefined
2315
+ }
2316
+ });
2317
+ };
2318
+ // TODO: activeSpan code path is for when wrapped by
2319
+ // next-server can be removed when this is no longer used
2320
+ if (isWrappedByNextServer && activeSpan) {
2321
+ await handleResponse(activeSpan);
2322
+ } else {
2323
+ parentSpan = tracer.getActiveScopeSpan();
2324
+ return await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__.BaseServerSpan.handleRequest, {
2325
+ spanName: `${method} ${srcPage}`,
2326
+ kind: next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__.SpanKind.SERVER,
2327
+ attributes: {
2328
+ 'http.method': method,
2329
+ 'http.target': req.url
2330
+ }
2331
+ }, handleResponse), undefined, !isWrappedByNextServer);
2332
+ }
2333
+ } catch (err) {
2334
+ if (!(err instanceof next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__.NoFallbackError)) {
2335
+ const silenceLog = false;
2336
+ await routeModule.onRequestError(req, err, {
2337
+ routerKind: 'App Router',
2338
+ routePath: srcPage,
2339
+ routeType: 'render',
2340
+ revalidateReason: (0,next_dist_server_instrumentation_utils__WEBPACK_IMPORTED_MODULE_2__/* .getRevalidateReason */ .c)({
2341
+ isStaticGeneration: isSSG,
2342
+ isOnDemandRevalidate
2343
+ })
2344
+ }, silenceLog, routerServerContext);
2345
+ }
2346
+ // rethrow so that we can handle serving error page
2347
+ throw err;
2348
+ }
2351
2349
  }
2352
- const ServerIcon_ForwardRef = /*#__PURE__*/ react.forwardRef(ServerIcon);
2353
- /* harmony default export */ const esm_ServerIcon = (ServerIcon_ForwardRef);
2354
-
2355
- // EXTERNAL MODULE: ../../node_modules/@heroicons/react/24/outline/esm/CommandLineIcon.js
2356
- var CommandLineIcon = __webpack_require__(79591);
2357
- // EXTERNAL MODULE: ../../packages/react-ui/dist/index.mjs + 26 modules
2358
- var dist = __webpack_require__(69792);
2359
- ;// __barrel_optimize__?names=StatusDisplay,Toolbar!=!../../packages/react-ui/dist/index.mjs
2360
-
2361
-
2362
- // EXTERNAL MODULE: ./src/components/toolbar/ToolbarPanels.tsx + 4 modules
2363
- var ToolbarPanels = __webpack_require__(50436);
2364
- // EXTERNAL MODULE: __barrel_optimize__?names=useEventSubscriptions,useLineNumbers,usePanelBrowse,useTheme!=!../../packages/react-ui/dist/index.mjs
2365
- var react_ui_dist = __webpack_require__(56677);
2366
- ;// __barrel_optimize__?names=AdminDevOpsPage!=!../../packages/react-ui/dist/index.mjs
2367
-
2368
-
2369
- // EXTERNAL MODULE: ./src/hooks/useAuth.ts + 1 modules
2370
- var useAuth = __webpack_require__(31039);
2371
- ;// ./src/app/[locale]/admin/devops/page.tsx
2372
- /* __next_internal_client_entry_do_not_use__ default auto */
2350
+ // TODO: omit this from production builds, only test builds should include it
2373
2351
  /**
2374
- * DevOps Page - Thin Next.js wrapper
2352
+ * Creates a readable stream that emits a PPR boundary sentinel.
2375
2353
  *
2376
- * This page handles Next.js-specific concerns (translations, hooks)
2377
- * and delegates rendering to the pure React AdminDevOpsPage component.
2378
- */
2379
-
2380
-
2381
-
2382
-
2383
-
2384
-
2385
-
2386
- // Wrapper component that provides auth props to StatusDisplay
2387
- function StatusDisplayWithAuth() {
2388
- const { isFullyAuthenticated, isAuthenticated, hasValidBackendToken } = (0,useAuth/* useAuth */.As)();
2389
- return /*#__PURE__*/ (0,react_jsx_runtime.jsx)(dist.StatusDisplay, {
2390
- isFullyAuthenticated: isFullyAuthenticated,
2391
- isAuthenticated: isAuthenticated,
2392
- hasValidBackendToken: hasValidBackendToken
2393
- });
2394
- }
2395
- function DevOpsPage() {
2396
- const t = (0,react_client/* useTranslations */.c)('AdminDevOps');
2397
- // Toolbar and settings state
2398
- const { activePanel } = (0,react_ui_dist/* usePanelBrowse */.ySJ)();
2399
- const { theme, setTheme } = (0,react_ui_dist/* useTheme */.DPo)();
2400
- const { showLineNumbers, toggleLineNumbers } = (0,react_ui_dist/* useLineNumbers */.cvF)();
2401
- // Handle theme change events
2402
- const handleThemeChanged = (0,react.useCallback)(({ theme })=>{
2403
- setTheme(theme);
2404
- }, [
2405
- setTheme
2406
- ]);
2407
- // Handle line numbers toggle events
2408
- const handleLineNumbersToggled = (0,react.useCallback)(()=>{
2409
- toggleLineNumbers();
2410
- }, [
2411
- toggleLineNumbers
2412
- ]);
2413
- (0,react_ui_dist/* useEventSubscriptions */.C$z)({
2414
- 'settings:theme-changed': handleThemeChanged,
2415
- 'settings:line-numbers-toggled': handleLineNumbersToggled
2416
- });
2417
- const suggestedFeatures = [
2418
- {
2419
- title: t('systemMonitoring'),
2420
- description: t('systemMonitoringDescription'),
2421
- icon: esm_ChartBarIcon,
2422
- available: t('systemMonitoringCLI')
2423
- },
2424
- {
2425
- title: t('serviceManagement'),
2426
- description: t('serviceManagementDescription'),
2427
- icon: esm_ServerIcon,
2428
- available: t('serviceManagementCLI')
2429
- },
2430
- {
2431
- title: t('deploymentControl'),
2432
- description: t('deploymentControlDescription'),
2433
- icon: CommandLineIcon/* default */.A,
2434
- available: t('deploymentControlCLI')
2354
+ * @returns A readable stream that emits a PPR boundary sentinel.
2355
+ */ function createPPRBoundarySentinel() {
2356
+ return new ReadableStream({
2357
+ start (controller) {
2358
+ controller.enqueue(new TextEncoder().encode('<!-- PPR_BOUNDARY_SENTINEL -->'));
2359
+ controller.close();
2435
2360
  }
2436
- ];
2437
- return /*#__PURE__*/ (0,react_jsx_runtime.jsx)(dist.AdminDevOpsPage, {
2438
- suggestedFeatures: suggestedFeatures,
2439
- theme: theme,
2440
- showLineNumbers: showLineNumbers,
2441
- activePanel: activePanel,
2442
- translations: {
2443
- title: t('title'),
2444
- subtitle: t('subtitle'),
2445
- systemStatus: t('systemStatus'),
2446
- cliOperations: t('cliOperations'),
2447
- cliOperationsDescription: t('cliOperationsDescription'),
2448
- cliTitle: t('cliTitle'),
2449
- cliDescription: t('cliDescription')
2450
- },
2451
- StatusDisplay: StatusDisplayWithAuth,
2452
- ToolbarPanels: ToolbarPanels/* ToolbarPanels */.t,
2453
- Toolbar: dist.Toolbar
2454
2361
  });
2455
2362
  }
2456
2363
 
2457
-
2458
- /***/ }),
2459
-
2460
- /***/ 97953:
2461
- /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
2462
-
2463
- Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 71977));
2364
+ //# sourceMappingURL=app-page.js.map
2464
2365
 
2465
2366
 
2466
2367
  /***/ })
@@ -2472,7 +2373,7 @@ Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_re
2472
2373
  var __webpack_require__ = require("../../../../webpack-runtime.js");
2473
2374
  __webpack_require__.C(exports);
2474
2375
  var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
2475
- var __webpack_exports__ = __webpack_require__.X(0, [8569,5866,9927,7420,2617,5440,8255,9988], () => (__webpack_exec__(35299)));
2376
+ var __webpack_exports__ = __webpack_require__.X(0, [8103,9927,1515,2617,8255,9988], () => (__webpack_exec__(98881)));
2476
2377
  module.exports = __webpack_exports__;
2477
2378
 
2478
2379
  })();