loopwind 0.23.0 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (497) hide show
  1. package/README.md +13 -117
  2. package/dist/cli.js +16 -10
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/add.d.ts.map +1 -1
  5. package/dist/commands/add.js +6 -10
  6. package/dist/commands/add.js.map +1 -1
  7. package/dist/commands/agent.d.ts +8 -0
  8. package/dist/commands/agent.d.ts.map +1 -0
  9. package/dist/commands/agent.js +101 -0
  10. package/dist/commands/agent.js.map +1 -0
  11. package/dist/commands/init.d.ts.map +1 -1
  12. package/dist/commands/init.js +17 -7
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/render.d.ts.map +1 -1
  15. package/dist/commands/render.js +17 -19
  16. package/dist/commands/render.js.map +1 -1
  17. package/dist/default-templates/AGENTS.md +10 -24
  18. package/dist/lib/config.d.ts +2 -3
  19. package/dist/lib/config.d.ts.map +1 -1
  20. package/dist/lib/config.js +4 -9
  21. package/dist/lib/config.js.map +1 -1
  22. package/dist/lib/constants.d.ts +1 -3
  23. package/dist/lib/constants.d.ts.map +1 -1
  24. package/dist/lib/constants.js +2 -4
  25. package/dist/lib/constants.js.map +1 -1
  26. package/dist/lib/installer.d.ts +2 -0
  27. package/dist/lib/installer.d.ts.map +1 -1
  28. package/dist/lib/installer.js +6 -7
  29. package/dist/lib/installer.js.map +1 -1
  30. package/dist/lib/renderer.d.ts.map +1 -1
  31. package/dist/lib/renderer.js +4 -1
  32. package/dist/lib/renderer.js.map +1 -1
  33. package/dist/lib/utils.d.ts +13 -29
  34. package/dist/lib/utils.d.ts.map +1 -1
  35. package/dist/lib/utils.js +45 -155
  36. package/dist/lib/utils.js.map +1 -1
  37. package/dist/types/config.d.ts +0 -2
  38. package/dist/types/config.d.ts.map +1 -1
  39. package/dist/types/config.js.map +1 -1
  40. package/package.json +1 -15
  41. package/REGISTRY_SETUP.md +0 -363
  42. package/dist/default-templates/image/template.d.ts +0 -20
  43. package/dist/default-templates/image/template.d.ts.map +0 -1
  44. package/dist/default-templates/image/template.js +0 -18
  45. package/dist/default-templates/image/template.js.map +0 -1
  46. package/dist/default-templates/image/template.tsx +0 -20
  47. package/dist/default-templates/kitchen-sink/template.tsx +0 -64
  48. package/dist/default-templates/page/template.tsx +0 -37
  49. package/dist/default-templates/video/template.d.ts +0 -26
  50. package/dist/default-templates/video/template.d.ts.map +0 -1
  51. package/dist/default-templates/video/template.js +0 -33
  52. package/dist/default-templates/video/template.js.map +0 -1
  53. package/dist/default-templates/video/template.tsx +0 -37
  54. package/dist/default-templates/website/pages/home.tsx +0 -17
  55. package/dist/default-templates/website/parts/footer.tsx +0 -17
  56. package/dist/default-templates/website/parts/header.tsx +0 -17
  57. package/dist/default-templates/website/template.tsx +0 -17
  58. package/dist/default-templates/website-template/pages/home.tsx +0 -13
  59. package/dist/default-templates/website-template/parts/footer.tsx +0 -15
  60. package/dist/default-templates/website-template/parts/header.tsx +0 -15
  61. package/dist/default-templates/website-template/template.tsx +0 -32
  62. package/dist/lib/encode-worker.d.ts +0 -2
  63. package/dist/lib/encode-worker.d.ts.map +0 -1
  64. package/dist/lib/encode-worker.js +0 -29
  65. package/dist/lib/encode-worker.js.map +0 -1
  66. package/dist/lib/mjpeg-muxer.d.ts +0 -46
  67. package/dist/lib/mjpeg-muxer.d.ts.map +0 -1
  68. package/dist/lib/mjpeg-muxer.js +0 -513
  69. package/dist/lib/mjpeg-muxer.js.map +0 -1
  70. package/dist/lib/render-core.d.ts +0 -63
  71. package/dist/lib/render-core.d.ts.map +0 -1
  72. package/dist/lib/render-core.js +0 -65
  73. package/dist/lib/render-core.js.map +0 -1
  74. package/dist/lib/tailwind-browser.d.ts +0 -27
  75. package/dist/lib/tailwind-browser.d.ts.map +0 -1
  76. package/dist/lib/tailwind-browser.js +0 -853
  77. package/dist/lib/tailwind-browser.js.map +0 -1
  78. package/dist/lib/video-player.d.ts +0 -25
  79. package/dist/lib/video-player.d.ts.map +0 -1
  80. package/dist/lib/video-player.js +0 -392
  81. package/dist/lib/video-player.js.map +0 -1
  82. package/dist/sdk/compiler.d.ts +0 -94
  83. package/dist/sdk/compiler.d.ts.map +0 -1
  84. package/dist/sdk/compiler.js +0 -122
  85. package/dist/sdk/compiler.js.map +0 -1
  86. package/dist/sdk/edge/index.d.ts +0 -91
  87. package/dist/sdk/edge/index.d.ts.map +0 -1
  88. package/dist/sdk/edge/index.js +0 -187
  89. package/dist/sdk/edge/index.js.map +0 -1
  90. package/dist/sdk/index.d.ts +0 -62
  91. package/dist/sdk/index.d.ts.map +0 -1
  92. package/dist/sdk/index.js +0 -141
  93. package/dist/sdk/index.js.map +0 -1
  94. package/dist/sdk/preview.d.ts +0 -65
  95. package/dist/sdk/preview.d.ts.map +0 -1
  96. package/dist/sdk/preview.js +0 -262
  97. package/dist/sdk/preview.js.map +0 -1
  98. package/dist/sdk/template.d.ts +0 -162
  99. package/dist/sdk/template.d.ts.map +0 -1
  100. package/dist/sdk/template.js +0 -231
  101. package/dist/sdk/template.js.map +0 -1
  102. package/dist/sdk/workers/index.d.ts +0 -135
  103. package/dist/sdk/workers/index.d.ts.map +0 -1
  104. package/dist/sdk/workers/index.js +0 -271
  105. package/dist/sdk/workers/index.js.map +0 -1
  106. package/dist/sdk/workers/tailwind-config.d.ts +0 -48
  107. package/dist/sdk/workers/tailwind-config.d.ts.map +0 -1
  108. package/dist/sdk/workers/tailwind-config.js +0 -187
  109. package/dist/sdk/workers/tailwind-config.js.map +0 -1
  110. package/dist/sdk/workers/tailwind.d.ts +0 -9
  111. package/dist/sdk/workers/tailwind.d.ts.map +0 -1
  112. package/dist/sdk/workers/tailwind.js +0 -8
  113. package/dist/sdk/workers/tailwind.js.map +0 -1
  114. package/examples/code-editor-templates.ts +0 -173
  115. package/examples/nextjs-api/README.md +0 -180
  116. package/examples/nextjs-api/package.json +0 -21
  117. package/examples/nextjs-api/pages/api/intro-video.ts +0 -53
  118. package/examples/nextjs-api/pages/api/og-image.ts +0 -50
  119. package/examples/nextjs-template-import.ts +0 -58
  120. package/examples/sdk-video-preview.tsx +0 -120
  121. package/examples/template-compiler-workflow.ts +0 -251
  122. package/examples/visual-builder-templates.ts +0 -336
  123. package/render-examples-600x400.mjs +0 -161
  124. package/render-spring-variants-fixed.mjs +0 -60
  125. package/render-staggered-text.mjs +0 -56
  126. package/test-cloudflare-worker/README.md +0 -64
  127. package/test-cloudflare-worker/dist/README.md +0 -1
  128. package/test-cloudflare-worker/dist/index.js +0 -23743
  129. package/test-cloudflare-worker/dist/index.js.map +0 -8
  130. package/test-cloudflare-worker/package-lock.json +0 -1773
  131. package/test-cloudflare-worker/package.json +0 -25
  132. package/test-cloudflare-worker/test-sdk.mjs +0 -75
  133. package/test-cloudflare-worker/wrangler.toml +0 -14
  134. package/test-font-files.mjs +0 -72
  135. package/test-jsx-support.mjs +0 -146
  136. package/test-sdk-config.mjs +0 -454
  137. package/test-sdk-source-config.mjs +0 -427
  138. package/test-sdk-user-templates.mjs +0 -469
  139. package/test-static-debug.tsx +0 -19
  140. package/test-templates/TESTS.md +0 -63
  141. package/test-templates/config-test.mjs +0 -17
  142. package/test-templates/demo-intro-props.json +0 -4
  143. package/test-templates/run-tests.sh +0 -44
  144. package/test-templates/test-sdk.mjs +0 -139
  145. package/test-video-720p.mjs +0 -96
  146. package/test-video-breakdown.mjs +0 -98
  147. package/test-video-perf-1080.mjs +0 -67
  148. package/test-video-perf.mjs +0 -56
  149. package/test-video-props.json +0 -3
  150. package/test-worker-1080p.mjs +0 -103
  151. package/test-worker-viability.mjs +0 -140
  152. package/website/.astro/content.db +0 -0
  153. package/website/.astro/integrations/_inox-tools_astro-when/types.d.ts +0 -1
  154. package/website/.astro/integrations/astro_db/db.d.ts +0 -15
  155. package/website/.astro/settings.json +0 -5
  156. package/website/.astro/types.d.ts +0 -2
  157. package/website/DEPLOYMENT.md +0 -143
  158. package/website/OG_IMAGES.md +0 -142
  159. package/website/README.md +0 -158
  160. package/website/astro.config.mjs +0 -41
  161. package/website/dist/.gitkeep +0 -5
  162. package/website/dist/_astro/PlaygroundEditor.DzFavsm8.js +0 -26
  163. package/website/dist/_astro/VideoPreviewClient.BrajhYmh.js +0 -1
  164. package/website/dist/_astro/agents.CZXv4DCM.css +0 -1
  165. package/website/dist/_astro/client.BHSq4mdQ.js +0 -33
  166. package/website/dist/_astro/index.CTbGshLK.js +0 -9
  167. package/website/dist/_astro/jsx-runtime.BjG_zV1W.js +0 -9
  168. package/website/dist/_routes.json +0 -31
  169. package/website/dist/_worker.js/_@astrojs-ssr-adapter.mjs +0 -1033
  170. package/website/dist/_worker.js/_astro-internal_middleware.mjs +0 -40
  171. package/website/dist/_worker.js/chunks/Logo_Cud5QvBJ.mjs +0 -22
  172. package/website/dist/_worker.js/chunks/_@astro-renderers_-YVK7NHa.mjs +0 -15015
  173. package/website/dist/_worker.js/chunks/abap_BTmsHiP5.mjs +0 -1
  174. package/website/dist/_worker.js/chunks/actionscript-3_DmBelb1E.mjs +0 -1
  175. package/website/dist/_worker.js/chunks/ada_8-E0ahCN.mjs +0 -1
  176. package/website/dist/_worker.js/chunks/andromeeda_XI-CXx50.mjs +0 -1
  177. package/website/dist/_worker.js/chunks/angular-html_DKGh3gGH.mjs +0 -1
  178. package/website/dist/_worker.js/chunks/angular-ts_-qZGsJoA.mjs +0 -1
  179. package/website/dist/_worker.js/chunks/apache_ijTUt0Ee.mjs +0 -1
  180. package/website/dist/_worker.js/chunks/apex_agu1c6Sh.mjs +0 -1
  181. package/website/dist/_worker.js/chunks/apl_Bj2f7Art.mjs +0 -1
  182. package/website/dist/_worker.js/chunks/applescript_B_vXrOh3.mjs +0 -1
  183. package/website/dist/_worker.js/chunks/ara_DCEQ2rnh.mjs +0 -1
  184. package/website/dist/_worker.js/chunks/asciidoc_CGN_EkYS.mjs +0 -1
  185. package/website/dist/_worker.js/chunks/asm_BBWZgnDp.mjs +0 -1
  186. package/website/dist/_worker.js/chunks/astro/assets-service_j52rQLzU.mjs +0 -721
  187. package/website/dist/_worker.js/chunks/astro/server_CsUrSZgd.mjs +0 -2512
  188. package/website/dist/_worker.js/chunks/astro-designed-error-pages_1ELXm5Tt.mjs +0 -542
  189. package/website/dist/_worker.js/chunks/astro_Dr_hht3h.mjs +0 -1
  190. package/website/dist/_worker.js/chunks/aurora-x_9GHG8nSq.mjs +0 -1
  191. package/website/dist/_worker.js/chunks/awk_DHRvhXot.mjs +0 -1
  192. package/website/dist/_worker.js/chunks/ayu-dark_CcvqmEHE.mjs +0 -1
  193. package/website/dist/_worker.js/chunks/ballerina_C7SdeSZb.mjs +0 -1
  194. package/website/dist/_worker.js/chunks/bat_Dv4A3u45.mjs +0 -1
  195. package/website/dist/_worker.js/chunks/beancount_BfPf9Luv.mjs +0 -1
  196. package/website/dist/_worker.js/chunks/berry_B8rfM3lL.mjs +0 -1
  197. package/website/dist/_worker.js/chunks/bibtex_TcjYgtJM.mjs +0 -1
  198. package/website/dist/_worker.js/chunks/bicep_CrlFWCdN.mjs +0 -1
  199. package/website/dist/_worker.js/chunks/blade_lanKVYID.mjs +0 -1
  200. package/website/dist/_worker.js/chunks/bsl_BhppzXMB.mjs +0 -1
  201. package/website/dist/_worker.js/chunks/c_6FBALJTK.mjs +0 -1
  202. package/website/dist/_worker.js/chunks/cadence_2txU9LVE.mjs +0 -1
  203. package/website/dist/_worker.js/chunks/cairo_BkrFAIlP.mjs +0 -1
  204. package/website/dist/_worker.js/chunks/catppuccin-frappe_CkEqIYhU.mjs +0 -1
  205. package/website/dist/_worker.js/chunks/catppuccin-latte_DG4Gx_-v.mjs +0 -1
  206. package/website/dist/_worker.js/chunks/catppuccin-macchiato_Cwi3vCXf.mjs +0 -1
  207. package/website/dist/_worker.js/chunks/catppuccin-mocha_L9_OPlFX.mjs +0 -1
  208. package/website/dist/_worker.js/chunks/clarity_BEAe4Ulu.mjs +0 -1
  209. package/website/dist/_worker.js/chunks/clojure_VnUX6p2g.mjs +0 -1
  210. package/website/dist/_worker.js/chunks/cmake_0-SGkZEj.mjs +0 -1
  211. package/website/dist/_worker.js/chunks/cobol_92M_KGaE.mjs +0 -1
  212. package/website/dist/_worker.js/chunks/codeowners_CzMwskBv.mjs +0 -1
  213. package/website/dist/_worker.js/chunks/codeql_DWJZNHv1.mjs +0 -1
  214. package/website/dist/_worker.js/chunks/coffee_CQjKU2fh.mjs +0 -1
  215. package/website/dist/_worker.js/chunks/common-lisp_BBLWDpS5.mjs +0 -1
  216. package/website/dist/_worker.js/chunks/coq_hedRFV3D.mjs +0 -1
  217. package/website/dist/_worker.js/chunks/cpp_DlS1i6Zs.mjs +0 -1
  218. package/website/dist/_worker.js/chunks/crystal_D6n65fKV.mjs +0 -1
  219. package/website/dist/_worker.js/chunks/csharp_C6FCVFzc.mjs +0 -1
  220. package/website/dist/_worker.js/chunks/css_C5uJEgmJ.mjs +0 -1
  221. package/website/dist/_worker.js/chunks/csv_CtMYuuJl.mjs +0 -1
  222. package/website/dist/_worker.js/chunks/cue_BsPexqx6.mjs +0 -1
  223. package/website/dist/_worker.js/chunks/cypher_apzf6OBi.mjs +0 -1
  224. package/website/dist/_worker.js/chunks/d_DcvIRcgm.mjs +0 -1
  225. package/website/dist/_worker.js/chunks/dark-plus_C01ONtzj.mjs +0 -1
  226. package/website/dist/_worker.js/chunks/dart_WkzM5WrV.mjs +0 -1
  227. package/website/dist/_worker.js/chunks/dax_DjXAO5V4.mjs +0 -1
  228. package/website/dist/_worker.js/chunks/desktop_C92LCxdc.mjs +0 -1
  229. package/website/dist/_worker.js/chunks/diff_CVwM_9XJ.mjs +0 -1
  230. package/website/dist/_worker.js/chunks/docker_DPzgJf6Z.mjs +0 -1
  231. package/website/dist/_worker.js/chunks/dotenv_D_vgANvA.mjs +0 -1
  232. package/website/dist/_worker.js/chunks/dracula-soft_CLnUBwFm.mjs +0 -1
  233. package/website/dist/_worker.js/chunks/dracula_lBVpb6Lb.mjs +0 -1
  234. package/website/dist/_worker.js/chunks/dream-maker_DTLbzd_J.mjs +0 -1
  235. package/website/dist/_worker.js/chunks/edge_i54JYm3_.mjs +0 -1
  236. package/website/dist/_worker.js/chunks/elixir_BJCIjTu4.mjs +0 -1
  237. package/website/dist/_worker.js/chunks/elm_BbXD39-_.mjs +0 -1
  238. package/website/dist/_worker.js/chunks/emacs-lisp_pxa5cXaN.mjs +0 -1
  239. package/website/dist/_worker.js/chunks/erb_Ccjijeee.mjs +0 -1
  240. package/website/dist/_worker.js/chunks/erlang_B2VM_hi7.mjs +0 -1
  241. package/website/dist/_worker.js/chunks/everforest-dark_BxvIPBim.mjs +0 -1
  242. package/website/dist/_worker.js/chunks/everforest-light_B7VoyaJM.mjs +0 -1
  243. package/website/dist/_worker.js/chunks/fennel_D-uo7X6c.mjs +0 -1
  244. package/website/dist/_worker.js/chunks/fish_BjePoK3m.mjs +0 -1
  245. package/website/dist/_worker.js/chunks/fluent_C8fgkzLX.mjs +0 -1
  246. package/website/dist/_worker.js/chunks/fortran-fixed-form_D1pu5zrc.mjs +0 -1
  247. package/website/dist/_worker.js/chunks/fortran-free-form_CSGOhJD6.mjs +0 -1
  248. package/website/dist/_worker.js/chunks/fsharp_B0xy-A4Y.mjs +0 -1
  249. package/website/dist/_worker.js/chunks/gdresource_CWppjlHq.mjs +0 -1
  250. package/website/dist/_worker.js/chunks/gdscript_eQCHchcS.mjs +0 -1
  251. package/website/dist/_worker.js/chunks/gdshader_C4kxepX7.mjs +0 -1
  252. package/website/dist/_worker.js/chunks/genie_ACtQLcDW.mjs +0 -1
  253. package/website/dist/_worker.js/chunks/gherkin_BFp2uKUd.mjs +0 -1
  254. package/website/dist/_worker.js/chunks/git-commit_CLg9ZwMV.mjs +0 -1
  255. package/website/dist/_worker.js/chunks/git-rebase_DG8A80Nt.mjs +0 -1
  256. package/website/dist/_worker.js/chunks/github-dark-default_BI0EP2Kv.mjs +0 -1
  257. package/website/dist/_worker.js/chunks/github-dark-dimmed_a_NIC0Xb.mjs +0 -1
  258. package/website/dist/_worker.js/chunks/github-dark-high-contrast_jZGqT7hk.mjs +0 -1
  259. package/website/dist/_worker.js/chunks/github-dark_CHCDNd2O.mjs +0 -1
  260. package/website/dist/_worker.js/chunks/github-light-default_DRbOW5RG.mjs +0 -1
  261. package/website/dist/_worker.js/chunks/github-light-high-contrast_tn_kWutM.mjs +0 -1
  262. package/website/dist/_worker.js/chunks/github-light_D9brYzot.mjs +0 -1
  263. package/website/dist/_worker.js/chunks/gleam_Dmhu1oxW.mjs +0 -1
  264. package/website/dist/_worker.js/chunks/glimmer-js_BfZbXy8A.mjs +0 -1
  265. package/website/dist/_worker.js/chunks/glimmer-ts_B9QVICrD.mjs +0 -1
  266. package/website/dist/_worker.js/chunks/glsl_DD2PPwOs.mjs +0 -1
  267. package/website/dist/_worker.js/chunks/gnuplot_D2OYChUX.mjs +0 -1
  268. package/website/dist/_worker.js/chunks/go_DYGFTe3h.mjs +0 -1
  269. package/website/dist/_worker.js/chunks/graphql_B7XsT3nH.mjs +0 -1
  270. package/website/dist/_worker.js/chunks/groovy_BO12Uwkl.mjs +0 -1
  271. package/website/dist/_worker.js/chunks/hack_CB2_ztCP.mjs +0 -1
  272. package/website/dist/_worker.js/chunks/haml_CyfDcDD3.mjs +0 -1
  273. package/website/dist/_worker.js/chunks/handlebars_CfpxpWm2.mjs +0 -1
  274. package/website/dist/_worker.js/chunks/haskell_jUeC5uN5.mjs +0 -1
  275. package/website/dist/_worker.js/chunks/haxe_B6GxP1WB.mjs +0 -1
  276. package/website/dist/_worker.js/chunks/hcl_DwoHV2oh.mjs +0 -1
  277. package/website/dist/_worker.js/chunks/hjson_DV7cJRk4.mjs +0 -1
  278. package/website/dist/_worker.js/chunks/hlsl_BlFCscPI.mjs +0 -1
  279. package/website/dist/_worker.js/chunks/houston_COBFG1Mx.mjs +0 -1
  280. package/website/dist/_worker.js/chunks/html-derivative_C9pJ337h.mjs +0 -1
  281. package/website/dist/_worker.js/chunks/html_D1OkrZS5.mjs +0 -1
  282. package/website/dist/_worker.js/chunks/http_DIGXRqvJ.mjs +0 -1
  283. package/website/dist/_worker.js/chunks/hxml_DEwh9i-c.mjs +0 -1
  284. package/website/dist/_worker.js/chunks/hy_DDoIgW1K.mjs +0 -1
  285. package/website/dist/_worker.js/chunks/imba_B00zbHo4.mjs +0 -1
  286. package/website/dist/_worker.js/chunks/index_BDWR1Q-q.mjs +0 -1861
  287. package/website/dist/_worker.js/chunks/ini_D7XQA_p8.mjs +0 -1
  288. package/website/dist/_worker.js/chunks/java_B9wdFd8K.mjs +0 -1
  289. package/website/dist/_worker.js/chunks/javascript_CLsPGOON.mjs +0 -1
  290. package/website/dist/_worker.js/chunks/jinja_jarBCAN1.mjs +0 -1
  291. package/website/dist/_worker.js/chunks/jison_oGg3J708.mjs +0 -1
  292. package/website/dist/_worker.js/chunks/json5_DlZ1Kyaa.mjs +0 -1
  293. package/website/dist/_worker.js/chunks/json_DaYk_FMp.mjs +0 -1
  294. package/website/dist/_worker.js/chunks/jsonc_DlwgfSDs.mjs +0 -1
  295. package/website/dist/_worker.js/chunks/jsonl_BbCCVaZF.mjs +0 -1
  296. package/website/dist/_worker.js/chunks/jsonnet_Dt-G75xe.mjs +0 -1
  297. package/website/dist/_worker.js/chunks/jssm_BtKFTj2A.mjs +0 -1
  298. package/website/dist/_worker.js/chunks/jsx_DDx_xAZ8.mjs +0 -1
  299. package/website/dist/_worker.js/chunks/julia_CK0lv68l.mjs +0 -1
  300. package/website/dist/_worker.js/chunks/kanagawa-dragon_BldAK3Oo.mjs +0 -1
  301. package/website/dist/_worker.js/chunks/kanagawa-lotus_DVM8FX9_.mjs +0 -1
  302. package/website/dist/_worker.js/chunks/kanagawa-wave_Dpih0AKP.mjs +0 -1
  303. package/website/dist/_worker.js/chunks/kotlin_kWneB9V_.mjs +0 -1
  304. package/website/dist/_worker.js/chunks/kusto_BKVATd95.mjs +0 -1
  305. package/website/dist/_worker.js/chunks/laserwave_BqatxsVl.mjs +0 -1
  306. package/website/dist/_worker.js/chunks/latex_LVDcGBbc.mjs +0 -1
  307. package/website/dist/_worker.js/chunks/lean_W7qo-5M2.mjs +0 -1
  308. package/website/dist/_worker.js/chunks/less_DFNwJnBH.mjs +0 -1
  309. package/website/dist/_worker.js/chunks/light-plus_Dp0AoWsO.mjs +0 -1
  310. package/website/dist/_worker.js/chunks/liquid_D24qs0pc.mjs +0 -1
  311. package/website/dist/_worker.js/chunks/log_IPWMXriF.mjs +0 -1
  312. package/website/dist/_worker.js/chunks/logo_C6KaatrQ.mjs +0 -1
  313. package/website/dist/_worker.js/chunks/lua_CwnEf-T7.mjs +0 -1
  314. package/website/dist/_worker.js/chunks/luau_Br3-CXjS.mjs +0 -1
  315. package/website/dist/_worker.js/chunks/make_UBNG-kOo.mjs +0 -1
  316. package/website/dist/_worker.js/chunks/markdown_C7mhJFCm.mjs +0 -1
  317. package/website/dist/_worker.js/chunks/marko_4tchUvI7.mjs +0 -1
  318. package/website/dist/_worker.js/chunks/material-theme-darker_SKtaNEPn.mjs +0 -1
  319. package/website/dist/_worker.js/chunks/material-theme-lighter_zOX_DZCH.mjs +0 -1
  320. package/website/dist/_worker.js/chunks/material-theme-ocean_BN9WbhdC.mjs +0 -1
  321. package/website/dist/_worker.js/chunks/material-theme-palenight_DT_covjH.mjs +0 -1
  322. package/website/dist/_worker.js/chunks/material-theme_6RpeM3kc.mjs +0 -1
  323. package/website/dist/_worker.js/chunks/matlab_DCOXsPKR.mjs +0 -1
  324. package/website/dist/_worker.js/chunks/mdc_B9gb2UFP.mjs +0 -1
  325. package/website/dist/_worker.js/chunks/mdx_DGU7Nu9u.mjs +0 -1
  326. package/website/dist/_worker.js/chunks/mermaid_B69URzsZ.mjs +0 -1
  327. package/website/dist/_worker.js/chunks/min-dark_BgxifOMI.mjs +0 -1
  328. package/website/dist/_worker.js/chunks/min-light_BrPjXxUp.mjs +0 -1
  329. package/website/dist/_worker.js/chunks/mipsasm_9U-4_t7k.mjs +0 -1
  330. package/website/dist/_worker.js/chunks/mojo_B0wt7ug3.mjs +0 -1
  331. package/website/dist/_worker.js/chunks/monokai_B6Pxpoyi.mjs +0 -1
  332. package/website/dist/_worker.js/chunks/move_1eid4CyR.mjs +0 -1
  333. package/website/dist/_worker.js/chunks/narrat_Ds6-p5JZ.mjs +0 -1
  334. package/website/dist/_worker.js/chunks/nextflow_v2N1Qlqa.mjs +0 -1
  335. package/website/dist/_worker.js/chunks/nginx_Bp9Ab2NH.mjs +0 -1
  336. package/website/dist/_worker.js/chunks/night-owl_CdwOw_sc.mjs +0 -1
  337. package/website/dist/_worker.js/chunks/nim_BXGDUe53.mjs +0 -1
  338. package/website/dist/_worker.js/chunks/nix_CUig1nJH.mjs +0 -1
  339. package/website/dist/_worker.js/chunks/noop-middleware_B8fH5jha.mjs +0 -10
  340. package/website/dist/_worker.js/chunks/nord_SPoG1iae.mjs +0 -1
  341. package/website/dist/_worker.js/chunks/nushell_DJw1Lca8.mjs +0 -1
  342. package/website/dist/_worker.js/chunks/objective-c_Bktzl_CO.mjs +0 -1
  343. package/website/dist/_worker.js/chunks/objective-cpp_CP4DWdDp.mjs +0 -1
  344. package/website/dist/_worker.js/chunks/ocaml_CeEAs7bZ.mjs +0 -1
  345. package/website/dist/_worker.js/chunks/one-dark-pro_-hIwCNMi.mjs +0 -1
  346. package/website/dist/_worker.js/chunks/one-light_DSmYvJ05.mjs +0 -1
  347. package/website/dist/_worker.js/chunks/pascal_C-S_Ms_o.mjs +0 -1
  348. package/website/dist/_worker.js/chunks/perl_CKamvo15.mjs +0 -1
  349. package/website/dist/_worker.js/chunks/php_BlmcX_F3.mjs +0 -1
  350. package/website/dist/_worker.js/chunks/plastic_Ryt8tVoA.mjs +0 -1
  351. package/website/dist/_worker.js/chunks/plsql_Cb3v7cBj.mjs +0 -1
  352. package/website/dist/_worker.js/chunks/po_DZbdNRlo.mjs +0 -1
  353. package/website/dist/_worker.js/chunks/poimandres_bYmE3_5d.mjs +0 -1
  354. package/website/dist/_worker.js/chunks/polar_pJkMGwoW.mjs +0 -1
  355. package/website/dist/_worker.js/chunks/postcss_BAXSOKgk.mjs +0 -1
  356. package/website/dist/_worker.js/chunks/powerquery_oITMGN4x.mjs +0 -1
  357. package/website/dist/_worker.js/chunks/powershell_6306-xIF.mjs +0 -1
  358. package/website/dist/_worker.js/chunks/prisma_DSDxnZGz.mjs +0 -1
  359. package/website/dist/_worker.js/chunks/prolog_CxG7tjZR.mjs +0 -1
  360. package/website/dist/_worker.js/chunks/proto_CS9ByXm1.mjs +0 -1
  361. package/website/dist/_worker.js/chunks/pug_BMtLJo6U.mjs +0 -1
  362. package/website/dist/_worker.js/chunks/puppet_BfeeSzee.mjs +0 -1
  363. package/website/dist/_worker.js/chunks/purescript_BFfueNaH.mjs +0 -1
  364. package/website/dist/_worker.js/chunks/python_Cc4Faapv.mjs +0 -1
  365. package/website/dist/_worker.js/chunks/qml_C1CTJTK8.mjs +0 -1
  366. package/website/dist/_worker.js/chunks/qmldir_nG1KaqKR.mjs +0 -1
  367. package/website/dist/_worker.js/chunks/qss_Cncxk263.mjs +0 -1
  368. package/website/dist/_worker.js/chunks/r_ChR54Ihi.mjs +0 -1
  369. package/website/dist/_worker.js/chunks/racket_BDrhptDs.mjs +0 -1
  370. package/website/dist/_worker.js/chunks/raku_07OUHa0P.mjs +0 -1
  371. package/website/dist/_worker.js/chunks/razor_DIP3INLa.mjs +0 -1
  372. package/website/dist/_worker.js/chunks/red_DOPXfj-6.mjs +0 -1
  373. package/website/dist/_worker.js/chunks/reg_B64SwEDj.mjs +0 -1
  374. package/website/dist/_worker.js/chunks/regexp_ButFGoB5.mjs +0 -1
  375. package/website/dist/_worker.js/chunks/rel_BWJAWqZD.mjs +0 -1
  376. package/website/dist/_worker.js/chunks/riscv_79gXlbsF.mjs +0 -1
  377. package/website/dist/_worker.js/chunks/rose-pine-dawn_DHIjVGd3.mjs +0 -1
  378. package/website/dist/_worker.js/chunks/rose-pine-moon_t86aEbs0.mjs +0 -1
  379. package/website/dist/_worker.js/chunks/rose-pine_BHgrcDCs.mjs +0 -1
  380. package/website/dist/_worker.js/chunks/rst_D3F4Fcpj.mjs +0 -1
  381. package/website/dist/_worker.js/chunks/ruby_Cs7vM9iv.mjs +0 -1
  382. package/website/dist/_worker.js/chunks/rust_DpyRVatH.mjs +0 -1
  383. package/website/dist/_worker.js/chunks/sas_DW45xZXN.mjs +0 -1
  384. package/website/dist/_worker.js/chunks/sass_C6SiMwN_.mjs +0 -1
  385. package/website/dist/_worker.js/chunks/scala_DlZOjNZk.mjs +0 -1
  386. package/website/dist/_worker.js/chunks/scheme_D2ezSJXu.mjs +0 -1
  387. package/website/dist/_worker.js/chunks/scss_DG5Spjqu.mjs +0 -1
  388. package/website/dist/_worker.js/chunks/sdbl_ZCYaj4VN.mjs +0 -1
  389. package/website/dist/_worker.js/chunks/shaderlab_CAcRkg1_.mjs +0 -1
  390. package/website/dist/_worker.js/chunks/shellscript_BWwhkDVh.mjs +0 -1
  391. package/website/dist/_worker.js/chunks/shellsession_BfEA3juK.mjs +0 -1
  392. package/website/dist/_worker.js/chunks/slack-dark_CL3lSpCc.mjs +0 -1
  393. package/website/dist/_worker.js/chunks/slack-ochin_DdZKOQVh.mjs +0 -1
  394. package/website/dist/_worker.js/chunks/smalltalk_DgilzSui.mjs +0 -1
  395. package/website/dist/_worker.js/chunks/snazzy-light_eJU08Pz_.mjs +0 -1
  396. package/website/dist/_worker.js/chunks/solarized-dark_Dg_YQywx.mjs +0 -1
  397. package/website/dist/_worker.js/chunks/solarized-light_BnIsrA6p.mjs +0 -1
  398. package/website/dist/_worker.js/chunks/solidity_DkseH8pQ.mjs +0 -1
  399. package/website/dist/_worker.js/chunks/soy_DU7bOYoG.mjs +0 -1
  400. package/website/dist/_worker.js/chunks/sparql_BuI1DBDH.mjs +0 -1
  401. package/website/dist/_worker.js/chunks/splunk_B8Ha9Pkg.mjs +0 -1
  402. package/website/dist/_worker.js/chunks/sql_BniHwea5.mjs +0 -1
  403. package/website/dist/_worker.js/chunks/ssh-config_CkE1GuVe.mjs +0 -1
  404. package/website/dist/_worker.js/chunks/stata_Dtqpbd_l.mjs +0 -1
  405. package/website/dist/_worker.js/chunks/stylus_CXTtglzO.mjs +0 -1
  406. package/website/dist/_worker.js/chunks/svelte_BjWYcUCN.mjs +0 -1
  407. package/website/dist/_worker.js/chunks/swift_BzHql_rM.mjs +0 -1
  408. package/website/dist/_worker.js/chunks/synthwave-84_DLRNhxNA.mjs +0 -1
  409. package/website/dist/_worker.js/chunks/system-verilog_ChyInPph.mjs +0 -1
  410. package/website/dist/_worker.js/chunks/systemd_Bi9Qa2qD.mjs +0 -1
  411. package/website/dist/_worker.js/chunks/talonscript_B3sH_Y-V.mjs +0 -1
  412. package/website/dist/_worker.js/chunks/tasl_BJ5yipRs.mjs +0 -1
  413. package/website/dist/_worker.js/chunks/tcl_CoJQjNoP.mjs +0 -1
  414. package/website/dist/_worker.js/chunks/templ_CrU7Ffil.mjs +0 -1
  415. package/website/dist/_worker.js/chunks/terraform_DT9JSFpC.mjs +0 -1
  416. package/website/dist/_worker.js/chunks/tex_5PKu2yA0.mjs +0 -1
  417. package/website/dist/_worker.js/chunks/tokyo-night_Buo8OK7-.mjs +0 -1
  418. package/website/dist/_worker.js/chunks/toml_CPuXX3oc.mjs +0 -1
  419. package/website/dist/_worker.js/chunks/ts-tags_D0M_1VSH.mjs +0 -1
  420. package/website/dist/_worker.js/chunks/tsv_CuivVNot.mjs +0 -1
  421. package/website/dist/_worker.js/chunks/tsx_MkuGr8MY.mjs +0 -1
  422. package/website/dist/_worker.js/chunks/turtle_BqgEPK7f.mjs +0 -1
  423. package/website/dist/_worker.js/chunks/twig_r1G9rpYJ.mjs +0 -1
  424. package/website/dist/_worker.js/chunks/typescript_Au5buqzM.mjs +0 -1
  425. package/website/dist/_worker.js/chunks/typespec_47rhBK_z.mjs +0 -1
  426. package/website/dist/_worker.js/chunks/typst_BAtuQLh-.mjs +0 -1
  427. package/website/dist/_worker.js/chunks/v_BIvWImHg.mjs +0 -1
  428. package/website/dist/_worker.js/chunks/vala_DYEacj30.mjs +0 -1
  429. package/website/dist/_worker.js/chunks/vb_CikQuqGJ.mjs +0 -1
  430. package/website/dist/_worker.js/chunks/verilog_BQRENwI-.mjs +0 -1
  431. package/website/dist/_worker.js/chunks/vesper_DA0kvTmj.mjs +0 -1
  432. package/website/dist/_worker.js/chunks/vhdl_DHscJIyg.mjs +0 -1
  433. package/website/dist/_worker.js/chunks/viml_F2pvMwvG.mjs +0 -1
  434. package/website/dist/_worker.js/chunks/vitesse-black_D9tjNzd0.mjs +0 -1
  435. package/website/dist/_worker.js/chunks/vitesse-dark_Bnm5d0hd.mjs +0 -1
  436. package/website/dist/_worker.js/chunks/vitesse-light_CHwbyjNR.mjs +0 -1
  437. package/website/dist/_worker.js/chunks/vue-html_DyYtbbMK.mjs +0 -1
  438. package/website/dist/_worker.js/chunks/vue_DofN6juy.mjs +0 -1
  439. package/website/dist/_worker.js/chunks/vyper_CiR0m-OV.mjs +0 -1
  440. package/website/dist/_worker.js/chunks/wasm_CwIGgRGf.mjs +0 -1
  441. package/website/dist/_worker.js/chunks/wasm_jKWhg0J0.mjs +0 -1
  442. package/website/dist/_worker.js/chunks/wenyan_DKvVZKXW.mjs +0 -1
  443. package/website/dist/_worker.js/chunks/wgsl_BOWZY7yw.mjs +0 -1
  444. package/website/dist/_worker.js/chunks/wikitext_CXDhhHPy.mjs +0 -1
  445. package/website/dist/_worker.js/chunks/wolfram_ChkmGnW0.mjs +0 -1
  446. package/website/dist/_worker.js/chunks/xml_DXH3hHIu.mjs +0 -1
  447. package/website/dist/_worker.js/chunks/xsl_DuP2mFjg.mjs +0 -1
  448. package/website/dist/_worker.js/chunks/yaml_IGiEkTge.mjs +0 -1
  449. package/website/dist/_worker.js/chunks/zenscript_59iXGyNw.mjs +0 -1
  450. package/website/dist/_worker.js/chunks/zig_DKzb0zdT.mjs +0 -1
  451. package/website/dist/_worker.js/index.js +0 -61
  452. package/website/dist/_worker.js/manifest_Bk6136-u.mjs +0 -98
  453. package/website/dist/_worker.js/pages/_image.astro.mjs +0 -24
  454. package/website/dist/_worker.js/pages/agents.astro.mjs +0 -1
  455. package/website/dist/_worker.js/pages/animation.astro.mjs +0 -1
  456. package/website/dist/_worker.js/pages/api/playground/render.astro.mjs +0 -25562
  457. package/website/dist/_worker.js/pages/api/playground/templates.astro.mjs +0 -92
  458. package/website/dist/_worker.js/pages/api/raw-markdown/_---path_.astro.mjs +0 -44
  459. package/website/dist/_worker.js/pages/config.astro.mjs +0 -1
  460. package/website/dist/_worker.js/pages/fonts.astro.mjs +0 -1
  461. package/website/dist/_worker.js/pages/getting-started.astro.mjs +0 -1
  462. package/website/dist/_worker.js/pages/helpers.astro.mjs +0 -1
  463. package/website/dist/_worker.js/pages/images.astro.mjs +0 -1
  464. package/website/dist/_worker.js/pages/index.astro.mjs +0 -1
  465. package/website/dist/_worker.js/pages/llm.txt.astro.mjs +0 -1
  466. package/website/dist/_worker.js/pages/playground/_example_.astro.mjs +0 -95
  467. package/website/dist/_worker.js/pages/playground.astro.mjs +0 -1
  468. package/website/dist/_worker.js/pages/preview.astro.mjs +0 -1
  469. package/website/dist/_worker.js/pages/sdk.astro.mjs +0 -1
  470. package/website/dist/_worker.js/pages/sitemap.xml.astro.mjs +0 -1
  471. package/website/dist/_worker.js/pages/styling.astro.mjs +0 -1
  472. package/website/dist/_worker.js/pages/templates.astro.mjs +0 -1
  473. package/website/dist/_worker.js/pages/video.astro.mjs +0 -1
  474. package/website/dist/_worker.js/renderers.mjs +0 -2
  475. package/website/dist/agents/index.html +0 -54
  476. package/website/dist/animation/index.html +0 -1505
  477. package/website/dist/config/index.html +0 -186
  478. package/website/dist/fonts/index.html +0 -200
  479. package/website/dist/getting-started/index.html +0 -109
  480. package/website/dist/helpers/index.html +0 -350
  481. package/website/dist/images/index.html +0 -337
  482. package/website/dist/index.html +0 -141
  483. package/website/dist/llm.txt +0 -3626
  484. package/website/dist/playground/index.html +0 -6
  485. package/website/dist/preview/index.html +0 -113
  486. package/website/dist/robots.txt +0 -40
  487. package/website/dist/sdk/index.html +0 -1588
  488. package/website/dist/sitemap.xml +0 -76
  489. package/website/dist/styling/index.html +0 -368
  490. package/website/dist/templates/index.html +0 -76
  491. package/website/dist/video/index.html +0 -354
  492. package/website/package-lock.json +0 -8099
  493. package/website/package.json +0 -43
  494. package/website/public/.gitkeep +0 -5
  495. package/website/public/robots.txt +0 -40
  496. package/website/templates/og-image.tsx +0 -60
  497. package/website/wrangler.toml +0 -9
