summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/sixty-masks-lie.md5
-rw-r--r--benchmark/package.json2
-rw-r--r--examples/container-with-vitest/package.json2
-rw-r--r--examples/framework-react/package.json2
-rw-r--r--examples/framework-solid/package.json2
-rw-r--r--examples/framework-svelte/package.json2
-rw-r--r--examples/server-islands/package.json6
-rw-r--r--examples/ssr/package.json2
-rw-r--r--examples/with-nanostores/package.json2
-rw-r--r--examples/with-tailwindcss/package.json2
-rw-r--r--package.json2
-rw-r--r--packages/astro/CHANGELOG.md16
-rw-r--r--packages/astro/e2e/fixtures/actions-blog/package.json4
-rw-r--r--packages/astro/e2e/fixtures/actions-react-19/package.json2
-rw-r--r--packages/astro/e2e/fixtures/server-islands/package.json2
-rw-r--r--packages/astro/e2e/fixtures/tailwindcss/package.json2
-rw-r--r--packages/astro/e2e/fixtures/view-transitions/package.json2
-rw-r--r--packages/astro/package.json14
-rw-r--r--packages/astro/performance/fixtures/md/package.json2
-rw-r--r--packages/astro/performance/fixtures/mdoc/package.json2
-rw-r--r--packages/astro/performance/fixtures/mdx/package.json2
-rw-r--r--packages/astro/src/cli/add/index.ts12
-rw-r--r--packages/astro/src/content/content-layer.ts14
-rw-r--r--packages/astro/src/content/data-store.ts1
-rw-r--r--packages/astro/src/content/loaders/glob.ts15
-rw-r--r--packages/astro/src/content/mutable-data-store.ts29
-rw-r--r--packages/astro/src/core/errors/README.md28
-rw-r--r--packages/astro/src/core/errors/errors-data.ts87
-rw-r--r--packages/astro/src/types/public/config.ts4
-rw-r--r--packages/astro/test/content-layer.test.js4
-rw-r--r--packages/astro/test/fixtures/client-address-node/package.json2
-rw-r--r--packages/astro/test/fixtures/content-layer/content-outside-src/columbia-copy.md1
-rw-r--r--packages/astro/test/fixtures/content-layer/src/content/config.ts3
-rw-r--r--packages/astro/test/fixtures/content-layer/src/pages/collections.json.js1
-rw-r--r--packages/astro/test/fixtures/custom-assets-name/package.json2
-rw-r--r--packages/astro/test/fixtures/postcss/package.json2
-rw-r--r--packages/astro/test/fixtures/ssr-api-route/package.json2
-rw-r--r--packages/astro/test/fixtures/ssr-prerender-chunks/package.json2
-rw-r--r--packages/astro/test/fixtures/static-build-ssr/package.json2
-rw-r--r--packages/astro/test/fixtures/tailwindcss-ts/package.json2
-rw-r--r--packages/astro/test/fixtures/tailwindcss/package.json2
-rw-r--r--packages/db/test/fixtures/ticketing-example/package.json6
-rw-r--r--packages/integrations/mdx/package.json4
-rw-r--r--packages/integrations/node/CHANGELOG.md929
-rw-r--r--packages/integrations/node/README.md37
-rw-r--r--packages/integrations/node/package.json56
-rw-r--r--packages/integrations/node/src/index.ts81
-rw-r--r--packages/integrations/node/src/log-listening-on.ts88
-rw-r--r--packages/integrations/node/src/middleware.ts41
-rw-r--r--packages/integrations/node/src/preview.ts61
-rw-r--r--packages/integrations/node/src/serve-app.ts52
-rw-r--r--packages/integrations/node/src/serve-static.ts125
-rw-r--r--packages/integrations/node/src/server.ts31
-rw-r--r--packages/integrations/node/src/standalone.ts92
-rw-r--r--packages/integrations/node/src/types.ts39
-rw-r--r--packages/integrations/node/test/api-route.test.js153
-rw-r--r--packages/integrations/node/test/assets.test.js44
-rw-r--r--packages/integrations/node/test/bad-urls.test.js49
-rw-r--r--packages/integrations/node/test/encoded.test.js45
-rw-r--r--packages/integrations/node/test/errors.test.js91
-rw-r--r--packages/integrations/node/test/fixtures/api-route/package.json9
-rw-r--r--packages/integrations/node/test/fixtures/api-route/src/pages/astro-redirect.astro3
-rw-r--r--packages/integrations/node/test/fixtures/api-route/src/pages/binary.ts11
-rw-r--r--packages/integrations/node/test/fixtures/api-route/src/pages/hash.ts16
-rw-r--r--packages/integrations/node/test/fixtures/api-route/src/pages/recipes.js24
-rw-r--r--packages/integrations/node/test/fixtures/api-route/src/pages/redirect.ts5
-rw-r--r--packages/integrations/node/test/fixtures/api-route/src/pages/response-redirect.ts5
-rw-r--r--packages/integrations/node/test/fixtures/api-route/src/pages/streaming.ts22
-rw-r--r--packages/integrations/node/test/fixtures/bad-urls/package.json9
-rw-r--r--packages/integrations/node/test/fixtures/bad-urls/src/pages/index.astro1
-rw-r--r--packages/integrations/node/test/fixtures/encoded/package.json9
-rw-r--r--packages/integrations/node/test/fixtures/encoded/src/pages/blog/什么.md1
-rw-r--r--packages/integrations/node/test/fixtures/encoded/src/pages/什么.astro1
-rw-r--r--packages/integrations/node/test/fixtures/errors/package.json9
-rw-r--r--packages/integrations/node/test/fixtures/errors/src/pages/generator.astro11
-rw-r--r--packages/integrations/node/test/fixtures/errors/src/pages/in-stream.astro13
-rw-r--r--packages/integrations/node/test/fixtures/errors/src/pages/offshoot-promise-rejection.astro2
-rw-r--r--packages/integrations/node/test/fixtures/headers/package.json9
-rw-r--r--packages/integrations/node/test/fixtures/headers/src/pages/astro/component-astro-cookies-multi.astro5
-rw-r--r--packages/integrations/node/test/fixtures/headers/src/pages/astro/component-astro-cookies-single.astro4
-rw-r--r--packages/integrations/node/test/fixtures/headers/src/pages/astro/component-astro-response-cookie-multi.astro7
-rw-r--r--packages/integrations/node/test/fixtures/headers/src/pages/astro/component-astro-response-cookie-single.astro5
-rw-r--r--packages/integrations/node/test/fixtures/headers/src/pages/astro/component-response-cookies-multi.astro5
-rw-r--r--packages/integrations/node/test/fixtures/headers/src/pages/astro/component-response-cookies-single.astro4
-rw-r--r--packages/integrations/node/test/fixtures/headers/src/pages/endpoints/astro-cookies-multi.ts9
-rw-r--r--packages/integrations/node/test/fixtures/headers/src/pages/endpoints/astro-cookies-single.ts8
-rw-r--r--packages/integrations/node/test/fixtures/headers/src/pages/endpoints/astro-response-cookie-multi.ts11
-rw-r--r--packages/integrations/node/test/fixtures/headers/src/pages/endpoints/astro-response-cookie-single.ts9
-rw-r--r--packages/integrations/node/test/fixtures/headers/src/pages/endpoints/kitchen-sink.ts11
-rw-r--r--packages/integrations/node/test/fixtures/headers/src/pages/endpoints/response-cookies-multi.ts7
-rw-r--r--packages/integrations/node/test/fixtures/headers/src/pages/endpoints/response-cookies-single.ts6
-rw-r--r--packages/integrations/node/test/fixtures/headers/src/pages/endpoints/response-empty-headers-object.ts4
-rw-r--r--packages/integrations/node/test/fixtures/headers/src/pages/endpoints/response-undefined-headers-object.ts3
-rw-r--r--packages/integrations/node/test/fixtures/headers/src/pages/endpoints/simple.ts6
-rw-r--r--packages/integrations/node/test/fixtures/image/package.json13
-rw-r--r--packages/integrations/node/test/fixtures/image/src/assets/file.txt1
-rw-r--r--packages/integrations/node/test/fixtures/image/src/assets/some_penguin.pngbin285628 -> 0 bytes
-rw-r--r--packages/integrations/node/test/fixtures/image/src/pages/index.astro6
-rw-r--r--packages/integrations/node/test/fixtures/image/src/pages/text-file.astro14
-rw-r--r--packages/integrations/node/test/fixtures/locals/package.json9
-rw-r--r--packages/integrations/node/test/fixtures/locals/src/middleware.ts6
-rw-r--r--packages/integrations/node/test/fixtures/locals/src/pages/api.js10
-rw-r--r--packages/integrations/node/test/fixtures/locals/src/pages/from-astro-middleware.astro4
-rw-r--r--packages/integrations/node/test/fixtures/locals/src/pages/from-node-middleware.astro4
-rw-r--r--packages/integrations/node/test/fixtures/node-middleware/package.json9
-rw-r--r--packages/integrations/node/test/fixtures/node-middleware/src/pages/404.astro13
-rw-r--r--packages/integrations/node/test/fixtures/node-middleware/src/pages/index.astro11
-rw-r--r--packages/integrations/node/test/fixtures/node-middleware/src/pages/ssr.ts7
-rw-r--r--packages/integrations/node/test/fixtures/prerender-404-500/package.json10
-rw-r--r--packages/integrations/node/test/fixtures/prerender-404-500/src/external-stylesheet.css3
-rw-r--r--packages/integrations/node/test/fixtures/prerender-404-500/src/nondeterminism-404.ts17
-rw-r--r--packages/integrations/node/test/fixtures/prerender-404-500/src/nondeterminism-500.ts17
-rw-r--r--packages/integrations/node/test/fixtures/prerender-404-500/src/pages/404.astro5
-rw-r--r--packages/integrations/node/test/fixtures/prerender-404-500/src/pages/500.astro6
-rw-r--r--packages/integrations/node/test/fixtures/prerender-404-500/src/pages/fivehundred.astro4
-rw-r--r--packages/integrations/node/test/fixtures/prerender-404-500/src/pages/static.astro12
-rw-r--r--packages/integrations/node/test/fixtures/prerender/package.json9
-rw-r--r--packages/integrations/node/test/fixtures/prerender/src/middleware.ts7
-rw-r--r--packages/integrations/node/test/fixtures/prerender/src/pages/one.astro10
-rw-r--r--packages/integrations/node/test/fixtures/prerender/src/pages/third.astro15
-rw-r--r--packages/integrations/node/test/fixtures/prerender/src/pages/two.astro11
-rw-r--r--packages/integrations/node/test/fixtures/prerender/src/shared.ts1
-rw-r--r--packages/integrations/node/test/fixtures/preview-headers/package.json9
-rw-r--r--packages/integrations/node/test/fixtures/preview-headers/src/pages/index.astro1
-rw-r--r--packages/integrations/node/test/fixtures/trailing-slash/astro.config.mjs8
-rw-r--r--packages/integrations/node/test/fixtures/trailing-slash/package.json9
-rw-r--r--packages/integrations/node/test/fixtures/trailing-slash/public/one.css1
-rw-r--r--packages/integrations/node/test/fixtures/trailing-slash/src/pages/index.astro8
-rw-r--r--packages/integrations/node/test/fixtures/trailing-slash/src/pages/one.astro11
-rw-r--r--packages/integrations/node/test/fixtures/url/package.json9
-rw-r--r--packages/integrations/node/test/fixtures/url/src/pages/index.astro9
-rw-r--r--packages/integrations/node/test/fixtures/well-known-locations/package.json9
-rw-r--r--packages/integrations/node/test/fixtures/well-known-locations/public/.hidden/file.json1
-rw-r--r--packages/integrations/node/test/fixtures/well-known-locations/public/.well-known/apple-app-site-association3
-rw-r--r--packages/integrations/node/test/headers.test.js148
-rw-r--r--packages/integrations/node/test/image.test.js36
-rw-r--r--packages/integrations/node/test/locals.test.js81
-rw-r--r--packages/integrations/node/test/node-middleware.test.js88
-rw-r--r--packages/integrations/node/test/prerender-404-500.test.js300
-rw-r--r--packages/integrations/node/test/prerender.test.js438
-rw-r--r--packages/integrations/node/test/preview-headers.test.js38
-rw-r--r--packages/integrations/node/test/server-host.test.js21
-rw-r--r--packages/integrations/node/test/test-utils.js81
-rw-r--r--packages/integrations/node/test/trailing-slash.test.js452
-rw-r--r--packages/integrations/node/test/url.test.js115
-rw-r--r--packages/integrations/node/test/well-known-locations.test.js46
-rw-r--r--packages/integrations/node/tsconfig.json7
-rw-r--r--packages/integrations/preact/package.json2
-rw-r--r--packages/integrations/react/package.json2
-rw-r--r--packages/integrations/sitemap/package.json2
-rw-r--r--packages/integrations/tailwind/package.json2
-rw-r--r--packages/integrations/vercel/CHANGELOG.md1519
-rw-r--r--packages/integrations/vercel/README.md37
-rw-r--r--packages/integrations/vercel/src/image/build-service.ts64
-rw-r--r--packages/integrations/vercel/src/image/dev-service.ts31
-rw-r--r--packages/integrations/vercel/src/image/shared-dev-service.ts35
-rw-r--r--packages/integrations/vercel/src/image/shared.ts163
-rw-r--r--packages/integrations/vercel/src/lib/nft.ts85
-rw-r--r--packages/integrations/vercel/src/lib/prerender.ts5
-rw-r--r--packages/integrations/vercel/src/lib/redirects.ts144
-rw-r--r--packages/integrations/vercel/src/lib/speed-insights.ts29
-rw-r--r--packages/integrations/vercel/src/lib/web-analytics.ts30
-rw-r--r--packages/integrations/vercel/src/serverless/adapter.ts562
-rw-r--r--packages/integrations/vercel/src/serverless/entrypoint.ts58
-rw-r--r--packages/integrations/vercel/src/serverless/middleware.ts124
-rw-r--r--packages/integrations/vercel/src/speed-insights.ts65
-rw-r--r--packages/integrations/vercel/src/static/adapter.ts155
-rw-r--r--packages/integrations/vercel/src/types.d.ts3
-rw-r--r--packages/integrations/vercel/test/edge-middleware.test.js76
-rw-r--r--packages/integrations/vercel/test/fixtures/basic/astro.config.mjs6
-rw-r--r--packages/integrations/vercel/test/fixtures/basic/package.json9
-rw-r--r--packages/integrations/vercel/test/fixtures/basic/src/pages/one.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/basic/src/pages/two.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/image/astro.config.mjs15
-rw-r--r--packages/integrations/vercel/test/fixtures/image/package.json12
-rw-r--r--packages/integrations/vercel/test/fixtures/image/src/assets/astro.jpegbin3663 -> 0 bytes
-rw-r--r--packages/integrations/vercel/test/fixtures/image/src/assets/penguin.svg1
-rw-r--r--packages/integrations/vercel/test/fixtures/image/src/pages/index.astro13
-rw-r--r--packages/integrations/vercel/test/fixtures/isr/astro.config.mjs13
-rw-r--r--packages/integrations/vercel/test/fixtures/isr/package.json9
-rw-r--r--packages/integrations/vercel/test/fixtures/isr/src/pages/excluded/[dynamic].astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/isr/src/pages/one.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/isr/src/pages/two.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/max-duration/astro.config.mjs9
-rw-r--r--packages/integrations/vercel/test/fixtures/max-duration/package.json10
-rw-r--r--packages/integrations/vercel/test/fixtures/max-duration/src/pages/one.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/max-duration/src/pages/two.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/middleware-with-edge-file/astro.config.mjs9
-rw-r--r--packages/integrations/vercel/test/fixtures/middleware-with-edge-file/package.json9
-rw-r--r--packages/integrations/vercel/test/fixtures/middleware-with-edge-file/src/middleware.js9
-rw-r--r--packages/integrations/vercel/test/fixtures/middleware-with-edge-file/src/pages/index.astro0
-rw-r--r--packages/integrations/vercel/test/fixtures/middleware-with-edge-file/src/vercel-edge-middleware.js5
-rw-r--r--packages/integrations/vercel/test/fixtures/middleware-without-edge-file/astro.config.mjs9
-rw-r--r--packages/integrations/vercel/test/fixtures/middleware-without-edge-file/package.json9
-rw-r--r--packages/integrations/vercel/test/fixtures/middleware-without-edge-file/src/middleware.js8
-rw-r--r--packages/integrations/vercel/test/fixtures/middleware-without-edge-file/src/pages/index.astro0
-rw-r--r--packages/integrations/vercel/test/fixtures/no-output/astro.config.mjs6
-rw-r--r--packages/integrations/vercel/test/fixtures/no-output/package.json9
-rw-r--r--packages/integrations/vercel/test/fixtures/no-output/src/pages/index.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/prerendered-error-pages/astro.config.mjs7
-rw-r--r--packages/integrations/vercel/test/fixtures/prerendered-error-pages/package.json9
-rw-r--r--packages/integrations/vercel/test/fixtures/prerendered-error-pages/src/pages/404.astro4
-rw-r--r--packages/integrations/vercel/test/fixtures/prerendered-error-pages/src/pages/one.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/prerendered-error-pages/src/pages/two.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/redirects-serverless/astro.config.mjs7
-rw-r--r--packages/integrations/vercel/test/fixtures/redirects-serverless/package.json9
-rw-r--r--packages/integrations/vercel/test/fixtures/redirects-serverless/src/pages/index.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/redirects-serverless/src/pages/subpage.astro0
-rw-r--r--packages/integrations/vercel/test/fixtures/redirects/astro.config.mjs6
-rw-r--r--packages/integrations/vercel/test/fixtures/redirects/package.json9
-rw-r--r--packages/integrations/vercel/test/fixtures/redirects/src/pages/index.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/redirects/src/pages/subpage.astro0
-rw-r--r--packages/integrations/vercel/test/fixtures/redirects/src/pages/team/articles/[...slug].astro25
-rw-r--r--packages/integrations/vercel/test/fixtures/server-islands/astro.config.mjs10
-rw-r--r--packages/integrations/vercel/test/fixtures/server-islands/package.json10
-rw-r--r--packages/integrations/vercel/test/fixtures/server-islands/src/components/Island.astro1
-rw-r--r--packages/integrations/vercel/test/fixtures/server-islands/src/pages/index.astro12
-rw-r--r--packages/integrations/vercel/test/fixtures/serverless-prerender/astro.config.mjs10
-rw-r--r--packages/integrations/vercel/test/fixtures/serverless-prerender/included.js1
-rw-r--r--packages/integrations/vercel/test/fixtures/serverless-prerender/package.json9
-rw-r--r--packages/integrations/vercel/test/fixtures/serverless-prerender/src/pages/index.astro12
-rw-r--r--packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/astro.config.mjs10
-rw-r--r--packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/included.js1
-rw-r--r--packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/package.json9
-rw-r--r--packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/src/pages/[id]/index.astro12
-rw-r--r--packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/src/pages/api/[id].js7
-rw-r--r--packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/src/pages/index.astro12
-rw-r--r--packages/integrations/vercel/test/fixtures/static-assets/astro.config.mjs4
-rw-r--r--packages/integrations/vercel/test/fixtures/static-assets/package.json9
-rw-r--r--packages/integrations/vercel/test/fixtures/static-assets/src/pages/index.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/static/astro.config.mjs6
-rw-r--r--packages/integrations/vercel/test/fixtures/static/package.json9
-rw-r--r--packages/integrations/vercel/test/fixtures/static/src/pages/404.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/static/src/pages/one.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/static/src/pages/two.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/streaming/astro.config.mjs7
-rw-r--r--packages/integrations/vercel/test/fixtures/streaming/package.json10
-rw-r--r--packages/integrations/vercel/test/fixtures/streaming/src/pages/one.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/streaming/src/pages/two.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-server/astro.config.mjs10
-rw-r--r--packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-server/package.json9
-rw-r--r--packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-server/src/pages/one.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-server/src/pages/two.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-static/astro.config.mjs10
-rw-r--r--packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-static/package.json9
-rw-r--r--packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-static/src/pages/one.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-static/src/pages/two.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/with-web-analytics-enabled/output-as-static/astro.config.mjs10
-rw-r--r--packages/integrations/vercel/test/fixtures/with-web-analytics-enabled/output-as-static/package.json9
-rw-r--r--packages/integrations/vercel/test/fixtures/with-web-analytics-enabled/output-as-static/src/pages/one.astro8
-rw-r--r--packages/integrations/vercel/test/fixtures/with-web-analytics-enabled/output-as-static/src/pages/two.astro8
-rw-r--r--packages/integrations/vercel/test/hosted/README.md3
-rw-r--r--packages/integrations/vercel/test/hosted/hosted-astro-project/astro.config.mjs8
-rw-r--r--packages/integrations/vercel/test/hosted/hosted-astro-project/package.json12
-rw-r--r--packages/integrations/vercel/test/hosted/hosted-astro-project/src/assets/penguin.pngbin7295878 -> 0 bytes
-rw-r--r--packages/integrations/vercel/test/hosted/hosted-astro-project/src/pages/index.astro6
-rw-r--r--packages/integrations/vercel/test/hosted/hosted.test.js14
-rw-r--r--packages/integrations/vercel/test/image.test.js78
-rw-r--r--packages/integrations/vercel/test/isr.test.js58
-rw-r--r--packages/integrations/vercel/test/max-duration.test.js22
-rw-r--r--packages/integrations/vercel/test/no-output.test.js25
-rw-r--r--packages/integrations/vercel/test/prerendered-error-pages.test.js24
-rw-r--r--packages/integrations/vercel/test/redirects-serverless.test.js29
-rw-r--r--packages/integrations/vercel/test/redirects.test.js83
-rw-r--r--packages/integrations/vercel/test/server-islands.test.js27
-rw-r--r--packages/integrations/vercel/test/serverless-prerender.test.js55
-rw-r--r--packages/integrations/vercel/test/serverless-with-dynamic-routes.test.js22
-rw-r--r--packages/integrations/vercel/test/speed-insights.test.js47
-rw-r--r--packages/integrations/vercel/test/static-assets.test.js72
-rw-r--r--packages/integrations/vercel/test/static.test.js25
-rw-r--r--packages/integrations/vercel/test/streaming.test.js22
-rw-r--r--packages/integrations/vercel/test/test-utils.js10
-rw-r--r--packages/integrations/vercel/test/web-analytics.test.js26
-rw-r--r--packages/integrations/vercel/tsconfig.json7
-rw-r--r--packages/integrations/vercel/types.d.ts5
-rw-r--r--packages/integrations/vue/package.json2
-rw-r--r--packages/integrations/web-vitals/test/fixtures/basics/package.json2
-rw-r--r--packages/markdown/remark/package.json2
-rw-r--r--pnpm-lock.yaml1644
-rw-r--r--scripts/deps/update-example-versions.js2
-rw-r--r--scripts/package.json2
281 files changed, 682 insertions, 10244 deletions
diff --git a/.changeset/sixty-masks-lie.md b/.changeset/sixty-masks-lie.md
deleted file mode 100644
index d9b8d7a52..000000000
--- a/.changeset/sixty-masks-lie.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'astro': patch
----
-
-Refactors content layer sync to use a queue
diff --git a/benchmark/package.json b/benchmark/package.json
index 60c8621d2..149dc2096 100644
--- a/benchmark/package.json
+++ b/benchmark/package.json
@@ -8,7 +8,7 @@
},
"dependencies": {
"@astrojs/mdx": "workspace:*",
- "@astrojs/node": "workspace:*",
+ "@astrojs/node": "^8.3.3",
"@benchmark/timer": "workspace:*",
"astro": "workspace:*",
"autocannon": "^7.15.0",
diff --git a/examples/container-with-vitest/package.json b/examples/container-with-vitest/package.json
index f8b34ebbe..a8bb1e977 100644
--- a/examples/container-with-vitest/package.json
+++ b/examples/container-with-vitest/package.json
@@ -19,7 +19,7 @@
"vitest": "^2.0.5"
},
"devDependencies": {
- "@types/react": "^18.3.4",
+ "@types/react": "^18.3.5",
"@types/react-dom": "^18.3.0"
}
}
diff --git a/examples/framework-react/package.json b/examples/framework-react/package.json
index ff56a9151..821a04ba4 100644
--- a/examples/framework-react/package.json
+++ b/examples/framework-react/package.json
@@ -12,7 +12,7 @@
},
"dependencies": {
"@astrojs/react": "^3.6.2",
- "@types/react": "^18.3.4",
+ "@types/react": "^18.3.5",
"@types/react-dom": "^18.3.0",
"astro": "^5.0.0-alpha.2",
"react": "^18.3.1",
diff --git a/examples/framework-solid/package.json b/examples/framework-solid/package.json
index 699883ded..b7993227f 100644
--- a/examples/framework-solid/package.json
+++ b/examples/framework-solid/package.json
@@ -13,6 +13,6 @@
"dependencies": {
"@astrojs/solid-js": "^4.4.1",
"astro": "^5.0.0-alpha.2",
- "solid-js": "^1.8.21"
+ "solid-js": "^1.8.22"
}
}
diff --git a/examples/framework-svelte/package.json b/examples/framework-svelte/package.json
index 738d2c84f..9d3f13c9a 100644
--- a/examples/framework-svelte/package.json
+++ b/examples/framework-svelte/package.json
@@ -13,6 +13,6 @@
"dependencies": {
"@astrojs/svelte": "^6.0.0-alpha.0",
"astro": "^5.0.0-alpha.2",
- "svelte": "^4.2.18"
+ "svelte": "^4.2.19"
}
}
diff --git a/examples/server-islands/package.json b/examples/server-islands/package.json
index 13a0b9e99..810fe728f 100644
--- a/examples/server-islands/package.json
+++ b/examples/server-islands/package.json
@@ -14,11 +14,11 @@
"@astrojs/react": "^3.6.2",
"@astrojs/tailwind": "^6.0.0-alpha.0",
"@fortawesome/fontawesome-free": "^6.6.0",
- "@tailwindcss/forms": "^0.5.7",
- "@types/react": "^18.3.4",
+ "@tailwindcss/forms": "^0.5.8",
+ "@types/react": "^18.3.5",
"@types/react-dom": "^18.3.0",
"astro": "^5.0.0-alpha.2",
- "postcss": "^8.4.41",
+ "postcss": "^8.4.43",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"tailwindcss": "^3.4.10"
diff --git a/examples/ssr/package.json b/examples/ssr/package.json
index 78c5c5891..73adf03cb 100644
--- a/examples/ssr/package.json
+++ b/examples/ssr/package.json
@@ -15,6 +15,6 @@
"@astrojs/node": "^9.0.0-alpha.1",
"@astrojs/svelte": "^6.0.0-alpha.0",
"astro": "^5.0.0-alpha.2",
- "svelte": "^4.2.18"
+ "svelte": "^4.2.19"
}
}
diff --git a/examples/with-nanostores/package.json b/examples/with-nanostores/package.json
index a047aad32..14fab8f9c 100644
--- a/examples/with-nanostores/package.json
+++ b/examples/with-nanostores/package.json
@@ -14,7 +14,7 @@
"@astrojs/preact": "^3.5.2",
"@nanostores/preact": "^0.5.2",
"astro": "^5.0.0-alpha.2",
- "nanostores": "^0.11.2",
+ "nanostores": "^0.11.3",
"preact": "^10.23.2"
}
}
diff --git a/examples/with-tailwindcss/package.json b/examples/with-tailwindcss/package.json
index e793ac5ae..31d161dde 100644
--- a/examples/with-tailwindcss/package.json
+++ b/examples/with-tailwindcss/package.json
@@ -17,7 +17,7 @@
"astro": "^5.0.0-alpha.2",
"autoprefixer": "^10.4.20",
"canvas-confetti": "^1.9.3",
- "postcss": "^8.4.41",
+ "postcss": "^8.4.43",
"tailwindcss": "^3.4.10"
}
}
diff --git a/package.json b/package.json
index a5cfe218c..b863ea1f9 100644
--- a/package.json
+++ b/package.json
@@ -65,7 +65,7 @@
"only-allow": "^1.2.1",
"prettier": "^3.3.3",
"prettier-plugin-astro": "^0.14.1",
- "turbo": "^2.1.0",
+ "turbo": "^2.1.1",
"typescript": "~5.5.4",
"typescript-eslint": "^8.3.0"
},
diff --git a/packages/astro/CHANGELOG.md b/packages/astro/CHANGELOG.md
index f662bb51f..53189df28 100644
--- a/packages/astro/CHANGELOG.md
+++ b/packages/astro/CHANGELOG.md
@@ -88,6 +88,22 @@
As this is a potentially breaking change to your script behavior, please review your `<script>` tags and ensure that they behave as expected.
+## 4.15.2
+
+### Patch Changes
+
+- [#11870](https://github.com/withastro/astro/pull/11870) [`8e5257a`](https://github.com/withastro/astro/commit/8e5257addaeff809ed6f0c47ac0ed4ded755320e) Thanks [@ArmandPhilippot](https://github.com/ArmandPhilippot)! - Fixes typo in documenting the `fallbackType` property in i18n routing
+
+- [#11884](https://github.com/withastro/astro/pull/11884) [`e450704`](https://github.com/withastro/astro/commit/e45070459f18976400fc8939812e172781eba351) Thanks [@ascorbic](https://github.com/ascorbic)! - Correctly handles content layer data where the transformed value does not match the input schema
+
+- [#11900](https://github.com/withastro/astro/pull/11900) [`80b4a18`](https://github.com/withastro/astro/commit/80b4a181a077266c44065a737e61cc7cff6bc6d7) Thanks [@delucis](https://github.com/delucis)! - Fixes the user-facing type of the new `i18n.routing.fallbackType` option to be optional
+
+## 4.15.1
+
+### Patch Changes
+
+- [#11872](https://github.com/withastro/astro/pull/11872) [`9327d56`](https://github.com/withastro/astro/commit/9327d56755404b481993b058bbfc4aa7880b2304) Thanks [@bluwy](https://github.com/bluwy)! - Fixes `astro add` importing adapters and integrations
+
- [#11767](https://github.com/withastro/astro/pull/11767) [`d1bd1a1`](https://github.com/withastro/astro/commit/d1bd1a11f7aca4d2141d1c4665f2db0440393d03) Thanks [@ascorbic](https://github.com/ascorbic)! - Refactors content layer sync to use a queue
## 4.15.0
diff --git a/packages/astro/e2e/fixtures/actions-blog/package.json b/packages/astro/e2e/fixtures/actions-blog/package.json
index 545ae2d37..1bb4b4557 100644
--- a/packages/astro/e2e/fixtures/actions-blog/package.json
+++ b/packages/astro/e2e/fixtures/actions-blog/package.json
@@ -12,9 +12,9 @@
"dependencies": {
"@astrojs/check": "^0.9.3",
"@astrojs/db": "workspace:*",
- "@astrojs/node": "workspace:*",
+ "@astrojs/node": "^8.3.3",
"@astrojs/react": "workspace:*",
- "@types/react": "^18.3.4",
+ "@types/react": "^18.3.5",
"@types/react-dom": "^18.3.0",
"astro": "workspace:*",
"react": "^18.3.1",
diff --git a/packages/astro/e2e/fixtures/actions-react-19/package.json b/packages/astro/e2e/fixtures/actions-react-19/package.json
index aa5fa90dd..ef6b4fe6a 100644
--- a/packages/astro/e2e/fixtures/actions-react-19/package.json
+++ b/packages/astro/e2e/fixtures/actions-react-19/package.json
@@ -12,7 +12,7 @@
"dependencies": {
"@astrojs/check": "^0.9.3",
"@astrojs/db": "workspace:*",
- "@astrojs/node": "workspace:*",
+ "@astrojs/node": "^8.3.3",
"@astrojs/react": "workspace:*",
"@types/react": "npm:types-react",
"@types/react-dom": "npm:types-react-dom",
diff --git a/packages/astro/e2e/fixtures/server-islands/package.json b/packages/astro/e2e/fixtures/server-islands/package.json
index 9958ee287..efbfeec68 100644
--- a/packages/astro/e2e/fixtures/server-islands/package.json
+++ b/packages/astro/e2e/fixtures/server-islands/package.json
@@ -9,7 +9,7 @@
"@astrojs/react": "workspace:*",
"astro": "workspace:*",
"@astrojs/mdx": "workspace:*",
- "@astrojs/node": "workspace:*",
+ "@astrojs/node": "^8.3.3",
"react": "^18.3.1",
"react-dom": "^18.3.1"
}
diff --git a/packages/astro/e2e/fixtures/tailwindcss/package.json b/packages/astro/e2e/fixtures/tailwindcss/package.json
index 599bca6ac..14d4c210b 100644
--- a/packages/astro/e2e/fixtures/tailwindcss/package.json
+++ b/packages/astro/e2e/fixtures/tailwindcss/package.json
@@ -6,7 +6,7 @@
"@astrojs/tailwind": "workspace:*",
"astro": "workspace:*",
"autoprefixer": "^10.4.20",
- "postcss": "^8.4.41",
+ "postcss": "^8.4.43",
"tailwindcss": "^3.4.10"
}
}
diff --git a/packages/astro/e2e/fixtures/view-transitions/package.json b/packages/astro/e2e/fixtures/view-transitions/package.json
index 0a0ad81f2..e40816ffd 100644
--- a/packages/astro/e2e/fixtures/view-transitions/package.json
+++ b/packages/astro/e2e/fixtures/view-transitions/package.json
@@ -3,7 +3,7 @@
"version": "0.0.0",
"private": true,
"dependencies": {
- "@astrojs/node": "workspace:*",
+ "@astrojs/node": "^8.3.3",
"@astrojs/react": "workspace:*",
"@astrojs/svelte": "workspace:*",
"@astrojs/vue": "workspace:*",
diff --git a/packages/astro/package.json b/packages/astro/package.json
index 7afc28f56..d9c2cb04f 100644
--- a/packages/astro/package.json
+++ b/packages/astro/package.json
@@ -169,15 +169,15 @@
"prompts": "^2.4.2",
"rehype": "^13.0.1",
"semver": "^7.6.3",
- "shiki": "^1.14.1",
+ "shiki": "^1.16.1",
"string-width": "^7.2.0",
"strip-ansi": "^7.1.0",
"tinyexec": "^0.3.0",
- "tsconfck": "^3.1.1",
+ "tsconfck": "^3.1.3",
"unist-util-visit": "^5.0.0",
"vfile": "^6.0.3",
"vite": "^5.4.2",
- "vitefu": "^0.2.5",
+ "vitefu": "^1.0.2",
"which-pm": "^3.0.0",
"xxhash-wasm": "^1.0.2",
"yargs-parser": "^21.1.1",
@@ -192,12 +192,10 @@
"@astrojs/check": "^0.9.3",
"@playwright/test": "^1.46.1",
"@types/aria-query": "^5.0.4",
- "@types/babel__generator": "^7.6.8",
- "@types/babel__traverse": "^7.20.6",
"@types/common-ancestor-path": "^1.0.2",
"@types/cssesc": "^3.0.2",
"@types/debug": "^4.1.12",
- "@types/diff": "^5.2.1",
+ "@types/diff": "^5.2.2",
"@types/dlv": "^1.1.4",
"@types/dom-view-transitions": "^1.0.5",
"@types/hast": "^3.0.4",
@@ -210,7 +208,7 @@
"@types/yargs-parser": "^21.0.3",
"astro-scripts": "workspace:*",
"cheerio": "1.0.0",
- "eol": "^0.9.1",
+ "eol": "^0.10.0",
"execa": "^8.0.1",
"expect-type": "^0.20.0",
"mdast-util-mdx": "^3.0.0",
@@ -222,7 +220,7 @@
"rehype-slug": "^6.0.0",
"rehype-toc": "^3.0.2",
"remark-code-titles": "^0.1.2",
- "rollup": "^4.21.1",
+ "rollup": "^4.21.2",
"sass": "^1.77.8",
"undici": "^6.19.8",
"unified": "^11.0.5"
diff --git a/packages/astro/performance/fixtures/md/package.json b/packages/astro/performance/fixtures/md/package.json
index 90db727e4..76ea90312 100644
--- a/packages/astro/performance/fixtures/md/package.json
+++ b/packages/astro/performance/fixtures/md/package.json
@@ -16,7 +16,7 @@
"dependencies": {
"@astrojs/react": "workspace:*",
"@performance/utils": "workspace:*",
- "@types/react": "^18.3.4",
+ "@types/react": "^18.3.5",
"@types/react-dom": "^18.3.0",
"astro": "workspace:*",
"react": "^18.3.1",
diff --git a/packages/astro/performance/fixtures/mdoc/package.json b/packages/astro/performance/fixtures/mdoc/package.json
index 5bcd443ae..115798883 100644
--- a/packages/astro/performance/fixtures/mdoc/package.json
+++ b/packages/astro/performance/fixtures/mdoc/package.json
@@ -17,7 +17,7 @@
"@astrojs/markdoc": "workspace:*",
"@astrojs/react": "workspace:*",
"@performance/utils": "workspace:*",
- "@types/react": "^18.3.4",
+ "@types/react": "^18.3.5",
"@types/react-dom": "^18.3.0",
"astro": "workspace:*",
"react": "^18.3.1",
diff --git a/packages/astro/performance/fixtures/mdx/package.json b/packages/astro/performance/fixtures/mdx/package.json
index e1fc69d0d..a634aac45 100644
--- a/packages/astro/performance/fixtures/mdx/package.json
+++ b/packages/astro/performance/fixtures/mdx/package.json
@@ -17,7 +17,7 @@
"@astrojs/mdx": "workspace:*",
"@astrojs/react": "workspace:*",
"@performance/utils": "workspace:*",
- "@types/react": "^18.3.4",
+ "@types/react": "^18.3.5",
"@types/react-dom": "^18.3.0",
"astro": "workspace:*",
"react": "^18.3.1",
diff --git a/packages/astro/src/cli/add/index.ts b/packages/astro/src/cli/add/index.ts
index 2b230048c..f263904cb 100644
--- a/packages/astro/src/cli/add/index.ts
+++ b/packages/astro/src/cli/add/index.ts
@@ -427,7 +427,11 @@ function addIntegration(mod: ProxifiedModule<any>, integration: IntegrationInfo)
const integrationId = toIdent(integration.id);
if (!mod.imports.$items.some((imp) => imp.local === integrationId)) {
- mod.imports.$append({ imported: integrationId, from: integration.packageName });
+ mod.imports.$append({
+ imported: 'default',
+ local: integrationId,
+ from: integration.packageName,
+ });
}
config.integrations ??= [];
@@ -448,7 +452,11 @@ export function setAdapter(mod: ProxifiedModule<any>, adapter: IntegrationInfo)
const adapterId = toIdent(adapter.id);
if (!mod.imports.$items.some((imp) => imp.local === adapterId)) {
- mod.imports.$append({ imported: adapterId, from: adapter.packageName });
+ mod.imports.$append({
+ imported: 'default',
+ local: adapterId,
+ from: adapter.packageName,
+ });
}
if (!config.output) {
diff --git a/packages/astro/src/content/content-layer.ts b/packages/astro/src/content/content-layer.ts
index 1dd86267b..fd1aeca18 100644
--- a/packages/astro/src/content/content-layer.ts
+++ b/packages/astro/src/content/content-layer.ts
@@ -1,6 +1,4 @@
import { promises as fs, existsSync } from 'node:fs';
-import { isAbsolute } from 'node:path';
-import { fileURLToPath } from 'node:url';
import * as fastq from 'fastq';
import type { FSWatcher } from 'vite';
import xxhash from 'xxhash-wasm';
@@ -20,7 +18,6 @@ import {
getEntryConfigByExtMap,
getEntryDataAndImages,
globalContentConfigObserver,
- posixRelative,
} from './utils.js';
export interface ContentLayerOptions {
@@ -189,7 +186,7 @@ export class ContentLayer {
const collectionWithResolvedSchema = { ...collection, schema };
const parseData: LoaderContext['parseData'] = async ({ id, data, filePath = '' }) => {
- const { imageImports, data: parsedData } = await getEntryDataAndImages(
+ const { data: parsedData } = await getEntryDataAndImages(
{
id,
collection: name,
@@ -202,15 +199,6 @@ export class ContentLayer {
collectionWithResolvedSchema,
false,
);
- if (imageImports?.length) {
- this.#store.addAssetImports(
- imageImports,
- // This path may already be relative, if we're re-parsing an existing entry
- isAbsolute(filePath)
- ? posixRelative(fileURLToPath(this.#settings.config.root), filePath)
- : filePath,
- );
- }
return parsedData;
};
diff --git a/packages/astro/src/content/data-store.ts b/packages/astro/src/content/data-store.ts
index 76cefc411..fbf31d0f1 100644
--- a/packages/astro/src/content/data-store.ts
+++ b/packages/astro/src/content/data-store.ts
@@ -33,6 +33,7 @@ export interface DataEntry<TData extends Record<string, unknown> = Record<string
* If an entry is a deferred, its rendering phase is delegated to a virtual module during the runtime phase when calling `renderEntry`.
*/
deferredRender?: boolean;
+ assetImports?: Array<string>;
}
/**
diff --git a/packages/astro/src/content/loaders/glob.ts b/packages/astro/src/content/loaders/glob.ts
index 122bb0477..9c3475f34 100644
--- a/packages/astro/src/content/loaders/glob.ts
+++ b/packages/astro/src/content/loaders/glob.ts
@@ -107,15 +107,11 @@ export function glob(globOptions: GlobOptions): Loader {
store.addModuleImport(existingEntry.filePath);
}
- if (existingEntry.rendered?.metadata?.imagePaths?.length) {
+ if (existingEntry.assetImports?.length) {
// Add asset imports for existing entries
- store.addAssetImports(
- existingEntry.rendered.metadata.imagePaths,
- existingEntry.filePath,
- );
+ store.addAssetImports(existingEntry.assetImports, existingEntry.filePath);
}
- // Re-parsing to resolve images and other effects
- await parseData(existingEntry);
+
return;
}
@@ -156,10 +152,9 @@ export function glob(globOptions: GlobOptions): Loader {
filePath: relativePath,
digest,
rendered,
+ assetImports: rendered?.metadata?.imagePaths,
});
- if (rendered?.metadata?.imagePaths?.length) {
- store.addAssetImports(rendered.metadata.imagePaths, relativePath);
- }
+
// todo: add an explicit way to opt in to deferred rendering
} else if ('contentModuleTypes' in entryType) {
store.set({
diff --git a/packages/astro/src/content/mutable-data-store.ts b/packages/astro/src/content/mutable-data-store.ts
index 200951848..29acf4506 100644
--- a/packages/astro/src/content/mutable-data-store.ts
+++ b/packages/astro/src/content/mutable-data-store.ts
@@ -1,7 +1,9 @@
import { promises as fs, type PathLike, existsSync } from 'node:fs';
import * as devalue from 'devalue';
+import { Traverse } from 'neotraverse/modern';
import { imageSrcToImportId, importIdToSymbolName } from '../assets/utils/resolveImports.js';
import { AstroError, AstroErrorData } from '../core/errors/index.js';
+import { IMAGE_IMPORT_PREFIX } from './consts.js';
import { type DataEntry, DataStore, type RenderedContent } from './data-store.js';
import { contentModuleToId } from './utils.js';
@@ -53,7 +55,7 @@ export class MutableDataStore extends DataStore {
this.#saveToDiskDebounced();
}
- addAssetImport(assetImport: string, filePath: string) {
+ addAssetImport(assetImport: string, filePath?: string) {
const id = imageSrcToImportId(assetImport, filePath);
if (id) {
this.#assetImports.add(id);
@@ -64,7 +66,7 @@ export class MutableDataStore extends DataStore {
}
}
- addAssetImports(assets: Array<string>, filePath: string) {
+ addAssetImports(assets: Array<string>, filePath?: string) {
assets.forEach((asset) => this.addAssetImport(asset, filePath));
}
@@ -195,7 +197,7 @@ export default new Map([\n${lines.join(',\n')}]);
entries: () => this.entries(collectionName),
values: () => this.values(collectionName),
keys: () => this.keys(collectionName),
- set: ({ id: key, data, body, filePath, deferredRender, digest, rendered }) => {
+ set: ({ id: key, data, body, filePath, deferredRender, digest, rendered, assetImports }) => {
if (!key) {
throw new Error(`ID must be a non-empty string`);
}
@@ -206,6 +208,15 @@ export default new Map([\n${lines.join(',\n')}]);
return false;
}
}
+ const foundAssets = new Set<string>(assetImports);
+ // Check for image imports in the data. These will have been prefixed during schema parsing
+ new Traverse(data).forEach((_, val) => {
+ if (typeof val === 'string' && val.startsWith(IMAGE_IMPORT_PREFIX)) {
+ const src = val.replace(IMAGE_IMPORT_PREFIX, '');
+ foundAssets.add(src);
+ }
+ });
+
const entry: DataEntry = {
id,
data,
@@ -221,6 +232,12 @@ export default new Map([\n${lines.join(',\n')}]);
}
entry.filePath = filePath;
}
+
+ if (foundAssets.size) {
+ entry.assetImports = Array.from(foundAssets);
+ this.addAssetImports(entry.assetImports, filePath);
+ }
+
if (digest) {
entry.digest = digest;
}
@@ -334,6 +351,12 @@ export interface ScopedDataStore {
* If an entry is a deferred, its rendering phase is delegated to a virtual module during the runtime phase.
*/
deferredRender?: boolean;
+ /**
+ * Assets such as images to process during the build. These should be files on disk, with a path relative to filePath.
+ * Any values that use image() in the schema will already be added automatically.
+ * @internal
+ */
+ assetImports?: Array<string>;
}) => boolean;
values: () => Array<DataEntry>;
keys: () => Array<string>;
diff --git a/packages/astro/src/core/errors/README.md b/packages/astro/src/core/errors/README.md
index f8e7350b0..65e7743a0 100644
--- a/packages/astro/src/core/errors/README.md
+++ b/packages/astro/src/core/errors/README.md
@@ -21,8 +21,8 @@ Message:
- Begin with **what happened** and **why**. (ex: `Could not use {feature} because Server-side Rendering is not enabled.`)
- Then, **describe the action the user should take**. (ex: `Update your Astro config with `output: 'server'` to enable Server-side Rendering.`)
-- Although this does not need to be as brief as the `title`, try to keep sentences short, clear and direct to give the reader all the necessary information quickly as possible.
-- Instead of writing a longer message, consider using a `hint`.
+- Although this does not need to be as brief as the `title`, try to keep sentences short, clear and direct to give the reader all the necessary information quickly as possible. Users should be able to skim the message and understand the problem and solution.
+- If your message is too long, or the solution is not guaranteed to work, use the `hint` property to provide more information.
Hint:
@@ -44,10 +44,10 @@ If you are unsure about anything, ask [Erika](https://github.com/Princesseuh)!
### Shape
-- **Names are permanent**, and should never be changed, nor deleted. Users should always be able to find an error by searching, and this ensures a matching result. When an error is no longer relevant, it should be deprecated, not removed.
+- **Names are permanent**, and should never be changed. Users should always be able to find an error by searching, and this ensures a matching result.
- Contextual information may be used to enhance the message or the hint. However, the code that caused the error or the position of the error should not be included in the message as they will already be shown as part of the error.
- Do not prefix `title`, `message` and `hint` with descriptive words such as "Error:" or "Hint:" as it may lead to duplicated labels in the UI / CLI.
-- Dynamic error messages must use the following shape:
+- Dynamic error messages **must** use the following shape:
```js
message: (arguments) => `text ${substitute}`;
@@ -69,8 +69,9 @@ Here's how to create and format the comments:
/**
* @docs <- Needed for the comment to be used for docs
* @message <- (Optional) Clearer error message to show in cases where the original one is too complex (ex: because of conditional messages)
- * @see <- List of additional references users can look at
+ * @see <- (Optional) List of additional references users can look at
* @description <- Description of the error
+ * @deprecated <- (Optional) If the error is no longer relevant, when it was removed and why (see "Removing errors" section below)
*/
```
@@ -89,6 +90,19 @@ Example:
The `@message` property is intended to provide slightly more context when it is helpful: a more descriptive error message or a collection of common messages if there are multiple possible error messages. Try to avoid making substantial changes to existing messages so that they are easy to find for users who copy and search the exact content of an error message.
+### Removing errors
+
+If the error cannot be triggered at all anymore, it can deprecated by adding a `@deprecated` tag to the JSDoc comment with a message that will be shown in the docs. This message is useful for users on previous versions who might still encounter the error so that they can know that upgrading to a newer version of Astro would perhaps solve their issue.
+
+```js
+/**
+ * @docs
+ * @deprecated Removed in Astro v9.8.6 as it is no longer relevant due to...
+ */
+```
+
+Alternatively, if no special deprecation message is needed, errors can be directly removed from the `errors-data.ts` file. A basic message will be shown in the docs stating that the error can no longer appear in the latest version of Astro.
+
### Always remember
Error are a reactive strategy. They are the last line of defense against a mistake.
@@ -99,5 +113,7 @@ While adding a new error message, ask yourself, "Was there a way this situation
## Additional resources on writing good error messages
+- [Compiler errors for humans](https://elm-lang.org/news/compiler-errors-for-humans)
- [When life gives you lemons, write better error messages](https://wix-ux.com/when-life-gives-you-lemons-write-better-error-messages-46c5223e1a2f)
-- [RustConf 2020 - Bending the Curve: A Personal Tutor at Your Fingertips by Esteban Kuber](https://www.youtube.com/watch?v=Z6X7Ada0ugE) (part on error messages starts around 19:17)
+- [RustConf 2020 - Bending the Curve: A Personal Tutor at Your Fingertips by Esteban Kuber](https://www.youtube.com/watch?v=Z6X7Ada0ugE)
+- [What's in a good error](https://erika.florist/articles/gooderrors) (by the person who wrote this document!)
diff --git a/packages/astro/src/core/errors/errors-data.ts b/packages/astro/src/core/errors/errors-data.ts
index 88cb7f6e5..72d5739f5 100644
--- a/packages/astro/src/core/errors/errors-data.ts
+++ b/packages/astro/src/core/errors/errors-data.ts
@@ -33,25 +33,7 @@ export const UnknownCompilerError = {
title: 'Unknown compiler error.',
hint: 'This is almost always a problem with the Astro compiler, not your code. Please open an issue at https://astro.build/issues/compiler.',
} satisfies ErrorData;
-// 1xxx and 2xxx codes are reserved for compiler errors and warnings respectively
-/**
- * @docs
- * @see
- * - [Enabling SSR in Your Project](https://docs.astro.build/en/guides/server-side-rendering/)
- * - [Astro.redirect](https://docs.astro.build/en/reference/api-reference/#astroredirect)
- * @description
- * The `Astro.redirect` function is only available when [Server-side rendering](/en/guides/server-side-rendering/) is enabled.
- *
- * To redirect on a static website, the [meta refresh attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta) can be used. Certain hosts also provide config-based redirects (ex: [Netlify redirects](https://docs.netlify.com/routing/redirects/)).
- * @deprecated Deprecated since version 2.6.
- */
-export const StaticRedirectNotAvailable = {
- name: 'StaticRedirectNotAvailable',
- title: '`Astro.redirect` is not available in static mode.',
- message:
- "Redirects are only available when using `output: 'server'` or `output: 'hybrid'`. Update your Astro config if you need SSR features.",
- hint: 'See https://docs.astro.build/en/guides/server-side-rendering/ for more information on how to enable SSR.',
-} satisfies ErrorData;
+
/**
* @docs
* @see
@@ -304,21 +286,6 @@ export const InvalidGetStaticPathsReturn = {
/**
* @docs
- * @deprecated Deprecated since Astro 4.0. The RSS helper no longer exists with an error fallback.
- * @see
- * - [RSS Guide](https://docs.astro.build/en/guides/rss/)
- * @description
- * `getStaticPaths` no longer expose an helper for generating a RSS feed. We recommend migrating to the [@astrojs/rss](https://docs.astro.build/en/guides/rss/#setting-up-astrojsrss)integration instead.
- */
-export const GetStaticPathsRemovedRSSHelper = {
- name: 'GetStaticPathsRemovedRSSHelper',
- title: 'getStaticPaths RSS helper is not available anymore.',
- message:
- 'The RSS helper has been removed from `getStaticPaths`. Try the new @astrojs/rss package instead.',
- hint: 'See https://docs.astro.build/en/guides/rss/ for more information.',
-} satisfies ErrorData;
-/**
- * @docs
* @see
* - [`getStaticPaths()`](https://docs.astro.build/en/reference/api-reference/#getstaticpaths)
* - [`params`](https://docs.astro.build/en/reference/api-reference/#params)
@@ -734,28 +701,6 @@ export const NoImageMetadata = {
/**
* @docs
- * @deprecated This error is no longer Markdown specific and as such, as been replaced by `ImageNotFound`
- * @message
- * Could not find requested image `IMAGE_PATH` at `FULL_IMAGE_PATH`.
- * @see
- * - [Images](https://docs.astro.build/en/guides/images/)
- * @description
- * Astro could not find an image you included in your Markdown content. Usually, this is simply caused by a typo in the path.
- *
- * Images in Markdown are relative to the current file. To refer to an image that is located in the same folder as the `.md` file, the path should start with `./`
- */
-export const MarkdownImageNotFound = {
- name: 'MarkdownImageNotFound',
- title: 'Image not found.',
- message: (imagePath: string, fullImagePath: string | undefined) =>
- `Could not find requested image \`${imagePath}\`${
- fullImagePath ? ` at \`${fullImagePath}\`.` : '.'
- }`,
- hint: 'This is often caused by a typo in the image path. Please make sure the file exists, and is spelled correctly.',
-} satisfies ErrorData;
-
-/**
- * @docs
* @see
* - [Images](https://docs.astro.build/en/guides/images/)
* @description
@@ -1141,22 +1086,6 @@ export const MissingMiddlewareForInternationalization = {
} satisfies ErrorData;
/**
- * @deprecated
- * @docs
- * @description
- * The user tried to rewrite using a route that doesn't exist, or it emitted a runtime error during its rendering phase.
- */
-export const RewriteEncounteredAnError = {
- name: 'RewriteEncounteredAnError',
- title:
- "Astro couldn't find the route to rewrite, or if was found but it emitted an error during the rendering phase.",
- message: (route: string, stack?: string) =>
- `The route ${route} that you tried to render doesn't exist, or it emitted an error during the rendering phase. ${
- stack ? stack : ''
- }.`,
-} satisfies ErrorData;
-
-/**
* @docs
* @description
* Astro could not find an associated file with content while trying to render the route. This is an Astro error and not a user error. If restarting the dev server does not fix the problem, please file an issue.
@@ -1555,20 +1484,6 @@ export const ContentSchemaContainsSlugError = {
/**
* @docs
- * @message A collection queried via `getCollection()` does not exist.
- * @deprecated Collections that do not exist no longer result in an error. A warning is given instead.
- * @description
- * When querying a collection, ensure a collection directory with the requested name exists under `src/content/`.
- */
-export const CollectionDoesNotExistError = {
- name: 'CollectionDoesNotExistError',
- title: 'Collection does not exist',
- message: (collectionName: string) =>
- `The collection **${collectionName}** does not exist. Ensure a collection directory with this name exists.`,
- hint: 'See https://docs.astro.build/en/guides/content-collections/ for more on creating collections.',
-} satisfies ErrorData;
-/**
- * @docs
* @see
* - [Defining content collections](https://docs.astro.build/en/guides/content-collections/#defining-collections)
* @description
diff --git a/packages/astro/src/types/public/config.ts b/packages/astro/src/types/public/config.ts
index 9166ddcbe..f6fe850a9 100644
--- a/packages/astro/src/types/public/config.ts
+++ b/packages/astro/src/types/public/config.ts
@@ -1313,7 +1313,7 @@ export interface AstroUserConfig {
*
* When `i18n.routing.fallback: "rewrite"` is configured, Astro will create pages that render the contents of the fallback page on the original, requested URL.
*
- * With the following configuration, if you have the file `src/pages/en/about.astro` but not `src/pages/fr/about.astro`, the `astro build` command will generate `dist/fr/about.html` with the same content as the `dist/en/index.html` page.
+ * With the following configuration, if you have the file `src/pages/en/about.astro` but not `src/pages/fr/about.astro`, the `astro build` command will generate `dist/fr/about.html` with the same content as the `dist/en/about.html` page.
* Your site visitor will see the English version of the page at `https://example.com/fr/about/` and will not be redirected.
*
* ```js
@@ -1333,7 +1333,7 @@ export interface AstroUserConfig {
* })
* ```
*/
- fallbackType: 'redirect' | 'rewrite';
+ fallbackType?: 'redirect' | 'rewrite';
/**
* @name i18n.routing.strategy
diff --git a/packages/astro/test/content-layer.test.js b/packages/astro/test/content-layer.test.js
index d8d6a3b45..0590e7e59 100644
--- a/packages/astro/test/content-layer.test.js
+++ b/packages/astro/test/content-layer.test.js
@@ -162,17 +162,21 @@ describe('Content Layer', () => {
it('updates the store on new builds', async () => {
assert.equal(json.increment.data.lastValue, 1);
+ assert.equal(json.entryWithReference.data.something?.content, 'transform me');
await fixture.build();
const newJson = devalue.parse(await fixture.readFile('/collections.json'));
assert.equal(newJson.increment.data.lastValue, 2);
+ assert.equal(newJson.entryWithReference.data.something?.content, 'transform me');
});
it('clears the store on new build with force flag', async () => {
let newJson = devalue.parse(await fixture.readFile('/collections.json'));
assert.equal(newJson.increment.data.lastValue, 2);
+ assert.equal(newJson.entryWithReference.data.something?.content, 'transform me');
await fixture.build({ force: true }, {});
newJson = devalue.parse(await fixture.readFile('/collections.json'));
assert.equal(newJson.increment.data.lastValue, 1);
+ assert.equal(newJson.entryWithReference.data.something?.content, 'transform me');
});
it('clears the store on new build if the config has changed', async () => {
diff --git a/packages/astro/test/fixtures/client-address-node/package.json b/packages/astro/test/fixtures/client-address-node/package.json
index 4b1c6a5ee..4db07f130 100644
--- a/packages/astro/test/fixtures/client-address-node/package.json
+++ b/packages/astro/test/fixtures/client-address-node/package.json
@@ -3,7 +3,7 @@
"version": "0.0.0",
"private": true,
"dependencies": {
- "@astrojs/node": "workspace:*",
+ "@astrojs/node": "^8.3.3",
"astro": "workspace:*"
}
}
diff --git a/packages/astro/test/fixtures/content-layer/content-outside-src/columbia-copy.md b/packages/astro/test/fixtures/content-layer/content-outside-src/columbia-copy.md
index e5ca2b3a5..fba81378e 100644
--- a/packages/astro/test/fixtures/content-layer/content-outside-src/columbia-copy.md
+++ b/packages/astro/test/fixtures/content-layer/content-outside-src/columbia-copy.md
@@ -5,6 +5,7 @@ publishedDate: 'Sat May 21 2022 00:00:00 GMT-0400 (Eastern Daylight Time)'
tags: [space, 90s]
cat: tabby
heroImage: "./shuttle.jpg"
+something: "transform me"
---
**Source:** [Wikipedia](https://en.wikipedia.org/wiki/Space_Shuttle_Endeavour)
diff --git a/packages/astro/test/fixtures/content-layer/src/content/config.ts b/packages/astro/test/fixtures/content-layer/src/content/config.ts
index 5e25d83b9..8f06b4362 100644
--- a/packages/astro/test/fixtures/content-layer/src/content/config.ts
+++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts
@@ -78,6 +78,7 @@ const spacecraft = defineCollection({
tags: z.array(z.string()),
heroImage: image().optional(),
cat: reference('cats').optional(),
+ something: z.string().optional().transform(str => ({ type: 'test', content: str }))
}),
});
@@ -120,9 +121,9 @@ const increment = defineCollection({
schema: async () => z.object({
lastValue: z.number(),
lastUpdated: z.date(),
+
}),
},
-
});
export const collections = { blog, dogs, cats, numbers, spacecraft, increment, images };
diff --git a/packages/astro/test/fixtures/content-layer/src/pages/collections.json.js b/packages/astro/test/fixtures/content-layer/src/pages/collections.json.js
index 7db3156ca..87c8cc052 100644
--- a/packages/astro/test/fixtures/content-layer/src/pages/collections.json.js
+++ b/packages/astro/test/fixtures/content-layer/src/pages/collections.json.js
@@ -17,7 +17,6 @@ export async function GET() {
const increment = await getEntry('increment', 'value');
const images = await getCollection('images');
-
return new Response(
devalue.stringify({
customLoader,
diff --git a/packages/astro/test/fixtures/custom-assets-name/package.json b/packages/astro/test/fixtures/custom-assets-name/package.json
index 00237fbdd..3530f9f0a 100644
--- a/packages/astro/test/fixtures/custom-assets-name/package.json
+++ b/packages/astro/test/fixtures/custom-assets-name/package.json
@@ -4,6 +4,6 @@
"private": true,
"dependencies": {
"astro": "workspace:*",
- "@astrojs/node": "workspace:*"
+ "@astrojs/node": "^8.3.3"
}
}
diff --git a/packages/astro/test/fixtures/postcss/package.json b/packages/astro/test/fixtures/postcss/package.json
index fad256924..45438302b 100644
--- a/packages/astro/test/fixtures/postcss/package.json
+++ b/packages/astro/test/fixtures/postcss/package.json
@@ -8,7 +8,7 @@
"@astrojs/vue": "workspace:*",
"astro": "workspace:*",
"autoprefixer": "^10.4.20",
- "postcss": "^8.4.41",
+ "postcss": "^8.4.43",
"solid-js": "^1.8.22",
"svelte": "^4.2.19",
"vue": "^3.4.38"
diff --git a/packages/astro/test/fixtures/ssr-api-route/package.json b/packages/astro/test/fixtures/ssr-api-route/package.json
index ab761dd6b..7af4e57b0 100644
--- a/packages/astro/test/fixtures/ssr-api-route/package.json
+++ b/packages/astro/test/fixtures/ssr-api-route/package.json
@@ -3,7 +3,7 @@
"version": "0.0.0",
"private": true,
"dependencies": {
- "@astrojs/node": "workspace:*",
+ "@astrojs/node": "^8.3.3",
"astro": "workspace:*"
}
}
diff --git a/packages/astro/test/fixtures/ssr-prerender-chunks/package.json b/packages/astro/test/fixtures/ssr-prerender-chunks/package.json
index c386358b8..503388b25 100644
--- a/packages/astro/test/fixtures/ssr-prerender-chunks/package.json
+++ b/packages/astro/test/fixtures/ssr-prerender-chunks/package.json
@@ -5,7 +5,7 @@
"dependencies": {
"@astrojs/react": "workspace:*",
"@test/ssr-prerender-chunks-test-adapter": "link:./deps/test-adapter",
- "@types/react": "^18.3.4",
+ "@types/react": "^18.3.5",
"@types/react-dom": "^18.3.0",
"astro": "workspace:*",
"react": "^18.3.1",
diff --git a/packages/astro/test/fixtures/static-build-ssr/package.json b/packages/astro/test/fixtures/static-build-ssr/package.json
index 6c8f1e499..9c39f2b2f 100644
--- a/packages/astro/test/fixtures/static-build-ssr/package.json
+++ b/packages/astro/test/fixtures/static-build-ssr/package.json
@@ -3,7 +3,7 @@
"version": "0.0.0",
"private": true,
"dependencies": {
- "@astrojs/node": "workspace:*",
+ "@astrojs/node": "^8.3.3",
"@test/static-build-pkg": "workspace:*",
"astro": "workspace:*"
}
diff --git a/packages/astro/test/fixtures/tailwindcss-ts/package.json b/packages/astro/test/fixtures/tailwindcss-ts/package.json
index a609e7b90..f20ea92e9 100644
--- a/packages/astro/test/fixtures/tailwindcss-ts/package.json
+++ b/packages/astro/test/fixtures/tailwindcss-ts/package.json
@@ -5,7 +5,7 @@
"dependencies": {
"@astrojs/tailwind": "workspace:*",
"astro": "workspace:*",
- "postcss": "^8.4.41",
+ "postcss": "^8.4.43",
"tailwindcss": "^3.4.10"
}
}
diff --git a/packages/astro/test/fixtures/tailwindcss/package.json b/packages/astro/test/fixtures/tailwindcss/package.json
index 499735686..6e175dff1 100644
--- a/packages/astro/test/fixtures/tailwindcss/package.json
+++ b/packages/astro/test/fixtures/tailwindcss/package.json
@@ -7,7 +7,7 @@
"@astrojs/tailwind": "workspace:*",
"astro": "workspace:*",
"autoprefixer": "^10.4.20",
- "postcss": "^8.4.41",
+ "postcss": "^8.4.43",
"tailwindcss": "^3.4.10"
}
}
diff --git a/packages/db/test/fixtures/ticketing-example/package.json b/packages/db/test/fixtures/ticketing-example/package.json
index 9386c7f96..ba89c8c76 100644
--- a/packages/db/test/fixtures/ticketing-example/package.json
+++ b/packages/db/test/fixtures/ticketing-example/package.json
@@ -12,12 +12,12 @@
"dependencies": {
"@astrojs/check": "^0.9.3",
"@astrojs/db": "workspace:*",
- "@astrojs/node": "workspace:*",
+ "@astrojs/node": "^8.3.3",
"@astrojs/react": "^3.6.2",
- "@types/react": "^18.3.4",
+ "@types/react": "^18.3.5",
"@types/react-dom": "^18.3.0",
"astro": "workspace:*",
- "open-props": "^1.7.5",
+ "open-props": "^1.7.6",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"simple-stack-form": "^0.1.12",
diff --git a/packages/integrations/mdx/package.json b/packages/integrations/mdx/package.json
index 6a6e4b1bd..7e88bbdf3 100644
--- a/packages/integrations/mdx/package.json
+++ b/packages/integrations/mdx/package.json
@@ -64,12 +64,12 @@
"mdast-util-mdx-jsx": "^3.1.3",
"mdast-util-to-string": "^4.0.0",
"rehype-mathjax": "^6.0.0",
- "rehype-pretty-code": "^0.13.2",
+ "rehype-pretty-code": "^0.14.0",
"remark-math": "^6.0.0",
"remark-rehype": "^11.1.0",
"remark-shiki-twoslash": "^3.1.3",
"remark-toc": "^9.0.0",
- "shiki": "^1.14.1",
+ "shiki": "^1.16.1",
"unified": "^11.0.5",
"vite": "^5.4.2"
},
diff --git a/packages/integrations/node/CHANGELOG.md b/packages/integrations/node/CHANGELOG.md
deleted file mode 100644
index 044cdbead..000000000
--- a/packages/integrations/node/CHANGELOG.md
+++ /dev/null
@@ -1,929 +0,0 @@
-# @astrojs/node
-
-## 9.0.0-alpha.1
-
-### Major Changes
-
-- [#11679](https://github.com/withastro/astro/pull/11679) [`ea71b90`](https://github.com/withastro/astro/commit/ea71b90c9c08ddd1d3397c78e2e273fb799f7dbd) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Adds stable support for `astro:env`
-
-- [#11770](https://github.com/withastro/astro/pull/11770) [`cfa6a47`](https://github.com/withastro/astro/commit/cfa6a47ac7a541f99fdad46a68d0cca6e5816cd5) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Removed support for the Squoosh image service. As the underlying library `libsquoosh` is no longer maintained, and the image service sees very little usage we have decided to remove it from Astro.
-
- Our recommendation is to use the base Sharp image service, which is more powerful, faster, and more actively maintained.
-
- ```diff
- - import { squooshImageService } from "astro/config";
- import { defineConfig } from "astro/config";
-
- export default defineConfig({
- - image: {
- - service: squooshImageService()
- - }
- });
- ```
-
- If you are using this service, and cannot migrate to the base Sharp image service, a third-party extraction of the previous service is available here: https://github.com/Princesseuh/astro-image-service-squoosh
-
-## 9.0.0-alpha.0
-
-### Patch Changes
-
-- Updated dependencies [[`b6fbdaa`](https://github.com/withastro/astro/commit/b6fbdaa94a9ecec706a99e1938fbf5cd028c72e0), [`89bab1e`](https://github.com/withastro/astro/commit/89bab1e70786123fbe933a9d7a1b80c9334dcc5f), [`d74617c`](https://github.com/withastro/astro/commit/d74617cbd3278feba05909ec83db2d73d57a153e), [`e90f559`](https://github.com/withastro/astro/commit/e90f5593d23043579611452a84b9e18ad2407ef9), [`2df49a6`](https://github.com/withastro/astro/commit/2df49a6fb4f6d92fe45f7429430abe63defeacd6), [`8a53517`](https://github.com/withastro/astro/commit/8a5351737d6a14fc55f1dafad8f3b04079e81af6)]:
- - astro@5.0.0-alpha.0
-
-## 8.3.3
-
-### Patch Changes
-
-- [#11535](https://github.com/withastro/astro/pull/11535) [`932bd2e`](https://github.com/withastro/astro/commit/932bd2eb07f1d7cb2c91e7e7d31fe84c919e302b) Thanks [@matthewp](https://github.com/matthewp)! - Move polyfills up before awaiting the env module in the Node.js adapter.
-
- Previously the env setting was happening before the polyfills were applied. This means that if the Astro env code (or any dependencies) depended on `crypto`, it would not be polyfilled in time.
-
- Polyfills should be applied ASAP to prevent races. This moves it to the top of the Node adapter.
-
-## 8.3.2
-
-### Patch Changes
-
-- [#11296](https://github.com/withastro/astro/pull/11296) [`5848d97`](https://github.com/withastro/astro/commit/5848d9786768d1290de982670bcc7773280ef08d) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes `astro:env` getSecret compatibility
-
-## 8.3.1
-
-### Patch Changes
-
-- [#11261](https://github.com/withastro/astro/pull/11261) [`f5f8ed2`](https://github.com/withastro/astro/commit/f5f8ed275b76adfb11b7c3c1e800753a25416498) Thanks [@matthewp](https://github.com/matthewp)! - Fix backwards compat with Astro <= 4.9
-
-- [#11263](https://github.com/withastro/astro/pull/11263) [`7d59750`](https://github.com/withastro/astro/commit/7d597506615fa5a34327304e8321be7b9c4b799d) Thanks [@wackbyte](https://github.com/wackbyte)! - Refactor to use Astro's integration logger for logging
-
-## 8.3.0
-
-### Minor Changes
-
-- [#11199](https://github.com/withastro/astro/pull/11199) [`2bdca27`](https://github.com/withastro/astro/commit/2bdca27ff4002efd330667b0b4ca3e00d5b7a2db) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Adds support for experimental `astro:env` released in Astro 4.10
-
-## 8.2.6
-
-### Patch Changes
-
-- [#11202](https://github.com/withastro/astro/pull/11202) [`d0248bc`](https://github.com/withastro/astro/commit/d0248bc083dff713b66d44bcefbf389cdf67e22d) Thanks [@dkobierski](https://github.com/dkobierski)! - Fixes suppressed logs when error occurs
-
-## 8.2.5
-
-### Patch Changes
-
-- [#10491](https://github.com/withastro/astro/pull/10491) [`28e33a2f9c04373eae5da2e6edb0dc2981bce790`](https://github.com/withastro/astro/commit/28e33a2f9c04373eae5da2e6edb0dc2981bce790) Thanks [@castarco](https://github.com/castarco)! - Fixes a bug where the preview server wrongly appends trailing slashes to subresource URLs.
-
-## 8.2.4
-
-### Patch Changes
-
-- [#10454](https://github.com/withastro/astro/pull/10454) [`83f9105cd50e2756d02ca2be73ab84f9d582d3f8`](https://github.com/withastro/astro/commit/83f9105cd50e2756d02ca2be73ab84f9d582d3f8) Thanks [@lilnasy](https://github.com/lilnasy)! - Prevents crashes caused by rejections of offshoot promises.
-
-## 8.2.3
-
-### Patch Changes
-
-- [#10285](https://github.com/withastro/astro/pull/10285) [`d5277df5a4d1e9a8a7b6c8d7b87912e13a163f7f`](https://github.com/withastro/astro/commit/d5277df5a4d1e9a8a7b6c8d7b87912e13a163f7f) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes an issue where malformed requests could cause the server to error in certain cases.
-
-## 8.2.2
-
-### Patch Changes
-
-- [#10282](https://github.com/withastro/astro/pull/10282) [`b47dcaa25968ec85ba96fce23381c94a94e389f6`](https://github.com/withastro/astro/commit/b47dcaa25968ec85ba96fce23381c94a94e389f6) Thanks [@SatanshuMishra](https://github.com/SatanshuMishra)! - Fixes the `server.host` option to properly listen on all network interfaces when set to `true`
-
-## 8.2.1
-
-### Patch Changes
-
-- [#10208](https://github.com/withastro/astro/pull/10208) [`8cd38f02456640c063552aef00b2b8a216b3935d`](https://github.com/withastro/astro/commit/8cd38f02456640c063552aef00b2b8a216b3935d) Thanks [@log101](https://github.com/log101)! - Fixes custom headers are not added to the Node standalone server responses in preview mode
-
-## 8.2.0
-
-### Minor Changes
-
-- [#9143](https://github.com/withastro/astro/pull/9143) [`041fdd5c89920f7ccf944b095f29e451f78b0e28`](https://github.com/withastro/astro/commit/041fdd5c89920f7ccf944b095f29e451f78b0e28) Thanks [@ematipico](https://github.com/ematipico)! - Adds experimental support for internationalization domains
-
-## 8.1.0
-
-### Minor Changes
-
-- [#9080](https://github.com/withastro/astro/pull/9080) [`a12196d6b59e39f5d405734ecdbf6f6b42b39a93`](https://github.com/withastro/astro/commit/a12196d6b59e39f5d405734ecdbf6f6b42b39a93) Thanks [@msxdan](https://github.com/msxdan)! - Add trailingSlash support to NodeJS adapter
-
-## 8.0.0
-
-### Major Changes
-
-- [#9661](https://github.com/withastro/astro/pull/9661) [`d6edc7540864cf5d294d7b881eb886a3804f6d05`](https://github.com/withastro/astro/commit/d6edc7540864cf5d294d7b881eb886a3804f6d05) Thanks [@ematipico](https://github.com/ematipico)! - If host is unset in standalone mode, the server host will now fallback to `localhost` instead of `127.0.0.1`. When `localhost` is used, the operating system can decide to use either `::1` (ipv6) or `127.0.0.1` (ipv4) itself. This aligns with how the Astro dev and preview server works by default.
-
- If you relied on `127.0.0.1` (ipv4) before, you can set the `HOST` environment variable to `127.0.0.1` to explicitly use ipv4. For example, `HOST=127.0.0.1 node ./dist/server/entry.mjs`.
-
-- [#9661](https://github.com/withastro/astro/pull/9661) [`d6edc7540864cf5d294d7b881eb886a3804f6d05`](https://github.com/withastro/astro/commit/d6edc7540864cf5d294d7b881eb886a3804f6d05) Thanks [@ematipico](https://github.com/ematipico)! - **Breaking**: Minimum required Astro version is now 4.2.0.
- Reorganizes internals to be more maintainable.
-
-### Patch Changes
-
-- [#9661](https://github.com/withastro/astro/pull/9661) [`d6edc7540864cf5d294d7b881eb886a3804f6d05`](https://github.com/withastro/astro/commit/d6edc7540864cf5d294d7b881eb886a3804f6d05) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where the preview server appeared to be ready to serve requests before binding to a port.
-
-## 7.0.4
-
-### Patch Changes
-
-- [#9533](https://github.com/withastro/astro/pull/9533) [`48f47b50a0f8bc0fa51760215def36640f79050d`](https://github.com/withastro/astro/commit/48f47b50a0f8bc0fa51760215def36640f79050d) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes a bug where an error while serving response stopped the server.
-
-## 7.0.3
-
-### Patch Changes
-
-- [#9479](https://github.com/withastro/astro/pull/9479) [`1baf0b0d3cbd0564954c2366a7278794fad6726e`](https://github.com/withastro/astro/commit/1baf0b0d3cbd0564954c2366a7278794fad6726e) Thanks [@sarah11918](https://github.com/sarah11918)! - Updates README
-
-## 7.0.2
-
-### Patch Changes
-
-- [#9471](https://github.com/withastro/astro/pull/9471) [`6bf470cfb`](https://github.com/withastro/astro/commit/6bf470cfb87e853c0a1f69bceb09246801bc8bdc) Thanks [@alexnguyennz](https://github.com/alexnguyennz)! - Fix typo in @astrojs/node README
-
-## 7.0.1
-
-### Patch Changes
-
-- [#9366](https://github.com/withastro/astro/pull/9366) [`1b4e91898`](https://github.com/withastro/astro/commit/1b4e91898116f75b02b66ec402385cf44e559118) Thanks [@lilnasy](https://github.com/lilnasy)! - Updates NPM package to refer to the stable Astro version instead of a beta.
-
-## 7.0.0
-
-### Major Changes
-
-- [#9199](https://github.com/withastro/astro/pull/9199) [`49aa215a0`](https://github.com/withastro/astro/commit/49aa215a01ee1c4805316c85bb0aea6cfbc25a31) Thanks [@lilnasy](https://github.com/lilnasy)! - The internals of the integration have been updated to support Astro 4.0. Make sure to upgrade your Astro version as Astro 3.0 is no longer supported.
-
-## 7.0.0-beta.1
-
-### Major Changes
-
-- [#9199](https://github.com/withastro/astro/pull/9199) [`49aa215a0`](https://github.com/withastro/astro/commit/49aa215a01ee1c4805316c85bb0aea6cfbc25a31) Thanks [@lilnasy](https://github.com/lilnasy)! - The internals of the integration have been updated to support Astro 4.0. Make sure to upgrade your Astro version as Astro 3.0 is no longer supported.
-
-## 7.0.0-beta.0
-
-### Patch Changes
-
-- Updated dependencies [[`abf601233`](https://github.com/withastro/astro/commit/abf601233f8188d118a8cb063c777478d8d9f1a3), [`6201bbe96`](https://github.com/withastro/astro/commit/6201bbe96c2a083fb201e4a43a9bd88499821a3e), [`cdabf6ef0`](https://github.com/withastro/astro/commit/cdabf6ef02be7220fd2b6bdcef924ceca089381e), [`1c48ed286`](https://github.com/withastro/astro/commit/1c48ed286538ab9e354eca4e4dcd7c6385c96721), [`37697a2c5`](https://github.com/withastro/astro/commit/37697a2c5511572dc29c0a4ea46f90c2f62be8e6), [`bd0c2e9ae`](https://github.com/withastro/astro/commit/bd0c2e9ae3389a9d3085050c1e8134ae98dff299), [`0fe3a7ed5`](https://github.com/withastro/astro/commit/0fe3a7ed5d7bb1a9fce1623e84ba14104b51223c), [`710be505c`](https://github.com/withastro/astro/commit/710be505c9ddf416e77a75343d8cae9c497d72c6), [`153a5abb9`](https://github.com/withastro/astro/commit/153a5abb905042ac68b712514dc9ec387d3e6b17)]:
- - astro@4.0.0-beta.0
-
-## 6.1.0
-
-### Minor Changes
-
-- [#9125](https://github.com/withastro/astro/pull/9125) [`8f1d50957`](https://github.com/withastro/astro/commit/8f1d509574f5ee5d77816a13d89ce452dce403ff) Thanks [@matthewp](https://github.com/matthewp)! - Automatically sets immutable cache headers for assets served from the `/_astro` directory.
-
-## 6.1.0
-
-### Minor Changes
-
-- [#9125](https://github.com/withastro/astro/pull/9125) [`8f1d50957`](https://github.com/withastro/astro/commit/8f1d509574f5ee5d77816a13d89ce452dce403ff) Thanks [@matthewp](https://github.com/matthewp)! - Automatically sets immutable cache headers for assets served from the `/_astro` directory.
-
-## 6.0.4
-
-### Patch Changes
-
-- [#9071](https://github.com/withastro/astro/pull/9071) [`c9487138d`](https://github.com/withastro/astro/commit/c9487138d6d8fd39c8c8512239b6724cf2b275ff) Thanks [@pilcrowOnPaper](https://github.com/pilcrowOnPaper)! - Fixes a bug where the response stream would not cancel when the connection closed
-
-## 6.0.3
-
-### Patch Changes
-
-- [#8737](https://github.com/withastro/astro/pull/8737) [`6f60da805`](https://github.com/withastro/astro/commit/6f60da805e0014bc50dd07bef972e91c73560c3c) Thanks [@ematipico](https://github.com/ematipico)! - Add provenance statement when publishing the library from CI
-
-- Updated dependencies [[`6f60da805`](https://github.com/withastro/astro/commit/6f60da805e0014bc50dd07bef972e91c73560c3c), [`d78806dfe`](https://github.com/withastro/astro/commit/d78806dfe0301ea7ffe6c7c1f783bd415ac7cda9), [`d1c75fe15`](https://github.com/withastro/astro/commit/d1c75fe158839699c59728cf3a83888e8c72a459), [`aa265d730`](https://github.com/withastro/astro/commit/aa265d73024422967c1b1c68ad268c419c6c798f), [`78adbc443`](https://github.com/withastro/astro/commit/78adbc4433208458291e36713909762e148e1e5d), [`21e0757ea`](https://github.com/withastro/astro/commit/21e0757ea22a57d344c934045ca19db93b684436), [`357270f2a`](https://github.com/withastro/astro/commit/357270f2a3d0bf2aa634ba7e52e9d17618eff4a7)]:
- - astro@3.2.3
-
-## 6.0.2
-
-### Patch Changes
-
-- [#8698](https://github.com/withastro/astro/pull/8698) [`47ea310f0`](https://github.com/withastro/astro/commit/47ea310f01d06ed1562c790bec348718a2fa8277) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Use a Node-specific image endpoint to resolve images in dev and Node SSR. This should fix many issues related to getting 404 from the \_image endpoint under certain configurations
-
-- Updated dependencies [[`31c59ad8b`](https://github.com/withastro/astro/commit/31c59ad8b6a72f95c98a306ecf92d198c03110b4), [`47ea310f0`](https://github.com/withastro/astro/commit/47ea310f01d06ed1562c790bec348718a2fa8277), [`345808170`](https://github.com/withastro/astro/commit/345808170fce783ddd3c9a4035a91fa64dcc5f46)]:
- - astro@3.2.1
-
-## 6.0.1
-
-### Patch Changes
-
-- [#8599](https://github.com/withastro/astro/pull/8599) [`2e1d5f873`](https://github.com/withastro/astro/commit/2e1d5f8739552c3428aa7cbb82811ed2b9b24fdb) Thanks [@lilnasy](https://github.com/lilnasy)! - The node adapter now logs uncaught errors encountered during rendering a page.
-
-- Updated dependencies [[`bcad715ce`](https://github.com/withastro/astro/commit/bcad715ce67bc73a7927c941d1e7f02a82d638c2), [`bdd267d08`](https://github.com/withastro/astro/commit/bdd267d08937611984d074a2872af11ecf3e1a12), [`e522a5eb4`](https://github.com/withastro/astro/commit/e522a5eb41c7df1e62c307c84cd14d53777439ff), [`ed54d4644`](https://github.com/withastro/astro/commit/ed54d46449accc99ad117d6b0d50a8905e4d65d7), [`70f2a8003`](https://github.com/withastro/astro/commit/70f2a80039d232731f63ea735e896997ec0eac7a), [`4398e9298`](https://github.com/withastro/astro/commit/4398e929877dfadd2067af28413284afdfde9d8b), [`8f8b9069d`](https://github.com/withastro/astro/commit/8f8b9069ddd21cf57d37955ab3a92710492226f5), [`5a988eaf6`](https://github.com/withastro/astro/commit/5a988eaf609ddc1b9609acb0cdc2dda43d10a5c2)]:
- - astro@3.1.2
-
-## 6.0.0
-
-### Major Changes
-
-- [#8188](https://github.com/withastro/astro/pull/8188) [`d0679a666`](https://github.com/withastro/astro/commit/d0679a666f37da0fca396d42b9b32bbb25d29312) Thanks [@ematipico](https://github.com/ematipico)! - Remove support for Node 16. The lowest supported version by Astro and all integrations is now v18.14.1. As a reminder, Node 16 will be deprecated on the 11th September 2023.
-
-- [#8179](https://github.com/withastro/astro/pull/8179) [`6011d52d3`](https://github.com/withastro/astro/commit/6011d52d38e43c3e3d52bc3bc41a60e36061b7b7) Thanks [@matthewp](https://github.com/matthewp)! - Astro 3.0 Release Candidate
-
-- [#8188](https://github.com/withastro/astro/pull/8188) [`148e61d24`](https://github.com/withastro/astro/commit/148e61d2492456811f8a3c8daaab1c3429a2ffdc) Thanks [@ematipico](https://github.com/ematipico)! - Reduced the amount of polyfills provided by Astro. Astro will no longer provide (no-op) polyfills for several web apis such as HTMLElement, Image or Document. If you need access to those APIs on the server, we recommend using more proper polyfills available on npm.
-
-### Minor Changes
-
-- [#8188](https://github.com/withastro/astro/pull/8188) [`cd2d7e769`](https://github.com/withastro/astro/commit/cd2d7e76981ef9b9013453aa2629838e1e9fd422) Thanks [@ematipico](https://github.com/ematipico)! - Introduced the concept of feature map. A feature map is a list of features that are built-in in Astro, and an Adapter
- can tell Astro if it can support it.
-
- ```ts
- import { AstroIntegration } from './astro';
-
- function myIntegration(): AstroIntegration {
- return {
- name: 'astro-awesome-list',
- // new feature map
- supportedAstroFeatures: {
- hybridOutput: 'experimental',
- staticOutput: 'stable',
- serverOutput: 'stable',
- assets: {
- supportKind: 'stable',
- isSharpCompatible: false,
- isSquooshCompatible: false,
- },
- },
- };
- }
- ```
-
-### Patch Changes
-
-- Updated dependencies [[`d0679a666`](https://github.com/withastro/astro/commit/d0679a666f37da0fca396d42b9b32bbb25d29312), [`db39206cb`](https://github.com/withastro/astro/commit/db39206cbb85b034859ac416179f141184bb2bff), [`adf9fccfd`](https://github.com/withastro/astro/commit/adf9fccfdda107c2224558f1c2e6a77847ac0a8a), [`0c7b42dc6`](https://github.com/withastro/astro/commit/0c7b42dc6780e687e416137539f55a3a427d1d10), [`46c4c0e05`](https://github.com/withastro/astro/commit/46c4c0e053f830585b9ef229ce1c259df00a80f8), [`364d861bd`](https://github.com/withastro/astro/commit/364d861bd527b8511968e2837728148f090bedef), [`2484dc408`](https://github.com/withastro/astro/commit/2484dc4080e5cd84b9a53648a1de426d7c907be2), [`81545197a`](https://github.com/withastro/astro/commit/81545197a32fd015d763fc386c8b67e0e08b7393), [`6011d52d3`](https://github.com/withastro/astro/commit/6011d52d38e43c3e3d52bc3bc41a60e36061b7b7), [`c2c71d90c`](https://github.com/withastro/astro/commit/c2c71d90c264a2524f99e0373ab59015f23ad4b1), [`cd2d7e769`](https://github.com/withastro/astro/commit/cd2d7e76981ef9b9013453aa2629838e1e9fd422), [`80f1494cd`](https://github.com/withastro/astro/commit/80f1494cdaf72e58a420adb4f7c712d4089e1923), [`e45f30293`](https://github.com/withastro/astro/commit/e45f3029340db718b6ed7e91b5d14f5cf14cd71d), [`c0de7a7b0`](https://github.com/withastro/astro/commit/c0de7a7b0f042cd49cbea4f4ac1b2ab6f9fef644), [`65c354969`](https://github.com/withastro/astro/commit/65c354969e6fe0ef6d622e8f4c545e2f717ce8c6), [`3c3100851`](https://github.com/withastro/astro/commit/3c31008519ce68b5b1b1cb23b71fbe0a2d506882), [`34cb20021`](https://github.com/withastro/astro/commit/34cb2002161ba88df6bcb72fecfd12ed867c134b), [`a824863ab`](https://github.com/withastro/astro/commit/a824863ab1c451f4068eac54f28dd240573e1cba), [`44f7a2872`](https://github.com/withastro/astro/commit/44f7a28728c56c04ac377b6e917329f324874043), [`1048aca55`](https://github.com/withastro/astro/commit/1048aca550769415e528016e42b358ffbfd44b61), [`be6bbd2c8`](https://github.com/withastro/astro/commit/be6bbd2c86b9bf5268e765bb937dda00ff15781a), [`9e021a91c`](https://github.com/withastro/astro/commit/9e021a91c57d10809f588dd47968fc0e7f8b4d5c), [`7511a4980`](https://github.com/withastro/astro/commit/7511a4980fd36536464c317de33a5190427f430a), [`c37632a20`](https://github.com/withastro/astro/commit/c37632a20d06164fb97a4c2fc48df6d960398832), [`acf652fc1`](https://github.com/withastro/astro/commit/acf652fc1d5db166231e87e22d0d50444f5556d8), [`42785c7b7`](https://github.com/withastro/astro/commit/42785c7b784b151e6d582570e5d74482129e8eb8), [`8450379db`](https://github.com/withastro/astro/commit/8450379db854fb1eaa9f38f21d65db240bc616cd), [`dbc97b121`](https://github.com/withastro/astro/commit/dbc97b121f42583728f1cdfdbf14575fda943f5b), [`7d2f311d4`](https://github.com/withastro/astro/commit/7d2f311d428e3d1c8c13b9bf2a708d6435713fc2), [`2540feedb`](https://github.com/withastro/astro/commit/2540feedb06785d5a20eecc3668849f147d778d4), [`ea7ff5177`](https://github.com/withastro/astro/commit/ea7ff5177dbcd7b2508cb1eef1b22b8ee1f47079), [`68efd4a8b`](https://github.com/withastro/astro/commit/68efd4a8b29f248397667801465b3152dc98e9a7), [`7bd1b86f8`](https://github.com/withastro/astro/commit/7bd1b86f85c06fdde0a1ed9146d01bac69990671), [`036388f66`](https://github.com/withastro/astro/commit/036388f66dab68ad54b895ed86f9176958dd83c8), [`519a1c4e8`](https://github.com/withastro/astro/commit/519a1c4e8407c7abcb8d879b67a9f4b960652cae), [`1f58a7a1b`](https://github.com/withastro/astro/commit/1f58a7a1bea6888868b689dac94801d554319b02), [`2ae9d37f0`](https://github.com/withastro/astro/commit/2ae9d37f0a9cb21ab288d3c30aecb6d84db87788), [`a8f35777e`](https://github.com/withastro/astro/commit/a8f35777e7e322068a4e2f520c2c9e43ade19e58), [`70f34f5a3`](https://github.com/withastro/astro/commit/70f34f5a355f42526ee9e5355f3de8e510002ea2), [`5208a3c8f`](https://github.com/withastro/astro/commit/5208a3c8fefcec7694857fb344af351f4631fc34), [`84af8ed9d`](https://github.com/withastro/astro/commit/84af8ed9d1e6401c6ebc9c60fe8cddb44d5044b0), [`f003e7364`](https://github.com/withastro/astro/commit/f003e7364317cafdb8589913b26b28e928dd07c9), [`ffc9e2d3d`](https://github.com/withastro/astro/commit/ffc9e2d3de46049bf3d82140ef018f524fb03187), [`732111cdc`](https://github.com/withastro/astro/commit/732111cdce441639db31f40f621df48442d00969), [`0f637c71e`](https://github.com/withastro/astro/commit/0f637c71e511cb4c51712128d217a26c8eee4d40), [`33b8910cf`](https://github.com/withastro/astro/commit/33b8910cfdce5713891c50a84a0a8fe926311710), [`8a5b0c1f3`](https://github.com/withastro/astro/commit/8a5b0c1f3a4be6bb62db66ec70144109ff5b4c59), [`148e61d24`](https://github.com/withastro/astro/commit/148e61d2492456811f8a3c8daaab1c3429a2ffdc), [`e79e3779d`](https://github.com/withastro/astro/commit/e79e3779df0ad35253abcdb931d622847d9adb12), [`632579dc2`](https://github.com/withastro/astro/commit/632579dc2094cc342929261c89e689f0dd358284), [`3674584e0`](https://github.com/withastro/astro/commit/3674584e02b161a698b429ceb66723918fdc56ac), [`1db4e92c1`](https://github.com/withastro/astro/commit/1db4e92c12ed73681217f5cefd39f2f47542f961), [`e7f872e91`](https://github.com/withastro/astro/commit/e7f872e91e852b901cf221a5151077dec64305bf), [`16f09dfff`](https://github.com/withastro/astro/commit/16f09dfff7722fda99dd0412e3006a7a39c80829), [`4477bb41c`](https://github.com/withastro/astro/commit/4477bb41c8ed688785c545731ef5b184b629f4e5), [`55c10d1d5`](https://github.com/withastro/astro/commit/55c10d1d564e805efc3c1a7c48e0d9a1cdf0c7ed), [`3e834293d`](https://github.com/withastro/astro/commit/3e834293d47ab2761a7aa013916e8371871efb7f), [`96beb883a`](https://github.com/withastro/astro/commit/96beb883ad87f8bbf5b2f57e14a743763d2a6f58), [`997a0db8a`](https://github.com/withastro/astro/commit/997a0db8a4e3851edd69384cf5eadbb969e1d547), [`80f1494cd`](https://github.com/withastro/astro/commit/80f1494cdaf72e58a420adb4f7c712d4089e1923), [`0f0625504`](https://github.com/withastro/astro/commit/0f0625504145f18cba7dc6cf20291cb2abddc5a9), [`e1ae56e72`](https://github.com/withastro/astro/commit/e1ae56e724d0f83db1230359e06cd6bc26f5fa26), [`f32d093a2`](https://github.com/withastro/astro/commit/f32d093a280faafff024228c12bb438156ec34d7), [`f01eb585e`](https://github.com/withastro/astro/commit/f01eb585e7c972d940761309b1595f682b6922d2), [`b76c166bd`](https://github.com/withastro/astro/commit/b76c166bdd8e28683f62806aef968d1e0c3b06d9), [`a87cbe400`](https://github.com/withastro/astro/commit/a87cbe400314341d5f72abf86ea264e6b47c091f), [`866ed4098`](https://github.com/withastro/astro/commit/866ed4098edffb052239cdb26e076cf8db61b1d9), [`767eb6866`](https://github.com/withastro/astro/commit/767eb68666eb777965baa0d6ade20bbafecf95bf), [`32669cd47`](https://github.com/withastro/astro/commit/32669cd47555e9c7433c3998a2b6e624dfb2d8e9)]:
- - astro@3.0.0
-
-## 6.0.0-rc.1
-
-### Major Changes
-
-- [#8179](https://github.com/withastro/astro/pull/8179) [`6011d52d3`](https://github.com/withastro/astro/commit/6011d52d38e43c3e3d52bc3bc41a60e36061b7b7) Thanks [@matthewp](https://github.com/matthewp)! - Astro 3.0 Release Candidate
-
-### Patch Changes
-
-- [#8176](https://github.com/withastro/astro/pull/8176) [`d08c83ee3`](https://github.com/withastro/astro/commit/d08c83ee3fe0f10374264f61ee473255dcf0cd06) Thanks [@ematipico](https://github.com/ematipico)! - Fix an issue where `express` couldn't use the `handler` in `middleware` mode.
-
-- Updated dependencies [[`adf9fccfd`](https://github.com/withastro/astro/commit/adf9fccfdda107c2224558f1c2e6a77847ac0a8a), [`582132328`](https://github.com/withastro/astro/commit/5821323285646aee7ff9194a505f708028e4db57), [`81545197a`](https://github.com/withastro/astro/commit/81545197a32fd015d763fc386c8b67e0e08b7393), [`6011d52d3`](https://github.com/withastro/astro/commit/6011d52d38e43c3e3d52bc3bc41a60e36061b7b7), [`be6bbd2c8`](https://github.com/withastro/astro/commit/be6bbd2c86b9bf5268e765bb937dda00ff15781a), [`42785c7b7`](https://github.com/withastro/astro/commit/42785c7b784b151e6d582570e5d74482129e8eb8), [`95120efbe`](https://github.com/withastro/astro/commit/95120efbe817163663492181cbeb225849354493), [`2ae9d37f0`](https://github.com/withastro/astro/commit/2ae9d37f0a9cb21ab288d3c30aecb6d84db87788), [`f003e7364`](https://github.com/withastro/astro/commit/f003e7364317cafdb8589913b26b28e928dd07c9), [`732111cdc`](https://github.com/withastro/astro/commit/732111cdce441639db31f40f621df48442d00969), [`33b8910cf`](https://github.com/withastro/astro/commit/33b8910cfdce5713891c50a84a0a8fe926311710), [`e79e3779d`](https://github.com/withastro/astro/commit/e79e3779df0ad35253abcdb931d622847d9adb12), [`179796405`](https://github.com/withastro/astro/commit/179796405e053b559d83f84507e5a465861a029a), [`a87cbe400`](https://github.com/withastro/astro/commit/a87cbe400314341d5f72abf86ea264e6b47c091f), [`767eb6866`](https://github.com/withastro/astro/commit/767eb68666eb777965baa0d6ade20bbafecf95bf)]:
- - astro@3.0.0-rc.5
-
-## 6.0.0-beta.0
-
-### Major Changes
-
-- [`1eae2e3f7`](https://github.com/withastro/astro/commit/1eae2e3f7d693c9dfe91c8ccfbe606d32bf2fb81) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Remove support for Node 16. The lowest supported version by Astro and all integrations is now v18.14.1. As a reminder, Node 16 will be deprecated on the 11th September 2023.
-
-- [`3dc1ca2fa`](https://github.com/withastro/astro/commit/3dc1ca2fac8d9965cc5085a5d09e72ed87b4281a) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Reduced the amount of polyfills provided by Astro. Astro will no longer provide (no-op) polyfills for several web apis such as HTMLElement, Image or Document. If you need access to those APIs on the server, we recommend using more proper polyfills available on npm.
-
-### Minor Changes
-
-- [`9b4f70a62`](https://github.com/withastro/astro/commit/9b4f70a629f55e461759ba46f68af7097a2e9215) Thanks [@ematipico](https://github.com/ematipico)! - Introduced the concept of feature map. A feature map is a list of features that are built-in in Astro, and an Adapter
- can tell Astro if it can support it.
-
- ```ts
- import { AstroIntegration } from './astro';
-
- function myIntegration(): AstroIntegration {
- return {
- name: 'astro-awesome-list',
- // new feature map
- supportedAstroFeatures: {
- hybridOutput: 'experimental',
- staticOutput: 'stable',
- serverOutput: 'stable',
- assets: {
- supportKind: 'stable',
- isSharpCompatible: false,
- isSquooshCompatible: false,
- },
- },
- };
- }
- ```
-
-### Patch Changes
-
-- Updated dependencies [[`1eae2e3f7`](https://github.com/withastro/astro/commit/1eae2e3f7d693c9dfe91c8ccfbe606d32bf2fb81), [`76ddef19c`](https://github.com/withastro/astro/commit/76ddef19ccab6e5f7d3a5740cd41acf10e334b38), [`9b4f70a62`](https://github.com/withastro/astro/commit/9b4f70a629f55e461759ba46f68af7097a2e9215), [`3fdf509b2`](https://github.com/withastro/astro/commit/3fdf509b2731a9b2f972d89291e57cf78d62c769), [`2f951cd40`](https://github.com/withastro/astro/commit/2f951cd403dfcc2c3ca6aae618ae3e1409516e32), [`c022a4217`](https://github.com/withastro/astro/commit/c022a4217a805d223c1494e9eda4e48bbf810388), [`67becaa58`](https://github.com/withastro/astro/commit/67becaa580b8f787df58de66b7008b7098f1209c), [`bc37331d8`](https://github.com/withastro/astro/commit/bc37331d8154e3e95a8df9131e4e014e78a7a9e7), [`dfc2d93e3`](https://github.com/withastro/astro/commit/dfc2d93e3c645995379358fabbdfa9aab99f43d8), [`3dc1ca2fa`](https://github.com/withastro/astro/commit/3dc1ca2fac8d9965cc5085a5d09e72ed87b4281a), [`1be84dfee`](https://github.com/withastro/astro/commit/1be84dfee3ce8e6f5cc624f99aec4e980f6fde37), [`35f01df79`](https://github.com/withastro/astro/commit/35f01df797d23315f2bee2fc3fd795adb0559c58), [`3fdf509b2`](https://github.com/withastro/astro/commit/3fdf509b2731a9b2f972d89291e57cf78d62c769), [`78de801f2`](https://github.com/withastro/astro/commit/78de801f21fd4ca1653950027d953bf08614566b), [`59d6e569f`](https://github.com/withastro/astro/commit/59d6e569f63e175c97e82e94aa7974febfb76f7c), [`7723c4cc9`](https://github.com/withastro/astro/commit/7723c4cc93298c2e6530e55da7afda048f22cf81), [`fb5cd6b56`](https://github.com/withastro/astro/commit/fb5cd6b56dc27a71366ed5e1ab8bfe9b8f96bac5), [`631b9c410`](https://github.com/withastro/astro/commit/631b9c410d5d66fa384674027ba95d69ebb5063f)]:
- - astro@3.0.0-beta.0
-
-## 5.3.6
-
-### Patch Changes
-
-- [#8176](https://github.com/withastro/astro/pull/8176) [`d08c83ee3`](https://github.com/withastro/astro/commit/d08c83ee3fe0f10374264f61ee473255dcf0cd06) Thanks [@ematipico](https://github.com/ematipico)! - Fix an issue where `express` couldn't use the `handler` in `middleware` mode.
-
-- Updated dependencies [[`582132328`](https://github.com/withastro/astro/commit/5821323285646aee7ff9194a505f708028e4db57), [`fddd4dc71`](https://github.com/withastro/astro/commit/fddd4dc71af321bd6b4d01bb4b1b955284846e60), [`cfc465dde`](https://github.com/withastro/astro/commit/cfc465ddebcc58d20f29ecffaa857a77525435a9), [`95120efbe`](https://github.com/withastro/astro/commit/95120efbe817163663492181cbeb225849354493), [`273335cb0`](https://github.com/withastro/astro/commit/273335cb01615c3c06d46c02464f4496a81f8d0b), [`9142178b1`](https://github.com/withastro/astro/commit/9142178b113443749b87c1d259859b42a3d7a9c4), [`179796405`](https://github.com/withastro/astro/commit/179796405e053b559d83f84507e5a465861a029a)]:
- - astro@2.10.13
-
-## 5.3.5
-
-### Patch Changes
-
-- [#8141](https://github.com/withastro/astro/pull/8141) [`4c15c0696`](https://github.com/withastro/astro/commit/4c15c069691ca25efcb9ebb7d9b45605cd136ed3) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixed an issue where the preview mode handled 404 and 500 routes differently from running app with node directly.
-
-- Updated dependencies [[`04caa99c4`](https://github.com/withastro/astro/commit/04caa99c48ce604ca3b90302ff0df8dcdbeee650)]:
- - astro@2.10.12
-
-## 5.3.4
-
-### Patch Changes
-
-- [#8084](https://github.com/withastro/astro/pull/8084) [`560e45924`](https://github.com/withastro/astro/commit/560e45924622141206ff5b47d134cb343d6d2a71) Thanks [@hbgl](https://github.com/hbgl)! - Stream request body instead of buffering it in memory.
-
-- Updated dependencies [[`c19987df0`](https://github.com/withastro/astro/commit/c19987df0be3520cf774476cea270c03edd08354), [`560e45924`](https://github.com/withastro/astro/commit/560e45924622141206ff5b47d134cb343d6d2a71), [`afc45af20`](https://github.com/withastro/astro/commit/afc45af2022f7c43fbb6c5c04983695f3819e47e), [`d1f7143f9`](https://github.com/withastro/astro/commit/d1f7143f9caf2ffa0e87cc55c0e05339d3501db3), [`3e46634fd`](https://github.com/withastro/astro/commit/3e46634fd540e5b967d2e5c9abd6235452cee2f2), [`a12027b6a`](https://github.com/withastro/astro/commit/a12027b6af411be39700919ca47e240a335e9887)]:
- - astro@2.10.8
-
-## 5.3.3
-
-### Patch Changes
-
-- [#6928](https://github.com/withastro/astro/pull/6928) [`b16cb787f`](https://github.com/withastro/astro/commit/b16cb787fd16ebaaf860d8bb183789caf01c0fb7) Thanks [@JerryWu1234](https://github.com/JerryWu1234)! - Support the `--host` flag when running the standalone server (also works for `astro preview --host`)
-
-- Updated dependencies [[`1b8d30209`](https://github.com/withastro/astro/commit/1b8d3020990130dabfaaf753db73a32c6e0c896a), [`405913cdf`](https://github.com/withastro/astro/commit/405913cdf20b26407aa351c090f0a0859a4e6f54), [`87d4b1843`](https://github.com/withastro/astro/commit/87d4b18437c7565c48cad4bea81831c2a244ebb8), [`c23377caa`](https://github.com/withastro/astro/commit/c23377caafbc75deb91c33b9678c1b6868ad40ea), [`86bee2812`](https://github.com/withastro/astro/commit/86bee2812185df6e14025e5962a335f51853587b)]:
- - astro@2.10.6
-
-## 5.3.2
-
-### Patch Changes
-
-- [#7708](https://github.com/withastro/astro/pull/7708) [`4dd6c7900`](https://github.com/withastro/astro/commit/4dd6c7900ca40db1b2cebed9bd02a9eb00874d8d) Thanks [@DixCouleur](https://github.com/DixCouleur)! - fix issuse #7590 "res.writeHead is not a function" in Express/Node middleware
-
-- Updated dependencies [[`41afb8405`](https://github.com/withastro/astro/commit/41afb84057f606b0e7f9a73c1e40487068e43948), [`c00b6f0c4`](https://github.com/withastro/astro/commit/c00b6f0c49027125ea3026e89b21fef84380d187), [`1f0ee494a`](https://github.com/withastro/astro/commit/1f0ee494a5190356d130282f1f51ba2a5e6ea63f), [`00cb28f49`](https://github.com/withastro/astro/commit/00cb28f4964a60bc609770108d491acc277997b9), [`c264be349`](https://github.com/withastro/astro/commit/c264be3497db4aa8b3bcce0d2f79a26e35b8e91e), [`e1e958a75`](https://github.com/withastro/astro/commit/e1e958a75860292688569e82b4617fc141056202)]:
- - astro@2.10.0
-
-## 5.3.1
-
-### Patch Changes
-
-- [#7754](https://github.com/withastro/astro/pull/7754) [`298dbb89f`](https://github.com/withastro/astro/commit/298dbb89f2963a547370b6e65cafd2650fdb1b27) Thanks [@natemoo-re](https://github.com/natemoo-re)! - Improve `404` behavior in middleware mode
-
-- Updated dependencies [[`298dbb89f`](https://github.com/withastro/astro/commit/298dbb89f2963a547370b6e65cafd2650fdb1b27), [`9e2203847`](https://github.com/withastro/astro/commit/9e22038472c8be05ed7a72620534b88324dce793), [`5c5da8d2f`](https://github.com/withastro/astro/commit/5c5da8d2fbb37830f3ee81830d4c9afcd2c1a3e3), [`0b8375fe8`](https://github.com/withastro/astro/commit/0b8375fe82a15bfff3f517f98de6454adb2779f1), [`89d015db6`](https://github.com/withastro/astro/commit/89d015db6ce4d15b5b1140f0eb6bfbef187d6ad7), [`ebf7ebbf7`](https://github.com/withastro/astro/commit/ebf7ebbf7ae767625d736fad327954cfb853837e)]:
- - astro@2.9.7
-
-## 5.3.0
-
-### Minor Changes
-
-- [#7385](https://github.com/withastro/astro/pull/7385) [`8e2923cc6`](https://github.com/withastro/astro/commit/8e2923cc6219eda01ca2c749f5c7fa2fe4319455) Thanks [@ematipico](https://github.com/ematipico)! - `Astro.locals` is now exposed to the adapter API. Node Adapter can now pass in a `locals` object in the SSR handler middleware.
-
-### Patch Changes
-
-- Updated dependencies [[`30bb36371`](https://github.com/withastro/astro/commit/30bb363713e3d2c50d0d4816d970aa93b836a3b0), [`3943fa390`](https://github.com/withastro/astro/commit/3943fa390a0bd41317a673d0f841e0461c7499cd), [`7877a06d8`](https://github.com/withastro/astro/commit/7877a06d829305eed356fbb8bfd1ef578cd5466e), [`e314a04bf`](https://github.com/withastro/astro/commit/e314a04bfbf0526838b7c9aac452251b27d69719), [`33cdc8622`](https://github.com/withastro/astro/commit/33cdc8622a56c8e5465b7a50f627ecc568870c6b), [`76fcdb84d`](https://github.com/withastro/astro/commit/76fcdb84dd828ac373b2dc739e57fadf650820fd), [`8e2923cc6`](https://github.com/withastro/astro/commit/8e2923cc6219eda01ca2c749f5c7fa2fe4319455), [`459b5bd05`](https://github.com/withastro/astro/commit/459b5bd05f562238f7250520efe3cf0fa156bb45)]:
- - astro@2.7.0
-
-## 5.2.0
-
-### Minor Changes
-
-- [#7227](https://github.com/withastro/astro/pull/7227) [`4929332c3`](https://github.com/withastro/astro/commit/4929332c3210d1634b8607c7736d9049860a2079) Thanks [@alex-sherwin](https://github.com/alex-sherwin)! - Fixes NodeJS adapter for multiple set-cookie headers and combining AstroCookies and Response.headers cookies
-
-### Patch Changes
-
-- [#7243](https://github.com/withastro/astro/pull/7243) [`409c60028`](https://github.com/withastro/astro/commit/409c60028aaab09b8f2383ef5730531cd23db4ba) Thanks [@Riki-WangJJ](https://github.com/Riki-WangJJ)! - Support directory redirects and query params at the same time
-
-- [#7260](https://github.com/withastro/astro/pull/7260) [`39403c32f`](https://github.com/withastro/astro/commit/39403c32faea58399c61d3344b770f195be60d5b) Thanks [@natemoo-re](https://github.com/natemoo-re)! - Unflags support for `output: 'hybrid'` mode, which enables pre-rendering by default. The additional `experimental.hybridOutput` flag can be safely removed from your configuration.
-
-- Updated dependencies [[`57f8d14c0`](https://github.com/withastro/astro/commit/57f8d14c027c30919363e12c664ccff4ed64d0fc), [`414eb19d2`](https://github.com/withastro/astro/commit/414eb19d2fcb55758f9d053076773b11b62f4c97), [`a7e2b37ff`](https://github.com/withastro/astro/commit/a7e2b37ff73871c46895c615846a86a539f45330), [`dd1a6b6c9`](https://github.com/withastro/astro/commit/dd1a6b6c941aeb7af934bd12db22412af262f5a1), [`d72cfa7ca`](https://github.com/withastro/astro/commit/d72cfa7cad758192163712ceb269405659fd14bc), [`144813f73`](https://github.com/withastro/astro/commit/144813f7308dcb9de64ebe3f0f2c6cba9ad81eb1), [`b5213654b`](https://github.com/withastro/astro/commit/b5213654b1b7f3ba573a48d3be688b2bdde7870f), [`e3b8c6296`](https://github.com/withastro/astro/commit/e3b8c62969d680d1915a122c610d281d6711aa63), [`890a2bc98`](https://github.com/withastro/astro/commit/890a2bc9891a2449ab99b01b65468f6dddba6b12), [`39403c32f`](https://github.com/withastro/astro/commit/39403c32faea58399c61d3344b770f195be60d5b), [`101f03209`](https://github.com/withastro/astro/commit/101f032098148b3daaac8d46ff1e535b79232e43)]:
- - astro@2.6.0
-
-## 5.1.4
-
-### Patch Changes
-
-- [#6991](https://github.com/withastro/astro/pull/6991) [`719002ca5`](https://github.com/withastro/astro/commit/719002ca5b128744fb4316d4a52c5dcd46a42759) Thanks [@MoustaphaDev](https://github.com/MoustaphaDev)! - Enable experimental support for hybrid SSR with pre-rendering enabled by default
-
- **astro.config.mjs**
-
- ```js
- import { defineConfig } from 'astro/config';
- export default defineConfig({
- output: 'hybrid',
- experimental: {
- hybridOutput: true,
- },
- });
- ```
-
- Then add `export const prerender = false` to any page or endpoint you want to opt-out of pre-rendering.
-
- **src/pages/contact.astro**
-
- ```astro
- ---
- export const prerender = false;
-
- if (Astro.request.method === 'POST') {
- // handle form submission
- }
- ---
-
- <form method="POST">
- <input type="text" name="name" />
- <input type="email" name="email" />
- <button type="submit">Submit</button>
- </form>
- ```
-
-- [#7104](https://github.com/withastro/astro/pull/7104) [`826e02890`](https://github.com/withastro/astro/commit/826e0289005f645b902375b98d5549c6a95ccafa) Thanks [@bluwy](https://github.com/bluwy)! - Specify `"files"` field to only publish necessary files
-
-- Updated dependencies [[`4516d7b22`](https://github.com/withastro/astro/commit/4516d7b22c5979cde4537f196b53ae2826ba9561), [`e186ecc5e`](https://github.com/withastro/astro/commit/e186ecc5e292de8c6a2c441a2d588512c0813068), [`c6d7ebefd`](https://github.com/withastro/astro/commit/c6d7ebefdd554a9ef29cfeb426ac55cab80d6473), [`914c439bc`](https://github.com/withastro/astro/commit/914c439bccee9fec002c6d92beaa501c398e62ac), [`e9fc2c221`](https://github.com/withastro/astro/commit/e9fc2c2213036d47cd30a47a6cdad5633481a0f8), [`075eee08f`](https://github.com/withastro/astro/commit/075eee08f2e2b0baea008b97f3523f2cb937ee44), [`719002ca5`](https://github.com/withastro/astro/commit/719002ca5b128744fb4316d4a52c5dcd46a42759), [`fc52681ba`](https://github.com/withastro/astro/commit/fc52681ba2f8fe8bcd92eeedf3c6a52fd86a390e), [`fb84622af`](https://github.com/withastro/astro/commit/fb84622af04f795de8d17f24192de105f70fe910), [`cada10a46`](https://github.com/withastro/astro/commit/cada10a466f81f8edb0aa664f9cffdb6b5b8f307), [`cd410c5eb`](https://github.com/withastro/astro/commit/cd410c5eb71f825259279c27c4c39d0ad282c3f0), [`73ec6f6c1`](https://github.com/withastro/astro/commit/73ec6f6c16cadb71dafe9f664f0debde072c3173), [`410428672`](https://github.com/withastro/astro/commit/410428672ed97bba7ca0b3352c1a7ee564921462), [`763ff2d1e`](https://github.com/withastro/astro/commit/763ff2d1e44f54b899d7c65386f1b4b877c95737), [`c1669c001`](https://github.com/withastro/astro/commit/c1669c0011eecfe65a459d727848c18c189a54ca), [`3d525efc9`](https://github.com/withastro/astro/commit/3d525efc95cfb2deb5d9e04856d02965d66901c9)]:
- - astro@2.5.0
-
-## 5.1.3
-
-### Patch Changes
-
-- [#7076](https://github.com/withastro/astro/pull/7076) [`781f558c4`](https://github.com/withastro/astro/commit/781f558c401a5f02927d150e4628a77c55cccd28) Thanks [@matthewp](https://github.com/matthewp)! - Fix redirects on directories when using base option
-
-## 5.1.2
-
-### Patch Changes
-
-- [#6935](https://github.com/withastro/astro/pull/6935) [`c405cef64`](https://github.com/withastro/astro/commit/c405cef64711a7b6a480e8b4068cd2bf3cf889a9) Thanks [@matthewp](https://github.com/matthewp)! - Catch errors that occur within the stream in the Node adapter
-
-- Updated dependencies [[`a98df9374`](https://github.com/withastro/astro/commit/a98df9374dec65c678fa47319cb1481b1af123e2), [`ac57b5549`](https://github.com/withastro/astro/commit/ac57b5549f828a17bdbebdaca7ace075307a3c9d), [`50975f2ea`](https://github.com/withastro/astro/commit/50975f2ea3a59f9e023cc631a9372c0c7986eec9), [`ebae1eaf8`](https://github.com/withastro/astro/commit/ebae1eaf87f49399036033c673b513338f7d9c42), [`dc062f669`](https://github.com/withastro/astro/commit/dc062f6695ce577dc569781fc0678c903012c336)]:
- - astro@2.3.3
- - @astrojs/webapi@2.1.1
-
-## 5.1.1
-
-### Patch Changes
-
-- [#6746](https://github.com/withastro/astro/pull/6746) [`4cc1bf61b`](https://github.com/withastro/astro/commit/4cc1bf61b832dba9aab1916b56f5260ceac2d97d) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fix malformed URLs crashing the server in certain cases
-
-- Updated dependencies [[`489dd8d69`](https://github.com/withastro/astro/commit/489dd8d69cdd9d7c243cf8bec96051a914984b9c), [`a1a4f45b5`](https://github.com/withastro/astro/commit/a1a4f45b51a80215fa7598da83bd0d9c5acd20d2), [`a1108e037`](https://github.com/withastro/astro/commit/a1108e037115cdb67d03505286c7d3a4fc2a1ff5), [`8b88e4cf1`](https://github.com/withastro/astro/commit/8b88e4cf15c8bea7942b3985380164e0edf7250b), [`d54cbe413`](https://github.com/withastro/astro/commit/d54cbe41349e55f8544212ad9320705f07325920), [`4c347ab51`](https://github.com/withastro/astro/commit/4c347ab51e46f2319d614f8577fe502e3dc816e2), [`ff0430786`](https://github.com/withastro/astro/commit/ff043078630e678348ae4f4757b3015b3b862c16), [`2f2e572e9`](https://github.com/withastro/astro/commit/2f2e572e937fd25451bbc78a05d55b7caa1ca3ec), [`7116c021a`](https://github.com/withastro/astro/commit/7116c021a39eac15a6e1264dfbd11bef0f5d618a)]:
- - astro@2.2.0
-
-## 5.1.0
-
-### Minor Changes
-
-- [#6213](https://github.com/withastro/astro/pull/6213) [`afbbc4d5b`](https://github.com/withastro/astro/commit/afbbc4d5bfafc1779bac00b41c2a1cb1c90f2808) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Updated compilation settings to disable downlevelling for Node 14
-
-### Patch Changes
-
-- Updated dependencies [[`fec583909`](https://github.com/withastro/astro/commit/fec583909ab62829dc0c1600e2387979365f2b94), [`b087b83fe`](https://github.com/withastro/astro/commit/b087b83fe266c431fe34a07d5c2293cc4ab011c6), [`694918a56`](https://github.com/withastro/astro/commit/694918a56b01104831296be0c25456135a63c784), [`a20610609`](https://github.com/withastro/astro/commit/a20610609863ae3b48afe96819b8f11ae4f414d5), [`a4a74ab70`](https://github.com/withastro/astro/commit/a4a74ab70cd2aa0d812a1f6b202c4e240a8913bf), [`75921b3cd`](https://github.com/withastro/astro/commit/75921b3cd916d439f6392c487c21532fde35ed13), [`afbbc4d5b`](https://github.com/withastro/astro/commit/afbbc4d5bfafc1779bac00b41c2a1cb1c90f2808)]:
- - astro@2.1.0
- - @astrojs/webapi@2.1.0
-
-## 5.0.4
-
-### Patch Changes
-
-- [#6323](https://github.com/withastro/astro/pull/6323) [`5e26bc891`](https://github.com/withastro/astro/commit/5e26bc891cbebb3598acfa760c135a25c548d624) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Updated Undici to 5.20.0. This fixes a security issue and handling of cookies in certain cases in dev
-
-- Updated dependencies [[`5e26bc891`](https://github.com/withastro/astro/commit/5e26bc891cbebb3598acfa760c135a25c548d624), [`a156ecbb7`](https://github.com/withastro/astro/commit/a156ecbb7f4df6a46124a9a12eb712f9163db2ed), [`ccd72e6bb`](https://github.com/withastro/astro/commit/ccd72e6bb41e570d42b1b158e8124c8e04a1943d), [`504c7bacb`](https://github.com/withastro/astro/commit/504c7bacb8c1f2308a31e6c412825ba34983ba33), [`63dda6ded`](https://github.com/withastro/astro/commit/63dda6dedd4c6ea1d5ce72e9cf3fe5f88339a927), [`f91a7f376`](https://github.com/withastro/astro/commit/f91a7f376c223f18b4d8fbed81f95f6bea1cef8d)]:
- - astro@2.0.15
-
-## 5.0.3
-
-### Patch Changes
-
-- [#6110](https://github.com/withastro/astro/pull/6110) [`67ccec9e1`](https://github.com/withastro/astro/commit/67ccec9e168f241318d9dac40096016982d89b7b) Thanks [@matthewp](https://github.com/matthewp)! - Fixes support for prerendering and query params
-
-## 5.0.2
-
-### Patch Changes
-
-- [#6088](https://github.com/withastro/astro/pull/6088) [`6a03649f0`](https://github.com/withastro/astro/commit/6a03649f0084f0df6738236d4a86c9936325cee7) Thanks [@QingXia-Ela](https://github.com/QingXia-Ela)! - fix incorrent encoded when path has other language characters
-
-## 5.0.1
-
-### Patch Changes
-
-- [#5992](https://github.com/withastro/astro/pull/5992) [`60b32d585`](https://github.com/withastro/astro/commit/60b32d58565d87e87573eb268408293fc28ec657) Thanks [@HiDeoo](https://github.com/HiDeoo)! - Fix `Astro.url.protocol` when using the @astrojs/node SSR adapter with HTTPS
-
-- Updated dependencies [[`b53e0717b`](https://github.com/withastro/astro/commit/b53e0717b7f6b042baaeec7f87999e99c76c031c), [`60b32d585`](https://github.com/withastro/astro/commit/60b32d58565d87e87573eb268408293fc28ec657), [`883e0cc29`](https://github.com/withastro/astro/commit/883e0cc29968d51ed6c7515be035a40b28bafdad), [`dabce6b8c`](https://github.com/withastro/astro/commit/dabce6b8c684f851c3535f8acead06cbef6dce2a), [`aedf23f85`](https://github.com/withastro/astro/commit/aedf23f8582e32a6b94b81ddba9b323831f2b22a)]:
- - astro@2.0.2
-
-## 5.0.0
-
-### Major Changes
-
-- [#5782](https://github.com/withastro/astro/pull/5782) [`1f92d64ea`](https://github.com/withastro/astro/commit/1f92d64ea35c03fec43aff64eaf704dc5a9eb30a) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Remove support for Node 14. Minimum supported Node version is now >=16.12.0
-
-- [#5707](https://github.com/withastro/astro/pull/5707) [`5eba34fcc`](https://github.com/withastro/astro/commit/5eba34fcc663def20bdf6e0daad02a6a5472776b) Thanks [@bluwy](https://github.com/bluwy)! - Remove `astro:build:start` backwards compatibility code
-
-- [#5806](https://github.com/withastro/astro/pull/5806) [`7572f7402`](https://github.com/withastro/astro/commit/7572f7402238da37de748be58d678fedaf863b53) Thanks [@matthewp](https://github.com/matthewp)! - Make astro a `peerDependency` of integrations
-
- This marks `astro` as a `peerDependency` of several packages that are already getting `major` version bumps. This is so we can more properly track the dependency between them and what version of Astro they are being used with.
-
-### Minor Changes
-
-- [#5832](https://github.com/withastro/astro/pull/5832) [`2303f9514`](https://github.com/withastro/astro/commit/2303f95142aa740c99213a098f82b99dd37d74a0) Thanks [@HiDeoo](https://github.com/HiDeoo)! - Add support for serving well-known URIs with the @astrojs/node SSR adapter
-
-### Patch Changes
-
-- [#5701](https://github.com/withastro/astro/pull/5701) [`9869f2f6d`](https://github.com/withastro/astro/commit/9869f2f6d8c344babb8a59cb54918de14bd95dcc) Thanks [@wulinsheng123](https://github.com/wulinsheng123)! - Support custom 404 page in standalone mode
-
-- Updated dependencies [[`93e633922`](https://github.com/withastro/astro/commit/93e633922c2e449df3bb2357b3683af1d3c0e07b), [`16dc36a87`](https://github.com/withastro/astro/commit/16dc36a870df47a4151a8ed2d91d0bd1bb812458), [`01f3f463b`](https://github.com/withastro/astro/commit/01f3f463bf2918b310d130a9fabbf3ee21d14029), [`e2019be6f`](https://github.com/withastro/astro/commit/e2019be6ffa46fa33d92cfd346f9ecbe51bb7144), [`05caf445d`](https://github.com/withastro/astro/commit/05caf445d4d2728f1010aeb2179a9e756c2fd17d), [`49ab4f231`](https://github.com/withastro/astro/commit/49ab4f231c23b34891c3ee86f4b92bf8d6d267a3), [`a342a486c`](https://github.com/withastro/astro/commit/a342a486c2831461e24e6c2f1ca8a9d3e15477b6), [`8fb28648f`](https://github.com/withastro/astro/commit/8fb28648f66629741cb976bfe34ccd9d8f55661e), [`1f92d64ea`](https://github.com/withastro/astro/commit/1f92d64ea35c03fec43aff64eaf704dc5a9eb30a), [`c2180746b`](https://github.com/withastro/astro/commit/c2180746b4f6d9ef1b6f86924f21f52cc6ab4e63), [`ae8a012a7`](https://github.com/withastro/astro/commit/ae8a012a7b6884a03c50494332ee37b4505c2c3b), [`cf2de5422`](https://github.com/withastro/astro/commit/cf2de5422c26bfdea4c75f76e57b57299ded3e3a), [`ce5c5dbd4`](https://github.com/withastro/astro/commit/ce5c5dbd46afbe738b03600758bf5c35113de522), [`ec09bb664`](https://github.com/withastro/astro/commit/ec09bb6642064dbd7d2f3369afb090363ae18de2), [`665a2c222`](https://github.com/withastro/astro/commit/665a2c2225e42881f5a9550599e8f3fc1deea0b4), [`259a539d7`](https://github.com/withastro/astro/commit/259a539d7d70c783330c797794b15716921629cf), [`f7aa1ec25`](https://github.com/withastro/astro/commit/f7aa1ec25d1584f7abd421903fbef66b1c050e2a), [`4987d6f44`](https://github.com/withastro/astro/commit/4987d6f44cfd0d81d88f21f5c380503403dc1e6a), [`304823811`](https://github.com/withastro/astro/commit/304823811eddd8e72aa1d8e2d39b40ab5cda3565), [`302e0ef8f`](https://github.com/withastro/astro/commit/302e0ef8f5d5232e3348afe680e599f3e537b5c5), [`55cea0a9d`](https://github.com/withastro/astro/commit/55cea0a9d8c8df91a46590fc04a9ac28089b3432), [`dd56c1941`](https://github.com/withastro/astro/commit/dd56c19411b126439b8bc42d681b6fa8c06e8c61), [`9963c6e4d`](https://github.com/withastro/astro/commit/9963c6e4d50c392c3d1ac4492237020f15ccb1de), [`46ecd5de3`](https://github.com/withastro/astro/commit/46ecd5de34df619e2ee73ccea39a57acd37bc0b8), [`be901dc98`](https://github.com/withastro/astro/commit/be901dc98c4a7f6b5536540aa8f7ba5108e939a0), [`f6cf92b48`](https://github.com/withastro/astro/commit/f6cf92b48317a19a3840ad781b77d6d3cae143bb), [`e818cc046`](https://github.com/withastro/astro/commit/e818cc0466a942919ea3c41585e231c8c80cb3d0), [`8c100a6fe`](https://github.com/withastro/astro/commit/8c100a6fe6cc652c3799d1622e12c2c969f30510), [`116d8835c`](https://github.com/withastro/astro/commit/116d8835ca9e78f8b5e477ee5a3d737b69f80706), [`840412128`](https://github.com/withastro/astro/commit/840412128b00a04515156e92c314a929d6b94f6d), [`1f49cddf9`](https://github.com/withastro/astro/commit/1f49cddf9e9ffc651efc171b2cbde9fbe9e8709d), [`7325df412`](https://github.com/withastro/astro/commit/7325df412107fc0e65cd45c1b568fb686708f723), [`16c7d0bfd`](https://github.com/withastro/astro/commit/16c7d0bfd49d2b9bfae45385f506bcd642f9444a), [`c55fbcb8e`](https://github.com/withastro/astro/commit/c55fbcb8edca1fe118a44f68c9f9436a4719d171), [`a9c292026`](https://github.com/withastro/astro/commit/a9c2920264e36cc5dc05f4adc1912187979edb0d), [`2a5786419`](https://github.com/withastro/astro/commit/2a5786419599b8674473c699300172b9aacbae2e), [`4a1cabfe6`](https://github.com/withastro/astro/commit/4a1cabfe6b9ef8a6fbbcc0727a0dc6fa300cedaa), [`a8d3e7924`](https://github.com/withastro/astro/commit/a8d3e79246605d252dcddad159e358e2d79bd624), [`fa8c131f8`](https://github.com/withastro/astro/commit/fa8c131f88ef67d14c62f1c00c97ed74d43a80ac), [`64b8082e7`](https://github.com/withastro/astro/commit/64b8082e776b832f1433ed288e6f7888adb626d0), [`c4b0cb8bf`](https://github.com/withastro/astro/commit/c4b0cb8bf2b41887d9106440bb2e70d421a5f481), [`1f92d64ea`](https://github.com/withastro/astro/commit/1f92d64ea35c03fec43aff64eaf704dc5a9eb30a), [`23dc9ea96`](https://github.com/withastro/astro/commit/23dc9ea96a10343852d965efd41fe6665294f1fb), [`63a6ceb38`](https://github.com/withastro/astro/commit/63a6ceb38d88331451dca64d0034c7c58e3d26f1), [`a3a7fc929`](https://github.com/withastro/astro/commit/a3a7fc9298e6d88abb4b7bee1e58f05fa9558cf1), [`52209ca2a`](https://github.com/withastro/astro/commit/52209ca2ad72a30854947dcb3a90ab4db0ac0a6f), [`5fd9208d4`](https://github.com/withastro/astro/commit/5fd9208d447f5ab8909a2188b6c2491a0debd49d), [`5eba34fcc`](https://github.com/withastro/astro/commit/5eba34fcc663def20bdf6e0daad02a6a5472776b), [`899214298`](https://github.com/withastro/astro/commit/899214298cee5f0c975c7245e623c649e1842d73), [`3a00ecb3e`](https://github.com/withastro/astro/commit/3a00ecb3eb4bc44be758c064f2bde6e247e8a593), [`5eba34fcc`](https://github.com/withastro/astro/commit/5eba34fcc663def20bdf6e0daad02a6a5472776b), [`2303f9514`](https://github.com/withastro/astro/commit/2303f95142aa740c99213a098f82b99dd37d74a0), [`1ca81c16b`](https://github.com/withastro/astro/commit/1ca81c16b8b66236e092e6eb6ec3f73f5668421c), [`b66d7195c`](https://github.com/withastro/astro/commit/b66d7195c17a55ea0931bc3744888bd4f5f01ce6)]:
- - astro@2.0.0
- - @astrojs/webapi@2.0.0
-
-## 5.0.0-beta.1
-
-<details>
-<summary>See changes in 5.0.0-beta.1</summary>
-
-### Major Changes
-
-- [#5782](https://github.com/withastro/astro/pull/5782) [`1f92d64ea`](https://github.com/withastro/astro/commit/1f92d64ea35c03fec43aff64eaf704dc5a9eb30a) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Remove support for Node 14. Minimum supported Node version is now >=16.12.0
-
-- [#5806](https://github.com/withastro/astro/pull/5806) [`7572f7402`](https://github.com/withastro/astro/commit/7572f7402238da37de748be58d678fedaf863b53) Thanks [@matthewp](https://github.com/matthewp)! - Make astro a `peerDependency` of integrations
-
- This marks `astro` as a `peerDependency` of several packages that are already getting `major` version bumps. This is so we can more properly track the dependency between them and what version of Astro they are being used with.
-
-### Minor Changes
-
-- [#5832](https://github.com/withastro/astro/pull/5832) [`2303f9514`](https://github.com/withastro/astro/commit/2303f95142aa740c99213a098f82b99dd37d74a0) Thanks [@HiDeoo](https://github.com/HiDeoo)! - Add support for serving well-known URIs with the @astrojs/node SSR adapter
-
-### Patch Changes
-
-- [#5701](https://github.com/withastro/astro/pull/5701) [`9869f2f6d`](https://github.com/withastro/astro/commit/9869f2f6d8c344babb8a59cb54918de14bd95dcc) Thanks [@wulinsheng123](https://github.com/wulinsheng123)! - Support custom 404 page in standalone mode
-
-- Updated dependencies [[`01f3f463b`](https://github.com/withastro/astro/commit/01f3f463bf2918b310d130a9fabbf3ee21d14029), [`1f92d64ea`](https://github.com/withastro/astro/commit/1f92d64ea35c03fec43aff64eaf704dc5a9eb30a), [`c2180746b`](https://github.com/withastro/astro/commit/c2180746b4f6d9ef1b6f86924f21f52cc6ab4e63), [`ae8a012a7`](https://github.com/withastro/astro/commit/ae8a012a7b6884a03c50494332ee37b4505c2c3b), [`cf2de5422`](https://github.com/withastro/astro/commit/cf2de5422c26bfdea4c75f76e57b57299ded3e3a), [`ec09bb664`](https://github.com/withastro/astro/commit/ec09bb6642064dbd7d2f3369afb090363ae18de2), [`665a2c222`](https://github.com/withastro/astro/commit/665a2c2225e42881f5a9550599e8f3fc1deea0b4), [`f7aa1ec25`](https://github.com/withastro/astro/commit/f7aa1ec25d1584f7abd421903fbef66b1c050e2a), [`302e0ef8f`](https://github.com/withastro/astro/commit/302e0ef8f5d5232e3348afe680e599f3e537b5c5), [`840412128`](https://github.com/withastro/astro/commit/840412128b00a04515156e92c314a929d6b94f6d), [`1f49cddf9`](https://github.com/withastro/astro/commit/1f49cddf9e9ffc651efc171b2cbde9fbe9e8709d), [`c55fbcb8e`](https://github.com/withastro/astro/commit/c55fbcb8edca1fe118a44f68c9f9436a4719d171), [`4a1cabfe6`](https://github.com/withastro/astro/commit/4a1cabfe6b9ef8a6fbbcc0727a0dc6fa300cedaa), [`c4b0cb8bf`](https://github.com/withastro/astro/commit/c4b0cb8bf2b41887d9106440bb2e70d421a5f481), [`1f92d64ea`](https://github.com/withastro/astro/commit/1f92d64ea35c03fec43aff64eaf704dc5a9eb30a), [`23dc9ea96`](https://github.com/withastro/astro/commit/23dc9ea96a10343852d965efd41fe6665294f1fb), [`63a6ceb38`](https://github.com/withastro/astro/commit/63a6ceb38d88331451dca64d0034c7c58e3d26f1), [`52209ca2a`](https://github.com/withastro/astro/commit/52209ca2ad72a30854947dcb3a90ab4db0ac0a6f), [`2303f9514`](https://github.com/withastro/astro/commit/2303f95142aa740c99213a098f82b99dd37d74a0)]:
- - astro@2.0.0-beta.2
- - @astrojs/webapi@2.0.0-beta.0
-
-</details>
-
-## 5.0.0-beta.0
-
-<details>
-<summary>See changes in 5.0.0-beta.0</summary>
-
-### Major Changes
-
-- [#5707](https://github.com/withastro/astro/pull/5707) [`5eba34fcc`](https://github.com/withastro/astro/commit/5eba34fcc663def20bdf6e0daad02a6a5472776b) Thanks [@bluwy](https://github.com/bluwy)! - Remove `astro:build:start` backwards compatibility code
-
-### Patch Changes
-
-- Updated dependencies [[`e2019be6f`](https://github.com/withastro/astro/commit/e2019be6ffa46fa33d92cfd346f9ecbe51bb7144), [`8fb28648f`](https://github.com/withastro/astro/commit/8fb28648f66629741cb976bfe34ccd9d8f55661e), [`dd56c1941`](https://github.com/withastro/astro/commit/dd56c19411b126439b8bc42d681b6fa8c06e8c61), [`f6cf92b48`](https://github.com/withastro/astro/commit/f6cf92b48317a19a3840ad781b77d6d3cae143bb), [`16c7d0bfd`](https://github.com/withastro/astro/commit/16c7d0bfd49d2b9bfae45385f506bcd642f9444a), [`a9c292026`](https://github.com/withastro/astro/commit/a9c2920264e36cc5dc05f4adc1912187979edb0d), [`5eba34fcc`](https://github.com/withastro/astro/commit/5eba34fcc663def20bdf6e0daad02a6a5472776b), [`5eba34fcc`](https://github.com/withastro/astro/commit/5eba34fcc663def20bdf6e0daad02a6a5472776b)]:
- - astro@2.0.0-beta.0
-
-</details>
-
-## 4.0.0
-
-### Patch Changes
-
-- Updated dependencies [[`d85ec7484`](https://github.com/withastro/astro/commit/d85ec7484ce14a4c7d3f480da8f38fcb9aff388f), [`d2960984c`](https://github.com/withastro/astro/commit/d2960984c59af7b60a3ea472c6c58fb00534a8e6), [`31ec84797`](https://github.com/withastro/astro/commit/31ec8479721a1cd65538ec041458c5ffe8f50ee9), [`5ec0f6ed5`](https://github.com/withastro/astro/commit/5ec0f6ed55b0a14a9663a90a03428345baf126bd), [`dced4a8a2`](https://github.com/withastro/astro/commit/dced4a8a2657887ec569860d9862d20f695dc23a), [`6b156dd3b`](https://github.com/withastro/astro/commit/6b156dd3b467884839a571c53114aadf26fa4b0b)]:
- - astro@1.7.0
-
-## 3.1.1
-
-### Patch Changes
-
-- [#5560](https://github.com/withastro/astro/pull/5560) [`281ea9fc3`](https://github.com/withastro/astro/commit/281ea9fc344dec4348e398696e671f833334045b) Thanks [@natemoo-re](https://github.com/natemoo-re)! - Improve error message when serverEntrypoint does not exist
-
-- Updated dependencies [[`b2f0210c4`](https://github.com/withastro/astro/commit/b2f0210c400a547d3067fdae6d15663b827be3a6), [`02bb0a1cc`](https://github.com/withastro/astro/commit/02bb0a1ccd53e38157eec3a750160731fce64b9c), [`2bd23e454`](https://github.com/withastro/astro/commit/2bd23e454fc9559aa00b9a493772acd69ba9ce6c)]:
- - astro@1.6.15
-
-## 3.1.0
-
-### Minor Changes
-
-- [#5418](https://github.com/withastro/astro/pull/5418) [`aa16b6ceb`](https://github.com/withastro/astro/commit/aa16b6cebc08e0a10a17024d31ee7d2319258a34) Thanks [@jbanety](https://github.com/jbanety)! - Sometimes Astro sends a ReadableStream as a response and it raise an error **TypeError: body is not async iterable.**
-
- I added a function to get a response iterator from different response types (sourced from apollo-client).
-
- With this, node adapter can handle all the Astro response types.
-
-- [#5421](https://github.com/withastro/astro/pull/5421) [`12236dbc0`](https://github.com/withastro/astro/commit/12236dbc06e1e43618b61d180020a67cb31499f8) Thanks [@Scttpr](https://github.com/Scttpr)! - Allow HOST env variable to be provided at runtime
-
-### Patch Changes
-
-- Updated dependencies [[`1ab505855`](https://github.com/withastro/astro/commit/1ab505855f9942659e3d23cb1ac668f04b98889d), [`ff35b4759`](https://github.com/withastro/astro/commit/ff35b4759bd0fecfee6c99bf510c2e32d2574992), [`b22ba1c03`](https://github.com/withastro/astro/commit/b22ba1c03a3e384dad569feb38fa34ecf7ec3b93), [`a9f7ff966`](https://github.com/withastro/astro/commit/a9f7ff96676a40b78e22379edc8eb9ce60a29fb8)]:
- - astro@1.6.10
-
-## 3.0.0
-
-### Major Changes
-
-- [#5290](https://github.com/withastro/astro/pull/5290) [`b2b291d29`](https://github.com/withastro/astro/commit/b2b291d29143703cece0d12c8e74b2e1151d2061) Thanks [@matthewp](https://github.com/matthewp)! - Handle base configuration in adapters
-
- This allows adapters to correctly handle `base` configuration. Internally Astro now matches routes when the URL includes the `base`.
-
- Adapters now also have access to the `removeBase` method which will remove the `base` from a pathname. This is useful to look up files for static assets.
-
-### Patch Changes
-
-- Updated dependencies [[`b2b291d29`](https://github.com/withastro/astro/commit/b2b291d29143703cece0d12c8e74b2e1151d2061), [`97e2b6ad7`](https://github.com/withastro/astro/commit/97e2b6ad7a6fa23e82be28b2f57cdf3f85fab112), [`4af4d8fa0`](https://github.com/withastro/astro/commit/4af4d8fa0035130fbf31c82d72777c3679bc1ca5), [`f6add3924`](https://github.com/withastro/astro/commit/f6add3924d5cd59925a6ea4bf7f2f731709bc893), [`247eb7411`](https://github.com/withastro/astro/commit/247eb7411f429317e5cd7d401a6660ee73641313)]:
- - astro@1.6.4
-
-## 2.0.2
-
-### Patch Changes
-
-- [#5207](https://github.com/withastro/astro/pull/5207) [`c203a5cc2`](https://github.com/withastro/astro/commit/c203a5cc2f12d8c1c3e96d4f08bdd2bb2823e997) Thanks [@BeanWei](https://github.com/BeanWei)! - fix static server path for windows system
-
-## 2.0.1
-
-### Patch Changes
-
-- [#5114](https://github.com/withastro/astro/pull/5114) [`5c0c6e1ac`](https://github.com/withastro/astro/commit/5c0c6e1ac67e6341625f028794986700197334ae) Thanks [@matthewp](https://github.com/matthewp)! - Fixes finding the client folder for serving assets
-
-- [#5111](https://github.com/withastro/astro/pull/5111) [`df4d84610`](https://github.com/withastro/astro/commit/df4d84610ad2b543a37cb3bcac9887bfef0b8994) Thanks [@rishi-raj-jain](https://github.com/rishi-raj-jain)! - fix port in standalone mode
-
-## 2.0.0
-
-### Major Changes
-
-- [#5056](https://github.com/withastro/astro/pull/5056) [`e55af8a23`](https://github.com/withastro/astro/commit/e55af8a23233b6335f45b7a04b9d026990fb616c) Thanks [@matthewp](https://github.com/matthewp)! - # Standalone mode for the Node.js adapter
-
- New in `@astrojs/node` is support for **standalone mode**. With standalone mode you can start your production server without needing to write any server JavaScript yourself. The server starts simply by running the script like so:
-
- ```shell
- node ./dist/server/entry.mjs
- ```
-
- To enable standalone mode, set the new `mode` to `'standalone'` option in your Astro config:
-
- ```js
- import { defineConfig } from 'astro/config';
- import nodejs from '@astrojs/node';
-
- export default defineConfig({
- output: 'server',
- adapter: nodejs({
- mode: 'standalone',
- }),
- });
- ```
-
- See the @astrojs/node documentation to learn all of the options available in standalone mode.
-
- ## Breaking change
-
- This is a semver major change because the new `mode` option is required. Existing @astrojs/node users who are using their own HTTP server framework such as Express can upgrade by setting the `mode` option to `'middleware'` in order to build to a middleware mode, which is the same behavior and API as before.
-
- ```js
- import { defineConfig } from 'astro/config';
- import nodejs from '@astrojs/node';
-
- export default defineConfig({
- output: 'server',
- adapter: nodejs({
- mode: 'middleware',
- }),
- });
- ```
-
-### Minor Changes
-
-- [#5056](https://github.com/withastro/astro/pull/5056) [`e55af8a23`](https://github.com/withastro/astro/commit/e55af8a23233b6335f45b7a04b9d026990fb616c) Thanks [@matthewp](https://github.com/matthewp)! - # Adapter support for `astro preview`
-
- Adapters are now about to support the `astro preview` command via a new integration option. The Node.js adapter `@astrojs/node` is the first of the built-in adapters to gain support for this. What this means is that if you are using `@astrojs/node` you can new preview your SSR app by running:
-
- ```shell
- npm run preview
- ```
-
- ## Adapter API
-
- We will be updating the other first party Astro adapters to support preview over time. Adapters can opt in to this feature by providing the `previewEntrypoint` via the `setAdapter` function in `astro:config:done` hook. The Node.js adapter's code looks like this:
-
- ```diff
- export default function() {
- return {
- name: '@astrojs/node',
- hooks: {
- 'astro:config:done': ({ setAdapter, config }) => {
- setAdapter({
- name: '@astrojs/node',
- serverEntrypoint: '@astrojs/node/server.js',
- + previewEntrypoint: '@astrojs/node/preview.js',
- exports: ['handler'],
- });
-
- // more here
- }
- }
- };
- }
- ```
-
- The `previewEntrypoint` is a module in the adapter's package that is a Node.js script. This script is run when `astro preview` is run and is charged with starting up the built server. See the Node.js implementation in `@astrojs/node` to see how that is implemented.
-
-- [#5056](https://github.com/withastro/astro/pull/5056) [`e55af8a23`](https://github.com/withastro/astro/commit/e55af8a23233b6335f45b7a04b9d026990fb616c) Thanks [@matthewp](https://github.com/matthewp)! - # New build configuration
-
- The ability to customize SSR build configuration more granularly is now available in Astro. You can now customize the output folder for `server` (the server code for SSR), `client` (your client-side JavaScript and assets), and `serverEntry` (the name of the entrypoint server module). Here are the defaults:
-
- ```js
- import { defineConfig } from 'astro/config';
-
- export default defineConfig({
- output: 'server',
- build: {
- server: './dist/server/',
- client: './dist/client/',
- serverEntry: 'entry.mjs',
- },
- });
- ```
-
- These new configuration options are only supported in SSR mode and are ignored when building to SSG (a static site).
-
- ## Integration hook change
-
- The integration hook `astro:build:start` includes a param `buildConfig` which includes all of these same options. You can continue to use this param in Astro 1.x, but it is deprecated in favor of the new `build.config` options. All of the built-in adapters have been updated to the new format. If you have an integration that depends on this param we suggest upgrading to do this instead:
-
- ```js
- export default function myIntegration() {
- return {
- name: 'my-integration',
- hooks: {
- 'astro:config:setup': ({ updateConfig }) => {
- updateConfig({
- build: {
- server: '...',
- },
- });
- },
- },
- };
- }
- ```
-
-## 1.1.0
-
-### Minor Changes
-
-- [#4876](https://github.com/withastro/astro/pull/4876) [`d3091f89e`](https://github.com/withastro/astro/commit/d3091f89e92fcfe1ad48daca74055d54b1c853a3) Thanks [@matthewp](https://github.com/matthewp)! - Adds the Astro.cookies API
-
- `Astro.cookies` is a new API for manipulating cookies in Astro components and API routes.
-
- In Astro components, the new `Astro.cookies` object is a map-like object that allows you to get, set, delete, and check for a cookie's existence (`has`):
-
- ```astro
- ---
- type Prefs = {
- darkMode: boolean;
- };
-
- Astro.cookies.set<Prefs>(
- 'prefs',
- { darkMode: true },
- {
- expires: '1 month',
- },
- );
-
- const prefs = Astro.cookies.get<Prefs>('prefs').json();
- ---
-
- <body data-theme={prefs.darkMode ? 'dark' : 'light'}></body>
- ```
-
- Once you've set a cookie with Astro.cookies it will automatically be included in the outgoing response.
-
- This API is also available with the same functionality in API routes:
-
- ```js
- export function post({ cookies }) {
- cookies.set('loggedIn', false);
-
- return new Response(null, {
- status: 302,
- headers: {
- Location: '/login',
- },
- });
- }
- ```
-
- See [the RFC](https://github.com/withastro/rfcs/blob/main/proposals/0025-cookie-management.md) to learn more.
-
-## 1.0.1
-
-### Patch Changes
-
-- [#4558](https://github.com/withastro/astro/pull/4558) [`742966456`](https://github.com/withastro/astro/commit/7429664566f05ecebf6d57906f950627e62e690c) Thanks [@tony-sull](https://github.com/tony-sull)! - Adding the `withastro` keyword to include the adapters on the [Integrations Catalog](https://astro.build/integrations)
-
-## 1.0.0
-
-### Major Changes
-
-- [`04ad44563`](https://github.com/withastro/astro/commit/04ad445632c67bdd60c1704e1e0dcbcaa27b9308) - > Astro v1.0 is out! Read the [official announcement post](https://astro.build/blog/astro-1/).
-
- **No breaking changes**. This package is now officially stable and compatible with `astro@1.0.0`!
-
-### Patch Changes
-
-- Updated dependencies [[`04ad44563`](https://github.com/withastro/astro/commit/04ad445632c67bdd60c1704e1e0dcbcaa27b9308)]:
- - @astrojs/webapi@1.0.0
-
-## 0.2.1
-
-### Patch Changes
-
-- [#4055](https://github.com/withastro/astro/pull/4055) [`44694d8a9`](https://github.com/withastro/astro/commit/44694d8a9084bb1b09840ec8967edd75fa033174) Thanks [@matthewp](https://github.com/matthewp)! - Handle binary data request bodies in the Node adapter
-
-## 0.2.0
-
-### Minor Changes
-
-- [#4015](https://github.com/withastro/astro/pull/4015) [`6fd161d76`](https://github.com/withastro/astro/commit/6fd161d7691cbf9d3ffa4646e46059dfd0940010) Thanks [@matthewp](https://github.com/matthewp)! - New `output` configuration option
-
- This change introduces a new "output target" configuration option (`output`). Setting the output target lets you decide the format of your final build, either:
-
- - `"static"` (default): A static site. Your final build will be a collection of static assets (HTML, CSS, JS) that you can deploy to any static site host.
- - `"server"`: A dynamic server application. Your final build will be an application that will run in a hosted server environment, generating HTML dynamically for different requests.
-
- If `output` is omitted from your config, the default value `"static"` will be used.
-
- When using the `"server"` output target, you must also include a runtime adapter via the `adapter` configuration. An adapter will _adapt_ your final build to run on the deployed platform of your choice (Netlify, Vercel, Node.js, Deno, etc).
-
- To migrate: No action is required for most users. If you currently define an `adapter`, you will need to also add `output: 'server'` to your config file to make it explicit that you are building a server. Here is an example of what that change would look like for someone deploying to Netlify:
-
- ```diff
- import { defineConfig } from 'astro/config';
- import netlify from '@astrojs/netlify/functions';
-
- export default defineConfig({
- adapter: netlify(),
- + output: 'server',
- });
- ```
-
-* [#3973](https://github.com/withastro/astro/pull/3973) [`5a23483ef`](https://github.com/withastro/astro/commit/5a23483efb3ba614b05a00064f84415620605204) Thanks [@matthewp](https://github.com/matthewp)! - Adds support for Astro.clientAddress
-
- The new `Astro.clientAddress` property allows you to get the IP address of the requested user.
-
- ```astro
-
- ```
-
- This property is only available when building for SSR, and only if the adapter you are using supports providing the IP address. If you attempt to access the property in a SSG app it will throw an error.
-
-### Patch Changes
-
-- [#4023](https://github.com/withastro/astro/pull/4023) [`4ca6a0933`](https://github.com/withastro/astro/commit/4ca6a0933d92dd559327dd46a28712d918caebf7) Thanks [@matthewp](https://github.com/matthewp)! - Fixes Node adapter to accept a request body
-
-## 0.1.6
-
-### Patch Changes
-
-- [#3885](https://github.com/withastro/astro/pull/3885) [`bf5d1cc1e`](https://github.com/withastro/astro/commit/bf5d1cc1e71da38a14658c615e9481f2145cc6e7) Thanks [@delucis](https://github.com/delucis)! - Integration README fixes
-
-## 0.1.5
-
-### Patch Changes
-
-- [#3865](https://github.com/withastro/astro/pull/3865) [`1f9e4857`](https://github.com/withastro/astro/commit/1f9e4857ff2b2cb7db89d619618cdf546cd3b3dc) Thanks [@delucis](https://github.com/delucis)! - Small README fixes
-
-* [#3854](https://github.com/withastro/astro/pull/3854) [`b012ee55`](https://github.com/withastro/astro/commit/b012ee55b107dea0730286263b27d83e530fad5d) Thanks [@bholmesdev](https://github.com/bholmesdev)! - [astro add] Support adapters and third party packages
-
-## 0.1.4
-
-### Patch Changes
-
-- [#3817](https://github.com/withastro/astro/pull/3817) [`2f56664f`](https://github.com/withastro/astro/commit/2f56664f85596c6268ecb44bbb9c36cca2ea49c5) Thanks [@ran-dall](https://github.com/ran-dall)! - Fix example on `README.md`
-
-## 0.1.3
-
-### Patch Changes
-
-- [#3677](https://github.com/withastro/astro/pull/3677) [`8045c8ad`](https://github.com/withastro/astro/commit/8045c8ade16fe4306448b7f98a4560ef0557d378) Thanks [@Jutanium](https://github.com/Jutanium)! - Update READMEs
-
-## 0.1.2
-
-### Patch Changes
-
-- Updated dependencies [[`4de53ecc`](https://github.com/withastro/astro/commit/4de53eccef346bed843b491b7ab93987d7d85655)]:
- - @astrojs/webapi@0.12.0
-
-## 0.1.1
-
-### Patch Changes
-
-- [`815d62f1`](https://github.com/withastro/astro/commit/815d62f151a36fef7d09590d4962ca71bda61b32) Thanks [@FredKSchott](https://github.com/FredKSchott)! - no changes.
-
-## 0.1.0
-
-### Minor Changes
-
-- [#2979](https://github.com/withastro/astro/pull/2979) [`9d7a4b59`](https://github.com/withastro/astro/commit/9d7a4b59b53f8cb274266f5036d1cef841750252) Thanks [@FredKSchott](https://github.com/FredKSchott)! - Welcome to the Astro v1.0.0 Beta! Read the [official announcement](https://astro.build/blog/astro-1-beta-release/) for more details.
-
-## 0.0.2
-
-### Patch Changes
-
-- [#2879](https://github.com/withastro/astro/pull/2879) [`80034c6c`](https://github.com/withastro/astro/commit/80034c6cbc89761618847e6df43fd49560a05aa9) Thanks [@matthewp](https://github.com/matthewp)! - Netlify Adapter
-
- This change adds a Netlify adapter that uses Netlify Functions. You can use it like so:
-
- ```js
- import { defineConfig } from 'astro/config';
- import netlify from '@astrojs/netlify/functions';
-
- export default defineConfig({
- adapter: netlify(),
- });
- ```
-
-* [#2873](https://github.com/withastro/astro/pull/2873) [`e4025d1f`](https://github.com/withastro/astro/commit/e4025d1f530310d6ab951109f4f53878a307471a) Thanks [@matthewp](https://github.com/matthewp)! - Improves the build by building to a single file for rendering
-
-## 0.0.2-next.0
-
-### Patch Changes
-
-- [#2873](https://github.com/withastro/astro/pull/2873) [`e4025d1f`](https://github.com/withastro/astro/commit/e4025d1f530310d6ab951109f4f53878a307471a) Thanks [@matthewp](https://github.com/matthewp)! - Improves the build by building to a single file for rendering
diff --git a/packages/integrations/node/README.md b/packages/integrations/node/README.md
index 23ce77c2e..e02111adc 100644
--- a/packages/integrations/node/README.md
+++ b/packages/integrations/node/README.md
@@ -1,38 +1,3 @@
# @astrojs/node
-This adapter allows Astro to deploy your SSR site to Node targets.
-
-## Documentation
-
-Read the [`@astrojs/node` docs][docs]
-
-## Support
-
-- Get help in the [Astro Discord][discord]. Post questions in our `#support` forum, or visit our dedicated `#dev` channel to discuss current development and more!
-
-- Check our [Astro Integration Documentation][astro-integration] for more on integrations.
-
-- Submit bug reports and feature requests as [GitHub issues][issues].
-
-## Contributing
-
-This package is maintained by Astro's Core team. You're welcome to submit an issue or PR! These links will help you get started:
-
-- [Contributor Manual][contributing]
-- [Code of Conduct][coc]
-- [Community Guide][community]
-
-## License
-
-MIT
-
-Copyright (c) 2023–present [Astro][astro]
-
-[astro]: https://astro.build/
-[docs]: https://docs.astro.build/en/guides/integrations-guide/node/
-[contributing]: https://github.com/withastro/astro/blob/main/CONTRIBUTING.md
-[coc]: https://github.com/withastro/.github/blob/main/CODE_OF_CONDUCT.md
-[community]: https://github.com/withastro/.github/blob/main/COMMUNITY_GUIDE.md
-[discord]: https://astro.build/chat/
-[issues]: https://github.com/withastro/astro/issues
-[astro-integration]: https://docs.astro.build/en/guides/integrations-guide/
+The Node adapter package has moved. Please see [the new repository for the Node adapter](https://github.com/withastro/adapters/tree/main/packages/node).
diff --git a/packages/integrations/node/package.json b/packages/integrations/node/package.json
index 23bb3a6d1..656c45393 100644
--- a/packages/integrations/node/package.json
+++ b/packages/integrations/node/package.json
@@ -1,55 +1,7 @@
{
"name": "@astrojs/node",
- "description": "Deploy your site to a Node.js server",
- "version": "9.0.0-alpha.1",
- "type": "module",
- "types": "./dist/index.d.ts",
- "author": "withastro",
- "license": "MIT",
- "repository": {
- "type": "git",
- "url": "https://github.com/withastro/astro.git",
- "directory": "packages/integrations/node"
- },
- "keywords": [
- "withastro",
- "astro-adapter"
- ],
- "bugs": "https://github.com/withastro/astro/issues",
- "homepage": "https://docs.astro.build/en/guides/integrations-guide/node/",
- "exports": {
- ".": "./dist/index.js",
- "./server.js": "./dist/server.js",
- "./preview.js": "./dist/preview.js",
- "./package.json": "./package.json"
- },
- "files": [
- "dist"
- ],
- "scripts": {
- "build": "astro-scripts build \"src/**/*.ts\" && tsc",
- "build:ci": "astro-scripts build \"src/**/*.ts\"",
- "dev": "astro-scripts dev \"src/**/*.ts\"",
- "test": "astro-scripts test \"test/**/*.test.js\""
- },
- "dependencies": {
- "send": "^0.18.0",
- "server-destroy": "^1.0.1"
- },
- "peerDependencies": {
- "astro": "^5.0.0-alpha.0"
- },
- "devDependencies": {
- "@types/node": "^18.17.8",
- "@types/send": "^0.17.4",
- "@types/server-destroy": "^1.0.4",
- "astro": "workspace:*",
- "astro-scripts": "workspace:*",
- "cheerio": "1.0.0",
- "express": "^4.19.2",
- "node-mocks-http": "^1.15.1"
- },
- "publishConfig": {
- "provenance": true
- }
+ "version": "0.0.0",
+ "private": true,
+ "keywords": [],
+ "dont_remove": "This is a placeholder for the sake of the docs smoke test"
}
diff --git a/packages/integrations/node/src/index.ts b/packages/integrations/node/src/index.ts
deleted file mode 100644
index 42a2ed91f..000000000
--- a/packages/integrations/node/src/index.ts
+++ /dev/null
@@ -1,81 +0,0 @@
-import type { AstroAdapter, AstroIntegration } from 'astro';
-import { AstroError } from 'astro/errors';
-import type { Options, UserOptions } from './types.js';
-
-export function getAdapter(options: Options): AstroAdapter {
- return {
- name: '@astrojs/node',
- serverEntrypoint: '@astrojs/node/server.js',
- previewEntrypoint: '@astrojs/node/preview.js',
- exports: ['handler', 'startServer', 'options'],
- args: options,
- supportedAstroFeatures: {
- hybridOutput: 'stable',
- staticOutput: 'stable',
- serverOutput: 'stable',
- assets: {
- supportKind: 'stable',
- isSharpCompatible: true,
- },
- i18nDomains: 'experimental',
- envGetSecret: 'stable',
- },
- };
-}
-
-// TODO: remove once we don't use a TLA anymore
-async function shouldExternalizeAstroEnvSetup() {
- try {
- await import('astro/env/setup');
- return false;
- } catch {
- return true;
- }
-}
-
-export default function createIntegration(userOptions: UserOptions): AstroIntegration {
- if (!userOptions?.mode) {
- throw new AstroError(`Setting the 'mode' option is required.`);
- }
-
- let _options: Options;
- return {
- name: '@astrojs/node',
- hooks: {
- 'astro:config:setup': async ({ updateConfig, config }) => {
- updateConfig({
- image: {
- endpoint: config.image.endpoint ?? 'astro/assets/endpoint/node',
- },
- vite: {
- ssr: {
- noExternal: ['@astrojs/node'],
- ...((await shouldExternalizeAstroEnvSetup())
- ? {
- external: ['astro/env/setup'],
- }
- : {}),
- },
- },
- });
- },
- 'astro:config:done': ({ setAdapter, config, logger }) => {
- _options = {
- ...userOptions,
- client: config.build.client?.toString(),
- server: config.build.server?.toString(),
- host: config.server.host,
- port: config.server.port,
- assets: config.build.assets,
- };
- setAdapter(getAdapter(_options));
-
- if (config.output === 'static') {
- logger.warn(
- `\`output: "server"\` or \`output: "hybrid"\` is required to use this adapter.`,
- );
- }
- },
- },
- };
-}
diff --git a/packages/integrations/node/src/log-listening-on.ts b/packages/integrations/node/src/log-listening-on.ts
deleted file mode 100644
index 7e299740c..000000000
--- a/packages/integrations/node/src/log-listening-on.ts
+++ /dev/null
@@ -1,88 +0,0 @@
-import type http from 'node:http';
-import https from 'node:https';
-import type { AddressInfo } from 'node:net';
-import os from 'node:os';
-import type { AstroIntegrationLogger } from 'astro';
-import type { Options } from './types.js';
-
-export async function logListeningOn(
- logger: AstroIntegrationLogger,
- server: http.Server | https.Server,
- options: Pick<Options, 'host'>,
-) {
- await new Promise<void>((resolve) => server.once('listening', resolve));
- const protocol = server instanceof https.Server ? 'https' : 'http';
- // Allow to provide host value at runtime
- const host = getResolvedHostForHttpServer(
- process.env.HOST !== undefined && process.env.HOST !== '' ? process.env.HOST : options.host,
- );
- const { port } = server.address() as AddressInfo;
- const address = getNetworkAddress(protocol, host, port);
-
- if (host === undefined) {
- logger.info(
- `Server listening on \n local: ${address.local[0]} \t\n network: ${address.network[0]}\n`,
- );
- } else {
- logger.info(`Server listening on ${address.local[0]}`);
- }
-}
-
-function getResolvedHostForHttpServer(host: string | boolean) {
- if (host === false) {
- // Use a secure default
- return 'localhost';
- } else if (host === true) {
- // If passed --host in the CLI without arguments
- return undefined; // undefined typically means 0.0.0.0 or :: (listen on all IPs)
- } else {
- return host;
- }
-}
-
-interface NetworkAddressOpt {
- local: string[];
- network: string[];
-}
-
-const wildcardHosts = new Set(['0.0.0.0', '::', '0000:0000:0000:0000:0000:0000:0000:0000']);
-
-// this code from vite https://github.com/vitejs/vite/blob/d09bbd093a4b893e78f0bbff5b17c7cf7821f403/packages/vite/src/node/utils.ts#L892-L914
-export function getNetworkAddress(
- protocol: 'http' | 'https' = 'http',
- hostname: string | undefined,
- port: number,
- base?: string,
-) {
- const NetworkAddress: NetworkAddressOpt = {
- local: [],
- network: [],
- };
- Object.values(os.networkInterfaces())
- .flatMap((nInterface) => nInterface ?? [])
- .filter(
- (detail) =>
- detail &&
- detail.address &&
- (detail.family === 'IPv4' ||
- // @ts-expect-error Node 18.0 - 18.3 returns number
- detail.family === 4),
- )
- .forEach((detail) => {
- let host = detail.address.replace(
- '127.0.0.1',
- hostname === undefined || wildcardHosts.has(hostname) ? 'localhost' : hostname,
- );
- // ipv6 host
- if (host.includes(':')) {
- host = `[${host}]`;
- }
- const url = `${protocol}://${host}:${port}${base ? base : ''}`;
- if (detail.address.includes('127.0.0.1')) {
- NetworkAddress.local.push(url);
- } else {
- NetworkAddress.network.push(url);
- }
- });
- return NetworkAddress;
-}
diff --git a/packages/integrations/node/src/middleware.ts b/packages/integrations/node/src/middleware.ts
deleted file mode 100644
index 5cc4c4a46..000000000
--- a/packages/integrations/node/src/middleware.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import type { NodeApp } from 'astro/app/node';
-import { createAppHandler } from './serve-app.js';
-import type { RequestHandler } from './types.js';
-
-/**
- * Creates a middleware that can be used with Express, Connect, etc.
- *
- * Similar to `createAppHandler` but can additionally be placed in the express
- * chain as an error middleware.
- *
- * https://expressjs.com/en/guide/using-middleware.html#middleware.error-handling
- */
-export default function createMiddleware(app: NodeApp): RequestHandler {
- const handler = createAppHandler(app);
- const logger = app.getAdapterLogger();
- // using spread args because express trips up if the function's
- // stringified body includes req, res, next, locals directly
- return async function (...args) {
- // assume normal invocation at first
- const [req, res, next, locals] = args;
- // short circuit if it is an error invocation
- if (req instanceof Error) {
- const error = req;
- if (next) {
- return next(error);
- } else {
- throw error;
- }
- }
- try {
- await handler(req, res, next, locals);
- } catch (err) {
- logger.error(`Could not render ${req.url}`);
- console.error(err);
- if (!res.headersSent) {
- res.writeHead(500, `Server error`);
- res.end();
- }
- }
- };
-}
diff --git a/packages/integrations/node/src/preview.ts b/packages/integrations/node/src/preview.ts
deleted file mode 100644
index 518155c4a..000000000
--- a/packages/integrations/node/src/preview.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import { fileURLToPath } from 'node:url';
-import type { CreatePreviewServer } from 'astro';
-import { AstroError } from 'astro/errors';
-import { logListeningOn } from './log-listening-on.js';
-import type { createExports } from './server.js';
-import { createServer } from './standalone.js';
-
-type ServerModule = ReturnType<typeof createExports>;
-type MaybeServerModule = Partial<ServerModule>;
-
-const createPreviewServer: CreatePreviewServer = async function (preview) {
- let ssrHandler: ServerModule['handler'];
- let options: ServerModule['options'];
- try {
- process.env.ASTRO_NODE_AUTOSTART = 'disabled';
- const ssrModule: MaybeServerModule = await import(preview.serverEntrypoint.toString());
- if (typeof ssrModule.handler === 'function') {
- ssrHandler = ssrModule.handler;
- options = ssrModule.options!;
- } else {
- throw new AstroError(
- `The server entrypoint doesn't have a handler. Are you sure this is the right file?`,
- );
- }
- } catch (err) {
- if ((err as any).code === 'ERR_MODULE_NOT_FOUND') {
- throw new AstroError(
- `The server entrypoint ${fileURLToPath(
- preview.serverEntrypoint,
- )} does not exist. Have you ran a build yet?`,
- );
- } else {
- throw err;
- }
- }
- const host = preview.host ?? 'localhost';
- const port = preview.port ?? 4321;
- const server = createServer(ssrHandler, host, port);
-
- // If user specified custom headers append a listener
- // to the server to add those headers to response
- if (preview.headers) {
- server.server.addListener('request', (_, res) => {
- if (res.statusCode === 200) {
- for (const [name, value] of Object.entries(preview.headers ?? {})) {
- if (value) res.setHeader(name, value);
- }
- }
- });
- }
-
- logListeningOn(preview.logger, server.server, options);
- await new Promise<void>((resolve, reject) => {
- server.server.once('listening', resolve);
- server.server.once('error', reject);
- server.server.listen(port, host);
- });
- return server;
-};
-
-export { createPreviewServer as default };
diff --git a/packages/integrations/node/src/serve-app.ts b/packages/integrations/node/src/serve-app.ts
deleted file mode 100644
index 72b4e0fd6..000000000
--- a/packages/integrations/node/src/serve-app.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-import { AsyncLocalStorage } from 'node:async_hooks';
-import { NodeApp } from 'astro/app/node';
-import type { RequestHandler } from './types.js';
-
-/**
- * Creates a Node.js http listener for on-demand rendered pages, compatible with http.createServer and Connect middleware.
- * If the next callback is provided, it will be called if the request does not have a matching route.
- * Intended to be used in both standalone and middleware mode.
- */
-export function createAppHandler(app: NodeApp): RequestHandler {
- /**
- * Keep track of the current request path using AsyncLocalStorage.
- * Used to log unhandled rejections with a helpful message.
- */
- const als = new AsyncLocalStorage<string>();
- const logger = app.getAdapterLogger();
- process.on('unhandledRejection', (reason) => {
- const requestUrl = als.getStore();
- logger.error(`Unhandled rejection while rendering ${requestUrl}`);
- console.error(reason);
- });
-
- return async (req, res, next, locals) => {
- let request: Request;
- try {
- request = NodeApp.createRequest(req);
- } catch (err) {
- logger.error(`Could not render ${req.url}`);
- console.error(err);
- res.statusCode = 500;
- res.end('Internal Server Error');
- return;
- }
-
- const routeData = app.match(request);
- if (routeData) {
- const response = await als.run(request.url, () =>
- app.render(request, {
- addCookieHeader: true,
- locals,
- routeData,
- }),
- );
- await NodeApp.writeResponse(response, res);
- } else if (next) {
- return next();
- } else {
- const response = await app.render(req);
- await NodeApp.writeResponse(response, res);
- }
- };
-}
diff --git a/packages/integrations/node/src/serve-static.ts b/packages/integrations/node/src/serve-static.ts
deleted file mode 100644
index 725f7afa6..000000000
--- a/packages/integrations/node/src/serve-static.ts
+++ /dev/null
@@ -1,125 +0,0 @@
-import fs from 'node:fs';
-import type { IncomingMessage, ServerResponse } from 'node:http';
-import path from 'node:path';
-import url from 'node:url';
-import type { NodeApp } from 'astro/app/node';
-import send from 'send';
-import type { Options } from './types.js';
-
-// check for a dot followed by a extension made up of lowercase characters
-const isSubresourceRegex = /.+\.[a-z]+$/i;
-
-/**
- * Creates a Node.js http listener for static files and prerendered pages.
- * In standalone mode, the static handler is queried first for the static files.
- * If one matching the request path is not found, it relegates to the SSR handler.
- * Intended to be used only in the standalone mode.
- */
-export function createStaticHandler(app: NodeApp, options: Options) {
- const client = resolveClientDir(options);
- /**
- * @param ssr The SSR handler to be called if the static handler does not find a matching file.
- */
- return (req: IncomingMessage, res: ServerResponse, ssr: () => unknown) => {
- if (req.url) {
- const [urlPath, urlQuery] = req.url.split('?');
- const filePath = path.join(client, app.removeBase(urlPath));
-
- let pathname: string;
- let isDirectory = false;
- try {
- isDirectory = fs.lstatSync(filePath).isDirectory();
- } catch {}
-
- const { trailingSlash = 'ignore' } = options;
-
- const hasSlash = urlPath.endsWith('/');
- switch (trailingSlash) {
- case 'never':
- if (isDirectory && urlPath != '/' && hasSlash) {
- pathname = urlPath.slice(0, -1) + (urlQuery ? '?' + urlQuery : '');
- res.statusCode = 301;
- res.setHeader('Location', pathname);
- return res.end();
- } else pathname = urlPath;
- // intentionally fall through
- case 'ignore':
- {
- if (isDirectory && !hasSlash) {
- pathname = urlPath + '/index.html';
- } else pathname = urlPath;
- }
- break;
- case 'always':
- // trailing slash is not added to "subresources"
- if (!hasSlash && !isSubresourceRegex.test(urlPath)) {
- pathname = urlPath + '/' + (urlQuery ? '?' + urlQuery : '');
- res.statusCode = 301;
- res.setHeader('Location', pathname);
- return res.end();
- } else pathname = urlPath;
- break;
- }
- // app.removeBase sometimes returns a path without a leading slash
- pathname = prependForwardSlash(app.removeBase(pathname));
-
- const stream = send(req, pathname, {
- root: client,
- dotfiles: pathname.startsWith('/.well-known/') ? 'allow' : 'deny',
- });
-
- let forwardError = false;
-
- stream.on('error', (err) => {
- if (forwardError) {
- console.error(err.toString());
- res.writeHead(500);
- res.end('Internal server error');
- return;
- }
- // File not found, forward to the SSR handler
- ssr();
- });
- stream.on('headers', (_res: ServerResponse) => {
- // assets in dist/_astro are hashed and should get the immutable header
- if (pathname.startsWith(`/${options.assets}/`)) {
- // This is the "far future" cache header, used for static files whose name includes their digest hash.
- // 1 year (31,536,000 seconds) is convention.
- // Taken from https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#immutable
- _res.setHeader('Cache-Control', 'public, max-age=31536000, immutable');
- }
- });
- stream.on('file', () => {
- forwardError = true;
- });
- stream.pipe(res);
- } else {
- ssr();
- }
- };
-}
-
-function resolveClientDir(options: Options) {
- const clientURLRaw = new URL(options.client);
- const serverURLRaw = new URL(options.server);
- const rel = path.relative(url.fileURLToPath(serverURLRaw), url.fileURLToPath(clientURLRaw));
-
- // walk up the parent folders until you find the one that is the root of the server entry folder. This is how we find the client folder relatively.
- const serverFolder = path.basename(options.server);
- let serverEntryFolderURL = path.dirname(import.meta.url);
- while (!serverEntryFolderURL.endsWith(serverFolder)) {
- serverEntryFolderURL = path.dirname(serverEntryFolderURL);
- }
- const serverEntryURL = serverEntryFolderURL + '/entry.mjs';
- const clientURL = new URL(appendForwardSlash(rel), serverEntryURL);
- const client = url.fileURLToPath(clientURL);
- return client;
-}
-
-function prependForwardSlash(pth: string) {
- return pth.startsWith('/') ? pth : '/' + pth;
-}
-
-function appendForwardSlash(pth: string) {
- return pth.endsWith('/') ? pth : pth + '/';
-}
diff --git a/packages/integrations/node/src/server.ts b/packages/integrations/node/src/server.ts
deleted file mode 100644
index 93d75d360..000000000
--- a/packages/integrations/node/src/server.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import type { SSRManifest } from 'astro';
-import { NodeApp, applyPolyfills } from 'astro/app/node';
-import { setGetEnv } from 'astro/env/setup';
-import createMiddleware from './middleware.js';
-import { createStandaloneHandler } from './standalone.js';
-import startServer from './standalone.js';
-import type { Options } from './types.js';
-
-// This needs to run first because some internals depend on `crypto`
-applyPolyfills();
-setGetEnv((key) => process.env[key]);
-
-export function createExports(manifest: SSRManifest, options: Options) {
- const app = new NodeApp(manifest);
- options.trailingSlash = manifest.trailingSlash;
- return {
- options: options,
- handler:
- options.mode === 'middleware' ? createMiddleware(app) : createStandaloneHandler(app, options),
- startServer: () => startServer(app, options),
- };
-}
-
-export function start(manifest: SSRManifest, options: Options) {
- if (options.mode !== 'standalone' || process.env.ASTRO_NODE_AUTOSTART === 'disabled') {
- return;
- }
-
- const app = new NodeApp(manifest);
- startServer(app, options);
-}
diff --git a/packages/integrations/node/src/standalone.ts b/packages/integrations/node/src/standalone.ts
deleted file mode 100644
index 76e672d2f..000000000
--- a/packages/integrations/node/src/standalone.ts
+++ /dev/null
@@ -1,92 +0,0 @@
-import fs from 'node:fs';
-import http from 'node:http';
-import https from 'node:https';
-import type { PreviewServer } from 'astro';
-import type { NodeApp } from 'astro/app/node';
-import enableDestroy from 'server-destroy';
-import { logListeningOn } from './log-listening-on.js';
-import { createAppHandler } from './serve-app.js';
-import { createStaticHandler } from './serve-static.js';
-import type { Options } from './types.js';
-
-// Used to get Host Value at Runtime
-export const hostOptions = (host: Options['host']): string => {
- if (typeof host === 'boolean') {
- return host ? '0.0.0.0' : 'localhost';
- }
- return host;
-};
-
-export default function standalone(app: NodeApp, options: Options) {
- const port = process.env.PORT ? Number(process.env.PORT) : options.port ?? 8080;
- const host = process.env.HOST ?? hostOptions(options.host);
- const handler = createStandaloneHandler(app, options);
- const server = createServer(handler, host, port);
- server.server.listen(port, host);
- if (process.env.ASTRO_NODE_LOGGING !== 'disabled') {
- logListeningOn(app.getAdapterLogger(), server.server, options);
- }
- return {
- server,
- done: server.closed(),
- };
-}
-
-// also used by server entrypoint
-export function createStandaloneHandler(app: NodeApp, options: Options) {
- const appHandler = createAppHandler(app);
- const staticHandler = createStaticHandler(app, options);
- return (req: http.IncomingMessage, res: http.ServerResponse) => {
- try {
- // validate request path
- decodeURI(req.url!);
- } catch {
- res.writeHead(400);
- res.end('Bad request.');
- return;
- }
- staticHandler(req, res, () => appHandler(req, res));
- };
-}
-
-// also used by preview entrypoint
-export function createServer(listener: http.RequestListener, host: string, port: number) {
- let httpServer: http.Server | https.Server;
-
- if (process.env.SERVER_CERT_PATH && process.env.SERVER_KEY_PATH) {
- httpServer = https.createServer(
- {
- key: fs.readFileSync(process.env.SERVER_KEY_PATH),
- cert: fs.readFileSync(process.env.SERVER_CERT_PATH),
- },
- listener,
- );
- } else {
- httpServer = http.createServer(listener);
- }
- enableDestroy(httpServer);
-
- // Resolves once the server is closed
- const closed = new Promise<void>((resolve, reject) => {
- httpServer.addListener('close', resolve);
- httpServer.addListener('error', reject);
- });
-
- const previewable = {
- host,
- port,
- closed() {
- return closed;
- },
- async stop() {
- await new Promise((resolve, reject) => {
- httpServer.destroy((err) => (err ? reject(err) : resolve(undefined)));
- });
- },
- } satisfies PreviewServer;
-
- return {
- server: httpServer,
- ...previewable,
- };
-}
diff --git a/packages/integrations/node/src/types.ts b/packages/integrations/node/src/types.ts
deleted file mode 100644
index 010053de5..000000000
--- a/packages/integrations/node/src/types.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import type { IncomingMessage, ServerResponse } from 'node:http';
-import type { SSRManifest } from 'astro';
-import type { NodeApp } from 'astro/app/node';
-
-export interface UserOptions {
- /**
- * Specifies the mode that the adapter builds to.
- *
- * - 'middleware' - Build to middleware, to be used within another Node.js server, such as Express.
- * - 'standalone' - Build to a standalone server. The server starts up just by running the built script.
- */
- mode: 'middleware' | 'standalone';
-}
-
-export interface Options extends UserOptions {
- host: string | boolean;
- port: number;
- server: string;
- client: string;
- assets: string;
- trailingSlash?: SSRManifest['trailingSlash'];
-}
-
-export interface CreateServerOptions {
- app: NodeApp;
- assets: string;
- client: URL;
- port: number;
- host: string | undefined;
- removeBase: (pathname: string) => string;
-}
-
-export type RequestHandler = (...args: RequestHandlerParams) => void | Promise<void>;
-export type RequestHandlerParams = [
- req: IncomingMessage,
- res: ServerResponse,
- next?: (err?: unknown) => void,
- locals?: object,
-];
diff --git a/packages/integrations/node/test/api-route.test.js b/packages/integrations/node/test/api-route.test.js
deleted file mode 100644
index 9743ce42d..000000000
--- a/packages/integrations/node/test/api-route.test.js
+++ /dev/null
@@ -1,153 +0,0 @@
-import * as assert from 'node:assert/strict';
-import crypto from 'node:crypto';
-import { after, before, describe, it } from 'node:test';
-import nodejs from '../dist/index.js';
-import { createRequestAndResponse, loadFixture } from './test-utils.js';
-
-describe('API routes', () => {
- /** @type {import('./test-utils').Fixture} */
- let fixture;
- /** @type {import('../../../astro/src/types/public/preview.js').PreviewServer} */
- let previewServer;
- /** @type {URL} */
- let baseUri;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/api-route/',
- output: 'server',
- adapter: nodejs({ mode: 'middleware' }),
- });
- await fixture.build();
- previewServer = await fixture.preview();
- baseUri = new URL(`http://${previewServer.host ?? 'localhost'}:${previewServer.port}/`);
- });
-
- after(() => previewServer.stop());
-
- it('Can get the request body', async () => {
- const { handler } = await import('./fixtures/api-route/dist/server/entry.mjs');
- let { req, res, done } = createRequestAndResponse({
- method: 'POST',
- url: '/recipes',
- });
-
- req.once('async_iterator', () => {
- req.send(JSON.stringify({ id: 2 }));
- });
-
- handler(req, res);
-
- let [buffer] = await done;
-
- let json = JSON.parse(buffer.toString('utf-8'));
-
- assert.equal(json.length, 1);
-
- assert.equal(json[0].name, 'Broccoli Soup');
- });
-
- it('Can get binary data', async () => {
- const { handler } = await import('./fixtures/api-route/dist/server/entry.mjs');
-
- let { req, res, done } = createRequestAndResponse({
- method: 'POST',
- url: '/binary',
- });
-
- req.once('async_iterator', () => {
- req.send(Buffer.from(new Uint8Array([1, 2, 3, 4, 5])));
- });
-
- handler(req, res);
-
- let [out] = await done;
- let arr = Array.from(new Uint8Array(out.buffer));
- assert.deepEqual(arr, [5, 4, 3, 2, 1]);
- });
-
- it('Can post large binary data', async () => {
- const { handler } = await import('./fixtures/api-route/dist/server/entry.mjs');
-
- let { req, res, done } = createRequestAndResponse({
- method: 'POST',
- url: '/hash',
- });
-
- handler(req, res);
-
- let expectedDigest = null;
- req.once('async_iterator', () => {
- // Send 256MB of garbage data in 256KB chunks. This should be fast (< 1sec).
- let remainingBytes = 256 * 1024 * 1024;
- const chunkSize = 256 * 1024;
-
- const hash = crypto.createHash('sha256');
- while (remainingBytes > 0) {
- const size = Math.min(remainingBytes, chunkSize);
- const chunk = Buffer.alloc(size, Math.floor(Math.random() * 256));
- hash.update(chunk);
- req.emit('data', chunk);
- remainingBytes -= size;
- }
-
- req.emit('end');
- expectedDigest = hash.digest();
- });
-
- let [out] = await done;
- assert.deepEqual(new Uint8Array(out.buffer), new Uint8Array(expectedDigest));
- });
-
- it('Can bail on streaming', async () => {
- const { handler } = await import('./fixtures/api-route/dist/server/entry.mjs');
- let { req, res, done } = createRequestAndResponse({
- url: '/streaming',
- });
-
- let locals = { cancelledByTheServer: false };
-
- handler(req, res, () => {}, locals);
- req.send();
-
- await new Promise((resolve) => setTimeout(resolve, 500));
- res.emit('close');
-
- await done;
-
- assert.deepEqual(locals, { cancelledByTheServer: true });
- });
-
- it('Can respond with SSR redirect', async () => {
- const controller = new AbortController();
- setTimeout(() => controller.abort(), 1000);
- const response = await fetch(new URL('/redirect', baseUri), {
- redirect: 'manual',
- signal: controller.signal,
- });
- assert.equal(response.status, 302);
- assert.equal(response.headers.get('location'), '/destination');
- });
-
- it('Can respond with Astro.redirect', async () => {
- const controller = new AbortController();
- setTimeout(() => controller.abort(), 1000);
- const response = await fetch(new URL('/astro-redirect', baseUri), {
- redirect: 'manual',
- signal: controller.signal,
- });
- assert.equal(response.status, 303);
- assert.equal(response.headers.get('location'), '/destination');
- });
-
- it('Can respond with Response.redirect', async () => {
- const controller = new AbortController();
- setTimeout(() => controller.abort(), 1000);
- const response = await fetch(new URL('/response-redirect', baseUri), {
- redirect: 'manual',
- signal: controller.signal,
- });
- assert.equal(response.status, 307);
- assert.equal(response.headers.get('location'), String(new URL('/destination', baseUri)));
- });
-});
diff --git a/packages/integrations/node/test/assets.test.js b/packages/integrations/node/test/assets.test.js
deleted file mode 100644
index 0b71f94cd..000000000
--- a/packages/integrations/node/test/assets.test.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import * as assert from 'node:assert/strict';
-import { after, before, describe, it } from 'node:test';
-import * as cheerio from 'cheerio';
-import nodejs from '../dist/index.js';
-import { loadFixture } from './test-utils.js';
-
-describe('Assets', () => {
- /** @type {import('./test-utils').Fixture} */
- let fixture;
- let devPreview;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/image/',
- output: 'server',
- adapter: nodejs({ mode: 'standalone' }),
- vite: {
- build: {
- assetsInlineLimit: 0,
- },
- },
- });
- await fixture.build();
- devPreview = await fixture.preview();
- });
-
- after(async () => {
- await devPreview.stop();
- });
-
- it('Assets within the _astro folder should be given immutable headers', async () => {
- let response = await fixture.fetch('/text-file');
- let cacheControl = response.headers.get('cache-control');
- assert.equal(cacheControl, null);
- const html = await response.text();
- const $ = cheerio.load(html);
-
- // Fetch the asset
- const fileURL = $('a').attr('href');
- response = await fixture.fetch(fileURL);
- cacheControl = response.headers.get('cache-control');
- assert.equal(cacheControl, 'public, max-age=31536000, immutable');
- });
-});
diff --git a/packages/integrations/node/test/bad-urls.test.js b/packages/integrations/node/test/bad-urls.test.js
deleted file mode 100644
index 9323516e8..000000000
--- a/packages/integrations/node/test/bad-urls.test.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import * as assert from 'node:assert/strict';
-import { after, before, describe, it } from 'node:test';
-import nodejs from '../dist/index.js';
-import { loadFixture } from './test-utils.js';
-
-describe('Bad URLs', () => {
- /** @type {import('./test-utils').Fixture} */
- let fixture;
- let devPreview;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/bad-urls/',
- output: 'server',
- adapter: nodejs({ mode: 'standalone' }),
- });
- await fixture.build();
- devPreview = await fixture.preview();
- });
-
- after(async () => {
- await devPreview.stop();
- });
-
- it('Does not crash on bad urls', async () => {
- const weirdURLs = [
- '/\\xfs.bxss.me%3Fastrojs.com/hello-world',
- '/asdasdasd@ax_zX=.zxczas🐥%/úadasd000%/',
- '%',
- '%80',
- '%c',
- '%c0%80',
- '%20foobar%',
- ];
-
- const statusCodes = [400, 404, 500];
- for (const weirdUrl of weirdURLs) {
- const fetchResult = await fixture.fetch(weirdUrl);
- assert.equal(
- statusCodes.includes(fetchResult.status),
- true,
- `${weirdUrl} returned something else than 400, 404, or 500`,
- );
- }
- const stillWork = await fixture.fetch('/');
- const text = await stillWork.text();
- assert.equal(text, '<!DOCTYPE html>Hello!');
- });
-});
diff --git a/packages/integrations/node/test/encoded.test.js b/packages/integrations/node/test/encoded.test.js
deleted file mode 100644
index edc6ae78b..000000000
--- a/packages/integrations/node/test/encoded.test.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import * as assert from 'node:assert/strict';
-import { before, describe, it } from 'node:test';
-import nodejs from '../dist/index.js';
-import { createRequestAndResponse, loadFixture } from './test-utils.js';
-
-describe('Encoded Pathname', () => {
- /** @type {import('./test-utils').Fixture} */
- let fixture;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/encoded/',
- output: 'server',
- adapter: nodejs({ mode: 'middleware' }),
- });
- await fixture.build();
- });
-
- it('Can get an Astro file', async () => {
- const { handler } = await import('./fixtures/encoded/dist/server/entry.mjs');
- let { req, res, text } = createRequestAndResponse({
- url: '/什么',
- });
-
- handler(req, res);
- req.send();
-
- const html = await text();
- assert.equal(html.includes('什么</h1>'), true);
- });
-
- it('Can get a Markdown file', async () => {
- const { handler } = await import('./fixtures/encoded/dist/server/entry.mjs');
-
- let { req, res, text } = createRequestAndResponse({
- url: '/blog/什么',
- });
-
- handler(req, res);
- req.send();
-
- const html = await text();
- assert.equal(html.includes('什么</h1>'), true);
- });
-});
diff --git a/packages/integrations/node/test/errors.test.js b/packages/integrations/node/test/errors.test.js
deleted file mode 100644
index 802fa6e25..000000000
--- a/packages/integrations/node/test/errors.test.js
+++ /dev/null
@@ -1,91 +0,0 @@
-import assert from 'node:assert/strict';
-import { after, before, describe, it } from 'node:test';
-import { fileURLToPath } from 'node:url';
-import { Worker } from 'node:worker_threads';
-import * as cheerio from 'cheerio';
-import nodejs from '../dist/index.js';
-import { loadFixture } from './test-utils.js';
-
-describe('Errors', () => {
- /** @type {import('./test-utils.js').Fixture} */
- let fixture;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/errors/',
- output: 'server',
- adapter: nodejs({ mode: 'standalone' }),
- });
- await fixture.build();
- });
- let devPreview;
-
- before(async () => {
- // The two tests that need the server to run are skipped
- // devPreview = await fixture.preview();
- });
- after(async () => {
- await devPreview?.stop();
- });
-
- it('stays alive after offshoot promise rejections', async () => {
- // this test needs to happen in a worker because node test runner adds a listener for unhandled rejections in the main thread
- const url = new URL('./fixtures/errors/dist/server/entry.mjs', import.meta.url);
- const worker = new Worker(fileURLToPath(url), {
- type: 'module',
- env: { ASTRO_NODE_LOGGING: 'enabled' },
- });
-
- await new Promise((resolve, reject) => {
- worker.stdout.on('data', (data) => {
- setTimeout(() => reject('Server took too long to start'), 1000);
- if (data.toString().includes('Server listening on http://localhost:4321')) resolve();
- });
- });
-
- await fetch('http://localhost:4321/offshoot-promise-rejection');
-
- // if there was a crash, it becomes an error here
- await worker.terminate();
- });
-
- it(
- 'rejected promise in template',
- { skip: true, todo: 'Review the response from the in-stream' },
- async () => {
- const res = await fixture.fetch('/in-stream');
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal($('p').text().trim(), 'Internal server error');
- },
- );
-
- it(
- 'generator that throws called in template',
- { skip: true, todo: 'Review the response from the generator' },
- async () => {
- const result = ['<!DOCTYPE html><h1>Astro</h1> 1', 'Internal server error'];
-
- /** @type {Response} */
- const res = await fixture.fetch('/generator');
- const reader = res.body.getReader();
- const decoder = new TextDecoder();
- const chunk1 = await reader.read();
- const chunk2 = await reader.read();
- const chunk3 = await reader.read();
- assert.equal(chunk1.done, false);
- console.log(chunk1);
- console.log(chunk2);
- console.log(chunk3);
- if (chunk2.done) {
- assert.equal(decoder.decode(chunk1.value), result.join(''));
- } else if (chunk3.done) {
- assert.equal(decoder.decode(chunk1.value), result[0]);
- assert.equal(decoder.decode(chunk2.value), result[1]);
- } else {
- throw new Error('The response should take at most 2 chunks.');
- }
- },
- );
-});
diff --git a/packages/integrations/node/test/fixtures/api-route/package.json b/packages/integrations/node/test/fixtures/api-route/package.json
deleted file mode 100644
index c4d9bdd2b..000000000
--- a/packages/integrations/node/test/fixtures/api-route/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/nodejs-api-route",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "astro": "workspace:*",
- "@astrojs/node": "workspace:*"
- }
-}
diff --git a/packages/integrations/node/test/fixtures/api-route/src/pages/astro-redirect.astro b/packages/integrations/node/test/fixtures/api-route/src/pages/astro-redirect.astro
deleted file mode 100644
index 65a8765e8..000000000
--- a/packages/integrations/node/test/fixtures/api-route/src/pages/astro-redirect.astro
+++ /dev/null
@@ -1,3 +0,0 @@
----
-return Astro.redirect('/destination', 303);
----
diff --git a/packages/integrations/node/test/fixtures/api-route/src/pages/binary.ts b/packages/integrations/node/test/fixtures/api-route/src/pages/binary.ts
deleted file mode 100644
index b1c7ce263..000000000
--- a/packages/integrations/node/test/fixtures/api-route/src/pages/binary.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-
-export async function POST({ request }: { request: Request }) {
- let body = await request.arrayBuffer();
- let data = new Uint8Array(body);
- let r = data.reverse();
- return new Response(r, {
- headers: {
- 'Content-Type': 'application/octet-stream'
- }
- });
-}
diff --git a/packages/integrations/node/test/fixtures/api-route/src/pages/hash.ts b/packages/integrations/node/test/fixtures/api-route/src/pages/hash.ts
deleted file mode 100644
index 3f1b236de..000000000
--- a/packages/integrations/node/test/fixtures/api-route/src/pages/hash.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import crypto from 'node:crypto';
-
-export async function POST({ request }: { request: Request }) {
- const hash = crypto.createHash('sha256');
-
- const iterable = request.body as unknown as AsyncIterable<Uint8Array>;
- for await (const chunk of iterable) {
- hash.update(chunk);
- }
-
- return new Response(hash.digest(), {
- headers: {
- 'Content-Type': 'application/octet-stream'
- }
- });
-}
diff --git a/packages/integrations/node/test/fixtures/api-route/src/pages/recipes.js b/packages/integrations/node/test/fixtures/api-route/src/pages/recipes.js
deleted file mode 100644
index 7297b9643..000000000
--- a/packages/integrations/node/test/fixtures/api-route/src/pages/recipes.js
+++ /dev/null
@@ -1,24 +0,0 @@
-
-export async function POST({ request }) {
- let body = await request.json();
- const recipes = [
- {
- id: 1,
- name: 'Potato Soup'
- },
- {
- id: 2,
- name: 'Broccoli Soup'
- }
- ];
-
- let out = recipes.filter(r => {
- return r.id === body.id;
- });
-
- return new Response(JSON.stringify(out), {
- headers: {
- 'Content-Type': 'application/json'
- }
- });
-}
diff --git a/packages/integrations/node/test/fixtures/api-route/src/pages/redirect.ts b/packages/integrations/node/test/fixtures/api-route/src/pages/redirect.ts
deleted file mode 100644
index baf22c93e..000000000
--- a/packages/integrations/node/test/fixtures/api-route/src/pages/redirect.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { APIContext } from 'astro';
-
-export async function GET({ redirect }: APIContext) {
- return redirect('/destination');
-}
diff --git a/packages/integrations/node/test/fixtures/api-route/src/pages/response-redirect.ts b/packages/integrations/node/test/fixtures/api-route/src/pages/response-redirect.ts
deleted file mode 100644
index 1dfa8bb3c..000000000
--- a/packages/integrations/node/test/fixtures/api-route/src/pages/response-redirect.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { APIContext } from 'astro';
-
-export async function GET({ url: requestUrl }: APIContext) {
- return Response.redirect(new URL('/destination', requestUrl), 307);
-}
diff --git a/packages/integrations/node/test/fixtures/api-route/src/pages/streaming.ts b/packages/integrations/node/test/fixtures/api-route/src/pages/streaming.ts
deleted file mode 100644
index 9ecb884bf..000000000
--- a/packages/integrations/node/test/fixtures/api-route/src/pages/streaming.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-export const GET = ({ locals }) => {
- let sentChunks = 0;
-
- const readableStream = new ReadableStream({
- async pull(controller) {
- if (sentChunks === 3) return controller.close();
- else sentChunks++;
-
- await new Promise(resolve => setTimeout(resolve, 1000));
- controller.enqueue(new TextEncoder().encode('hello\n'));
- },
- cancel() {
- locals.cancelledByTheServer = true;
- }
- });
-
- return new Response(readableStream, {
- headers: {
- "Content-Type": "text/event-stream"
- }
- });
-}
diff --git a/packages/integrations/node/test/fixtures/bad-urls/package.json b/packages/integrations/node/test/fixtures/bad-urls/package.json
deleted file mode 100644
index 73c119663..000000000
--- a/packages/integrations/node/test/fixtures/bad-urls/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/nodejs-badurls",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "astro": "workspace:*",
- "@astrojs/node": "workspace:*"
- }
-}
diff --git a/packages/integrations/node/test/fixtures/bad-urls/src/pages/index.astro b/packages/integrations/node/test/fixtures/bad-urls/src/pages/index.astro
deleted file mode 100644
index 10ddd6d25..000000000
--- a/packages/integrations/node/test/fixtures/bad-urls/src/pages/index.astro
+++ /dev/null
@@ -1 +0,0 @@
-Hello!
diff --git a/packages/integrations/node/test/fixtures/encoded/package.json b/packages/integrations/node/test/fixtures/encoded/package.json
deleted file mode 100644
index 350077973..000000000
--- a/packages/integrations/node/test/fixtures/encoded/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/nodejs-encoded",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "astro": "workspace:*",
- "@astrojs/node": "workspace:*"
- }
-}
diff --git a/packages/integrations/node/test/fixtures/encoded/src/pages/blog/什么.md b/packages/integrations/node/test/fixtures/encoded/src/pages/blog/什么.md
deleted file mode 100644
index 2820cf17e..000000000
--- a/packages/integrations/node/test/fixtures/encoded/src/pages/blog/什么.md
+++ /dev/null
@@ -1 +0,0 @@
-# 什么
diff --git a/packages/integrations/node/test/fixtures/encoded/src/pages/什么.astro b/packages/integrations/node/test/fixtures/encoded/src/pages/什么.astro
deleted file mode 100644
index c8473f594..000000000
--- a/packages/integrations/node/test/fixtures/encoded/src/pages/什么.astro
+++ /dev/null
@@ -1 +0,0 @@
-<h1>什么</h1>
diff --git a/packages/integrations/node/test/fixtures/errors/package.json b/packages/integrations/node/test/fixtures/errors/package.json
deleted file mode 100644
index e9fcfe654..000000000
--- a/packages/integrations/node/test/fixtures/errors/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/nodejs-errors",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "astro": "workspace:*",
- "@astrojs/node": "workspace:*"
- }
-}
diff --git a/packages/integrations/node/test/fixtures/errors/src/pages/generator.astro b/packages/integrations/node/test/fixtures/errors/src/pages/generator.astro
deleted file mode 100644
index 65b8ae62c..000000000
--- a/packages/integrations/node/test/fixtures/errors/src/pages/generator.astro
+++ /dev/null
@@ -1,11 +0,0 @@
----
-function * generator () {
- yield 1
- throw Error('ohnoes')
-}
----
-<h1>Astro</h1>
-{generator()}
-<footer>
- Footer
-</footer> \ No newline at end of file
diff --git a/packages/integrations/node/test/fixtures/errors/src/pages/in-stream.astro b/packages/integrations/node/test/fixtures/errors/src/pages/in-stream.astro
deleted file mode 100644
index b7ee6b4ef..000000000
--- a/packages/integrations/node/test/fixtures/errors/src/pages/in-stream.astro
+++ /dev/null
@@ -1,13 +0,0 @@
----
----
-<html>
- <head>
- <title>One</title>
- </head>
- <body>
- <h1>One</h1>
- <p>
- {Promise.reject('Error in the stream')}
- </p>
- </body>
-</html>
diff --git a/packages/integrations/node/test/fixtures/errors/src/pages/offshoot-promise-rejection.astro b/packages/integrations/node/test/fixtures/errors/src/pages/offshoot-promise-rejection.astro
deleted file mode 100644
index be702d5ef..000000000
--- a/packages/integrations/node/test/fixtures/errors/src/pages/offshoot-promise-rejection.astro
+++ /dev/null
@@ -1,2 +0,0 @@
-{new Promise(async _ => (await {}, Astro.props.undefined.alsoAPropertyOfUndefined))}
-{Astro.props.undefined.propertyOfUndefined} \ No newline at end of file
diff --git a/packages/integrations/node/test/fixtures/headers/package.json b/packages/integrations/node/test/fixtures/headers/package.json
deleted file mode 100644
index 6a0858521..000000000
--- a/packages/integrations/node/test/fixtures/headers/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/nodejs-headers",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "astro": "workspace:*",
- "@astrojs/node": "workspace:*"
- }
-}
diff --git a/packages/integrations/node/test/fixtures/headers/src/pages/astro/component-astro-cookies-multi.astro b/packages/integrations/node/test/fixtures/headers/src/pages/astro/component-astro-cookies-multi.astro
deleted file mode 100644
index a9ff193df..000000000
--- a/packages/integrations/node/test/fixtures/headers/src/pages/astro/component-astro-cookies-multi.astro
+++ /dev/null
@@ -1,5 +0,0 @@
----
-Astro.cookies.set('from1', 'astro1');
-Astro.cookies.set('from2', 'astro2');
----
-<p>hello world</p> \ No newline at end of file
diff --git a/packages/integrations/node/test/fixtures/headers/src/pages/astro/component-astro-cookies-single.astro b/packages/integrations/node/test/fixtures/headers/src/pages/astro/component-astro-cookies-single.astro
deleted file mode 100644
index c469fd66f..000000000
--- a/packages/integrations/node/test/fixtures/headers/src/pages/astro/component-astro-cookies-single.astro
+++ /dev/null
@@ -1,4 +0,0 @@
----
-Astro.cookies.set('from1', 'astro1');
----
-<p>hello world</p> \ No newline at end of file
diff --git a/packages/integrations/node/test/fixtures/headers/src/pages/astro/component-astro-response-cookie-multi.astro b/packages/integrations/node/test/fixtures/headers/src/pages/astro/component-astro-response-cookie-multi.astro
deleted file mode 100644
index 91244e838..000000000
--- a/packages/integrations/node/test/fixtures/headers/src/pages/astro/component-astro-response-cookie-multi.astro
+++ /dev/null
@@ -1,7 +0,0 @@
----
-Astro.response.headers.append('set-cookie', 'from1=response1');
-Astro.response.headers.append('set-cookie', 'from2=response2');
-Astro.cookies.set('from3', 'astro1');
-Astro.cookies.set('from4', 'astro2');
----
-<p>hello world</p> \ No newline at end of file
diff --git a/packages/integrations/node/test/fixtures/headers/src/pages/astro/component-astro-response-cookie-single.astro b/packages/integrations/node/test/fixtures/headers/src/pages/astro/component-astro-response-cookie-single.astro
deleted file mode 100644
index 97719dfa9..000000000
--- a/packages/integrations/node/test/fixtures/headers/src/pages/astro/component-astro-response-cookie-single.astro
+++ /dev/null
@@ -1,5 +0,0 @@
----
-Astro.response.headers.append('set-cookie', 'from1=response1');
-Astro.cookies.set('from1', 'astro1');
----
-<p>hello world</p> \ No newline at end of file
diff --git a/packages/integrations/node/test/fixtures/headers/src/pages/astro/component-response-cookies-multi.astro b/packages/integrations/node/test/fixtures/headers/src/pages/astro/component-response-cookies-multi.astro
deleted file mode 100644
index 133cbd423..000000000
--- a/packages/integrations/node/test/fixtures/headers/src/pages/astro/component-response-cookies-multi.astro
+++ /dev/null
@@ -1,5 +0,0 @@
----
-Astro.response.headers.append('set-cookie', 'from1=value1');
-Astro.response.headers.append('set-cookie', 'from2=value2');
----
-<p>hello world</p> \ No newline at end of file
diff --git a/packages/integrations/node/test/fixtures/headers/src/pages/astro/component-response-cookies-single.astro b/packages/integrations/node/test/fixtures/headers/src/pages/astro/component-response-cookies-single.astro
deleted file mode 100644
index dc76082db..000000000
--- a/packages/integrations/node/test/fixtures/headers/src/pages/astro/component-response-cookies-single.astro
+++ /dev/null
@@ -1,4 +0,0 @@
----
-Astro.response.headers.append('set-cookie', 'from1=value1');
----
-<p>hello world</p> \ No newline at end of file
diff --git a/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/astro-cookies-multi.ts b/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/astro-cookies-multi.ts
deleted file mode 100644
index aaae88e59..000000000
--- a/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/astro-cookies-multi.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import type { APIContext } from 'astro';
-
-export async function GET({ request, cookies }: APIContext) {
- const headers = new Headers();
- headers.append('content-type', 'text/plain;charset=utf-8');
- cookies.set('from1', 'astro1');
- cookies.set('from2', 'astro2');
- return new Response('hello world', { headers });
-}
diff --git a/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/astro-cookies-single.ts b/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/astro-cookies-single.ts
deleted file mode 100644
index 03e74c604..000000000
--- a/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/astro-cookies-single.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import type { APIContext } from 'astro';
-
-export async function GET({ request, cookies }: APIContext) {
- const headers = new Headers();
- headers.append('content-type', 'text/plain;charset=utf-8');
- cookies.set('from1', 'astro1');
- return new Response('hello world', { headers });
-}
diff --git a/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/astro-response-cookie-multi.ts b/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/astro-response-cookie-multi.ts
deleted file mode 100644
index 36906da3a..000000000
--- a/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/astro-response-cookie-multi.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import type { APIContext } from 'astro';
-
-export async function GET({ request, cookies }: APIContext) {
- const headers = new Headers();
- headers.append('content-type', 'text/plain;charset=utf-8');
- headers.append('set-cookie', 'from1=response1');
- headers.append('set-cookie', 'from2=response2');
- cookies.set('from3', 'astro1');
- cookies.set('from4', 'astro2');
- return new Response('hello world', { headers });
-}
diff --git a/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/astro-response-cookie-single.ts b/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/astro-response-cookie-single.ts
deleted file mode 100644
index 3c1fc4775..000000000
--- a/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/astro-response-cookie-single.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import type { APIContext } from 'astro';
-
-export async function GET({ request, cookies }: APIContext) {
- const headers = new Headers();
- headers.append('content-type', 'text/plain;charset=utf-8');
- headers.append('set-cookie', 'from1=response1');
- cookies.set('from1', 'astro1');
- return new Response('hello world', { headers });
-}
diff --git a/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/kitchen-sink.ts b/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/kitchen-sink.ts
deleted file mode 100644
index fb7c30cbc..000000000
--- a/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/kitchen-sink.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-export async function GET({ request }: { request: Request }) {
- const headers = new Headers();
- headers.append('content-type', 'text/plain;charset=utf-8');
- headers.append('x-SINGLE', 'single');
- headers.append('X-triple', 'one');
- headers.append('x-Triple', 'two');
- headers.append('x-TRIPLE', 'three');
- headers.append('SET-cookie', 'hello1=world1');
- headers.append('Set-Cookie', 'hello2=world2');
- return new Response('hello world', { headers });
-}
diff --git a/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/response-cookies-multi.ts b/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/response-cookies-multi.ts
deleted file mode 100644
index d974737ee..000000000
--- a/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/response-cookies-multi.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export async function GET({ request }: { request: Request }) {
- const headers = new Headers();
- headers.append('content-type', 'text/plain;charset=utf-8');
- headers.append('Set-Cookie', 'hello1=world1');
- headers.append('SET-COOKIE', 'hello2=world2');
- return new Response('hello world', { headers });
-}
diff --git a/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/response-cookies-single.ts b/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/response-cookies-single.ts
deleted file mode 100644
index f543ae062..000000000
--- a/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/response-cookies-single.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export async function GET({ request }: { request: Request }) {
- const headers = new Headers();
- headers.append('content-type', 'text/plain;charset=utf-8');
- headers.append('Set-Cookie', 'hello1=world1');
- return new Response('hello world', { headers });
-}
diff --git a/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/response-empty-headers-object.ts b/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/response-empty-headers-object.ts
deleted file mode 100644
index b8a9e122e..000000000
--- a/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/response-empty-headers-object.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export async function GET({ request }: { request: Request }) {
- const headers = new Headers();
- return new Response('hello world', { headers });
-}
diff --git a/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/response-undefined-headers-object.ts b/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/response-undefined-headers-object.ts
deleted file mode 100644
index 72f7af071..000000000
--- a/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/response-undefined-headers-object.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export async function GET({ request }: { request: Request }) {
- return new Response('hello world', { headers: undefined });
-}
diff --git a/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/simple.ts b/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/simple.ts
deleted file mode 100644
index 9c6bcacaa..000000000
--- a/packages/integrations/node/test/fixtures/headers/src/pages/endpoints/simple.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export async function GET({ request }: { request: Request }) {
- const headers = new Headers();
- headers.append('content-type', 'text/plain;charset=utf-8');
- headers.append('X-HELLO', 'world');
- return new Response('hello world', { headers });
-}
diff --git a/packages/integrations/node/test/fixtures/image/package.json b/packages/integrations/node/test/fixtures/image/package.json
deleted file mode 100644
index 94066576d..000000000
--- a/packages/integrations/node/test/fixtures/image/package.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "name": "@test/nodejs-image",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "astro": "workspace:*",
- "@astrojs/node": "workspace:*"
- },
- "scripts": {
- "build": "astro build",
- "preview": "astro preview"
- }
-}
diff --git a/packages/integrations/node/test/fixtures/image/src/assets/file.txt b/packages/integrations/node/test/fixtures/image/src/assets/file.txt
deleted file mode 100644
index e9ea42a12..000000000
--- a/packages/integrations/node/test/fixtures/image/src/assets/file.txt
+++ /dev/null
@@ -1 +0,0 @@
-this is a text file
diff --git a/packages/integrations/node/test/fixtures/image/src/assets/some_penguin.png b/packages/integrations/node/test/fixtures/image/src/assets/some_penguin.png
deleted file mode 100644
index a09d7f894..000000000
--- a/packages/integrations/node/test/fixtures/image/src/assets/some_penguin.png
+++ /dev/null
Binary files differ
diff --git a/packages/integrations/node/test/fixtures/image/src/pages/index.astro b/packages/integrations/node/test/fixtures/image/src/pages/index.astro
deleted file mode 100644
index 474a2f0c9..000000000
--- a/packages/integrations/node/test/fixtures/image/src/pages/index.astro
+++ /dev/null
@@ -1,6 +0,0 @@
----
-import { Image } from "astro:assets";
-import penguin from "../assets/some_penguin.png";
----
-
-<Image src={penguin} alt="Penguins" width={50} />
diff --git a/packages/integrations/node/test/fixtures/image/src/pages/text-file.astro b/packages/integrations/node/test/fixtures/image/src/pages/text-file.astro
deleted file mode 100644
index 893250360..000000000
--- a/packages/integrations/node/test/fixtures/image/src/pages/text-file.astro
+++ /dev/null
@@ -1,14 +0,0 @@
----
-import txt from '../assets/file.txt?url';
----
-<html>
- <head>
- <title>Testing</title>
- </head>
- <body>
- <h1>Testing</h1>
- <main>
- <a href={txt} download>Download text file</a>
- </main>
- </body>
-</html>
diff --git a/packages/integrations/node/test/fixtures/locals/package.json b/packages/integrations/node/test/fixtures/locals/package.json
deleted file mode 100644
index 35be7dc01..000000000
--- a/packages/integrations/node/test/fixtures/locals/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/locals",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "astro": "workspace:*",
- "@astrojs/node": "workspace:*"
- }
-}
diff --git a/packages/integrations/node/test/fixtures/locals/src/middleware.ts b/packages/integrations/node/test/fixtures/locals/src/middleware.ts
deleted file mode 100644
index e349ca41d..000000000
--- a/packages/integrations/node/test/fixtures/locals/src/middleware.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { defineMiddleware } from 'astro:middleware';
-
-export const onRequest = defineMiddleware(({ url, locals }, next) => {
- if (url.pathname === "/from-astro-middleware") locals.foo = "baz";
- return next();
-})
diff --git a/packages/integrations/node/test/fixtures/locals/src/pages/api.js b/packages/integrations/node/test/fixtures/locals/src/pages/api.js
deleted file mode 100644
index 3c279e37b..000000000
--- a/packages/integrations/node/test/fixtures/locals/src/pages/api.js
+++ /dev/null
@@ -1,10 +0,0 @@
-
-export async function POST({ locals }) {
- const out = { ...locals };
-
- return new Response(JSON.stringify(out), {
- headers: {
- 'Content-Type': 'application/json'
- }
- });
-}
diff --git a/packages/integrations/node/test/fixtures/locals/src/pages/from-astro-middleware.astro b/packages/integrations/node/test/fixtures/locals/src/pages/from-astro-middleware.astro
deleted file mode 100644
index 224a875ec..000000000
--- a/packages/integrations/node/test/fixtures/locals/src/pages/from-astro-middleware.astro
+++ /dev/null
@@ -1,4 +0,0 @@
----
-const { foo } = Astro.locals;
----
-<h1>{foo}</h1>
diff --git a/packages/integrations/node/test/fixtures/locals/src/pages/from-node-middleware.astro b/packages/integrations/node/test/fixtures/locals/src/pages/from-node-middleware.astro
deleted file mode 100644
index 224a875ec..000000000
--- a/packages/integrations/node/test/fixtures/locals/src/pages/from-node-middleware.astro
+++ /dev/null
@@ -1,4 +0,0 @@
----
-const { foo } = Astro.locals;
----
-<h1>{foo}</h1>
diff --git a/packages/integrations/node/test/fixtures/node-middleware/package.json b/packages/integrations/node/test/fixtures/node-middleware/package.json
deleted file mode 100644
index 7a49010f1..000000000
--- a/packages/integrations/node/test/fixtures/node-middleware/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/node-middleware",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "astro": "workspace:*",
- "@astrojs/node": "workspace:*"
- }
-}
diff --git a/packages/integrations/node/test/fixtures/node-middleware/src/pages/404.astro b/packages/integrations/node/test/fixtures/node-middleware/src/pages/404.astro
deleted file mode 100644
index 79f4944bc..000000000
--- a/packages/integrations/node/test/fixtures/node-middleware/src/pages/404.astro
+++ /dev/null
@@ -1,13 +0,0 @@
----
----
-
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>404</title>
-</head>
-<body>Page does not exist</body>
-</html>
diff --git a/packages/integrations/node/test/fixtures/node-middleware/src/pages/index.astro b/packages/integrations/node/test/fixtures/node-middleware/src/pages/index.astro
deleted file mode 100644
index 28ff7d223..000000000
--- a/packages/integrations/node/test/fixtures/node-middleware/src/pages/index.astro
+++ /dev/null
@@ -1,11 +0,0 @@
----
----
-
-<html lang="en">
-<head><title>node-middleware</title></head>
-<style>
-</style>
-<body>
-<div>1</div>
-</body>
-</html>
diff --git a/packages/integrations/node/test/fixtures/node-middleware/src/pages/ssr.ts b/packages/integrations/node/test/fixtures/node-middleware/src/pages/ssr.ts
deleted file mode 100644
index 423db341a..000000000
--- a/packages/integrations/node/test/fixtures/node-middleware/src/pages/ssr.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export async function GET() {
- let number = Math.random();
- return Response.json({
- number,
- message: `Here's a random number: ${number}`,
- });
-}
diff --git a/packages/integrations/node/test/fixtures/prerender-404-500/package.json b/packages/integrations/node/test/fixtures/prerender-404-500/package.json
deleted file mode 100644
index f962fe991..000000000
--- a/packages/integrations/node/test/fixtures/prerender-404-500/package.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "name": "@test/nodejs-prerender-404-500",
- "version": "0.0.0",
- "private": true,
- "type": "module",
- "dependencies": {
- "astro": "workspace:*",
- "@astrojs/node": "workspace:*"
- }
-}
diff --git a/packages/integrations/node/test/fixtures/prerender-404-500/src/external-stylesheet.css b/packages/integrations/node/test/fixtures/prerender-404-500/src/external-stylesheet.css
deleted file mode 100644
index 5f331948a..000000000
--- a/packages/integrations/node/test/fixtures/prerender-404-500/src/external-stylesheet.css
+++ /dev/null
@@ -1,3 +0,0 @@
-body {
- background-color: ivory;
-}
diff --git a/packages/integrations/node/test/fixtures/prerender-404-500/src/nondeterminism-404.ts b/packages/integrations/node/test/fixtures/prerender-404-500/src/nondeterminism-404.ts
deleted file mode 100644
index 1795c26b0..000000000
--- a/packages/integrations/node/test/fixtures/prerender-404-500/src/nondeterminism-404.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-// This module is only used by the prerendered 404.astro.
-// It exhibits different behavior if it's called more than once,
-// which is detected by a test and interpreted as a failure.
-
-let usedOnce = false
-let dynamicMessage = "Page was not prerendered"
-
-export default function () {
- if (usedOnce === false) {
- usedOnce = true
- return "Page does not exist"
- }
-
- dynamicMessage += "+"
-
- return dynamicMessage
-}
diff --git a/packages/integrations/node/test/fixtures/prerender-404-500/src/nondeterminism-500.ts b/packages/integrations/node/test/fixtures/prerender-404-500/src/nondeterminism-500.ts
deleted file mode 100644
index 8f8024a60..000000000
--- a/packages/integrations/node/test/fixtures/prerender-404-500/src/nondeterminism-500.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-// This module is only used by the prerendered 500.astro.
-// It exhibits different behavior if it's called more than once,
-// which is detected by a test and interpreted as a failure.
-
-let usedOnce = false
-let dynamicMessage = "Page was not prerendered"
-
-export default function () {
- if (usedOnce === false) {
- usedOnce = true
- return "Something went wrong"
- }
-
- dynamicMessage += "+"
-
- return dynamicMessage
-}
diff --git a/packages/integrations/node/test/fixtures/prerender-404-500/src/pages/404.astro b/packages/integrations/node/test/fixtures/prerender-404-500/src/pages/404.astro
deleted file mode 100644
index 37fd1c1d3..000000000
--- a/packages/integrations/node/test/fixtures/prerender-404-500/src/pages/404.astro
+++ /dev/null
@@ -1,5 +0,0 @@
----
-import message from "../nondeterminism-404"
-export const prerender = true;
----
-{message()}
diff --git a/packages/integrations/node/test/fixtures/prerender-404-500/src/pages/500.astro b/packages/integrations/node/test/fixtures/prerender-404-500/src/pages/500.astro
deleted file mode 100644
index ef91ad0ff..000000000
--- a/packages/integrations/node/test/fixtures/prerender-404-500/src/pages/500.astro
+++ /dev/null
@@ -1,6 +0,0 @@
----
-import "../external-stylesheet.css"
-import message from "../nondeterminism-500"
-export const prerender = true
----
-<h1>{message()}</h1>
diff --git a/packages/integrations/node/test/fixtures/prerender-404-500/src/pages/fivehundred.astro b/packages/integrations/node/test/fixtures/prerender-404-500/src/pages/fivehundred.astro
deleted file mode 100644
index 99d103567..000000000
--- a/packages/integrations/node/test/fixtures/prerender-404-500/src/pages/fivehundred.astro
+++ /dev/null
@@ -1,4 +0,0 @@
----
-return new Response(null, { status: 500 })
----
-<p>This html will not be served</p>
diff --git a/packages/integrations/node/test/fixtures/prerender-404-500/src/pages/static.astro b/packages/integrations/node/test/fixtures/prerender-404-500/src/pages/static.astro
deleted file mode 100644
index af6bad2fb..000000000
--- a/packages/integrations/node/test/fixtures/prerender-404-500/src/pages/static.astro
+++ /dev/null
@@ -1,12 +0,0 @@
----
-export const prerender = true;
----
-
-<html>
-<head>
- <title>Static Page</title>
-</head>
- <body>
- <h1>Hello world!</h1>
- </body>
-</html>
diff --git a/packages/integrations/node/test/fixtures/prerender/package.json b/packages/integrations/node/test/fixtures/prerender/package.json
deleted file mode 100644
index 0ae3211ab..000000000
--- a/packages/integrations/node/test/fixtures/prerender/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/nodejs-prerender",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "astro": "workspace:*",
- "@astrojs/node": "workspace:*"
- }
-}
diff --git a/packages/integrations/node/test/fixtures/prerender/src/middleware.ts b/packages/integrations/node/test/fixtures/prerender/src/middleware.ts
deleted file mode 100644
index 13d619d78..000000000
--- a/packages/integrations/node/test/fixtures/prerender/src/middleware.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { shared } from './shared';
-export const onRequest = (ctx, next) => {
- ctx.locals = {
- name: shared,
- };
- return next();
-};
diff --git a/packages/integrations/node/test/fixtures/prerender/src/pages/one.astro b/packages/integrations/node/test/fixtures/prerender/src/pages/one.astro
deleted file mode 100644
index f3a26721d..000000000
--- a/packages/integrations/node/test/fixtures/prerender/src/pages/one.astro
+++ /dev/null
@@ -1,10 +0,0 @@
----
----
-<html>
- <head>
- <title>One</title>
- </head>
- <body>
- <h1>One</h1>
- </body>
-</html>
diff --git a/packages/integrations/node/test/fixtures/prerender/src/pages/third.astro b/packages/integrations/node/test/fixtures/prerender/src/pages/third.astro
deleted file mode 100644
index e29377d88..000000000
--- a/packages/integrations/node/test/fixtures/prerender/src/pages/third.astro
+++ /dev/null
@@ -1,15 +0,0 @@
----
-import { shared} from "../shared";
-export const prerender = false;
-
-const shared = Astro.locals.name;
----
-
-<html>
-<head>
- <title>One</title>
-</head>
-<body>
-<h1>{shared}</h1>
-</body>
-</html>
diff --git a/packages/integrations/node/test/fixtures/prerender/src/pages/two.astro b/packages/integrations/node/test/fixtures/prerender/src/pages/two.astro
deleted file mode 100644
index c0e5d07aa..000000000
--- a/packages/integrations/node/test/fixtures/prerender/src/pages/two.astro
+++ /dev/null
@@ -1,11 +0,0 @@
----
-export const prerender = import.meta.env.PRERENDER;
----
-<html>
- <head>
- <title>Two</title>
- </head>
- <body>
- <h1>Two</h1>
- </body>
-</html>
diff --git a/packages/integrations/node/test/fixtures/prerender/src/shared.ts b/packages/integrations/node/test/fixtures/prerender/src/shared.ts
deleted file mode 100644
index cd35843de..000000000
--- a/packages/integrations/node/test/fixtures/prerender/src/shared.ts
+++ /dev/null
@@ -1 +0,0 @@
-export const shared = 'shared';
diff --git a/packages/integrations/node/test/fixtures/preview-headers/package.json b/packages/integrations/node/test/fixtures/preview-headers/package.json
deleted file mode 100644
index ec2d5e3cf..000000000
--- a/packages/integrations/node/test/fixtures/preview-headers/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/nodejs-preview-headers",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "astro": "workspace:*",
- "@astrojs/node": "workspace:*"
- }
-}
diff --git a/packages/integrations/node/test/fixtures/preview-headers/src/pages/index.astro b/packages/integrations/node/test/fixtures/preview-headers/src/pages/index.astro
deleted file mode 100644
index 10ddd6d25..000000000
--- a/packages/integrations/node/test/fixtures/preview-headers/src/pages/index.astro
+++ /dev/null
@@ -1 +0,0 @@
-Hello!
diff --git a/packages/integrations/node/test/fixtures/trailing-slash/astro.config.mjs b/packages/integrations/node/test/fixtures/trailing-slash/astro.config.mjs
deleted file mode 100644
index 7ee28f213..000000000
--- a/packages/integrations/node/test/fixtures/trailing-slash/astro.config.mjs
+++ /dev/null
@@ -1,8 +0,0 @@
-import node from '@astrojs/node'
-
-export default {
- base: '/some-base',
- output: 'hybrid',
- trailingSlash: 'never',
- adapter: node({ mode: 'standalone' })
-};
diff --git a/packages/integrations/node/test/fixtures/trailing-slash/package.json b/packages/integrations/node/test/fixtures/trailing-slash/package.json
deleted file mode 100644
index 50b7b7201..000000000
--- a/packages/integrations/node/test/fixtures/trailing-slash/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/node-trailingslash",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "astro": "workspace:*",
- "@astrojs/node": "workspace:*"
- }
-}
diff --git a/packages/integrations/node/test/fixtures/trailing-slash/public/one.css b/packages/integrations/node/test/fixtures/trailing-slash/public/one.css
deleted file mode 100644
index 5ce768ca5..000000000
--- a/packages/integrations/node/test/fixtures/trailing-slash/public/one.css
+++ /dev/null
@@ -1 +0,0 @@
-h1 { color: red; }
diff --git a/packages/integrations/node/test/fixtures/trailing-slash/src/pages/index.astro b/packages/integrations/node/test/fixtures/trailing-slash/src/pages/index.astro
deleted file mode 100644
index a4c415519..000000000
--- a/packages/integrations/node/test/fixtures/trailing-slash/src/pages/index.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>Index</title>
- </head>
- <body>
- <h1>Index</h1>
- </body>
-</html>
diff --git a/packages/integrations/node/test/fixtures/trailing-slash/src/pages/one.astro b/packages/integrations/node/test/fixtures/trailing-slash/src/pages/one.astro
deleted file mode 100644
index aa370d18d..000000000
--- a/packages/integrations/node/test/fixtures/trailing-slash/src/pages/one.astro
+++ /dev/null
@@ -1,11 +0,0 @@
----
-export const prerender = true;
----
-<html>
- <head>
- <title>One</title>
- </head>
- <body>
- <h1>One</h1>
- </body>
-</html>
diff --git a/packages/integrations/node/test/fixtures/url/package.json b/packages/integrations/node/test/fixtures/url/package.json
deleted file mode 100644
index f349011fd..000000000
--- a/packages/integrations/node/test/fixtures/url/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/url",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "astro": "workspace:*",
- "@astrojs/node": "workspace:*"
- }
-}
diff --git a/packages/integrations/node/test/fixtures/url/src/pages/index.astro b/packages/integrations/node/test/fixtures/url/src/pages/index.astro
deleted file mode 100644
index 003429f52..000000000
--- a/packages/integrations/node/test/fixtures/url/src/pages/index.astro
+++ /dev/null
@@ -1,9 +0,0 @@
----
----
-
-<html lang="en">
- <head>
- <title>URL</title>
- </head>
- <body>{Astro.url.href}</body>
-</html>
diff --git a/packages/integrations/node/test/fixtures/well-known-locations/package.json b/packages/integrations/node/test/fixtures/well-known-locations/package.json
deleted file mode 100644
index f018b6ec7..000000000
--- a/packages/integrations/node/test/fixtures/well-known-locations/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/well-known-locations",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "astro": "workspace:*",
- "@astrojs/node": "workspace:*"
- }
-}
diff --git a/packages/integrations/node/test/fixtures/well-known-locations/public/.hidden/file.json b/packages/integrations/node/test/fixtures/well-known-locations/public/.hidden/file.json
deleted file mode 100644
index 0967ef424..000000000
--- a/packages/integrations/node/test/fixtures/well-known-locations/public/.hidden/file.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/packages/integrations/node/test/fixtures/well-known-locations/public/.well-known/apple-app-site-association b/packages/integrations/node/test/fixtures/well-known-locations/public/.well-known/apple-app-site-association
deleted file mode 100644
index daae260f1..000000000
--- a/packages/integrations/node/test/fixtures/well-known-locations/public/.well-known/apple-app-site-association
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "applinks": {}
-}
diff --git a/packages/integrations/node/test/headers.test.js b/packages/integrations/node/test/headers.test.js
deleted file mode 100644
index 00b1766c7..000000000
--- a/packages/integrations/node/test/headers.test.js
+++ /dev/null
@@ -1,148 +0,0 @@
-import * as assert from 'node:assert/strict';
-import { before, describe, it } from 'node:test';
-import nodejs from '../dist/index.js';
-import { createRequestAndResponse, loadFixture } from './test-utils.js';
-
-describe('Node Adapter Headers', () => {
- /** @type {import('./test-utils').Fixture} */
- let fixture;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/headers/',
- output: 'server',
- adapter: nodejs({ mode: 'middleware' }),
- });
- await fixture.build();
- });
-
- it('Endpoint Simple Headers', async () => {
- await runTest('/endpoints/simple', {
- 'content-type': 'text/plain;charset=utf-8',
- 'x-hello': 'world',
- });
- });
-
- it('Endpoint Astro Single Cookie Header', async () => {
- await runTest('/endpoints/astro-cookies-single', {
- 'content-type': 'text/plain;charset=utf-8',
- 'set-cookie': 'from1=astro1',
- });
- });
-
- it('Endpoint Astro Multi Cookie Header', async () => {
- await runTest('/endpoints/astro-cookies-multi', {
- 'content-type': 'text/plain;charset=utf-8',
- 'set-cookie': ['from1=astro1', 'from2=astro2'],
- });
- });
-
- it('Endpoint Response Single Cookie Header', async () => {
- await runTest('/endpoints/response-cookies-single', {
- 'content-type': 'text/plain;charset=utf-8',
- 'set-cookie': 'hello1=world1',
- });
- });
-
- it('Endpoint Response Multi Cookie Header', async () => {
- await runTest('/endpoints/response-cookies-multi', {
- 'content-type': 'text/plain;charset=utf-8',
- 'set-cookie': ['hello1=world1', 'hello2=world2'],
- });
- });
-
- it('Endpoint Complex Headers Kitchen Sink', async () => {
- await runTest('/endpoints/kitchen-sink', {
- 'content-type': 'text/plain;charset=utf-8',
- 'x-single': 'single',
- 'x-triple': 'one, two, three',
- 'set-cookie': ['hello1=world1', 'hello2=world2'],
- });
- });
-
- it('Endpoint Astro and Response Single Cookie Header', async () => {
- await runTest('/endpoints/astro-response-cookie-single', {
- 'content-type': 'text/plain;charset=utf-8',
- 'set-cookie': ['from1=response1', 'from1=astro1'],
- });
- });
-
- it('Endpoint Astro and Response Multi Cookie Header', async () => {
- await runTest('/endpoints/astro-response-cookie-multi', {
- 'content-type': 'text/plain;charset=utf-8',
- 'set-cookie': ['from1=response1', 'from2=response2', 'from3=astro1', 'from4=astro2'],
- });
- });
-
- it('Endpoint Response Empty Headers Object', async () => {
- await runTest('/endpoints/response-empty-headers-object', {
- 'content-type': 'text/plain;charset=UTF-8',
- });
- });
-
- it('Endpoint Response undefined Headers Object', async () => {
- await runTest('/endpoints/response-undefined-headers-object', {
- 'content-type': 'text/plain;charset=UTF-8',
- });
- });
-
- it('Component Astro Single Cookie Header', async () => {
- await runTest('/astro/component-astro-cookies-single', {
- 'content-type': 'text/html',
- 'set-cookie': 'from1=astro1',
- });
- });
-
- it('Component Astro Multi Cookie Header', async () => {
- await runTest('/astro/component-astro-cookies-multi', {
- 'content-type': 'text/html',
- 'set-cookie': ['from1=astro1', 'from2=astro2'],
- });
- });
-
- it('Component Response Single Cookie Header', async () => {
- await runTest('/astro/component-response-cookies-single', {
- 'content-type': 'text/html',
- 'set-cookie': 'from1=value1',
- });
- });
-
- it('Component Response Multi Cookie Header', async () => {
- await runTest('/astro/component-response-cookies-multi', {
- 'content-type': 'text/html',
- 'set-cookie': ['from1=value1', 'from2=value2'],
- });
- });
-
- it('Component Astro and Response Single Cookie Header', async () => {
- await runTest('/astro/component-astro-response-cookie-single', {
- 'content-type': 'text/html',
- 'set-cookie': ['from1=response1', 'from1=astro1'],
- });
- });
-
- it('Component Astro and Response Multi Cookie Header', async () => {
- await runTest('/astro/component-astro-response-cookie-multi', {
- 'content-type': 'text/html',
- 'set-cookie': ['from1=response1', 'from2=response2', 'from3=astro1', 'from4=astro2'],
- });
- });
-});
-
-async function runTest(url, expectedHeaders) {
- const { handler } = await import('./fixtures/headers/dist/server/entry.mjs');
-
- let { req, res, done } = createRequestAndResponse({
- method: 'GET',
- url,
- });
-
- handler(req, res);
-
- req.send();
-
- await done;
- const headers = res.getHeaders();
-
- assert.deepEqual(headers, expectedHeaders);
-}
diff --git a/packages/integrations/node/test/image.test.js b/packages/integrations/node/test/image.test.js
deleted file mode 100644
index 5303fe37e..000000000
--- a/packages/integrations/node/test/image.test.js
+++ /dev/null
@@ -1,36 +0,0 @@
-import * as assert from 'node:assert/strict';
-import { after, before, describe, it } from 'node:test';
-import nodejs from '../dist/index.js';
-import { loadFixture } from './test-utils.js';
-
-// Temporary skip until we figure out the "Could not find Sharp" issue as `sharp` is bundled
-describe.skip('Image endpoint', () => {
- /** @type {import('./test-utils').Fixture} */
- let fixture;
- let devPreview;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/image/',
- output: 'server',
- adapter: nodejs({ mode: 'standalone' }),
- });
- await fixture.build();
- devPreview = await fixture.preview();
- });
-
- after(async () => {
- await devPreview.stop();
- });
-
- it('it returns images', async () => {
- const res = await fixture.fetch('/');
- assert.equal(res.status, 200);
-
- const resImage = await fixture.fetch(
- '/_image?href=/_astro/some_penguin.97ef5f92.png&w=50&f=webp',
- );
-
- assert.equal(resImage.status, 200);
- });
-});
diff --git a/packages/integrations/node/test/locals.test.js b/packages/integrations/node/test/locals.test.js
deleted file mode 100644
index 6d2776079..000000000
--- a/packages/integrations/node/test/locals.test.js
+++ /dev/null
@@ -1,81 +0,0 @@
-import * as assert from 'node:assert/strict';
-import { before, describe, it } from 'node:test';
-import nodejs from '../dist/index.js';
-import { createRequestAndResponse, loadFixture } from './test-utils.js';
-
-describe('API routes', () => {
- /** @type {import('./test-utils').Fixture} */
- let fixture;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/locals/',
- output: 'server',
- adapter: nodejs({ mode: 'middleware' }),
- });
- await fixture.build();
- });
-
- it('Can use locals added by node middleware', async () => {
- const { handler } = await import('./fixtures/locals/dist/server/entry.mjs');
- let { req, res, text } = createRequestAndResponse({
- url: '/from-node-middleware',
- });
-
- let locals = { foo: 'bar' };
-
- handler(req, res, () => {}, locals);
- req.send();
-
- let html = await text();
-
- assert.equal(html.includes('<h1>bar</h1>'), true);
- });
-
- it('Throws an error when provided non-objects as locals', async () => {
- const { handler } = await import('./fixtures/locals/dist/server/entry.mjs');
- let { req, res, done } = createRequestAndResponse({
- url: '/from-node-middleware',
- });
-
- handler(req, res, undefined, 'locals');
- req.send();
-
- await done;
- assert.equal(res.statusCode, 500);
- });
-
- it('Can use locals added by astro middleware', async () => {
- const { handler } = await import('./fixtures/locals/dist/server/entry.mjs');
-
- const { req, res, text } = createRequestAndResponse({
- url: '/from-astro-middleware',
- });
-
- handler(req, res, () => {});
- req.send();
-
- const html = await text();
-
- assert.equal(html.includes('<h1>baz</h1>'), true);
- });
-
- it('Can access locals in API', async () => {
- const { handler } = await import('./fixtures/locals/dist/server/entry.mjs');
- let { req, res, done } = createRequestAndResponse({
- method: 'POST',
- url: '/api',
- });
-
- let locals = { foo: 'bar' };
-
- handler(req, res, () => {}, locals);
- req.send();
-
- let [buffer] = await done;
-
- let json = JSON.parse(buffer.toString('utf-8'));
-
- assert.equal(json.foo, 'bar');
- });
-});
diff --git a/packages/integrations/node/test/node-middleware.test.js b/packages/integrations/node/test/node-middleware.test.js
deleted file mode 100644
index d1b016a51..000000000
--- a/packages/integrations/node/test/node-middleware.test.js
+++ /dev/null
@@ -1,88 +0,0 @@
-import * as assert from 'node:assert/strict';
-import { after, before, describe, it } from 'node:test';
-import * as cheerio from 'cheerio';
-import express from 'express';
-import nodejs from '../dist/index.js';
-import { loadFixture, waitServerListen } from './test-utils.js';
-
-/**
- * @typedef {import('../../../astro/test/test-utils').Fixture} Fixture
- */
-
-describe('behavior from middleware, standalone', () => {
- /** @type {import('./test-utils').Fixture} */
- let fixture;
- let server;
-
- before(async () => {
- process.env.PRERENDER = false;
- fixture = await loadFixture({
- root: './fixtures/node-middleware/',
- output: 'server',
- adapter: nodejs({ mode: 'standalone' }),
- });
- await fixture.build();
- const { startServer } = await fixture.loadAdapterEntryModule();
- let res = startServer();
- server = res.server;
- await waitServerListen(server.server);
- });
-
- after(async () => {
- await server.stop();
- await fixture.clean();
- delete process.env.PRERENDER;
- });
-
- describe('404', async () => {
- it('when mode is standalone', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/error-page`);
-
- assert.equal(res.status, 404);
-
- const html = await res.text();
- const $ = cheerio.load(html);
-
- const body = $('body');
- assert.equal(body.text().includes('Page does not exist'), true);
- });
- });
-});
-
-describe('behavior from middleware, middleware', () => {
- /** @type {import('./test-utils').Fixture} */
- let fixture;
- let server;
-
- before(async () => {
- process.env.PRERENDER = false;
- fixture = await loadFixture({
- root: './fixtures/node-middleware/',
- output: 'server',
- adapter: nodejs({ mode: 'middleware' }),
- });
- await fixture.build();
- const { handler } = await fixture.loadAdapterEntryModule();
- const app = express();
- app.use(handler);
- server = app.listen(8888);
- });
-
- after(async () => {
- server.close();
- await fixture.clean();
- delete process.env.PRERENDER;
- });
-
- it('when mode is standalone', async () => {
- const res = await fetch(`http://localhost:8888/ssr`);
-
- assert.equal(res.status, 200);
-
- const html = await res.text();
- const $ = cheerio.load(html);
-
- const body = $('body');
- assert.equal(body.text().includes("Here's a random number"), true);
- });
-});
diff --git a/packages/integrations/node/test/prerender-404-500.test.js b/packages/integrations/node/test/prerender-404-500.test.js
deleted file mode 100644
index 2535fcb35..000000000
--- a/packages/integrations/node/test/prerender-404-500.test.js
+++ /dev/null
@@ -1,300 +0,0 @@
-import * as assert from 'node:assert/strict';
-import { after, before, describe, it } from 'node:test';
-import * as cheerio from 'cheerio';
-import nodejs from '../dist/index.js';
-import { loadFixture, waitServerListen } from './test-utils.js';
-
-/**
- * @typedef {import('../../../astro/test/test-utils').Fixture} Fixture
- */
-
-describe('Prerender 404', () => {
- /** @type {import('./test-utils').Fixture} */
- let fixture;
- let server;
-
- describe('With base', async () => {
- before(async () => {
- process.env.PRERENDER = true;
-
- fixture = await loadFixture({
- // inconsequential config that differs between tests
- // to bust cache and prevent modules and their state
- // from being reused
- site: 'https://test.dev/',
- base: '/some-base',
- root: './fixtures/prerender-404-500/',
- output: 'server',
- outDir: './dist/server-with-base',
- build: {
- client: './dist/server-with-base/client',
- server: './dist/server-with-base/server',
- },
- adapter: nodejs({ mode: 'standalone' }),
- });
- await fixture.build();
- const { startServer } = await fixture.loadAdapterEntryModule();
- let res = startServer();
- server = res.server;
- await waitServerListen(server.server);
- });
-
- after(async () => {
- await server.stop();
- await fixture.clean();
- delete process.env.PRERENDER;
- });
-
- it('Can render SSR route', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/static`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'Hello world!');
- });
-
- it('Can handle prerendered 404', async () => {
- const url = `http://${server.host}:${server.port}/some-base/missing`;
- const res1 = await fetch(url);
- const res2 = await fetch(url);
- const res3 = await fetch(url);
-
- assert.equal(res1.status, 404);
- assert.equal(res2.status, 404);
- assert.equal(res3.status, 404);
-
- const html1 = await res1.text();
- const html2 = await res2.text();
- const html3 = await res3.text();
-
- assert.equal(html1, html2);
- assert.equal(html2, html3);
-
- const $ = cheerio.load(html1);
-
- assert.equal($('body').text(), 'Page does not exist');
- });
-
- it(' Can handle prerendered 500 called indirectly', async () => {
- const url = `http://${server.host}:${server.port}/some-base/fivehundred`;
- const response1 = await fetch(url);
- const response2 = await fetch(url);
- const response3 = await fetch(url);
-
- assert.equal(response1.status, 500);
-
- const html1 = await response1.text();
- const html2 = await response2.text();
- const html3 = await response3.text();
-
- assert.equal(html1.includes('Something went wrong'), true);
-
- assert.equal(html1, html2);
- assert.equal(html2, html3);
- });
-
- it('prerendered 500 page includes expected styles', async () => {
- const response = await fetch(`http://${server.host}:${server.port}/some-base/fivehundred`);
- const html = await response.text();
- const $ = cheerio.load(html);
-
- // length will be 0 if the stylesheet does not get included
- assert.equal($('style').length, 1);
- });
- });
-
- describe('Without base', async () => {
- before(async () => {
- process.env.PRERENDER = true;
-
- fixture = await loadFixture({
- // inconsequential config that differs between tests
- // to bust cache and prevent modules and their state
- // from being reused
- site: 'https://test.info/',
- root: './fixtures/prerender-404-500/',
- output: 'server',
- outDir: './dist/server-without-base',
- build: {
- client: './dist/server-without-base/client',
- server: './dist/server-without-base/server',
- },
- adapter: nodejs({ mode: 'standalone' }),
- });
- await fixture.build();
- const { startServer } = await fixture.loadAdapterEntryModule();
- let res = startServer();
- server = res.server;
- await waitServerListen(server.server);
- });
-
- after(async () => {
- await server.stop();
- await fixture.clean();
- delete process.env.PRERENDER;
- });
-
- it('Can render SSR route', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/static`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'Hello world!');
- });
-
- it('Can handle prerendered 404', async () => {
- const url = `http://${server.host}:${server.port}/some-base/missing`;
- const res1 = await fetch(url);
- const res2 = await fetch(url);
- const res3 = await fetch(url);
-
- assert.equal(res1.status, 404);
- assert.equal(res2.status, 404);
- assert.equal(res3.status, 404);
-
- const html1 = await res1.text();
- const html2 = await res2.text();
- const html3 = await res3.text();
-
- assert.equal(html1, html2);
- assert.equal(html2, html3);
-
- const $ = cheerio.load(html1);
-
- assert.equal($('body').text(), 'Page does not exist');
- });
- });
-});
-
-describe('Hybrid 404', () => {
- /** @type {import('./test-utils').Fixture} */
- let fixture;
- let server;
-
- describe('With base', async () => {
- before(async () => {
- process.env.PRERENDER = false;
- fixture = await loadFixture({
- // inconsequential config that differs between tests
- // to bust cache and prevent modules and their state
- // from being reused
- site: 'https://test.com/',
- base: '/some-base',
- root: './fixtures/prerender-404-500/',
- output: 'hybrid',
- outDir: './dist/hybrid-with-base',
- build: {
- client: './dist/hybrid-with-base/client',
- server: './dist/hybrid-with-base/server',
- },
- adapter: nodejs({ mode: 'standalone' }),
- });
- await fixture.build();
- const { startServer } = await fixture.loadAdapterEntryModule();
- let res = startServer();
- server = res.server;
- await waitServerListen(server.server);
- });
-
- after(async () => {
- await server.stop();
- await fixture.clean();
- delete process.env.PRERENDER;
- });
-
- it('Can render SSR route', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/static`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'Hello world!');
- });
-
- it('Can handle prerendered 404', async () => {
- const url = `http://${server.host}:${server.port}/some-base/missing`;
- const res1 = await fetch(url);
- const res2 = await fetch(url);
- const res3 = await fetch(url);
-
- assert.equal(res1.status, 404);
- assert.equal(res2.status, 404);
- assert.equal(res3.status, 404);
-
- const html1 = await res1.text();
- const html2 = await res2.text();
- const html3 = await res3.text();
-
- assert.equal(html1, html2);
- assert.equal(html2, html3);
-
- const $ = cheerio.load(html1);
-
- assert.equal($('body').text(), 'Page does not exist');
- });
- });
-
- describe('Without base', async () => {
- before(async () => {
- process.env.PRERENDER = false;
- fixture = await loadFixture({
- // inconsequential config that differs between tests
- // to bust cache and prevent modules and their state
- // from being reused
- site: 'https://test.net/',
- root: './fixtures/prerender-404-500/',
- output: 'hybrid',
- outDir: './dist/hybrid-without-base',
- build: {
- client: './dist/hybrid-without-base/client',
- server: './dist/hybrid-without-base/server',
- },
- adapter: nodejs({ mode: 'standalone' }),
- });
- await fixture.build();
- const { startServer } = await fixture.loadAdapterEntryModule();
- let res = startServer();
- server = res.server;
- await waitServerListen(server.server);
- });
-
- after(async () => {
- await server.stop();
- await fixture.clean();
- delete process.env.PRERENDER;
- });
-
- it('Can render SSR route', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/static`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'Hello world!');
- });
-
- it('Can handle prerendered 404', async () => {
- const url = `http://${server.host}:${server.port}/missing`;
- const res1 = await fetch(url);
- const res2 = await fetch(url);
- const res3 = await fetch(url);
-
- assert.equal(res1.status, 404);
- assert.equal(res2.status, 404);
- assert.equal(res3.status, 404);
-
- const html1 = await res1.text();
- const html2 = await res2.text();
- const html3 = await res3.text();
-
- assert.equal(html1, html2);
- assert.equal(html2, html3);
-
- const $ = cheerio.load(html1);
-
- assert.equal($('body').text(), 'Page does not exist');
- });
- });
-});
diff --git a/packages/integrations/node/test/prerender.test.js b/packages/integrations/node/test/prerender.test.js
deleted file mode 100644
index e699a1b3c..000000000
--- a/packages/integrations/node/test/prerender.test.js
+++ /dev/null
@@ -1,438 +0,0 @@
-import * as assert from 'node:assert/strict';
-import { after, before, describe, it } from 'node:test';
-import * as cheerio from 'cheerio';
-import nodejs from '../dist/index.js';
-import { loadFixture, waitServerListen } from './test-utils.js';
-
-/**
- * @typedef {import('../../../astro/test/test-utils').Fixture} Fixture
- */
-
-describe('Prerendering', () => {
- /** @type {import('./test-utils').Fixture} */
- let fixture;
- let server;
-
- describe('With base', async () => {
- before(async () => {
- process.env.PRERENDER = true;
-
- fixture = await loadFixture({
- base: '/some-base',
- root: './fixtures/prerender/',
- output: 'server',
- outDir: './dist/with-base',
- build: {
- client: './dist/with-base/client',
- server: './dist/with-base/server',
- },
- adapter: nodejs({ mode: 'standalone' }),
- });
- await fixture.build();
- const { startServer } = await fixture.loadAdapterEntryModule();
- let res = startServer();
- server = res.server;
- await waitServerListen(server.server);
- });
-
- after(async () => {
- await server.stop();
- await fixture.clean();
- delete process.env.PRERENDER;
- });
-
- it('Can render SSR route', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/one`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- });
-
- it('Can render prerendered route', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/two`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'Two');
- assert.ok(fixture.pathExists('/client/two/index.html'));
- });
-
- it('Can render prerendered route with redirect and query params', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/two?foo=bar`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'Two');
- });
-
- it('Can render prerendered route with query params', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/two/?foo=bar`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'Two');
- });
-
- it('Can render prerendered route without trailing slash', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/two`, {
- redirect: 'manual',
- });
- const html = await res.text();
- const $ = cheerio.load(html);
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'Two');
- });
- });
-
- describe('Without base', async () => {
- before(async () => {
- process.env.PRERENDER = true;
-
- fixture = await loadFixture({
- root: './fixtures/prerender/',
- output: 'server',
- outDir: './dist/without-base',
- build: {
- client: './dist/without-base/client',
- server: './dist/without-base/server',
- },
- adapter: nodejs({ mode: 'standalone' }),
- });
- await fixture.build();
- const { startServer } = await fixture.loadAdapterEntryModule();
- let res = startServer();
- server = res.server;
- await waitServerListen(server.server);
- });
-
- after(async () => {
- await server.stop();
- await fixture.clean();
- delete process.env.PRERENDER;
- });
-
- it('Can render SSR route', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/one`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- });
-
- it('Can render prerendered route', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/two`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'Two');
- assert.ok(fixture.pathExists('/client/two/index.html'));
- });
-
- it('Can render prerendered route with redirect and query params', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/two?foo=bar`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'Two');
- });
-
- it('Can render prerendered route with query params', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/two/?foo=bar`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'Two');
- });
- });
-
- describe('Via integration', () => {
- before(async () => {
- process.env.PRERENDER = false;
- fixture = await loadFixture({
- root: './fixtures/prerender/',
- output: 'server',
- outDir: './dist/via-integration',
- build: {
- client: './dist/via-integration/client',
- server: './dist/via-integration/server',
- },
- adapter: nodejs({ mode: 'standalone' }),
- integrations: [
- {
- name: 'test',
- hooks: {
- 'astro:route:setup': ({ route }) => {
- if (route.component.endsWith('two.astro')) {
- route.prerender = true;
- }
- },
- },
- },
- ],
- });
- await fixture.build();
- const { startServer } = await fixture.loadAdapterEntryModule();
- let res = startServer();
- server = res.server;
- await waitServerListen(server.server);
- });
-
- after(async () => {
- await server.stop();
- await fixture.clean();
- delete process.env.PRERENDER;
- });
-
- it('Can render SSR route', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/one`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- });
-
- it('Can render prerendered route', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/two`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'Two');
- assert.ok(fixture.pathExists('/client/two/index.html'));
- });
- });
-
- describe('Dev', () => {
- let devServer;
-
- before(async () => {
- process.env.PRERENDER = true;
-
- fixture = await loadFixture({
- root: './fixtures/prerender/',
- output: 'server',
- outDir: './dist/dev',
- build: {
- client: './dist/dev/client',
- server: './dist/dev/server',
- },
- adapter: nodejs({ mode: 'standalone' }),
- });
- devServer = await fixture.startDevServer();
- });
-
- after(async () => {
- await devServer.stop();
- delete process.env.PRERENDER;
- });
-
- it('Can render SSR route', async () => {
- const res = await fixture.fetch(`/one`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- });
-
- it('Can render prerendered route', async () => {
- const res = await fixture.fetch(`/two`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'Two');
- });
- });
-});
-
-describe('Hybrid rendering', () => {
- /** @type {import('./test-utils').Fixture} */
- let fixture;
- let server;
-
- describe('With base', () => {
- before(async () => {
- process.env.PRERENDER = false;
- fixture = await loadFixture({
- base: '/some-base',
- root: './fixtures/prerender/',
- output: 'hybrid',
- outDir: './dist/hybrid-with-base',
- build: {
- client: './dist/hybrid-with-base/client',
- server: './dist/hybrid-with-base/server',
- },
- adapter: nodejs({ mode: 'standalone' }),
- });
- await fixture.build();
- const { startServer } = await fixture.loadAdapterEntryModule();
- let res = startServer();
- server = res.server;
- await waitServerListen(server.server);
- });
-
- after(async () => {
- await server.stop();
- await fixture.clean();
- delete process.env.PRERENDER;
- });
-
- it('Can render SSR route', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/two`);
- const html = await res.text();
- const $ = cheerio.load(html);
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'Two');
- });
-
- it('Can render prerendered route', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/one`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- assert.ok(fixture.pathExists('/client/one/index.html'));
- });
-
- it('Can render prerendered route with redirect and query params', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/one?foo=bar`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- });
-
- it('Can render prerendered route with query params', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/one/?foo=bar`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- });
-
- it('Can render prerendered route without trailing slash', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/one`, {
- redirect: 'manual',
- });
- const html = await res.text();
- const $ = cheerio.load(html);
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- });
- });
-
- describe('Without base', () => {
- before(async () => {
- process.env.PRERENDER = false;
- fixture = await loadFixture({
- root: './fixtures/prerender/',
- output: 'hybrid',
- outDir: './dist/hybrid-without-base',
- build: {
- client: './dist/hybrid-without-base/client',
- server: './dist/hybrid-without-base/server',
- },
- adapter: nodejs({ mode: 'standalone' }),
- });
- await fixture.build();
- const { startServer } = await fixture.loadAdapterEntryModule();
- let res = startServer();
- server = res.server;
- await waitServerListen(server.server);
- });
-
- after(async () => {
- await server.stop();
- await fixture.clean();
- delete process.env.PRERENDER;
- });
-
- it('Can render SSR route', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/two`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'Two');
- });
-
- it('Can render prerendered route', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/one`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- assert.ok(fixture.pathExists('/client/one/index.html'));
- });
-
- it('Can render prerendered route with redirect and query params', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/one?foo=bar`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- });
-
- it('Can render prerendered route with query params', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/one/?foo=bar`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- });
- });
-
- describe('Shared modules', () => {
- before(async () => {
- process.env.PRERENDER = false;
-
- fixture = await loadFixture({
- root: './fixtures/prerender/',
- output: 'hybrid',
- outDir: './dist/hybrid-shared-modules',
- build: {
- client: './dist/hybrid-shared-modules/client',
- server: './dist/hybrid-shared-modules/server',
- },
- adapter: nodejs({ mode: 'standalone' }),
- });
- await fixture.build();
- const { startServer } = await fixture.loadAdapterEntryModule();
- let res = startServer();
- server = res.server;
- await waitServerListen(server.server);
- });
-
- after(async () => {
- await server.stop();
- await fixture.clean();
- delete process.env.PRERENDER;
- });
-
- it('Can render SSR route', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/third`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'shared');
- });
- });
-});
diff --git a/packages/integrations/node/test/preview-headers.test.js b/packages/integrations/node/test/preview-headers.test.js
deleted file mode 100644
index 3fd9d0508..000000000
--- a/packages/integrations/node/test/preview-headers.test.js
+++ /dev/null
@@ -1,38 +0,0 @@
-import * as assert from 'node:assert/strict';
-import { after, before, describe, it } from 'node:test';
-import nodejs from '../dist/index.js';
-import { loadFixture } from './test-utils.js';
-
-describe('Astro preview headers', () => {
- /** @type {import('./test-utils').Fixture} */
- let fixture;
- let devPreview;
- const headers = {
- astro: 'test',
- };
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/preview-headers/',
- output: 'server',
- adapter: nodejs({ mode: 'standalone' }),
- server: {
- headers,
- },
- });
- await fixture.build();
- devPreview = await fixture.preview();
- });
-
- after(async () => {
- await devPreview.stop();
- });
-
- describe('Preview Headers', () => {
- it('returns custom headers for valid URLs', async () => {
- const result = await fixture.fetch('/');
- assert.equal(result.status, 200);
- assert.equal(Object.fromEntries(result.headers).astro, headers.astro);
- });
- });
-});
diff --git a/packages/integrations/node/test/server-host.test.js b/packages/integrations/node/test/server-host.test.js
deleted file mode 100644
index facd32d47..000000000
--- a/packages/integrations/node/test/server-host.test.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import * as assert from 'node:assert/strict';
-import { describe, it } from 'node:test';
-import { hostOptions } from '../dist/standalone.js';
-
-describe('host', () => {
- it('returns "0.0.0.0" when host is true', () => {
- const options = { host: true };
- assert.equal(hostOptions(options.host), '0.0.0.0');
- });
-
- it('returns "localhost" when host is false', () => {
- const options = { host: false };
- assert.equal(hostOptions(options.host), 'localhost');
- });
-
- it('returns the value of host when host is a string', () => {
- const host = '1.1.1.1';
- const options = { host };
- assert.equal(hostOptions(options.host), host);
- });
-});
diff --git a/packages/integrations/node/test/test-utils.js b/packages/integrations/node/test/test-utils.js
deleted file mode 100644
index 10faba5cf..000000000
--- a/packages/integrations/node/test/test-utils.js
+++ /dev/null
@@ -1,81 +0,0 @@
-import { EventEmitter } from 'node:events';
-import httpMocks from 'node-mocks-http';
-import { loadFixture as baseLoadFixture } from '../../../astro/test/test-utils.js';
-
-process.env.ASTRO_NODE_AUTOSTART = 'disabled';
-process.env.ASTRO_NODE_LOGGING = 'disabled';
-/**
- * @typedef {import('../../../astro/test/test-utils').Fixture} Fixture
- */
-
-export function loadFixture(inlineConfig) {
- if (!inlineConfig?.root) throw new Error("Must provide { root: './fixtures/...' }");
-
- // resolve the relative root (i.e. "./fixtures/tailwindcss") to a full filepath
- // without this, the main `loadFixture` helper will resolve relative to `packages/astro/test`
- return baseLoadFixture({
- ...inlineConfig,
- root: new URL(inlineConfig.root, import.meta.url).toString(),
- });
-}
-
-export function createRequestAndResponse(reqOptions) {
- let req = httpMocks.createRequest(reqOptions);
-
- let res = httpMocks.createResponse({
- eventEmitter: EventEmitter,
- req,
- });
-
- let done = toPromise(res);
-
- // Get the response as text
- const text = async () => {
- let chunks = await done;
- return buffersToString(chunks);
- };
-
- return { req, res, done, text };
-}
-
-export function toPromise(res) {
- return new Promise((resolve) => {
- // node-mocks-http doesn't correctly handle non-Buffer typed arrays,
- // so override the write method to fix it.
- const write = res.write;
- res.write = function (data, encoding) {
- if (ArrayBuffer.isView(data) && !Buffer.isBuffer(data)) {
- data = Buffer.from(data.buffer);
- }
- return write.call(this, data, encoding);
- };
- res.on('end', () => {
- let chunks = res._getChunks();
- resolve(chunks);
- });
- });
-}
-
-export function buffersToString(buffers) {
- let decoder = new TextDecoder();
- let str = '';
- for (const buffer of buffers) {
- str += decoder.decode(buffer);
- }
- return str;
-}
-
-export function waitServerListen(server) {
- return new Promise((resolve, reject) => {
- function onListen() {
- server.off('error', onError);
- resolve();
- }
- function onError(error) {
- server.off('listening', onListen);
- reject(error);
- }
- server.once('listening', onListen);
- server.once('error', onError);
- });
-}
diff --git a/packages/integrations/node/test/trailing-slash.test.js b/packages/integrations/node/test/trailing-slash.test.js
deleted file mode 100644
index 9ea8fcddd..000000000
--- a/packages/integrations/node/test/trailing-slash.test.js
+++ /dev/null
@@ -1,452 +0,0 @@
-import * as assert from 'node:assert/strict';
-import { after, before, describe, it } from 'node:test';
-import * as cheerio from 'cheerio';
-import nodejs from '../dist/index.js';
-import { loadFixture, waitServerListen } from './test-utils.js';
-
-/**
- * @typedef {import('../../../astro/test/test-utils').Fixture} Fixture
- */
-
-describe('Trailing slash', () => {
- /** @type {import('./test-utils').Fixture} */
- let fixture;
- let server;
- describe('Always', async () => {
- describe('With base', async () => {
- before(async () => {
- process.env.ASTRO_NODE_AUTOSTART = 'disabled';
- process.env.PRERENDER = true;
-
- fixture = await loadFixture({
- root: './fixtures/trailing-slash/',
- base: '/some-base',
- output: 'hybrid',
- trailingSlash: 'always',
- outDir: './dist/always-with-base',
- build: {
- client: './dist/always-with-base/client',
- server: './dist/always-with-base/server',
- },
- adapter: nodejs({ mode: 'standalone' }),
- });
- await fixture.build();
- const { startServer } = await fixture.loadAdapterEntryModule();
- let res = startServer();
- server = res.server;
- await waitServerListen(server.server);
- });
-
- after(async () => {
- await server.stop();
- await fixture.clean();
- delete process.env.PRERENDER;
- });
-
- it('Can render prerendered base route', async () => {
- const res = await fetch(`http://${server.host}:${server.port}`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'Index');
- });
-
- it('Can render prerendered route with redirect', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/one`, {
- redirect: 'manual',
- });
- assert.equal(res.status, 301);
- assert.equal(res.headers.get('location'), '/some-base/one/');
- });
-
- it('Can render prerendered route with redirect and query params', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/one?foo=bar`, {
- redirect: 'manual',
- });
- assert.equal(res.status, 301);
- assert.equal(res.headers.get('location'), '/some-base/one/?foo=bar');
- });
-
- it('Can render prerendered route with query params', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/one/?foo=bar`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- });
-
- it('Does not add trailing slash to subresource urls', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/one.css`);
- const css = await res.text();
-
- assert.equal(res.status, 200);
- assert.equal(css, 'h1 { color: red; }\n');
- });
- });
- describe('Without base', async () => {
- before(async () => {
- process.env.ASTRO_NODE_AUTOSTART = 'disabled';
- process.env.PRERENDER = true;
-
- fixture = await loadFixture({
- root: './fixtures/trailing-slash/',
- output: 'hybrid',
- trailingSlash: 'always',
- outDir: './dist/always-without-base',
- build: {
- client: './dist/always-without-base/client',
- server: './dist/always-without-base/server',
- },
- adapter: nodejs({ mode: 'standalone' }),
- });
- await fixture.build();
- const { startServer } = await fixture.loadAdapterEntryModule();
- let res = startServer();
- server = res.server;
- await waitServerListen(server.server);
- });
-
- after(async () => {
- await server.stop();
- await fixture.clean();
- delete process.env.PRERENDER;
- });
-
- it('Can render prerendered base route', async () => {
- const res = await fetch(`http://${server.host}:${server.port}`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'Index');
- });
-
- it('Can render prerendered route with redirect', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/one`, {
- redirect: 'manual',
- });
- assert.equal(res.status, 301);
- assert.equal(res.headers.get('location'), '/one/');
- });
-
- it('Can render prerendered route with redirect and query params', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/one?foo=bar`, {
- redirect: 'manual',
- });
- assert.equal(res.status, 301);
- assert.equal(res.headers.get('location'), '/one/?foo=bar');
- });
-
- it('Can render prerendered route with query params', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/one/?foo=bar`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- });
-
- it('Does not add trailing slash to subresource urls', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/one.css`);
- const css = await res.text();
-
- assert.equal(res.status, 200);
- assert.equal(css, 'h1 { color: red; }\n');
- });
- });
- });
- describe('Never', async () => {
- describe('With base', async () => {
- before(async () => {
- process.env.ASTRO_NODE_AUTOSTART = 'disabled';
- process.env.PRERENDER = true;
-
- fixture = await loadFixture({
- root: './fixtures/trailing-slash/',
- base: '/some-base',
- output: 'hybrid',
- trailingSlash: 'never',
- outDir: './dist/never-with-base',
- build: {
- client: './dist/never-with-base/client',
- server: './dist/never-with-base/server',
- },
- adapter: nodejs({ mode: 'standalone' }),
- });
- await fixture.build();
- const { startServer } = await fixture.loadAdapterEntryModule();
- let res = startServer();
- server = res.server;
- await waitServerListen(server.server);
- });
-
- after(async () => {
- await server.stop();
- await fixture.clean();
- delete process.env.PRERENDER;
- });
-
- it('Can render prerendered base route', async () => {
- const res = await fetch(`http://${server.host}:${server.port}`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'Index');
- });
-
- it('Can render prerendered route with redirect', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/one/`, {
- redirect: 'manual',
- });
- assert.equal(res.status, 301);
- assert.equal(res.headers.get('location'), '/some-base/one');
- });
-
- it('Can render prerendered route with redirect and query params', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/one/?foo=bar`, {
- redirect: 'manual',
- });
-
- assert.equal(res.status, 301);
- assert.equal(res.headers.get('location'), '/some-base/one?foo=bar');
- });
-
- it('Can render prerendered route with query params', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/one?foo=bar`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- });
- });
- describe('Without base', async () => {
- before(async () => {
- process.env.ASTRO_NODE_AUTOSTART = 'disabled';
- process.env.PRERENDER = true;
-
- fixture = await loadFixture({
- root: './fixtures/trailing-slash/',
- output: 'hybrid',
- trailingSlash: 'never',
- outDir: './dist/never-without-base',
- build: {
- client: './dist/never-without-base/client',
- server: './dist/never-without-base/server',
- },
- adapter: nodejs({ mode: 'standalone' }),
- });
- await fixture.build();
- const { startServer } = await fixture.loadAdapterEntryModule();
- let res = startServer();
- server = res.server;
- await waitServerListen(server.server);
- });
-
- after(async () => {
- await server.stop();
- await fixture.clean();
- delete process.env.PRERENDER;
- });
-
- it('Can render prerendered base route', async () => {
- const res = await fetch(`http://${server.host}:${server.port}`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'Index');
- });
-
- it('Can render prerendered route with redirect', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/one/`, {
- redirect: 'manual',
- });
- assert.equal(res.status, 301);
- assert.equal(res.headers.get('location'), '/one');
- });
-
- it('Can render prerendered route with redirect and query params', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/one/?foo=bar`, {
- redirect: 'manual',
- });
-
- assert.equal(res.status, 301);
- assert.equal(res.headers.get('location'), '/one?foo=bar');
- });
-
- it('Can render prerendered route and query params', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/one?foo=bar`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- });
- });
- });
- describe('Ignore', async () => {
- describe('With base', async () => {
- before(async () => {
- process.env.ASTRO_NODE_AUTOSTART = 'disabled';
- process.env.PRERENDER = true;
-
- fixture = await loadFixture({
- root: './fixtures/trailing-slash/',
- base: '/some-base',
- output: 'hybrid',
- trailingSlash: 'ignore',
- outDir: './dist/ignore-with-base',
- build: {
- client: './dist/ignore-with-base/client',
- server: './dist/ignore-with-base/server',
- },
- adapter: nodejs({ mode: 'standalone' }),
- });
- await fixture.build();
- const { startServer } = await fixture.loadAdapterEntryModule();
- let res = startServer();
- server = res.server;
- await waitServerListen(server.server);
- });
-
- after(async () => {
- await server.stop();
- await fixture.clean();
- delete process.env.PRERENDER;
- });
-
- it('Can render prerendered base route', async () => {
- const res = await fetch(`http://${server.host}:${server.port}`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'Index');
- });
-
- it('Can render prerendered route with slash', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/one/`, {
- redirect: 'manual',
- });
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- });
-
- it('Can render prerendered route without slash', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/one`, {
- redirect: 'manual',
- });
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- });
-
- it('Can render prerendered route with slash and query params', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/one/?foo=bar`, {
- redirect: 'manual',
- });
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- });
-
- it('Can render prerendered route without slash and with query params', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/some-base/one?foo=bar`, {
- redirect: 'manual',
- });
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- });
- });
- describe('Without base', async () => {
- before(async () => {
- process.env.ASTRO_NODE_AUTOSTART = 'disabled';
- process.env.PRERENDER = true;
-
- fixture = await loadFixture({
- root: './fixtures/trailing-slash/',
- output: 'hybrid',
- trailingSlash: 'ignore',
- outDir: './dist/ignore-without-base',
- build: {
- client: './dist/ignore-without-base/client',
- server: './dist/ignore-without-base/server',
- },
- adapter: nodejs({ mode: 'standalone' }),
- });
- await fixture.build();
- const { startServer } = await fixture.loadAdapterEntryModule();
- let res = startServer();
- server = res.server;
- await waitServerListen(server.server);
- });
-
- after(async () => {
- await server.stop();
- await fixture.clean();
- delete process.env.PRERENDER;
- });
-
- it('Can render prerendered base route', async () => {
- const res = await fetch(`http://${server.host}:${server.port}`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'Index');
- });
-
- it('Can render prerendered route with slash', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/one/`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- });
-
- it('Can render prerendered route without slash', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/one`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- });
-
- it('Can render prerendered route with slash and query params', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/one/?foo=bar`, {
- redirect: 'manual',
- });
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- });
-
- it('Can render prerendered route without slash and with query params', async () => {
- const res = await fetch(`http://${server.host}:${server.port}/one?foo=bar`);
- const html = await res.text();
- const $ = cheerio.load(html);
-
- assert.equal(res.status, 200);
- assert.equal($('h1').text(), 'One');
- });
- });
- });
-});
diff --git a/packages/integrations/node/test/url.test.js b/packages/integrations/node/test/url.test.js
deleted file mode 100644
index 77ca45836..000000000
--- a/packages/integrations/node/test/url.test.js
+++ /dev/null
@@ -1,115 +0,0 @@
-import * as assert from 'node:assert/strict';
-import { before, describe, it } from 'node:test';
-import { TLSSocket } from 'node:tls';
-import * as cheerio from 'cheerio';
-import nodejs from '../dist/index.js';
-import { createRequestAndResponse, loadFixture } from './test-utils.js';
-
-describe('URL', () => {
- /** @type {import('./test-utils.js').Fixture} */
- let fixture;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/url/',
- output: 'server',
- adapter: nodejs({ mode: 'standalone' }),
- });
- await fixture.build();
- });
-
- it('return http when non-secure', async () => {
- const { handler } = await import('./fixtures/url/dist/server/entry.mjs');
- let { req, res, text } = createRequestAndResponse({
- url: '/',
- });
-
- handler(req, res);
- req.send();
-
- const html = await text();
- assert.equal(html.includes('http:'), true);
- });
-
- it('return https when secure', async () => {
- const { handler } = await import('./fixtures/url/dist/server/entry.mjs');
- let { req, res, text } = createRequestAndResponse({
- socket: new TLSSocket(),
- url: '/',
- });
-
- handler(req, res);
- req.send();
-
- const html = await text();
- assert.equal(html.includes('https:'), true);
- });
-
- it('return http when the X-Forwarded-Proto header is set to http', async () => {
- const { handler } = await import('./fixtures/url/dist/server/entry.mjs');
- let { req, res, text } = createRequestAndResponse({
- headers: { 'X-Forwarded-Proto': 'http' },
- url: '/',
- });
-
- handler(req, res);
- req.send();
-
- const html = await text();
- assert.equal(html.includes('http:'), true);
- });
-
- it('return https when the X-Forwarded-Proto header is set to https', async () => {
- const { handler } = await import('./fixtures/url/dist/server/entry.mjs');
- let { req, res, text } = createRequestAndResponse({
- headers: { 'X-Forwarded-Proto': 'https' },
- url: '/',
- });
-
- handler(req, res);
- req.send();
-
- const html = await text();
- assert.equal(html.includes('https:'), true);
- });
-
- it('includes forwarded host and port in the url', async () => {
- const { handler } = await import('./fixtures/url/dist/server/entry.mjs');
- let { req, res, text } = createRequestAndResponse({
- headers: {
- 'X-Forwarded-Proto': 'https',
- 'X-Forwarded-Host': 'abc.xyz',
- 'X-Forwarded-Port': '444',
- },
- url: '/',
- });
-
- handler(req, res);
- req.send();
-
- const html = await text();
- const $ = cheerio.load(html);
-
- assert.equal($('body').text(), 'https://abc.xyz:444/');
- });
-
- it('accepts port in forwarded host and forwarded port', async () => {
- const { handler } = await import('./fixtures/url/dist/server/entry.mjs');
- let { req, res, text } = createRequestAndResponse({
- headers: {
- 'X-Forwarded-Proto': 'https',
- 'X-Forwarded-Host': 'abc.xyz:444',
- 'X-Forwarded-Port': '444',
- },
- url: '/',
- });
-
- handler(req, res);
- req.send();
-
- const html = await text();
- const $ = cheerio.load(html);
-
- assert.equal($('body').text(), 'https://abc.xyz:444/');
- });
-});
diff --git a/packages/integrations/node/test/well-known-locations.test.js b/packages/integrations/node/test/well-known-locations.test.js
deleted file mode 100644
index 0951d6c27..000000000
--- a/packages/integrations/node/test/well-known-locations.test.js
+++ /dev/null
@@ -1,46 +0,0 @@
-import * as assert from 'node:assert/strict';
-import { after, before, describe, it } from 'node:test';
-import nodejs from '../dist/index.js';
-import { loadFixture } from './test-utils.js';
-
-describe('test URIs beginning with a dot', () => {
- /** @type {import('./test-utils').Fixture} */
- let fixture;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/well-known-locations/',
- output: 'server',
- adapter: nodejs({ mode: 'standalone' }),
- });
- await fixture.build();
- });
-
- describe('can load well-known URIs', async () => {
- let devPreview;
-
- before(async () => {
- devPreview = await fixture.preview();
- });
-
- after(async () => {
- await devPreview.stop();
- });
-
- it('can load a valid well-known URI', async () => {
- const res = await fixture.fetch('/.well-known/apple-app-site-association');
-
- assert.equal(res.status, 200);
-
- const json = await res.json();
-
- assert.notEqual(json.applinks, {});
- });
-
- it('cannot load a dot folder that is not a well-known URI', async () => {
- const res = await fixture.fetch('/.hidden/file.json');
-
- assert.equal(res.status, 404);
- });
- });
-});
diff --git a/packages/integrations/node/tsconfig.json b/packages/integrations/node/tsconfig.json
deleted file mode 100644
index 1504b4b6d..000000000
--- a/packages/integrations/node/tsconfig.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "extends": "../../../tsconfig.base.json",
- "include": ["src"],
- "compilerOptions": {
- "outDir": "./dist"
- }
-}
diff --git a/packages/integrations/preact/package.json b/packages/integrations/preact/package.json
index d7fb6b47a..31006ab70 100644
--- a/packages/integrations/preact/package.json
+++ b/packages/integrations/preact/package.json
@@ -40,7 +40,7 @@
"@preact/preset-vite": "2.8.2",
"@preact/signals": "^1.3.0",
"babel-plugin-transform-hook-names": "^1.0.2",
- "preact-render-to-string": "^6.5.9"
+ "preact-render-to-string": "^6.5.10"
},
"devDependencies": {
"astro": "workspace:*",
diff --git a/packages/integrations/react/package.json b/packages/integrations/react/package.json
index 4e7901bff..4f45a472d 100644
--- a/packages/integrations/react/package.json
+++ b/packages/integrations/react/package.json
@@ -59,7 +59,7 @@
"ultrahtml": "^1.5.3"
},
"devDependencies": {
- "@types/react": "^18.3.4",
+ "@types/react": "^18.3.5",
"@types/react-dom": "^18.3.0",
"astro": "workspace:*",
"astro-scripts": "workspace:*",
diff --git a/packages/integrations/sitemap/package.json b/packages/integrations/sitemap/package.json
index f7f3223ea..b48e97469 100644
--- a/packages/integrations/sitemap/package.json
+++ b/packages/integrations/sitemap/package.json
@@ -38,7 +38,7 @@
"zod": "^3.23.8"
},
"devDependencies": {
- "@astrojs/node": "workspace:*",
+ "@astrojs/node": "^8.3.3",
"astro": "workspace:*",
"astro-scripts": "workspace:*",
"xml2js": "0.6.2"
diff --git a/packages/integrations/tailwind/package.json b/packages/integrations/tailwind/package.json
index 242989272..ce895a84d 100644
--- a/packages/integrations/tailwind/package.json
+++ b/packages/integrations/tailwind/package.json
@@ -34,7 +34,7 @@
},
"dependencies": {
"autoprefixer": "^10.4.20",
- "postcss": "^8.4.41",
+ "postcss": "^8.4.43",
"postcss-load-config": "^4.0.2"
},
"devDependencies": {
diff --git a/packages/integrations/vercel/CHANGELOG.md b/packages/integrations/vercel/CHANGELOG.md
deleted file mode 100644
index 6250bfcc6..000000000
--- a/packages/integrations/vercel/CHANGELOG.md
+++ /dev/null
@@ -1,1519 +0,0 @@
-# @astrojs/vercel
-
-## 8.0.0-alpha.1
-
-### Major Changes
-
-- [#11679](https://github.com/withastro/astro/pull/11679) [`ea71b90`](https://github.com/withastro/astro/commit/ea71b90c9c08ddd1d3397c78e2e273fb799f7dbd) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Adds stable support for `astro:env`
-
-- [#11770](https://github.com/withastro/astro/pull/11770) [`cfa6a47`](https://github.com/withastro/astro/commit/cfa6a47ac7a541f99fdad46a68d0cca6e5816cd5) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Removed support for the Squoosh image service. As the underlying library `libsquoosh` is no longer maintained, and the image service sees very little usage we have decided to remove it from Astro.
-
- Our recommendation is to use the base Sharp image service, which is more powerful, faster, and more actively maintained.
-
- ```diff
- - import { squooshImageService } from "astro/config";
- import { defineConfig } from "astro/config";
-
- export default defineConfig({
- - image: {
- - service: squooshImageService()
- - }
- });
- ```
-
- If you are using this service, and cannot migrate to the base Sharp image service, a third-party extraction of the previous service is available here: https://github.com/Princesseuh/astro-image-service-squoosh
-
-### Patch Changes
-
-- [#11783](https://github.com/withastro/astro/pull/11783) [`fc81b01`](https://github.com/withastro/astro/commit/fc81b01bcdd43646bcc615b16bf0400a646445c8) Thanks [@matthewp](https://github.com/matthewp)! - Prevent race condition with Node 18
-
- Using Node 18 there can be a race condition where polyfill for the `crypto` global is not applied in time. This change ensures the polyfills run first.
-
-## 8.0.0-alpha.0
-
-### Major Changes
-
-- [#11714](https://github.com/withastro/astro/pull/11714) [`8a53517`](https://github.com/withastro/astro/commit/8a5351737d6a14fc55f1dafad8f3b04079e81af6) Thanks [@matthewp](https://github.com/matthewp)! - Remove support for functionPerRoute
-
- This change removes support for the `functionPerRoute` option both in Astro and `@astrojs/vercel`.
-
- This option made it so that each route got built as separate entrypoints so that they could be loaded as separate functions. The hope was that by doing this it would decrease the size of each function. However in practice routes use most of the same code, and increases in function size limitations made the potential upsides less important.
-
- Additionally there are downsides to functionPerRoute, such as hitting limits on the number of functions per project. The feature also never worked with some Astro features like i18n domains and request rewriting.
-
- Given this, the feature has been removed from Astro.
-
-### Patch Changes
-
-- Updated dependencies [[`b6fbdaa`](https://github.com/withastro/astro/commit/b6fbdaa94a9ecec706a99e1938fbf5cd028c72e0), [`89bab1e`](https://github.com/withastro/astro/commit/89bab1e70786123fbe933a9d7a1b80c9334dcc5f), [`d74617c`](https://github.com/withastro/astro/commit/d74617cbd3278feba05909ec83db2d73d57a153e), [`e90f559`](https://github.com/withastro/astro/commit/e90f5593d23043579611452a84b9e18ad2407ef9), [`2df49a6`](https://github.com/withastro/astro/commit/2df49a6fb4f6d92fe45f7429430abe63defeacd6), [`8a53517`](https://github.com/withastro/astro/commit/8a5351737d6a14fc55f1dafad8f3b04079e81af6)]:
- - astro@5.0.0-alpha.0
-
-## 7.8.0
-
-### Minor Changes
-
-- [#11728](https://github.com/withastro/astro/pull/11728) [`5ea02b1`](https://github.com/withastro/astro/commit/5ea02b12fdb9b8ca45b1229bb9d04bc3d1270e0f) Thanks [@matthewp](https://github.com/matthewp)! - Deprecates the `functionPerRoute` option
-
- This option is now deprecated, and will be removed entirely in Astro v5.0. We suggest removing this option from your configuration as soon as you are able to:
-
- ```diff
- import { defineConfig } from 'astro/config';
- import vercel from '@astrojs/vercel/serverless';
-
- export default defineConfig({
- // ...
- output: 'server',
- adapter: vercel({
- - functionPerRoute: true,
- }),
- });
- ```
-
-### Patch Changes
-
-- [#11783](https://github.com/withastro/astro/pull/11783) [`fc81b01`](https://github.com/withastro/astro/commit/fc81b01bcdd43646bcc615b16bf0400a646445c8) Thanks [@matthewp](https://github.com/matthewp)! - Prevent race condition with Node 18
-
- Using Node 18 there can be a race condition where polyfill for the `crypto` global is not applied in time. This change ensures the polyfills run first.
-
-## 7.7.2
-
-### Patch Changes
-
-- [#11323](https://github.com/withastro/astro/pull/11323) [`41064ce`](https://github.com/withastro/astro/commit/41064cee78c1cccd428f710a24c483aeb275fd95) Thanks [@ascorbic](https://github.com/ascorbic)! - Extracts fs helpers into shared internal-helpers module
-
-- [#11296](https://github.com/withastro/astro/pull/11296) [`5848d97`](https://github.com/withastro/astro/commit/5848d9786768d1290de982670bcc7773280ef08d) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Fixes `astro:env` getSecret compatibility
-
-- Updated dependencies [[`41064ce`](https://github.com/withastro/astro/commit/41064cee78c1cccd428f710a24c483aeb275fd95)]:
- - @astrojs/internal-helpers@0.4.1
-
-## 7.7.1
-
-### Patch Changes
-
-- [#11261](https://github.com/withastro/astro/pull/11261) [`f5f8ed2`](https://github.com/withastro/astro/commit/f5f8ed275b76adfb11b7c3c1e800753a25416498) Thanks [@matthewp](https://github.com/matthewp)! - Fix backwards compat with Astro <= 4.9
-
-- [#11227](https://github.com/withastro/astro/pull/11227) [`24ce898`](https://github.com/withastro/astro/commit/24ce8983e1e1b3c8ebebf2ac4de7bbf21a586e2e) Thanks [@matthewp](https://github.com/matthewp)! - In Vercel Edge, include cookies set by Astro.cookies.set
-
-## 7.7.0
-
-### Minor Changes
-
-- [#11199](https://github.com/withastro/astro/pull/11199) [`2bdca27`](https://github.com/withastro/astro/commit/2bdca27ff4002efd330667b0b4ca3e00d5b7a2db) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Adds support for experimental `astro:env` released in Astro 4.10
-
-## 7.6.0
-
-### Minor Changes
-
-- [#10761](https://github.com/withastro/astro/pull/10761) [`f0acd30`](https://github.com/withastro/astro/commit/f0acd30a12c380830884108f7cad67a31d879339) Thanks [@ematipico](https://github.com/ematipico)! - Implements the vercel skew protection
-
-## 7.5.4
-
-### Patch Changes
-
-- [#10833](https://github.com/withastro/astro/pull/10833) [`8d5f3e8`](https://github.com/withastro/astro/commit/8d5f3e8656027023f9fda51c66b0213ffe16d3a5) Thanks [@renovate](https://github.com/apps/renovate)! - Updates `esbuild` dependency to v0.20. This should not affect projects in most cases.
-
-## 7.5.3
-
-### Patch Changes
-
-- [#10756](https://github.com/withastro/astro/pull/10756) [`c75ededdb401cfa55e1ad2682d5e95494f49604e`](https://github.com/withastro/astro/commit/c75ededdb401cfa55e1ad2682d5e95494f49604e) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes `widths` and `densities` not working when using Vercel's Image Optimization.
-
- Note that you still need to make sure that the widths you're outputting are enabled in [the `imageConfig` property of the Vercel adapter](https://docs.astro.build/en/guides/integrations-guide/vercel/#imagesconfig) in order for these properties to work.
-
-## 7.5.2
-
-### Patch Changes
-
-- [#10611](https://github.com/withastro/astro/pull/10611) [`a9a3694a98060be9a33045bb0fcf92ccf1acff6f`](https://github.com/withastro/astro/commit/a9a3694a98060be9a33045bb0fcf92ccf1acff6f) Thanks [@jacobdalamb](https://github.com/jacobdalamb)! - Updates the supported version of Node.js
-
-## 7.5.1
-
-### Patch Changes
-
-- [#10609](https://github.com/withastro/astro/pull/10609) [`31590d44ef8b7c96a757e9b835144d57d767383c`](https://github.com/withastro/astro/commit/31590d44ef8b7c96a757e9b835144d57d767383c) Thanks [@matthewp](https://github.com/matthewp)! - Move nft warnings behind verbose logging
-
-## 7.5.0
-
-### Minor Changes
-
-- [#10513](https://github.com/withastro/astro/pull/10513) [`a573cc199a00d35410197ba4117c97764a984dc0`](https://github.com/withastro/astro/commit/a573cc199a00d35410197ba4117c97764a984dc0) Thanks [@tk04](https://github.com/tk04)! - The `isr.exclude` configuration can now include routes with dynamic and spread parameters.
- ```ts
- export default defineConfig({
- adapter: vercel({
- isr: {
- exclude: [
- "/blog/[title]"
- "/api/[...slug]",
- ]
- }
- })
- })
- ```
-
-## 7.4.1
-
-### Patch Changes
-
-- Updated dependencies [[`20463a6c1e1271d8dc3cb0ab3419ee5c72abd218`](https://github.com/withastro/astro/commit/20463a6c1e1271d8dc3cb0ab3419ee5c72abd218)]:
- - @astrojs/internal-helpers@0.4.0
-
-## 7.4.0
-
-### Minor Changes
-
-- [#10476](https://github.com/withastro/astro/pull/10476) [`cfbaa8a767b8794c2dcd8e164672195378be396a`](https://github.com/withastro/astro/commit/cfbaa8a767b8794c2dcd8e164672195378be396a) Thanks [@lilnasy](https://github.com/lilnasy)! - The special-case handling of `src/vercel-edge-middleware.js` file is now deprecated. This file allowed you to access the edge runtime's `RequestContext` object, and create the middleware `locals` from its fields. However, this object includes only one field - the `waitUntil()` function - which is now available directly as `ctx.locals.vercel.edge.waitUntil()`.
-
-## 7.3.6
-
-### Patch Changes
-
-- Updated dependencies [[`1ea0a25b94125e4f6f2ac82b42f638e22d7bdffd`](https://github.com/withastro/astro/commit/1ea0a25b94125e4f6f2ac82b42f638e22d7bdffd)]:
- - @astrojs/internal-helpers@0.3.0
-
-## 7.3.5
-
-### Patch Changes
-
-- [#10336](https://github.com/withastro/astro/pull/10336) [`f2e60a96754ed1d86001fe4d5d3a0c0ef657408d`](https://github.com/withastro/astro/commit/f2e60a96754ed1d86001fe4d5d3a0c0ef657408d) Thanks [@FredKSchott](https://github.com/FredKSchott)! - Fixes an issue that was preventing the use of `sharp` in some cases and causing a runtime error
-
-## 7.3.4
-
-### Patch Changes
-
-- [#10231](https://github.com/withastro/astro/pull/10231) [`ae2a10e1a768e31d243194694222932ffafb54cc`](https://github.com/withastro/astro/commit/ae2a10e1a768e31d243194694222932ffafb54cc) Thanks [@mingjunlu](https://github.com/mingjunlu)! - Fixes an issue where functions were also created for prerendered routes with `functionPerRoute` enabled.
-
-## 7.3.3
-
-### Patch Changes
-
-- [#10215](https://github.com/withastro/astro/pull/10215) [`a013182d322a3969e39d647aad75ec10f8bd1ed7`](https://github.com/withastro/astro/commit/a013182d322a3969e39d647aad75ec10f8bd1ed7) Thanks [@matthewp](https://github.com/matthewp)! - Fixes edge middleware calling nested routes
-
-## 7.3.2
-
-### Patch Changes
-
-- [#10194](https://github.com/withastro/astro/pull/10194) [`3cc20109277813ccb9578ca87a8b0d680a73c35c`](https://github.com/withastro/astro/commit/3cc20109277813ccb9578ca87a8b0d680a73c35c) Thanks [@matthewp](https://github.com/matthewp)! - Fix loading client-scripts in dev with ISR
-
-## 7.3.1
-
-### Patch Changes
-
-- [#10082](https://github.com/withastro/astro/pull/10082) [`2ffc5721bc22631c44d90ac43ec27fdb0b5b2d1b`](https://github.com/withastro/astro/commit/2ffc5721bc22631c44d90ac43ec27fdb0b5b2d1b) Thanks [@florian-lefebvre](https://github.com/florian-lefebvre)! - Prevents infinite redirects when Astro `trailingSlash` configuration is set to `"always"` and "vercel.json" `trailingSlash` configuration is set to `true`
-
-## 7.3.0
-
-### Minor Changes
-
-- [#9987](https://github.com/withastro/astro/pull/9987) [`0699f34d5c4481c027c4d29d73944f79f97008df`](https://github.com/withastro/astro/commit/0699f34d5c4481c027c4d29d73944f79f97008df) Thanks [@lilnasy](https://github.com/lilnasy)! - Implements verification for edge middleware. This is a security measure to ensure that your serverless functions are only ever called by your edge middleware and not a third party.
-
- When `edgeMiddleware` is enabled, the serverless function will now respond with `403 Forbidden` for requests that are not verified to have come from the generated edge middleware. No user action is necessary.
-
-## 7.2.0
-
-### Minor Changes
-
-- [#9714](https://github.com/withastro/astro/pull/9714) [`e2fe51c828dc7ea8204788e59e3953fe36c97836`](https://github.com/withastro/astro/commit/e2fe51c828dc7ea8204788e59e3953fe36c97836) Thanks [@lilnasy](https://github.com/lilnasy)! - Introduces a new config option, `isr`, that allows you to deploy your project as an ISR function. [ISR (Incremental Static Regeneration)](https://vercel.com/docs/incremental-static-regeneration) caches your on-demand rendered pages in the same way as prerendered pages after first request.
-
- To enable this feature, set `isr` to true in your Vercel adapter configuration in `astro.config.mjs`:
-
- ```js
- export default defineConfig({
- output: 'server',
- adapter: vercel({ isr: true }),
- });
- ```
-
- ## Cache invalidation options
-
- By default, ISR responses are cached for the duration of your deployment. You can further control caching by setting an `expiration` time or prevent caching entirely for certain routes.
-
- ### Time-based invalidation
-
- You can change the length of time to cache routes this by configuring an `expiration` value in seconds:
-
- ```js
- export default defineConfig({
- output: 'server',
- adapter: vercel({
- isr: {
- // caches all pages on first request and saves for 1 day
- expiration: 60 * 60 * 24,
- },
- }),
- });
- ```
-
- ### Manual invalidation
-
- To implement Vercel's [Draft mode](https://vercel.com/docs/build-output-api/v3/features#draft-mode), or [On-Demand Incremental Static Regeneration (ISR)](https://vercel.com/docs/build-output-api/v3/features#on-demand-incremental-static-regeneration-isr), you can create a bypass token and provide it to the `isr` config along with the paths to exclude from caching:
-
- ```js
- export default defineConfig({
- output: 'server',
- adapter: vercel({
- isr: {
- // A secret random string that you create.
- bypassToken: '005556d774a8',
- // Paths that will always be served fresh.
- exclude: ['/api/invalidate'],
- },
- }),
- });
- ```
-
-## 7.1.1
-
-### Patch Changes
-
-- [#9955](https://github.com/withastro/astro/pull/9955) [`bc1742df9423ba66e33dcbf65fbebf67a236175d`](https://github.com/withastro/astro/commit/bc1742df9423ba66e33dcbf65fbebf67a236175d) Thanks [@matthewp](https://github.com/matthewp)! - Fix regression with bundling of @libsql/client
-
-## 7.1.0
-
-### Minor Changes
-
-- [#9143](https://github.com/withastro/astro/pull/9143) [`041fdd5c89920f7ccf944b095f29e451f78b0e28`](https://github.com/withastro/astro/commit/041fdd5c89920f7ccf944b095f29e451f78b0e28) Thanks [@ematipico](https://github.com/ematipico)! - Adds experimental support for internationalization domains
-
-### Patch Changes
-
-- [#9885](https://github.com/withastro/astro/pull/9885) [`49e0c24d7f90d00e986533fcf546665967540ce7`](https://github.com/withastro/astro/commit/49e0c24d7f90d00e986533fcf546665967540ce7) Thanks [@matthewp](https://github.com/matthewp)! - Better ignores for Vercel file-tracer
-
- The Vercel adapter has a file-tracer it uses to detect which files should be moved over to the `dist/` folder. When it's done, it prints warnings for things that it detected that maybe should be moved.
-
- This change expands how we do ignores so that:
-
- - Ignores happen within dot folders like `.pnpm`.
- - `@libsql/client` is ignored, a package we know is not bundled.
-
-## 7.0.2
-
-### Patch Changes
-
-- [#9809](https://github.com/withastro/astro/pull/9809) [`3435b7f1e1ca38fdee8f3b89e2d2667f125d01b5`](https://github.com/withastro/astro/commit/3435b7f1e1ca38fdee8f3b89e2d2667f125d01b5) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where the serverless function ignored cookies added using Astro.cookies.
-
-## 7.0.1
-
-### Patch Changes
-
-- [#9585](https://github.com/withastro/astro/pull/9585) [`05adaaa2d217a3ecb34244d9b40603f35cef4a37`](https://github.com/withastro/astro/commit/05adaaa2d217a3ecb34244d9b40603f35cef4a37) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where edge middleware did not work.
-
-## 7.0.0
-
-### Major Changes
-
-- [#9661](https://github.com/withastro/astro/pull/9661) [`d6edc7540864cf5d294d7b881eb886a3804f6d05`](https://github.com/withastro/astro/commit/d6edc7540864cf5d294d7b881eb886a3804f6d05) Thanks [@ematipico](https://github.com/ematipico)! - **Breaking**: Minimum required Astro version is now 4.2.0.
- Reorganizes internals to be more maintainable.
- ***
-
-## 6.1.4
-
-### Patch Changes
-
-- [#9648](https://github.com/withastro/astro/pull/9648) [`d7f1903cded3e864b392d1dd7502672d37936f11`](https://github.com/withastro/astro/commit/d7f1903cded3e864b392d1dd7502672d37936f11) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where the serverless function could not respond with a prerendered 404 page.
-
-## 6.1.3
-
-### Patch Changes
-
-- [#9591](https://github.com/withastro/astro/pull/9591) [`22a5405b4a4b7948458ad170b0a7bde6954058c1`](https://github.com/withastro/astro/commit/22a5405b4a4b7948458ad170b0a7bde6954058c1) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where 404.astro was not used in static mode.
-
-- [#9598](https://github.com/withastro/astro/pull/9598) [`bd8fa7acd23ba6e7afa2c435807bd5fd6b24f505`](https://github.com/withastro/astro/commit/bd8fa7acd23ba6e7afa2c435807bd5fd6b24f505) Thanks [@lilnasy](https://github.com/lilnasy)! - Marks the `speedInsights` configuration as deprecated. Vercel has migrated features of the Speed Insights API into a framework-agnostic library with `@vercel/speed-insights`. See [Vercel Speed Insights Quickstart](https://vercel.com/docs/speed-insights/quickstart) for instructions on how to use the library instead.
-
-## 6.1.2
-
-### Patch Changes
-
-- [#9550](https://github.com/withastro/astro/pull/9550) [`7b586a6e23e25653814db9adea9674ec3a9bd535`](https://github.com/withastro/astro/commit/7b586a6e23e25653814db9adea9674ec3a9bd535) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where a build could not complete on Node 21.
-
-## 6.1.1
-
-### Patch Changes
-
-- [#9479](https://github.com/withastro/astro/pull/9479) [`1baf0b0d3cbd0564954c2366a7278794fad6726e`](https://github.com/withastro/astro/commit/1baf0b0d3cbd0564954c2366a7278794fad6726e) Thanks [@sarah11918](https://github.com/sarah11918)! - Updates README
-
-## 6.1.0
-
-### Minor Changes
-
-- [#9413](https://github.com/withastro/astro/pull/9413) [`836ab6214`](https://github.com/withastro/astro/commit/836ab6214e5ef778ef2db2c079f49e87ce70d711) Thanks [@jacobdalamb](https://github.com/jacobdalamb)! - Adds support for Node 20 (currently in `beta` on Vercel).
-
-### Patch Changes
-
-- [#9289](https://github.com/withastro/astro/pull/9289) [`8aeb0b579`](https://github.com/withastro/astro/commit/8aeb0b5797853c2eee7630b572d6abc503d59c6f) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where dots in redirects were incorrectly handled.
-
-## 6.0.2
-
-### Patch Changes
-
-- [#9287](https://github.com/withastro/astro/pull/9287) [`1e342e34e`](https://github.com/withastro/astro/commit/1e342e34eb9cef465b838654cea7bb4b0d24e602) Thanks [@lilnasy](https://github.com/lilnasy)! - Fixes an issue where redirects did not work with the static adapter.
-
-- [#9383](https://github.com/withastro/astro/pull/9383) [`bebf5cf22`](https://github.com/withastro/astro/commit/bebf5cf22d0d842670825aa961529e8b342e2b26) Thanks [@sarah11918](https://github.com/sarah11918)! - Fixes some incorrect code examples in the README documentation.
-
-- [#9334](https://github.com/withastro/astro/pull/9334) [`dfbc70790`](https://github.com/withastro/astro/commit/dfbc7079081d3346713cb536358a3854362a2c95) Thanks [@Geo25rey](https://github.com/Geo25rey)! - Allows the edge middleware to be an async function.
-
-## 6.0.1
-
-### Patch Changes
-
-- [#9348](https://github.com/withastro/astro/pull/9348) [`1685cc42b`](https://github.com/withastro/astro/commit/1685cc42b51603eb98b5ba3e072cf2d3953339f2) Thanks [@matthewp](https://github.com/matthewp)! - Uses the latest astro as the peerDependency
-
-## 6.0.0
-
-### Major Changes
-
-- [#9199](https://github.com/withastro/astro/pull/9199) [`49aa215a0`](https://github.com/withastro/astro/commit/49aa215a01ee1c4805316c85bb0aea6cfbc25a31) Thanks [@lilnasy](https://github.com/lilnasy)! - The internals of the integration have been updated to support Astro 4.0. Make sure to upgrade your Astro version as Astro 3.0 is no longer supported.
-
-- [#9184](https://github.com/withastro/astro/pull/9184) [`a145ac07e`](https://github.com/withastro/astro/commit/a145ac07e75927e13af62e28d13bc8217a362b8e) Thanks [@bluwy](https://github.com/bluwy)! - Removes deprecated `analytics` option. Use the `webAnalytics` option instead.
-
-- [#9263](https://github.com/withastro/astro/pull/9263) [`3cbd8ea75`](https://github.com/withastro/astro/commit/3cbd8ea7534910e3beae396dcfa93ce87dcdd91f) Thanks [@bluwy](https://github.com/bluwy)! - Removes the deprecated `@astrojs/vercel/edge` export. You should use `@astrojs/vercel/serverless` instead with the `edgeMiddleware` option.
-
-## 6.0.0-beta.2
-
-### Major Changes
-
-- [#9263](https://github.com/withastro/astro/pull/9263) [`3cbd8ea75`](https://github.com/withastro/astro/commit/3cbd8ea7534910e3beae396dcfa93ce87dcdd91f) Thanks [@bluwy](https://github.com/bluwy)! - Removes the deprecated `@astrojs/vercel/edge` export. You should use `@astrojs/vercel/serverless` instead with the `edgeMiddleware` option.
-
-## 6.0.0-beta.1
-
-### Major Changes
-
-- [#9199](https://github.com/withastro/astro/pull/9199) [`49aa215a0`](https://github.com/withastro/astro/commit/49aa215a01ee1c4805316c85bb0aea6cfbc25a31) Thanks [@lilnasy](https://github.com/lilnasy)! - The internals of the integration have been updated to support Astro 4.0. Make sure to upgrade your Astro version as Astro 3.0 is no longer supported.
-
-## 6.0.0-beta.0
-
-### Major Changes
-
-- [#9184](https://github.com/withastro/astro/pull/9184) [`a145ac07e`](https://github.com/withastro/astro/commit/a145ac07e75927e13af62e28d13bc8217a362b8e) Thanks [@bluwy](https://github.com/bluwy)! - Removes deprecated `analytics` option. Use the `webAnalytics` option instead.
-
-### Patch Changes
-
-- Updated dependencies [[`abf601233`](https://github.com/withastro/astro/commit/abf601233f8188d118a8cb063c777478d8d9f1a3), [`6201bbe96`](https://github.com/withastro/astro/commit/6201bbe96c2a083fb201e4a43a9bd88499821a3e), [`cdabf6ef0`](https://github.com/withastro/astro/commit/cdabf6ef02be7220fd2b6bdcef924ceca089381e), [`1c48ed286`](https://github.com/withastro/astro/commit/1c48ed286538ab9e354eca4e4dcd7c6385c96721), [`37697a2c5`](https://github.com/withastro/astro/commit/37697a2c5511572dc29c0a4ea46f90c2f62be8e6), [`bd0c2e9ae`](https://github.com/withastro/astro/commit/bd0c2e9ae3389a9d3085050c1e8134ae98dff299), [`0fe3a7ed5`](https://github.com/withastro/astro/commit/0fe3a7ed5d7bb1a9fce1623e84ba14104b51223c), [`710be505c`](https://github.com/withastro/astro/commit/710be505c9ddf416e77a75343d8cae9c497d72c6), [`153a5abb9`](https://github.com/withastro/astro/commit/153a5abb905042ac68b712514dc9ec387d3e6b17)]:
- - astro@4.0.0-beta.0
-
-## 5.2.0
-
-### Minor Changes
-
-- [#8879](https://github.com/withastro/astro/pull/8879) [`754e4fd31`](https://github.com/withastro/astro/commit/754e4fd31ce49eadb2cf4951e941a48d11d10e73) Thanks [@lilnasy](https://github.com/lilnasy)! - The Vercel adapter now streams responses!
-
- This brings better performance to your visitors by showing them content as it is rendered. The browser can also start loading the required stylesheets and scripts much sooner, which ultimately results in faster full page loads.
-
-## 5.1.0
-
-### Minor Changes
-
-- [#8867](https://github.com/withastro/astro/pull/8867) [`b209e5335`](https://github.com/withastro/astro/commit/b209e533584521c55f88b929f28ea9d5189045f9) Thanks [@lilnasy](https://github.com/lilnasy)! - You can now configure how long your functions can run before timing out.
-
- ```diff
- export default defineConfig({
- output: "server",
- adapter: vercel({
- + maxDuration: 60
- }),
- });
- ```
-
-### Patch Changes
-
-- [#8896](https://github.com/withastro/astro/pull/8896) [`5dd1ed50b`](https://github.com/withastro/astro/commit/5dd1ed50b2f9428946b0b273e0ce8f13c19aa3b5) Thanks [@bluwy](https://github.com/bluwy)! - Prevents the Vercel serverless adapter from generating static redirect pages in hybrid mode
-
-- Updated dependencies [[`26b77b8fe`](https://github.com/withastro/astro/commit/26b77b8fef0e03bfc5550aecaa1f56a4fc1cd297)]:
- - astro@3.3.4
-
-## 5.0.2
-
-### Patch Changes
-
-- [#8737](https://github.com/withastro/astro/pull/8737) [`6f60da805`](https://github.com/withastro/astro/commit/6f60da805e0014bc50dd07bef972e91c73560c3c) Thanks [@ematipico](https://github.com/ematipico)! - Add provenance statement when publishing the library from CI
-
-- Updated dependencies [[`6f60da805`](https://github.com/withastro/astro/commit/6f60da805e0014bc50dd07bef972e91c73560c3c), [`d78806dfe`](https://github.com/withastro/astro/commit/d78806dfe0301ea7ffe6c7c1f783bd415ac7cda9), [`d1c75fe15`](https://github.com/withastro/astro/commit/d1c75fe158839699c59728cf3a83888e8c72a459), [`aa265d730`](https://github.com/withastro/astro/commit/aa265d73024422967c1b1c68ad268c419c6c798f), [`78adbc443`](https://github.com/withastro/astro/commit/78adbc4433208458291e36713909762e148e1e5d), [`21e0757ea`](https://github.com/withastro/astro/commit/21e0757ea22a57d344c934045ca19db93b684436), [`357270f2a`](https://github.com/withastro/astro/commit/357270f2a3d0bf2aa634ba7e52e9d17618eff4a7)]:
- - @astrojs/internal-helpers@0.2.1
- - astro@3.2.3
-
-## 5.0.1
-
-### Patch Changes
-
-- [#8581](https://github.com/withastro/astro/pull/8581) [`d0e513f21`](https://github.com/withastro/astro/commit/d0e513f214fe3cb30bab6d98936cda796477f2f8) Thanks [@rishi-raj-jain](https://github.com/rishi-raj-jain)! - log only once in serverless adapter
-
-- Updated dependencies [[`8d361169b`](https://github.com/withastro/astro/commit/8d361169b8e487933d671ce347f0ce74922c80cc), [`95b5f6280`](https://github.com/withastro/astro/commit/95b5f6280d124f8d6f866dc3286406c272ee91bf), [`0586e20e8`](https://github.com/withastro/astro/commit/0586e20e8338e077b8eb1a3a96bdd19f5950c22f)]:
- - astro@3.1.1
-
-## 5.0.0
-
-### Major Changes
-
-- [#8445](https://github.com/withastro/astro/pull/8445) [`91380378c`](https://github.com/withastro/astro/commit/91380378cef545656d2c085117fc5f38c9ce4589) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds a configuration option `devImageService` to choose which of the built-in image services to use in development. Defaults to `sharp`.
-
-- [#8546](https://github.com/withastro/astro/pull/8546) [`b79e11f3c`](https://github.com/withastro/astro/commit/b79e11f3c480e8e165d5b102adb1f2f8a089f29d) Thanks [@matthewp](https://github.com/matthewp)! - Turn off `functionPerRoute` by default
-
- In the previous version of `@astrojs/vercel`, the default for `functionPerRoute` was changed to `true`. While this option has several advantages, if you're a free tier user you are likely to run into the limit of 12 functions per deployment. This will result in an error when you attempt to deploy.
-
- For this reason, the `functionPerRoute` option is now back to defaulting to `false`. It's still a useful option if you have a paid plan and have previously run into issues with your single function exceeding the size limits.
-
-### Minor Changes
-
-- [#8021](https://github.com/withastro/astro/pull/8021) [`2e8726fee`](https://github.com/withastro/astro/commit/2e8726feec2e0d6ba8bd4db941009986e8e34141) Thanks [@chriswdmr](https://github.com/chriswdmr)! - Enable Vercel Speed Insights and Vercel Web Analytics individually.
- Deprecates the `analytics` property in `astro.config.mjs` in favor of `speedInsights` and `webAnalytics`.
-
- If you're using the `analytics` property, you'll need to update your config to use the new properties:
-
- ```diff
- // astro.config.mjs
- export default defineConfig({
- adapter: vercel({
- - analytics: true,
- + webAnalytics: {
- + enabled: true
- + },
- + speedInsights: {
- + enabled: true
- + }
- })
- });
- ```
-
- Allow configuration of Web Analytics with all available configuration options.
- Bumps @vercel/analytics package to the latest version.
-
-### Patch Changes
-
-- Updated dependencies [[`7522bb491`](https://github.com/withastro/astro/commit/7522bb4914f2f9e8b8f3c743bc9c941fd3aca644), [`ecc65abbf`](https://github.com/withastro/astro/commit/ecc65abbf9e086c5bbd1973cd4a820082b4e0dc5), [`2c4fc878b`](https://github.com/withastro/astro/commit/2c4fc878bece36b7fcf1470419c7ce6f1e1e95d0), [`c92e0acd7`](https://github.com/withastro/astro/commit/c92e0acd715171b3f4c3294099780e21576648c8), [`f95febf96`](https://github.com/withastro/astro/commit/f95febf96bb97babb28d78994332f5e47f5f637d), [`b85c8a78a`](https://github.com/withastro/astro/commit/b85c8a78a116dbbddc901438bc0b7a1917dc0238), [`45364c345`](https://github.com/withastro/astro/commit/45364c345267429e400baecd1fbc290503f8b13a)]:
- - astro@3.1.0
-
-## 4.0.5
-
-### Patch Changes
-
-- [#8452](https://github.com/withastro/astro/pull/8452) [`7ea32c7fb`](https://github.com/withastro/astro/commit/7ea32c7fbf4fc74a3c0fa7319561243c4e262e99) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fix Astro's `domains` and `remotePatterns` not being used by Vercel when using Vercel Image Optimization
-
-- Updated dependencies [[`f66053a1e`](https://github.com/withastro/astro/commit/f66053a1ea0a4e3bdb0b0df12bb1bf56e1ea2618), [`0fa483283`](https://github.com/withastro/astro/commit/0fa483283e54c94f173838cd558dc0dbdd11e699)]:
- - astro@3.0.11
-
-## 4.0.4
-
-### Patch Changes
-
-- [#8408](https://github.com/withastro/astro/pull/8408) [`9ffa1a84e`](https://github.com/withastro/astro/commit/9ffa1a84e81f52d55ffe07826b8b1f10fc023ee9) Thanks [@slawekkolodziej](https://github.com/slawekkolodziej)! - Fix serverless function naming conflicts for routes with identical filenames but different directory structures
-
-- Updated dependencies [[`7d95bd9ba`](https://github.com/withastro/astro/commit/7d95bd9baaf755239fd7d35e4813861b2dbccf42), [`1947ef7a9`](https://github.com/withastro/astro/commit/1947ef7a99ce3d1d6ea797842edd31d5edffa5de), [`61ad70fdc`](https://github.com/withastro/astro/commit/61ad70fdc52035964c43ecdb4cf7468f6c2b61e7), [`d2f2a11cd`](https://github.com/withastro/astro/commit/d2f2a11cdb42b0de79be21c798eda8e7e7b2a277), [`5126c6a40`](https://github.com/withastro/astro/commit/5126c6a40f88bff66ee5d3c3a21eea8c4a44ce7a), [`48ff7855b`](https://github.com/withastro/astro/commit/48ff7855b238536a3df17cb29335c90029fc41a4), [`923a443cb`](https://github.com/withastro/astro/commit/923a443cb060a0e936a0e1cc87c0360232f77914), [`8935b3b46`](https://github.com/withastro/astro/commit/8935b3b4672d6c54c7b79e6c4575298f75eeb9f4)]:
- - astro@3.0.9
-
-## 4.0.3
-
-### Patch Changes
-
-- [#8348](https://github.com/withastro/astro/pull/8348) [`5f2c55bb5`](https://github.com/withastro/astro/commit/5f2c55bb54bb66693d278b7cd705c198aecc0331) Thanks [@ematipico](https://github.com/ematipico)! - - Cache result during bundling, to speed up the process of multiple functions;
-
- - Avoid creating multiple symbolic links of the dependencies when building the project with `functionPerRoute` enabled;
-
-- [#8354](https://github.com/withastro/astro/pull/8354) [`0eb09dbab`](https://github.com/withastro/astro/commit/0eb09dbab1674a57d23ac97950a527d2e5a9c9fb) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fix unnecessary warning about Sharp showing while building
-
-- Updated dependencies [[`d3a6f9f83`](https://github.com/withastro/astro/commit/d3a6f9f836e35932a950e40ba69eff63d7db7eed), [`f21599671`](https://github.com/withastro/astro/commit/f21599671a90c3327307eb6d2f4d5c02e9137207)]:
- - astro@3.0.6
-
-## 4.0.2
-
-### Patch Changes
-
-- [#8318](https://github.com/withastro/astro/pull/8318) [`c58472756`](https://github.com/withastro/astro/commit/c58472756ea30d2496592b2bde390cf858c1876f) Thanks [@ematipico](https://github.com/ematipico)! - Add astro feature map and adapter features to the static adapter. This will remove the warning emitted by Astro.
-
-- Updated dependencies [[`5f3a44aee`](https://github.com/withastro/astro/commit/5f3a44aeeff3c5f31a8063b6005abb90343a817e), [`b21038c19`](https://github.com/withastro/astro/commit/b21038c193fd30351235a1b241a4a0aaf4e692f2), [`7a894eec3`](https://github.com/withastro/astro/commit/7a894eec3e6d2670632ca8cdb592cf5649a22d3e), [`af41b03d0`](https://github.com/withastro/astro/commit/af41b03d05f8a561990de42ccc93663343da2c0d)]:
- - astro@3.0.5
-
-## 4.0.1
-
-### Patch Changes
-
-- [#8328](https://github.com/withastro/astro/pull/8328) [`8fff0e9ae`](https://github.com/withastro/astro/commit/8fff0e9aebec5ff8c2516ed6dbcccb307c20ce45) Thanks [@matthewp](https://github.com/matthewp)! - Update verbiage of Vercel warning
-
-- [#8319](https://github.com/withastro/astro/pull/8319) [`dc29e0f79`](https://github.com/withastro/astro/commit/dc29e0f797398678d16a3a7154443e0f2dd48077) Thanks [@ematipico](https://github.com/ematipico)! - Add warning when `functionPerRoute` is set to `true`
-
-- Updated dependencies [[`0752cf368`](https://github.com/withastro/astro/commit/0752cf3688eaac535ceda1ebcd22ccaf20b2171f)]:
- - astro@3.0.4
-
-## 4.0.0
-
-### Major Changes
-
-- [#8188](https://github.com/withastro/astro/pull/8188) [`d0679a666`](https://github.com/withastro/astro/commit/d0679a666f37da0fca396d42b9b32bbb25d29312) Thanks [@ematipico](https://github.com/ematipico)! - Remove support for Node 16. The lowest supported version by Astro and all integrations is now v18.14.1. As a reminder, Node 16 will be deprecated on the 11th September 2023.
-
-- [#8179](https://github.com/withastro/astro/pull/8179) [`6011d52d3`](https://github.com/withastro/astro/commit/6011d52d38e43c3e3d52bc3bc41a60e36061b7b7) Thanks [@matthewp](https://github.com/matthewp)! - Astro 3.0 Release Candidate
-
-- [#8188](https://github.com/withastro/astro/pull/8188) [`7511a4980`](https://github.com/withastro/astro/commit/7511a4980fd36536464c317de33a5190427f430a) Thanks [@ematipico](https://github.com/ematipico)! - When using an adapter that supports neither Squoosh or Sharp, Astro will now automatically use an image service that does not support processing, but still provides the other benefits of `astro:assets` such as enforcing `alt`, no CLS etc to users
-
-- [#8015](https://github.com/withastro/astro/pull/8015) [`9cc4e48e6`](https://github.com/withastro/astro/commit/9cc4e48e6a858d3a12e6373a5e287b32d24a1c5a) Thanks [@matthewp](https://github.com/matthewp)! - Remove the Vercel Edge adapter
-
- `@astrojs/vercel/serverless` now supports Edge middleware, so a separate adapter for Edge itself (deploying your entire app to the edge) is no longer necessary. Please update your Astro config to reflect this change:
-
- ```diff
- // astro.config.mjs
- import { defineConfig } from 'astro/config';
- - import vercel from '@astrojs/vercel/edge';
- + import vercel from '@astrojs/vercel/serverless';
-
- export default defineConfig({
- output: 'server',
- adapter: vercel({
- + edgeMiddleware: true
- }),
- });
- ```
-
- This adapter had several known limitations and compatibility issues that prevented many people from using it in production. To reduce maintenance costs and because we have a better story with Serveless + Edge Middleware, we are removing the Edge adapter.
-
-- [#8239](https://github.com/withastro/astro/pull/8239) [`52f0837bd`](https://github.com/withastro/astro/commit/52f0837bdeca0b54e07cbf76a7570bd042b98922) Thanks [@matthewp](https://github.com/matthewp)! - Vercel adapter now defaults to `functionPerRoute`.
-
- With this change, `@astrojs/vercel/serverless` now splits each route into its own function. By doing this, the size of each function is reduced and startup time is faster.
-
- You can disable this option, which will cause the code to be bundled into a single function, by setting `functionPerRoute` to `false`.
-
-- [#8188](https://github.com/withastro/astro/pull/8188) [`148e61d24`](https://github.com/withastro/astro/commit/148e61d2492456811f8a3c8daaab1c3429a2ffdc) Thanks [@ematipico](https://github.com/ematipico)! - Reduced the amount of polyfills provided by Astro. Astro will no longer provide (no-op) polyfills for several web apis such as HTMLElement, Image or Document. If you need access to those APIs on the server, we recommend using more proper polyfills available on npm.
-
-### Minor Changes
-
-- [#8188](https://github.com/withastro/astro/pull/8188) [`cd2d7e769`](https://github.com/withastro/astro/commit/cd2d7e76981ef9b9013453aa2629838e1e9fd422) Thanks [@ematipico](https://github.com/ematipico)! - Introduced the concept of feature map. A feature map is a list of features that are built-in in Astro, and an Adapter
- can tell Astro if it can support it.
-
- ```ts
- import { AstroIntegration } from './astro';
-
- function myIntegration(): AstroIntegration {
- return {
- name: 'astro-awesome-list',
- // new feature map
- supportedAstroFeatures: {
- hybridOutput: 'experimental',
- staticOutput: 'stable',
- serverOutput: 'stable',
- assets: {
- supportKind: 'stable',
- isSharpCompatible: false,
- isSquooshCompatible: false,
- },
- },
- };
- }
- ```
-
-- [#8188](https://github.com/withastro/astro/pull/8188) [`80f1494cd`](https://github.com/withastro/astro/commit/80f1494cdaf72e58a420adb4f7c712d4089e1923) Thanks [@ematipico](https://github.com/ematipico)! - The `build.split` and `build.excludeMiddleware` configuration options are deprecated and have been replaced by options in the adapter config.
-
- If your config includes the `build.excludeMiddleware` option, replace it with `edgeMiddleware` in your adapter options:
-
- ```diff
- import { defineConfig } from "astro/config";
- import vercel from "@astrojs/vercel/serverless";
-
- export default defineConfig({
- build: {
- - excludeMiddleware: true
- },
- adapter: vercel({
- + edgeMiddleware: true
- }),
- });
- ```
-
- If your config includes the `build.split` option, replace it with `functionPerRoute` in your adapter options:
-
- ```diff
- import { defineConfig } from "astro/config";
- import vercel from "@astrojs/vercel/serverless";
-
- export default defineConfig({
- build: {
- - split: true
- },
- adapter: vercel({
- + functionPerRoute: true
- }),
- });
- ```
-
-### Patch Changes
-
-- Updated dependencies [[`d0679a666`](https://github.com/withastro/astro/commit/d0679a666f37da0fca396d42b9b32bbb25d29312), [`db39206cb`](https://github.com/withastro/astro/commit/db39206cbb85b034859ac416179f141184bb2bff), [`2aa6d8ace`](https://github.com/withastro/astro/commit/2aa6d8ace398a41c2dec5473521d758816b08191), [`adf9fccfd`](https://github.com/withastro/astro/commit/adf9fccfdda107c2224558f1c2e6a77847ac0a8a), [`0c7b42dc6`](https://github.com/withastro/astro/commit/0c7b42dc6780e687e416137539f55a3a427d1d10), [`46c4c0e05`](https://github.com/withastro/astro/commit/46c4c0e053f830585b9ef229ce1c259df00a80f8), [`364d861bd`](https://github.com/withastro/astro/commit/364d861bd527b8511968e2837728148f090bedef), [`2484dc408`](https://github.com/withastro/astro/commit/2484dc4080e5cd84b9a53648a1de426d7c907be2), [`81545197a`](https://github.com/withastro/astro/commit/81545197a32fd015d763fc386c8b67e0e08b7393), [`6011d52d3`](https://github.com/withastro/astro/commit/6011d52d38e43c3e3d52bc3bc41a60e36061b7b7), [`c2c71d90c`](https://github.com/withastro/astro/commit/c2c71d90c264a2524f99e0373ab59015f23ad4b1), [`cd2d7e769`](https://github.com/withastro/astro/commit/cd2d7e76981ef9b9013453aa2629838e1e9fd422), [`80f1494cd`](https://github.com/withastro/astro/commit/80f1494cdaf72e58a420adb4f7c712d4089e1923), [`e45f30293`](https://github.com/withastro/astro/commit/e45f3029340db718b6ed7e91b5d14f5cf14cd71d), [`c0de7a7b0`](https://github.com/withastro/astro/commit/c0de7a7b0f042cd49cbea4f4ac1b2ab6f9fef644), [`65c354969`](https://github.com/withastro/astro/commit/65c354969e6fe0ef6d622e8f4c545e2f717ce8c6), [`3c3100851`](https://github.com/withastro/astro/commit/3c31008519ce68b5b1b1cb23b71fbe0a2d506882), [`34cb20021`](https://github.com/withastro/astro/commit/34cb2002161ba88df6bcb72fecfd12ed867c134b), [`a824863ab`](https://github.com/withastro/astro/commit/a824863ab1c451f4068eac54f28dd240573e1cba), [`44f7a2872`](https://github.com/withastro/astro/commit/44f7a28728c56c04ac377b6e917329f324874043), [`1048aca55`](https://github.com/withastro/astro/commit/1048aca550769415e528016e42b358ffbfd44b61), [`be6bbd2c8`](https://github.com/withastro/astro/commit/be6bbd2c86b9bf5268e765bb937dda00ff15781a), [`9e021a91c`](https://github.com/withastro/astro/commit/9e021a91c57d10809f588dd47968fc0e7f8b4d5c), [`7511a4980`](https://github.com/withastro/astro/commit/7511a4980fd36536464c317de33a5190427f430a), [`c37632a20`](https://github.com/withastro/astro/commit/c37632a20d06164fb97a4c2fc48df6d960398832), [`acf652fc1`](https://github.com/withastro/astro/commit/acf652fc1d5db166231e87e22d0d50444f5556d8), [`42785c7b7`](https://github.com/withastro/astro/commit/42785c7b784b151e6d582570e5d74482129e8eb8), [`8450379db`](https://github.com/withastro/astro/commit/8450379db854fb1eaa9f38f21d65db240bc616cd), [`dbc97b121`](https://github.com/withastro/astro/commit/dbc97b121f42583728f1cdfdbf14575fda943f5b), [`7d2f311d4`](https://github.com/withastro/astro/commit/7d2f311d428e3d1c8c13b9bf2a708d6435713fc2), [`2540feedb`](https://github.com/withastro/astro/commit/2540feedb06785d5a20eecc3668849f147d778d4), [`ea7ff5177`](https://github.com/withastro/astro/commit/ea7ff5177dbcd7b2508cb1eef1b22b8ee1f47079), [`68efd4a8b`](https://github.com/withastro/astro/commit/68efd4a8b29f248397667801465b3152dc98e9a7), [`7bd1b86f8`](https://github.com/withastro/astro/commit/7bd1b86f85c06fdde0a1ed9146d01bac69990671), [`036388f66`](https://github.com/withastro/astro/commit/036388f66dab68ad54b895ed86f9176958dd83c8), [`519a1c4e8`](https://github.com/withastro/astro/commit/519a1c4e8407c7abcb8d879b67a9f4b960652cae), [`1f58a7a1b`](https://github.com/withastro/astro/commit/1f58a7a1bea6888868b689dac94801d554319b02), [`2ae9d37f0`](https://github.com/withastro/astro/commit/2ae9d37f0a9cb21ab288d3c30aecb6d84db87788), [`a8f35777e`](https://github.com/withastro/astro/commit/a8f35777e7e322068a4e2f520c2c9e43ade19e58), [`70f34f5a3`](https://github.com/withastro/astro/commit/70f34f5a355f42526ee9e5355f3de8e510002ea2), [`5208a3c8f`](https://github.com/withastro/astro/commit/5208a3c8fefcec7694857fb344af351f4631fc34), [`84af8ed9d`](https://github.com/withastro/astro/commit/84af8ed9d1e6401c6ebc9c60fe8cddb44d5044b0), [`f003e7364`](https://github.com/withastro/astro/commit/f003e7364317cafdb8589913b26b28e928dd07c9), [`ffc9e2d3d`](https://github.com/withastro/astro/commit/ffc9e2d3de46049bf3d82140ef018f524fb03187), [`732111cdc`](https://github.com/withastro/astro/commit/732111cdce441639db31f40f621df48442d00969), [`0f637c71e`](https://github.com/withastro/astro/commit/0f637c71e511cb4c51712128d217a26c8eee4d40), [`33b8910cf`](https://github.com/withastro/astro/commit/33b8910cfdce5713891c50a84a0a8fe926311710), [`8a5b0c1f3`](https://github.com/withastro/astro/commit/8a5b0c1f3a4be6bb62db66ec70144109ff5b4c59), [`148e61d24`](https://github.com/withastro/astro/commit/148e61d2492456811f8a3c8daaab1c3429a2ffdc), [`e79e3779d`](https://github.com/withastro/astro/commit/e79e3779df0ad35253abcdb931d622847d9adb12), [`632579dc2`](https://github.com/withastro/astro/commit/632579dc2094cc342929261c89e689f0dd358284), [`3674584e0`](https://github.com/withastro/astro/commit/3674584e02b161a698b429ceb66723918fdc56ac), [`1db4e92c1`](https://github.com/withastro/astro/commit/1db4e92c12ed73681217f5cefd39f2f47542f961), [`e7f872e91`](https://github.com/withastro/astro/commit/e7f872e91e852b901cf221a5151077dec64305bf), [`16f09dfff`](https://github.com/withastro/astro/commit/16f09dfff7722fda99dd0412e3006a7a39c80829), [`4477bb41c`](https://github.com/withastro/astro/commit/4477bb41c8ed688785c545731ef5b184b629f4e5), [`55c10d1d5`](https://github.com/withastro/astro/commit/55c10d1d564e805efc3c1a7c48e0d9a1cdf0c7ed), [`3e834293d`](https://github.com/withastro/astro/commit/3e834293d47ab2761a7aa013916e8371871efb7f), [`96beb883a`](https://github.com/withastro/astro/commit/96beb883ad87f8bbf5b2f57e14a743763d2a6f58), [`997a0db8a`](https://github.com/withastro/astro/commit/997a0db8a4e3851edd69384cf5eadbb969e1d547), [`80f1494cd`](https://github.com/withastro/astro/commit/80f1494cdaf72e58a420adb4f7c712d4089e1923), [`0f0625504`](https://github.com/withastro/astro/commit/0f0625504145f18cba7dc6cf20291cb2abddc5a9), [`e1ae56e72`](https://github.com/withastro/astro/commit/e1ae56e724d0f83db1230359e06cd6bc26f5fa26), [`f32d093a2`](https://github.com/withastro/astro/commit/f32d093a280faafff024228c12bb438156ec34d7), [`f01eb585e`](https://github.com/withastro/astro/commit/f01eb585e7c972d940761309b1595f682b6922d2), [`b76c166bd`](https://github.com/withastro/astro/commit/b76c166bdd8e28683f62806aef968d1e0c3b06d9), [`a87cbe400`](https://github.com/withastro/astro/commit/a87cbe400314341d5f72abf86ea264e6b47c091f), [`866ed4098`](https://github.com/withastro/astro/commit/866ed4098edffb052239cdb26e076cf8db61b1d9), [`767eb6866`](https://github.com/withastro/astro/commit/767eb68666eb777965baa0d6ade20bbafecf95bf), [`32669cd47`](https://github.com/withastro/astro/commit/32669cd47555e9c7433c3998a2b6e624dfb2d8e9)]:
- - astro@3.0.0
- - @astrojs/internal-helpers@0.2.0
-
-## 4.0.0-rc.5
-
-### Major Changes
-
-- [#8239](https://github.com/withastro/astro/pull/8239) [`52f0837bd`](https://github.com/withastro/astro/commit/52f0837bdeca0b54e07cbf76a7570bd042b98922) Thanks [@matthewp](https://github.com/matthewp)! - Vercel adapter now defaults to `functionPerRoute`.
-
- With this change, `@astrojs/vercel/serverless` now splits each route into its own function. By doing this, the size of each function is reduced and startup time is faster.
-
- You can disable this option, which will cause the code to be bundled into a single function, by setting `functionPerRoute` to `false`.
-
-### Patch Changes
-
-- Updated dependencies [[`46c4c0e05`](https://github.com/withastro/astro/commit/46c4c0e053f830585b9ef229ce1c259df00a80f8), [`1048aca55`](https://github.com/withastro/astro/commit/1048aca550769415e528016e42b358ffbfd44b61), [`ffc9e2d3d`](https://github.com/withastro/astro/commit/ffc9e2d3de46049bf3d82140ef018f524fb03187), [`3674584e0`](https://github.com/withastro/astro/commit/3674584e02b161a698b429ceb66723918fdc56ac)]:
- - astro@3.0.0-rc.8
-
-## 4.0.0-rc.4
-
-### Major Changes
-
-- [#8179](https://github.com/withastro/astro/pull/8179) [`6011d52d3`](https://github.com/withastro/astro/commit/6011d52d38e43c3e3d52bc3bc41a60e36061b7b7) Thanks [@matthewp](https://github.com/matthewp)! - Astro 3.0 Release Candidate
-
-### Patch Changes
-
-- Updated dependencies [[`adf9fccfd`](https://github.com/withastro/astro/commit/adf9fccfdda107c2224558f1c2e6a77847ac0a8a), [`582132328`](https://github.com/withastro/astro/commit/5821323285646aee7ff9194a505f708028e4db57), [`81545197a`](https://github.com/withastro/astro/commit/81545197a32fd015d763fc386c8b67e0e08b7393), [`6011d52d3`](https://github.com/withastro/astro/commit/6011d52d38e43c3e3d52bc3bc41a60e36061b7b7), [`be6bbd2c8`](https://github.com/withastro/astro/commit/be6bbd2c86b9bf5268e765bb937dda00ff15781a), [`42785c7b7`](https://github.com/withastro/astro/commit/42785c7b784b151e6d582570e5d74482129e8eb8), [`95120efbe`](https://github.com/withastro/astro/commit/95120efbe817163663492181cbeb225849354493), [`2ae9d37f0`](https://github.com/withastro/astro/commit/2ae9d37f0a9cb21ab288d3c30aecb6d84db87788), [`f003e7364`](https://github.com/withastro/astro/commit/f003e7364317cafdb8589913b26b28e928dd07c9), [`732111cdc`](https://github.com/withastro/astro/commit/732111cdce441639db31f40f621df48442d00969), [`33b8910cf`](https://github.com/withastro/astro/commit/33b8910cfdce5713891c50a84a0a8fe926311710), [`e79e3779d`](https://github.com/withastro/astro/commit/e79e3779df0ad35253abcdb931d622847d9adb12), [`179796405`](https://github.com/withastro/astro/commit/179796405e053b559d83f84507e5a465861a029a), [`a87cbe400`](https://github.com/withastro/astro/commit/a87cbe400314341d5f72abf86ea264e6b47c091f), [`767eb6866`](https://github.com/withastro/astro/commit/767eb68666eb777965baa0d6ade20bbafecf95bf)]:
- - astro@3.0.0-rc.5
- - @astrojs/internal-helpers@0.2.0-rc.2
-
-## 4.0.0-beta.3
-
-### Patch Changes
-
-- [#7778](https://github.com/withastro/astro/pull/7778) [`d6b494376`](https://github.com/withastro/astro/commit/d6b4943764989c0e89df2d6875cd19691566dfb3) Thanks [@y-nk](https://github.com/y-nk)! - Update image support to work with latest version of Astro
-
-- Updated dependencies [[`2484dc408`](https://github.com/withastro/astro/commit/2484dc4080e5cd84b9a53648a1de426d7c907be2), [`c2c71d90c`](https://github.com/withastro/astro/commit/c2c71d90c264a2524f99e0373ab59015f23ad4b1), [`7177f7579`](https://github.com/withastro/astro/commit/7177f7579b6e866f0fd895b3fd079d8ba330b1a9), [`097a8e4e9`](https://github.com/withastro/astro/commit/097a8e4e916c7df18eafdaa6c8d6ce2991c17ab6), [`dbc97b121`](https://github.com/withastro/astro/commit/dbc97b121f42583728f1cdfdbf14575fda943f5b), [`2540feedb`](https://github.com/withastro/astro/commit/2540feedb06785d5a20eecc3668849f147d778d4), [`ea7ff5177`](https://github.com/withastro/astro/commit/ea7ff5177dbcd7b2508cb1eef1b22b8ee1f47079), [`68efd4a8b`](https://github.com/withastro/astro/commit/68efd4a8b29f248397667801465b3152dc98e9a7), [`0e0fa605d`](https://github.com/withastro/astro/commit/0e0fa605d109cc91e08a1ae1cc560ea240fe631b), [`5208a3c8f`](https://github.com/withastro/astro/commit/5208a3c8fefcec7694857fb344af351f4631fc34), [`8a5b0c1f3`](https://github.com/withastro/astro/commit/8a5b0c1f3a4be6bb62db66ec70144109ff5b4c59), [`d6b494376`](https://github.com/withastro/astro/commit/d6b4943764989c0e89df2d6875cd19691566dfb3), [`4477bb41c`](https://github.com/withastro/astro/commit/4477bb41c8ed688785c545731ef5b184b629f4e5), [`3e834293d`](https://github.com/withastro/astro/commit/3e834293d47ab2761a7aa013916e8371871efb7f), [`b76c166bd`](https://github.com/withastro/astro/commit/b76c166bdd8e28683f62806aef968d1e0c3b06d9)]:
- - astro@3.0.0-beta.3
-
-## 4.0.0-beta.2
-
-### Patch Changes
-
-- Updated dependencies [[`2aa6d8ace`](https://github.com/withastro/astro/commit/2aa6d8ace398a41c2dec5473521d758816b08191)]:
- - @astrojs/internal-helpers@0.2.0-beta.1
- - astro@3.0.0-beta.2
-
-## 4.0.0-beta.1
-
-### Major Changes
-
-- [#8015](https://github.com/withastro/astro/pull/8015) [`9cc4e48e6`](https://github.com/withastro/astro/commit/9cc4e48e6a858d3a12e6373a5e287b32d24a1c5a) Thanks [@matthewp](https://github.com/matthewp)! - Remove the Vercel Edge adapter
-
- `@astrojs/vercel/serverless` now supports Edge middleware, so a separate adapter for Edge itself (deploying your entire app to the edge) is no longer necessary. Please update your Astro config to reflect this change:
-
- ```diff
- // astro.config.mjs
- import { defineConfig } from 'astro/config';
- - import vercel from '@astrojs/vercel/edge';
- + import vercel from '@astrojs/vercel/serverless';
-
- export default defineConfig({
- output: 'server',
- adapter: vercel({
- + edgeMiddleware: true
- }),
- });
- ```
-
- This adapter had several known limitations and compatibility issues that prevented many people from using it in production. To reduce maintenance costs and because we have a better story with Serveless + Edge Middleware, we are removing the Edge adapter.
-
-### Patch Changes
-
-- Updated dependencies [[`65c354969`](https://github.com/withastro/astro/commit/65c354969e6fe0ef6d622e8f4c545e2f717ce8c6), [`3c3100851`](https://github.com/withastro/astro/commit/3c31008519ce68b5b1b1cb23b71fbe0a2d506882), [`34cb20021`](https://github.com/withastro/astro/commit/34cb2002161ba88df6bcb72fecfd12ed867c134b), [`7bd1b86f8`](https://github.com/withastro/astro/commit/7bd1b86f85c06fdde0a1ed9146d01bac69990671), [`519a1c4e8`](https://github.com/withastro/astro/commit/519a1c4e8407c7abcb8d879b67a9f4b960652cae), [`70f34f5a3`](https://github.com/withastro/astro/commit/70f34f5a355f42526ee9e5355f3de8e510002ea2), [`0f637c71e`](https://github.com/withastro/astro/commit/0f637c71e511cb4c51712128d217a26c8eee4d40), [`866ed4098`](https://github.com/withastro/astro/commit/866ed4098edffb052239cdb26e076cf8db61b1d9), [`5b1e39ef6`](https://github.com/withastro/astro/commit/5b1e39ef6ec6dcebea96584f95d9530bd9aa715d)]:
- - astro@3.0.0-beta.1
-
-## 4.0.0-beta.0
-
-### Major Changes
-
-- [`1eae2e3f7`](https://github.com/withastro/astro/commit/1eae2e3f7d693c9dfe91c8ccfbe606d32bf2fb81) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Remove support for Node 16. The lowest supported version by Astro and all integrations is now v18.14.1. As a reminder, Node 16 will be deprecated on the 11th September 2023.
-
-- [`c022a4217`](https://github.com/withastro/astro/commit/c022a4217a805d223c1494e9eda4e48bbf810388) Thanks [@Princesseuh](https://github.com/Princesseuh)! - When using an adapter that supports neither Squoosh or Sharp, Astro will now automatically use an image service that does not support processing, but still provides the other benefits of `astro:assets` such as enforcing `alt`, no CLS etc to users
-
-- [`3dc1ca2fa`](https://github.com/withastro/astro/commit/3dc1ca2fac8d9965cc5085a5d09e72ed87b4281a) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Reduced the amount of polyfills provided by Astro. Astro will no longer provide (no-op) polyfills for several web apis such as HTMLElement, Image or Document. If you need access to those APIs on the server, we recommend using more proper polyfills available on npm.
-
-### Minor Changes
-
-- [`9b4f70a62`](https://github.com/withastro/astro/commit/9b4f70a629f55e461759ba46f68af7097a2e9215) Thanks [@ematipico](https://github.com/ematipico)! - Introduced the concept of feature map. A feature map is a list of features that are built-in in Astro, and an Adapter
- can tell Astro if it can support it.
-
- ```ts
- import { AstroIntegration } from './astro';
-
- function myIntegration(): AstroIntegration {
- return {
- name: 'astro-awesome-list',
- // new feature map
- supportedAstroFeatures: {
- hybridOutput: 'experimental',
- staticOutput: 'stable',
- serverOutput: 'stable',
- assets: {
- supportKind: 'stable',
- isSharpCompatible: false,
- isSquooshCompatible: false,
- },
- },
- };
- }
- ```
-
-- [`3fdf509b2`](https://github.com/withastro/astro/commit/3fdf509b2731a9b2f972d89291e57cf78d62c769) Thanks [@ematipico](https://github.com/ematipico)! - The `build.split` and `build.excludeMiddleware` configuration options are deprecated and have been replaced by options in the adapter config.
-
- If your config includes the `build.excludeMiddleware` option, replace it with `edgeMiddleware` in your adapter options:
-
- ```diff
- import { defineConfig } from "astro/config";
- import vercel from "@astrojs/vercel/serverless";
-
- export default defineConfig({
- build: {
- - excludeMiddleware: true
- },
- adapter: vercel({
- + edgeMiddleware: true
- }),
- });
- ```
-
- If your config includes the `build.split` option, replace it with `functionPerRoute` in your adapter options:
-
- ```diff
- import { defineConfig } from "astro/config";
- import vercel from "@astrojs/vercel/serverless";
-
- export default defineConfig({
- build: {
- - split: true
- },
- adapter: vercel({
- + functionPerRoute: true
- }),
- });
- ```
-
-### Patch Changes
-
-- Updated dependencies [[`1eae2e3f7`](https://github.com/withastro/astro/commit/1eae2e3f7d693c9dfe91c8ccfbe606d32bf2fb81), [`76ddef19c`](https://github.com/withastro/astro/commit/76ddef19ccab6e5f7d3a5740cd41acf10e334b38), [`9b4f70a62`](https://github.com/withastro/astro/commit/9b4f70a629f55e461759ba46f68af7097a2e9215), [`3fdf509b2`](https://github.com/withastro/astro/commit/3fdf509b2731a9b2f972d89291e57cf78d62c769), [`2f951cd40`](https://github.com/withastro/astro/commit/2f951cd403dfcc2c3ca6aae618ae3e1409516e32), [`c022a4217`](https://github.com/withastro/astro/commit/c022a4217a805d223c1494e9eda4e48bbf810388), [`67becaa58`](https://github.com/withastro/astro/commit/67becaa580b8f787df58de66b7008b7098f1209c), [`bc37331d8`](https://github.com/withastro/astro/commit/bc37331d8154e3e95a8df9131e4e014e78a7a9e7), [`dfc2d93e3`](https://github.com/withastro/astro/commit/dfc2d93e3c645995379358fabbdfa9aab99f43d8), [`3dc1ca2fa`](https://github.com/withastro/astro/commit/3dc1ca2fac8d9965cc5085a5d09e72ed87b4281a), [`1be84dfee`](https://github.com/withastro/astro/commit/1be84dfee3ce8e6f5cc624f99aec4e980f6fde37), [`35f01df79`](https://github.com/withastro/astro/commit/35f01df797d23315f2bee2fc3fd795adb0559c58), [`3fdf509b2`](https://github.com/withastro/astro/commit/3fdf509b2731a9b2f972d89291e57cf78d62c769), [`78de801f2`](https://github.com/withastro/astro/commit/78de801f21fd4ca1653950027d953bf08614566b), [`59d6e569f`](https://github.com/withastro/astro/commit/59d6e569f63e175c97e82e94aa7974febfb76f7c), [`7723c4cc9`](https://github.com/withastro/astro/commit/7723c4cc93298c2e6530e55da7afda048f22cf81), [`fb5cd6b56`](https://github.com/withastro/astro/commit/fb5cd6b56dc27a71366ed5e1ab8bfe9b8f96bac5), [`631b9c410`](https://github.com/withastro/astro/commit/631b9c410d5d66fa384674027ba95d69ebb5063f)]:
- - astro@3.0.0-beta.0
- - @astrojs/internal-helpers@0.2.0-beta.0
-
-## 3.8.2
-
-### Patch Changes
-
-- [#7778](https://github.com/withastro/astro/pull/7778) [`d6b494376`](https://github.com/withastro/astro/commit/d6b4943764989c0e89df2d6875cd19691566dfb3) Thanks [@y-nk](https://github.com/y-nk)! - Update image support to work with latest version of Astro
-
-- Updated dependencies [[`b12c8471f`](https://github.com/withastro/astro/commit/b12c8471f413c0291de4a9c444bfe3079a192034), [`7177f7579`](https://github.com/withastro/astro/commit/7177f7579b6e866f0fd895b3fd079d8ba330b1a9), [`fa6b68a77`](https://github.com/withastro/astro/commit/fa6b68a776c5b3cc8167fc042b7d305234ebcff9), [`097a8e4e9`](https://github.com/withastro/astro/commit/097a8e4e916c7df18eafdaa6c8d6ce2991c17ab6), [`1f6497c33`](https://github.com/withastro/astro/commit/1f6497c3341231ee76fc4538cfe7624cf4721d56), [`0e0fa605d`](https://github.com/withastro/astro/commit/0e0fa605d109cc91e08a1ae1cc560ea240fe631b), [`b290f0a99`](https://github.com/withastro/astro/commit/b290f0a99778a9b9c1045f3cd06b6aee934d7c03), [`d6b494376`](https://github.com/withastro/astro/commit/d6b4943764989c0e89df2d6875cd19691566dfb3), [`da6e3da1c`](https://github.com/withastro/astro/commit/da6e3da1ce00bed625fc568cfe4693713448e93f)]:
- - astro@2.10.10
-
-## 3.8.1
-
-### Patch Changes
-
-- [#8039](https://github.com/withastro/astro/pull/8039) [`6b57628d1`](https://github.com/withastro/astro/commit/6b57628d128779290db3344bbb6de7282196fb97) Thanks [@matthewp](https://github.com/matthewp)! - Prevent Vercel NFT from scanning /dev
-
-- Updated dependencies [[`1b8d30209`](https://github.com/withastro/astro/commit/1b8d3020990130dabfaaf753db73a32c6e0c896a), [`405913cdf`](https://github.com/withastro/astro/commit/405913cdf20b26407aa351c090f0a0859a4e6f54), [`87d4b1843`](https://github.com/withastro/astro/commit/87d4b18437c7565c48cad4bea81831c2a244ebb8), [`c23377caa`](https://github.com/withastro/astro/commit/c23377caafbc75deb91c33b9678c1b6868ad40ea), [`86bee2812`](https://github.com/withastro/astro/commit/86bee2812185df6e14025e5962a335f51853587b)]:
- - astro@2.10.6
-
-## 3.8.0
-
-### Minor Changes
-
-- [#7729](https://github.com/withastro/astro/pull/7729) [`560d0dab1`](https://github.com/withastro/astro/commit/560d0dab1cc7510e5d01f38955c13b329ebf66ff) Thanks [@soilSpoon](https://github.com/soilSpoon)! - Add cache headers to assets in Vercel adapter
-
-### Patch Changes
-
-- Updated dependencies [[`41afb8405`](https://github.com/withastro/astro/commit/41afb84057f606b0e7f9a73c1e40487068e43948), [`c00b6f0c4`](https://github.com/withastro/astro/commit/c00b6f0c49027125ea3026e89b21fef84380d187), [`1f0ee494a`](https://github.com/withastro/astro/commit/1f0ee494a5190356d130282f1f51ba2a5e6ea63f), [`00cb28f49`](https://github.com/withastro/astro/commit/00cb28f4964a60bc609770108d491acc277997b9), [`c264be349`](https://github.com/withastro/astro/commit/c264be3497db4aa8b3bcce0d2f79a26e35b8e91e), [`e1e958a75`](https://github.com/withastro/astro/commit/e1e958a75860292688569e82b4617fc141056202)]:
- - astro@2.10.0
-
-## 3.7.5
-
-### Patch Changes
-
-- [#7754](https://github.com/withastro/astro/pull/7754) [`298dbb89f`](https://github.com/withastro/astro/commit/298dbb89f2963a547370b6e65cafd2650fdb1b27) Thanks [@natemoo-re](https://github.com/natemoo-re)! - Improve `404` behavior for `serverless` and `edge`
-
-- Updated dependencies [[`298dbb89f`](https://github.com/withastro/astro/commit/298dbb89f2963a547370b6e65cafd2650fdb1b27), [`9e2203847`](https://github.com/withastro/astro/commit/9e22038472c8be05ed7a72620534b88324dce793), [`5c5da8d2f`](https://github.com/withastro/astro/commit/5c5da8d2fbb37830f3ee81830d4c9afcd2c1a3e3), [`0b8375fe8`](https://github.com/withastro/astro/commit/0b8375fe82a15bfff3f517f98de6454adb2779f1), [`89d015db6`](https://github.com/withastro/astro/commit/89d015db6ce4d15b5b1140f0eb6bfbef187d6ad7), [`ebf7ebbf7`](https://github.com/withastro/astro/commit/ebf7ebbf7ae767625d736fad327954cfb853837e)]:
- - astro@2.9.7
-
-## 3.7.4
-
-### Patch Changes
-
-- [#7718](https://github.com/withastro/astro/pull/7718) [`35a0b6c8a`](https://github.com/withastro/astro/commit/35a0b6c8a909623d802523006cb3c65e4e70c88f) Thanks [@lilnasy](https://github.com/lilnasy)! - The vercel adapter now Warns when using a deprecated version of Node, and switches to 18 when using an unsupported version.
-
-- Updated dependencies [[`274e67532`](https://github.com/withastro/astro/commit/274e6753281edde72fcb4af1cf8a9f892ee46127), [`e52852628`](https://github.com/withastro/astro/commit/e528526289dd9fba98e254743ded47a5c6d418a8), [`c2d6cfd0c`](https://github.com/withastro/astro/commit/c2d6cfd0c26f4ebb81c715389347de1c3bf5f3e6), [`201d32dcf`](https://github.com/withastro/astro/commit/201d32dcfc58ca82468ac9be43b07cdc60abad88)]:
- - astro@2.9.1
-
-## 3.7.3
-
-### Patch Changes
-
-- [#7677](https://github.com/withastro/astro/pull/7677) [`1f0d0b586`](https://github.com/withastro/astro/commit/1f0d0b5863750104fc93cbbbd54ebae9c65143f7) Thanks [@bluwy](https://github.com/bluwy)! - Fix build error when passing `includeFiles`
-
-- Updated dependencies [[`cc8e9de88`](https://github.com/withastro/astro/commit/cc8e9de88179d2ed4b70980c60b41448db393429), [`1a6f833c4`](https://github.com/withastro/astro/commit/1a6f833c404ba2e64e3497929b64c863b5a348c8), [`cc0f81c04`](https://github.com/withastro/astro/commit/cc0f81c040e912cff0c09e89327ef1655f96b67d)]:
- - astro@2.8.4
-
-## 3.7.2
-
-### Patch Changes
-
-- [#7659](https://github.com/withastro/astro/pull/7659) [`57a5eff5c`](https://github.com/withastro/astro/commit/57a5eff5cee9852dca1e328e233949581edc5fb9) Thanks [@natemoo-re](https://github.com/natemoo-re)! - Fix critical build regression. `@vercel/nft` is excluded from the bundle automatically.
-
-## 3.7.1
-
-### Patch Changes
-
-- [#7621](https://github.com/withastro/astro/pull/7621) [`2ddf34262`](https://github.com/withastro/astro/commit/2ddf3426268847d87c24ba1dc0adff20d3046035) Thanks [@ematipico](https://github.com/ematipico)! - Improve file detection of the middleware file handler
-
-- Updated dependencies [[`86e19c7cf`](https://github.com/withastro/astro/commit/86e19c7cf8696e065c1ccdc2eb841ad0a2b61ede)]:
- - astro@2.8.2
-
-## 3.7.0
-
-### Minor Changes
-
-- [#7532](https://github.com/withastro/astro/pull/7532) [`9e5fafa2b`](https://github.com/withastro/astro/commit/9e5fafa2b25b5128084c7072aa282642fcfbb14b) Thanks [@ematipico](https://github.com/ematipico)! - Support for Vercel Edge Middleware via Astro middleware.
-
- When a project uses the new option Astro `build.excludeMiddleware`, the
- `@astrojs/vercel/serverless` adapter will automatically create a Vercel Edge Middleware
- that will automatically communicate with the Astro Middleware.
-
- Check the [documentation](https://github.com/withastro/astro/blob/main/packages/integrations/vercel/README.md##vercel-edge-middleware-with-astro-middleware) for more details.
-
-### Patch Changes
-
-- Updated dependencies [[`9e5fafa2b`](https://github.com/withastro/astro/commit/9e5fafa2b25b5128084c7072aa282642fcfbb14b), [`9e5fafa2b`](https://github.com/withastro/astro/commit/9e5fafa2b25b5128084c7072aa282642fcfbb14b), [`9e5fafa2b`](https://github.com/withastro/astro/commit/9e5fafa2b25b5128084c7072aa282642fcfbb14b), [`6e9c29579`](https://github.com/withastro/astro/commit/6e9c295799cb6524841adbcbec21ff628d8d19c8), [`9e5fafa2b`](https://github.com/withastro/astro/commit/9e5fafa2b25b5128084c7072aa282642fcfbb14b), [`9e5fafa2b`](https://github.com/withastro/astro/commit/9e5fafa2b25b5128084c7072aa282642fcfbb14b)]:
- - astro@2.8.0
-
-## 3.6.0
-
-### Minor Changes
-
-- [#7514](https://github.com/withastro/astro/pull/7514) [`154af8f5e`](https://github.com/withastro/astro/commit/154af8f5ead25b3cf100cfd445329bd1d3fe876a) Thanks [@matthewp](https://github.com/matthewp)! - Split support in Vercel Serverless
-
- The Vercel adapter builds to a single function by default. Astro 2.7 added support for splitting your build into separate entry points per page. If you use this configuration the Vercel adapter will generate a separate function for each page. This can help reduce the size of each function so they are only bundling code used on that page.
-
- ```js
- // astro.config.mjs
- import { defineConfig } from 'astro/config';
- import vercel from '@astrojs/vercel/serverless';
-
- export default defineConfig({
- output: 'server',
- adapter: vercel(),
- build: {
- split: true,
- },
- });
- ```
-
-### Patch Changes
-
-- Updated dependencies [[`9e2426f75`](https://github.com/withastro/astro/commit/9e2426f75637a6318961f483de90b635f3fdadeb), [`cdc28326c`](https://github.com/withastro/astro/commit/cdc28326cf21f305924363e9c8c02ce54b6ff895), [`19c2d43ea`](https://github.com/withastro/astro/commit/19c2d43ea41efdd8741007de0774e7e394f174b0), [`2172dd4f0`](https://github.com/withastro/astro/commit/2172dd4f0dd8f87d1adbc5ae90f44724e66eb964), [`1170877b5`](https://github.com/withastro/astro/commit/1170877b51aaa13203e8c488dcf4e39d1b5553ee)]:
- - astro@2.7.3
-
-## 3.5.1
-
-### Patch Changes
-
-- [#7447](https://github.com/withastro/astro/pull/7447) [`32bde967f`](https://github.com/withastro/astro/commit/32bde967f4b21648b1e11dbfa7964bf7f348f7b9) Thanks [@bluwy](https://github.com/bluwy)! - Fix redirects for root page when using `trailingSlash: "always"`
-
-- Updated dependencies [[`601403744`](https://github.com/withastro/astro/commit/60140374418ff0ee80899615be8e718ae57f791a), [`869197aaf`](https://github.com/withastro/astro/commit/869197aafd9802d059dd8db1ef23794fdd938a91), [`2b7539952`](https://github.com/withastro/astro/commit/2b75399520bebfc537cca8204e483f0df3373904), [`478cd9d8f`](https://github.com/withastro/astro/commit/478cd9d8fa9452466a73e0981863ef6e82f87238), [`57e603038`](https://github.com/withastro/astro/commit/57e603038fa51f5cf023c086705e2ced67434b38), [`2b7539952`](https://github.com/withastro/astro/commit/2b75399520bebfc537cca8204e483f0df3373904), [`f359d77b1`](https://github.com/withastro/astro/commit/f359d77b1844335ceeb103b9d3753eb2f440ed5f)]:
- - astro@2.7.1
- - @astrojs/internal-helpers@0.1.1
-
-## 3.5.0
-
-### Minor Changes
-
-- [#7067](https://github.com/withastro/astro/pull/7067) [`57f8d14c0`](https://github.com/withastro/astro/commit/57f8d14c027c30919363e12c664ccff4ed64d0fc) Thanks [@matthewp](https://github.com/matthewp)! - Support for experimental redirects
-
- This adds support for the redirects RFC in the Vercel adapter. No changes are necessary, simply use configured redirects and the adapter will output the vercel.json file with the configuration values.
-
-### Patch Changes
-
-- [#7260](https://github.com/withastro/astro/pull/7260) [`39403c32f`](https://github.com/withastro/astro/commit/39403c32faea58399c61d3344b770f195be60d5b) Thanks [@natemoo-re](https://github.com/natemoo-re)! - Unflags support for `output: 'hybrid'` mode, which enables pre-rendering by default. The additional `experimental.hybridOutput` flag can be safely removed from your configuration.
-
-- Updated dependencies [[`57f8d14c0`](https://github.com/withastro/astro/commit/57f8d14c027c30919363e12c664ccff4ed64d0fc), [`414eb19d2`](https://github.com/withastro/astro/commit/414eb19d2fcb55758f9d053076773b11b62f4c97), [`a7e2b37ff`](https://github.com/withastro/astro/commit/a7e2b37ff73871c46895c615846a86a539f45330), [`dd1a6b6c9`](https://github.com/withastro/astro/commit/dd1a6b6c941aeb7af934bd12db22412af262f5a1), [`d72cfa7ca`](https://github.com/withastro/astro/commit/d72cfa7cad758192163712ceb269405659fd14bc), [`144813f73`](https://github.com/withastro/astro/commit/144813f7308dcb9de64ebe3f0f2c6cba9ad81eb1), [`b5213654b`](https://github.com/withastro/astro/commit/b5213654b1b7f3ba573a48d3be688b2bdde7870f), [`e3b8c6296`](https://github.com/withastro/astro/commit/e3b8c62969d680d1915a122c610d281d6711aa63), [`890a2bc98`](https://github.com/withastro/astro/commit/890a2bc9891a2449ab99b01b65468f6dddba6b12), [`39403c32f`](https://github.com/withastro/astro/commit/39403c32faea58399c61d3344b770f195be60d5b), [`101f03209`](https://github.com/withastro/astro/commit/101f032098148b3daaac8d46ff1e535b79232e43)]:
- - astro@2.6.0
-
-## 3.4.1
-
-### Patch Changes
-
-- [#7208](https://github.com/withastro/astro/pull/7208) [`f5a8cffac`](https://github.com/withastro/astro/commit/f5a8cffac22c9e33fad6f47f7d166b55c86ad87b) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fix `imagesConfig` being wrongly spelt as `imageConfig` in the README
-
-- Updated dependencies [[`8b041bf57`](https://github.com/withastro/astro/commit/8b041bf57c76830c4070330270521e05d8e58474), [`6c7df28ab`](https://github.com/withastro/astro/commit/6c7df28ab34b756b8426443bf6976e24d4611a62), [`bf63f615f`](https://github.com/withastro/astro/commit/bf63f615fc1b97d6fb84db55f7639084e3ada5af), [`ee2aca80a`](https://github.com/withastro/astro/commit/ee2aca80a71afe843af943b11966fcf77f556cfb), [`7851f9258`](https://github.com/withastro/astro/commit/7851f9258fae2f54795470253df9ce4bcd5f9cb0), [`bef3a75db`](https://github.com/withastro/astro/commit/bef3a75dbc48d584daff9f7f3d5a8937b0356170), [`52af9ad18`](https://github.com/withastro/astro/commit/52af9ad18840ffa4e2996386c82cbe34d9fd076a), [`f5063d0a0`](https://github.com/withastro/astro/commit/f5063d0a01e3179da902fdc0a2b22f88cb3c95c7), [`cf621340b`](https://github.com/withastro/astro/commit/cf621340b00fda441f4ef43196c0363d09eae70c), [`2bda7fb0b`](https://github.com/withastro/astro/commit/2bda7fb0bce346f7725086980e1648e2636bbefb), [`af3c5a2e2`](https://github.com/withastro/astro/commit/af3c5a2e25bd3e7b2a3f7f08e41ee457093c8cb1), [`f2f18b440`](https://github.com/withastro/astro/commit/f2f18b44055c6334a39d6379de88fe41e518aa1e)]:
- - astro@2.5.6
- - @astrojs/webapi@2.2.0
-
-## 3.4.0
-
-### Minor Changes
-
-- [#7103](https://github.com/withastro/astro/pull/7103) [`c91e837e9`](https://github.com/withastro/astro/commit/c91e837e961043e92253148f0f4291856653b993) Thanks [@bluwy](https://github.com/bluwy)! - Add `edge-light` and `worker` import condition for worker bundling
-
-### Patch Changes
-
-- [#6876](https://github.com/withastro/astro/pull/6876) [`06ca3702f`](https://github.com/withastro/astro/commit/06ca3702f88ed18a063d2abbbb231615f9f97154) Thanks [@nblackburn](https://github.com/nblackburn)! - Correctly handle analytics id where present
-
-- [#6991](https://github.com/withastro/astro/pull/6991) [`719002ca5`](https://github.com/withastro/astro/commit/719002ca5b128744fb4316d4a52c5dcd46a42759) Thanks [@MoustaphaDev](https://github.com/MoustaphaDev)! - Enable experimental support for hybrid SSR with pre-rendering enabled by default
-
- **astro.config.mjs**
-
- ```js
- import { defineConfig } from 'astro/config';
- export default defineConfig({
- output: 'hybrid',
- experimental: {
- hybridOutput: true,
- },
- });
- ```
-
- Then add `export const prerender = false` to any page or endpoint you want to opt-out of pre-rendering.
-
- **src/pages/contact.astro**
-
- ```astro
- ---
- export const prerender = false;
-
- if (Astro.request.method === 'POST') {
- // handle form submission
- }
- ---
-
- <form method="POST">
- <input type="text" name="name" />
- <input type="email" name="email" />
- <button type="submit">Submit</button>
- </form>
- ```
-
-- [#7101](https://github.com/withastro/astro/pull/7101) [`2994bc52d`](https://github.com/withastro/astro/commit/2994bc52d360bf7ca3681c5f6976e64577cf5209) Thanks [@bluwy](https://github.com/bluwy)! - Add missing esbuild dependency
-
-- [#7101](https://github.com/withastro/astro/pull/7101) [`2994bc52d`](https://github.com/withastro/astro/commit/2994bc52d360bf7ca3681c5f6976e64577cf5209) Thanks [@bluwy](https://github.com/bluwy)! - Always build edge/worker runtime with Vite `webworker` SSR target
-
-- [#7104](https://github.com/withastro/astro/pull/7104) [`826e02890`](https://github.com/withastro/astro/commit/826e0289005f645b902375b98d5549c6a95ccafa) Thanks [@bluwy](https://github.com/bluwy)! - Specify `"files"` field to only publish necessary files
-
-- Updated dependencies [[`4516d7b22`](https://github.com/withastro/astro/commit/4516d7b22c5979cde4537f196b53ae2826ba9561), [`e186ecc5e`](https://github.com/withastro/astro/commit/e186ecc5e292de8c6a2c441a2d588512c0813068), [`c6d7ebefd`](https://github.com/withastro/astro/commit/c6d7ebefdd554a9ef29cfeb426ac55cab80d6473), [`914c439bc`](https://github.com/withastro/astro/commit/914c439bccee9fec002c6d92beaa501c398e62ac), [`e9fc2c221`](https://github.com/withastro/astro/commit/e9fc2c2213036d47cd30a47a6cdad5633481a0f8), [`075eee08f`](https://github.com/withastro/astro/commit/075eee08f2e2b0baea008b97f3523f2cb937ee44), [`719002ca5`](https://github.com/withastro/astro/commit/719002ca5b128744fb4316d4a52c5dcd46a42759), [`fc52681ba`](https://github.com/withastro/astro/commit/fc52681ba2f8fe8bcd92eeedf3c6a52fd86a390e), [`fb84622af`](https://github.com/withastro/astro/commit/fb84622af04f795de8d17f24192de105f70fe910), [`cada10a46`](https://github.com/withastro/astro/commit/cada10a466f81f8edb0aa664f9cffdb6b5b8f307), [`cd410c5eb`](https://github.com/withastro/astro/commit/cd410c5eb71f825259279c27c4c39d0ad282c3f0), [`73ec6f6c1`](https://github.com/withastro/astro/commit/73ec6f6c16cadb71dafe9f664f0debde072c3173), [`410428672`](https://github.com/withastro/astro/commit/410428672ed97bba7ca0b3352c1a7ee564921462), [`763ff2d1e`](https://github.com/withastro/astro/commit/763ff2d1e44f54b899d7c65386f1b4b877c95737), [`c1669c001`](https://github.com/withastro/astro/commit/c1669c0011eecfe65a459d727848c18c189a54ca), [`3d525efc9`](https://github.com/withastro/astro/commit/3d525efc95cfb2deb5d9e04856d02965d66901c9)]:
- - astro@2.5.0
-
-## 3.3.0
-
-### Minor Changes
-
-- [#6845](https://github.com/withastro/astro/pull/6845) [`6063f5657`](https://github.com/withastro/astro/commit/6063f5657392a74b6ffc4d5e0de5463c217a8563) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Add support for using the Vercel Image Optimization API through `astro:assets`
-
-### Patch Changes
-
-- Updated dependencies [[`a8a319aef`](https://github.com/withastro/astro/commit/a8a319aef744a64647ee16c7d558d74de6864c6c), [`a695e44ae`](https://github.com/withastro/astro/commit/a695e44aed6e2f5d32cb950d4237be6e5657ba98), [`367e61776`](https://github.com/withastro/astro/commit/367e61776196a17d61c28daa4dfbabb6244e040c), [`77270cc2c`](https://github.com/withastro/astro/commit/77270cc2cd06c942d7abf1d882e36d9163edafa5), [`895fa07d8`](https://github.com/withastro/astro/commit/895fa07d8b4b8359984e048daca5437e40f44390), [`72c6bf01f`](https://github.com/withastro/astro/commit/72c6bf01fe49b331ca8ad9206a7506b15caf5b8d), [`e5bd084c0`](https://github.com/withastro/astro/commit/e5bd084c01e4f60a157969b50c05ce002f7b63d2)]:
- - astro@2.3.4
-
-## 3.2.5
-
-### Patch Changes
-
-- [#6874](https://github.com/withastro/astro/pull/6874) [`43230b2ca`](https://github.com/withastro/astro/commit/43230b2cac6c28e0412b77d32f06db416fca8560) Thanks [@nblackburn](https://github.com/nblackburn)! - Refactor static adapter to use updateConfig method
-
-- Updated dependencies [[`4c7ba4da0`](https://github.com/withastro/astro/commit/4c7ba4da084d7508df91cbac03c2b099a8301e2b), [`b6154d2d5`](https://github.com/withastro/astro/commit/b6154d2d57bfb77767a3ccf9e91c1ae4051c81bc), [`1f2699461`](https://github.com/withastro/astro/commit/1f2699461d4cdcc8007ae47ebff74ace62eee058), [`edabf01b4`](https://github.com/withastro/astro/commit/edabf01b44d8c99da160973cd0f779e0a0b93cd7), [`0afff3274`](https://github.com/withastro/astro/commit/0afff32741247bc4c6709a30fc83787f58ec02b7)]:
- - astro@2.3.1
-
-## 3.2.4
-
-### Patch Changes
-
-- [#6841](https://github.com/withastro/astro/pull/6841) [`2e3125e18`](https://github.com/withastro/astro/commit/2e3125e18063dd23080d380c93c1b709bb59e413) Thanks [@bluwy](https://github.com/bluwy)! - Fix vercel edge private environment variables usage
-
-- [#6840](https://github.com/withastro/astro/pull/6840) [`00a2e1d7c`](https://github.com/withastro/astro/commit/00a2e1d7c74cf253dcad729624246dd59138eb7c) Thanks [@delucis](https://github.com/delucis)! - Fix warning syntax in README
-
-## 3.2.3
-
-### Patch Changes
-
-- [#6776](https://github.com/withastro/astro/pull/6776) [`84a464888`](https://github.com/withastro/astro/commit/84a46488846604596378b6640af6428e24d1e526) Thanks [@nblackburn](https://github.com/nblackburn)! - Revert change to environment variable
-
-## 3.2.2
-
-### Patch Changes
-
-- [#6751](https://github.com/withastro/astro/pull/6751) [`26daba8d9`](https://github.com/withastro/astro/commit/26daba8d9fd2e7cac8e506a2a36cd6f40ab25f16) Thanks [@nblackburn](https://github.com/nblackburn)! - Fix vercel analytics id not being set
-
-- Updated dependencies [[`489dd8d69`](https://github.com/withastro/astro/commit/489dd8d69cdd9d7c243cf8bec96051a914984b9c), [`a1a4f45b5`](https://github.com/withastro/astro/commit/a1a4f45b51a80215fa7598da83bd0d9c5acd20d2), [`a1108e037`](https://github.com/withastro/astro/commit/a1108e037115cdb67d03505286c7d3a4fc2a1ff5), [`8b88e4cf1`](https://github.com/withastro/astro/commit/8b88e4cf15c8bea7942b3985380164e0edf7250b), [`d54cbe413`](https://github.com/withastro/astro/commit/d54cbe41349e55f8544212ad9320705f07325920), [`4c347ab51`](https://github.com/withastro/astro/commit/4c347ab51e46f2319d614f8577fe502e3dc816e2), [`ff0430786`](https://github.com/withastro/astro/commit/ff043078630e678348ae4f4757b3015b3b862c16), [`2f2e572e9`](https://github.com/withastro/astro/commit/2f2e572e937fd25451bbc78a05d55b7caa1ca3ec), [`7116c021a`](https://github.com/withastro/astro/commit/7116c021a39eac15a6e1264dfbd11bef0f5d618a)]:
- - astro@2.2.0
-
-## 3.2.1
-
-### Patch Changes
-
-- [#6484](https://github.com/withastro/astro/pull/6484) [`700a55549`](https://github.com/withastro/astro/commit/700a55549925e2a0ef2da378a20a2a5d35c53b93) Thanks [@matthewp](https://github.com/matthewp)! - Add back support for Astro.clientAddress
-
-- Updated dependencies [[`acf78c5e2`](https://github.com/withastro/astro/commit/acf78c5e271ec3d4f589782078e2a2044cc1c391), [`04e624d06`](https://github.com/withastro/astro/commit/04e624d062c6ce385f6293afba26f3942c2290c6), [`cc90d7219`](https://github.com/withastro/astro/commit/cc90d72197e1139195e9545105b9a1d339f38e1b), [`a9a6ae298`](https://github.com/withastro/astro/commit/a9a6ae29812339ea00f3b9afd3de09bd9d3733a9), [`6a7cf0712`](https://github.com/withastro/astro/commit/6a7cf0712da23e2c095f4bc4f2512e618bceb38e), [`bfd67ea74`](https://github.com/withastro/astro/commit/bfd67ea749dbc6ffa7c9a671fcc48bea6c04a075), [`f6eddffa0`](https://github.com/withastro/astro/commit/f6eddffa0414d54767e9f9e1ee5a936b8a20146b), [`c63874090`](https://github.com/withastro/astro/commit/c6387409062f1d7c2afc93319748ad57086837c5), [`d637d1ea5`](https://github.com/withastro/astro/commit/d637d1ea5b347b9c724adc895c9006c696ac8fc8), [`637f9bc72`](https://github.com/withastro/astro/commit/637f9bc728ea7d56fc82a862d761385f0dcd9528), [`77a046e88`](https://github.com/withastro/astro/commit/77a046e886c370b737208574b6934f5a1cf2b177)]:
- - astro@2.1.3
-
-## 3.2.0
-
-### Minor Changes
-
-- [#6213](https://github.com/withastro/astro/pull/6213) [`afbbc4d5b`](https://github.com/withastro/astro/commit/afbbc4d5bfafc1779bac00b41c2a1cb1c90f2808) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Updated compilation settings to disable downlevelling for Node 14
-
-### Patch Changes
-
-- Updated dependencies [[`fec583909`](https://github.com/withastro/astro/commit/fec583909ab62829dc0c1600e2387979365f2b94), [`b087b83fe`](https://github.com/withastro/astro/commit/b087b83fe266c431fe34a07d5c2293cc4ab011c6), [`694918a56`](https://github.com/withastro/astro/commit/694918a56b01104831296be0c25456135a63c784), [`a20610609`](https://github.com/withastro/astro/commit/a20610609863ae3b48afe96819b8f11ae4f414d5), [`a4a74ab70`](https://github.com/withastro/astro/commit/a4a74ab70cd2aa0d812a1f6b202c4e240a8913bf), [`75921b3cd`](https://github.com/withastro/astro/commit/75921b3cd916d439f6392c487c21532fde35ed13), [`afbbc4d5b`](https://github.com/withastro/astro/commit/afbbc4d5bfafc1779bac00b41c2a1cb1c90f2808)]:
- - astro@2.1.0
- - @astrojs/webapi@2.1.0
-
-## 3.1.4
-
-### Patch Changes
-
-- [#6380](https://github.com/withastro/astro/pull/6380) [`0e378c3b8`](https://github.com/withastro/astro/commit/0e378c3b87627ca2764872a426dfba0a1606f991) Thanks [@JuanM04](https://github.com/JuanM04)! - Fixed undici-related bug
-
-- Updated dependencies [[`45501c531`](https://github.com/withastro/astro/commit/45501c531bf75f60063e1f8b7ac50f5d8d93eb6f), [`ee8b2a067`](https://github.com/withastro/astro/commit/ee8b2a067201f94c6b06fbfc094288e068116c60), [`02a7266e3`](https://github.com/withastro/astro/commit/02a7266e3c32c196fe733a5d3480f9e308cb62ee), [`95164bfdd`](https://github.com/withastro/astro/commit/95164bfdd2c1cbe5f1fafeab9e998ee4c85df3e3)]:
- - astro@2.0.17
-
-## 3.1.3
-
-### Patch Changes
-
-- [#6317](https://github.com/withastro/astro/pull/6317) [`2eb73cb9d`](https://github.com/withastro/astro/commit/2eb73cb9d1c982df5f8788ddacd634645643c5c6) Thanks [@bluwy](https://github.com/bluwy)! - Use .mjs extension when building to support CJS environments
-
-- Updated dependencies [[`5e26bc891`](https://github.com/withastro/astro/commit/5e26bc891cbebb3598acfa760c135a25c548d624), [`a156ecbb7`](https://github.com/withastro/astro/commit/a156ecbb7f4df6a46124a9a12eb712f9163db2ed), [`ccd72e6bb`](https://github.com/withastro/astro/commit/ccd72e6bb41e570d42b1b158e8124c8e04a1943d), [`504c7bacb`](https://github.com/withastro/astro/commit/504c7bacb8c1f2308a31e6c412825ba34983ba33), [`63dda6ded`](https://github.com/withastro/astro/commit/63dda6dedd4c6ea1d5ce72e9cf3fe5f88339a927), [`f91a7f376`](https://github.com/withastro/astro/commit/f91a7f376c223f18b4d8fbed81f95f6bea1cef8d)]:
- - astro@2.0.15
-
-## 3.1.2
-
-### Patch Changes
-
-- [#6258](https://github.com/withastro/astro/pull/6258) [`0fe74b664`](https://github.com/withastro/astro/commit/0fe74b6648fe79951da5443b73208cdc6742442e) Thanks [@delucis](https://github.com/delucis)! - Don’t inject analytics script in dev
-
-- Updated dependencies [[`ef5cea4dc`](https://github.com/withastro/astro/commit/ef5cea4dc5c4ffa33bd57ea0886e6912afb24fec), [`2fec47848`](https://github.com/withastro/astro/commit/2fec4784871f2b06fd780eb4cb0bb69866c6b065)]:
- - astro@2.0.13
-
-## 3.1.1
-
-### Patch Changes
-
-- [#6191](https://github.com/withastro/astro/pull/6191) [`11e1fa988`](https://github.com/withastro/astro/commit/11e1fa9883ff94e81865e0db631efa1a2b18688c) Thanks [@delucis](https://github.com/delucis)! - Fix and improve Vercel adapter README
-
-- Updated dependencies [[`436bd0934`](https://github.com/withastro/astro/commit/436bd09341693fc705f2a55d460eed3afa413432), [`a9bdd9cc4`](https://github.com/withastro/astro/commit/a9bdd9cc4e41512fbe723620c995e6a110032ebf), [`938ad514c`](https://github.com/withastro/astro/commit/938ad514cd75c09756cd24223346159172f5fd60), [`c75d319ee`](https://github.com/withastro/astro/commit/c75d319ee6b657402b902b1b46b9d3f2d0e5370b), [`6fa6025b3`](https://github.com/withastro/astro/commit/6fa6025b34b9447e142c4788c0cdc2dfe03f334f), [`3390cb844`](https://github.com/withastro/astro/commit/3390cb84443a43eb997f3efeb5ca298a8477aaf0)]:
- - astro@2.0.10
-
-## 3.1.0
-
-### Minor Changes
-
-- [#6148](https://github.com/withastro/astro/pull/6148) [`23c60cfa4`](https://github.com/withastro/astro/commit/23c60cfa45d0c01c2a710de9c6a644cd91d1b3f3) Thanks [@jsun969](https://github.com/jsun969)! - Add vercel analytics support
-
-### Patch Changes
-
-- Updated dependencies [[`8bbdcf17d`](https://github.com/withastro/astro/commit/8bbdcf17dd6c9142c18bc1551ee4854a60bc58cb), [`ec2f2a31d`](https://github.com/withastro/astro/commit/ec2f2a31dec78e5749cdea524ae926a19df300e3)]:
- - astro@2.0.9
-
-## 3.0.1
-
-### Patch Changes
-
-- [#6085](https://github.com/withastro/astro/pull/6085) [`b236b5cc8`](https://github.com/withastro/astro/commit/b236b5cc8eb9e078758d9c6cb77d88c39bb1fc3d) Thanks [@AirBorne04](https://github.com/AirBorne04)! - Added second build step through esbuild, to allow framework defined build (vite build) and target defined bundling (esbuilt step)
-
-- Updated dependencies [[`9bec6bc41`](https://github.com/withastro/astro/commit/9bec6bc410f324a41c67e5d185fa86f78d7625f2)]:
- - astro@2.0.6
-
-## 3.0.0
-
-### Major Changes
-
-- [#5782](https://github.com/withastro/astro/pull/5782) [`1f92d64ea`](https://github.com/withastro/astro/commit/1f92d64ea35c03fec43aff64eaf704dc5a9eb30a) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Remove support for Node 14. Minimum supported Node version is now >=16.12.0
-
-- [#5707](https://github.com/withastro/astro/pull/5707) [`5eba34fcc`](https://github.com/withastro/astro/commit/5eba34fcc663def20bdf6e0daad02a6a5472776b) Thanks [@bluwy](https://github.com/bluwy)! - Remove `astro:build:start` backwards compatibility code
-
-- [#5806](https://github.com/withastro/astro/pull/5806) [`7572f7402`](https://github.com/withastro/astro/commit/7572f7402238da37de748be58d678fedaf863b53) Thanks [@matthewp](https://github.com/matthewp)! - Make astro a `peerDependency` of integrations
-
- This marks `astro` as a `peerDependency` of several packages that are already getting `major` version bumps. This is so we can more properly track the dependency between them and what version of Astro they are being used with.
-
-### Patch Changes
-
-- Updated dependencies [[`93e633922`](https://github.com/withastro/astro/commit/93e633922c2e449df3bb2357b3683af1d3c0e07b), [`16dc36a87`](https://github.com/withastro/astro/commit/16dc36a870df47a4151a8ed2d91d0bd1bb812458), [`01f3f463b`](https://github.com/withastro/astro/commit/01f3f463bf2918b310d130a9fabbf3ee21d14029), [`e2019be6f`](https://github.com/withastro/astro/commit/e2019be6ffa46fa33d92cfd346f9ecbe51bb7144), [`05caf445d`](https://github.com/withastro/astro/commit/05caf445d4d2728f1010aeb2179a9e756c2fd17d), [`49ab4f231`](https://github.com/withastro/astro/commit/49ab4f231c23b34891c3ee86f4b92bf8d6d267a3), [`a342a486c`](https://github.com/withastro/astro/commit/a342a486c2831461e24e6c2f1ca8a9d3e15477b6), [`8fb28648f`](https://github.com/withastro/astro/commit/8fb28648f66629741cb976bfe34ccd9d8f55661e), [`1f92d64ea`](https://github.com/withastro/astro/commit/1f92d64ea35c03fec43aff64eaf704dc5a9eb30a), [`c2180746b`](https://github.com/withastro/astro/commit/c2180746b4f6d9ef1b6f86924f21f52cc6ab4e63), [`ae8a012a7`](https://github.com/withastro/astro/commit/ae8a012a7b6884a03c50494332ee37b4505c2c3b), [`cf2de5422`](https://github.com/withastro/astro/commit/cf2de5422c26bfdea4c75f76e57b57299ded3e3a), [`ce5c5dbd4`](https://github.com/withastro/astro/commit/ce5c5dbd46afbe738b03600758bf5c35113de522), [`ec09bb664`](https://github.com/withastro/astro/commit/ec09bb6642064dbd7d2f3369afb090363ae18de2), [`665a2c222`](https://github.com/withastro/astro/commit/665a2c2225e42881f5a9550599e8f3fc1deea0b4), [`259a539d7`](https://github.com/withastro/astro/commit/259a539d7d70c783330c797794b15716921629cf), [`f7aa1ec25`](https://github.com/withastro/astro/commit/f7aa1ec25d1584f7abd421903fbef66b1c050e2a), [`4987d6f44`](https://github.com/withastro/astro/commit/4987d6f44cfd0d81d88f21f5c380503403dc1e6a), [`304823811`](https://github.com/withastro/astro/commit/304823811eddd8e72aa1d8e2d39b40ab5cda3565), [`302e0ef8f`](https://github.com/withastro/astro/commit/302e0ef8f5d5232e3348afe680e599f3e537b5c5), [`55cea0a9d`](https://github.com/withastro/astro/commit/55cea0a9d8c8df91a46590fc04a9ac28089b3432), [`dd56c1941`](https://github.com/withastro/astro/commit/dd56c19411b126439b8bc42d681b6fa8c06e8c61), [`9963c6e4d`](https://github.com/withastro/astro/commit/9963c6e4d50c392c3d1ac4492237020f15ccb1de), [`46ecd5de3`](https://github.com/withastro/astro/commit/46ecd5de34df619e2ee73ccea39a57acd37bc0b8), [`be901dc98`](https://github.com/withastro/astro/commit/be901dc98c4a7f6b5536540aa8f7ba5108e939a0), [`f6cf92b48`](https://github.com/withastro/astro/commit/f6cf92b48317a19a3840ad781b77d6d3cae143bb), [`e818cc046`](https://github.com/withastro/astro/commit/e818cc0466a942919ea3c41585e231c8c80cb3d0), [`8c100a6fe`](https://github.com/withastro/astro/commit/8c100a6fe6cc652c3799d1622e12c2c969f30510), [`116d8835c`](https://github.com/withastro/astro/commit/116d8835ca9e78f8b5e477ee5a3d737b69f80706), [`840412128`](https://github.com/withastro/astro/commit/840412128b00a04515156e92c314a929d6b94f6d), [`1f49cddf9`](https://github.com/withastro/astro/commit/1f49cddf9e9ffc651efc171b2cbde9fbe9e8709d), [`7325df412`](https://github.com/withastro/astro/commit/7325df412107fc0e65cd45c1b568fb686708f723), [`16c7d0bfd`](https://github.com/withastro/astro/commit/16c7d0bfd49d2b9bfae45385f506bcd642f9444a), [`c55fbcb8e`](https://github.com/withastro/astro/commit/c55fbcb8edca1fe118a44f68c9f9436a4719d171), [`a9c292026`](https://github.com/withastro/astro/commit/a9c2920264e36cc5dc05f4adc1912187979edb0d), [`2a5786419`](https://github.com/withastro/astro/commit/2a5786419599b8674473c699300172b9aacbae2e), [`4a1cabfe6`](https://github.com/withastro/astro/commit/4a1cabfe6b9ef8a6fbbcc0727a0dc6fa300cedaa), [`a8d3e7924`](https://github.com/withastro/astro/commit/a8d3e79246605d252dcddad159e358e2d79bd624), [`fa8c131f8`](https://github.com/withastro/astro/commit/fa8c131f88ef67d14c62f1c00c97ed74d43a80ac), [`64b8082e7`](https://github.com/withastro/astro/commit/64b8082e776b832f1433ed288e6f7888adb626d0), [`c4b0cb8bf`](https://github.com/withastro/astro/commit/c4b0cb8bf2b41887d9106440bb2e70d421a5f481), [`1f92d64ea`](https://github.com/withastro/astro/commit/1f92d64ea35c03fec43aff64eaf704dc5a9eb30a), [`23dc9ea96`](https://github.com/withastro/astro/commit/23dc9ea96a10343852d965efd41fe6665294f1fb), [`63a6ceb38`](https://github.com/withastro/astro/commit/63a6ceb38d88331451dca64d0034c7c58e3d26f1), [`a3a7fc929`](https://github.com/withastro/astro/commit/a3a7fc9298e6d88abb4b7bee1e58f05fa9558cf1), [`52209ca2a`](https://github.com/withastro/astro/commit/52209ca2ad72a30854947dcb3a90ab4db0ac0a6f), [`5fd9208d4`](https://github.com/withastro/astro/commit/5fd9208d447f5ab8909a2188b6c2491a0debd49d), [`5eba34fcc`](https://github.com/withastro/astro/commit/5eba34fcc663def20bdf6e0daad02a6a5472776b), [`899214298`](https://github.com/withastro/astro/commit/899214298cee5f0c975c7245e623c649e1842d73), [`3a00ecb3e`](https://github.com/withastro/astro/commit/3a00ecb3eb4bc44be758c064f2bde6e247e8a593), [`5eba34fcc`](https://github.com/withastro/astro/commit/5eba34fcc663def20bdf6e0daad02a6a5472776b), [`2303f9514`](https://github.com/withastro/astro/commit/2303f95142aa740c99213a098f82b99dd37d74a0), [`1ca81c16b`](https://github.com/withastro/astro/commit/1ca81c16b8b66236e092e6eb6ec3f73f5668421c), [`b66d7195c`](https://github.com/withastro/astro/commit/b66d7195c17a55ea0931bc3744888bd4f5f01ce6)]:
- - astro@2.0.0
- - @astrojs/webapi@2.0.0
-
-## 3.0.0-beta.1
-
-<details>
-<summary>See changes in 3.0.0-beta.1</summary>
-
-### Major Changes
-
-- [#5782](https://github.com/withastro/astro/pull/5782) [`1f92d64ea`](https://github.com/withastro/astro/commit/1f92d64ea35c03fec43aff64eaf704dc5a9eb30a) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Remove support for Node 14. Minimum supported Node version is now >=16.12.0
-
-- [#5806](https://github.com/withastro/astro/pull/5806) [`7572f7402`](https://github.com/withastro/astro/commit/7572f7402238da37de748be58d678fedaf863b53) Thanks [@matthewp](https://github.com/matthewp)! - Make astro a `peerDependency` of integrations
-
- This marks `astro` as a `peerDependency` of several packages that are already getting `major` version bumps. This is so we can more properly track the dependency between them and what version of Astro they are being used with.
-
-### Patch Changes
-
-- Updated dependencies [[`01f3f463b`](https://github.com/withastro/astro/commit/01f3f463bf2918b310d130a9fabbf3ee21d14029), [`1f92d64ea`](https://github.com/withastro/astro/commit/1f92d64ea35c03fec43aff64eaf704dc5a9eb30a), [`c2180746b`](https://github.com/withastro/astro/commit/c2180746b4f6d9ef1b6f86924f21f52cc6ab4e63), [`ae8a012a7`](https://github.com/withastro/astro/commit/ae8a012a7b6884a03c50494332ee37b4505c2c3b), [`cf2de5422`](https://github.com/withastro/astro/commit/cf2de5422c26bfdea4c75f76e57b57299ded3e3a), [`ec09bb664`](https://github.com/withastro/astro/commit/ec09bb6642064dbd7d2f3369afb090363ae18de2), [`665a2c222`](https://github.com/withastro/astro/commit/665a2c2225e42881f5a9550599e8f3fc1deea0b4), [`f7aa1ec25`](https://github.com/withastro/astro/commit/f7aa1ec25d1584f7abd421903fbef66b1c050e2a), [`302e0ef8f`](https://github.com/withastro/astro/commit/302e0ef8f5d5232e3348afe680e599f3e537b5c5), [`840412128`](https://github.com/withastro/astro/commit/840412128b00a04515156e92c314a929d6b94f6d), [`1f49cddf9`](https://github.com/withastro/astro/commit/1f49cddf9e9ffc651efc171b2cbde9fbe9e8709d), [`c55fbcb8e`](https://github.com/withastro/astro/commit/c55fbcb8edca1fe118a44f68c9f9436a4719d171), [`4a1cabfe6`](https://github.com/withastro/astro/commit/4a1cabfe6b9ef8a6fbbcc0727a0dc6fa300cedaa), [`c4b0cb8bf`](https://github.com/withastro/astro/commit/c4b0cb8bf2b41887d9106440bb2e70d421a5f481), [`1f92d64ea`](https://github.com/withastro/astro/commit/1f92d64ea35c03fec43aff64eaf704dc5a9eb30a), [`23dc9ea96`](https://github.com/withastro/astro/commit/23dc9ea96a10343852d965efd41fe6665294f1fb), [`63a6ceb38`](https://github.com/withastro/astro/commit/63a6ceb38d88331451dca64d0034c7c58e3d26f1), [`52209ca2a`](https://github.com/withastro/astro/commit/52209ca2ad72a30854947dcb3a90ab4db0ac0a6f), [`2303f9514`](https://github.com/withastro/astro/commit/2303f95142aa740c99213a098f82b99dd37d74a0)]:
- - astro@2.0.0-beta.2
- - @astrojs/webapi@2.0.0-beta.0
-
-</details>
-
-## 3.0.0-beta.0
-
-<details>
-<summary>See changes in 3.0.0-beta.0</summary>
-
-### Major Changes
-
-- [#5707](https://github.com/withastro/astro/pull/5707) [`5eba34fcc`](https://github.com/withastro/astro/commit/5eba34fcc663def20bdf6e0daad02a6a5472776b) Thanks [@bluwy](https://github.com/bluwy)! - Remove `astro:build:start` backwards compatibility code
-
-</details>
-
-## 2.4.0
-
-### Minor Changes
-
-- [#5638](https://github.com/withastro/astro/pull/5638) [`a467139e1`](https://github.com/withastro/astro/commit/a467139e169ad2eb7931e03004f1d658f7362e59) Thanks [@andreademasi](https://github.com/andreademasi)! - Ignore warnings when traced file fails to parse
-
-## 2.3.6
-
-### Patch Changes
-
-- [#5587](https://github.com/withastro/astro/pull/5587) [`4d9ef23b6`](https://github.com/withastro/astro/commit/4d9ef23b6745b28a92ca985a6a1d86b45c894f3c) Thanks [@JuanM04](https://github.com/JuanM04)! - Support node-fetch and Node 18 fetch
-
-## 2.3.5
-
-### Patch Changes
-
-- [#5514](https://github.com/withastro/astro/pull/5514) [`a1885ea2f`](https://github.com/withastro/astro/commit/a1885ea2f59f26cbdae10c298e1e0d1063d9dca1) Thanks [@JuanM04](https://github.com/JuanM04)! - Updated request-transform methods
-
-## 2.3.4
-
-### Patch Changes
-
-- [#5361](https://github.com/withastro/astro/pull/5361) [`ee750087c`](https://github.com/withastro/astro/commit/ee750087ce360c54d349f160d84bbdafb0ec83b4) Thanks [@matthewp](https://github.com/matthewp)! - Allows @astrojs/image to be used in Vercel SSR
-
-## 2.3.3
-
-### Patch Changes
-
-- [#5241](https://github.com/withastro/astro/pull/5241) [`070da6a79`](https://github.com/withastro/astro/commit/070da6a7926892917f9a3077cd644bd3a1b87e76) Thanks [@matthewp](https://github.com/matthewp)! - Fixes unknown error when using vercel/static
-
-- Updated dependencies [[`b6a478f37`](https://github.com/withastro/astro/commit/b6a478f37648491321077750bfca7bddf3cafadd)]:
- - @astrojs/webapi@1.1.1
-
-## 2.3.2
-
-### Patch Changes
-
-- [#5175](https://github.com/withastro/astro/pull/5175) [`abf41da77`](https://github.com/withastro/astro/commit/abf41da774516395a49aca30693dccdc4f8d7114) Thanks [@JuanM04](https://github.com/JuanM04)! - Edge adapter includes all the generated files (all files inside `dist/`) instead of only `entry.mjs`
-
-## 2.3.1
-
-### Patch Changes
-
-- [#5127](https://github.com/withastro/astro/pull/5127) [`fad25aef2`](https://github.com/withastro/astro/commit/fad25aef2f9b51324cd7aa20701042e9574706a9) Thanks [@JuanM04](https://github.com/JuanM04)! - Fixed #5120
-
-## 2.3.0
-
-### Minor Changes
-
-- [#5086](https://github.com/withastro/astro/pull/5086) [`f8198d250`](https://github.com/withastro/astro/commit/f8198d2502bbf7f7daf5854e7e12317e39a66fcc) Thanks [@JuanM04](https://github.com/JuanM04)! - Minify Edge Function output to save space
-
-- [#5085](https://github.com/withastro/astro/pull/5085) [`cd25abae5`](https://github.com/withastro/astro/commit/cd25abae594f9c42d3766753dfeee4f476311f1e) Thanks [@JuanM04](https://github.com/JuanM04)! - Added `includeFiles` and `excludeFiles` options
-
-## 2.2.0
-
-### Minor Changes
-
-- [#5056](https://github.com/withastro/astro/pull/5056) [`e55af8a23`](https://github.com/withastro/astro/commit/e55af8a23233b6335f45b7a04b9d026990fb616c) Thanks [@matthewp](https://github.com/matthewp)! - # New build configuration
-
- The ability to customize SSR build configuration more granularly is now available in Astro. You can now customize the output folder for `server` (the server code for SSR), `client` (your client-side JavaScript and assets), and `serverEntry` (the name of the entrypoint server module). Here are the defaults:
-
- ```js
- import { defineConfig } from 'astro/config';
-
- export default defineConfig({
- output: 'server',
- build: {
- server: './dist/server/',
- client: './dist/client/',
- serverEntry: 'entry.mjs',
- },
- });
- ```
-
- These new configuration options are only supported in SSR mode and are ignored when building to SSG (a static site).
-
- ## Integration hook change
-
- The integration hook `astro:build:start` includes a param `buildConfig` which includes all of these same options. You can continue to use this param in Astro 1.x, but it is deprecated in favor of the new `build.config` options. All of the built-in adapters have been updated to the new format. If you have an integration that depends on this param we suggest upgrading to do this instead:
-
- ```js
- export default function myIntegration() {
- return {
- name: 'my-integration',
- hooks: {
- 'astro:config:setup': ({ updateConfig }) => {
- updateConfig({
- build: {
- server: '...',
- },
- });
- },
- },
- };
- }
- ```
-
-## 2.1.1
-
-### Patch Changes
-
-- [#5033](https://github.com/withastro/astro/pull/5033) [`c1f991408`](https://github.com/withastro/astro/commit/c1f991408b817217dbd4035dcc4ac0a2fecd08b8) Thanks [@JuanM04](https://github.com/JuanM04)! - - Upgraded @vercel/nft to 0.22.1
- - Fix monorepos (#5020)
-
-## 2.1.0
-
-### Minor Changes
-
-- [#4876](https://github.com/withastro/astro/pull/4876) [`d3091f89e`](https://github.com/withastro/astro/commit/d3091f89e92fcfe1ad48daca74055d54b1c853a3) Thanks [@matthewp](https://github.com/matthewp)! - Adds the Astro.cookies API
-
- `Astro.cookies` is a new API for manipulating cookies in Astro components and API routes.
-
- In Astro components, the new `Astro.cookies` object is a map-like object that allows you to get, set, delete, and check for a cookie's existence (`has`):
-
- ```astro
- ---
- type Prefs = {
- darkMode: boolean;
- };
-
- Astro.cookies.set<Prefs>(
- 'prefs',
- { darkMode: true },
- {
- expires: '1 month',
- },
- );
-
- const prefs = Astro.cookies.get<Prefs>('prefs').json();
- ---
-
- <body data-theme={prefs.darkMode ? 'dark' : 'light'}></body>
- ```
-
- Once you've set a cookie with Astro.cookies it will automatically be included in the outgoing response.
-
- This API is also available with the same functionality in API routes:
-
- ```js
- export function post({ cookies }) {
- cookies.set('loggedIn', false);
-
- return new Response(null, {
- status: 302,
- headers: {
- Location: '/login',
- },
- });
- }
- ```
-
- See [the RFC](https://github.com/withastro/rfcs/blob/main/proposals/0025-cookie-management.md) to learn more.
-
-## 2.0.1
-
-### Patch Changes
-
-- [#4884](https://github.com/withastro/astro/pull/4884) [`fb91d04a5`](https://github.com/withastro/astro/commit/fb91d04a5cb8f84f5b1be0a4e0c6cd61ec514736) Thanks [@bluwy](https://github.com/bluwy)! - Set SSR target webworker
-
-- Updated dependencies [[`5e4c5252b`](https://github.com/withastro/astro/commit/5e4c5252bd80cbaf6a7ee4d4503ece007664410f)]:
- - @astrojs/webapi@1.1.0
-
-## 2.0.0
-
-### Major Changes
-
-- [#4713](https://github.com/withastro/astro/pull/4713) [`16113c3ae`](https://github.com/withastro/astro/commit/16113c3ae2ebff96136ebd31958fc5eb4369ee0d) Thanks [@JuanM04](https://github.com/JuanM04)! - Use Edge Functions instead of Edge Middlewares
-
-## 1.0.2
-
-### Patch Changes
-
-- [#4558](https://github.com/withastro/astro/pull/4558) [`742966456`](https://github.com/withastro/astro/commit/7429664566f05ecebf6d57906f950627e62e690c) Thanks [@tony-sull](https://github.com/tony-sull)! - Adding the `withastro` keyword to include the adapters on the [Integrations Catalog](https://astro.build/integrations)
-
-## 1.0.1
-
-### Patch Changes
-
-- [#4421](https://github.com/withastro/astro/pull/4421) [`7820096e1`](https://github.com/withastro/astro/commit/7820096e1ba29ecc58aa7e13311a255acd2fe977) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Fix react-dom on Vercel edge
-
-## 1.0.0
-
-### Major Changes
-
-- [`04ad44563`](https://github.com/withastro/astro/commit/04ad445632c67bdd60c1704e1e0dcbcaa27b9308) - > Astro v1.0 is out! Read the [official announcement post](https://astro.build/blog/astro-1/).
-
- **No breaking changes**. This package is now officially stable and compatible with `astro@1.0.0`!
-
-### Patch Changes
-
-- Updated dependencies [[`04ad44563`](https://github.com/withastro/astro/commit/04ad445632c67bdd60c1704e1e0dcbcaa27b9308)]:
- - @astrojs/webapi@1.0.0
-
-## 0.4.0
-
-### Minor Changes
-
-- [#4068](https://github.com/withastro/astro/pull/4068) [`54b33d50f`](https://github.com/withastro/astro/commit/54b33d50fdb995ac056461be7e2128d911624f2d) Thanks [@matthewp](https://github.com/matthewp)! - Add explicit errors when omitting output config
-
-## 0.3.0
-
-### Minor Changes
-
-- [#4015](https://github.com/withastro/astro/pull/4015) [`6fd161d76`](https://github.com/withastro/astro/commit/6fd161d7691cbf9d3ffa4646e46059dfd0940010) Thanks [@matthewp](https://github.com/matthewp)! - New `output` configuration option
-
- This change introduces a new "output target" configuration option (`output`). Setting the output target lets you decide the format of your final build, either:
-
- - `"static"` (default): A static site. Your final build will be a collection of static assets (HTML, CSS, JS) that you can deploy to any static site host.
- - `"server"`: A dynamic server application. Your final build will be an application that will run in a hosted server environment, generating HTML dynamically for different requests.
-
- If `output` is omitted from your config, the default value `"static"` will be used.
-
- When using the `"server"` output target, you must also include a runtime adapter via the `adapter` configuration. An adapter will _adapt_ your final build to run on the deployed platform of your choice (Netlify, Vercel, Node.js, Deno, etc).
-
- To migrate: No action is required for most users. If you currently define an `adapter`, you will need to also add `output: 'server'` to your config file to make it explicit that you are building a server. Here is an example of what that change would look like for someone deploying to Netlify:
-
- ```diff
- import { defineConfig } from 'astro/config';
- import netlify from '@astrojs/netlify/functions';
-
- export default defineConfig({
- adapter: netlify(),
- + output: 'server',
- });
- ```
-
-* [#4018](https://github.com/withastro/astro/pull/4018) [`0cc6ede36`](https://github.com/withastro/astro/commit/0cc6ede362996b9faba57481a790d6eb7fba2045) Thanks [@okikio](https://github.com/okikio)! - Support for 404 and 500 pages in SSR
-
-- [#3973](https://github.com/withastro/astro/pull/3973) [`5a23483ef`](https://github.com/withastro/astro/commit/5a23483efb3ba614b05a00064f84415620605204) Thanks [@matthewp](https://github.com/matthewp)! - Adds support for Astro.clientAddress
-
- The new `Astro.clientAddress` property allows you to get the IP address of the requested user.
-
- ```astro
-
- ```
-
- This property is only available when building for SSR, and only if the adapter you are using supports providing the IP address. If you attempt to access the property in a SSG app it will throw an error.
-
-* [#4020](https://github.com/withastro/astro/pull/4020) [`1666fdb4c`](https://github.com/withastro/astro/commit/1666fdb4c508bed1f41aea16196aa127b64cb506) Thanks [@JuanM04](https://github.com/JuanM04)! - Removed requirement for `ENABLE_VC_BUILD=1`, since Build Output v3 is now stable. [Learn more](https://vercel.com/blog/build-output-api).
-
-## 0.2.6
-
-### Patch Changes
-
-- [#3885](https://github.com/withastro/astro/pull/3885) [`bf5d1cc1e`](https://github.com/withastro/astro/commit/bf5d1cc1e71da38a14658c615e9481f2145cc6e7) Thanks [@delucis](https://github.com/delucis)! - Integration README fixes
-
-## 0.2.5
-
-### Patch Changes
-
-- [#3865](https://github.com/withastro/astro/pull/3865) [`1f9e4857`](https://github.com/withastro/astro/commit/1f9e4857ff2b2cb7db89d619618cdf546cd3b3dc) Thanks [@delucis](https://github.com/delucis)! - Small README fixes
-
-* [#3854](https://github.com/withastro/astro/pull/3854) [`b012ee55`](https://github.com/withastro/astro/commit/b012ee55b107dea0730286263b27d83e530fad5d) Thanks [@bholmesdev](https://github.com/bholmesdev)! - [astro add] Support adapters and third party packages
-
-## 0.2.4
-
-### Patch Changes
-
-- [#3677](https://github.com/withastro/astro/pull/3677) [`8045c8ad`](https://github.com/withastro/astro/commit/8045c8ade16fe4306448b7f98a4560ef0557d378) Thanks [@Jutanium](https://github.com/Jutanium)! - Update READMEs
-
-## 0.2.3
-
-### Patch Changes
-
-- Updated dependencies [[`4de53ecc`](https://github.com/withastro/astro/commit/4de53eccef346bed843b491b7ab93987d7d85655)]:
- - @astrojs/webapi@0.12.0
-
-## 0.2.2
-
-### Patch Changes
-
-- [#3368](https://github.com/withastro/astro/pull/3368) [`9d01f93b`](https://github.com/withastro/astro/commit/9d01f93b1c7db5d4afc4041e6ee73fb52f24d2d1) Thanks [@JuanM04](https://github.com/JuanM04)! - Remove `nodeVersion` option for `serverless` target. Now it is inferred from Vercel
-
-## 0.2.1
-
-### Patch Changes
-
-- [#3355](https://github.com/withastro/astro/pull/3355) [`945f5c68`](https://github.com/withastro/astro/commit/945f5c68e892f6f17e59e41d0dfa2a7841f96bbf) Thanks [@JuanM04](https://github.com/JuanM04)! - Added typescript definitions
-
-## 0.2.0
-
-### Minor Changes
-
-- [#3216](https://github.com/withastro/astro/pull/3216) [`114bf63e`](https://github.com/withastro/astro/commit/114bf63e11f28299b13178ef1a412eed37ab7909) Thanks [@JuanM04](https://github.com/JuanM04)! - **[BREAKING]** Now with Build Output API (v3)! [See the README to get started](https://github.com/withastro/astro/tree/main/packages/integrations/vercel#readme).
-
- - `trailingSlash` redirects works without a `vercel.json` file: just configure them inside your `astro.config.mjs`
- - Multiple deploy targets: `edge`, `serverless` and `static`!
- - When building to `serverless`, your code isn't transpiled to CJS anymore.
-
- **Migrate from v0.1**
-
- 1. Change the import inside `astro.config.mjs`:
- ```diff
- - import vercel from '@astrojs/vercel';
- + import vercel from '@astrojs/vercel/serverless';
- ```
- 2. Rename the `ENABLE_FILE_SYSTEM_API` environment variable to `ENABLE_VC_BUILD`, as Vercel changed it.
- 3. The output folder changed from `.output` to `.vercel/output` — you may need to update your `.gitignore`.
-
-## 0.1.4
-
-### Patch Changes
-
-- [`cafd36ef`](https://github.com/withastro/astro/commit/cafd36ef774755b8efbe9e526a0b5ce7a47095f2) Thanks [@FredKSchott](https://github.com/FredKSchott)! - Update README
-
-* [#3185](https://github.com/withastro/astro/pull/3185) [`eaad1769`](https://github.com/withastro/astro/commit/eaad17694f2120ddbd083bb1754e4418b8ea6aa9) Thanks [@JuanM04](https://github.com/JuanM04)! - Fixed `trailingSlash` for non-HTML pages
-
-- [#3176](https://github.com/withastro/astro/pull/3176) [`725c44a7`](https://github.com/withastro/astro/commit/725c44a762dbc2f45a1d47ffa31b7e6e0b22ff95) Thanks [@JuanM04](https://github.com/JuanM04)! - Support trailingSlash
-
-## 0.1.3
-
-### Patch Changes
-
-- [#3051](https://github.com/withastro/astro/pull/3051) [`b0ba22c5`](https://github.com/withastro/astro/commit/b0ba22c5ffab6575706ae904d0ad8cadc3f48d43) Thanks [@JuanM04](https://github.com/JuanM04)! - Fixed issues when converting from ESM to CJS
-
-* [#3139](https://github.com/withastro/astro/pull/3139) [`4ac37973`](https://github.com/withastro/astro/commit/4ac3797344943df4124abd4043deda624440f035) Thanks [@JuanM04](https://github.com/JuanM04)! - Added warning when `ENABLE_FILE_SYSTEM_API` is not found
-
-## 0.1.2
-
-### Patch Changes
-
-- [#3081](https://github.com/withastro/astro/pull/3081) [`f665d1a2`](https://github.com/withastro/astro/commit/f665d1a250ef34a9d1cbced9e4441c7e2dc246b8) Thanks [@JuanM04](https://github.com/JuanM04)! - Support dynamic paths
-
-## 0.1.1
-
-### Patch Changes
-
-- [`815d62f1`](https://github.com/withastro/astro/commit/815d62f151a36fef7d09590d4962ca71bda61b32) Thanks [@FredKSchott](https://github.com/FredKSchott)! - no changes.
-
-## 0.1.0
-
-### Patch Changes
-
-- [#3028](https://github.com/withastro/astro/pull/3028) [`982f64f6`](https://github.com/withastro/astro/commit/982f64f69a82d3c5f99b326a2ddcd368435d9b4a) Thanks [@JuanM04](https://github.com/JuanM04)! - Updated esbuild
-
-* [#3008](https://github.com/withastro/astro/pull/3008) [`8bd49c95`](https://github.com/withastro/astro/commit/8bd49c95365f7bbce41e19b7e8658ad639c22f31) Thanks [@JuanM04](https://github.com/JuanM04)! - Updated integrations' `astro:build:done` hook: now it matches the client dist when using SSR
-
-- [#3022](https://github.com/withastro/astro/pull/3022) [`8c04ff1f`](https://github.com/withastro/astro/commit/8c04ff1f0bea42d033832ce5047076e315cb38a3) Thanks [@matthewp](https://github.com/matthewp)! - Allows adapters to export default
-
-* [#3000](https://github.com/withastro/astro/pull/3000) [`b5ed099e`](https://github.com/withastro/astro/commit/b5ed099eaf92b61faf2fb66ebd7179d3e8223ae5) Thanks [@JuanM04](https://github.com/JuanM04)! - Fixed build directory and clean-up
-
-## 0.0.3-beta.1
-
-### Patch Changes
-
-- [#3022](https://github.com/withastro/astro/pull/3022) [`8c04ff1f`](https://github.com/withastro/astro/commit/8c04ff1f0bea42d033832ce5047076e315cb38a3) Thanks [@matthewp](https://github.com/matthewp)! - Allows adapters to export default
-
-## 0.0.3-beta.0
-
-### Patch Changes
-
-- [#3008](https://github.com/withastro/astro/pull/3008) [`8bd49c95`](https://github.com/withastro/astro/commit/8bd49c95365f7bbce41e19b7e8658ad639c22f31) Thanks [@JuanM04](https://github.com/JuanM04)! - Updated integrations' `astro:build:done` hook: now it matches the client dist when using SSR
-
-* [#3000](https://github.com/withastro/astro/pull/3000) [`b5ed099e`](https://github.com/withastro/astro/commit/b5ed099eaf92b61faf2fb66ebd7179d3e8223ae5) Thanks [@JuanM04](https://github.com/JuanM04)! - Fixed build directory and clean-up
-
-## 0.0.2
-
-### Patch Changes
-
-- [#2915](https://github.com/withastro/astro/pull/2915) [`e30aa4df`](https://github.com/withastro/astro/commit/e30aa4dfef2bbe874e2fe7f07232bf8a3c092317) Thanks [@JuanM04](https://github.com/JuanM04)! - Add a Vercel adapter for SSR
diff --git a/packages/integrations/vercel/README.md b/packages/integrations/vercel/README.md
index f0f553028..a9c91875f 100644
--- a/packages/integrations/vercel/README.md
+++ b/packages/integrations/vercel/README.md
@@ -1,38 +1,3 @@
# @astrojs/vercel
-This adapter allows Astro to deploy your SSR site to [Vercel](https://www.vercel.com/).
-
-## Documentation
-
-Read the [`@astrojs/vercel` docs][docs]
-
-## Support
-
-- Get help in the [Astro Discord][discord]. Post questions in our `#support` forum, or visit our dedicated `#dev` channel to discuss current development and more!
-
-- Check our [Astro Integration Documentation][astro-integration] for more on integrations.
-
-- Submit bug reports and feature requests as [GitHub issues][issues].
-
-## Contributing
-
-This package is maintained by Astro's Core team. You're welcome to submit an issue or PR! These links will help you get started:
-
-- [Contributor Manual][contributing]
-- [Code of Conduct][coc]
-- [Community Guide][community]
-
-## License
-
-MIT
-
-Copyright (c) 2023–present [Astro][astro]
-
-[astro]: https://astro.build/
-[docs]: https://docs.astro.build/en/guides/integrations-guide/vercel/
-[contributing]: https://github.com/withastro/astro/blob/main/CONTRIBUTING.md
-[coc]: https://github.com/withastro/.github/blob/main/CODE_OF_CONDUCT.md
-[community]: https://github.com/withastro/.github/blob/main/COMMUNITY_GUIDE.md
-[discord]: https://astro.build/chat/
-[issues]: https://github.com/withastro/astro/issues
-[astro-integration]: https://docs.astro.build/en/guides/integrations-guide/
+The Vercel adapter package has moved. Please see [the new repository for the Vercel adapter](https://github.com/withastro/adapters/tree/main/packages/vercel).
diff --git a/packages/integrations/vercel/src/image/build-service.ts b/packages/integrations/vercel/src/image/build-service.ts
deleted file mode 100644
index e793b896e..000000000
--- a/packages/integrations/vercel/src/image/build-service.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import type { ExternalImageService } from 'astro';
-import { baseService } from 'astro/assets';
-import { isESMImportedImage, sharedValidateOptions } from './shared.js';
-
-const service: ExternalImageService = {
- ...baseService,
- validateOptions: (options, serviceOptions) =>
- sharedValidateOptions(options, serviceOptions.service.config, 'production'),
- getHTMLAttributes(options) {
- const { inputtedWidth, ...props } = options;
-
- // If `validateOptions` returned a different width than the one of the image, use it for attributes
- if (inputtedWidth) {
- props.width = inputtedWidth;
- }
-
- let targetWidth = props.width;
- let targetHeight = props.height;
- if (isESMImportedImage(props.src)) {
- const aspectRatio = props.src.width / props.src.height;
- if (targetHeight && !targetWidth) {
- // If we have a height but no width, use height to calculate the width
- targetWidth = Math.round(targetHeight * aspectRatio);
- } else if (targetWidth && !targetHeight) {
- // If we have a width but no height, use width to calculate the height
- targetHeight = Math.round(targetWidth / aspectRatio);
- } else if (!targetWidth && !targetHeight) {
- // If we have neither width or height, use the original image's dimensions
- targetWidth = props.src.width;
- targetHeight = props.src.height;
- }
- }
-
- const { src, width, height, format, quality, densities, widths, formats, ...attributes } =
- options;
-
- return {
- ...attributes,
- width: targetWidth,
- height: targetHeight,
- loading: attributes.loading ?? 'lazy',
- decoding: attributes.decoding ?? 'async',
- };
- },
- getURL(options) {
- const fileSrc = isESMImportedImage(options.src)
- ? removeLeadingForwardSlash(options.src.src)
- : options.src;
-
- const searchParams = new URLSearchParams();
- searchParams.append('url', fileSrc);
-
- options.width && searchParams.append('w', options.width.toString());
- options.quality && searchParams.append('q', options.quality.toString());
-
- return '/_vercel/image?' + searchParams;
- },
-};
-
-function removeLeadingForwardSlash(path: string) {
- return path.startsWith('/') ? path.substring(1) : path;
-}
-
-export default service;
diff --git a/packages/integrations/vercel/src/image/dev-service.ts b/packages/integrations/vercel/src/image/dev-service.ts
deleted file mode 100644
index c9702cff9..000000000
--- a/packages/integrations/vercel/src/image/dev-service.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import type { LocalImageService } from 'astro';
-import sharpService from 'astro/assets/services/sharp';
-import { baseDevService } from './shared-dev-service.js';
-
-const service: LocalImageService = {
- ...baseDevService,
- getHTMLAttributes(options, serviceOptions) {
- const { inputtedWidth, ...props } = options;
-
- // If `validateOptions` returned a different width than the one of the image, use it for attributes
- if (inputtedWidth) {
- props.width = inputtedWidth;
- }
-
- return sharpService.getHTMLAttributes
- ? sharpService.getHTMLAttributes(props, serviceOptions)
- : {};
- },
- transform(inputBuffer, transform, serviceOptions) {
- // NOTE: Hardcoding webp here isn't accurate to how the Vercel Image Optimization API works, normally what we should
- // do is setup a custom endpoint that sniff the user's accept-content header and serve the proper format based on the
- // user's Vercel config. However, that's: a lot of work for: not much. The dev service is inaccurate to the prod service
- // in many more ways, this is one of the less offending cases and is, imo, okay, erika - 2023-04-27
- transform.format = transform.src.endsWith('svg') ? 'svg' : 'webp';
-
- // The base sharp service works the same way as the Vercel Image Optimization API, so it's a safe fallback in local
- return sharpService.transform(inputBuffer, transform, serviceOptions);
- },
-};
-
-export default service;
diff --git a/packages/integrations/vercel/src/image/shared-dev-service.ts b/packages/integrations/vercel/src/image/shared-dev-service.ts
deleted file mode 100644
index 8ca87e99a..000000000
--- a/packages/integrations/vercel/src/image/shared-dev-service.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import type { LocalImageService } from 'astro';
-import { baseService } from 'astro/assets';
-import { sharedValidateOptions } from './shared.js';
-
-export const baseDevService: Omit<LocalImageService, 'transform'> = {
- ...baseService,
- validateOptions: (options, serviceOptions) =>
- sharedValidateOptions(options, serviceOptions.service.config, 'development'),
- getURL(options) {
- const fileSrc = typeof options.src === 'string' ? options.src : options.src.src;
-
- const searchParams = new URLSearchParams();
- searchParams.append('href', fileSrc);
-
- options.width && searchParams.append('w', options.width.toString());
- options.quality && searchParams.append('q', options.quality.toString());
-
- return '/_image?' + searchParams;
- },
- parseURL(url) {
- const params = url.searchParams;
-
- if (!params.has('href')) {
- return undefined;
- }
-
- const transform = {
- src: params.get('href')!,
- width: params.has('w') ? parseInt(params.get('w')!) : undefined,
- quality: params.get('q'),
- };
-
- return transform;
- },
-};
diff --git a/packages/integrations/vercel/src/image/shared.ts b/packages/integrations/vercel/src/image/shared.ts
deleted file mode 100644
index 0a2575985..000000000
--- a/packages/integrations/vercel/src/image/shared.ts
+++ /dev/null
@@ -1,163 +0,0 @@
-import type { AstroConfig, ImageMetadata, ImageQualityPreset, ImageTransform } from 'astro';
-
-export function getDefaultImageConfig(astroImageConfig: AstroConfig['image']): VercelImageConfig {
- return {
- sizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
- domains: astroImageConfig.domains ?? [],
- // Cast is necessary here because Vercel's types are slightly different from ours regarding allowed protocols. Behavior should be the same, however.
- remotePatterns: (astroImageConfig.remotePatterns as VercelImageConfig['remotePatterns']) ?? [],
- };
-}
-
-export function isESMImportedImage(src: ImageMetadata | string): src is ImageMetadata {
- return typeof src === 'object';
-}
-
-export type DevImageService = 'sharp' | (string & {});
-
-// https://vercel.com/docs/build-output-api/v3/configuration#images
-type ImageFormat = 'image/avif' | 'image/webp';
-
-type RemotePattern = {
- protocol?: 'http' | 'https';
- hostname: string;
- port?: string;
- pathname?: string;
-};
-
-export type VercelImageConfig = {
- /**
- * Supported image widths.
- */
- sizes: number[];
- /**
- * Allowed external domains that can use Image Optimization. Leave empty for only allowing the deployment domain to use Image Optimization.
- */
- domains: string[];
- /**
- * Allowed external patterns that can use Image Optimization. Similar to `domains` but provides more control with RegExp.
- */
- remotePatterns?: RemotePattern[];
- /**
- * Cache duration (in seconds) for the optimized images.
- */
- minimumCacheTTL?: number;
- /**
- * Supported output image formats
- */
- formats?: ImageFormat[];
- /**
- * Allow SVG input image URLs. This is disabled by default for security purposes.
- */
- dangerouslyAllowSVG?: boolean;
- /**
- * Change the [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) of the optimized images.
- */
- contentSecurityPolicy?: string;
-};
-
-export const qualityTable: Record<ImageQualityPreset, number> = {
- low: 25,
- mid: 50,
- high: 80,
- max: 100,
-};
-
-export function getAstroImageConfig(
- images: boolean | undefined,
- imagesConfig: VercelImageConfig | undefined,
- command: string,
- devImageService: DevImageService,
- astroImageConfig: AstroConfig['image'],
-) {
- let devService = '@astrojs/vercel/dev-image-service';
-
- switch (devImageService) {
- case 'sharp':
- devService = '@astrojs/vercel/dev-image-service';
- break;
- default:
- if (typeof devImageService === 'string') {
- devService = devImageService;
- } else {
- devService = '@astrojs/vercel/dev-image-service';
- }
- break;
- }
-
- if (images) {
- return {
- image: {
- service: {
- entrypoint: command === 'dev' ? devService : '@astrojs/vercel/build-image-service',
- config: imagesConfig ? imagesConfig : getDefaultImageConfig(astroImageConfig),
- },
- },
- };
- }
-
- return {};
-}
-
-export function sharedValidateOptions(
- options: ImageTransform,
- serviceConfig: Record<string, any>,
- mode: 'development' | 'production',
-) {
- const vercelImageOptions = serviceConfig as VercelImageConfig;
-
- if (
- mode === 'development' &&
- (!vercelImageOptions.sizes || vercelImageOptions.sizes.length === 0)
- ) {
- throw new Error('Vercel Image Optimization requires at least one size to be configured.');
- }
-
- const configuredWidths = vercelImageOptions.sizes.sort((a, b) => a - b);
-
- // The logic for finding the perfect width is a bit confusing, here it goes:
- // For images where no width has been specified:
- // - For local, imported images, fallback to nearest width we can find in our configured
- // - For remote images, that's an error, width is always required.
- // For images where a width has been specified:
- // - If the width that the user asked for isn't in `sizes`, then fallback to the nearest one, but save the width
- // the user asked for so we can put it on the `img` tag later.
- // - Otherwise, just use as-is.
- // The end goal is:
- // - The size on the page is always the one the user asked for or the base image's size
- // - The actual size of the image file is always one of `sizes`, either the one the user asked for or the nearest to it
- if (!options.width) {
- const src = options.src;
- if (isESMImportedImage(src)) {
- const nearestWidth = configuredWidths.reduce((prev, curr) => {
- return Math.abs(curr - src.width) < Math.abs(prev - src.width) ? curr : prev;
- });
-
- // Use the image's base width to inform the `width` and `height` on the `img` tag
- options.inputtedWidth = src.width;
- options.width = nearestWidth;
- } else {
- throw new Error(`Missing \`width\` parameter for remote image ${options.src}`);
- }
- } else {
- if (!configuredWidths.includes(options.width)) {
- const nearestWidth = configuredWidths.reduce((prev, curr) => {
- return Math.abs(curr - options.width!) < Math.abs(prev - options.width!) ? curr : prev;
- });
-
- // Save the width the user asked for to inform the `width` and `height` on the `img` tag
- options.inputtedWidth = options.width;
- options.width = nearestWidth;
- }
- }
-
- if (options.quality && typeof options.quality === 'string') {
- options.quality = options.quality in qualityTable ? qualityTable[options.quality] : undefined;
- }
-
- if (!options.quality) {
- options.quality = 100;
- }
-
- return options;
-}
diff --git a/packages/integrations/vercel/src/lib/nft.ts b/packages/integrations/vercel/src/lib/nft.ts
deleted file mode 100644
index 7f21f3f27..000000000
--- a/packages/integrations/vercel/src/lib/nft.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-import { relative as relativePath } from 'node:path';
-import { fileURLToPath } from 'node:url';
-import { copyFilesToFolder } from '@astrojs/internal-helpers/fs';
-import type { AstroIntegrationLogger } from 'astro';
-
-export async function copyDependenciesToFunction(
- {
- entry,
- outDir,
- includeFiles,
- excludeFiles,
- logger,
- }: {
- entry: URL;
- outDir: URL;
- includeFiles: URL[];
- excludeFiles: URL[];
- logger: AstroIntegrationLogger;
- },
- // we want to pass the caching by reference, and not by value
- cache: object,
-): Promise<{ handler: string }> {
- const entryPath = fileURLToPath(entry);
- logger.info(`Bundling function ${relativePath(fileURLToPath(outDir), entryPath)}`);
-
- // Get root of folder of the system (like C:\ on Windows or / on Linux)
- let base = entry;
- while (fileURLToPath(base) !== fileURLToPath(new URL('../', base))) {
- base = new URL('../', base);
- }
-
- // The Vite bundle includes an import to `@vercel/nft` for some reason,
- // and that trips up `@vercel/nft` itself during the adapter build. Using a
- // dynamic import helps prevent the issue.
- // TODO: investigate why
- const { nodeFileTrace } = await import('@vercel/nft');
- const result = await nodeFileTrace([entryPath], {
- base: fileURLToPath(base),
- // If you have a route of /dev this appears in source and NFT will try to
- // scan your local /dev :8
- ignore: ['/dev/**'],
- cache,
- });
-
- for (const error of result.warnings) {
- if (error.message.startsWith('Failed to resolve dependency')) {
- const [, module, file] = /Cannot find module '(.+?)' loaded from (.+)/.exec(error.message)!;
-
- // The import(astroRemark) sometimes fails to resolve, but it's not a problem
- if (module === '@astrojs/') continue;
-
- // Sharp is always external and won't be able to be resolved, but that's also not a problem
- if (module === 'sharp') continue;
-
- if (entryPath === file) {
- logger.debug(
- `[@astrojs/vercel] The module "${module}" couldn't be resolved. This may not be a problem, but it's worth checking.`,
- );
- } else {
- logger.debug(
- `[@astrojs/vercel] The module "${module}" inside the file "${file}" couldn't be resolved. This may not be a problem, but it's worth checking.`,
- );
- }
- }
- // parse errors are likely not js and can safely be ignored,
- // such as this html file in "main" meant for nw instead of node:
- // https://github.com/vercel/nft/issues/311
- else if (error.message.startsWith('Failed to parse')) {
- continue;
- } else {
- throw error;
- }
- }
-
- const commonAncestor = await copyFilesToFolder(
- [...result.fileList].map((file) => new URL(file, base)).concat(includeFiles),
- outDir,
- excludeFiles,
- );
-
- return {
- // serverEntry location inside the outDir
- handler: relativePath(commonAncestor, entryPath),
- };
-}
diff --git a/packages/integrations/vercel/src/lib/prerender.ts b/packages/integrations/vercel/src/lib/prerender.ts
deleted file mode 100644
index f69f3b5d4..000000000
--- a/packages/integrations/vercel/src/lib/prerender.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import type { AstroConfig } from 'astro';
-
-export function isServerLikeOutput(config: AstroConfig) {
- return config.output === 'server' || config.output === 'hybrid';
-}
diff --git a/packages/integrations/vercel/src/lib/redirects.ts b/packages/integrations/vercel/src/lib/redirects.ts
deleted file mode 100644
index 1e476cb1f..000000000
--- a/packages/integrations/vercel/src/lib/redirects.ts
+++ /dev/null
@@ -1,144 +0,0 @@
-import nodePath from 'node:path';
-import { appendForwardSlash, removeLeadingForwardSlash } from '@astrojs/internal-helpers/path';
-import type { AstroConfig, RouteData, RoutePart } from 'astro';
-
-const pathJoin = nodePath.posix.join;
-
-// https://vercel.com/docs/project-configuration#legacy/routes
-interface VercelRoute {
- src: string;
- methods?: string[];
- dest?: string;
- headers?: Record<string, string>;
- status?: number;
- continue?: boolean;
-}
-
-// Copied from astro/packages/astro/src/core/routing/manifest/create.ts
-// Disable eslint as we're not sure how to improve this regex yet
-// eslint-disable-next-line regexp/no-super-linear-backtracking
-const ROUTE_DYNAMIC_SPLIT = /\[(.+?\(.+?\)|.+?)\]/;
-const ROUTE_SPREAD = /^\.{3}.+$/;
-function getParts(part: string, file: string) {
- const result: RoutePart[] = [];
- part.split(ROUTE_DYNAMIC_SPLIT).map((str, i) => {
- if (!str) return;
- const dynamic = i % 2 === 1;
-
- const [, content] = dynamic ? /([^(]+)$/.exec(str) || [null, null] : [null, str];
-
- if (!content || (dynamic && !/^(?:\.\.\.)?[\w$]+$/.test(content))) {
- throw new Error(`Invalid route ${file} — parameter name must match /^[a-zA-Z0-9_$]+$/`);
- }
-
- result.push({
- content,
- dynamic,
- spread: dynamic && ROUTE_SPREAD.test(content),
- });
- });
-
- return result;
-}
-
-// Copied from /home/juanm04/dev/misc/astro/packages/astro/src/core/routing/manifest/create.ts
-// 2022-04-26
-function getMatchPattern(segments: RoutePart[][]) {
- return segments
- .map((segment) => {
- return segment[0].spread
- ? '(?:\\/(.*?))?'
- : segment
- .map((part) => {
- if (part)
- return part.dynamic
- ? '([^/]+?)'
- : part.content
- .normalize()
- .replace(/\?/g, '%3F')
- .replace(/#/g, '%23')
- .replace(/%5B/g, '[')
- .replace(/%5D/g, ']')
- .replace(/[*+?^${}()|[\]\\]/g, '\\$&');
- })
- .join('');
- })
- .join('/');
-}
-
-function getReplacePattern(segments: RoutePart[][]) {
- let n = 0;
- let result = '';
-
- for (const segment of segments) {
- for (const part of segment) {
- if (part.dynamic) result += '$' + ++n;
- else result += part.content;
- }
- result += '/';
- }
-
- // Remove trailing slash
- result = result.slice(0, -1);
-
- return result;
-}
-
-function getRedirectLocation(route: RouteData, config: AstroConfig): string {
- if (route.redirectRoute) {
- const pattern = getReplacePattern(route.redirectRoute.segments);
- const path = config.trailingSlash === 'always' ? appendForwardSlash(pattern) : pattern;
- return pathJoin(config.base, path);
- } else if (typeof route.redirect === 'object') {
- return pathJoin(config.base, route.redirect.destination);
- } else {
- return pathJoin(config.base, route.redirect || '');
- }
-}
-
-function getRedirectStatus(route: RouteData): number {
- if (typeof route.redirect === 'object') {
- return route.redirect.status;
- }
- return 301;
-}
-
-export function escapeRegex(content: string) {
- const segments = removeLeadingForwardSlash(content)
- .split(nodePath.posix.sep)
- .filter(Boolean)
- .map((s: string) => {
- return getParts(s, content);
- });
- return `^/${getMatchPattern(segments)}$`;
-}
-
-export function getRedirects(routes: RouteData[], config: AstroConfig): VercelRoute[] {
- let redirects: VercelRoute[] = [];
-
- for (const route of routes) {
- if (route.type === 'redirect') {
- redirects.push({
- src: config.base + getMatchPattern(route.segments),
- headers: { Location: getRedirectLocation(route, config) },
- status: getRedirectStatus(route),
- });
- } else if (route.type === 'page' && route.route !== '/') {
- if (config.trailingSlash === 'always') {
- redirects.push({
- src: config.base + getMatchPattern(route.segments),
- headers: { Location: config.base + getReplacePattern(route.segments) + '/' },
- status: 308,
- });
- } else if (config.trailingSlash === 'never') {
- redirects.push({
- src: config.base + getMatchPattern(route.segments) + '/',
- headers: { Location: config.base + getReplacePattern(route.segments) },
- status: 308,
- });
- }
- }
- }
-
- return redirects;
-}
diff --git a/packages/integrations/vercel/src/lib/speed-insights.ts b/packages/integrations/vercel/src/lib/speed-insights.ts
deleted file mode 100644
index 8e3639536..000000000
--- a/packages/integrations/vercel/src/lib/speed-insights.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-export type VercelSpeedInsightsConfig = {
- enabled: boolean;
-};
-
-export function getSpeedInsightsViteConfig(enabled?: boolean) {
- if (enabled) {
- return {
- define: exposeEnv(['VERCEL_ANALYTICS_ID']),
- };
- }
-
- return {};
-}
-
-/**
- * While Vercel adds the `PUBLIC_` prefix for their `VERCEL_` env vars by default, some env vars
- * like `VERCEL_ANALYTICS_ID` aren't, so handle them here so that it works correctly in runtime.
- */
-export function exposeEnv(envs: string[]): Record<string, unknown> {
- const mapped: Record<string, unknown> = {};
-
- envs
- .filter((env) => process.env[env])
- .forEach((env) => {
- mapped[`import.meta.env.PUBLIC_${env}`] = JSON.stringify(process.env[env]);
- });
-
- return mapped;
-}
diff --git a/packages/integrations/vercel/src/lib/web-analytics.ts b/packages/integrations/vercel/src/lib/web-analytics.ts
deleted file mode 100644
index d6ee4d78d..000000000
--- a/packages/integrations/vercel/src/lib/web-analytics.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-export type VercelWebAnalyticsConfig = {
- enabled: boolean;
-};
-
-export async function getInjectableWebAnalyticsContent({
- mode,
-}: {
- mode: 'development' | 'production';
-}) {
- const base = `window.va = window.va || function () { (window.vaq = window.vaq || []).push(arguments); };`;
-
- if (mode === 'development') {
- return `
- ${base}
- var script = document.createElement('script');
- script.defer = true;
- script.src = 'https://cdn.vercel-insights.com/v1/script.debug.js';
- var head = document.querySelector('head');
- head.appendChild(script);
- `;
- }
-
- return `${base}
- var script = document.createElement('script');
- script.defer = true;
- script.src = '/_vercel/insights/script.js';
- var head = document.querySelector('head');
- head.appendChild(script);
- `;
-}
diff --git a/packages/integrations/vercel/src/serverless/adapter.ts b/packages/integrations/vercel/src/serverless/adapter.ts
deleted file mode 100644
index 3b86cec0e..000000000
--- a/packages/integrations/vercel/src/serverless/adapter.ts
+++ /dev/null
@@ -1,562 +0,0 @@
-import { existsSync, readFileSync } from 'node:fs';
-import { basename } from 'node:path';
-import { pathToFileURL } from 'node:url';
-import { removeDir, writeJson } from '@astrojs/internal-helpers/fs';
-import type {
- AstroAdapter,
- AstroConfig,
- AstroIntegration,
- AstroIntegrationLogger,
- RouteData,
-} from 'astro';
-import { AstroError } from 'astro/errors';
-import glob from 'fast-glob';
-import {
- type DevImageService,
- type VercelImageConfig,
- getAstroImageConfig,
- getDefaultImageConfig,
-} from '../image/shared.js';
-import { copyDependenciesToFunction } from '../lib/nft.js';
-import { escapeRegex, getRedirects } from '../lib/redirects.js';
-import {
- type VercelSpeedInsightsConfig,
- getSpeedInsightsViteConfig,
-} from '../lib/speed-insights.js';
-import {
- type VercelWebAnalyticsConfig,
- getInjectableWebAnalyticsContent,
-} from '../lib/web-analytics.js';
-import { generateEdgeMiddleware } from './middleware.js';
-
-const PACKAGE_NAME = '@astrojs/vercel/serverless';
-
-/**
- * The edge function calls the node server at /_render,
- * with the original path as the value of this header.
- */
-export const ASTRO_PATH_HEADER = 'x-astro-path';
-export const ASTRO_PATH_PARAM = 'x_astro_path';
-
-/**
- * The edge function calls the node server at /_render,
- * with the locals serialized into this header.
- */
-export const ASTRO_LOCALS_HEADER = 'x-astro-locals';
-export const ASTRO_MIDDLEWARE_SECRET_HEADER = 'x-astro-middleware-secret';
-export const VERCEL_EDGE_MIDDLEWARE_FILE = 'vercel-edge-middleware';
-
-// Vercel routes the folder names to a path on the deployed website.
-// We attempt to avoid interfering by prefixing with an underscore.
-export const NODE_PATH = '_render';
-const MIDDLEWARE_PATH = '_middleware';
-
-// This isn't documented by vercel anywhere, but unlike serverless
-// and edge functions, isr functions are not passed the original path.
-// Instead, we have to use $0 to refer to the regex match from "src".
-const ISR_PATH = `/_isr?${ASTRO_PATH_PARAM}=$0`;
-
-// https://vercel.com/docs/concepts/functions/serverless-functions/runtimes/node-js#node.js-version
-const SUPPORTED_NODE_VERSIONS: Record<
- string,
- | { status: 'default' }
- | { status: 'beta' }
- | { status: 'retiring'; removal: Date | string; warnDate: Date }
- | { status: 'deprecated'; removal: Date }
-> = {
- 18: { status: 'retiring', removal: 'Early 2025', warnDate: new Date('October 1 2024') },
- 20: { status: 'default' },
-};
-
-function getAdapter({
- edgeMiddleware,
- middlewareSecret,
- skewProtection,
-}: {
- edgeMiddleware: boolean;
- middlewareSecret: string;
- skewProtection: boolean;
-}): AstroAdapter {
- return {
- name: PACKAGE_NAME,
- serverEntrypoint: `${PACKAGE_NAME}/entrypoint`,
- exports: ['default'],
- args: { middlewareSecret, skewProtection },
- adapterFeatures: {
- edgeMiddleware,
- },
- supportedAstroFeatures: {
- hybridOutput: 'stable',
- staticOutput: 'stable',
- serverOutput: 'stable',
- assets: {
- supportKind: 'stable',
- isSharpCompatible: true,
- },
- i18nDomains: 'experimental',
- envGetSecret: 'stable',
- },
- };
-}
-
-export interface VercelServerlessConfig {
- /** Configuration for [Vercel Web Analytics](https://vercel.com/docs/concepts/analytics). */
- webAnalytics?: VercelWebAnalyticsConfig;
-
- /**
- * @deprecated This option lets you configure the legacy speed insights API which is now deprecated by Vercel.
- *
- * See [Vercel Speed Insights Quickstart](https://vercel.com/docs/speed-insights/quickstart) for instructions on how to use the library instead.
- *
- * https://vercel.com/docs/speed-insights/quickstart
- */
- speedInsights?: VercelSpeedInsightsConfig;
-
- /** Force files to be bundled with your function. This is helpful when you notice missing files. */
- includeFiles?: string[];
-
- /** Exclude any files from the bundling process that would otherwise be included. */
- excludeFiles?: string[];
-
- /** When enabled, an Image Service powered by the Vercel Image Optimization API will be automatically configured and used in production. In development, the image service specified by devImageService will be used instead. */
- imageService?: boolean;
-
- /** Configuration options for [Vercel’s Image Optimization API](https://vercel.com/docs/concepts/image-optimization). See [Vercel’s image configuration documentation](https://vercel.com/docs/build-output-api/v3/configuration#images) for a complete list of supported parameters. */
- imagesConfig?: VercelImageConfig;
-
- /** Allows you to configure which image service to use in development when imageService is enabled. */
- devImageService?: DevImageService;
-
- /** Whether to create the Vercel Edge middleware from an Astro middleware in your code base. */
- edgeMiddleware?: boolean;
-
- /** The maximum duration (in seconds) that Serverless Functions can run before timing out. See the [Vercel documentation](https://vercel.com/docs/functions/serverless-functions/runtimes#maxduration) for the default and maximum limit for your account plan. */
- maxDuration?: number;
-
- /** Whether to cache on-demand rendered pages in the same way as static files. */
- isr?: boolean | VercelISRConfig;
- /**
- * It enables Vercel skew protection: https://vercel.com/docs/deployments/skew-protection
- */
- skewProtection?: boolean;
-}
-
-interface VercelISRConfig {
- /**
- * A secret random string that you create.
- * Its presence in the `__prerender_bypass` cookie will result in fresh responses being served, bypassing the cache. See Vercel’s documentation on [Draft Mode](https://vercel.com/docs/build-output-api/v3/features#draft-mode) for more information.
- * Its presence in the `x-prerender-revalidate` header will result in a fresh response which will then be cached for all future requests to be used. See Vercel’s documentation on [On-Demand Incremental Static Regeneration (ISR)](https://vercel.com/docs/build-output-api/v3/features#on-demand-incremental-static-regeneration-isr) for more information.
- *
- * @default `undefined`
- */
- bypassToken?: string;
-
- /**
- * Expiration time (in seconds) before the pages will be re-generated.
- *
- * Setting to `false` means that the page will stay cached as long as the current deployment is in production.
- *
- * @default `false`
- */
- expiration?: number | false;
-
- /**
- * Paths that will always be served by a serverless function instead of an ISR function.
- *
- * @default `[]`
- */
- exclude?: string[];
-}
-
-export default function vercelServerless({
- webAnalytics,
- speedInsights,
- includeFiles: _includeFiles = [],
- excludeFiles: _excludeFiles = [],
- imageService,
- imagesConfig,
- devImageService = 'sharp',
- edgeMiddleware = false,
- maxDuration,
- isr = false,
- skewProtection = false,
-}: VercelServerlessConfig = {}): AstroIntegration {
- if (maxDuration) {
- if (typeof maxDuration !== 'number') {
- throw new TypeError(`maxDuration must be a number`, { cause: maxDuration });
- }
- if (maxDuration <= 0) {
- throw new TypeError(`maxDuration must be a positive number`, { cause: maxDuration });
- }
- }
-
- let _config: AstroConfig;
- let _buildTempFolder: URL;
- let _serverEntry: string;
- let _entryPoints: Map<RouteData, URL>;
- let _middlewareEntryPoint: URL | undefined;
- // Extra files to be merged with `includeFiles` during build
- const extraFilesToInclude: URL[] = [];
- // Secret used to verify that the caller is the astro-generated edge middleware and not a third-party
- const middlewareSecret = crypto.randomUUID();
-
- return {
- name: PACKAGE_NAME,
- hooks: {
- 'astro:config:setup': async ({ command, config, updateConfig, injectScript, logger }) => {
- if (maxDuration && maxDuration > 900) {
- logger.warn(
- `maxDuration is set to ${maxDuration} seconds, which is longer than the maximum allowed duration of 900 seconds.`,
- );
- logger.warn(
- `Please make sure that your plan allows for this duration. See https://vercel.com/docs/functions/serverless-functions/runtimes#maxduration for more information.`,
- );
- }
-
- if (webAnalytics?.enabled) {
- injectScript(
- 'head-inline',
- await getInjectableWebAnalyticsContent({
- mode: command === 'dev' ? 'development' : 'production',
- }),
- );
- }
- if (command === 'build' && speedInsights?.enabled) {
- injectScript('page', 'import "@astrojs/vercel/speed-insights"');
- }
-
- const vercelConfigPath = new URL('vercel.json', config.root);
- if (existsSync(vercelConfigPath)) {
- try {
- const vercelConfig = JSON.parse(readFileSync(vercelConfigPath, 'utf-8'));
- if (vercelConfig.trailingSlash === true && config.trailingSlash === 'always') {
- logger.warn(
- '\n' +
- `\tYour "vercel.json" \`trailingSlash\` configuration (set to \`true\`) will conflict with your Astro \`trailinglSlash\` configuration (set to \`"always"\`).\n` +
- `\tThis would cause infinite redirects under certain conditions and throw an \`ERR_TOO_MANY_REDIRECTS\` error.\n` +
- `\tTo prevent this, your Astro configuration is updated to \`"ignore"\` during builds.\n`,
- );
- updateConfig({
- trailingSlash: 'ignore',
- });
- }
- } catch (_err) {
- logger.warn(`Your "vercel.json" config is not a valid json file.`);
- }
- }
-
- updateConfig({
- outDir: new URL('./.vercel/output/', config.root),
- build: {
- client: new URL('./.vercel/output/static/', config.root),
- server: new URL('./.vercel/output/_functions/', config.root),
- redirects: false,
- },
- vite: {
- ...getSpeedInsightsViteConfig(speedInsights?.enabled),
- ssr: {
- external: [
- '@vercel/nft',
- ...((await shouldExternalizeAstroEnvSetup()) ? ['astro/env/setup'] : []),
- ],
- },
- },
- ...getAstroImageConfig(
- imageService,
- imagesConfig,
- command,
- devImageService,
- config.image,
- ),
- });
- },
- 'astro:config:done': ({ setAdapter, config }) => {
- setAdapter(getAdapter({ edgeMiddleware, middlewareSecret, skewProtection }));
-
- _config = config;
- _buildTempFolder = config.build.server;
- _serverEntry = config.build.serverEntry;
-
- if (config.output === 'static') {
- throw new AstroError(
- '`output: "server"` or `output: "hybrid"` is required to use the serverless adapter.',
- );
- }
- },
- 'astro:build:ssr': async ({ entryPoints, middlewareEntryPoint }) => {
- _entryPoints = new Map(
- Array.from(entryPoints).filter(([routeData]) => !routeData.prerender),
- );
- _middlewareEntryPoint = middlewareEntryPoint;
- },
- 'astro:build:done': async ({ routes, logger }) => {
- // Merge any includes from `vite.assetsInclude
- if (_config.vite.assetsInclude) {
- const mergeGlobbedIncludes = (globPattern: unknown) => {
- if (typeof globPattern === 'string') {
- const entries = glob.sync(globPattern).map((p) => pathToFileURL(p));
- extraFilesToInclude.push(...entries);
- } else if (Array.isArray(globPattern)) {
- for (const pattern of globPattern) {
- mergeGlobbedIncludes(pattern);
- }
- }
- };
-
- mergeGlobbedIncludes(_config.vite.assetsInclude);
- }
-
- const routeDefinitions: Array<{
- src: string;
- dest: string;
- middlewarePath?: string;
- }> = [];
-
- const includeFiles = _includeFiles
- .map((file) => new URL(file, _config.root))
- .concat(extraFilesToInclude);
- const excludeFiles = _excludeFiles.map((file) => new URL(file, _config.root));
-
- const builder = new VercelBuilder(_config, excludeFiles, includeFiles, logger, maxDuration);
-
- // Multiple entrypoint support
- if (_entryPoints.size) {
- const getRouteFuncName = (route: RouteData) => route.component.replace('src/pages/', '');
-
- const getFallbackFuncName = (entryFile: URL) =>
- basename(entryFile.toString())
- .replace('entry.', '')
- .replace(/\.mjs$/, '');
-
- for (const [route, entryFile] of _entryPoints) {
- const func = route.component.startsWith('src/pages/')
- ? getRouteFuncName(route)
- : getFallbackFuncName(entryFile);
-
- await builder.buildServerlessFolder(entryFile, func);
-
- routeDefinitions.push({
- src: route.pattern.source,
- dest: func,
- });
- }
- } else {
- const entryFile = new URL(_serverEntry, _buildTempFolder);
- if (isr) {
- const isrConfig = typeof isr === 'object' ? isr : {};
- await builder.buildServerlessFolder(entryFile, NODE_PATH);
- if (isrConfig.exclude?.length) {
- const dest = _middlewareEntryPoint ? MIDDLEWARE_PATH : NODE_PATH;
- for (const route of isrConfig.exclude) {
- // vercel interprets src as a regex pattern, so we need to escape it
- routeDefinitions.push({ src: escapeRegex(route), dest });
- }
- }
- await builder.buildISRFolder(entryFile, '_isr', isrConfig);
- for (const route of routes) {
- const src = route.pattern.source;
- const dest = src.startsWith('^\\/_image') ? NODE_PATH : ISR_PATH;
- if (!route.prerender) routeDefinitions.push({ src, dest });
- }
- } else {
- await builder.buildServerlessFolder(entryFile, NODE_PATH);
- const dest = _middlewareEntryPoint ? MIDDLEWARE_PATH : NODE_PATH;
- for (const route of routes) {
- if (!route.prerender) routeDefinitions.push({ src: route.pattern.source, dest });
- }
- }
- }
- if (_middlewareEntryPoint) {
- await builder.buildMiddlewareFolder(
- _middlewareEntryPoint,
- MIDDLEWARE_PATH,
- middlewareSecret,
- );
- }
- const fourOhFourRoute = routes.find((route) => route.pathname === '/404');
- // Output configuration
- // https://vercel.com/docs/build-output-api/v3#build-output-configuration
- await writeJson(new URL(`./config.json`, _config.outDir), {
- version: 3,
- routes: [
- ...getRedirects(routes, _config),
- {
- src: `^/${_config.build.assets}/(.*)$`,
- headers: { 'cache-control': 'public, max-age=31536000, immutable' },
- continue: true,
- },
- { handle: 'filesystem' },
- ...routeDefinitions,
- ...(fourOhFourRoute
- ? [
- {
- src: '/.*',
- dest: fourOhFourRoute.prerender
- ? '/404.html'
- : _middlewareEntryPoint
- ? MIDDLEWARE_PATH
- : NODE_PATH,
- status: 404,
- },
- ]
- : []),
- ],
- ...(imageService || imagesConfig
- ? {
- images: imagesConfig
- ? {
- ...imagesConfig,
- domains: [...imagesConfig.domains, ..._config.image.domains],
- remotePatterns: [
- ...(imagesConfig.remotePatterns ?? []),
- ..._config.image.remotePatterns,
- ],
- }
- : getDefaultImageConfig(_config.image),
- }
- : {}),
- });
-
- // Remove temporary folder
- await removeDir(_buildTempFolder);
- },
- },
- };
-}
-
-type Runtime = `nodejs${string}.x`;
-
-// TODO: remove once we don't use a TLA anymore
-async function shouldExternalizeAstroEnvSetup() {
- try {
- await import('astro/env/setup');
- return false;
- } catch {
- return true;
- }
-}
-
-class VercelBuilder {
- readonly NTF_CACHE = {};
-
- constructor(
- readonly config: AstroConfig,
- readonly excludeFiles: URL[],
- readonly includeFiles: URL[],
- readonly logger: AstroIntegrationLogger,
- readonly maxDuration?: number,
- readonly runtime = getRuntime(process, logger),
- ) {}
-
- async buildServerlessFolder(entry: URL, functionName: string) {
- const { config, includeFiles, excludeFiles, logger, NTF_CACHE, runtime, maxDuration } = this;
- // .vercel/output/functions/<name>.func/
- const functionFolder = new URL(`./functions/${functionName}.func/`, config.outDir);
- const packageJson = new URL(`./functions/${functionName}.func/package.json`, config.outDir);
- const vcConfig = new URL(`./functions/${functionName}.func/.vc-config.json`, config.outDir);
-
- // Copy necessary files (e.g. node_modules/)
- const { handler } = await copyDependenciesToFunction(
- {
- entry,
- outDir: functionFolder,
- includeFiles,
- excludeFiles,
- logger,
- },
- NTF_CACHE,
- );
-
- // Enable ESM
- // https://aws.amazon.com/blogs/compute/using-node-js-es-modules-and-top-level-await-in-aws-lambda/
- await writeJson(packageJson, { type: 'module' });
-
- // Serverless function config
- // https://vercel.com/docs/build-output-api/v3#vercel-primitives/serverless-functions/configuration
- await writeJson(vcConfig, {
- runtime,
- handler: handler.replaceAll('\\', '/'),
- launcherType: 'Nodejs',
- maxDuration,
- supportsResponseStreaming: true,
- });
- }
-
- async buildISRFolder(entry: URL, functionName: string, isr: VercelISRConfig) {
- await this.buildServerlessFolder(entry, functionName);
- const prerenderConfig = new URL(
- `./functions/${functionName}.prerender-config.json`,
- this.config.outDir,
- );
- // https://vercel.com/docs/build-output-api/v3/primitives#prerender-configuration-file
- await writeJson(prerenderConfig, {
- expiration: isr.expiration ?? false,
- bypassToken: isr.bypassToken,
- allowQuery: [ASTRO_PATH_PARAM],
- passQuery: true,
- });
- }
-
- async buildMiddlewareFolder(entry: URL, functionName: string, middlewareSecret: string) {
- const functionFolder = new URL(`./functions/${functionName}.func/`, this.config.outDir);
-
- await generateEdgeMiddleware(
- entry,
- this.config.root,
- new URL(VERCEL_EDGE_MIDDLEWARE_FILE, this.config.srcDir),
- new URL('./middleware.mjs', functionFolder),
- middlewareSecret,
- this.logger,
- );
-
- await writeJson(new URL(`./.vc-config.json`, functionFolder), {
- runtime: 'edge',
- entrypoint: 'middleware.mjs',
- });
- }
-}
-
-function getRuntime(process: NodeJS.Process, logger: AstroIntegrationLogger): Runtime {
- const version = process.version.slice(1); // 'v18.19.0' --> '18.19.0'
- const major = version.split('.')[0]; // '18.19.0' --> '18'
- const support = SUPPORTED_NODE_VERSIONS[major];
- if (support === undefined) {
- logger.warn(
- `\n` +
- `\tThe local Node.js version (${major}) is not supported by Vercel Serverless Functions.\n` +
- `\tYour project will use Node.js 18 as the runtime instead.\n` +
- `\tConsider switching your local version to 18.\n`,
- );
- return 'nodejs18.x';
- }
- if (support.status === 'default') {
- return `nodejs${major}.x`;
- }
- if (support.status === 'retiring') {
- if (support.warnDate && new Date() >= support.warnDate) {
- logger.warn(
- `Your project is being built for Node.js ${major} as the runtime, which is retiring by ${support.removal}.`,
- );
- }
- return `nodejs${major}.x`;
- }
- if (support.status === 'beta') {
- logger.warn(
- `Your project is being built for Node.js ${major} as the runtime, which is currently in beta for Vercel Serverless Functions.`,
- );
- return `nodejs${major}.x`;
- }
- if (support.status === 'deprecated') {
- const removeDate = new Intl.DateTimeFormat(undefined, { dateStyle: 'long' }).format(
- support.removal,
- );
- logger.warn(
- `\n` +
- `\tYour project is being built for Node.js ${major} as the runtime.\n` +
- `\tThis version is deprecated by Vercel Serverless Functions, and scheduled to be disabled on ${removeDate}.\n` +
- `\tConsider upgrading your local version to 18.\n`,
- );
- return `nodejs${major}.x`;
- }
- return 'nodejs18.x';
-}
diff --git a/packages/integrations/vercel/src/serverless/entrypoint.ts b/packages/integrations/vercel/src/serverless/entrypoint.ts
deleted file mode 100644
index 222722dd8..000000000
--- a/packages/integrations/vercel/src/serverless/entrypoint.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-import type { IncomingMessage, ServerResponse } from 'node:http';
-import type { SSRManifest } from 'astro';
-import { NodeApp, applyPolyfills } from 'astro/app/node';
-import { setGetEnv } from 'astro/env/setup';
-import {
- ASTRO_LOCALS_HEADER,
- ASTRO_MIDDLEWARE_SECRET_HEADER,
- ASTRO_PATH_HEADER,
- ASTRO_PATH_PARAM,
-} from './adapter.js';
-
-// Run polyfills immediately so any dependent code can use the globals
-applyPolyfills();
-setGetEnv((key) => process.env[key]);
-
-export const createExports = (
- manifest: SSRManifest,
- { middlewareSecret, skewProtection }: { middlewareSecret: string; skewProtection: boolean },
-) => {
- const app = new NodeApp(manifest);
- const handler = async (req: IncomingMessage, res: ServerResponse) => {
- const url = new URL(`https://example.com${req.url}`);
- const clientAddress = req.headers['x-forwarded-for'] as string | undefined;
- const localsHeader = req.headers[ASTRO_LOCALS_HEADER];
- const middlewareSecretHeader = req.headers[ASTRO_MIDDLEWARE_SECRET_HEADER];
- const realPath = req.headers[ASTRO_PATH_HEADER] ?? url.searchParams.get(ASTRO_PATH_PARAM);
- if (typeof realPath === 'string') {
- req.url = realPath;
- }
-
- let locals = {};
- if (localsHeader) {
- if (middlewareSecretHeader !== middlewareSecret) {
- res.statusCode = 403;
- res.end('Forbidden');
- return;
- }
- locals =
- typeof localsHeader === 'string' ? JSON.parse(localsHeader) : JSON.parse(localsHeader[0]);
- }
- // hide the secret from the rest of user code
- delete req.headers[ASTRO_MIDDLEWARE_SECRET_HEADER];
-
- // https://vercel.com/docs/deployments/skew-protection#supported-frameworks
- if (skewProtection && process.env.VERCEL_SKEW_PROTECTION_ENABLED === '1') {
- req.headers['x-deployment-id'] = process.env.VERCEL_DEPLOYMENT_ID;
- }
-
- const webResponse = await app.render(req, { addCookieHeader: true, clientAddress, locals });
- await NodeApp.writeResponse(webResponse, res);
- };
-
- return { default: handler };
-};
-
-// HACK: prevent warning
-// @astrojs-ssr-virtual-entry (22:23) "start" is not exported by "dist/serverless/entrypoint.js", imported by "@astrojs-ssr-virtual-entry".
-export function start() {}
diff --git a/packages/integrations/vercel/src/serverless/middleware.ts b/packages/integrations/vercel/src/serverless/middleware.ts
deleted file mode 100644
index 07d0843bf..000000000
--- a/packages/integrations/vercel/src/serverless/middleware.ts
+++ /dev/null
@@ -1,124 +0,0 @@
-import { existsSync } from 'node:fs';
-import { builtinModules } from 'node:module';
-import { fileURLToPath, pathToFileURL } from 'node:url';
-import type { AstroIntegrationLogger } from 'astro';
-import {
- ASTRO_LOCALS_HEADER,
- ASTRO_MIDDLEWARE_SECRET_HEADER,
- ASTRO_PATH_HEADER,
- NODE_PATH,
-} from './adapter.js';
-
-/**
- * It generates the Vercel Edge Middleware file.
- *
- * It creates a temporary file, the edge middleware, with some dynamic info.
- *
- * Then this file gets bundled with esbuild. The bundle phase will inline the Astro middleware code.
- *
- * @param astroMiddlewareEntryPoint
- * @param outPath
- * @returns {Promise<URL>} The path to the bundled file
- */
-export async function generateEdgeMiddleware(
- astroMiddlewareEntryPointPath: URL,
- root: URL,
- vercelEdgeMiddlewareHandlerPath: URL,
- outPath: URL,
- middlewareSecret: string,
- logger: AstroIntegrationLogger,
-): Promise<URL> {
- const code = edgeMiddlewareTemplate(
- astroMiddlewareEntryPointPath,
- vercelEdgeMiddlewareHandlerPath,
- middlewareSecret,
- logger,
- );
- // https://vercel.com/docs/concepts/functions/edge-middleware#create-edge-middleware
- const bundledFilePath = fileURLToPath(outPath);
- const esbuild = await import('esbuild');
- await esbuild.build({
- stdin: {
- contents: code,
- resolveDir: fileURLToPath(root),
- },
- target: 'es2020',
- platform: 'browser',
- // https://runtime-keys.proposal.wintercg.org/#edge-light
- conditions: ['edge-light', 'worker', 'browser'],
- outfile: bundledFilePath,
- allowOverwrite: true,
- format: 'esm',
- bundle: true,
- minify: false,
- // ensure node built-in modules are namespaced with `node:`
- plugins: [
- {
- name: 'esbuild-namespace-node-built-in-modules',
- setup(build) {
- const filter = new RegExp(builtinModules.map((mod) => `(^${mod}$)`).join('|'));
- build.onResolve({ filter }, (args) => ({ path: 'node:' + args.path, external: true }));
- },
- },
- ],
- });
- return pathToFileURL(bundledFilePath);
-}
-
-function edgeMiddlewareTemplate(
- astroMiddlewareEntryPointPath: URL,
- vercelEdgeMiddlewareHandlerPath: URL,
- middlewareSecret: string,
- logger: AstroIntegrationLogger,
-) {
- const middlewarePath = JSON.stringify(
- fileURLToPath(astroMiddlewareEntryPointPath).replace(/\\/g, '/'),
- );
- const filePathEdgeMiddleware = fileURLToPath(vercelEdgeMiddlewareHandlerPath);
- let handlerTemplateImport = '';
- let handlerTemplateCall = '{}';
- if (existsSync(filePathEdgeMiddleware + '.js') || existsSync(filePathEdgeMiddleware + '.ts')) {
- logger.warn(
- 'Usage of `vercel-edge-middleware.js` is deprecated. You can now use the `waitUntil(promise)` function directly as `ctx.locals.waitUntil(promise)`.',
- );
- const stringified = JSON.stringify(filePathEdgeMiddleware.replace(/\\/g, '/'));
- handlerTemplateImport = `import handler from ${stringified}`;
- handlerTemplateCall = `await handler({ request, context })`;
- } else {
- }
- return `
- ${handlerTemplateImport}
-import { onRequest } from ${middlewarePath};
-import { createContext, trySerializeLocals } from 'astro/middleware';
-export default async function middleware(request, context) {
- const ctx = createContext({
- request,
- params: {}
- });
- ctx.locals = { vercel: { edge: context }, ...${handlerTemplateCall} };
- const { origin } = new URL(request.url);
- const next = async () => {
- const { vercel, ...locals } = ctx.locals;
- const response = await fetch(new URL('/${NODE_PATH}', request.url), {
- headers: {
- ...Object.fromEntries(request.headers.entries()),
- '${ASTRO_MIDDLEWARE_SECRET_HEADER}': '${middlewareSecret}',
- '${ASTRO_PATH_HEADER}': request.url.replace(origin, ''),
- '${ASTRO_LOCALS_HEADER}': trySerializeLocals(locals)
- }
- });
- return new Response(response.body, {
- status: response.status,
- statusText: response.statusText,
- headers: response.headers,
- });
- };
-
- const response = await onRequest(ctx, next);
- // Append cookies from Astro.cookies
- for(const setCookieHeaderValue of ctx.cookies.headers()) {
- response.headers.append('set-cookie', setCookieHeaderValue);
- }
- return response;
-}`;
-}
diff --git a/packages/integrations/vercel/src/speed-insights.ts b/packages/integrations/vercel/src/speed-insights.ts
deleted file mode 100644
index cd2ae7fe8..000000000
--- a/packages/integrations/vercel/src/speed-insights.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-import type { Metric } from 'web-vitals';
-import { onCLS, onFCP, onFID, onLCP, onTTFB } from 'web-vitals';
-
-const SPEED_INSIGHTS_INTAKE = 'https://vitals.vercel-analytics.com/v1/vitals';
-
-type Options = { path: string; analyticsId: string };
-
-const getConnectionSpeed = () => {
- return 'connection' in navigator &&
- navigator['connection'] &&
- 'effectiveType' in (navigator['connection'] as unknown as { effectiveType: string })
- ? (navigator['connection'] as unknown as { effectiveType: string })['effectiveType']
- : '';
-};
-
-const sendToSpeedInsights = (metric: Metric, options: Options) => {
- const body = {
- dsn: options.analyticsId,
- id: metric.id,
- page: options.path,
- href: location.href,
- event_name: metric.name,
- value: metric.value.toString(),
- speed: getConnectionSpeed(),
- };
- const blob = new Blob([new URLSearchParams(body).toString()], {
- type: 'application/x-www-form-urlencoded',
- });
- if (navigator.sendBeacon) {
- navigator.sendBeacon(SPEED_INSIGHTS_INTAKE, blob);
- } else
- fetch(SPEED_INSIGHTS_INTAKE, {
- body: blob,
- method: 'POST',
- credentials: 'omit',
- keepalive: true,
- });
-};
-
-function collectWebVitals() {
- const analyticsId = (import.meta as any).env.PUBLIC_VERCEL_ANALYTICS_ID;
-
- if (!analyticsId) {
- console.error('[Speed Insights] VERCEL_ANALYTICS_ID not found');
- return;
- }
-
- const options: Options = { path: window.location.pathname, analyticsId };
-
- try {
- onFID((metric) => sendToSpeedInsights(metric, options));
- onTTFB((metric) => sendToSpeedInsights(metric, options));
- onLCP((metric) => sendToSpeedInsights(metric, options));
- onCLS((metric) => sendToSpeedInsights(metric, options));
- onFCP((metric) => sendToSpeedInsights(metric, options));
- } catch (err) {
- console.error('[Speed Insights]', err);
- }
-}
-
-const mode = (import.meta as any).env.MODE as 'development' | 'production';
-
-if (mode === 'production') {
- collectWebVitals();
-}
diff --git a/packages/integrations/vercel/src/static/adapter.ts b/packages/integrations/vercel/src/static/adapter.ts
deleted file mode 100644
index 4969d55d1..000000000
--- a/packages/integrations/vercel/src/static/adapter.ts
+++ /dev/null
@@ -1,155 +0,0 @@
-import type { AstroAdapter, AstroConfig, AstroIntegration } from 'astro';
-
-import { emptyDir, writeJson } from '@astrojs/internal-helpers/fs';
-import {
- type DevImageService,
- type VercelImageConfig,
- getAstroImageConfig,
- getDefaultImageConfig,
-} from '../image/shared.js';
-import { isServerLikeOutput } from '../lib/prerender.js';
-import { getRedirects } from '../lib/redirects.js';
-import {
- type VercelSpeedInsightsConfig,
- getSpeedInsightsViteConfig,
-} from '../lib/speed-insights.js';
-import {
- type VercelWebAnalyticsConfig,
- getInjectableWebAnalyticsContent,
-} from '../lib/web-analytics.js';
-
-const PACKAGE_NAME = '@astrojs/vercel/static';
-
-function getAdapter(): AstroAdapter {
- return {
- name: PACKAGE_NAME,
- supportedAstroFeatures: {
- assets: {
- supportKind: 'stable',
- isSharpCompatible: true,
- },
- staticOutput: 'stable',
- serverOutput: 'unsupported',
- hybridOutput: 'unsupported',
- envGetSecret: 'unsupported',
- },
- adapterFeatures: {
- edgeMiddleware: false,
- },
- };
-}
-
-export interface VercelStaticConfig {
- webAnalytics?: VercelWebAnalyticsConfig;
- /**
- * @deprecated This option lets you configure the legacy speed insights API which is now deprecated by Vercel.
- *
- * See [Vercel Speed Insights Quickstart](https://vercel.com/docs/speed-insights/quickstart) for instructions on how to use the library instead.
- *
- * https://vercel.com/docs/speed-insights/quickstart
- */
- speedInsights?: VercelSpeedInsightsConfig;
- imageService?: boolean;
- imagesConfig?: VercelImageConfig;
- devImageService?: DevImageService;
-}
-
-export default function vercelStatic({
- webAnalytics,
- speedInsights,
- imageService,
- imagesConfig,
- devImageService = 'sharp',
-}: VercelStaticConfig = {}): AstroIntegration {
- let _config: AstroConfig;
-
- return {
- name: '@astrojs/vercel',
- hooks: {
- 'astro:config:setup': async ({ command, config, injectScript, updateConfig }) => {
- if (webAnalytics?.enabled) {
- injectScript(
- 'head-inline',
- await getInjectableWebAnalyticsContent({
- mode: command === 'dev' ? 'development' : 'production',
- }),
- );
- }
- if (command === 'build' && speedInsights?.enabled) {
- injectScript('page', 'import "@astrojs/vercel/speed-insights"');
- }
- const outDir = new URL('./.vercel/output/static/', config.root);
- updateConfig({
- outDir,
- build: {
- format: 'directory',
- redirects: false,
- },
- vite: {
- ...getSpeedInsightsViteConfig(speedInsights?.enabled),
- },
- ...getAstroImageConfig(
- imageService,
- imagesConfig,
- command,
- devImageService,
- config.image,
- ),
- });
- },
- 'astro:config:done': ({ setAdapter, config }) => {
- setAdapter(getAdapter());
- _config = config;
-
- if (isServerLikeOutput(config)) {
- throw new Error(`${PACKAGE_NAME} should be used with output: 'static'`);
- }
- },
- 'astro:build:start': async () => {
- // Ensure to have `.vercel/output` empty.
- // This is because, when building to static, outDir = .vercel/output/static/,
- // so .vercel/output itself won't get cleaned.
- await emptyDir(new URL('./.vercel/output/', _config.root));
- },
- 'astro:build:done': async ({ routes }) => {
- // Output configuration
- // https://vercel.com/docs/build-output-api/v3#build-output-configuration
- await writeJson(new URL('./.vercel/output/config.json', _config.root), {
- version: 3,
- routes: [
- ...getRedirects(routes, _config),
- {
- src: `^/${_config.build.assets}/(.*)$`,
- headers: { 'cache-control': 'public, max-age=31536000, immutable' },
- continue: true,
- },
- { handle: 'filesystem' },
- ...(routes.find((route) => route.pathname === '/404')
- ? [
- {
- src: `/.*`,
- dest: `/404.html`,
- status: 404,
- },
- ]
- : []),
- ],
- ...(imageService || imagesConfig
- ? {
- images: imagesConfig
- ? {
- ...imagesConfig,
- domains: [...imagesConfig.domains, ..._config.image.domains],
- remotePatterns: [
- ...(imagesConfig.remotePatterns ?? []),
- ..._config.image.remotePatterns,
- ],
- }
- : getDefaultImageConfig(_config.image),
- }
- : {}),
- });
- },
- },
- };
-}
diff --git a/packages/integrations/vercel/src/types.d.ts b/packages/integrations/vercel/src/types.d.ts
deleted file mode 100644
index 1c5b8d2db..000000000
--- a/packages/integrations/vercel/src/types.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import type { AnalyticsProps } from '@vercel/analytics';
-
-export type VercelWebAnalyticsBeforeSend = AnalyticsProps['beforeSend'];
diff --git a/packages/integrations/vercel/test/edge-middleware.test.js b/packages/integrations/vercel/test/edge-middleware.test.js
deleted file mode 100644
index 9ae583a11..000000000
--- a/packages/integrations/vercel/test/edge-middleware.test.js
+++ /dev/null
@@ -1,76 +0,0 @@
-import assert from 'node:assert/strict';
-import { before, describe, it } from 'node:test';
-import { loadFixture } from './test-utils.js';
-
-describe('Vercel edge middleware', () => {
- /** @type {import('../../../astro/test/test-utils.js').Fixture} */
- let build;
- before(async () => {
- build = await loadFixture({
- root: './fixtures/middleware-with-edge-file/',
- });
- await build.build();
- });
-
- it('an edge function is created', async () => {
- const contents = await build.readFile(
- '../.vercel/output/functions/_middleware.func/.vc-config.json',
- );
- const contentsJSON = JSON.parse(contents);
- assert.equal(contentsJSON.runtime, 'edge');
- assert.equal(contentsJSON.entrypoint, 'middleware.mjs');
- });
-
- it('deployment config points to the middleware edge function', async () => {
- const contents = await build.readFile('../.vercel/output/config.json');
- const { routes } = JSON.parse(contents);
- assert.equal(
- routes.some((route) => route.dest === '_middleware'),
- true,
- );
- });
-
- it('edge sets Set-Cookie headers', async () => {
- let entry = new URL(
- '../.vercel/output/functions/_middleware.func/middleware.mjs',
- build.config.outDir,
- );
- const module = await import(entry);
- const request = new Request('http://example.com/foo');
- const response = await module.default(request, {});
- assert.equal(response.headers.get('set-cookie'), 'foo=bar');
- assert.ok((await response.text()).length, 'Body is included');
- });
-
- // TODO: The path here seems to be inconsistent?
- it.skip('with edge handle file, should successfully build the middleware', async () => {
- const fixture = await loadFixture({
- root: './fixtures/middleware-with-edge-file/',
- });
- await fixture.build();
- const contents = await fixture.readFile(
- // this is abysmal...
- '../.vercel/output/functions/render.func/www/withastro/astro/packages/integrations/vercel/test/fixtures/middleware-with-edge-file/dist/middleware.mjs',
- );
- console.log(contents);
- // assert.equal(contents.includes('title:')).to.be.true;
- // chaiJestSnapshot.setTestName('Middleware with handler file');
- // assert.equal(contents).to.matchSnapshot(true);
- });
-
- // TODO: The path here seems to be inconsistent?
- it.skip('without edge handle file, should successfully build the middleware', async () => {
- const fixture = await loadFixture({
- root: './fixtures/middleware-without-edge-file/',
- });
- await fixture.build();
- const contents = await fixture.readFile(
- // this is abysmal...
- '../.vercel/output/functions/render.func/www/withastro/astro/packages/integrations/vercel/test/fixtures/middleware-without-edge-file/dist/middleware.mjs',
- );
- console.log(contents);
- // assert.equal(contents.includes('title:')).to.be.false;
- // chaiJestSnapshot.setTestName('Middleware without handler file');
- // assert.equal(contents).to.matchSnapshot(true);
- });
-});
diff --git a/packages/integrations/vercel/test/fixtures/basic/astro.config.mjs b/packages/integrations/vercel/test/fixtures/basic/astro.config.mjs
deleted file mode 100644
index 2fba43b6e..000000000
--- a/packages/integrations/vercel/test/fixtures/basic/astro.config.mjs
+++ /dev/null
@@ -1,6 +0,0 @@
-import vercel from '@astrojs/vercel/serverless';
-import { defineConfig } from 'astro/config';
-
-export default defineConfig({
- adapter: vercel({})
-});
diff --git a/packages/integrations/vercel/test/fixtures/basic/package.json b/packages/integrations/vercel/test/fixtures/basic/package.json
deleted file mode 100644
index 89fb910ff..000000000
--- a/packages/integrations/vercel/test/fixtures/basic/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/astro-vercel-basic",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "@astrojs/vercel": "workspace:*",
- "astro": "workspace:*"
- }
-}
diff --git a/packages/integrations/vercel/test/fixtures/basic/src/pages/one.astro b/packages/integrations/vercel/test/fixtures/basic/src/pages/one.astro
deleted file mode 100644
index 0c7fb90a7..000000000
--- a/packages/integrations/vercel/test/fixtures/basic/src/pages/one.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>One</title>
- </head>
- <body>
- <h1>One</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/basic/src/pages/two.astro b/packages/integrations/vercel/test/fixtures/basic/src/pages/two.astro
deleted file mode 100644
index e7ba9910e..000000000
--- a/packages/integrations/vercel/test/fixtures/basic/src/pages/two.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>Two</title>
- </head>
- <body>
- <h1>Two</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/image/astro.config.mjs b/packages/integrations/vercel/test/fixtures/image/astro.config.mjs
deleted file mode 100644
index 78923f2cb..000000000
--- a/packages/integrations/vercel/test/fixtures/image/astro.config.mjs
+++ /dev/null
@@ -1,15 +0,0 @@
-import vercel from '@astrojs/vercel/static';
-import { defineConfig } from 'astro/config';
-import { testImageService } from '../../../../../astro/test/test-image-service.js';
-
-export default defineConfig({
- adapter: vercel({imageService: true}),
- image: {
- service: testImageService(),
- domains: ['astro.build'],
- remotePatterns: [{
- protocol: 'https',
- hostname: '**.amazonaws.com',
- }],
- },
-});
diff --git a/packages/integrations/vercel/test/fixtures/image/package.json b/packages/integrations/vercel/test/fixtures/image/package.json
deleted file mode 100644
index 87fefe2e0..000000000
--- a/packages/integrations/vercel/test/fixtures/image/package.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "name": "@test/astro-vercel-image",
- "version": "0.0.0",
- "private": true,
- "scripts": {
- "dev": "astro dev"
- },
- "dependencies": {
- "@astrojs/vercel": "workspace:*",
- "astro": "workspace:*"
- }
-}
diff --git a/packages/integrations/vercel/test/fixtures/image/src/assets/astro.jpeg b/packages/integrations/vercel/test/fixtures/image/src/assets/astro.jpeg
deleted file mode 100644
index 40d35ef48..000000000
--- a/packages/integrations/vercel/test/fixtures/image/src/assets/astro.jpeg
+++ /dev/null
Binary files differ
diff --git a/packages/integrations/vercel/test/fixtures/image/src/assets/penguin.svg b/packages/integrations/vercel/test/fixtures/image/src/assets/penguin.svg
deleted file mode 100644
index d93379b68..000000000
--- a/packages/integrations/vercel/test/fixtures/image/src/assets/penguin.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg height="600pt" width="500pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a"><stop offset="0" stop-color="#fff" stop-opacity=".65"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="b"><stop offset="0" stop-color="#ffa63f"/><stop offset="1" stop-color="#ff0"/></linearGradient><linearGradient id="c"><stop offset="0" stop-color="#ffeed7"/><stop offset="1" stop-color="#bdbfc2"/></linearGradient><linearGradient id="d"><stop offset="0" stop-color="#fff" stop-opacity=".8"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><radialGradient id="e" cx="446.77762" cy="1219.4125" gradientTransform="scale(1.045233 .956725)" gradientUnits="userSpaceOnUse" r="195.07191"><stop offset="0" stop-color="#3f2600" stop-opacity=".6"/><stop offset="1" stop-color="#3f2600" stop-opacity="0"/></radialGradient><linearGradient id="f" gradientTransform="scale(.575262 1.738339)" gradientUnits="userSpaceOnUse" x1="400.57785" x2="400.84448" xlink:href="#c" y1="369.53015" y2="304.07886"/><linearGradient id="g" gradientTransform="scale(1.116071 .896001)" gradientUnits="userSpaceOnUse" x1="303.01761" x2="297.0856" xlink:href="#d" y1="237.93179" y2="330.09561"/><linearGradient id="h" gradientTransform="scale(.816497 1.224744)" gradientUnits="userSpaceOnUse" x1="378.93771" x2="380.27319" xlink:href="#c" y1="278.60202" y2="243.91606"/><linearGradient id="i" gradientTransform="scale(.816497 1.224744)" gradientUnits="userSpaceOnUse" x1="381.38742" x2="380.5517" xlink:href="#c" y1="277.495" y2="245.68338"/><linearGradient id="j" gradientTransform="scale(.816497 1.224744)" gradientUnits="userSpaceOnUse" x1="379.09573" x2="376.79556" xlink:href="#a" y1="240.92712" y2="281.01636"/><linearGradient id="k" gradientTransform="scale(.816497 1.224744)" gradientUnits="userSpaceOnUse" x1="389.63535" x2="387.06866" xlink:href="#a" y1="242.28218" y2="281.32513"/><linearGradient id="l" gradientTransform="scale(.812855 1.230232)" gradientUnits="userSpaceOnUse" spreadMethod="reflect" x1="437.57941" x2="437.57941" xlink:href="#c" y1="528.87177" y2="394.10361"/><linearGradient id="m" gradientTransform="scale(.649784 1.538974)" gradientUnits="userSpaceOnUse" x1="375.17325" x2="377.48541" xlink:href="#c" y1="419.78485" y2="324.03815"/><linearGradient id="n" gradientTransform="scale(1.074798 .930408)" gradientUnits="userSpaceOnUse" x1="320.75104" x2="321.32224" xlink:href="#d" y1="498.17776" y2="614.50439"/><linearGradient id="o" gradientTransform="scale(1.077001 .928504)" gradientUnits="userSpaceOnUse" x1="322.48257" x2="323.2514" xlink:href="#a" y1="435.26761" y2="488.48251"/><linearGradient id="p" gradientTransform="scale(.571707 1.749147)" gradientUnits="userSpaceOnUse" x1="411.2215" x2="411.2215" xlink:href="#a" y1="242.94365" y2="331.44858"/><linearGradient id="q" gradientTransform="scale(.572667 1.746214)" gradientUnits="userSpaceOnUse" x1="867.34546" x2="867.33453" xlink:href="#a" y1="234.73897" y2="314.83911"/><linearGradient id="r" gradientTransform="scale(1.011514 .988617)" gradientUnits="userSpaceOnUse" x1="236.25362" x2="212.5099" xlink:href="#b" y1="657.11133" y2="737.41229"/><linearGradient id="s" gradientTransform="scale(1.065499 .938527)" gradientUnits="userSpaceOnUse" x1="381.56607" x2="279.64313" xlink:href="#c" y1="655.73102" y2="386.66583"/><linearGradient id="t" gradientTransform="scale(1.009851 .990245)" gradientUnits="userSpaceOnUse" x1="218.11714" x2="203.12654" xlink:href="#b" y1="630.30475" y2="737.8537"/><linearGradient id="u" gradientTransform="scale(1.007724 .992335)" gradientUnits="userSpaceOnUse" x1="117.88966" x2="182.24524" xlink:href="#a" y1="587.23602" y2="704.73077"/><linearGradient id="v" gradientTransform="scale(.999504 1.000496)" gradientUnits="userSpaceOnUse" x1="223.10072" x2="230.53499" xlink:href="#a" y1="570.41809" y2="710.97723"/><linearGradient id="w" gradientTransform="scale(1.065499 .938527)" gradientUnits="userSpaceOnUse" x1="316.93988" x2="371.60889" xlink:href="#a" y1="474.01779" y2="582.63507"/><linearGradient id="x" gradientTransform="scale(1.218684 .820557)" gradientUnits="userSpaceOnUse" x1="284.68652" x2="285.45923" xlink:href="#b" y1="410.46326" y2="485.69934"/><linearGradient id="y" gradientTransform="scale(1.221941 .81837)" gradientUnits="userSpaceOnUse" x1="288.82358" x2="288.37628" xlink:href="#a" y1="398.85422" y2="482.55939"/><path d="m670.88202 1166.6423a203.89551 186.63016 0 1 1 -407.79102 0 203.89551 186.63016 0 1 1 407.79102 0z" fill="url(#e)" transform="matrix(1.4177 0 0 .414745 -349.5468 157.94132)"/><path d="m223.627 632.24c-22.388-32.223-26.754-136.984 25.487-201.43 25.886-30.918 32.49-52.465 34.531-81.393 1.389-32.979-23.325-131.442 69.883-138.944 94.406-7.532 89.336 85.66 88.793 134.975-.451 41.64 30.574 65.241 51.796 97.695 39.279 59.63 35.957 162.3-7.399 217.872-54.917 69.568-101.953 39.398-133.19 41.93-58.493 3.202-60.427 34.391-129.901-70.705z" transform="matrix(1.25 0 0 1.25 -125.2984 -231.75768)"/><path d="m246.571 470.864c-12.239 12.496-44.396 69.092 4.869 105.36 17.369 12.633-16.377 59.495-32.005 36.308-27.57-41.618-8.831-106.941 8.315-130.188 11.652-16.487 29.23-22.676 18.821-11.48z" fill="url(#f)" transform="matrix(-1.67739 -.0224516 -.0211236 1.4709 862.8276 -357.26968)"/><path d="m256.513 459.837c-19.915 17.717-56.176 80.091-3.288 120.606 17.37 12.632-15.393 52.463-33.79 32.089-63.963-70.82 1.669-152.254 24.262-180.25 20.192-24.347 38.078 5.752 12.816 27.555z" stroke="#000" stroke-width=".977298" transform="matrix(-1.67755 0 0 1.52374 863.8676 -382.33468)"/><path d="m399.56879 258.15753a58.37323 46.863022 0 1 1 -116.74646 0 58.37323 46.863022 0 1 1 116.74646 0z" fill="url(#g)" transform="matrix(1.26626 -.0713667 -.0459795 1.19574 -108.6094 -190.01368)"/><path d="m328.86324 320.64151a18.087479 27.131195 0 1 1 -36.17496 0 18.087479 27.131195 0 1 1 36.17496 0z" fill="url(#h)" transform="matrix(1.30445 -.0755326 .0771251 1.34257 -165.9954 -241.86968)"/><path d="m328.86324 320.64151a18.087479 27.131195 0 1 1 -36.17496 0 18.087479 27.131195 0 1 1 36.17496 0z" fill="url(#i)" transform="matrix(-1.81082 .0495107 .0317324 1.55333 896.7076 -349.02968)"/><path d="m328.86324 320.64151a18.087479 27.131195 0 1 1 -36.17496 0 18.087479 27.131195 0 1 1 36.17496 0z" transform="matrix(-.823196 -.00176123 -.0182321 .852662 602.9216 -102.24288)"/><path d="m328.86324 320.64151a18.087479 27.131195 0 1 1 -36.17496 0 18.087479 27.131195 0 1 1 36.17496 0z" transform="matrix(.59438 -.0722959 .0688176 .705838 56.6956 -31.83408)"/><path d="m328.86324 320.64151a18.087479 27.131195 0 1 1 -36.17496 0 18.087479 27.131195 0 1 1 36.17496 0z" fill="url(#j)" transform="matrix(-.480323 -.036454 -.0467935 .475606 502.7436 22.75972)"/><path d="m328.86324 320.64151a18.087479 27.131195 0 1 1 -36.17496 0 18.087479 27.131195 0 1 1 36.17496 0z" fill="url(#k)" transform="matrix(.35691 -.0408211 .0413232 .398544 138.5816 50.73832)"/><path d="m258.702 495.425c12.836-29.103 40.114-80.226 40.695-119.758 0-31.442 94.179-38.951 101.737-7.558s26.741 78.483 38.95 101.156c12.208 22.672 47.809 94.695 9.884 157.546-34.157 55.644-137.725 99.666-193.01-7.557-18.603-37.207-15.285-83.315 1.744-123.829z" fill="url(#l)" transform="matrix(1.25 0 0 1.25 -125.2984 -232.48268)"/><path d="m242.905 473.815c-11.263 18.967-35.5 69.309 12.137 102.047 51.311 34.82 46.473 97.062-15.607 61.955-56.777-31.789-22.845-137.778-4.51-162.266 12.107-17.214 29.897-38.031 7.98-1.736z" fill="url(#m)" transform="matrix(1.38936 -.111074 .102211 1.30214 -202.3394 -230.19068)"/><path d="m256.513 449.72c-17.465 28.508-59.377 95.813-3.288 130.723 75.569 46.355 54.173 92.711-14.799 50.974-97.109-58.264-11.825-175.616 27.131-220.338 44.444-50.2 8.554 9.087-9.044 38.641z" stroke="#000" stroke-width="1.25" transform="matrix(1.25 0 0 1.25 -125.2984 -231.75768)"/><path d="m421.481 504.727c0 32.412-29.272 74.516-79.528 74.138-51.828.455-73.949-41.726-73.949-74.138s34.379-58.717 76.739-58.717c42.359 0 76.738 26.305 76.738 58.717z" fill="url(#n)" transform="matrix(1.30209 0 0 1.22525 -140.7104 -217.80968)"/><path d="m398.227 412.292c-.612 38.572-23.18 47.671-51.74 47.671-28.561 0-49.292-5.694-51.741-47.671 0-26.314 23.18-41.542 51.741-41.542 28.56 0 51.74 15.228 51.74 41.542z" fill="url(#o)" transform="matrix(1.1868 0 0 1.06708 -100.1294 -164.33068)"/><g transform="matrix(1.25 0 0 1.25 -125.2984 -231.75768)"><path d="m234.285 456.475c17.716-26.996 55.015-68.364 6.977 5.813-38.951 61.043-14.403 100.273-1.744 111.039 36.527 32.562 34.966 54.349 6.395 37.206-61.625-36.626-48.835-98.248-11.628-154.058z" fill="url(#p)"/><path d="m490.662 467.52c-15.319-31.701-64.134-111.902 2.326-18.603 60.461 84.297 18.022 143.013 10.464 148.827-7.557 5.813-33.137 17.44-25.579-2.907 7.557-20.347 45.234-58.973 12.789-127.317z" fill="url(#q)"/><path d="m220.915 716.921c-40.442-21.416-99.252 4.124-77.902-54.066 4.276-13.238-6.375-33.008.581-45.926 8.139-15.698 25.58-12.209 36.045-22.674 10.318-10.891 16.859-29.649 36.044-26.742 19.184 2.907 31.945 26.461 45.344 55.229 9.883 20.638 44.941 49.664 42.65 72.758-2.696 35.5-43.027 42.19-82.762 21.421z" fill="url(#r)" stroke="#e68c3f" stroke-width="6.25"/></g><path d="m415.072 495.764c-3.007 24.906-35.813 76.627-69.518 81.534-34.26 5.336-66.432-34.06-74.147-71.114-9.889-41.206 22.587-57.6 71.938-56.627 53.301 1.654 74.121 13.891 71.727 46.207z" fill="url(#s)" transform="matrix(.598206 .268584 -.239623 .617213 389.8156 76.21132)"/><path d="m220.274 718.402c-41.327-23.59-99.894 5.605-77.261-55.547 4.736-13.068-6.596-33.552.36-46.47 8.139-15.698 25.801-11.665 36.266-22.13 10.318-10.891 18.827-27.868 38.012-24.961 19.184 2.907 29.977 24.68 43.376 53.448 9.883 20.638 43.415 48.971 41.124 72.065-2.696 35.5-42.724 45.471-81.877 23.595z" fill="url(#t)" stroke="#e68c3f" stroke-width="6.25068" transform="matrix(-1.1685 .423145 .475283 1.16478 417.5906 -278.07368)"/><path d="m216.482 675.68c-86.531-57.503-47.308-70.96-36.843-81.425 10.318-10.891 18.827-27.868 38.012-24.961 19.184 2.907 29.977 24.68 43.376 53.448 9.883 20.638 43.06 48.918 41.124 72.065-2.616 27.11-48.19 5.487-85.669-19.127z" fill="url(#u)" transform="matrix(-.945096 .343745 .424076 .956058 403.5756 -128.59468)"/><path d="m216.506 677.071c-86.531-57.503-46.797-73.57-33.946-81.28 15.399-9.942 15.158-30.831 34.343-27.924 19.184 2.907 30.725 26.107 44.124 54.875 9.883 20.638 43.06 48.918 41.124 72.065-2.616 27.11-48.166 6.878-85.645-17.736z" fill="url(#v)" transform="matrix(1.00431 -.052286 -.0174 1.04575 -66.5614 -92.71798)"/><path d="m415.072 495.764c-3.007 24.906-35.813 76.627-69.518 81.534-34.26 5.336-66.432-34.06-74.147-71.114-9.889-41.206 22.587-57.6 71.938-56.627 53.301 1.654 74.121 13.891 71.727 46.207z" transform="matrix(.515584 .215259 -.206526 .49467 402.5476 158.30632)"/><path d="m415.072 495.764c-3.007 24.906-35.813 76.627-69.518 81.534-34.26 5.336-66.432-34.06-74.147-71.114-9.889-41.206 22.587-57.6 71.938-56.627 53.301 1.654 74.121 13.891 71.727 46.207z" fill="url(#w)" transform="matrix(.351231 .149463 -.128856 .343469 413.7696 254.03832)"/><path d="m309.954 338.729c7.147-6.77 24.811-27.066 57.961-5.755 6.162 4.01 11.162 4.377 23.021 9.455 23.726 9.749 12.382 33.259-12.744 41.108-10.758 3.489-20.536 16.556-40.129 15.439-16.734-.977-21.119-11.874-31.398-17.906-18.269-10.311-20.965-24.254-11.1-31.653 9.866-7.399 13.725-10.059 14.389-10.688z" fill="url(#x)" stroke="#e68c3f" stroke-width="3.75" transform="matrix(1.25 0 0 1.25 -125.2984 -231.75768)"/><path d="m391.251 357.645c-9.883.581-31.393 22.091-54.066 22.091s-36.044-20.929-39.532-20.929" fill="none" stroke="#e68c3f" stroke-width="2.5" transform="matrix(1.25 0 0 1.25 -125.2984 -231.75768)"/><path d="m309.954 338.729c7.147-6.77 29.691-25.348 59.588-6.328 6.299 3.766 12.804 7.865 22.478 13.464 19.162 11.748 9.671 28.678-13.286 39.39-10.418 4.495-27.593 14.415-40.671 13.721-14.533-1.408-23.935-11.399-33.567-17.906-17.67-12.303-16.597-22.237-8.389-30.508 6.205-5.679 13.183-11.204 13.847-11.833z" fill="url(#y)" transform="matrix(.627885 0 0 .595666 81.6136 -12.43538)"/></svg> \ No newline at end of file
diff --git a/packages/integrations/vercel/test/fixtures/image/src/pages/index.astro b/packages/integrations/vercel/test/fixtures/image/src/pages/index.astro
deleted file mode 100644
index db7c22eeb..000000000
--- a/packages/integrations/vercel/test/fixtures/image/src/pages/index.astro
+++ /dev/null
@@ -1,13 +0,0 @@
----
-import { Image } from "astro:assets";
-import astro from "../assets/astro.jpeg";
-import penguin from "../assets/penguin.svg";
----
-
-<div id="basic-image">
- <Image src={astro} alt="Astro" />
-</div>
-
-<div id="svg">
- <Image src={penguin} alt="Astro" />
-</div>
diff --git a/packages/integrations/vercel/test/fixtures/isr/astro.config.mjs b/packages/integrations/vercel/test/fixtures/isr/astro.config.mjs
deleted file mode 100644
index 4b675ab6c..000000000
--- a/packages/integrations/vercel/test/fixtures/isr/astro.config.mjs
+++ /dev/null
@@ -1,13 +0,0 @@
-import vercel from '@astrojs/vercel/serverless';
-import { defineConfig } from 'astro/config';
-
-export default defineConfig({
- output: "server",
- adapter: vercel({
- isr: {
- bypassToken: "1c9e601d-9943-4e7c-9575-005556d774a8",
- expiration: 120,
- exclude: ["/two", "/excluded/[dynamic]"]
- }
- })
-});
diff --git a/packages/integrations/vercel/test/fixtures/isr/package.json b/packages/integrations/vercel/test/fixtures/isr/package.json
deleted file mode 100644
index a1fd601d3..000000000
--- a/packages/integrations/vercel/test/fixtures/isr/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/vercel-isr",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "@astrojs/vercel": "workspace:*",
- "astro": "workspace:*"
- }
-}
diff --git a/packages/integrations/vercel/test/fixtures/isr/src/pages/excluded/[dynamic].astro b/packages/integrations/vercel/test/fixtures/isr/src/pages/excluded/[dynamic].astro
deleted file mode 100644
index 54ba67fa8..000000000
--- a/packages/integrations/vercel/test/fixtures/isr/src/pages/excluded/[dynamic].astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>Dynamic</title>
- </head>
- <body>
- <h1>Dynamic</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/isr/src/pages/one.astro b/packages/integrations/vercel/test/fixtures/isr/src/pages/one.astro
deleted file mode 100644
index 0c7fb90a7..000000000
--- a/packages/integrations/vercel/test/fixtures/isr/src/pages/one.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>One</title>
- </head>
- <body>
- <h1>One</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/isr/src/pages/two.astro b/packages/integrations/vercel/test/fixtures/isr/src/pages/two.astro
deleted file mode 100644
index e7ba9910e..000000000
--- a/packages/integrations/vercel/test/fixtures/isr/src/pages/two.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>Two</title>
- </head>
- <body>
- <h1>Two</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/max-duration/astro.config.mjs b/packages/integrations/vercel/test/fixtures/max-duration/astro.config.mjs
deleted file mode 100644
index b1866a75b..000000000
--- a/packages/integrations/vercel/test/fixtures/max-duration/astro.config.mjs
+++ /dev/null
@@ -1,9 +0,0 @@
-import vercel from '@astrojs/vercel/serverless';
-import { defineConfig } from 'astro/config';
-
-export default defineConfig({
- output: "server",
- adapter: vercel({
- maxDuration: 60
- })
-});
diff --git a/packages/integrations/vercel/test/fixtures/max-duration/package.json b/packages/integrations/vercel/test/fixtures/max-duration/package.json
deleted file mode 100644
index 9a45d782e..000000000
--- a/packages/integrations/vercel/test/fixtures/max-duration/package.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "name": "@test/vercel-max-duration",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "@astrojs/vercel": "workspace:*",
- "astro": "workspace:*"
- }
-}
- \ No newline at end of file
diff --git a/packages/integrations/vercel/test/fixtures/max-duration/src/pages/one.astro b/packages/integrations/vercel/test/fixtures/max-duration/src/pages/one.astro
deleted file mode 100644
index 0c7fb90a7..000000000
--- a/packages/integrations/vercel/test/fixtures/max-duration/src/pages/one.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>One</title>
- </head>
- <body>
- <h1>One</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/max-duration/src/pages/two.astro b/packages/integrations/vercel/test/fixtures/max-duration/src/pages/two.astro
deleted file mode 100644
index e7ba9910e..000000000
--- a/packages/integrations/vercel/test/fixtures/max-duration/src/pages/two.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>Two</title>
- </head>
- <body>
- <h1>Two</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/middleware-with-edge-file/astro.config.mjs b/packages/integrations/vercel/test/fixtures/middleware-with-edge-file/astro.config.mjs
deleted file mode 100644
index f92b18a4e..000000000
--- a/packages/integrations/vercel/test/fixtures/middleware-with-edge-file/astro.config.mjs
+++ /dev/null
@@ -1,9 +0,0 @@
-import vercel from "@astrojs/vercel/serverless";
-import {defineConfig} from "astro/config";
-
-export default defineConfig({
- adapter: vercel({
- edgeMiddleware: true
- }),
- output: 'server'
-});
diff --git a/packages/integrations/vercel/test/fixtures/middleware-with-edge-file/package.json b/packages/integrations/vercel/test/fixtures/middleware-with-edge-file/package.json
deleted file mode 100644
index 2579a8c92..000000000
--- a/packages/integrations/vercel/test/fixtures/middleware-with-edge-file/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/vercel-edge-middleware-with-edge-file",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "@astrojs/vercel": "workspace:*",
- "astro": "workspace:*"
- }
-}
diff --git a/packages/integrations/vercel/test/fixtures/middleware-with-edge-file/src/middleware.js b/packages/integrations/vercel/test/fixtures/middleware-with-edge-file/src/middleware.js
deleted file mode 100644
index b1a67f550..000000000
--- a/packages/integrations/vercel/test/fixtures/middleware-with-edge-file/src/middleware.js
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * @type {import("astro").MiddlewareResponseHandler}
- */
-export const onRequest = async (context, next) => {
- const test = 'something';
- context.cookies.set('foo', 'bar');
- const response = await next();
- return response;
-};
diff --git a/packages/integrations/vercel/test/fixtures/middleware-with-edge-file/src/pages/index.astro b/packages/integrations/vercel/test/fixtures/middleware-with-edge-file/src/pages/index.astro
deleted file mode 100644
index e69de29bb..000000000
--- a/packages/integrations/vercel/test/fixtures/middleware-with-edge-file/src/pages/index.astro
+++ /dev/null
diff --git a/packages/integrations/vercel/test/fixtures/middleware-with-edge-file/src/vercel-edge-middleware.js b/packages/integrations/vercel/test/fixtures/middleware-with-edge-file/src/vercel-edge-middleware.js
deleted file mode 100644
index bf69edb3e..000000000
--- a/packages/integrations/vercel/test/fixtures/middleware-with-edge-file/src/vercel-edge-middleware.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default function ({ request, context }) {
- return {
- title: 'Hello world',
- };
-}
diff --git a/packages/integrations/vercel/test/fixtures/middleware-without-edge-file/astro.config.mjs b/packages/integrations/vercel/test/fixtures/middleware-without-edge-file/astro.config.mjs
deleted file mode 100644
index f92b18a4e..000000000
--- a/packages/integrations/vercel/test/fixtures/middleware-without-edge-file/astro.config.mjs
+++ /dev/null
@@ -1,9 +0,0 @@
-import vercel from "@astrojs/vercel/serverless";
-import {defineConfig} from "astro/config";
-
-export default defineConfig({
- adapter: vercel({
- edgeMiddleware: true
- }),
- output: 'server'
-});
diff --git a/packages/integrations/vercel/test/fixtures/middleware-without-edge-file/package.json b/packages/integrations/vercel/test/fixtures/middleware-without-edge-file/package.json
deleted file mode 100644
index d5638ce16..000000000
--- a/packages/integrations/vercel/test/fixtures/middleware-without-edge-file/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/vercel-edge-middleware-without-edge-file",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "@astrojs/vercel": "workspace:*",
- "astro": "workspace:*"
- }
-}
diff --git a/packages/integrations/vercel/test/fixtures/middleware-without-edge-file/src/middleware.js b/packages/integrations/vercel/test/fixtures/middleware-without-edge-file/src/middleware.js
deleted file mode 100644
index 349a0aa79..000000000
--- a/packages/integrations/vercel/test/fixtures/middleware-without-edge-file/src/middleware.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * @type {import("astro").MiddlewareResponseHandler}
- */
-export const onRequest = async (context, next) => {
- const test = 'something';
- const response = await next();
- return response;
-};
diff --git a/packages/integrations/vercel/test/fixtures/middleware-without-edge-file/src/pages/index.astro b/packages/integrations/vercel/test/fixtures/middleware-without-edge-file/src/pages/index.astro
deleted file mode 100644
index e69de29bb..000000000
--- a/packages/integrations/vercel/test/fixtures/middleware-without-edge-file/src/pages/index.astro
+++ /dev/null
diff --git a/packages/integrations/vercel/test/fixtures/no-output/astro.config.mjs b/packages/integrations/vercel/test/fixtures/no-output/astro.config.mjs
deleted file mode 100644
index 179d18d38..000000000
--- a/packages/integrations/vercel/test/fixtures/no-output/astro.config.mjs
+++ /dev/null
@@ -1,6 +0,0 @@
-import vercel from '@astrojs/vercel/serverless';
-import { defineConfig } from 'astro/config';
-
-export default defineConfig({
- adapter: vercel()
-});
diff --git a/packages/integrations/vercel/test/fixtures/no-output/package.json b/packages/integrations/vercel/test/fixtures/no-output/package.json
deleted file mode 100644
index 604b4e4ea..000000000
--- a/packages/integrations/vercel/test/fixtures/no-output/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/astro-vercel-no-output",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "@astrojs/vercel": "workspace:*",
- "astro": "workspace:*"
- }
-}
diff --git a/packages/integrations/vercel/test/fixtures/no-output/src/pages/index.astro b/packages/integrations/vercel/test/fixtures/no-output/src/pages/index.astro
deleted file mode 100644
index 6368ce118..000000000
--- a/packages/integrations/vercel/test/fixtures/no-output/src/pages/index.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>testing</title>
- </head>
- <body>
- <h1>testing</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/prerendered-error-pages/astro.config.mjs b/packages/integrations/vercel/test/fixtures/prerendered-error-pages/astro.config.mjs
deleted file mode 100644
index 83e1f2f38..000000000
--- a/packages/integrations/vercel/test/fixtures/prerendered-error-pages/astro.config.mjs
+++ /dev/null
@@ -1,7 +0,0 @@
-import vercel from '@astrojs/vercel/serverless';
-import { defineConfig } from 'astro/config';
-
-export default defineConfig({
- output: 'server',
- adapter: vercel()
-});
diff --git a/packages/integrations/vercel/test/fixtures/prerendered-error-pages/package.json b/packages/integrations/vercel/test/fixtures/prerendered-error-pages/package.json
deleted file mode 100644
index 5cfc0e24c..000000000
--- a/packages/integrations/vercel/test/fixtures/prerendered-error-pages/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/astro-vercel-prerendered-error-pages",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "@astrojs/vercel": "workspace:*",
- "astro": "workspace:*"
- }
-}
diff --git a/packages/integrations/vercel/test/fixtures/prerendered-error-pages/src/pages/404.astro b/packages/integrations/vercel/test/fixtures/prerendered-error-pages/src/pages/404.astro
deleted file mode 100644
index 162ff90b6..000000000
--- a/packages/integrations/vercel/test/fixtures/prerendered-error-pages/src/pages/404.astro
+++ /dev/null
@@ -1,4 +0,0 @@
----
-export const prerender = true
----
-<h1>404</h1>
diff --git a/packages/integrations/vercel/test/fixtures/prerendered-error-pages/src/pages/one.astro b/packages/integrations/vercel/test/fixtures/prerendered-error-pages/src/pages/one.astro
deleted file mode 100644
index 0c7fb90a7..000000000
--- a/packages/integrations/vercel/test/fixtures/prerendered-error-pages/src/pages/one.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>One</title>
- </head>
- <body>
- <h1>One</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/prerendered-error-pages/src/pages/two.astro b/packages/integrations/vercel/test/fixtures/prerendered-error-pages/src/pages/two.astro
deleted file mode 100644
index e7ba9910e..000000000
--- a/packages/integrations/vercel/test/fixtures/prerendered-error-pages/src/pages/two.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>Two</title>
- </head>
- <body>
- <h1>Two</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/redirects-serverless/astro.config.mjs b/packages/integrations/vercel/test/fixtures/redirects-serverless/astro.config.mjs
deleted file mode 100644
index 1071b7e67..000000000
--- a/packages/integrations/vercel/test/fixtures/redirects-serverless/astro.config.mjs
+++ /dev/null
@@ -1,7 +0,0 @@
-import vercel from '@astrojs/vercel/serverless';
-import { defineConfig } from 'astro/config';
-
-export default defineConfig({
- output: 'hybrid',
- adapter: vercel(),
-});
diff --git a/packages/integrations/vercel/test/fixtures/redirects-serverless/package.json b/packages/integrations/vercel/test/fixtures/redirects-serverless/package.json
deleted file mode 100644
index c8de30d66..000000000
--- a/packages/integrations/vercel/test/fixtures/redirects-serverless/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/astro-vercel-redirects-serverless",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "@astrojs/vercel": "workspace:*",
- "astro": "workspace:*"
- }
-}
diff --git a/packages/integrations/vercel/test/fixtures/redirects-serverless/src/pages/index.astro b/packages/integrations/vercel/test/fixtures/redirects-serverless/src/pages/index.astro
deleted file mode 100644
index 9c077e2a3..000000000
--- a/packages/integrations/vercel/test/fixtures/redirects-serverless/src/pages/index.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>Testing</title>
- </head>
- <body>
- <h1>Testing</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/redirects-serverless/src/pages/subpage.astro b/packages/integrations/vercel/test/fixtures/redirects-serverless/src/pages/subpage.astro
deleted file mode 100644
index e69de29bb..000000000
--- a/packages/integrations/vercel/test/fixtures/redirects-serverless/src/pages/subpage.astro
+++ /dev/null
diff --git a/packages/integrations/vercel/test/fixtures/redirects/astro.config.mjs b/packages/integrations/vercel/test/fixtures/redirects/astro.config.mjs
deleted file mode 100644
index 707805087..000000000
--- a/packages/integrations/vercel/test/fixtures/redirects/astro.config.mjs
+++ /dev/null
@@ -1,6 +0,0 @@
-import vercel from '@astrojs/vercel/static';
-import { defineConfig } from 'astro/config';
-
-export default defineConfig({
- adapter: vercel(),
-});
diff --git a/packages/integrations/vercel/test/fixtures/redirects/package.json b/packages/integrations/vercel/test/fixtures/redirects/package.json
deleted file mode 100644
index d7dcc5471..000000000
--- a/packages/integrations/vercel/test/fixtures/redirects/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/astro-vercel-redirects",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "@astrojs/vercel": "workspace:*",
- "astro": "workspace:*"
- }
-}
diff --git a/packages/integrations/vercel/test/fixtures/redirects/src/pages/index.astro b/packages/integrations/vercel/test/fixtures/redirects/src/pages/index.astro
deleted file mode 100644
index 9c077e2a3..000000000
--- a/packages/integrations/vercel/test/fixtures/redirects/src/pages/index.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>Testing</title>
- </head>
- <body>
- <h1>Testing</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/redirects/src/pages/subpage.astro b/packages/integrations/vercel/test/fixtures/redirects/src/pages/subpage.astro
deleted file mode 100644
index e69de29bb..000000000
--- a/packages/integrations/vercel/test/fixtures/redirects/src/pages/subpage.astro
+++ /dev/null
diff --git a/packages/integrations/vercel/test/fixtures/redirects/src/pages/team/articles/[...slug].astro b/packages/integrations/vercel/test/fixtures/redirects/src/pages/team/articles/[...slug].astro
deleted file mode 100644
index 716d3bd5d..000000000
--- a/packages/integrations/vercel/test/fixtures/redirects/src/pages/team/articles/[...slug].astro
+++ /dev/null
@@ -1,25 +0,0 @@
----
-export const getStaticPaths = (async () => {
- const posts = [
- { slug: 'one', data: {draft: false, title: 'One'} },
- { slug: 'two', data: {draft: false, title: 'Two'} }
- ];
- return posts.map((post) => {
- return {
- params: { slug: post.slug },
- props: { draft: post.data.draft, title: post.data.title },
- };
- });
-})
-
-const { slug } = Astro.params;
-const { title } = Astro.props;
----
-<html>
- <head>
- <title>{ title }</title>
- </head>
- <body>
- <h1>{ title }</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/server-islands/astro.config.mjs b/packages/integrations/vercel/test/fixtures/server-islands/astro.config.mjs
deleted file mode 100644
index 534197429..000000000
--- a/packages/integrations/vercel/test/fixtures/server-islands/astro.config.mjs
+++ /dev/null
@@ -1,10 +0,0 @@
-import vercel from '@astrojs/vercel/serverless';
-import { defineConfig } from 'astro/config';
-
-export default defineConfig({
- output: "server",
- adapter: vercel(),
- experimental: {
- serverIslands: true,
- }
-});
diff --git a/packages/integrations/vercel/test/fixtures/server-islands/package.json b/packages/integrations/vercel/test/fixtures/server-islands/package.json
deleted file mode 100644
index a21ff176a..000000000
--- a/packages/integrations/vercel/test/fixtures/server-islands/package.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "name": "@test/vercel-server-islands",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "@astrojs/vercel": "workspace:*",
- "astro": "workspace:*"
- }
-}
-
diff --git a/packages/integrations/vercel/test/fixtures/server-islands/src/components/Island.astro b/packages/integrations/vercel/test/fixtures/server-islands/src/components/Island.astro
deleted file mode 100644
index 9d2832bc1..000000000
--- a/packages/integrations/vercel/test/fixtures/server-islands/src/components/Island.astro
+++ /dev/null
@@ -1 +0,0 @@
-<h1>I'm an island</h1>
diff --git a/packages/integrations/vercel/test/fixtures/server-islands/src/pages/index.astro b/packages/integrations/vercel/test/fixtures/server-islands/src/pages/index.astro
deleted file mode 100644
index 835126c2b..000000000
--- a/packages/integrations/vercel/test/fixtures/server-islands/src/pages/index.astro
+++ /dev/null
@@ -1,12 +0,0 @@
----
-import Island from '../components/Island.astro';
----
-<html>
- <head>
- <title>One</title>
- </head>
- <body>
- <h1>One</h1>
- <Island server:defer />
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/serverless-prerender/astro.config.mjs b/packages/integrations/vercel/test/fixtures/serverless-prerender/astro.config.mjs
deleted file mode 100644
index 4d8f76288..000000000
--- a/packages/integrations/vercel/test/fixtures/serverless-prerender/astro.config.mjs
+++ /dev/null
@@ -1,10 +0,0 @@
-import vercel from '@astrojs/vercel/serverless';
-import { defineConfig } from 'astro/config';
-
-export default defineConfig({
- adapter: vercel({
- // Pass some value to make sure it doesn't error out
- includeFiles: ['included.js'],
- }),
- output: 'server'
-});
diff --git a/packages/integrations/vercel/test/fixtures/serverless-prerender/included.js b/packages/integrations/vercel/test/fixtures/serverless-prerender/included.js
deleted file mode 100644
index 4e64b2d61..000000000
--- a/packages/integrations/vercel/test/fixtures/serverless-prerender/included.js
+++ /dev/null
@@ -1 +0,0 @@
-'works' \ No newline at end of file
diff --git a/packages/integrations/vercel/test/fixtures/serverless-prerender/package.json b/packages/integrations/vercel/test/fixtures/serverless-prerender/package.json
deleted file mode 100644
index c51362516..000000000
--- a/packages/integrations/vercel/test/fixtures/serverless-prerender/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/astro-vercel-serverless-prerender",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "@astrojs/vercel": "workspace:*",
- "astro": "workspace:*"
- }
-}
diff --git a/packages/integrations/vercel/test/fixtures/serverless-prerender/src/pages/index.astro b/packages/integrations/vercel/test/fixtures/serverless-prerender/src/pages/index.astro
deleted file mode 100644
index b6b833e53..000000000
--- a/packages/integrations/vercel/test/fixtures/serverless-prerender/src/pages/index.astro
+++ /dev/null
@@ -1,12 +0,0 @@
----
-export const prerender = import.meta.env.PRERENDER;
----
-
-<html>
- <head>
- <title>testing</title>
- </head>
- <body>
- <h1>testing</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/astro.config.mjs b/packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/astro.config.mjs
deleted file mode 100644
index 4d8f76288..000000000
--- a/packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/astro.config.mjs
+++ /dev/null
@@ -1,10 +0,0 @@
-import vercel from '@astrojs/vercel/serverless';
-import { defineConfig } from 'astro/config';
-
-export default defineConfig({
- adapter: vercel({
- // Pass some value to make sure it doesn't error out
- includeFiles: ['included.js'],
- }),
- output: 'server'
-});
diff --git a/packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/included.js b/packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/included.js
deleted file mode 100644
index 4e64b2d61..000000000
--- a/packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/included.js
+++ /dev/null
@@ -1 +0,0 @@
-'works' \ No newline at end of file
diff --git a/packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/package.json b/packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/package.json
deleted file mode 100644
index e22a7e932..000000000
--- a/packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/astro-vercel-serverless-with-dynamic-routes",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "@astrojs/vercel": "workspace:*",
- "astro": "workspace:*"
- }
-}
diff --git a/packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/src/pages/[id]/index.astro b/packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/src/pages/[id]/index.astro
deleted file mode 100644
index 4eab5952d..000000000
--- a/packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/src/pages/[id]/index.astro
+++ /dev/null
@@ -1,12 +0,0 @@
----
-export const prerender = false;
----
-
-<html>
- <head>
- <title>testing {Astro.params.id}</title>
- </head>
- <body>
- <h1>testing {Astro.params.id}</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/src/pages/api/[id].js b/packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/src/pages/api/[id].js
deleted file mode 100644
index f54e673a8..000000000
--- a/packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/src/pages/api/[id].js
+++ /dev/null
@@ -1,7 +0,0 @@
-export const prerender = false;
-
-export async function GET({ params }) {
- return Response.json({
- id: params.id
- });
-}
diff --git a/packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/src/pages/index.astro b/packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/src/pages/index.astro
deleted file mode 100644
index b6b833e53..000000000
--- a/packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes/src/pages/index.astro
+++ /dev/null
@@ -1,12 +0,0 @@
----
-export const prerender = import.meta.env.PRERENDER;
----
-
-<html>
- <head>
- <title>testing</title>
- </head>
- <body>
- <h1>testing</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/static-assets/astro.config.mjs b/packages/integrations/vercel/test/fixtures/static-assets/astro.config.mjs
deleted file mode 100644
index 20b0b8e2b..000000000
--- a/packages/integrations/vercel/test/fixtures/static-assets/astro.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-import { defineConfig } from 'astro/config';
-
-export default defineConfig({
-});
diff --git a/packages/integrations/vercel/test/fixtures/static-assets/package.json b/packages/integrations/vercel/test/fixtures/static-assets/package.json
deleted file mode 100644
index e1b608a85..000000000
--- a/packages/integrations/vercel/test/fixtures/static-assets/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/astro-vercel-static-assets",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "@astrojs/vercel": "workspace:*",
- "astro": "workspace:*"
- }
-}
diff --git a/packages/integrations/vercel/test/fixtures/static-assets/src/pages/index.astro b/packages/integrations/vercel/test/fixtures/static-assets/src/pages/index.astro
deleted file mode 100644
index 9c077e2a3..000000000
--- a/packages/integrations/vercel/test/fixtures/static-assets/src/pages/index.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>Testing</title>
- </head>
- <body>
- <h1>Testing</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/static/astro.config.mjs b/packages/integrations/vercel/test/fixtures/static/astro.config.mjs
deleted file mode 100644
index 6e2d7bff7..000000000
--- a/packages/integrations/vercel/test/fixtures/static/astro.config.mjs
+++ /dev/null
@@ -1,6 +0,0 @@
-import vercel from '@astrojs/vercel/static';
-import { defineConfig } from 'astro/config';
-
-export default defineConfig({
- adapter: vercel()
-});
diff --git a/packages/integrations/vercel/test/fixtures/static/package.json b/packages/integrations/vercel/test/fixtures/static/package.json
deleted file mode 100644
index 2f2936e31..000000000
--- a/packages/integrations/vercel/test/fixtures/static/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/astro-vercel-static",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "@astrojs/vercel": "workspace:*",
- "astro": "workspace:*"
- }
-}
diff --git a/packages/integrations/vercel/test/fixtures/static/src/pages/404.astro b/packages/integrations/vercel/test/fixtures/static/src/pages/404.astro
deleted file mode 100644
index 9e307c5c2..000000000
--- a/packages/integrations/vercel/test/fixtures/static/src/pages/404.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>404</title>
- </head>
- <body>
- <h1>404</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/static/src/pages/one.astro b/packages/integrations/vercel/test/fixtures/static/src/pages/one.astro
deleted file mode 100644
index 0c7fb90a7..000000000
--- a/packages/integrations/vercel/test/fixtures/static/src/pages/one.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>One</title>
- </head>
- <body>
- <h1>One</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/static/src/pages/two.astro b/packages/integrations/vercel/test/fixtures/static/src/pages/two.astro
deleted file mode 100644
index e7ba9910e..000000000
--- a/packages/integrations/vercel/test/fixtures/static/src/pages/two.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>Two</title>
- </head>
- <body>
- <h1>Two</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/streaming/astro.config.mjs b/packages/integrations/vercel/test/fixtures/streaming/astro.config.mjs
deleted file mode 100644
index 94f52a3d6..000000000
--- a/packages/integrations/vercel/test/fixtures/streaming/astro.config.mjs
+++ /dev/null
@@ -1,7 +0,0 @@
-import vercel from '@astrojs/vercel/serverless';
-import { defineConfig } from 'astro/config';
-
-export default defineConfig({
- output: "server",
- adapter: vercel()
-});
diff --git a/packages/integrations/vercel/test/fixtures/streaming/package.json b/packages/integrations/vercel/test/fixtures/streaming/package.json
deleted file mode 100644
index 80068581c..000000000
--- a/packages/integrations/vercel/test/fixtures/streaming/package.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "name": "@test/vercel-streaming",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "@astrojs/vercel": "workspace:*",
- "astro": "workspace:*"
- }
-}
- \ No newline at end of file
diff --git a/packages/integrations/vercel/test/fixtures/streaming/src/pages/one.astro b/packages/integrations/vercel/test/fixtures/streaming/src/pages/one.astro
deleted file mode 100644
index 0c7fb90a7..000000000
--- a/packages/integrations/vercel/test/fixtures/streaming/src/pages/one.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>One</title>
- </head>
- <body>
- <h1>One</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/streaming/src/pages/two.astro b/packages/integrations/vercel/test/fixtures/streaming/src/pages/two.astro
deleted file mode 100644
index e7ba9910e..000000000
--- a/packages/integrations/vercel/test/fixtures/streaming/src/pages/two.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>Two</title>
- </head>
- <body>
- <h1>Two</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-server/astro.config.mjs b/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-server/astro.config.mjs
deleted file mode 100644
index 794734f78..000000000
--- a/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-server/astro.config.mjs
+++ /dev/null
@@ -1,10 +0,0 @@
-import vercel from '@astrojs/vercel/serverless';
-import { defineConfig } from 'astro/config';
-
-export default defineConfig({
- adapter: vercel({
- speedInsights: {
- enabled: true
- }
- })
-});
diff --git a/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-server/package.json b/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-server/package.json
deleted file mode 100644
index 4c6867fd3..000000000
--- a/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-server/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/astro-vercel-with-speed-insights-enabled-output-as-server",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "@astrojs/vercel": "workspace:*",
- "astro": "workspace:*"
- }
-} \ No newline at end of file
diff --git a/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-server/src/pages/one.astro b/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-server/src/pages/one.astro
deleted file mode 100644
index 0c7fb90a7..000000000
--- a/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-server/src/pages/one.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>One</title>
- </head>
- <body>
- <h1>One</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-server/src/pages/two.astro b/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-server/src/pages/two.astro
deleted file mode 100644
index e7ba9910e..000000000
--- a/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-server/src/pages/two.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>Two</title>
- </head>
- <body>
- <h1>Two</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-static/astro.config.mjs b/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-static/astro.config.mjs
deleted file mode 100644
index 589aa3662..000000000
--- a/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-static/astro.config.mjs
+++ /dev/null
@@ -1,10 +0,0 @@
-import vercel from '@astrojs/vercel/static';
-import { defineConfig } from 'astro/config';
-
-export default defineConfig({
- adapter: vercel({
- speedInsights: {
- enabled: true
- }
- })
-});
diff --git a/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-static/package.json b/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-static/package.json
deleted file mode 100644
index 0022e1e92..000000000
--- a/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-static/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/astro-vercel-with-speed-insights-enabled-output-as-static",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "@astrojs/vercel": "workspace:*",
- "astro": "workspace:*"
- }
-}
diff --git a/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-static/src/pages/one.astro b/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-static/src/pages/one.astro
deleted file mode 100644
index 0c7fb90a7..000000000
--- a/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-static/src/pages/one.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>One</title>
- </head>
- <body>
- <h1>One</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-static/src/pages/two.astro b/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-static/src/pages/two.astro
deleted file mode 100644
index e7ba9910e..000000000
--- a/packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-static/src/pages/two.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>Two</title>
- </head>
- <body>
- <h1>Two</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/with-web-analytics-enabled/output-as-static/astro.config.mjs b/packages/integrations/vercel/test/fixtures/with-web-analytics-enabled/output-as-static/astro.config.mjs
deleted file mode 100644
index 7a3cec1fd..000000000
--- a/packages/integrations/vercel/test/fixtures/with-web-analytics-enabled/output-as-static/astro.config.mjs
+++ /dev/null
@@ -1,10 +0,0 @@
-import vercel from '@astrojs/vercel/static';
-import { defineConfig } from 'astro/config';
-
-export default defineConfig({
- adapter: vercel({
- webAnalytics: {
- enabled: true
- }
- })
-});
diff --git a/packages/integrations/vercel/test/fixtures/with-web-analytics-enabled/output-as-static/package.json b/packages/integrations/vercel/test/fixtures/with-web-analytics-enabled/output-as-static/package.json
deleted file mode 100644
index c54ef16c7..000000000
--- a/packages/integrations/vercel/test/fixtures/with-web-analytics-enabled/output-as-static/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "name": "@test/astro-vercel-with-web-analytics-enabled-output-as-static",
- "version": "0.0.0",
- "private": true,
- "dependencies": {
- "@astrojs/vercel": "workspace:*",
- "astro": "workspace:*"
- }
-}
diff --git a/packages/integrations/vercel/test/fixtures/with-web-analytics-enabled/output-as-static/src/pages/one.astro b/packages/integrations/vercel/test/fixtures/with-web-analytics-enabled/output-as-static/src/pages/one.astro
deleted file mode 100644
index 0c7fb90a7..000000000
--- a/packages/integrations/vercel/test/fixtures/with-web-analytics-enabled/output-as-static/src/pages/one.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>One</title>
- </head>
- <body>
- <h1>One</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/fixtures/with-web-analytics-enabled/output-as-static/src/pages/two.astro b/packages/integrations/vercel/test/fixtures/with-web-analytics-enabled/output-as-static/src/pages/two.astro
deleted file mode 100644
index e7ba9910e..000000000
--- a/packages/integrations/vercel/test/fixtures/with-web-analytics-enabled/output-as-static/src/pages/two.astro
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
- <head>
- <title>Two</title>
- </head>
- <body>
- <h1>Two</h1>
- </body>
-</html>
diff --git a/packages/integrations/vercel/test/hosted/README.md b/packages/integrations/vercel/test/hosted/README.md
deleted file mode 100644
index 9dbb9bbc0..000000000
--- a/packages/integrations/vercel/test/hosted/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-The tests in this folder are done directly on a deployed Vercel website (hosted at https://astro-vercel-image-test.vercel.app) and are not run by the test suite. They instead run every week through a GitHub action.
-
-The purpose of those tests is to make sure that everything works as expected while deployed. In a way, they're as E2E as it gets.
diff --git a/packages/integrations/vercel/test/hosted/hosted-astro-project/astro.config.mjs b/packages/integrations/vercel/test/hosted/hosted-astro-project/astro.config.mjs
deleted file mode 100644
index 2eb8e60ab..000000000
--- a/packages/integrations/vercel/test/hosted/hosted-astro-project/astro.config.mjs
+++ /dev/null
@@ -1,8 +0,0 @@
-import vercel from '@astrojs/vercel/serverless';
-import { defineConfig } from 'astro/config';
-
-// https://astro.build/config
-export default defineConfig({
- output: 'server',
- adapter: vercel(),
-});
diff --git a/packages/integrations/vercel/test/hosted/hosted-astro-project/package.json b/packages/integrations/vercel/test/hosted/hosted-astro-project/package.json
deleted file mode 100644
index b20c4385b..000000000
--- a/packages/integrations/vercel/test/hosted/hosted-astro-project/package.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "name": "vercel-hosted-astro-project",
- "version": "0.0.0",
- "private": true,
- "scripts": {
- "build": "astro build"
- },
- "dependencies": {
- "@astrojs/vercel": "workspace:*",
- "astro": "workspace:*"
- }
-}
diff --git a/packages/integrations/vercel/test/hosted/hosted-astro-project/src/assets/penguin.png b/packages/integrations/vercel/test/hosted/hosted-astro-project/src/assets/penguin.png
deleted file mode 100644
index 218acde5b..000000000
--- a/packages/integrations/vercel/test/hosted/hosted-astro-project/src/assets/penguin.png
+++ /dev/null
Binary files differ
diff --git a/packages/integrations/vercel/test/hosted/hosted-astro-project/src/pages/index.astro b/packages/integrations/vercel/test/hosted/hosted-astro-project/src/pages/index.astro
deleted file mode 100644
index 256bfb407..000000000
--- a/packages/integrations/vercel/test/hosted/hosted-astro-project/src/pages/index.astro
+++ /dev/null
@@ -1,6 +0,0 @@
----
-import { Image } from 'astro:assets';
-import penguin from '../assets/penguin.png';
----
-
-<Image src={penguin} width={300} alt="" />
diff --git a/packages/integrations/vercel/test/hosted/hosted.test.js b/packages/integrations/vercel/test/hosted/hosted.test.js
deleted file mode 100644
index e090188a7..000000000
--- a/packages/integrations/vercel/test/hosted/hosted.test.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import assert from 'node:assert/strict';
-import { describe, it } from 'node:test';
-
-const VERCEL_TEST_URL = 'https://astro-vercel-image-test.vercel.app';
-
-describe('Hosted Vercel Tests', () => {
- it('Image endpoint works', async () => {
- const image = await fetch(
- VERCEL_TEST_URL + '/_image?href=%2F_astro%2Fpenguin.e9c64733.png&w=300&f=webp',
- );
-
- assert.equal(image.status, 200);
- });
-});
diff --git a/packages/integrations/vercel/test/image.test.js b/packages/integrations/vercel/test/image.test.js
deleted file mode 100644
index b82ac02bf..000000000
--- a/packages/integrations/vercel/test/image.test.js
+++ /dev/null
@@ -1,78 +0,0 @@
-import assert from 'node:assert/strict';
-import { after, before, describe, it } from 'node:test';
-import * as cheerio from 'cheerio';
-import { loadFixture } from './test-utils.js';
-
-describe('Image', () => {
- /** @type {import('../../../astro/test/test-utils.js').Fixture} */
- let fixture;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/image/',
- });
- await fixture.build();
- });
-
- it('build successful', async () => {
- assert.ok(await fixture.readFile('../.vercel/output/static/index.html'));
- });
-
- it('has link to vercel in build with proper attributes', async () => {
- const html = await fixture.readFile('../.vercel/output/static/index.html');
- const $ = cheerio.load(html);
- const img = $('#basic-image img');
-
- assert.equal(img.attr('src').startsWith('/_vercel/image?url=_astr'), true);
- assert.equal(img.attr('loading'), 'lazy');
- assert.equal(img.attr('width'), '225');
- });
-
- it('has proper vercel config', async () => {
- const vercelConfig = JSON.parse(await fixture.readFile('../.vercel/output/config.json'));
-
- assert.deepEqual(vercelConfig.images, {
- sizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
- domains: ['astro.build'],
- remotePatterns: [
- {
- protocol: 'https',
- hostname: '**.amazonaws.com',
- },
- ],
- });
- });
-
- describe('dev', () => {
- let devServer;
-
- before(async () => {
- devServer = await fixture.startDevServer();
- });
-
- after(async () => {
- await devServer.stop();
- });
-
- it('has link to local image in dev with proper attributes', async () => {
- const html = await fixture.fetch('/').then((res) => res.text());
- const $ = cheerio.load(html);
- const img = $('#basic-image img');
-
- assert.equal(img.attr('src').startsWith('/_image?href='), true);
- assert.equal(img.attr('loading'), 'lazy');
- assert.equal(img.attr('width'), '225');
- });
-
- it('supports SVGs', async () => {
- const html = await fixture.fetch('/').then((res) => res.text());
- const $ = cheerio.load(html);
- const img = $('#svg img');
- const src = img.attr('src');
-
- const res = await fixture.fetch(src);
- assert.equal(res.status, 200);
- assert.equal(res.headers.get('content-type'), 'image/svg+xml');
- });
- });
-});
diff --git a/packages/integrations/vercel/test/isr.test.js b/packages/integrations/vercel/test/isr.test.js
deleted file mode 100644
index fb957aa78..000000000
--- a/packages/integrations/vercel/test/isr.test.js
+++ /dev/null
@@ -1,58 +0,0 @@
-import assert from 'node:assert/strict';
-import { before, describe, it } from 'node:test';
-import { loadFixture } from './test-utils.js';
-
-describe('ISR', () => {
- /** @type {import('./test-utils.js').Fixture} */
- let fixture;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/isr/',
- });
- await fixture.build();
- });
-
- it('generates expected prerender config', async () => {
- const vcConfig = JSON.parse(
- await fixture.readFile('../.vercel/output/functions/_isr.prerender-config.json'),
- );
- assert.deepEqual(vcConfig, {
- expiration: 120,
- bypassToken: '1c9e601d-9943-4e7c-9575-005556d774a8',
- allowQuery: ['x_astro_path'],
- passQuery: true,
- });
- });
-
- it('generates expected routes', async () => {
- const deploymentConfig = JSON.parse(await fixture.readFile('../.vercel/output/config.json'));
- // the first two are /_astro/*, and filesystem routes
- assert.deepEqual(deploymentConfig.routes.slice(2), [
- {
- src: '^/two$',
- dest: '_render',
- },
- {
- src: '^/excluded/([^/]+?)$',
- dest: '_render',
- },
- {
- src: '^\\/_image$',
- dest: '_render',
- },
- {
- src: '^\\/excluded\\/([^/]+?)\\/?$',
- dest: '/_isr?x_astro_path=$0',
- },
- {
- src: '^\\/one\\/?$',
- dest: '/_isr?x_astro_path=$0',
- },
- {
- src: '^\\/two\\/?$',
- dest: '/_isr?x_astro_path=$0',
- },
- ]);
- });
-});
diff --git a/packages/integrations/vercel/test/max-duration.test.js b/packages/integrations/vercel/test/max-duration.test.js
deleted file mode 100644
index d5e26fc1a..000000000
--- a/packages/integrations/vercel/test/max-duration.test.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import assert from 'node:assert/strict';
-import { before, describe, it } from 'node:test';
-import { loadFixture } from './test-utils.js';
-
-describe('maxDuration', () => {
- /** @type {import('./test-utils.js').Fixture} */
- let fixture;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/max-duration/',
- });
- await fixture.build();
- });
-
- it('makes it to vercel function configuration', async () => {
- const vcConfig = JSON.parse(
- await fixture.readFile('../.vercel/output/functions/_render.func/.vc-config.json'),
- );
- assert.equal(vcConfig.maxDuration, 60);
- });
-});
diff --git a/packages/integrations/vercel/test/no-output.test.js b/packages/integrations/vercel/test/no-output.test.js
deleted file mode 100644
index 34709804d..000000000
--- a/packages/integrations/vercel/test/no-output.test.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import assert from 'node:assert/strict';
-import { before, describe, it } from 'node:test';
-import { loadFixture } from './test-utils.js';
-
-describe('Missing output config', () => {
- /** @type {import('./test-utils').Fixture} */
- let fixture;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/no-output/',
- });
- });
-
- it('throws during the build', async () => {
- let error = undefined;
- try {
- await fixture.build();
- } catch (err) {
- error = err;
- }
- assert.notEqual(error, undefined);
- assert.match(error.message, /output: "server"/);
- });
-});
diff --git a/packages/integrations/vercel/test/prerendered-error-pages.test.js b/packages/integrations/vercel/test/prerendered-error-pages.test.js
deleted file mode 100644
index 5812c3364..000000000
--- a/packages/integrations/vercel/test/prerendered-error-pages.test.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import assert from 'node:assert/strict';
-import { before, describe, it } from 'node:test';
-import { loadFixture } from './test-utils.js';
-
-describe('prerendered error pages routing', () => {
- /** @type {import('./test-utils.js').Fixture} */
- let fixture;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/prerendered-error-pages/',
- });
- await fixture.build();
- });
-
- it('falls back to 404.html', async () => {
- const deploymentConfig = JSON.parse(await fixture.readFile('../.vercel/output/config.json'));
- assert.deepEqual(deploymentConfig.routes.at(-1), {
- src: '/.*',
- dest: '/404.html',
- status: 404,
- });
- });
-});
diff --git a/packages/integrations/vercel/test/redirects-serverless.test.js b/packages/integrations/vercel/test/redirects-serverless.test.js
deleted file mode 100644
index 8d7dcf75b..000000000
--- a/packages/integrations/vercel/test/redirects-serverless.test.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import assert from 'node:assert/strict';
-import { before, describe, it } from 'node:test';
-import { loadFixture } from './test-utils.js';
-
-describe('Redirects Serverless', () => {
- /** @type {import('astro/test/test-utils.js').Fixture} */
- let fixture;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/redirects-serverless/',
- redirects: {
- '/one': '/',
- '/other': '/subpage',
- },
- });
- await fixture.build();
- });
-
- it('does not create .html files', async () => {
- let hasErrored = false;
- try {
- await fixture.readFile('../.vercel/output/static/other/index.html');
- } catch {
- hasErrored = true;
- }
- assert.equal(hasErrored, true, 'this file should not exist');
- });
-});
diff --git a/packages/integrations/vercel/test/redirects.test.js b/packages/integrations/vercel/test/redirects.test.js
deleted file mode 100644
index 9d4f9499e..000000000
--- a/packages/integrations/vercel/test/redirects.test.js
+++ /dev/null
@@ -1,83 +0,0 @@
-import assert from 'node:assert/strict';
-import { before, describe, it } from 'node:test';
-import { loadFixture } from './test-utils.js';
-
-describe('Redirects', () => {
- /** @type {import('../../../astro/test/test-utils.js').Fixture} */
- let fixture;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/redirects/',
- redirects: {
- '/one': '/',
- '/two': '/',
- '/three': {
- status: 302,
- destination: '/',
- },
- '/blog/[...slug]': '/team/articles/[...slug]',
- '/Basic/http-2-0.html': '/posts/http2',
- },
- trailingSlash: 'always',
- });
- await fixture.build();
- });
-
- async function getConfig() {
- const json = await fixture.readFile('../.vercel/output/config.json');
- const config = JSON.parse(json);
-
- return config;
- }
-
- it('define static routes', async () => {
- const config = await getConfig();
-
- const oneRoute = config.routes.find((r) => r.src === '/one');
- assert.equal(oneRoute.headers.Location, '/');
- assert.equal(oneRoute.status, 301);
-
- const twoRoute = config.routes.find((r) => r.src === '/two');
- assert.equal(twoRoute.headers.Location, '/');
- assert.equal(twoRoute.status, 301);
-
- const threeRoute = config.routes.find((r) => r.src === '/three');
- assert.equal(threeRoute.headers.Location, '/');
- assert.equal(threeRoute.status, 302);
- });
-
- it('define redirects for static files', async () => {
- const config = await getConfig();
-
- const staticRoute = config.routes.find((r) => r.src === '/Basic/http-2-0.html');
- assert.notEqual(staticRoute, undefined);
- assert.equal(staticRoute.headers.Location, '/posts/http2');
- assert.equal(staticRoute.status, 301);
- });
-
- it('defines dynamic routes', async () => {
- const config = await getConfig();
-
- const blogRoute = config.routes.find((r) => r.src.startsWith('/blog'));
- assert.notEqual(blogRoute, undefined);
- assert.equal(blogRoute.headers.Location.startsWith('/team/articles'), true);
- assert.equal(blogRoute.status, 301);
- });
-
- it('define trailingSlash redirect for sub pages', async () => {
- const config = await getConfig();
-
- const subpathRoute = config.routes.find((r) => r.src === '/subpage');
- assert.notEqual(subpathRoute, undefined);
- assert.equal(subpathRoute.headers.Location, '/subpage/');
- });
-
- it('does not define trailingSlash redirect for root page', async () => {
- const config = await getConfig();
- assert.equal(
- config.routes.find((r) => r.src === '/'),
- undefined,
- );
- });
-});
diff --git a/packages/integrations/vercel/test/server-islands.test.js b/packages/integrations/vercel/test/server-islands.test.js
deleted file mode 100644
index 0306bb8b2..000000000
--- a/packages/integrations/vercel/test/server-islands.test.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import assert from 'node:assert/strict';
-import { before, describe, it } from 'node:test';
-import { loadFixture } from './test-utils.js';
-
-describe('Server Islands', () => {
- /** @type {import('./test-utils.js').Fixture} */
- let fixture;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/server-islands/',
- });
- await fixture.build();
- });
-
- it('server islands route is in the config', async () => {
- const config = JSON.parse(await fixture.readFile('../.vercel/output/config.json'));
- let found = null;
- for (let route of config.routes) {
- if (route.src?.includes('_server-islands')) {
- found = route;
- break;
- }
- }
- assert.notEqual(found, null, 'Default server islands route included');
- });
-});
diff --git a/packages/integrations/vercel/test/serverless-prerender.test.js b/packages/integrations/vercel/test/serverless-prerender.test.js
deleted file mode 100644
index 61e239300..000000000
--- a/packages/integrations/vercel/test/serverless-prerender.test.js
+++ /dev/null
@@ -1,55 +0,0 @@
-import assert from 'node:assert/strict';
-import { before, describe, it } from 'node:test';
-import { loadFixture } from './test-utils.js';
-
-describe('Serverless prerender', () => {
- /** @type {import('./test-utils').Fixture} */
- let fixture;
-
- before(async () => {
- process.env.PRERENDER = true;
- fixture = await loadFixture({
- root: './fixtures/serverless-prerender/',
- });
- await fixture.build();
- });
-
- it('build successful', async () => {
- assert.ok(await fixture.readFile('../.vercel/output/static/index.html'));
- });
-
- it('outDir is tree-shaken if not needed', async () => {
- const [file] = await fixture.glob(
- '../.vercel/output/functions/_render.func/packages/integrations/vercel/test/fixtures/serverless-prerender/.vercel/output/_functions/pages/_image.astro.mjs',
- );
- const contents = await fixture.readFile(file);
- assert.ok(!contents.includes('const outDir ='), "outDir is tree-shaken if it's not imported");
- });
-
- // TODO: The path here seems to be inconsistent?
- it.skip('includeFiles work', async () => {
- assert.ok(
- await fixture.readFile(
- '../.vercel/output/functions/render.func/packages/integrations/vercel/test/fixtures/serverless-prerender/dist/middleware.mjs',
- ),
- );
- });
-});
-
-describe('Serverless hybrid rendering', () => {
- /** @type {import('./test-utils').Fixture} */
- let fixture;
-
- before(async () => {
- process.env.PRERENDER = true;
- fixture = await loadFixture({
- root: './fixtures/serverless-prerender/',
- output: 'hybrid',
- });
- await fixture.build();
- });
-
- it('build successful', async () => {
- assert.ok(await fixture.readFile('../.vercel/output/static/index.html'));
- });
-});
diff --git a/packages/integrations/vercel/test/serverless-with-dynamic-routes.test.js b/packages/integrations/vercel/test/serverless-with-dynamic-routes.test.js
deleted file mode 100644
index 7eac7e875..000000000
--- a/packages/integrations/vercel/test/serverless-with-dynamic-routes.test.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import assert from 'node:assert/strict';
-import { before, describe, it } from 'node:test';
-import { loadFixture } from './test-utils.js';
-
-describe('Serverless with dynamic routes', () => {
- /** @type {import('./test-utils.js').Fixture} */
- let fixture;
-
- before(async () => {
- process.env.PRERENDER = true;
- fixture = await loadFixture({
- root: './fixtures/serverless-with-dynamic-routes/',
- output: 'hybrid',
- });
- await fixture.build();
- });
-
- it('build successful', async () => {
- assert.ok(await fixture.readFile('../.vercel/output/static/index.html'));
- assert.ok(await fixture.readFile('../.vercel/output/functions/_render.func/.vc-config.json'));
- });
-});
diff --git a/packages/integrations/vercel/test/speed-insights.test.js b/packages/integrations/vercel/test/speed-insights.test.js
deleted file mode 100644
index 28ca84cd2..000000000
--- a/packages/integrations/vercel/test/speed-insights.test.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import assert from 'node:assert/strict';
-import { before, describe, it } from 'node:test';
-import { loadFixture } from './test-utils.js';
-
-describe('Vercel Speed Insights', () => {
- describe('output: server', () => {
- /** @type {import('./test-utils.js').Fixture} */
- let fixture;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/with-speed-insights-enabled/output-as-server/',
- output: 'server',
- });
- await fixture.build();
- });
-
- it('ensures that Vercel Speed Insights is present in the bundle', async () => {
- const [page] = await fixture.readdir('../.vercel/output/static/_astro');
-
- const bundle = await fixture.readFile(`../.vercel/output/static/_astro/${page}`);
-
- assert.match(bundle, /VERCEL_ANALYTICS_ID/);
- });
- });
-
- describe('output: static', () => {
- /** @type {import('./test-utils.js').Fixture} */
- let fixture;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/with-speed-insights-enabled/output-as-static/',
- output: 'static',
- });
- await fixture.build();
- });
-
- it('ensures that Vercel Speed Insights is present in the bundle', async () => {
- const [page] = await fixture.readdir('../.vercel/output/static/_astro');
-
- const bundle = await fixture.readFile(`../.vercel/output/static/_astro/${page}`);
-
- assert.match(bundle, /VERCEL_ANALYTICS_ID/);
- });
- });
-});
diff --git a/packages/integrations/vercel/test/static-assets.test.js b/packages/integrations/vercel/test/static-assets.test.js
deleted file mode 100644
index 37d3a0577..000000000
--- a/packages/integrations/vercel/test/static-assets.test.js
+++ /dev/null
@@ -1,72 +0,0 @@
-import assert from 'node:assert/strict';
-import { describe, it } from 'node:test';
-import { loadFixture } from './test-utils.js';
-
-describe('Static Assets', () => {
- /** @type {import('../../../astro/test/test-utils.js').Fixture} */
- let fixture;
-
- const VALID_CACHE_CONTROL = 'public, max-age=31536000, immutable';
-
- async function build({ adapter, assets, output }) {
- fixture = await loadFixture({
- root: './fixtures/static-assets/',
- output,
- adapter,
- build: {
- assets,
- },
- });
- await fixture.build();
- }
-
- async function getConfig() {
- const json = await fixture.readFile('../.vercel/output/config.json');
- const config = JSON.parse(json);
-
- return config;
- }
-
- async function getAssets() {
- return fixture.config.build.assets;
- }
-
- async function checkValidCacheControl(assets) {
- const config = await getConfig();
- const theAssets = assets ?? (await getAssets());
-
- const route = config.routes.find((r) => r.src === `^/${theAssets}/(.*)$`);
- assert.equal(route.headers['cache-control'], VALID_CACHE_CONTROL);
- assert.equal(route.continue, true);
- }
-
- describe('static adapter', () => {
- it('has cache control', async () => {
- const { default: vercel } = await import('@astrojs/vercel/static');
- await build({ adapter: vercel() });
- await checkValidCacheControl();
- });
-
- it('has cache control other assets', async () => {
- const { default: vercel } = await import('@astrojs/vercel/static');
- const assets = '_foo';
- await build({ adapter: vercel(), assets });
- await checkValidCacheControl(assets);
- });
- });
-
- describe('serverless adapter', () => {
- it('has cache control', async () => {
- const { default: vercel } = await import('@astrojs/vercel/serverless');
- await build({ output: 'server', adapter: vercel() });
- await checkValidCacheControl();
- });
-
- it('has cache control other assets', async () => {
- const { default: vercel } = await import('@astrojs/vercel/serverless');
- const assets = '_foo';
- await build({ output: 'server', adapter: vercel(), assets });
- await checkValidCacheControl(assets);
- });
- });
-});
diff --git a/packages/integrations/vercel/test/static.test.js b/packages/integrations/vercel/test/static.test.js
deleted file mode 100644
index e007862d7..000000000
--- a/packages/integrations/vercel/test/static.test.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import assert from 'node:assert/strict';
-import { before, describe, it } from 'node:test';
-import { loadFixture } from './test-utils.js';
-
-describe('static routing', () => {
- /** @type {import('./test-utils.js').Fixture} */
- let fixture;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/static/',
- });
- await fixture.build();
- });
-
- it('falls back to 404.html', async () => {
- const deploymentConfig = JSON.parse(await fixture.readFile('../.vercel/output/config.json'));
- // change the index if necesseary
- assert.deepEqual(deploymentConfig.routes[2], {
- src: '/.*',
- dest: '/404.html',
- status: 404,
- });
- });
-});
diff --git a/packages/integrations/vercel/test/streaming.test.js b/packages/integrations/vercel/test/streaming.test.js
deleted file mode 100644
index 1e4b0f111..000000000
--- a/packages/integrations/vercel/test/streaming.test.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import assert from 'node:assert/strict';
-import { before, describe, it } from 'node:test';
-import { loadFixture } from './test-utils.js';
-
-describe('streaming', () => {
- /** @type {import('./test-utils.js').Fixture} */
- let fixture;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/streaming/',
- });
- await fixture.build();
- });
-
- it('makes it to vercel function configuration', async () => {
- const vcConfig = JSON.parse(
- await fixture.readFile('../.vercel/output/functions/_render.func/.vc-config.json'),
- );
- assert.equal(vcConfig.supportsResponseStreaming, true);
- });
-});
diff --git a/packages/integrations/vercel/test/test-utils.js b/packages/integrations/vercel/test/test-utils.js
deleted file mode 100644
index 6bb3e7c25..000000000
--- a/packages/integrations/vercel/test/test-utils.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import { loadFixture as baseLoadFixture } from '../../../astro/test/test-utils.js';
-
-export { fixLineEndings } from '../../../astro/test/test-utils.js';
-
-export function loadFixture(config) {
- if (config?.root) {
- config.root = new URL(config.root, import.meta.url);
- }
- return baseLoadFixture(config);
-}
diff --git a/packages/integrations/vercel/test/web-analytics.test.js b/packages/integrations/vercel/test/web-analytics.test.js
deleted file mode 100644
index d5056d0ac..000000000
--- a/packages/integrations/vercel/test/web-analytics.test.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import assert from 'node:assert/strict';
-import { before, describe, it } from 'node:test';
-import { loadFixture } from './test-utils.js';
-
-describe('Vercel Web Analytics', () => {
- describe('output: static', () => {
- /** @type {import('./test-utils.js').Fixture} */
- let fixture;
-
- before(async () => {
- fixture = await loadFixture({
- root: './fixtures/with-web-analytics-enabled/output-as-static/',
- output: 'static',
- });
- await fixture.build();
- });
-
- it('ensures that Vercel Web Analytics is present in the header', async () => {
- const pageOne = await fixture.readFile('../.vercel/output/static/one/index.html');
- const pageTwo = await fixture.readFile('../.vercel/output/static/two/index.html');
-
- assert.match(pageOne, /\/_vercel\/insights\/script.js/);
- assert.match(pageTwo, /\/_vercel\/insights\/script.js/);
- });
- });
-});
diff --git a/packages/integrations/vercel/tsconfig.json b/packages/integrations/vercel/tsconfig.json
deleted file mode 100644
index 1504b4b6d..000000000
--- a/packages/integrations/vercel/tsconfig.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "extends": "../../../tsconfig.base.json",
- "include": ["src"],
- "compilerOptions": {
- "outDir": "./dist"
- }
-}
diff --git a/packages/integrations/vercel/types.d.ts b/packages/integrations/vercel/types.d.ts
deleted file mode 100644
index 95719f5bc..000000000
--- a/packages/integrations/vercel/types.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export interface EdgeLocals {
- vercel: {
- edge: import('@vercel/edge').RequestContext;
- };
-}
diff --git a/packages/integrations/vue/package.json b/packages/integrations/vue/package.json
index 99f14492e..b303a591a 100644
--- a/packages/integrations/vue/package.json
+++ b/packages/integrations/vue/package.json
@@ -44,7 +44,7 @@
"test": "astro-scripts test \"test/**/*.test.js\""
},
"dependencies": {
- "@vitejs/plugin-vue": "^5.1.2",
+ "@vitejs/plugin-vue": "^5.1.3",
"@vitejs/plugin-vue-jsx": "^4.0.1",
"@vue/compiler-sfc": "^3.4.38",
"vite-plugin-vue-devtools": "^7.3.9"
diff --git a/packages/integrations/web-vitals/test/fixtures/basics/package.json b/packages/integrations/web-vitals/test/fixtures/basics/package.json
index 25ab0abc1..5dcbdb1f9 100644
--- a/packages/integrations/web-vitals/test/fixtures/basics/package.json
+++ b/packages/integrations/web-vitals/test/fixtures/basics/package.json
@@ -9,7 +9,7 @@
},
"dependencies": {
"@astrojs/db": "workspace:*",
- "@astrojs/node": "workspace:*",
+ "@astrojs/node": "^8.3.3",
"@astrojs/web-vitals": "workspace:*",
"astro": "workspace:*"
}
diff --git a/packages/markdown/remark/package.json b/packages/markdown/remark/package.json
index 4807f6091..6e96f4866 100644
--- a/packages/markdown/remark/package.json
+++ b/packages/markdown/remark/package.json
@@ -44,7 +44,7 @@
"remark-parse": "^11.0.0",
"remark-rehype": "^11.1.0",
"remark-smartypants": "^3.0.2",
- "shiki": "^1.14.1",
+ "shiki": "^1.16.1",
"unified": "^11.0.5",
"unist-util-remove-position": "^5.0.0",
"unist-util-visit": "^5.0.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4d34317a8..aca112241 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -52,8 +52,8 @@ importers:
specifier: ^0.14.1
version: 0.14.1
turbo:
- specifier: ^2.1.0
- version: 2.1.0
+ specifier: ^2.1.1
+ version: 2.1.1
typescript:
specifier: ~5.5.4
version: 5.5.4
@@ -67,8 +67,8 @@ importers:
specifier: workspace:*
version: link:../packages/integrations/mdx
'@astrojs/node':
- specifier: workspace:*
- version: link:../packages/integrations/node
+ specifier: ^8.3.3
+ version: 8.3.3(astro@packages+astro)
'@benchmark/timer':
specifier: workspace:*
version: link:packages/timer
@@ -159,8 +159,8 @@ importers:
version: 2.0.5(@types/node@18.19.31)(jsdom@23.2.0)(sass@1.77.8)
devDependencies:
'@types/react':
- specifier: ^18.3.4
- version: 18.3.4
+ specifier: ^18.3.5
+ version: 18.3.5
'@types/react-dom':
specifier: ^18.3.0
version: 18.3.0
@@ -246,8 +246,8 @@ importers:
specifier: ^3.6.2
version: link:../../packages/integrations/react
'@types/react':
- specifier: ^18.3.4
- version: 18.3.4
+ specifier: ^18.3.5
+ version: 18.3.5
'@types/react-dom':
specifier: ^18.3.0
version: 18.3.0
@@ -270,7 +270,7 @@ importers:
specifier: ^5.0.0-alpha.2
version: link:../../packages/astro
solid-js:
- specifier: ^1.8.21
+ specifier: ^1.8.22
version: 1.8.22
examples/framework-svelte:
@@ -282,7 +282,7 @@ importers:
specifier: ^5.0.0-alpha.2
version: link:../../packages/astro
svelte:
- specifier: ^4.2.18
+ specifier: ^4.2.19
version: 4.2.19
examples/framework-vue:
@@ -301,7 +301,7 @@ importers:
dependencies:
'@astrojs/node':
specifier: ^9.0.0-alpha.1
- version: link:../../packages/integrations/node
+ version: 9.0.0-alpha.1(astro@packages+astro)
astro:
specifier: ^5.0.0-alpha.2
version: link:../../packages/astro
@@ -316,7 +316,7 @@ importers:
dependencies:
'@astrojs/node':
specifier: ^9.0.0-alpha.1
- version: link:../../packages/integrations/node
+ version: 9.0.0-alpha.1(astro@packages+astro)
astro:
specifier: ^5.0.0-alpha.2
version: link:../../packages/astro
@@ -350,7 +350,7 @@ importers:
devDependencies:
'@astrojs/node':
specifier: ^9.0.0-alpha.1
- version: link:../../packages/integrations/node
+ version: 9.0.0-alpha.1(astro@packages+astro)
'@astrojs/react':
specifier: ^3.6.2
version: link:../../packages/integrations/react
@@ -361,11 +361,11 @@ importers:
specifier: ^6.6.0
version: 6.6.0
'@tailwindcss/forms':
- specifier: ^0.5.7
- version: 0.5.7(tailwindcss@3.4.10)
+ specifier: ^0.5.8
+ version: 0.5.8(tailwindcss@3.4.10)
'@types/react':
- specifier: ^18.3.4
- version: 18.3.4
+ specifier: ^18.3.5
+ version: 18.3.5
'@types/react-dom':
specifier: ^18.3.0
version: 18.3.0
@@ -373,8 +373,8 @@ importers:
specifier: ^5.0.0-alpha.2
version: link:../../packages/astro
postcss:
- specifier: ^8.4.41
- version: 8.4.41
+ specifier: ^8.4.43
+ version: 8.4.44
react:
specifier: ^18.3.1
version: 18.3.1
@@ -389,7 +389,7 @@ importers:
dependencies:
'@astrojs/node':
specifier: ^9.0.0-alpha.1
- version: link:../../packages/integrations/node
+ version: 9.0.0-alpha.1(astro@packages+astro)
'@astrojs/svelte':
specifier: ^6.0.0-alpha.0
version: link:../../packages/integrations/svelte
@@ -397,7 +397,7 @@ importers:
specifier: ^5.0.0-alpha.2
version: link:../../packages/astro
svelte:
- specifier: ^4.2.18
+ specifier: ^4.2.19
version: 4.2.19
examples/starlog:
@@ -422,7 +422,7 @@ importers:
devDependencies:
'@astrojs/node':
specifier: ^9.0.0-alpha.1
- version: link:../../packages/integrations/node
+ version: 9.0.0-alpha.1(astro@packages+astro)
'@astrojs/tailwind':
specifier: ^6.0.0-alpha.0
version: link:../../packages/integrations/tailwind
@@ -496,7 +496,7 @@ importers:
specifier: ^5.0.0-alpha.2
version: link:../../packages/astro
nanostores:
- specifier: ^0.11.2
+ specifier: ^0.11.3
version: 0.11.3
preact:
specifier: ^10.23.2
@@ -518,13 +518,13 @@ importers:
version: link:../../packages/astro
autoprefixer:
specifier: ^10.4.20
- version: 10.4.20(postcss@8.4.41)
+ version: 10.4.20(postcss@8.4.44)
canvas-confetti:
specifier: ^1.9.3
version: 1.9.3
postcss:
- specifier: ^8.4.41
- version: 8.4.41
+ specifier: ^8.4.43
+ version: 8.4.44
tailwindcss:
specifier: ^3.4.10
version: 3.4.10
@@ -560,7 +560,7 @@ importers:
version: 0.4.1
'@rollup/pluginutils':
specifier: ^5.1.0
- version: 5.1.0(rollup@4.21.1)
+ version: 5.1.0(rollup@4.21.2)
'@types/cookie':
specifier: ^0.6.0
version: 0.6.0
@@ -685,8 +685,8 @@ importers:
specifier: ^7.6.3
version: 7.6.3
shiki:
- specifier: ^1.14.1
- version: 1.14.1
+ specifier: ^1.16.1
+ version: 1.16.1
string-width:
specifier: ^7.2.0
version: 7.2.0
@@ -697,8 +697,8 @@ importers:
specifier: ^0.3.0
version: 0.3.0
tsconfck:
- specifier: ^3.1.1
- version: 3.1.1(typescript@5.5.4)
+ specifier: ^3.1.3
+ version: 3.1.3(typescript@5.5.4)
unist-util-visit:
specifier: ^5.0.0
version: 5.0.0
@@ -709,8 +709,8 @@ importers:
specifier: ^5.4.2
version: 5.4.2(@types/node@18.19.31)(sass@1.77.8)
vitefu:
- specifier: ^0.2.5
- version: 0.2.5(vite@5.4.2(@types/node@18.19.31)(sass@1.77.8))
+ specifier: ^1.0.2
+ version: 1.0.2(vite@5.4.2(@types/node@18.19.31)(sass@1.77.8))
which-pm:
specifier: ^3.0.0
version: 3.0.0
@@ -743,12 +743,6 @@ importers:
'@types/aria-query':
specifier: ^5.0.4
version: 5.0.4
- '@types/babel__generator':
- specifier: ^7.6.8
- version: 7.6.8
- '@types/babel__traverse':
- specifier: ^7.20.6
- version: 7.20.6
'@types/common-ancestor-path':
specifier: ^1.0.2
version: 1.0.2
@@ -759,8 +753,8 @@ importers:
specifier: ^4.1.12
version: 4.1.12
'@types/diff':
- specifier: ^5.2.1
- version: 5.2.1
+ specifier: ^5.2.2
+ version: 5.2.2
'@types/dlv':
specifier: ^1.1.4
version: 1.1.4
@@ -798,8 +792,8 @@ importers:
specifier: 1.0.0
version: 1.0.0
eol:
- specifier: ^0.9.1
- version: 0.9.1
+ specifier: ^0.10.0
+ version: 0.10.0
execa:
specifier: ^8.0.1
version: 8.0.1
@@ -834,8 +828,8 @@ importers:
specifier: ^0.1.2
version: 0.1.2
rollup:
- specifier: ^4.21.1
- version: 4.21.1
+ specifier: ^4.21.2
+ version: 4.21.2
sass:
specifier: ^1.77.8
version: 1.77.8
@@ -896,14 +890,14 @@ importers:
specifier: workspace:*
version: link:../../../../db
'@astrojs/node':
- specifier: workspace:*
- version: link:../../../../integrations/node
+ specifier: ^8.3.3
+ version: 8.3.3(astro@packages+astro)
'@astrojs/react':
specifier: workspace:*
version: link:../../../../integrations/react
'@types/react':
- specifier: ^18.3.4
- version: 18.3.4
+ specifier: ^18.3.5
+ version: 18.3.5
'@types/react-dom':
specifier: ^18.3.0
version: 18.3.0
@@ -929,8 +923,8 @@ importers:
specifier: workspace:*
version: link:../../../../db
'@astrojs/node':
- specifier: workspace:*
- version: link:../../../../integrations/node
+ specifier: ^8.3.3
+ version: 8.3.3(astro@packages+astro)
'@astrojs/react':
specifier: workspace:*
version: link:../../../../integrations/react
@@ -1564,8 +1558,8 @@ importers:
specifier: workspace:*
version: link:../../../../integrations/mdx
'@astrojs/node':
- specifier: workspace:*
- version: link:../../../../integrations/node
+ specifier: ^8.3.3
+ version: 8.3.3(astro@packages+astro)
'@astrojs/react':
specifier: workspace:*
version: link:../../../../integrations/react
@@ -1645,10 +1639,10 @@ importers:
version: link:../../..
autoprefixer:
specifier: ^10.4.20
- version: 10.4.20(postcss@8.4.41)
+ version: 10.4.20(postcss@8.4.44)
postcss:
- specifier: ^8.4.41
- version: 8.4.41
+ specifier: ^8.4.43
+ version: 8.4.44
tailwindcss:
specifier: ^3.4.10
version: 3.4.10
@@ -1671,8 +1665,8 @@ importers:
packages/astro/e2e/fixtures/view-transitions:
dependencies:
'@astrojs/node':
- specifier: workspace:*
- version: link:../../../../integrations/node
+ specifier: ^8.3.3
+ version: 8.3.3(astro@packages+astro)
'@astrojs/react':
specifier: workspace:*
version: link:../../../../integrations/react
@@ -1728,8 +1722,8 @@ importers:
specifier: workspace:*
version: link:../utils
'@types/react':
- specifier: ^18.3.4
- version: 18.3.4
+ specifier: ^18.3.5
+ version: 18.3.5
'@types/react-dom':
specifier: ^18.3.0
version: 18.3.0
@@ -1755,8 +1749,8 @@ importers:
specifier: workspace:*
version: link:../utils
'@types/react':
- specifier: ^18.3.4
- version: 18.3.4
+ specifier: ^18.3.5
+ version: 18.3.5
'@types/react-dom':
specifier: ^18.3.0
version: 18.3.0
@@ -1782,8 +1776,8 @@ importers:
specifier: workspace:*
version: link:../utils
'@types/react':
- specifier: ^18.3.4
- version: 18.3.4
+ specifier: ^18.3.5
+ version: 18.3.5
'@types/react-dom':
specifier: ^18.3.0
version: 18.3.0
@@ -2503,8 +2497,8 @@ importers:
packages/astro/test/fixtures/client-address-node:
dependencies:
'@astrojs/node':
- specifier: workspace:*
- version: link:../../../../integrations/node
+ specifier: ^8.3.3
+ version: 8.3.3(astro@packages+astro)
astro:
specifier: workspace:*
version: link:../../..
@@ -2995,8 +2989,8 @@ importers:
packages/astro/test/fixtures/custom-assets-name:
dependencies:
'@astrojs/node':
- specifier: workspace:*
- version: link:../../../../integrations/node
+ specifier: ^8.3.3
+ version: 8.3.3(astro@packages+astro)
astro:
specifier: workspace:*
version: link:../../..
@@ -3460,10 +3454,10 @@ importers:
version: link:../../..
autoprefixer:
specifier: ^10.4.20
- version: 10.4.20(postcss@8.4.41)
+ version: 10.4.20(postcss@8.4.44)
postcss:
- specifier: ^8.4.41
- version: 8.4.41
+ specifier: ^8.4.43
+ version: 8.4.44
solid-js:
specifier: ^1.8.22
version: 1.8.22
@@ -3476,7 +3470,7 @@ importers:
devDependencies:
postcss-preset-env:
specifier: ^10.0.2
- version: 10.0.2(postcss@8.4.41)
+ version: 10.0.2(postcss@8.4.44)
packages/astro/test/fixtures/preact-compat-component:
dependencies:
@@ -3827,8 +3821,8 @@ importers:
packages/astro/test/fixtures/ssr-api-route:
dependencies:
'@astrojs/node':
- specifier: workspace:*
- version: link:../../../../integrations/node
+ specifier: ^8.3.3
+ version: 8.3.3(astro@packages+astro)
astro:
specifier: workspace:*
version: link:../../..
@@ -3911,8 +3905,8 @@ importers:
specifier: link:./deps/test-adapter
version: link:deps/test-adapter
'@types/react':
- specifier: ^18.3.4
- version: 18.3.4
+ specifier: ^18.3.5
+ version: 18.3.5
'@types/react-dom':
specifier: ^18.3.0
version: 18.3.0
@@ -4033,8 +4027,8 @@ importers:
packages/astro/test/fixtures/static-build-ssr:
dependencies:
'@astrojs/node':
- specifier: workspace:*
- version: link:../../../../integrations/node
+ specifier: ^8.3.3
+ version: 8.3.3(astro@packages+astro)
'@test/static-build-pkg':
specifier: workspace:*
version: link:../static-build/pkg
@@ -4084,10 +4078,10 @@ importers:
version: link:../../..
autoprefixer:
specifier: ^10.4.20
- version: 10.4.20(postcss@8.4.41)
+ version: 10.4.20(postcss@8.4.44)
postcss:
- specifier: ^8.4.41
- version: 8.4.41
+ specifier: ^8.4.43
+ version: 8.4.44
tailwindcss:
specifier: ^3.4.10
version: 3.4.10
@@ -4101,8 +4095,8 @@ importers:
specifier: workspace:*
version: link:../../..
postcss:
- specifier: ^8.4.41
- version: 8.4.41
+ specifier: ^8.4.43
+ version: 8.4.44
tailwindcss:
specifier: ^3.4.10
version: 3.4.10
@@ -4255,7 +4249,7 @@ importers:
version: 1.0.2
drizzle-orm:
specifier: ^0.31.2
- version: 0.31.4(@libsql/client@0.10.0)(@types/react@18.3.4)(react@18.3.1)
+ version: 0.31.4(@libsql/client@0.10.0)(@types/react@18.3.5)(react@18.3.1)
github-slugger:
specifier: ^2.0.0
version: 2.0.0
@@ -4408,14 +4402,14 @@ importers:
specifier: workspace:*
version: link:../../..
'@astrojs/node':
- specifier: workspace:*
- version: link:../../../../integrations/node
+ specifier: ^8.3.3
+ version: 8.3.3(astro@packages+astro)
'@astrojs/react':
specifier: ^3.6.2
version: link:../../../../integrations/react
'@types/react':
- specifier: ^18.3.4
- version: 18.3.4
+ specifier: ^18.3.5
+ version: 18.3.5
'@types/react-dom':
specifier: ^18.3.0
version: 18.3.0
@@ -4423,8 +4417,8 @@ importers:
specifier: workspace:*
version: link:../../../../astro
open-props:
- specifier: ^1.7.5
- version: 1.7.5
+ specifier: ^1.7.6
+ version: 1.7.6
react:
specifier: ^18.3.1
version: 18.3.1
@@ -4516,7 +4510,7 @@ importers:
version: link:../../astro-prism
'@markdoc/markdoc':
specifier: ^0.4.0
- version: 0.4.0(@types/react@18.3.4)(react@18.3.1)
+ version: 0.4.0(@types/react@18.3.5)(react@18.3.1)
esbuild:
specifier: ^0.21.5
version: 0.21.5
@@ -4778,8 +4772,8 @@ importers:
specifier: ^6.0.0
version: 6.0.0
rehype-pretty-code:
- specifier: ^0.13.2
- version: 0.13.2(shiki@1.14.1)
+ specifier: ^0.14.0
+ version: 0.14.0(shiki@1.16.1)
remark-math:
specifier: ^6.0.0
version: 6.0.0
@@ -4793,8 +4787,8 @@ importers:
specifier: ^9.0.0
version: 9.0.0
shiki:
- specifier: ^1.14.1
- version: 1.14.1
+ specifier: ^1.16.1
+ version: 1.16.1
unified:
specifier: ^11.0.5
version: 11.0.5
@@ -4960,165 +4954,7 @@ importers:
packages/integrations/netlify: {}
- packages/integrations/node:
- dependencies:
- send:
- specifier: ^0.18.0
- version: 0.18.0
- server-destroy:
- specifier: ^1.0.1
- version: 1.0.1
- devDependencies:
- '@types/node':
- specifier: ^18.17.8
- version: 18.19.31
- '@types/send':
- specifier: ^0.17.4
- version: 0.17.4
- '@types/server-destroy':
- specifier: ^1.0.4
- version: 1.0.4
- astro:
- specifier: workspace:*
- version: link:../../astro
- astro-scripts:
- specifier: workspace:*
- version: link:../../../scripts
- cheerio:
- specifier: 1.0.0
- version: 1.0.0
- express:
- specifier: ^4.19.2
- version: 4.19.2
- node-mocks-http:
- specifier: ^1.15.1
- version: 1.15.1
-
- packages/integrations/node/test/fixtures/api-route:
- dependencies:
- '@astrojs/node':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/node/test/fixtures/bad-urls:
- dependencies:
- '@astrojs/node':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/node/test/fixtures/encoded:
- dependencies:
- '@astrojs/node':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/node/test/fixtures/errors:
- dependencies:
- '@astrojs/node':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/node/test/fixtures/headers:
- dependencies:
- '@astrojs/node':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/node/test/fixtures/image:
- dependencies:
- '@astrojs/node':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/node/test/fixtures/locals:
- dependencies:
- '@astrojs/node':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/node/test/fixtures/node-middleware:
- dependencies:
- '@astrojs/node':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/node/test/fixtures/prerender:
- dependencies:
- '@astrojs/node':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/node/test/fixtures/prerender-404-500:
- dependencies:
- '@astrojs/node':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/node/test/fixtures/preview-headers:
- dependencies:
- '@astrojs/node':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/node/test/fixtures/trailing-slash:
- dependencies:
- '@astrojs/node':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/node/test/fixtures/url:
- dependencies:
- '@astrojs/node':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/node/test/fixtures/well-known-locations:
- dependencies:
- '@astrojs/node':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
+ packages/integrations/node: {}
packages/integrations/partytown:
dependencies:
@@ -5154,8 +4990,8 @@ importers:
specifier: ^1.0.2
version: 1.0.2(@babel/core@7.25.2)
preact-render-to-string:
- specifier: ^6.5.9
- version: 6.5.9(preact@10.23.2)
+ specifier: ^6.5.10
+ version: 6.5.10(preact@10.23.2)
devDependencies:
astro:
specifier: workspace:*
@@ -5177,8 +5013,8 @@ importers:
version: 1.5.3
devDependencies:
'@types/react':
- specifier: ^18.3.4
- version: 18.3.4
+ specifier: ^18.3.5
+ version: 18.3.5
'@types/react-dom':
specifier: ^18.3.0
version: 18.3.0
@@ -5235,8 +5071,8 @@ importers:
version: 3.23.8
devDependencies:
'@astrojs/node':
- specifier: workspace:*
- version: link:../node
+ specifier: ^8.3.3
+ version: 8.3.3(astro@packages+astro)
astro:
specifier: workspace:*
version: link:../../astro
@@ -5328,13 +5164,13 @@ importers:
dependencies:
autoprefixer:
specifier: ^10.4.20
- version: 10.4.20(postcss@8.4.41)
+ version: 10.4.20(postcss@8.4.44)
postcss:
- specifier: ^8.4.41
- version: 8.4.41
+ specifier: ^8.4.43
+ version: 8.4.44
postcss-load-config:
specifier: ^4.0.2
- version: 4.0.2(postcss@8.4.41)
+ version: 4.0.2(postcss@8.4.44)
devDependencies:
astro:
specifier: workspace:*
@@ -5392,191 +5228,11 @@ importers:
specifier: 1.0.0
version: 1.0.0
- packages/integrations/vercel/test/fixtures/basic:
- dependencies:
- '@astrojs/vercel':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/vercel/test/fixtures/image:
- dependencies:
- '@astrojs/vercel':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/vercel/test/fixtures/isr:
- dependencies:
- '@astrojs/vercel':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/vercel/test/fixtures/max-duration:
- dependencies:
- '@astrojs/vercel':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/vercel/test/fixtures/middleware-with-edge-file:
- dependencies:
- '@astrojs/vercel':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/vercel/test/fixtures/middleware-without-edge-file:
- dependencies:
- '@astrojs/vercel':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/vercel/test/fixtures/no-output:
- dependencies:
- '@astrojs/vercel':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/vercel/test/fixtures/prerendered-error-pages:
- dependencies:
- '@astrojs/vercel':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/vercel/test/fixtures/redirects:
- dependencies:
- '@astrojs/vercel':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/vercel/test/fixtures/redirects-serverless:
- dependencies:
- '@astrojs/vercel':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/vercel/test/fixtures/server-islands:
- dependencies:
- '@astrojs/vercel':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/vercel/test/fixtures/serverless-prerender:
- dependencies:
- '@astrojs/vercel':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/vercel/test/fixtures/serverless-with-dynamic-routes:
- dependencies:
- '@astrojs/vercel':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/vercel/test/fixtures/static:
- dependencies:
- '@astrojs/vercel':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/vercel/test/fixtures/static-assets:
- dependencies:
- '@astrojs/vercel':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/vercel/test/fixtures/streaming:
- dependencies:
- '@astrojs/vercel':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
- packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-server:
- dependencies:
- '@astrojs/vercel':
- specifier: workspace:*
- version: link:../../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../../astro
-
- packages/integrations/vercel/test/fixtures/with-speed-insights-enabled/output-as-static:
- dependencies:
- '@astrojs/vercel':
- specifier: workspace:*
- version: link:../../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../../astro
-
- packages/integrations/vercel/test/fixtures/with-web-analytics-enabled/output-as-static:
- dependencies:
- '@astrojs/vercel':
- specifier: workspace:*
- version: link:../../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../../astro
-
- packages/integrations/vercel/test/hosted/hosted-astro-project:
- dependencies:
- '@astrojs/vercel':
- specifier: workspace:*
- version: link:../../..
- astro:
- specifier: workspace:*
- version: link:../../../../../astro
-
packages/integrations/vue:
dependencies:
'@vitejs/plugin-vue':
- specifier: ^5.1.2
- version: 5.1.2(vite@5.4.2(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.38(typescript@5.5.4))
+ specifier: ^5.1.3
+ version: 5.1.3(vite@5.4.2(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.38(typescript@5.5.4))
'@vitejs/plugin-vue-jsx':
specifier: ^4.0.1
version: 4.0.1(vite@5.4.2(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.38(typescript@5.5.4))
@@ -5585,7 +5241,7 @@ importers:
version: 3.4.38
vite-plugin-vue-devtools:
specifier: ^7.3.9
- version: 7.3.9(rollup@4.21.1)(vite@5.4.2(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.38(typescript@5.5.4))
+ version: 7.3.9(rollup@4.21.2)(vite@5.4.2(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.38(typescript@5.5.4))
devDependencies:
astro:
specifier: workspace:*
@@ -5712,8 +5368,8 @@ importers:
specifier: workspace:*
version: link:../../../../../db
'@astrojs/node':
- specifier: workspace:*
- version: link:../../../../node
+ specifier: ^8.3.3
+ version: 8.3.3(astro@packages+astro)
'@astrojs/web-vitals':
specifier: workspace:*
version: link:../../..
@@ -5766,8 +5422,8 @@ importers:
specifier: ^3.0.2
version: 3.0.2
shiki:
- specifier: ^1.14.1
- version: 1.14.1
+ specifier: ^1.16.1
+ version: 1.16.1
unified:
specifier: ^11.0.5
version: 11.0.5
@@ -5929,8 +5585,8 @@ importers:
specifier: ^0.3.0
version: 0.3.0
tsconfck:
- specifier: ^3.1.1
- version: 3.1.1(typescript@5.5.4)
+ specifier: ^3.1.3
+ version: 3.1.3(typescript@5.5.4)
packages:
@@ -6006,6 +5662,16 @@ packages:
prettier-plugin-astro:
optional: true
+ '@astrojs/node@8.3.3':
+ resolution: {integrity: sha512-idrKhnnPSi0ABV+PCQsRQqVNwpOvVDF/+fkwcIiE8sr9J8EMvW9g/oyAt8T4X2OBJ8FUzYPL8klfCdG7r0eB5g==}
+ peerDependencies:
+ astro: ^4.2.0
+
+ '@astrojs/node@9.0.0-alpha.1':
+ resolution: {integrity: sha512-5KsaJYuAnKP4tmT/skEWLs4UP6FQhtwIVa26MBU5imiS/aL33cIwmZ7Gl2W0rP/t4Wnz9ehf42lXWXLPekhETw==}
+ peerDependencies:
+ astro: ^5.0.0-alpha.0
+
'@astrojs/yaml2ts@0.2.1':
resolution: {integrity: sha512-CBaNwDQJz20E5WxzQh4thLVfhB3JEEGz72wRA+oJp6fQR37QLAqXZJU0mHC+yqMOQ6oj0GfRPJrz6hjf+zm6zA==}
@@ -7132,88 +6798,91 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.21.1':
- resolution: {integrity: sha512-2thheikVEuU7ZxFXubPDOtspKn1x0yqaYQwvALVtEcvFhMifPADBrgRPyHV0TF3b+9BgvgjgagVyvA/UqPZHmg==}
+ '@rollup/rollup-android-arm-eabi@4.21.2':
+ resolution: {integrity: sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.21.1':
- resolution: {integrity: sha512-t1lLYn4V9WgnIFHXy1d2Di/7gyzBWS8G5pQSXdZqfrdCGTwi1VasRMSS81DTYb+avDs/Zz4A6dzERki5oRYz1g==}
+ '@rollup/rollup-android-arm64@4.21.2':
+ resolution: {integrity: sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.21.1':
- resolution: {integrity: sha512-AH/wNWSEEHvs6t4iJ3RANxW5ZCK3fUnmf0gyMxWCesY1AlUj8jY7GC+rQE4wd3gwmZ9XDOpL0kcFnCjtN7FXlA==}
+ '@rollup/rollup-darwin-arm64@4.21.2':
+ resolution: {integrity: sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.21.1':
- resolution: {integrity: sha512-dO0BIz/+5ZdkLZrVgQrDdW7m2RkrLwYTh2YMFG9IpBtlC1x1NPNSXkfczhZieOlOLEqgXOFH3wYHB7PmBtf+Bg==}
+ '@rollup/rollup-darwin-x64@4.21.2':
+ resolution: {integrity: sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-linux-arm-gnueabihf@4.21.1':
- resolution: {integrity: sha512-sWWgdQ1fq+XKrlda8PsMCfut8caFwZBmhYeoehJ05FdI0YZXk6ZyUjWLrIgbR/VgiGycrFKMMgp7eJ69HOF2pQ==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.21.2':
+ resolution: {integrity: sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.21.1':
- resolution: {integrity: sha512-9OIiSuj5EsYQlmwhmFRA0LRO0dRRjdCVZA3hnmZe1rEwRk11Jy3ECGGq3a7RrVEZ0/pCsYWx8jG3IvcrJ6RCew==}
+ '@rollup/rollup-linux-arm-musleabihf@4.21.2':
+ resolution: {integrity: sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.21.1':
- resolution: {integrity: sha512-0kuAkRK4MeIUbzQYu63NrJmfoUVicajoRAL1bpwdYIYRcs57iyIV9NLcuyDyDXE2GiZCL4uhKSYAnyWpjZkWow==}
+ '@rollup/rollup-linux-arm64-gnu@4.21.2':
+ resolution: {integrity: sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.21.1':
- resolution: {integrity: sha512-/6dYC9fZtfEY0vozpc5bx1RP4VrtEOhNQGb0HwvYNwXD1BBbwQ5cKIbUVVU7G2d5WRE90NfB922elN8ASXAJEA==}
+ '@rollup/rollup-linux-arm64-musl@4.21.2':
+ resolution: {integrity: sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-powerpc64le-gnu@4.21.1':
- resolution: {integrity: sha512-ltUWy+sHeAh3YZ91NUsV4Xg3uBXAlscQe8ZOXRCVAKLsivGuJsrkawYPUEyCV3DYa9urgJugMLn8Z3Z/6CeyRQ==}
+ '@rollup/rollup-linux-powerpc64le-gnu@4.21.2':
+ resolution: {integrity: sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.21.1':
- resolution: {integrity: sha512-BggMndzI7Tlv4/abrgLwa/dxNEMn2gC61DCLrTzw8LkpSKel4o+O+gtjbnkevZ18SKkeN3ihRGPuBxjaetWzWg==}
+ '@rollup/rollup-linux-riscv64-gnu@4.21.2':
+ resolution: {integrity: sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.21.1':
- resolution: {integrity: sha512-z/9rtlGd/OMv+gb1mNSjElasMf9yXusAxnRDrBaYB+eS1shFm6/4/xDH1SAISO5729fFKUkJ88TkGPRUh8WSAA==}
+ '@rollup/rollup-linux-s390x-gnu@4.21.2':
+ resolution: {integrity: sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.21.1':
- resolution: {integrity: sha512-kXQVcWqDcDKw0S2E0TmhlTLlUgAmMVqPrJZR+KpH/1ZaZhLSl23GZpQVmawBQGVhyP5WXIsIQ/zqbDBBYmxm5w==}
+ '@rollup/rollup-linux-x64-gnu@4.21.2':
+ resolution: {integrity: sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.21.1':
- resolution: {integrity: sha512-CbFv/WMQsSdl+bpX6rVbzR4kAjSSBuDgCqb1l4J68UYsQNalz5wOqLGYj4ZI0thGpyX5kc+LLZ9CL+kpqDovZA==}
+ '@rollup/rollup-linux-x64-musl@4.21.2':
+ resolution: {integrity: sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-win32-arm64-msvc@4.21.1':
- resolution: {integrity: sha512-3Q3brDgA86gHXWHklrwdREKIrIbxC0ZgU8lwpj0eEKGBQH+31uPqr0P2v11pn0tSIxHvcdOWxa4j+YvLNx1i6g==}
+ '@rollup/rollup-win32-arm64-msvc@4.21.2':
+ resolution: {integrity: sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.21.1':
- resolution: {integrity: sha512-tNg+jJcKR3Uwe4L0/wY3Ro0H+u3nrb04+tcq1GSYzBEmKLeOQF2emk1whxlzNqb6MMrQ2JOcQEpuuiPLyRcSIw==}
+ '@rollup/rollup-win32-ia32-msvc@4.21.2':
+ resolution: {integrity: sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.21.1':
- resolution: {integrity: sha512-xGiIH95H1zU7naUyTKEyOA/I0aexNMUdO9qRv0bLKN3qu25bBdrxZHqA3PTJ24YNN/GdMzG4xkDcd/GvjuhfLg==}
+ '@rollup/rollup-win32-x64-msvc@4.21.2':
+ resolution: {integrity: sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==}
cpu: [x64]
os: [win32]
- '@shikijs/core@1.14.1':
- resolution: {integrity: sha512-KyHIIpKNaT20FtFPFjCQB5WVSTpLR/n+jQXhWHWVUMm9MaOaG9BGOG0MSyt7yA4+Lm+4c9rTc03tt3nYzeYSfw==}
+ '@shikijs/core@1.16.1':
+ resolution: {integrity: sha512-aI0hBtw+a6KsJp2jcD4YuQqKpeCbURMZbhHVozDknJpm+KJqeMRkEnfBC8BaKE/5XC+uofPgCLsa/TkTk0Ba0w==}
+
+ '@shikijs/vscode-textmate@9.2.0':
+ resolution: {integrity: sha512-5FinaOp6Vdh/dl4/yaOTh0ZeKch+rYS8DUb38V3GMKYVkdqzxw53lViRKUYkVILRiVQT7dcPC7VvAKOR73zVtQ==}
'@sindresorhus/merge-streams@2.3.0':
resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==}
@@ -7239,10 +6908,10 @@ packages:
svelte: ^4.0.0 || ^5.0.0-next.0
vite: ^5.0.0
- '@tailwindcss/forms@0.5.7':
- resolution: {integrity: sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==}
+ '@tailwindcss/forms@0.5.8':
+ resolution: {integrity: sha512-DJs7B7NPD0JH7BVvdHWNviWmunlFhuEkz7FyFxE4japOWYMLl9b1D6+Z9mivJJPWr6AEbmlPqgiFRyLwFB1SgQ==}
peerDependencies:
- tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1'
+ tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20'
'@trysound/sax@0.2.0':
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
@@ -7299,8 +6968,8 @@ packages:
'@types/deep-diff@1.0.5':
resolution: {integrity: sha512-PQyNSy1YMZU1hgZA5tTYfHPpUAo9Dorn1PZho2/budQLfqLu3JIP37JAavnwYpR1S2yFZTXa3hxaE4ifGW5jaA==}
- '@types/diff@5.2.1':
- resolution: {integrity: sha512-uxpcuwWJGhe2AR1g8hD9F5OYGCqjqWnBUQFD8gMZsDbv8oPHzxJF6iMO6n8Tk0AdzlxoaaoQhOYlIg/PukVU8g==}
+ '@types/diff@5.2.2':
+ resolution: {integrity: sha512-qVqLpd49rmJA2nZzLVsmfS/aiiBpfVE95dHhPVwG0NmSBAt+riPxnj53wq2oBq5m4Q2RF1IWFEUpnZTgrQZfEQ==}
'@types/dlv@1.1.4':
resolution: {integrity: sha512-m8KmImw4Jt+4rIgupwfivrWEOnj1LzkmKkqbh075uG13eTQ1ZxHWT6T0vIdSQhLIjQCiR0n0lZdtyDOPO1x2Mw==}
@@ -7404,6 +7073,9 @@ packages:
'@types/react@18.3.4':
resolution: {integrity: sha512-J7W30FTdfCxDDjmfRM+/JqLHBIyl7xUIp9kwK637FGmY7+mkSFSe6L4jpZzhj5QMfLssSDP4/i75AKkrdC7/Jw==}
+ '@types/react@18.3.5':
+ resolution: {integrity: sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==}
+
'@types/relateurl@0.2.33':
resolution: {integrity: sha512-bTQCKsVbIdzLqZhLkF5fcJQreE4y1ro4DIyVrlDNSCJRRwHhB8Z+4zXXa8jN6eDvc2HbRsEYgbvrnGvi54EpSw==}
@@ -7550,8 +7222,8 @@ packages:
vite: ^5.0.0
vue: ^3.0.0
- '@vitejs/plugin-vue@5.1.2':
- resolution: {integrity: sha512-nY9IwH12qeiJqumTCLJLE7IiNx7HZ39cbHaysEUd+Myvbz9KAqd2yq+U01Kab1R/H1BmiyM2ShTYlNH32Fzo3A==}
+ '@vitejs/plugin-vue@5.1.3':
+ resolution: {integrity: sha512-3xbWsKEKXYlmX82aOHufFQVnkbMC/v8fLpWwh6hWOUrK5fbbtBh9Q/WWse27BFgSy2/e2c0fz5Scgya9h2GLhw==}
engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies:
vite: ^5.0.0
@@ -7763,9 +7435,6 @@ packages:
aria-query@5.3.0:
resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
- array-flatten@1.1.1:
- resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
-
array-iterate@2.0.1:
resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==}
@@ -7868,10 +7537,6 @@ packages:
birpc@0.2.17:
resolution: {integrity: sha512-+hkTxhot+dWsLpp3gia5AkVHIsKlZybNT5gIYiDlNzJrmYPcTM9k5/w2uaj3IPpd7LlEYpmCj4Jj1nC41VhDFg==}
- body-parser@1.20.2:
- resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==}
- engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
-
boolbase@1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
@@ -7901,18 +7566,10 @@ packages:
resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==}
engines: {node: '>=18'}
- bytes@3.1.2:
- resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
- engines: {node: '>= 0.8'}
-
cac@6.7.14:
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
engines: {node: '>=8'}
- call-bind@1.0.7:
- resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
- engines: {node: '>= 0.4'}
-
callsites@3.1.0:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
@@ -8114,16 +7771,9 @@ packages:
resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
engines: {node: '>= 0.6'}
- content-type@1.0.5:
- resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
- engines: {node: '>= 0.6'}
-
convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
- cookie-signature@1.0.6:
- resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
-
cookie@0.6.0:
resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
engines: {node: '>= 0.6'}
@@ -8262,10 +7912,6 @@ packages:
resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==}
engines: {node: '>=18'}
- define-data-property@1.1.4:
- resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
- engines: {node: '>= 0.4'}
-
define-lazy-prop@3.0.0:
resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
engines: {node: '>=12'}
@@ -8482,20 +8128,12 @@ packages:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
- eol@0.9.1:
- resolution: {integrity: sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==}
+ eol@0.10.0:
+ resolution: {integrity: sha512-+w3ktYrOphcIqC1XKmhQYvM+o2uxgQFiimL7B6JPZJlWVxf7Lno9e/JWLPIgbHo7DoZ+b7jsf/NzrUcNe6ZTZQ==}
error-stack-parser-es@0.1.5:
resolution: {integrity: sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==}
- es-define-property@1.0.0:
- resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
- engines: {node: '>= 0.4'}
-
- es-errors@1.3.0:
- resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
- engines: {node: '>= 0.4'}
-
es-module-lexer@1.5.4:
resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==}
@@ -8625,10 +8263,6 @@ packages:
resolution: {integrity: sha512-uHaC9LYNv6BcW+8SvXcwUUDCrrUxt3GSa61DFvTHj8JC+M0hekMFBwMlCarLQDk5bbpZ2vStpnQPIwRuV98YMw==}
engines: {node: '>=12.0.0'}
- express@4.19.2:
- resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==}
- engines: {node: '>= 0.10.0'}
-
extend-shallow@2.0.1:
resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
engines: {node: '>=0.10.0'}
@@ -8685,10 +8319,6 @@ packages:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
- finalhandler@1.2.0:
- resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==}
- engines: {node: '>= 0.8'}
-
find-up-simple@1.0.0:
resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==}
engines: {node: '>=18'}
@@ -8727,10 +8357,6 @@ packages:
resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
engines: {node: '>=12.20.0'}
- forwarded@0.2.0:
- resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
- engines: {node: '>= 0.6'}
-
fraction.js@4.3.7:
resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
@@ -8794,10 +8420,6 @@ packages:
get-func-name@2.0.2:
resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
- get-intrinsic@1.2.4:
- resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
- engines: {node: '>= 0.4'}
-
get-stream@8.0.1:
resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
engines: {node: '>=16'}
@@ -8842,9 +8464,6 @@ packages:
resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==}
engines: {node: '>=18'}
- gopd@1.0.1:
- resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
-
graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
@@ -8866,17 +8485,6 @@ packages:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
- has-property-descriptors@1.0.2:
- resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
-
- has-proto@1.0.3:
- resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
- engines: {node: '>= 0.4'}
-
- has-symbols@1.0.3:
- resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
- engines: {node: '>= 0.4'}
-
has-unicode@2.0.1:
resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
@@ -9055,10 +8663,6 @@ packages:
inline-style-parser@0.2.3:
resolution: {integrity: sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==}
- ipaddr.js@1.9.1:
- resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
- engines: {node: '>= 0.10'}
-
is-alphabetical@2.0.1:
resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==}
@@ -9487,9 +9091,6 @@ packages:
resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==}
engines: {node: '>=12.13'}
- merge-descriptors@1.0.1:
- resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==}
-
merge-descriptors@1.0.3:
resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==}
@@ -9816,9 +9417,6 @@ packages:
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
engines: {node: '>= 6'}
- object-inspect@1.13.1:
- resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
-
ohash@1.1.3:
resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==}
@@ -9849,8 +9447,8 @@ packages:
resolution: {integrity: sha512-M7CJbmv7UCopc0neRKdzfoGWaVZC+xC1925GitKH9EAqYFzX9//25Q7oX4+jw0tiCCj+t5l6VZh8UPH23NZkMA==}
hasBin: true
- open-props@1.7.5:
- resolution: {integrity: sha512-DajjLQDJgIa0i+QdB2q5M8lNLo2ICk+DbDh4TsqNsT1tAO8Zm8F7dndSkLMQkobT98lbvDMMpJWO8NT0ibjrjA==}
+ open-props@1.7.6:
+ resolution: {integrity: sha512-fE3E22x8lCf6gJrPO3L54NKrPaqQGxeKoXLz4JIXrhALD3Ua1kkE2kMw8HmlTKYF9BSLLMfoVfsT3UC1PJcaww==}
open@10.1.0:
resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==}
@@ -9975,9 +9573,6 @@ packages:
resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==}
engines: {node: '>=16 || 14 >=14.17'}
- path-to-regexp@0.1.7:
- resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
-
path-to-regexp@6.2.2:
resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==}
@@ -10228,12 +9823,12 @@ packages:
postcss-value-parser@4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
- postcss@8.4.41:
- resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==}
+ postcss@8.4.44:
+ resolution: {integrity: sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==}
engines: {node: ^10 || ^12 || >=14}
- preact-render-to-string@6.5.9:
- resolution: {integrity: sha512-Fn9R89h6qrQeSRmsH2O2fWzqpVwsJgEL9UTly5nGEV2ldhVuG+9JhXdNJ6zreIkOZcBT20+AOMwlG1x72znJ+g==}
+ preact-render-to-string@6.5.10:
+ resolution: {integrity: sha512-BJdypTQaBA5UbTF9NKZS3zP93Sw33tZOxNXIfuHofqOZFoMdsquNkVebs/HkEw0in/Qbi6Ep/Anngnj+VsHeBQ==}
peerDependencies:
preact: '>=10'
@@ -10297,10 +9892,6 @@ packages:
property-information@6.5.0:
resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==}
- proxy-addr@2.0.7:
- resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
- engines: {node: '>= 0.10'}
-
pseudomap@1.0.2:
resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==}
@@ -10311,10 +9902,6 @@ packages:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
- qs@6.11.0:
- resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==}
- engines: {node: '>=0.6'}
-
querystringify@2.2.0:
resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
@@ -10325,10 +9912,6 @@ packages:
resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
engines: {node: '>= 0.6'}
- raw-body@2.5.2:
- resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
- engines: {node: '>= 0.8'}
-
react-dom@18.3.1:
resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
peerDependencies:
@@ -10392,8 +9975,8 @@ packages:
rehype-parse@9.0.0:
resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==}
- rehype-pretty-code@0.13.2:
- resolution: {integrity: sha512-F+PaFMscfJOcSHcR2b//+hk/0jT56hmGDqXcVD6VC9j0CUSGiqv8YxaWUyhR7qEIRRSbzAVxx+0uxzk+akXs+w==}
+ rehype-pretty-code@0.14.0:
+ resolution: {integrity: sha512-hBeKF/Wkkf3zyUS8lal9RCUuhypDWLQc+h9UrP9Pav25FUm/AQAVh4m5gdvJxh4Oz+U+xKvdsV01p1LdvsZTiQ==}
engines: {node: '>=18'}
peerDependencies:
shiki: ^1.3.0
@@ -10518,8 +10101,8 @@ packages:
deprecated: Rimraf versions prior to v4 are no longer supported
hasBin: true
- rollup@4.21.1:
- resolution: {integrity: sha512-ZnYyKvscThhgd3M5+Qt3pmhO4jIRR5RGzaSovB6Q7rGNrK5cUncrtLmcTTJVSdcKXyZjW8X8MB0JMSuH9bcAJg==}
+ rollup@4.21.2:
+ resolution: {integrity: sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -10594,10 +10177,6 @@ packages:
resolution: {integrity: sha512-rqEO6FZk8mv7Hyv4UCj3FD3b6Waqft605TLfsCe/BiaylRpyyMC0b+uA5TJKawX3KzMrdi3wsLbCaLplrQmBvQ==}
engines: {node: '>=10'}
- serve-static@1.15.0:
- resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==}
- engines: {node: '>= 0.8.0'}
-
server-destroy@1.0.1:
resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==}
@@ -10607,10 +10186,6 @@ packages:
set-blocking@2.0.0:
resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
- set-function-length@1.2.2:
- resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
- engines: {node: '>= 0.4'}
-
setprototypeof@1.2.0:
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
@@ -10642,12 +10217,8 @@ packages:
shiki@0.10.1:
resolution: {integrity: sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==}
- shiki@1.14.1:
- resolution: {integrity: sha512-FujAN40NEejeXdzPt+3sZ3F2dx1U24BY2XTY01+MG8mbxCiA2XukXdcbyMyLAHJ/1AUUnQd1tZlvIjefWWEJeA==}
-
- side-channel@1.0.6:
- resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
- engines: {node: '>= 0.4'}
+ shiki@1.16.1:
+ resolution: {integrity: sha512-tCJIMaxDVB1mEIJ5TvfZU7kCPB5eo9fli5+21Olc/bmyv+w8kye3JOp+LZRmGkAyT71hrkefQhTiY+o9mBikRQ==}
siginfo@2.0.0:
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
@@ -10975,8 +10546,8 @@ packages:
ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
- tsconfck@3.1.1:
- resolution: {integrity: sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==}
+ tsconfck@3.1.3:
+ resolution: {integrity: sha512-ulNZP1SVpRDesxeMLON/LtWM8HIgAJEIVpVVhBM6gsmvQ8+Rh+ZG7FWGvHh7Ah3pRABwVJWklWCr/BTZSv0xnQ==}
engines: {node: ^18 || >=20}
hasBin: true
peerDependencies:
@@ -10991,38 +10562,38 @@ packages:
tslib@2.6.2:
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
- turbo-darwin-64@2.1.0:
- resolution: {integrity: sha512-gHwpDk2gyB7qZ57gUUwDIS/IkglqEjjVtPZCTxmCRg28Tiwjui0azsLVKrnHP9UZHllozwbi28x8HXLXLEFF1w==}
+ turbo-darwin-64@2.1.1:
+ resolution: {integrity: sha512-aYNuJpZlCoi0Htd79fl/2DywpewGKijdXeOfg9KzNuPVKzSMYlAXuAlNGh0MKjiOcyqxQGL7Mq9LFhwA0VpDpQ==}
cpu: [x64]
os: [darwin]
- turbo-darwin-arm64@2.1.0:
- resolution: {integrity: sha512-GLaqGetNC6eS4eqXgsheLOHic/OcnGCGDi5boVf+TFZTXYH6YE15L4ugZha4xHXCr1KouCLILHh+f8EHEmWylg==}
+ turbo-darwin-arm64@2.1.1:
+ resolution: {integrity: sha512-tifJKD8yHY48rHXPMcM8o1jI/Jk2KCaXiNjTKvvy9Zsim61BZksNVLelIbrRoCGwAN6PUBZO2lGU5iL/TQJ5Pw==}
cpu: [arm64]
os: [darwin]
- turbo-linux-64@2.1.0:
- resolution: {integrity: sha512-VzBOsj7JyGoZtiNZZ6brjnY7UehRnClluw7pwznuLPzClkqOOPMd2jOcgkWxnP/xW4NBmOoFANXXrtvKBD4f2w==}
+ turbo-linux-64@2.1.1:
+ resolution: {integrity: sha512-Js6d/bSQe9DuV9c7ITXYpsU/ADzFHABdz1UIHa7Oqjj9VOEbFeA9WpAn0c+mdJrVD+IXJFbbDZUjN7VYssmtcg==}
cpu: [x64]
os: [linux]
- turbo-linux-arm64@2.1.0:
- resolution: {integrity: sha512-St7svJnOO5g4F6R7Z32e10I/0M3e6qpNjEYybXwPNul9NSfnUXeky4WoKaALwqNhyJ7nYemoFpZ1d+i8hFQTHg==}
+ turbo-linux-arm64@2.1.1:
+ resolution: {integrity: sha512-LidzTCq0yvQ+N8w8Qub9FmhQ/mmEIeoqFi7DSupekEV2EjvE9jw/zYc9Pk67X+g7dHVfgOnvVzmrjChdxpFePw==}
cpu: [arm64]
os: [linux]
- turbo-windows-64@2.1.0:
- resolution: {integrity: sha512-iSobNud2MrJ1SZ1upVPlErT8xexsr0MQtKapdfq6z0M0rBnrDGEq5bUCSScWyGu+O4+glB4br9xkTAkGFqaxqQ==}
+ turbo-windows-64@2.1.1:
+ resolution: {integrity: sha512-GKc9ZywKwy4xLDhwXd6H07yzl0TB52HjXMrFLyHGhCVnf/w0oq4sLJv2sjbvuarPjsyx4xnCBJ3m3oyL2XmFtA==}
cpu: [x64]
os: [win32]
- turbo-windows-arm64@2.1.0:
- resolution: {integrity: sha512-d61jN4rjE5PnUfF66GKrKoj8S8Ql4FGXzFFzZz4kjsHpZZzCTtqlzPZBmd1byzGYhDPTorTqG3G1USohbdyohA==}
+ turbo-windows-arm64@2.1.1:
+ resolution: {integrity: sha512-oFKkMj11KKUv3xSK9/fhAEQTxLUp1Ol1EOktwc32+SFtEU0uls7kosAz0b+qe8k3pJGEMFdDPdqoEjyJidbxtQ==}
cpu: [arm64]
os: [win32]
- turbo@2.1.0:
- resolution: {integrity: sha512-A969/LO/sPHKlapIarY2VVzqQ5JnnW2/1kksZlnMEpsRD6gwOELvVL+ozfMiO7av9RILt3UeN02L17efr6HUCA==}
+ turbo@2.1.1:
+ resolution: {integrity: sha512-u9gUDkmR9dFS8b5kAYqIETK4OnzsS4l2ragJ0+soSMHh6VEeNHjTfSjk1tKxCqLyziCrPogadxP680J+v6yGHw==}
hasBin: true
type-check@0.4.0:
@@ -11158,10 +10729,6 @@ packages:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'}
- unpipe@1.0.0:
- resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
- engines: {node: '>= 0.8'}
-
update-browserslist-db@1.1.0:
resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==}
hasBin: true
@@ -11180,10 +10747,6 @@ packages:
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
- utils-merge@1.0.1:
- resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
- engines: {node: '>= 0.4.0'}
-
uuid-parse@1.1.0:
resolution: {integrity: sha512-OdmXxA8rDsQ7YpNVbKSJkNzTw2I+S5WsbMDnCtIWSQaosNAcWtFuI/YK1TjzUI6nbkgiqEyh8gWngfcv8Asd9A==}
@@ -11194,10 +10757,6 @@ packages:
validate-html-nesting@1.2.2:
resolution: {integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==}
- vary@1.1.2:
- resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
- engines: {node: '>= 0.8'}
-
vfile-location@5.0.2:
resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==}
@@ -11292,6 +10851,14 @@ packages:
vite:
optional: true
+ vitefu@1.0.2:
+ resolution: {integrity: sha512-0/iAvbXyM3RiPPJ4lyD4w6Mjgtf4ejTK6TPvTNG3H32PLwuT0N/ZjJLiXug7ETE/LWtTeHw9WRv7uX/tIKYyKg==}
+ peerDependencies:
+ vite: ^3.0.0 || ^4.0.0 || ^5.0.0
+ peerDependenciesMeta:
+ vite:
+ optional: true
+
vitest@2.0.5:
resolution: {integrity: sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==}
engines: {node: ^18.0.0 || >=20.0.0}
@@ -11721,6 +11288,22 @@ snapshots:
transitivePeerDependencies:
- typescript
+ '@astrojs/node@8.3.3(astro@packages+astro)':
+ dependencies:
+ astro: link:packages/astro
+ send: 0.18.0
+ server-destroy: 1.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@astrojs/node@9.0.0-alpha.1(astro@packages+astro)':
+ dependencies:
+ astro: link:packages/astro
+ send: 0.18.0
+ server-destroy: 1.0.1
+ transitivePeerDependencies:
+ - supports-color
+
'@astrojs/yaml2ts@0.2.1':
dependencies:
yaml: 2.5.0
@@ -12234,201 +11817,201 @@ snapshots:
'@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
'@csstools/css-tokenizer': 3.0.1
- '@csstools/postcss-cascade-layers@5.0.0(postcss@8.4.41)':
+ '@csstools/postcss-cascade-layers@5.0.0(postcss@8.4.44)':
dependencies:
'@csstools/selector-specificity': 4.0.0(postcss-selector-parser@6.1.0)
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-selector-parser: 6.1.0
- '@csstools/postcss-color-function@4.0.2(postcss@8.4.41)':
+ '@csstools/postcss-color-function@4.0.2(postcss@8.4.44)':
dependencies:
'@csstools/css-color-parser': 3.0.2(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)
'@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
'@csstools/css-tokenizer': 3.0.1
- '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41)
- '@csstools/utilities': 2.0.0(postcss@8.4.41)
- postcss: 8.4.41
+ '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.44)
+ '@csstools/utilities': 2.0.0(postcss@8.4.44)
+ postcss: 8.4.44
- '@csstools/postcss-color-mix-function@3.0.2(postcss@8.4.41)':
+ '@csstools/postcss-color-mix-function@3.0.2(postcss@8.4.44)':
dependencies:
'@csstools/css-color-parser': 3.0.2(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)
'@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
'@csstools/css-tokenizer': 3.0.1
- '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41)
- '@csstools/utilities': 2.0.0(postcss@8.4.41)
- postcss: 8.4.41
+ '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.44)
+ '@csstools/utilities': 2.0.0(postcss@8.4.44)
+ postcss: 8.4.44
- '@csstools/postcss-content-alt-text@2.0.1(postcss@8.4.41)':
+ '@csstools/postcss-content-alt-text@2.0.1(postcss@8.4.44)':
dependencies:
'@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
'@csstools/css-tokenizer': 3.0.1
- '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41)
- '@csstools/utilities': 2.0.0(postcss@8.4.41)
- postcss: 8.4.41
+ '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.44)
+ '@csstools/utilities': 2.0.0(postcss@8.4.44)
+ postcss: 8.4.44
- '@csstools/postcss-exponential-functions@2.0.1(postcss@8.4.41)':
+ '@csstools/postcss-exponential-functions@2.0.1(postcss@8.4.44)':
dependencies:
'@csstools/css-calc': 2.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)
'@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
'@csstools/css-tokenizer': 3.0.1
- postcss: 8.4.41
+ postcss: 8.4.44
- '@csstools/postcss-font-format-keywords@4.0.0(postcss@8.4.41)':
+ '@csstools/postcss-font-format-keywords@4.0.0(postcss@8.4.44)':
dependencies:
- '@csstools/utilities': 2.0.0(postcss@8.4.41)
- postcss: 8.4.41
+ '@csstools/utilities': 2.0.0(postcss@8.4.44)
+ postcss: 8.4.44
postcss-value-parser: 4.2.0
- '@csstools/postcss-gamut-mapping@2.0.2(postcss@8.4.41)':
+ '@csstools/postcss-gamut-mapping@2.0.2(postcss@8.4.44)':
dependencies:
'@csstools/css-color-parser': 3.0.2(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)
'@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
'@csstools/css-tokenizer': 3.0.1
- postcss: 8.4.41
+ postcss: 8.4.44
- '@csstools/postcss-gradients-interpolation-method@5.0.2(postcss@8.4.41)':
+ '@csstools/postcss-gradients-interpolation-method@5.0.2(postcss@8.4.44)':
dependencies:
'@csstools/css-color-parser': 3.0.2(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)
'@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
'@csstools/css-tokenizer': 3.0.1
- '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41)
- '@csstools/utilities': 2.0.0(postcss@8.4.41)
- postcss: 8.4.41
+ '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.44)
+ '@csstools/utilities': 2.0.0(postcss@8.4.44)
+ postcss: 8.4.44
- '@csstools/postcss-hwb-function@4.0.2(postcss@8.4.41)':
+ '@csstools/postcss-hwb-function@4.0.2(postcss@8.4.44)':
dependencies:
'@csstools/css-color-parser': 3.0.2(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)
'@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
'@csstools/css-tokenizer': 3.0.1
- '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41)
- '@csstools/utilities': 2.0.0(postcss@8.4.41)
- postcss: 8.4.41
+ '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.44)
+ '@csstools/utilities': 2.0.0(postcss@8.4.44)
+ postcss: 8.4.44
- '@csstools/postcss-ic-unit@4.0.0(postcss@8.4.41)':
+ '@csstools/postcss-ic-unit@4.0.0(postcss@8.4.44)':
dependencies:
- '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41)
- '@csstools/utilities': 2.0.0(postcss@8.4.41)
- postcss: 8.4.41
+ '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.44)
+ '@csstools/utilities': 2.0.0(postcss@8.4.44)
+ postcss: 8.4.44
postcss-value-parser: 4.2.0
- '@csstools/postcss-initial@2.0.0(postcss@8.4.41)':
+ '@csstools/postcss-initial@2.0.0(postcss@8.4.44)':
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
- '@csstools/postcss-is-pseudo-class@5.0.0(postcss@8.4.41)':
+ '@csstools/postcss-is-pseudo-class@5.0.0(postcss@8.4.44)':
dependencies:
'@csstools/selector-specificity': 4.0.0(postcss-selector-parser@6.1.0)
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-selector-parser: 6.1.0
- '@csstools/postcss-light-dark-function@2.0.2(postcss@8.4.41)':
+ '@csstools/postcss-light-dark-function@2.0.2(postcss@8.4.44)':
dependencies:
'@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
'@csstools/css-tokenizer': 3.0.1
- '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41)
- '@csstools/utilities': 2.0.0(postcss@8.4.41)
- postcss: 8.4.41
+ '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.44)
+ '@csstools/utilities': 2.0.0(postcss@8.4.44)
+ postcss: 8.4.44
- '@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.4.41)':
+ '@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.4.44)':
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
- '@csstools/postcss-logical-overflow@2.0.0(postcss@8.4.41)':
+ '@csstools/postcss-logical-overflow@2.0.0(postcss@8.4.44)':
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
- '@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.4.41)':
+ '@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.4.44)':
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
- '@csstools/postcss-logical-resize@3.0.0(postcss@8.4.41)':
+ '@csstools/postcss-logical-resize@3.0.0(postcss@8.4.44)':
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-value-parser: 4.2.0
- '@csstools/postcss-logical-viewport-units@3.0.1(postcss@8.4.41)':
+ '@csstools/postcss-logical-viewport-units@3.0.1(postcss@8.4.44)':
dependencies:
'@csstools/css-tokenizer': 3.0.1
- '@csstools/utilities': 2.0.0(postcss@8.4.41)
- postcss: 8.4.41
+ '@csstools/utilities': 2.0.0(postcss@8.4.44)
+ postcss: 8.4.44
- '@csstools/postcss-media-minmax@2.0.1(postcss@8.4.41)':
+ '@csstools/postcss-media-minmax@2.0.1(postcss@8.4.44)':
dependencies:
'@csstools/css-calc': 2.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)
'@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
'@csstools/css-tokenizer': 3.0.1
'@csstools/media-query-list-parser': 3.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)
- postcss: 8.4.41
+ postcss: 8.4.44
- '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.1(postcss@8.4.41)':
+ '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.1(postcss@8.4.44)':
dependencies:
'@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
'@csstools/css-tokenizer': 3.0.1
'@csstools/media-query-list-parser': 3.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)
- postcss: 8.4.41
+ postcss: 8.4.44
- '@csstools/postcss-nested-calc@4.0.0(postcss@8.4.41)':
+ '@csstools/postcss-nested-calc@4.0.0(postcss@8.4.44)':
dependencies:
- '@csstools/utilities': 2.0.0(postcss@8.4.41)
- postcss: 8.4.41
+ '@csstools/utilities': 2.0.0(postcss@8.4.44)
+ postcss: 8.4.44
postcss-value-parser: 4.2.0
- '@csstools/postcss-normalize-display-values@4.0.0(postcss@8.4.41)':
+ '@csstools/postcss-normalize-display-values@4.0.0(postcss@8.4.44)':
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-value-parser: 4.2.0
- '@csstools/postcss-oklab-function@4.0.2(postcss@8.4.41)':
+ '@csstools/postcss-oklab-function@4.0.2(postcss@8.4.44)':
dependencies:
'@csstools/css-color-parser': 3.0.2(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)
'@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
'@csstools/css-tokenizer': 3.0.1
- '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41)
- '@csstools/utilities': 2.0.0(postcss@8.4.41)
- postcss: 8.4.41
+ '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.44)
+ '@csstools/utilities': 2.0.0(postcss@8.4.44)
+ postcss: 8.4.44
- '@csstools/postcss-progressive-custom-properties@4.0.0(postcss@8.4.41)':
+ '@csstools/postcss-progressive-custom-properties@4.0.0(postcss@8.4.44)':
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-value-parser: 4.2.0
- '@csstools/postcss-relative-color-syntax@3.0.2(postcss@8.4.41)':
+ '@csstools/postcss-relative-color-syntax@3.0.2(postcss@8.4.44)':
dependencies:
'@csstools/css-color-parser': 3.0.2(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)
'@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
'@csstools/css-tokenizer': 3.0.1
- '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41)
- '@csstools/utilities': 2.0.0(postcss@8.4.41)
- postcss: 8.4.41
+ '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.44)
+ '@csstools/utilities': 2.0.0(postcss@8.4.44)
+ postcss: 8.4.44
- '@csstools/postcss-scope-pseudo-class@4.0.0(postcss@8.4.41)':
+ '@csstools/postcss-scope-pseudo-class@4.0.0(postcss@8.4.44)':
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-selector-parser: 6.1.0
- '@csstools/postcss-stepped-value-functions@4.0.1(postcss@8.4.41)':
+ '@csstools/postcss-stepped-value-functions@4.0.1(postcss@8.4.44)':
dependencies:
'@csstools/css-calc': 2.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)
'@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
'@csstools/css-tokenizer': 3.0.1
- postcss: 8.4.41
+ postcss: 8.4.44
- '@csstools/postcss-text-decoration-shorthand@4.0.1(postcss@8.4.41)':
+ '@csstools/postcss-text-decoration-shorthand@4.0.1(postcss@8.4.44)':
dependencies:
'@csstools/color-helpers': 5.0.1
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-value-parser: 4.2.0
- '@csstools/postcss-trigonometric-functions@4.0.1(postcss@8.4.41)':
+ '@csstools/postcss-trigonometric-functions@4.0.1(postcss@8.4.44)':
dependencies:
'@csstools/css-calc': 2.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)
'@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
'@csstools/css-tokenizer': 3.0.1
- postcss: 8.4.41
+ postcss: 8.4.44
- '@csstools/postcss-unset-value@4.0.0(postcss@8.4.41)':
+ '@csstools/postcss-unset-value@4.0.0(postcss@8.4.44)':
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
'@csstools/selector-resolve-nested@2.0.0(postcss-selector-parser@6.1.0)':
dependencies:
@@ -12438,9 +12021,9 @@ snapshots:
dependencies:
postcss-selector-parser: 6.1.0
- '@csstools/utilities@2.0.0(postcss@8.4.41)':
+ '@csstools/utilities@2.0.0(postcss@8.4.44)':
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
'@emmetio/abbreviation@2.3.3':
dependencies:
@@ -12815,10 +12398,10 @@ snapshots:
- encoding
- supports-color
- '@markdoc/markdoc@0.4.0(@types/react@18.3.4)(react@18.3.1)':
+ '@markdoc/markdoc@0.4.0(@types/react@18.3.5)(react@18.3.1)':
optionalDependencies:
'@types/markdown-it': 12.2.3
- '@types/react': 18.3.4
+ '@types/react': 18.3.5
react: 18.3.1
'@mdx-js/mdx@3.0.1':
@@ -12931,66 +12514,69 @@ snapshots:
estree-walker: 2.0.2
picomatch: 2.3.1
- '@rollup/pluginutils@5.1.0(rollup@4.21.1)':
+ '@rollup/pluginutils@5.1.0(rollup@4.21.2)':
dependencies:
'@types/estree': 1.0.5
estree-walker: 2.0.2
picomatch: 2.3.1
optionalDependencies:
- rollup: 4.21.1
+ rollup: 4.21.2
- '@rollup/rollup-android-arm-eabi@4.21.1':
+ '@rollup/rollup-android-arm-eabi@4.21.2':
optional: true
- '@rollup/rollup-android-arm64@4.21.1':
+ '@rollup/rollup-android-arm64@4.21.2':
optional: true
- '@rollup/rollup-darwin-arm64@4.21.1':
+ '@rollup/rollup-darwin-arm64@4.21.2':
optional: true
- '@rollup/rollup-darwin-x64@4.21.1':
+ '@rollup/rollup-darwin-x64@4.21.2':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.21.1':
+ '@rollup/rollup-linux-arm-gnueabihf@4.21.2':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.21.1':
+ '@rollup/rollup-linux-arm-musleabihf@4.21.2':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.21.1':
+ '@rollup/rollup-linux-arm64-gnu@4.21.2':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.21.1':
+ '@rollup/rollup-linux-arm64-musl@4.21.2':
optional: true
- '@rollup/rollup-linux-powerpc64le-gnu@4.21.1':
+ '@rollup/rollup-linux-powerpc64le-gnu@4.21.2':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.21.1':
+ '@rollup/rollup-linux-riscv64-gnu@4.21.2':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.21.1':
+ '@rollup/rollup-linux-s390x-gnu@4.21.2':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.21.1':
+ '@rollup/rollup-linux-x64-gnu@4.21.2':
optional: true
- '@rollup/rollup-linux-x64-musl@4.21.1':
+ '@rollup/rollup-linux-x64-musl@4.21.2':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.21.1':
+ '@rollup/rollup-win32-arm64-msvc@4.21.2':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.21.1':
+ '@rollup/rollup-win32-ia32-msvc@4.21.2':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.21.1':
+ '@rollup/rollup-win32-x64-msvc@4.21.2':
optional: true
- '@shikijs/core@1.14.1':
+ '@shikijs/core@1.16.1':
dependencies:
+ '@shikijs/vscode-textmate': 9.2.0
'@types/hast': 3.0.4
+ '@shikijs/vscode-textmate@9.2.0': {}
+
'@sindresorhus/merge-streams@2.3.0': {}
'@solidjs/router@0.14.3(solid-js@1.8.22)':
@@ -13020,7 +12606,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@tailwindcss/forms@0.5.7(tailwindcss@3.4.10)':
+ '@tailwindcss/forms@0.5.8(tailwindcss@3.4.10)':
dependencies:
mini-svg-data-uri: 1.4.4
tailwindcss: 3.4.10
@@ -13086,7 +12672,7 @@ snapshots:
'@types/deep-diff@1.0.5': {}
- '@types/diff@5.2.1': {}
+ '@types/diff@5.2.2': {}
'@types/dlv@1.1.4': {}
@@ -13190,13 +12776,18 @@ snapshots:
'@types/react-dom@18.3.0':
dependencies:
- '@types/react': 18.3.4
+ '@types/react': 18.3.5
'@types/react@18.3.4':
dependencies:
'@types/prop-types': 15.7.12
csstype: 3.1.3
+ '@types/react@18.3.5':
+ dependencies:
+ '@types/prop-types': 15.7.12
+ csstype: 3.1.3
+
'@types/relateurl@0.2.33': {}
'@types/sax@1.2.7':
@@ -13394,7 +12985,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@vitejs/plugin-vue@5.1.2(vite@5.4.2(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.38(typescript@5.5.4))':
+ '@vitejs/plugin-vue@5.1.3(vite@5.4.2(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.38(typescript@5.5.4))':
dependencies:
vite: 5.4.2(@types/node@18.19.31)(sass@1.77.8)
vue: 3.4.38(typescript@5.5.4)
@@ -13533,7 +13124,7 @@ snapshots:
'@vue/shared': 3.4.38
estree-walker: 2.0.2
magic-string: 0.30.11
- postcss: 8.4.41
+ postcss: 8.4.44
source-map-js: 1.2.0
'@vue/compiler-ssr@3.4.38':
@@ -13696,8 +13287,6 @@ snapshots:
dependencies:
dequal: 2.0.3
- array-flatten@1.1.1: {}
-
array-iterate@2.0.1: {}
array-union@2.1.0: {}
@@ -13761,14 +13350,14 @@ snapshots:
subarg: 1.0.0
timestring: 6.0.0
- autoprefixer@10.4.20(postcss@8.4.41):
+ autoprefixer@10.4.20(postcss@8.4.44):
dependencies:
browserslist: 4.23.3
caniuse-lite: 1.0.30001649
fraction.js: 4.3.7
normalize-range: 0.1.2
picocolors: 1.0.1
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-value-parser: 4.2.0
axobject-query@4.1.0: {}
@@ -13817,23 +13406,6 @@ snapshots:
birpc@0.2.17: {}
- body-parser@1.20.2:
- dependencies:
- bytes: 3.1.2
- content-type: 1.0.5
- debug: 2.6.9
- depd: 2.0.0
- destroy: 1.2.0
- http-errors: 2.0.0
- iconv-lite: 0.4.24
- on-finished: 2.4.1
- qs: 6.11.0
- raw-body: 2.5.2
- type-is: 1.6.18
- unpipe: 1.0.0
- transitivePeerDependencies:
- - supports-color
-
boolbase@1.0.0: {}
boxen@7.1.1:
@@ -13876,18 +13448,8 @@ snapshots:
dependencies:
run-applescript: 7.0.0
- bytes@3.1.2: {}
-
cac@6.7.14: {}
- call-bind@1.0.7:
- dependencies:
- es-define-property: 1.0.0
- es-errors: 1.3.0
- function-bind: 1.1.2
- get-intrinsic: 1.2.4
- set-function-length: 1.2.2
-
callsites@3.1.0: {}
camel-case@3.0.0:
@@ -14081,12 +13643,8 @@ snapshots:
dependencies:
safe-buffer: 5.2.1
- content-type@1.0.5: {}
-
convert-source-map@2.0.0: {}
- cookie-signature@1.0.6: {}
-
cookie@0.6.0: {}
copy-anything@3.0.5:
@@ -14107,21 +13665,21 @@ snapshots:
shebang-command: 2.0.0
which: 2.0.2
- css-blank-pseudo@7.0.0(postcss@8.4.41):
+ css-blank-pseudo@7.0.0(postcss@8.4.44):
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-selector-parser: 6.1.0
- css-has-pseudo@7.0.0(postcss@8.4.41):
+ css-has-pseudo@7.0.0(postcss@8.4.44):
dependencies:
'@csstools/selector-specificity': 4.0.0(postcss-selector-parser@6.1.0)
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-selector-parser: 6.1.0
postcss-value-parser: 4.2.0
- css-prefers-color-scheme@10.0.0(postcss@8.4.41):
+ css-prefers-color-scheme@10.0.0(postcss@8.4.44):
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
css-select@5.1.0:
dependencies:
@@ -14203,12 +13761,6 @@ snapshots:
bundle-name: 4.1.0
default-browser-id: 5.0.0
- define-data-property@1.1.4:
- dependencies:
- es-define-property: 1.0.0
- es-errors: 1.3.0
- gopd: 1.0.1
-
define-lazy-prop@3.0.0: {}
defu@6.1.4: {}
@@ -14273,10 +13825,10 @@ snapshots:
dotenv@8.6.0: {}
- drizzle-orm@0.31.4(@libsql/client@0.10.0)(@types/react@18.3.4)(react@18.3.1):
+ drizzle-orm@0.31.4(@libsql/client@0.10.0)(@types/react@18.3.5)(react@18.3.1):
optionalDependencies:
'@libsql/client': 0.10.0
- '@types/react': 18.3.4
+ '@types/react': 18.3.5
react: 18.3.1
dset@3.1.3: {}
@@ -14312,16 +13864,10 @@ snapshots:
entities@4.5.0: {}
- eol@0.9.1: {}
+ eol@0.10.0: {}
error-stack-parser-es@0.1.5: {}
- es-define-property@1.0.0:
- dependencies:
- get-intrinsic: 1.2.4
-
- es-errors@1.3.0: {}
-
es-module-lexer@1.5.4: {}
esbuild-plugin-copy@2.1.1(esbuild@0.21.5):
@@ -14501,42 +14047,6 @@ snapshots:
expect-type@0.20.0: {}
- express@4.19.2:
- dependencies:
- accepts: 1.3.8
- array-flatten: 1.1.1
- body-parser: 1.20.2
- content-disposition: 0.5.4
- content-type: 1.0.5
- cookie: 0.6.0
- cookie-signature: 1.0.6
- debug: 2.6.9
- depd: 2.0.0
- encodeurl: 1.0.2
- escape-html: 1.0.3
- etag: 1.8.1
- finalhandler: 1.2.0
- fresh: 0.5.2
- http-errors: 2.0.0
- merge-descriptors: 1.0.1
- methods: 1.1.2
- on-finished: 2.4.1
- parseurl: 1.3.3
- path-to-regexp: 0.1.7
- proxy-addr: 2.0.7
- qs: 6.11.0
- range-parser: 1.2.1
- safe-buffer: 5.2.1
- send: 0.18.0
- serve-static: 1.15.0
- setprototypeof: 1.2.0
- statuses: 2.0.1
- type-is: 1.6.18
- utils-merge: 1.0.1
- vary: 1.1.2
- transitivePeerDependencies:
- - supports-color
-
extend-shallow@2.0.1:
dependencies:
is-extendable: 0.1.1
@@ -14592,18 +14102,6 @@ snapshots:
dependencies:
to-regex-range: 5.0.1
- finalhandler@1.2.0:
- dependencies:
- debug: 2.6.9
- encodeurl: 1.0.2
- escape-html: 1.0.3
- on-finished: 2.4.1
- parseurl: 1.3.3
- statuses: 2.0.1
- unpipe: 1.0.0
- transitivePeerDependencies:
- - supports-color
-
find-up-simple@1.0.0: {}
find-up@4.1.0:
@@ -14645,8 +14143,6 @@ snapshots:
dependencies:
fetch-blob: 3.2.0
- forwarded@0.2.0: {}
-
fraction.js@4.3.7: {}
fresh@0.5.2: {}
@@ -14709,14 +14205,6 @@ snapshots:
get-func-name@2.0.2: {}
- get-intrinsic@1.2.4:
- dependencies:
- es-errors: 1.3.0
- function-bind: 1.1.2
- has-proto: 1.0.3
- has-symbols: 1.0.3
- hasown: 2.0.2
-
get-stream@8.0.1: {}
giget@1.2.3:
@@ -14779,10 +14267,6 @@ snapshots:
slash: 5.1.0
unicorn-magic: 0.1.0
- gopd@1.0.1:
- dependencies:
- get-intrinsic: 1.2.4
-
graceful-fs@4.2.11: {}
graphemer@1.4.0: {}
@@ -14800,14 +14284,6 @@ snapshots:
has-flag@4.0.0: {}
- has-property-descriptors@1.0.2:
- dependencies:
- es-define-property: 1.0.0
-
- has-proto@1.0.3: {}
-
- has-symbols@1.0.3: {}
-
has-unicode@2.0.1: {}
hasown@2.0.2:
@@ -15106,8 +14582,6 @@ snapshots:
inline-style-parser@0.2.3: {}
- ipaddr.js@1.9.1: {}
-
is-alphabetical@2.0.1: {}
is-alphanumerical@2.0.1:
@@ -15668,8 +15142,6 @@ snapshots:
dependencies:
is-what: 4.1.16
- merge-descriptors@1.0.1: {}
-
merge-descriptors@1.0.3: {}
merge-stream@2.0.0: {}
@@ -16122,8 +15594,6 @@ snapshots:
object-hash@3.0.0: {}
- object-inspect@1.13.1: {}
-
ohash@1.1.3: {}
on-finished@2.4.1:
@@ -16152,7 +15622,7 @@ snapshots:
dependencies:
which-pm-runs: 1.1.0
- open-props@1.7.5: {}
+ open-props@1.7.6: {}
open@10.1.0:
dependencies:
@@ -16292,8 +15762,6 @@ snapshots:
lru-cache: 10.2.0
minipass: 7.1.2
- path-to-regexp@0.1.7: {}
-
path-to-regexp@6.2.2: {}
path-type@4.0.0: {}
@@ -16336,238 +15804,238 @@ snapshots:
port-authority@2.0.1: {}
- postcss-attribute-case-insensitive@7.0.0(postcss@8.4.41):
+ postcss-attribute-case-insensitive@7.0.0(postcss@8.4.44):
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-selector-parser: 6.1.0
- postcss-clamp@4.1.0(postcss@8.4.41):
+ postcss-clamp@4.1.0(postcss@8.4.44):
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-value-parser: 4.2.0
- postcss-color-functional-notation@7.0.2(postcss@8.4.41):
+ postcss-color-functional-notation@7.0.2(postcss@8.4.44):
dependencies:
'@csstools/css-color-parser': 3.0.2(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)
'@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
'@csstools/css-tokenizer': 3.0.1
- '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41)
- '@csstools/utilities': 2.0.0(postcss@8.4.41)
- postcss: 8.4.41
+ '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.44)
+ '@csstools/utilities': 2.0.0(postcss@8.4.44)
+ postcss: 8.4.44
- postcss-color-hex-alpha@10.0.0(postcss@8.4.41):
+ postcss-color-hex-alpha@10.0.0(postcss@8.4.44):
dependencies:
- '@csstools/utilities': 2.0.0(postcss@8.4.41)
- postcss: 8.4.41
+ '@csstools/utilities': 2.0.0(postcss@8.4.44)
+ postcss: 8.4.44
postcss-value-parser: 4.2.0
- postcss-color-rebeccapurple@10.0.0(postcss@8.4.41):
+ postcss-color-rebeccapurple@10.0.0(postcss@8.4.44):
dependencies:
- '@csstools/utilities': 2.0.0(postcss@8.4.41)
- postcss: 8.4.41
+ '@csstools/utilities': 2.0.0(postcss@8.4.44)
+ postcss: 8.4.44
postcss-value-parser: 4.2.0
- postcss-custom-media@11.0.1(postcss@8.4.41):
+ postcss-custom-media@11.0.1(postcss@8.4.44):
dependencies:
'@csstools/cascade-layer-name-parser': 2.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)
'@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
'@csstools/css-tokenizer': 3.0.1
'@csstools/media-query-list-parser': 3.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)
- postcss: 8.4.41
+ postcss: 8.4.44
- postcss-custom-properties@14.0.1(postcss@8.4.41):
+ postcss-custom-properties@14.0.1(postcss@8.4.44):
dependencies:
'@csstools/cascade-layer-name-parser': 2.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)
'@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
'@csstools/css-tokenizer': 3.0.1
- '@csstools/utilities': 2.0.0(postcss@8.4.41)
- postcss: 8.4.41
+ '@csstools/utilities': 2.0.0(postcss@8.4.44)
+ postcss: 8.4.44
postcss-value-parser: 4.2.0
- postcss-custom-selectors@8.0.1(postcss@8.4.41):
+ postcss-custom-selectors@8.0.1(postcss@8.4.44):
dependencies:
'@csstools/cascade-layer-name-parser': 2.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)
'@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
'@csstools/css-tokenizer': 3.0.1
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-selector-parser: 6.1.0
- postcss-dir-pseudo-class@9.0.0(postcss@8.4.41):
+ postcss-dir-pseudo-class@9.0.0(postcss@8.4.44):
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-selector-parser: 6.1.0
- postcss-double-position-gradients@6.0.0(postcss@8.4.41):
+ postcss-double-position-gradients@6.0.0(postcss@8.4.44):
dependencies:
- '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41)
- '@csstools/utilities': 2.0.0(postcss@8.4.41)
- postcss: 8.4.41
+ '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.44)
+ '@csstools/utilities': 2.0.0(postcss@8.4.44)
+ postcss: 8.4.44
postcss-value-parser: 4.2.0
- postcss-focus-visible@10.0.0(postcss@8.4.41):
+ postcss-focus-visible@10.0.0(postcss@8.4.44):
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-selector-parser: 6.1.0
- postcss-focus-within@9.0.0(postcss@8.4.41):
+ postcss-focus-within@9.0.0(postcss@8.4.44):
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-selector-parser: 6.1.0
- postcss-font-variant@5.0.0(postcss@8.4.41):
+ postcss-font-variant@5.0.0(postcss@8.4.44):
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
- postcss-gap-properties@6.0.0(postcss@8.4.41):
+ postcss-gap-properties@6.0.0(postcss@8.4.44):
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
- postcss-image-set-function@7.0.0(postcss@8.4.41):
+ postcss-image-set-function@7.0.0(postcss@8.4.44):
dependencies:
- '@csstools/utilities': 2.0.0(postcss@8.4.41)
- postcss: 8.4.41
+ '@csstools/utilities': 2.0.0(postcss@8.4.44)
+ postcss: 8.4.44
postcss-value-parser: 4.2.0
- postcss-import@15.1.0(postcss@8.4.41):
+ postcss-import@15.1.0(postcss@8.4.44):
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-value-parser: 4.2.0
read-cache: 1.0.0
resolve: 1.22.8
- postcss-js@4.0.1(postcss@8.4.41):
+ postcss-js@4.0.1(postcss@8.4.44):
dependencies:
camelcase-css: 2.0.1
- postcss: 8.4.41
+ postcss: 8.4.44
- postcss-lab-function@7.0.2(postcss@8.4.41):
+ postcss-lab-function@7.0.2(postcss@8.4.44):
dependencies:
'@csstools/css-color-parser': 3.0.2(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)
'@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
'@csstools/css-tokenizer': 3.0.1
- '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41)
- '@csstools/utilities': 2.0.0(postcss@8.4.41)
- postcss: 8.4.41
+ '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.44)
+ '@csstools/utilities': 2.0.0(postcss@8.4.44)
+ postcss: 8.4.44
- postcss-load-config@4.0.2(postcss@8.4.41):
+ postcss-load-config@4.0.2(postcss@8.4.44):
dependencies:
lilconfig: 3.1.1
yaml: 2.5.0
optionalDependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
- postcss-logical@8.0.0(postcss@8.4.41):
+ postcss-logical@8.0.0(postcss@8.4.44):
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-value-parser: 4.2.0
- postcss-nested@6.0.1(postcss@8.4.41):
+ postcss-nested@6.0.1(postcss@8.4.44):
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-selector-parser: 6.1.0
- postcss-nesting@13.0.0(postcss@8.4.41):
+ postcss-nesting@13.0.0(postcss@8.4.44):
dependencies:
'@csstools/selector-resolve-nested': 2.0.0(postcss-selector-parser@6.1.0)
'@csstools/selector-specificity': 4.0.0(postcss-selector-parser@6.1.0)
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-selector-parser: 6.1.0
- postcss-opacity-percentage@2.0.0(postcss@8.4.41):
+ postcss-opacity-percentage@2.0.0(postcss@8.4.44):
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
- postcss-overflow-shorthand@6.0.0(postcss@8.4.41):
+ postcss-overflow-shorthand@6.0.0(postcss@8.4.44):
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-value-parser: 4.2.0
- postcss-page-break@3.0.4(postcss@8.4.41):
+ postcss-page-break@3.0.4(postcss@8.4.44):
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
- postcss-place@10.0.0(postcss@8.4.41):
+ postcss-place@10.0.0(postcss@8.4.44):
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-value-parser: 4.2.0
- postcss-preset-env@10.0.2(postcss@8.4.41):
- dependencies:
- '@csstools/postcss-cascade-layers': 5.0.0(postcss@8.4.41)
- '@csstools/postcss-color-function': 4.0.2(postcss@8.4.41)
- '@csstools/postcss-color-mix-function': 3.0.2(postcss@8.4.41)
- '@csstools/postcss-content-alt-text': 2.0.1(postcss@8.4.41)
- '@csstools/postcss-exponential-functions': 2.0.1(postcss@8.4.41)
- '@csstools/postcss-font-format-keywords': 4.0.0(postcss@8.4.41)
- '@csstools/postcss-gamut-mapping': 2.0.2(postcss@8.4.41)
- '@csstools/postcss-gradients-interpolation-method': 5.0.2(postcss@8.4.41)
- '@csstools/postcss-hwb-function': 4.0.2(postcss@8.4.41)
- '@csstools/postcss-ic-unit': 4.0.0(postcss@8.4.41)
- '@csstools/postcss-initial': 2.0.0(postcss@8.4.41)
- '@csstools/postcss-is-pseudo-class': 5.0.0(postcss@8.4.41)
- '@csstools/postcss-light-dark-function': 2.0.2(postcss@8.4.41)
- '@csstools/postcss-logical-float-and-clear': 3.0.0(postcss@8.4.41)
- '@csstools/postcss-logical-overflow': 2.0.0(postcss@8.4.41)
- '@csstools/postcss-logical-overscroll-behavior': 2.0.0(postcss@8.4.41)
- '@csstools/postcss-logical-resize': 3.0.0(postcss@8.4.41)
- '@csstools/postcss-logical-viewport-units': 3.0.1(postcss@8.4.41)
- '@csstools/postcss-media-minmax': 2.0.1(postcss@8.4.41)
- '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.1(postcss@8.4.41)
- '@csstools/postcss-nested-calc': 4.0.0(postcss@8.4.41)
- '@csstools/postcss-normalize-display-values': 4.0.0(postcss@8.4.41)
- '@csstools/postcss-oklab-function': 4.0.2(postcss@8.4.41)
- '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41)
- '@csstools/postcss-relative-color-syntax': 3.0.2(postcss@8.4.41)
- '@csstools/postcss-scope-pseudo-class': 4.0.0(postcss@8.4.41)
- '@csstools/postcss-stepped-value-functions': 4.0.1(postcss@8.4.41)
- '@csstools/postcss-text-decoration-shorthand': 4.0.1(postcss@8.4.41)
- '@csstools/postcss-trigonometric-functions': 4.0.1(postcss@8.4.41)
- '@csstools/postcss-unset-value': 4.0.0(postcss@8.4.41)
- autoprefixer: 10.4.20(postcss@8.4.41)
+ postcss-preset-env@10.0.2(postcss@8.4.44):
+ dependencies:
+ '@csstools/postcss-cascade-layers': 5.0.0(postcss@8.4.44)
+ '@csstools/postcss-color-function': 4.0.2(postcss@8.4.44)
+ '@csstools/postcss-color-mix-function': 3.0.2(postcss@8.4.44)
+ '@csstools/postcss-content-alt-text': 2.0.1(postcss@8.4.44)
+ '@csstools/postcss-exponential-functions': 2.0.1(postcss@8.4.44)
+ '@csstools/postcss-font-format-keywords': 4.0.0(postcss@8.4.44)
+ '@csstools/postcss-gamut-mapping': 2.0.2(postcss@8.4.44)
+ '@csstools/postcss-gradients-interpolation-method': 5.0.2(postcss@8.4.44)
+ '@csstools/postcss-hwb-function': 4.0.2(postcss@8.4.44)
+ '@csstools/postcss-ic-unit': 4.0.0(postcss@8.4.44)
+ '@csstools/postcss-initial': 2.0.0(postcss@8.4.44)
+ '@csstools/postcss-is-pseudo-class': 5.0.0(postcss@8.4.44)
+ '@csstools/postcss-light-dark-function': 2.0.2(postcss@8.4.44)
+ '@csstools/postcss-logical-float-and-clear': 3.0.0(postcss@8.4.44)
+ '@csstools/postcss-logical-overflow': 2.0.0(postcss@8.4.44)
+ '@csstools/postcss-logical-overscroll-behavior': 2.0.0(postcss@8.4.44)
+ '@csstools/postcss-logical-resize': 3.0.0(postcss@8.4.44)
+ '@csstools/postcss-logical-viewport-units': 3.0.1(postcss@8.4.44)
+ '@csstools/postcss-media-minmax': 2.0.1(postcss@8.4.44)
+ '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.1(postcss@8.4.44)
+ '@csstools/postcss-nested-calc': 4.0.0(postcss@8.4.44)
+ '@csstools/postcss-normalize-display-values': 4.0.0(postcss@8.4.44)
+ '@csstools/postcss-oklab-function': 4.0.2(postcss@8.4.44)
+ '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.44)
+ '@csstools/postcss-relative-color-syntax': 3.0.2(postcss@8.4.44)
+ '@csstools/postcss-scope-pseudo-class': 4.0.0(postcss@8.4.44)
+ '@csstools/postcss-stepped-value-functions': 4.0.1(postcss@8.4.44)
+ '@csstools/postcss-text-decoration-shorthand': 4.0.1(postcss@8.4.44)
+ '@csstools/postcss-trigonometric-functions': 4.0.1(postcss@8.4.44)
+ '@csstools/postcss-unset-value': 4.0.0(postcss@8.4.44)
+ autoprefixer: 10.4.20(postcss@8.4.44)
browserslist: 4.23.3
- css-blank-pseudo: 7.0.0(postcss@8.4.41)
- css-has-pseudo: 7.0.0(postcss@8.4.41)
- css-prefers-color-scheme: 10.0.0(postcss@8.4.41)
+ css-blank-pseudo: 7.0.0(postcss@8.4.44)
+ css-has-pseudo: 7.0.0(postcss@8.4.44)
+ css-prefers-color-scheme: 10.0.0(postcss@8.4.44)
cssdb: 8.1.0
- postcss: 8.4.41
- postcss-attribute-case-insensitive: 7.0.0(postcss@8.4.41)
- postcss-clamp: 4.1.0(postcss@8.4.41)
- postcss-color-functional-notation: 7.0.2(postcss@8.4.41)
- postcss-color-hex-alpha: 10.0.0(postcss@8.4.41)
- postcss-color-rebeccapurple: 10.0.0(postcss@8.4.41)
- postcss-custom-media: 11.0.1(postcss@8.4.41)
- postcss-custom-properties: 14.0.1(postcss@8.4.41)
- postcss-custom-selectors: 8.0.1(postcss@8.4.41)
- postcss-dir-pseudo-class: 9.0.0(postcss@8.4.41)
- postcss-double-position-gradients: 6.0.0(postcss@8.4.41)
- postcss-focus-visible: 10.0.0(postcss@8.4.41)
- postcss-focus-within: 9.0.0(postcss@8.4.41)
- postcss-font-variant: 5.0.0(postcss@8.4.41)
- postcss-gap-properties: 6.0.0(postcss@8.4.41)
- postcss-image-set-function: 7.0.0(postcss@8.4.41)
- postcss-lab-function: 7.0.2(postcss@8.4.41)
- postcss-logical: 8.0.0(postcss@8.4.41)
- postcss-nesting: 13.0.0(postcss@8.4.41)
- postcss-opacity-percentage: 2.0.0(postcss@8.4.41)
- postcss-overflow-shorthand: 6.0.0(postcss@8.4.41)
- postcss-page-break: 3.0.4(postcss@8.4.41)
- postcss-place: 10.0.0(postcss@8.4.41)
- postcss-pseudo-class-any-link: 10.0.0(postcss@8.4.41)
- postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.41)
- postcss-selector-not: 8.0.0(postcss@8.4.41)
-
- postcss-pseudo-class-any-link@10.0.0(postcss@8.4.41):
- dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
+ postcss-attribute-case-insensitive: 7.0.0(postcss@8.4.44)
+ postcss-clamp: 4.1.0(postcss@8.4.44)
+ postcss-color-functional-notation: 7.0.2(postcss@8.4.44)
+ postcss-color-hex-alpha: 10.0.0(postcss@8.4.44)
+ postcss-color-rebeccapurple: 10.0.0(postcss@8.4.44)
+ postcss-custom-media: 11.0.1(postcss@8.4.44)
+ postcss-custom-properties: 14.0.1(postcss@8.4.44)
+ postcss-custom-selectors: 8.0.1(postcss@8.4.44)
+ postcss-dir-pseudo-class: 9.0.0(postcss@8.4.44)
+ postcss-double-position-gradients: 6.0.0(postcss@8.4.44)
+ postcss-focus-visible: 10.0.0(postcss@8.4.44)
+ postcss-focus-within: 9.0.0(postcss@8.4.44)
+ postcss-font-variant: 5.0.0(postcss@8.4.44)
+ postcss-gap-properties: 6.0.0(postcss@8.4.44)
+ postcss-image-set-function: 7.0.0(postcss@8.4.44)
+ postcss-lab-function: 7.0.2(postcss@8.4.44)
+ postcss-logical: 8.0.0(postcss@8.4.44)
+ postcss-nesting: 13.0.0(postcss@8.4.44)
+ postcss-opacity-percentage: 2.0.0(postcss@8.4.44)
+ postcss-overflow-shorthand: 6.0.0(postcss@8.4.44)
+ postcss-page-break: 3.0.4(postcss@8.4.44)
+ postcss-place: 10.0.0(postcss@8.4.44)
+ postcss-pseudo-class-any-link: 10.0.0(postcss@8.4.44)
+ postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.44)
+ postcss-selector-not: 8.0.0(postcss@8.4.44)
+
+ postcss-pseudo-class-any-link@10.0.0(postcss@8.4.44):
+ dependencies:
+ postcss: 8.4.44
postcss-selector-parser: 6.1.0
- postcss-replace-overflow-wrap@4.0.0(postcss@8.4.41):
+ postcss-replace-overflow-wrap@4.0.0(postcss@8.4.44):
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
- postcss-selector-not@8.0.0(postcss@8.4.41):
+ postcss-selector-not@8.0.0(postcss@8.4.44):
dependencies:
- postcss: 8.4.41
+ postcss: 8.4.44
postcss-selector-parser: 6.1.0
postcss-selector-parser@6.1.0:
@@ -16577,13 +16045,13 @@ snapshots:
postcss-value-parser@4.2.0: {}
- postcss@8.4.41:
+ postcss@8.4.44:
dependencies:
nanoid: 3.3.7
picocolors: 1.0.1
source-map-js: 1.2.0
- preact-render-to-string@6.5.9(preact@10.23.2):
+ preact-render-to-string@6.5.10(preact@10.23.2):
dependencies:
preact: 10.23.2
@@ -16634,34 +16102,18 @@ snapshots:
property-information@6.5.0: {}
- proxy-addr@2.0.7:
- dependencies:
- forwarded: 0.2.0
- ipaddr.js: 1.9.1
-
pseudomap@1.0.2: {}
psl@1.9.0: {}
punycode@2.3.1: {}
- qs@6.11.0:
- dependencies:
- side-channel: 1.0.6
-
querystringify@2.2.0: {}
queue-microtask@1.2.3: {}
range-parser@1.2.1: {}
- raw-body@2.5.2:
- dependencies:
- bytes: 3.1.2
- http-errors: 2.0.0
- iconv-lite: 0.4.24
- unpipe: 1.0.0
-
react-dom@18.3.1(react@18.3.1):
dependencies:
loose-envify: 1.4.0
@@ -16748,13 +16200,13 @@ snapshots:
hast-util-from-html: 2.0.2
unified: 11.0.5
- rehype-pretty-code@0.13.2(shiki@1.14.1):
+ rehype-pretty-code@0.14.0(shiki@1.16.1):
dependencies:
'@types/hast': 3.0.4
hast-util-to-string: 3.0.0
parse-numeric-range: 1.3.0
rehype-parse: 9.0.0
- shiki: 1.14.1
+ shiki: 1.16.1
unified: 11.0.5
unist-util-visit: 5.0.0
@@ -16939,26 +16391,26 @@ snapshots:
dependencies:
glob: 7.2.3
- rollup@4.21.1:
+ rollup@4.21.2:
dependencies:
'@types/estree': 1.0.5
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.21.1
- '@rollup/rollup-android-arm64': 4.21.1
- '@rollup/rollup-darwin-arm64': 4.21.1
- '@rollup/rollup-darwin-x64': 4.21.1
- '@rollup/rollup-linux-arm-gnueabihf': 4.21.1
- '@rollup/rollup-linux-arm-musleabihf': 4.21.1
- '@rollup/rollup-linux-arm64-gnu': 4.21.1
- '@rollup/rollup-linux-arm64-musl': 4.21.1
- '@rollup/rollup-linux-powerpc64le-gnu': 4.21.1
- '@rollup/rollup-linux-riscv64-gnu': 4.21.1
- '@rollup/rollup-linux-s390x-gnu': 4.21.1
- '@rollup/rollup-linux-x64-gnu': 4.21.1
- '@rollup/rollup-linux-x64-musl': 4.21.1
- '@rollup/rollup-win32-arm64-msvc': 4.21.1
- '@rollup/rollup-win32-ia32-msvc': 4.21.1
- '@rollup/rollup-win32-x64-msvc': 4.21.1
+ '@rollup/rollup-android-arm-eabi': 4.21.2
+ '@rollup/rollup-android-arm64': 4.21.2
+ '@rollup/rollup-darwin-arm64': 4.21.2
+ '@rollup/rollup-darwin-x64': 4.21.2
+ '@rollup/rollup-linux-arm-gnueabihf': 4.21.2
+ '@rollup/rollup-linux-arm-musleabihf': 4.21.2
+ '@rollup/rollup-linux-arm64-gnu': 4.21.2
+ '@rollup/rollup-linux-arm64-musl': 4.21.2
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.21.2
+ '@rollup/rollup-linux-riscv64-gnu': 4.21.2
+ '@rollup/rollup-linux-s390x-gnu': 4.21.2
+ '@rollup/rollup-linux-x64-gnu': 4.21.2
+ '@rollup/rollup-linux-x64-musl': 4.21.2
+ '@rollup/rollup-win32-arm64-msvc': 4.21.2
+ '@rollup/rollup-win32-ia32-msvc': 4.21.2
+ '@rollup/rollup-win32-x64-msvc': 4.21.2
fsevents: 2.3.3
rrweb-cssom@0.6.0: {}
@@ -17036,30 +16488,12 @@ snapshots:
seroval@1.1.1: {}
- serve-static@1.15.0:
- dependencies:
- encodeurl: 1.0.2
- escape-html: 1.0.3
- parseurl: 1.3.3
- send: 0.18.0
- transitivePeerDependencies:
- - supports-color
-
server-destroy@1.0.1: {}
server-only@0.0.1: {}
set-blocking@2.0.0: {}
- set-function-length@1.2.2:
- dependencies:
- define-data-property: 1.1.4
- es-errors: 1.3.0
- function-bind: 1.1.2
- get-intrinsic: 1.2.4
- gopd: 1.0.1
- has-property-descriptors: 1.0.2
-
setprototypeof@1.2.0: {}
sharp@0.33.3:
@@ -17116,18 +16550,12 @@ snapshots:
vscode-oniguruma: 1.7.0
vscode-textmate: 5.2.0
- shiki@1.14.1:
+ shiki@1.16.1:
dependencies:
- '@shikijs/core': 1.14.1
+ '@shikijs/core': 1.16.1
+ '@shikijs/vscode-textmate': 9.2.0
'@types/hast': 3.0.4
- side-channel@1.0.6:
- dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- get-intrinsic: 1.2.4
- object-inspect: 1.13.1
-
siginfo@2.0.0: {}
signal-exit@3.0.7: {}
@@ -17373,11 +16801,11 @@ snapshots:
normalize-path: 3.0.0
object-hash: 3.0.0
picocolors: 1.0.1
- postcss: 8.4.41
- postcss-import: 15.1.0(postcss@8.4.41)
- postcss-js: 4.0.1(postcss@8.4.41)
- postcss-load-config: 4.0.2(postcss@8.4.41)
- postcss-nested: 6.0.1(postcss@8.4.41)
+ postcss: 8.4.44
+ postcss-import: 15.1.0(postcss@8.4.44)
+ postcss-js: 4.0.1(postcss@8.4.44)
+ postcss-load-config: 4.0.2(postcss@8.4.44)
+ postcss-nested: 6.0.1(postcss@8.4.44)
postcss-selector-parser: 6.1.0
resolve: 1.22.8
sucrase: 3.35.0
@@ -17467,7 +16895,7 @@ snapshots:
ts-interface-checker@0.1.13: {}
- tsconfck@3.1.1(typescript@5.5.4):
+ tsconfck@3.1.3(typescript@5.5.4):
optionalDependencies:
typescript: 5.5.4
@@ -17475,32 +16903,32 @@ snapshots:
tslib@2.6.2: {}
- turbo-darwin-64@2.1.0:
+ turbo-darwin-64@2.1.1:
optional: true
- turbo-darwin-arm64@2.1.0:
+ turbo-darwin-arm64@2.1.1:
optional: true
- turbo-linux-64@2.1.0:
+ turbo-linux-64@2.1.1:
optional: true
- turbo-linux-arm64@2.1.0:
+ turbo-linux-arm64@2.1.1:
optional: true
- turbo-windows-64@2.1.0:
+ turbo-windows-64@2.1.1:
optional: true
- turbo-windows-arm64@2.1.0:
+ turbo-windows-arm64@2.1.1:
optional: true
- turbo@2.1.0:
+ turbo@2.1.1:
optionalDependencies:
- turbo-darwin-64: 2.1.0
- turbo-darwin-arm64: 2.1.0
- turbo-linux-64: 2.1.0
- turbo-linux-arm64: 2.1.0
- turbo-windows-64: 2.1.0
- turbo-windows-arm64: 2.1.0
+ turbo-darwin-64: 2.1.1
+ turbo-darwin-arm64: 2.1.1
+ turbo-linux-64: 2.1.1
+ turbo-linux-arm64: 2.1.1
+ turbo-windows-64: 2.1.1
+ turbo-windows-arm64: 2.1.1
type-check@0.4.0:
dependencies:
@@ -17517,7 +16945,7 @@ snapshots:
types-react-dom@19.0.0-alpha.3:
dependencies:
- '@types/react': 18.3.4
+ '@types/react': 18.3.5
types-react@19.0.0-alpha.3:
dependencies:
@@ -17648,8 +17076,6 @@ snapshots:
universalify@2.0.1: {}
- unpipe@1.0.0: {}
-
update-browserslist-db@1.1.0(browserslist@4.23.3):
dependencies:
browserslist: 4.23.3
@@ -17669,16 +17095,12 @@ snapshots:
util-deprecate@1.0.2: {}
- utils-merge@1.0.1: {}
-
uuid-parse@1.1.0: {}
uuid@8.3.2: {}
validate-html-nesting@1.2.2: {}
- vary@1.1.2: {}
-
vfile-location@5.0.2:
dependencies:
'@types/unist': 3.0.3
@@ -17716,10 +17138,10 @@ snapshots:
- supports-color
- terser
- vite-plugin-inspect@0.8.5(rollup@4.21.1)(vite@5.4.2(@types/node@18.19.31)(sass@1.77.8)):
+ vite-plugin-inspect@0.8.5(rollup@4.21.2)(vite@5.4.2(@types/node@18.19.31)(sass@1.77.8)):
dependencies:
'@antfu/utils': 0.7.10
- '@rollup/pluginutils': 5.1.0(rollup@4.21.1)
+ '@rollup/pluginutils': 5.1.0(rollup@4.21.2)
debug: 4.3.6
error-stack-parser-es: 0.1.5
fs-extra: 11.2.0
@@ -17745,7 +17167,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- vite-plugin-vue-devtools@7.3.9(rollup@4.21.1)(vite@5.4.2(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.38(typescript@5.5.4)):
+ vite-plugin-vue-devtools@7.3.9(rollup@4.21.2)(vite@5.4.2(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.38(typescript@5.5.4)):
dependencies:
'@vue/devtools-core': 7.3.9(vite@5.4.2(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.38(typescript@5.5.4))
'@vue/devtools-kit': 7.3.9
@@ -17753,7 +17175,7 @@ snapshots:
execa: 8.0.1
sirv: 2.0.4
vite: 5.4.2(@types/node@18.19.31)(sass@1.77.8)
- vite-plugin-inspect: 0.8.5(rollup@4.21.1)(vite@5.4.2(@types/node@18.19.31)(sass@1.77.8))
+ vite-plugin-inspect: 0.8.5(rollup@4.21.2)(vite@5.4.2(@types/node@18.19.31)(sass@1.77.8))
vite-plugin-vue-inspector: 5.1.3(vite@5.4.2(@types/node@18.19.31)(sass@1.77.8))
transitivePeerDependencies:
- '@nuxt/kit'
@@ -17784,8 +17206,8 @@ snapshots:
vite@5.4.2(@types/node@18.19.31)(sass@1.77.8):
dependencies:
esbuild: 0.21.5
- postcss: 8.4.41
- rollup: 4.21.1
+ postcss: 8.4.44
+ rollup: 4.21.2
optionalDependencies:
'@types/node': 18.19.31
fsevents: 2.3.3
@@ -17795,6 +17217,10 @@ snapshots:
optionalDependencies:
vite: 5.4.2(@types/node@18.19.31)(sass@1.77.8)
+ vitefu@1.0.2(vite@5.4.2(@types/node@18.19.31)(sass@1.77.8)):
+ optionalDependencies:
+ vite: 5.4.2(@types/node@18.19.31)(sass@1.77.8)
+
vitest@2.0.5(@types/node@18.19.31)(jsdom@23.2.0)(sass@1.77.8):
dependencies:
'@ampproject/remapping': 2.3.0
diff --git a/scripts/deps/update-example-versions.js b/scripts/deps/update-example-versions.js
index 6c9f8d01d..077c12b97 100644
--- a/scripts/deps/update-example-versions.js
+++ b/scripts/deps/update-example-versions.js
@@ -26,6 +26,8 @@ for (const workspaceDir of workspaceDirs) {
const packageJson = await readAndParsePackageJson(packageJsonPath);
if (!packageJson) continue;
+ if (packageJson.private === true) continue
+
if (!packageJson.name) {
throw new Error(`${packageJsonPath} does not contain a "name" field.`);
}
diff --git a/scripts/package.json b/scripts/package.json
index bbf3e9706..bb939b278 100644
--- a/scripts/package.json
+++ b/scripts/package.json
@@ -14,6 +14,6 @@
"kleur": "^4.1.5",
"p-limit": "^6.1.0",
"tinyexec": "^0.3.0",
- "tsconfck": "^3.1.1"
+ "tsconfck": "^3.1.3"
}
}