@@ -1,1033 +0,0 @@
1
- globalThis.process ??= {}; globalThis.process.env ??= {};
2
- import { r as requestIs404Or500, n as notFound, a as redirectToFallback, b as redirectToDefaultLocale, c as requestHasLocale, d as normalizeTheLocale, e as defineMiddleware, R as RouteCache, s as sequence, f as findRouteToRewrite, m as matchRoute, g as RenderContext, h as getSetCookiesFromResponse } from './chunks/index_BDWR1Q-q.mjs';
3
- import { p as ROUTE_TYPE_HEADER, R as REROUTE_DIRECTIVE_HEADER, G as decryptString, H as createSlotValueFromString, f as renderComponent, r as renderTemplate, D as DEFAULT_404_COMPONENT, I as bold, J as red, K as yellow, L as dim, M as blue, s as clientLocalsSymbol, t as clientAddressSymbol, O as REROUTABLE_STATUS_CODES, u as responseSentSymbol } from './chunks/astro/server_CsUrSZgd.mjs';
4
- import { W as fileExtension, j as joinPaths, X as slash, Y as prependForwardSlash, s as removeTrailingForwardSlash, g as appendForwardSlash, A as AstroError, L as LocalsNotAnObject } from './chunks/astro/assets-service_j52rQLzU.mjs';
5
- import { N as NOOP_MIDDLEWARE_FN } from './chunks/noop-middleware_B8fH5jha.mjs';
6
- import { e as ensure404Route, D as DEFAULT_404_ROUTE, a as default404Instance } from './chunks/astro-designed-error-pages_1ELXm5Tt.mjs';
7
-
8
- function createI18nMiddleware(i18n, base, trailingSlash, format) {
9
- if (!i18n) return (_, next) => next();
10
- const payload = {
11
- ...i18n,
12
- trailingSlash,
13
- base,
14
- format};
15
- const _redirectToDefaultLocale = redirectToDefaultLocale(payload);
16
- const _noFoundForNonLocaleRoute = notFound(payload);
17
- const _requestHasLocale = requestHasLocale(payload.locales);
18
- const _redirectToFallback = redirectToFallback(payload);
19
- const prefixAlways = (context) => {
20
- const url = context.url;
21
- if (url.pathname === base + "/" || url.pathname === base) {
22
- return _redirectToDefaultLocale(context);
23
- } else if (!_requestHasLocale(context)) {
24
- return _noFoundForNonLocaleRoute(context);
25
- }
26
- return void 0;
27
- };
28
- const prefixOtherLocales = (context, response) => {
29
- let pathnameContainsDefaultLocale = false;
30
- const url = context.url;
31
- for (const segment of url.pathname.split("/")) {
32
- if (normalizeTheLocale(segment) === normalizeTheLocale(i18n.defaultLocale)) {
33
- pathnameContainsDefaultLocale = true;
34
- break;
35
- }
36
- }
37
- if (pathnameContainsDefaultLocale) {
38
- const newLocation = url.pathname.replace(`/${i18n.defaultLocale}`, "");
39
- response.headers.set("Location", newLocation);
40
- return _noFoundForNonLocaleRoute(context);
41
- }
42
- return void 0;
43
- };
44
- return async (context, next) => {
45
- const response = await next();
46
- const type = response.headers.get(ROUTE_TYPE_HEADER);
47
- const isReroute = response.headers.get(REROUTE_DIRECTIVE_HEADER);
48
- if (isReroute === "no" && typeof i18n.fallback === "undefined") {
49
- return response;
50
- }
51
- if (type !== "page" && type !== "fallback") {
52
- return response;
53
- }
54
- if (requestIs404Or500(context.request, base)) {
55
- return response;
56
- }
57
- const { currentLocale } = context;
58
- switch (i18n.strategy) {
59
- case "manual": {
60
- return response;
61
- }
62
- case "domains-prefix-other-locales": {
63
- if (localeHasntDomain(i18n, currentLocale)) {
64
- const result = prefixOtherLocales(context, response);
65
- if (result) {
66
- return result;
67
- }
68
- }
69
- break;
70
- }
71
- case "pathname-prefix-other-locales": {
72
- const result = prefixOtherLocales(context, response);
73
- if (result) {
74
- return result;
75
- }
76
- break;
77
- }
78
- case "domains-prefix-always-no-redirect": {
79
- if (localeHasntDomain(i18n, currentLocale)) {
80
- const result = _noFoundForNonLocaleRoute(context, response);
81
- if (result) {
82
- return result;
83
- }
84
- }
85
- break;
86
- }
87
- case "pathname-prefix-always-no-redirect": {
88
- const result = _noFoundForNonLocaleRoute(context, response);
89
- if (result) {
90
- return result;
91
- }
92
- break;
93
- }
94
- case "pathname-prefix-always": {
95
- const result = prefixAlways(context);
96
- if (result) {
97
- return result;
98
- }
99
- break;
100
- }
101
- case "domains-prefix-always": {
102
- if (localeHasntDomain(i18n, currentLocale)) {
103
- const result = prefixAlways(context);
104
- if (result) {
105
- return result;
106
- }
107
- }
108
- break;
109
- }
110
- }
111
- return _redirectToFallback(context, response);
112
- };
113
- }
114
- function localeHasntDomain(i18n, currentLocale) {
115
- for (const domainLocale of Object.values(i18n.domainLookupTable)) {
116
- if (domainLocale === currentLocale) {
117
- return false;
118
- }
119
- }
120
- return true;
121
- }
122
-
123
- const FORM_CONTENT_TYPES = [
124
- "application/x-www-form-urlencoded",
125
- "multipart/form-data",
126
- "text/plain"
127
- ];
128
- function createOriginCheckMiddleware() {
129
- return defineMiddleware((context, next) => {
130
- const { request, url } = context;
131
- if (request.method === "GET") {
132
- return next();
133
- }
134
- const sameOrigin = (request.method === "POST" || request.method === "PUT" || request.method === "PATCH" || request.method === "DELETE") && request.headers.get("origin") === url.origin;
135
- const hasContentType = request.headers.has("content-type");
136
- if (hasContentType) {
137
- const formLikeHeader = hasFormLikeHeader(request.headers.get("content-type"));
138
- if (formLikeHeader && !sameOrigin) {
139
- return new Response(`Cross-site ${request.method} form submissions are forbidden`, {
140
- status: 403
141
- });
142
- }
143
- } else {
144
- if (!sameOrigin) {
145
- return new Response(`Cross-site ${request.method} form submissions are forbidden`, {
146
- status: 403
147
- });
148
- }
149
- }
150
- return next();
151
- });
152
- }
153
- function hasFormLikeHeader(contentType) {
154
- if (contentType) {
155
- for (const FORM_CONTENT_TYPE of FORM_CONTENT_TYPES) {
156
- if (contentType.toLowerCase().includes(FORM_CONTENT_TYPE)) {
157
- return true;
158
- }
159
- }
160
- }
161
- return false;
162
- }
163
-
164
- function getPattern(segments, base, addTrailingSlash) {
165
- const pathname = segments.map((segment) => {
166
- if (segment.length === 1 && segment[0].spread) {
167
- return "(?:\\/(.*?))?";
168
- } else {
169
- return "\\/" + segment.map((part) => {
170
- if (part.spread) {
171
- return "(.*?)";
172
- } else if (part.dynamic) {
173
- return "([^/]+?)";
174
- } else {
175
- return part.content.normalize().replace(/\?/g, "%3F").replace(/#/g, "%23").replace(/%5B/g, "[").replace(/%5D/g, "]").replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
176
- }
177
- }).join("");
178
- }
179
- }).join("");
180
- const trailing = addTrailingSlash && segments.length ? getTrailingSlashPattern(addTrailingSlash) : "$";
181
- let initial = "\\/";
182
- if (addTrailingSlash === "never" && base !== "/") {
183
- initial = "";
184
- }
185
- return new RegExp(`^${pathname || initial}${trailing}`);
186
- }
187
- function getTrailingSlashPattern(addTrailingSlash) {
188
- if (addTrailingSlash === "always") {
189
- return "\\/$";
190
- }
191
- if (addTrailingSlash === "never") {
192
- return "$";
193
- }
194
- return "\\/?$";
195
- }
196
-
197
- const SERVER_ISLAND_ROUTE = "/_server-islands/[name]";
198
- const SERVER_ISLAND_COMPONENT = "_server-islands.astro";
199
- function getServerIslandRouteData(config) {
200
- const segments = [
201
- [{ content: "_server-islands", dynamic: false, spread: false }],
202
- [{ content: "name", dynamic: true, spread: false }]
203
- ];
204
- const route = {
205
- type: "page",
206
- component: SERVER_ISLAND_COMPONENT,
207
- generate: () => "",
208
- params: ["name"],
209
- segments,
210
- pattern: getPattern(segments, config.base, config.trailingSlash),
211
- prerender: false,
212
- isIndex: false,
213
- fallbackRoutes: [],
214
- route: SERVER_ISLAND_ROUTE
215
- };
216
- return route;
217
- }
218
- function ensureServerIslandRoute(config, routeManifest) {
219
- if (routeManifest.routes.some((route) => route.route === "/_server-islands/[name]")) {
220
- return;
221
- }
222
- routeManifest.routes.unshift(getServerIslandRouteData(config));
223
- }
224
- function createEndpoint(manifest) {
225
- const page = async (result) => {
226
- const params = result.params;
227
- const request = result.request;
228
- const raw = await request.text();
229
- const data = JSON.parse(raw);
230
- if (!params.name) {
231
- return new Response(null, {
232
- status: 400,
233
- statusText: "Bad request"
234
- });
235
- }
236
- const componentId = params.name;
237
- const imp = manifest.serverIslandMap?.get(componentId);
238
- if (!imp) {
239
- return new Response(null, {
240
- status: 404,
241
- statusText: "Not found"
242
- });
243
- }
244
- const key = await manifest.key;
245
- const encryptedProps = data.encryptedProps;
246
- const propString = await decryptString(key, encryptedProps);
247
- const props = JSON.parse(propString);
248
- const componentModule = await imp();
249
- const Component = componentModule[data.componentExport];
250
- const slots = {};
251
- for (const prop in data.slots) {
252
- slots[prop] = createSlotValueFromString(data.slots[prop]);
253
- }
254
- return renderTemplate`${renderComponent(result, "Component", Component, props, slots)}`;
255
- };
256
- page.isAstroComponentFactory = true;
257
- const instance = {
258
- default: page,
259
- partial: true
260
- };
261
- return instance;
262
- }
263
-
264
- function injectDefaultRoutes(ssrManifest, routeManifest) {
265
- ensure404Route(routeManifest);
266
- ensureServerIslandRoute(ssrManifest, routeManifest);
267
- return routeManifest;
268
- }
269
- function createDefaultRoutes(manifest) {
270
- const root = new URL(manifest.hrefRoot);
271
- return [
272
- {
273
- instance: default404Instance,
274
- matchesComponent: (filePath) => filePath.href === new URL(DEFAULT_404_COMPONENT, root).href,
275
- route: DEFAULT_404_ROUTE.route,
276
- component: DEFAULT_404_COMPONENT
277
- },
278
- {
279
- instance: createEndpoint(manifest),
280
- matchesComponent: (filePath) => filePath.href === new URL(SERVER_ISLAND_COMPONENT, root).href,
281
- route: SERVER_ISLAND_ROUTE,
282
- component: SERVER_ISLAND_COMPONENT
283
- }
284
- ];
285
- }
286
-
287
- class Pipeline {
288
- constructor(logger, manifest, mode, renderers, resolve, serverLike, streaming, adapterName = manifest.adapterName, clientDirectives = manifest.clientDirectives, inlinedScripts = manifest.inlinedScripts, compressHTML = manifest.compressHTML, i18n = manifest.i18n, middleware = manifest.middleware, routeCache = new RouteCache(logger, mode), site = manifest.site ? new URL(manifest.site) : void 0, defaultRoutes = createDefaultRoutes(manifest)) {
289
- this.logger = logger;
290
- this.manifest = manifest;
291
- this.mode = mode;
292
- this.renderers = renderers;
293
- this.resolve = resolve;
294
- this.serverLike = serverLike;
295
- this.streaming = streaming;
296
- this.adapterName = adapterName;
297
- this.clientDirectives = clientDirectives;
298
- this.inlinedScripts = inlinedScripts;
299
- this.compressHTML = compressHTML;
300
- this.i18n = i18n;
301
- this.middleware = middleware;
302
- this.routeCache = routeCache;
303
- this.site = site;
304
- this.defaultRoutes = defaultRoutes;
305
- this.internalMiddleware = [];
306
- if (i18n?.strategy !== "manual") {
307
- this.internalMiddleware.push(
308
- createI18nMiddleware(i18n, manifest.base, manifest.trailingSlash, manifest.buildFormat)
309
- );
310
- }
311
- }
312
- internalMiddleware;
313
- resolvedMiddleware = void 0;
314
- /**
315
- * Resolves the middleware from the manifest, and returns the `onRequest` function. If `onRequest` isn't there,
316
- * it returns a no-op function
317
- */
318
- async getMiddleware() {
319
- if (this.resolvedMiddleware) {
320
- return this.resolvedMiddleware;
321
- } else if (this.middleware) {
322
- const middlewareInstance = await this.middleware();
323
- const onRequest = middlewareInstance.onRequest ?? NOOP_MIDDLEWARE_FN;
324
- if (this.manifest.checkOrigin) {
325
- this.resolvedMiddleware = sequence(createOriginCheckMiddleware(), onRequest);
326
- } else {
327
- this.resolvedMiddleware = onRequest;
328
- }
329
- return this.resolvedMiddleware;
330
- } else {
331
- this.resolvedMiddleware = NOOP_MIDDLEWARE_FN;
332
- return this.resolvedMiddleware;
333
- }
334
- }
335
- }
336
-
337
- const RedirectComponentInstance = {
338
- default() {
339
- return new Response(null, {
340
- status: 301
341
- });
342
- }
343
- };
344
- const RedirectSinglePageBuiltModule = {
345
- page: () => Promise.resolve(RedirectComponentInstance),
346
- onRequest: (_, next) => next(),
347
- renderers: []
348
- };
349
-
350
- const dateTimeFormat = new Intl.DateTimeFormat([], {
351
- hour: "2-digit",
352
- minute: "2-digit",
353
- second: "2-digit",
354
- hour12: false
355
- });
356
- const levels = {
357
- debug: 20,
358
- info: 30,
359
- warn: 40,
360
- error: 50,
361
- silent: 90
362
- };
363
- function log(opts, level, label, message, newLine = true) {
364
- const logLevel = opts.level;
365
- const dest = opts.dest;
366
- const event = {
367
- label,
368
- level,
369
- message,
370
- newLine
371
- };
372
- if (!isLogLevelEnabled(logLevel, level)) {
373
- return;
374
- }
375
- dest.write(event);
376
- }
377
- function isLogLevelEnabled(configuredLogLevel, level) {
378
- return levels[configuredLogLevel] <= levels[level];
379
- }
380
- function info(opts, label, message, newLine = true) {
381
- return log(opts, "info", label, message, newLine);
382
- }
383
- function warn(opts, label, message, newLine = true) {
384
- return log(opts, "warn", label, message, newLine);
385
- }
386
- function error(opts, label, message, newLine = true) {
387
- return log(opts, "error", label, message, newLine);
388
- }
389
- function debug(...args) {
390
- if ("_astroGlobalDebug" in globalThis) {
391
- globalThis._astroGlobalDebug(...args);
392
- }
393
- }
394
- function getEventPrefix({ level, label }) {
395
- const timestamp = `${dateTimeFormat.format(/* @__PURE__ */ new Date())}`;
396
- const prefix = [];
397
- if (level === "error" || level === "warn") {
398
- prefix.push(bold(timestamp));
399
- prefix.push(`[${level.toUpperCase()}]`);
400
- } else {
401
- prefix.push(timestamp);
402
- }
403
- if (label) {
404
- prefix.push(`[${label}]`);
405
- }
406
- if (level === "error") {
407
- return red(prefix.join(" "));
408
- }
409
- if (level === "warn") {
410
- return yellow(prefix.join(" "));
411
- }
412
- if (prefix.length === 1) {
413
- return dim(prefix[0]);
414
- }
415
- return dim(prefix[0]) + " " + blue(prefix.splice(1).join(" "));
416
- }
417
- class Logger {
418
- options;
419
- constructor(options) {
420
- this.options = options;
421
- }
422
- info(label, message, newLine = true) {
423
- info(this.options, label, message, newLine);
424
- }
425
- warn(label, message, newLine = true) {
426
- warn(this.options, label, message, newLine);
427
- }
428
- error(label, message, newLine = true) {
429
- error(this.options, label, message, newLine);
430
- }
431
- debug(label, ...messages) {
432
- debug(label, ...messages);
433
- }
434
- level() {
435
- return this.options.level;
436
- }
437
- forkIntegrationLogger(label) {
438
- return new AstroIntegrationLogger(this.options, label);
439
- }
440
- }
441
- class AstroIntegrationLogger {
442
- options;
443
- label;
444
- constructor(logging, label) {
445
- this.options = logging;
446
- this.label = label;
447
- }
448
- /**
449
- * Creates a new logger instance with a new label, but the same log options.
450
- */
451
- fork(label) {
452
- return new AstroIntegrationLogger(this.options, label);
453
- }
454
- info(message) {
455
- info(this.options, this.label, message);
456
- }
457
- warn(message) {
458
- warn(this.options, this.label, message);
459
- }
460
- error(message) {
461
- error(this.options, this.label, message);
462
- }
463
- debug(message) {
464
- debug(this.label, message);
465
- }
466
- }
467
-
468
- const consoleLogDestination = {
469
- write(event) {
470
- let dest = console.error;
471
- if (levels[event.level] < levels["error"]) {
472
- dest = console.log;
473
- }
474
- if (event.label === "SKIP_FORMAT") {
475
- dest(event.message);
476
- } else {
477
- dest(getEventPrefix(event) + " " + event.message);
478
- }
479
- return true;
480
- }
481
- };
482
-
483
- function getAssetsPrefix(fileExtension, assetsPrefix) {
484
- if (!assetsPrefix) return "";
485
- if (typeof assetsPrefix === "string") return assetsPrefix;
486
- const dotLessFileExtension = fileExtension.slice(1);
487
- if (assetsPrefix[dotLessFileExtension]) {
488
- return assetsPrefix[dotLessFileExtension];
489
- }
490
- return assetsPrefix.fallback;
491
- }
492
-
493
- function createAssetLink(href, base, assetsPrefix) {
494
- if (assetsPrefix) {
495
- const pf = getAssetsPrefix(fileExtension(href), assetsPrefix);
496
- return joinPaths(pf, slash(href));
497
- } else if (base) {
498
- return prependForwardSlash(joinPaths(base, slash(href)));
499
- } else {
500
- return href;
501
- }
502
- }
503
- function createStylesheetElement(stylesheet, base, assetsPrefix) {
504
- if (stylesheet.type === "inline") {
505
- return {
506
- props: {},
507
- children: stylesheet.content
508
- };
509
- } else {
510
- return {
511
- props: {
512
- rel: "stylesheet",
513
- href: createAssetLink(stylesheet.src, base, assetsPrefix)
514
- },
515
- children: ""
516
- };
517
- }
518
- }
519
- function createStylesheetElementSet(stylesheets, base, assetsPrefix) {
520
- return new Set(stylesheets.map((s) => createStylesheetElement(s, base, assetsPrefix)));
521
- }
522
- function createModuleScriptElement(script, base, assetsPrefix) {
523
- if (script.type === "external") {
524
- return createModuleScriptElementWithSrc(script.value, base, assetsPrefix);
525
- } else {
526
- return {
527
- props: {
528
- type: "module"
529
- },
530
- children: script.value
531
- };
532
- }
533
- }
534
- function createModuleScriptElementWithSrc(src, base, assetsPrefix) {
535
- return {
536
- props: {
537
- type: "module",
538
- src: createAssetLink(src, base, assetsPrefix)
539
- },
540
- children: ""
541
- };
542
- }
543
-
544
- class AppPipeline extends Pipeline {
545
- #manifestData;
546
- static create(manifestData, {
547
- logger,
548
- manifest,
549
- mode,
550
- renderers,
551
- resolve,
552
- serverLike,
553
- streaming,
554
- defaultRoutes
555
- }) {
556
- const pipeline = new AppPipeline(
557
- logger,
558
- manifest,
559
- mode,
560
- renderers,
561
- resolve,
562
- serverLike,
563
- streaming,
564
- void 0,
565
- void 0,
566
- void 0,
567
- void 0,
568
- void 0,
569
- void 0,
570
- void 0,
571
- void 0,
572
- defaultRoutes
573
- );
574
- pipeline.#manifestData = manifestData;
575
- return pipeline;
576
- }
577
- headElements(routeData) {
578
- const routeInfo = this.manifest.routes.find((route) => route.routeData === routeData);
579
- const links = /* @__PURE__ */ new Set();
580
- const scripts = /* @__PURE__ */ new Set();
581
- const styles = createStylesheetElementSet(routeInfo?.styles ?? []);
582
- for (const script of routeInfo?.scripts ?? []) {
583
- if ("stage" in script) {
584
- if (script.stage === "head-inline") {
585
- scripts.add({
586
- props: {},
587
- children: script.children
588
- });
589
- }
590
- } else {
591
- scripts.add(createModuleScriptElement(script));
592
- }
593
- }
594
- return { links, styles, scripts };
595
- }
596
- componentMetadata() {
597
- }
598
- async getComponentByRoute(routeData) {
599
- const module = await this.getModuleForRoute(routeData);
600
- return module.page();
601
- }
602
- async tryRewrite(payload, request) {
603
- const { newUrl, pathname, routeData } = findRouteToRewrite({
604
- payload,
605
- request,
606
- routes: this.manifest?.routes.map((r) => r.routeData),
607
- trailingSlash: this.manifest.trailingSlash,
608
- buildFormat: this.manifest.buildFormat,
609
- base: this.manifest.base
610
- });
611
- const componentInstance = await this.getComponentByRoute(routeData);
612
- return { newUrl, pathname, componentInstance, routeData };
613
- }
614
- async getModuleForRoute(route) {
615
- for (const defaultRoute of this.defaultRoutes) {
616
- if (route.component === defaultRoute.component) {
617
- return {
618
- page: () => Promise.resolve(defaultRoute.instance),
619
- renderers: []
620
- };
621
- }
622
- }
623
- if (route.type === "redirect") {
624
- return RedirectSinglePageBuiltModule;
625
- } else {
626
- if (this.manifest.pageMap) {
627
- const importComponentInstance = this.manifest.pageMap.get(route.component);
628
- if (!importComponentInstance) {
629
- throw new Error(
630
- `Unexpectedly unable to find a component instance for route ${route.route}`
631
- );
632
- }
633
- return await importComponentInstance();
634
- } else if (this.manifest.pageModule) {
635
- return this.manifest.pageModule;
636
- }
637
- throw new Error(
638
- "Astro couldn't find the correct page to render, probably because it wasn't correctly mapped for SSR usage. This is an internal error, please file an issue."
639
- );
640
- }
641
- }
642
- }
643
-
644
- class App {
645
- #manifest;
646
- #manifestData;
647
- #logger = new Logger({
648
- dest: consoleLogDestination,
649
- level: "info"
650
- });
651
- #baseWithoutTrailingSlash;
652
- #pipeline;
653
- #adapterLogger;
654
- #renderOptionsDeprecationWarningShown = false;
655
- constructor(manifest, streaming = true) {
656
- this.#manifest = manifest;
657
- this.#manifestData = injectDefaultRoutes(manifest, {
658
- routes: manifest.routes.map((route) => route.routeData)
659
- });
660
- this.#baseWithoutTrailingSlash = removeTrailingForwardSlash(this.#manifest.base);
661
- this.#pipeline = this.#createPipeline(this.#manifestData, streaming);
662
- this.#adapterLogger = new AstroIntegrationLogger(
663
- this.#logger.options,
664
- this.#manifest.adapterName
665
- );
666
- }
667
- getAdapterLogger() {
668
- return this.#adapterLogger;
669
- }
670
- /**
671
- * Creates a pipeline by reading the stored manifest
672
- *
673
- * @param manifestData
674
- * @param streaming
675
- * @private
676
- */
677
- #createPipeline(manifestData, streaming = false) {
678
- return AppPipeline.create(manifestData, {
679
- logger: this.#logger,
680
- manifest: this.#manifest,
681
- mode: "production",
682
- renderers: this.#manifest.renderers,
683
- defaultRoutes: createDefaultRoutes(this.#manifest),
684
- resolve: async (specifier) => {
685
- if (!(specifier in this.#manifest.entryModules)) {
686
- throw new Error(`Unable to resolve [${specifier}]`);
687
- }
688
- const bundlePath = this.#manifest.entryModules[specifier];
689
- if (bundlePath.startsWith("data:") || bundlePath.length === 0) {
690
- return bundlePath;
691
- } else {
692
- return createAssetLink(bundlePath, this.#manifest.base, this.#manifest.assetsPrefix);
693
- }
694
- },
695
- serverLike: true,
696
- streaming
697
- });
698
- }
699
- set setManifestData(newManifestData) {
700
- this.#manifestData = newManifestData;
701
- }
702
- removeBase(pathname) {
703
- if (pathname.startsWith(this.#manifest.base)) {
704
- return pathname.slice(this.#baseWithoutTrailingSlash.length + 1);
705
- }
706
- return pathname;
707
- }
708
- #getPathnameFromRequest(request) {
709
- const url = new URL(request.url);
710
- const pathname = prependForwardSlash(this.removeBase(url.pathname));
711
- return pathname;
712
- }
713
- match(request) {
714
- const url = new URL(request.url);
715
- if (this.#manifest.assets.has(url.pathname)) return void 0;
716
- let pathname = this.#computePathnameFromDomain(request);
717
- if (!pathname) {
718
- pathname = prependForwardSlash(this.removeBase(url.pathname));
719
- }
720
- let routeData = matchRoute(pathname, this.#manifestData);
721
- if (!routeData || routeData.prerender) return void 0;
722
- return routeData;
723
- }
724
- #computePathnameFromDomain(request) {
725
- let pathname = void 0;
726
- const url = new URL(request.url);
727
- if (this.#manifest.i18n && (this.#manifest.i18n.strategy === "domains-prefix-always" || this.#manifest.i18n.strategy === "domains-prefix-other-locales" || this.#manifest.i18n.strategy === "domains-prefix-always-no-redirect")) {
728
- let host = request.headers.get("X-Forwarded-Host");
729
- let protocol = request.headers.get("X-Forwarded-Proto");
730
- if (protocol) {
731
- protocol = protocol + ":";
732
- } else {
733
- protocol = url.protocol;
734
- }
735
- if (!host) {
736
- host = request.headers.get("Host");
737
- }
738
- if (host && protocol) {
739
- host = host.split(":")[0];
740
- try {
741
- let locale;
742
- const hostAsUrl = new URL(`${protocol}//${host}`);
743
- for (const [domainKey, localeValue] of Object.entries(
744
- this.#manifest.i18n.domainLookupTable
745
- )) {
746
- const domainKeyAsUrl = new URL(domainKey);
747
- if (hostAsUrl.host === domainKeyAsUrl.host && hostAsUrl.protocol === domainKeyAsUrl.protocol) {
748
- locale = localeValue;
749
- break;
750
- }
751
- }
752
- if (locale) {
753
- pathname = prependForwardSlash(
754
- joinPaths(normalizeTheLocale(locale), this.removeBase(url.pathname))
755
- );
756
- if (url.pathname.endsWith("/")) {
757
- pathname = appendForwardSlash(pathname);
758
- }
759
- }
760
- } catch (e) {
761
- this.#logger.error(
762
- "router",
763
- `Astro tried to parse ${protocol}//${host} as an URL, but it threw a parsing error. Check the X-Forwarded-Host and X-Forwarded-Proto headers.`
764
- );
765
- this.#logger.error("router", `Error: ${e}`);
766
- }
767
- }
768
- }
769
- return pathname;
770
- }
771
- async render(request, routeDataOrOptions, maybeLocals) {
772
- let routeData;
773
- let locals;
774
- let clientAddress;
775
- let addCookieHeader;
776
- if (routeDataOrOptions && ("addCookieHeader" in routeDataOrOptions || "clientAddress" in routeDataOrOptions || "locals" in routeDataOrOptions || "routeData" in routeDataOrOptions)) {
777
- if ("addCookieHeader" in routeDataOrOptions) {
778
- addCookieHeader = routeDataOrOptions.addCookieHeader;
779
- }
780
- if ("clientAddress" in routeDataOrOptions) {
781
- clientAddress = routeDataOrOptions.clientAddress;
782
- }
783
- if ("routeData" in routeDataOrOptions) {
784
- routeData = routeDataOrOptions.routeData;
785
- }
786
- if ("locals" in routeDataOrOptions) {
787
- locals = routeDataOrOptions.locals;
788
- }
789
- } else {
790
- routeData = routeDataOrOptions;
791
- locals = maybeLocals;
792
- if (routeDataOrOptions || locals) {
793
- this.#logRenderOptionsDeprecationWarning();
794
- }
795
- }
796
- if (routeData) {
797
- this.#logger.debug(
798
- "router",
799
- "The adapter " + this.#manifest.adapterName + " provided a custom RouteData for ",
800
- request.url
801
- );
802
- this.#logger.debug("router", "RouteData:\n" + routeData);
803
- }
804
- if (locals) {
805
- if (typeof locals !== "object") {
806
- const error = new AstroError(LocalsNotAnObject);
807
- this.#logger.error(null, error.stack);
808
- return this.#renderError(request, { status: 500, error });
809
- }
810
- Reflect.set(request, clientLocalsSymbol, locals);
811
- }
812
- if (clientAddress) {
813
- Reflect.set(request, clientAddressSymbol, clientAddress);
814
- }
815
- if (!routeData) {
816
- routeData = this.match(request);
817
- this.#logger.debug("router", "Astro matched the following route for " + request.url);
818
- this.#logger.debug("router", "RouteData:\n" + routeData);
819
- }
820
- if (!routeData) {
821
- this.#logger.debug("router", "Astro hasn't found routes that match " + request.url);
822
- this.#logger.debug("router", "Here's the available routes:\n", this.#manifestData);
823
- return this.#renderError(request, { locals, status: 404 });
824
- }
825
- const pathname = this.#getPathnameFromRequest(request);
826
- const defaultStatus = this.#getDefaultStatusCode(routeData, pathname);
827
- let response;
828
- try {
829
- const mod = await this.#pipeline.getModuleForRoute(routeData);
830
- const renderContext = await RenderContext.create({
831
- pipeline: this.#pipeline,
832
- locals,
833
- pathname,
834
- request,
835
- routeData,
836
- status: defaultStatus
837
- });
838
- response = await renderContext.render(await mod.page());
839
- } catch (err) {
840
- this.#logger.error(null, err.stack || err.message || String(err));
841
- return this.#renderError(request, { locals, status: 500, error: err });
842
- }
843
- if (REROUTABLE_STATUS_CODES.includes(response.status) && response.headers.get(REROUTE_DIRECTIVE_HEADER) !== "no") {
844
- return this.#renderError(request, {
845
- locals,
846
- response,
847
- status: response.status,
848
- // We don't have an error to report here. Passing null means we pass nothing intentionally
849
- // while undefined means there's no error
850
- error: response.status === 500 ? null : void 0
851
- });
852
- }
853
- if (response.headers.has(REROUTE_DIRECTIVE_HEADER)) {
854
- response.headers.delete(REROUTE_DIRECTIVE_HEADER);
855
- }
856
- if (addCookieHeader) {
857
- for (const setCookieHeaderValue of App.getSetCookieFromResponse(response)) {
858
- response.headers.append("set-cookie", setCookieHeaderValue);
859
- }
860
- }
861
- Reflect.set(response, responseSentSymbol, true);
862
- return response;
863
- }
864
- #logRenderOptionsDeprecationWarning() {
865
- if (this.#renderOptionsDeprecationWarningShown) return;
866
- this.#logger.warn(
867
- "deprecated",
868
- `The adapter ${this.#manifest.adapterName} is using a deprecated signature of the 'app.render()' method. From Astro 4.0, locals and routeData are provided as properties on an optional object to this method. Using the old signature will cause an error in Astro 5.0. See https://github.com/withastro/astro/pull/9199 for more information.`
869
- );
870
- this.#renderOptionsDeprecationWarningShown = true;
871
- }
872
- setCookieHeaders(response) {
873
- return getSetCookiesFromResponse(response);
874
- }
875
- /**
876
- * Reads all the cookies written by `Astro.cookie.set()` onto the passed response.
877
- * For example,
878
- * ```ts
879
- * for (const cookie_ of App.getSetCookieFromResponse(response)) {
880
- * const cookie: string = cookie_
881
- * }
882
- * ```
883
- * @param response The response to read cookies from.
884
- * @returns An iterator that yields key-value pairs as equal-sign-separated strings.
885
- */
886
- static getSetCookieFromResponse = getSetCookiesFromResponse;
887
- /**
888
- * If it is a known error code, try sending the according page (e.g. 404.astro / 500.astro).
889
- * This also handles pre-rendered /404 or /500 routes
890
- */
891
- async #renderError(request, {
892
- locals,
893
- status,
894
- response: originalResponse,
895
- skipMiddleware = false,
896
- error
897
- }) {
898
- const errorRoutePath = `/${status}${this.#manifest.trailingSlash === "always" ? "/" : ""}`;
899
- const errorRouteData = matchRoute(errorRoutePath, this.#manifestData);
900
- const url = new URL(request.url);
901
- if (errorRouteData) {
902
- if (errorRouteData.prerender) {
903
- const maybeDotHtml = errorRouteData.route.endsWith(`/${status}`) ? ".html" : "";
904
- const statusURL = new URL(
905
- `${this.#baseWithoutTrailingSlash}/${status}${maybeDotHtml}`,
906
- url
907
- );
908
- if (statusURL.toString() !== request.url) {
909
- const response2 = await fetch(statusURL.toString());
910
- const override = { status };
911
- return this.#mergeResponses(response2, originalResponse, override);
912
- }
913
- }
914
- const mod = await this.#pipeline.getModuleForRoute(errorRouteData);
915
- try {
916
- const renderContext = await RenderContext.create({
917
- locals,
918
- pipeline: this.#pipeline,
919
- middleware: skipMiddleware ? NOOP_MIDDLEWARE_FN : void 0,
920
- pathname: this.#getPathnameFromRequest(request),
921
- request,
922
- routeData: errorRouteData,
923
- status,
924
- props: { error }
925
- });
926
- const response2 = await renderContext.render(await mod.page());
927
- return this.#mergeResponses(response2, originalResponse);
928
- } catch {
929
- if (skipMiddleware === false) {
930
- return this.#renderError(request, {
931
- locals,
932
- status,
933
- response: originalResponse,
934
- skipMiddleware: true
935
- });
936
- }
937
- }
938
- }
939
- const response = this.#mergeResponses(new Response(null, { status }), originalResponse);
940
- Reflect.set(response, responseSentSymbol, true);
941
- return response;
942
- }
943
- #mergeResponses(newResponse, originalResponse, override) {
944
- if (!originalResponse) {
945
- if (override !== void 0) {
946
- return new Response(newResponse.body, {
947
- status: override.status,
948
- statusText: newResponse.statusText,
949
- headers: newResponse.headers
950
- });
951
- }
952
- return newResponse;
953
- }
954
- const status = override?.status ? override.status : originalResponse.status === 200 ? newResponse.status : originalResponse.status;
955
- try {
956
- originalResponse.headers.delete("Content-type");
957
- } catch {
958
- }
959
- return new Response(newResponse.body, {
960
- status,
961
- statusText: status === 200 ? newResponse.statusText : originalResponse.statusText,
962
- // If you're looking at here for possible bugs, it means that it's not a bug.
963
- // With the middleware, users can meddle with headers, and we should pass to the 404/500.
964
- // If users see something weird, it's because they are setting some headers they should not.
965
- //
966
- // Although, we don't want it to replace the content-type, because the error page must return `text/html`
967
- headers: new Headers([
968
- ...Array.from(newResponse.headers),
969
- ...Array.from(originalResponse.headers)
970
- ])
971
- });
972
- }
973
- #getDefaultStatusCode(routeData, pathname) {
974
- if (!routeData.pattern.test(pathname)) {
975
- for (const fallbackRoute of routeData.fallbackRoutes) {
976
- if (fallbackRoute.pattern.test(pathname)) {
977
- return 302;
978
- }
979
- }
980
- }
981
- const route = removeTrailingForwardSlash(routeData.route);
982
- if (route.endsWith("/404")) return 404;
983
- if (route.endsWith("/500")) return 500;
984
- return 200;
985
- }
986
- }
987
-
988
- function createExports(manifest) {
989
- const app = new App(manifest);
990
- const fetch = async (request, env, context) => {
991
- const { pathname } = new URL(request.url);
992
- if (manifest.assets.has(pathname)) {
993
- return env.ASSETS.fetch(request.url.replace(/\.html$/, ""));
994
- }
995
- const routeData = app.match(request);
996
- if (!routeData) {
997
- const asset = await env.ASSETS.fetch(request.url.replace(/index.html$/, "").replace(/\.html$/, ""));
998
- if (asset.status !== 404) {
999
- return asset;
1000
- }
1001
- }
1002
- Reflect.set(request, Symbol.for("astro.clientAddress"), request.headers.get("cf-connecting-ip"));
1003
- process.env.ASTRO_STUDIO_APP_TOKEN ??= (() => {
1004
- if (typeof env.ASTRO_STUDIO_APP_TOKEN === "string") {
1005
- return env.ASTRO_STUDIO_APP_TOKEN;
1006
- }
1007
- })();
1008
- const locals = {
1009
- runtime: {
1010
- env,
1011
- cf: request.cf,
1012
- caches,
1013
- ctx: {
1014
- waitUntil: (promise) => context.waitUntil(promise),
1015
- // Currently not available: https://developers.cloudflare.com/pages/platform/known-issues/#pages-functions
1016
- passThroughOnException: () => {
1017
- throw new Error("`passThroughOnException` is currently not available in Cloudflare Pages. See https://developers.cloudflare.com/pages/platform/known-issues/#pages-functions.");
1018
- }
1019
- }
1020
- }
1021
- };
1022
- const response = await app.render(request, { routeData, locals });
1023
- if (app.setCookieHeaders) {
1024
- for (const setCookieHeader of app.setCookieHeaders(response)) {
1025
- response.headers.append("Set-Cookie", setCookieHeader);
1026
- }
1027
- }
1028
- return response;
1029
- };
1030
- return { default: { fetch } };
1031
- }
1032
-
1033
- export { createExports };