astro 4.10.3 → 4.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/components/Code.astro +9 -0
  2. package/dist/@types/astro.d.ts +0 -2
  3. package/dist/actions/runtime/store.d.ts +0 -1
  4. package/dist/actions/runtime/virtual/server.d.ts +1 -1
  5. package/dist/assets/build/remote.d.ts +0 -1
  6. package/dist/assets/internal.d.ts +1 -1
  7. package/dist/assets/internal.js +6 -0
  8. package/dist/assets/services/vendor/squoosh/avif/avif_node_dec.wasm.d.ts +0 -1
  9. package/dist/assets/services/vendor/squoosh/avif/avif_node_enc.wasm.d.ts +0 -1
  10. package/dist/assets/services/vendor/squoosh/codecs.d.ts +0 -1
  11. package/dist/assets/services/vendor/squoosh/image.d.ts +0 -1
  12. package/dist/assets/services/vendor/squoosh/image_data.d.ts +0 -1
  13. package/dist/assets/services/vendor/squoosh/impl.d.ts +0 -1
  14. package/dist/assets/services/vendor/squoosh/mozjpeg/mozjpeg_node_dec.wasm.d.ts +0 -1
  15. package/dist/assets/services/vendor/squoosh/mozjpeg/mozjpeg_node_enc.wasm.d.ts +0 -1
  16. package/dist/assets/services/vendor/squoosh/png/squoosh_oxipng_bg.wasm.d.ts +0 -1
  17. package/dist/assets/services/vendor/squoosh/png/squoosh_png_bg.wasm.d.ts +0 -1
  18. package/dist/assets/services/vendor/squoosh/resize/squoosh_resize_bg.wasm.d.ts +0 -1
  19. package/dist/assets/services/vendor/squoosh/rotate/rotate.wasm.d.ts +0 -1
  20. package/dist/assets/services/vendor/squoosh/utils/workerPool.d.ts +0 -1
  21. package/dist/assets/services/vendor/squoosh/webp/webp_node_dec.wasm.d.ts +0 -1
  22. package/dist/assets/services/vendor/squoosh/webp/webp_node_enc.wasm.d.ts +0 -1
  23. package/dist/assets/types.d.ts +8 -2
  24. package/dist/assets/types.js +7 -0
  25. package/dist/cli/add/babel.d.ts +6 -6
  26. package/dist/config/index.d.ts +1 -1
  27. package/dist/config/vite-plugin-content-listen.d.ts +0 -1
  28. package/dist/container/pipeline.d.ts +0 -1
  29. package/dist/container/pipeline.js +13 -32
  30. package/dist/content/runtime-assets.d.ts +3 -3
  31. package/dist/content/server-listeners.d.ts +0 -1
  32. package/dist/content/types-generator.d.ts +1 -2
  33. package/dist/content/types-generator.js +27 -6
  34. package/dist/content/utils.d.ts +0 -1
  35. package/dist/content/vite-plugin-content-imports.d.ts +0 -1
  36. package/dist/content/vite-plugin-content-virtual-mod.d.ts +0 -1
  37. package/dist/core/app/createOutgoingHttpHeaders.d.ts +0 -1
  38. package/dist/core/app/index.d.ts +4 -0
  39. package/dist/core/app/index.js +17 -6
  40. package/dist/core/app/node.d.ts +0 -1
  41. package/dist/core/app/pipeline.d.ts +1 -2
  42. package/dist/core/app/pipeline.js +11 -39
  43. package/dist/core/base-pipeline.d.ts +0 -9
  44. package/dist/core/build/pipeline.d.ts +1 -2
  45. package/dist/core/build/pipeline.js +16 -42
  46. package/dist/core/build/plugins/plugin-analyzer.js +14 -12
  47. package/dist/core/config/config.d.ts +0 -1
  48. package/dist/core/config/schema.d.ts +0 -2
  49. package/dist/core/config/vite-load.d.ts +0 -1
  50. package/dist/core/constants.js +1 -1
  51. package/dist/core/cookies/cookies.d.ts +5 -0
  52. package/dist/core/cookies/cookies.js +12 -0
  53. package/dist/core/cookies/response.d.ts +1 -0
  54. package/dist/core/cookies/response.js +3 -2
  55. package/dist/core/create-vite.d.ts +0 -1
  56. package/dist/core/create-vite.js +0 -4
  57. package/dist/core/dev/container.d.ts +0 -3
  58. package/dist/core/dev/dev.d.ts +0 -2
  59. package/dist/core/dev/dev.js +1 -1
  60. package/dist/core/dev/restart.d.ts +0 -1
  61. package/dist/core/errors/errors-data.d.ts +21 -12
  62. package/dist/core/errors/errors-data.js +7 -6
  63. package/dist/core/messages.js +2 -2
  64. package/dist/core/module-loader/loader.d.ts +0 -1
  65. package/dist/core/preview/static-preview-server.d.ts +0 -1
  66. package/dist/core/render-context.d.ts +1 -1
  67. package/dist/core/render-context.js +20 -6
  68. package/dist/core/request.d.ts +0 -1
  69. package/dist/core/request.js +7 -1
  70. package/dist/core/routing/manifest/create.d.ts +0 -1
  71. package/dist/core/routing/rewrite.d.ts +10 -0
  72. package/dist/core/routing/rewrite.js +41 -0
  73. package/dist/env/vite-plugin-env.d.ts +0 -1
  74. package/dist/integrations/hooks.d.ts +1 -2
  75. package/dist/jsx/rehype.d.ts +2 -8
  76. package/dist/runtime/client/dev-toolbar/helpers.d.ts +1 -1
  77. package/dist/runtime/client/dev-toolbar/settings.d.ts +1 -1
  78. package/dist/runtime/server/render/page.js +11 -2
  79. package/dist/transitions/events.d.ts +0 -1
  80. package/dist/transitions/router.js +6 -1
  81. package/dist/vite-plugin-astro-server/pipeline.d.ts +1 -2
  82. package/dist/vite-plugin-astro-server/pipeline.js +15 -42
  83. package/dist/vite-plugin-astro-server/plugin.d.ts +0 -1
  84. package/dist/vite-plugin-astro-server/request.d.ts +0 -1
  85. package/dist/vite-plugin-astro-server/request.js +1 -1
  86. package/dist/vite-plugin-astro-server/response.d.ts +0 -1
  87. package/dist/vite-plugin-astro-server/route.d.ts +0 -1
  88. package/dist/vite-plugin-astro-server/route.js +39 -97
  89. package/dist/vite-plugin-inject-env-ts/index.d.ts +0 -1
  90. package/dist/vite-plugin-load-fallback/index.d.ts +0 -1
  91. package/package.json +12 -11
@@ -55,7 +55,7 @@ export declare const serverHelpers: {
55
55
  * @param callback - The callback to run when the event is received.
56
56
  * The payload's content will be passed to the callback as an argument
57
57
  */
58
- on: <T_1>(event: string, callback: (data: T_1) => void) => void;
58
+ on: <T>(event: string, callback: (data: T) => void) => void;
59
59
  };
60
60
  export type ToolbarServerHelpers = typeof serverHelpers;
61
61
  export {};
@@ -13,7 +13,7 @@ export declare const settings: {
13
13
  readonly config: Settings;
14
14
  updateSetting: <Key extends keyof Settings>(key: Key, value: Settings[Key]) => void;
15
15
  logger: {
16
- log: (message: string, level?: 'log' | 'warn' | 'error') => void;
16
+ log: (message: string, level?: "log" | "warn" | "error") => void;
17
17
  warn: (message: string) => void;
18
18
  error: (message: string) => void;
19
19
  verboseLog: (message: string) => void;
@@ -53,8 +53,17 @@ async function renderPage(result, componentFactory, props, children, streaming,
53
53
  if (route?.component.endsWith(".md")) {
54
54
  headers.set("Content-Type", "text/html; charset=utf-8");
55
55
  }
56
- const response = new Response(body, { ...init, headers });
57
- return response;
56
+ let status = init.status;
57
+ if (route?.route === "/404") {
58
+ status = 404;
59
+ } else if (route?.route === "/500") {
60
+ status = 500;
61
+ }
62
+ if (status) {
63
+ return new Response(body, { ...init, headers, status });
64
+ } else {
65
+ return new Response(body, { ...init, headers });
66
+ }
58
67
  }
59
68
  export {
60
69
  renderPage
@@ -1,4 +1,3 @@
1
- /// <reference types="@types/dom-view-transitions" />
2
1
  import type { Direction, NavigationTypeString } from './types.js';
3
2
  export declare const TRANSITION_BEFORE_PREPARATION = "astro:before-preparation";
4
3
  export declare const TRANSITION_AFTER_PREPARATION = "astro:after-preparation";
@@ -268,7 +268,12 @@ async function transition(direction, from, to, options, historyState) {
268
268
  return;
269
269
  }
270
270
  if (response.redirected) {
271
- preparationEvent.to = new URL(response.redirected);
271
+ const redirectedTo = new URL(response.redirected);
272
+ if (redirectedTo.origin !== preparationEvent.to.origin) {
273
+ preparationEvent.preventDefault();
274
+ return;
275
+ }
276
+ preparationEvent.to = redirectedTo;
272
277
  }
273
278
  parser ??= new DOMParser();
274
279
  preparationEvent.newDocument = parser.parseFromString(response.html, response.mediaType);
@@ -19,7 +19,6 @@ export declare class DevPipeline extends Pipeline {
19
19
  preload(routeData: RouteData, filePath: URL): Promise<ComponentInstance>;
20
20
  clearRouteCache(): void;
21
21
  getComponentByRoute(routeData: RouteData): Promise<ComponentInstance>;
22
- tryRewrite(payload: RewritePayload, request: Request, sourceRoute: RouteData): Promise<[RouteData, ComponentInstance, URL]>;
22
+ tryRewrite(payload: RewritePayload, request: Request, _sourceRoute: RouteData): Promise<[RouteData, ComponentInstance, URL]>;
23
23
  setManifestData(manifestData: ManifestData): void;
24
- rewriteKnownRoute(route: string, sourceRoute: RouteData): ComponentInstance;
25
24
  }
@@ -1,12 +1,15 @@
1
1
  import { fileURLToPath } from "node:url";
2
2
  import { getInfoOutput } from "../cli/info/index.js";
3
3
  import {} from "../core/base-pipeline.js";
4
+ import { shouldAppendForwardSlash } from "../core/build/util.js";
4
5
  import { ASTRO_VERSION, DEFAULT_404_COMPONENT } from "../core/constants.js";
5
6
  import { enhanceViteSSRError } from "../core/errors/dev/index.js";
6
- import { InvalidRewrite404, RewriteEncounteredAnError } from "../core/errors/errors-data.js";
7
+ import { RewriteEncounteredAnError } from "../core/errors/errors-data.js";
7
8
  import { AggregateError, AstroError, CSSError, MarkdownError } from "../core/errors/index.js";
9
+ import { prependForwardSlash, removeTrailingForwardSlash } from "../core/path.js";
8
10
  import { Pipeline, loadRenderer } from "../core/render/index.js";
9
11
  import { DEFAULT_404_ROUTE, default404Page } from "../core/routing/astro-designed-error-pages.js";
12
+ import { findRouteToRewrite } from "../core/routing/rewrite.js";
10
13
  import { isPage, isServerLikeOutput, resolveIdToUrl, viteID } from "../core/util.js";
11
14
  import { PAGE_SCRIPT_ID } from "../vite-plugin-scripts/index.js";
12
15
  import { getStylesForURL } from "./css.js";
@@ -133,54 +136,24 @@ class DevPipeline extends Pipeline {
133
136
  return await this.preload(routeData, filePath);
134
137
  }
135
138
  }
136
- async tryRewrite(payload, request, sourceRoute) {
137
- let foundRoute;
139
+ async tryRewrite(payload, request, _sourceRoute) {
138
140
  if (!this.manifestData) {
139
141
  throw new Error("Missing manifest data. This is an internal error, please file an issue.");
140
142
  }
141
- let finalUrl = void 0;
142
- for (const route of this.manifestData.routes) {
143
- if (payload instanceof URL) {
144
- finalUrl = payload;
145
- } else if (payload instanceof Request) {
146
- finalUrl = new URL(payload.url);
147
- } else {
148
- finalUrl = new URL(payload, new URL(request.url).origin);
149
- }
150
- if (route.pattern.test(decodeURI(finalUrl.pathname))) {
151
- foundRoute = route;
152
- break;
153
- } else if (finalUrl.pathname === "/404") {
154
- foundRoute = DEFAULT_404_ROUTE;
155
- break;
156
- }
157
- }
158
- if (foundRoute && finalUrl) {
159
- if (foundRoute.pathname === "/404") {
160
- const componentInstance = this.rewriteKnownRoute(foundRoute.pathname, sourceRoute);
161
- return [foundRoute, componentInstance, finalUrl];
162
- } else {
163
- const componentInstance = await this.getComponentByRoute(foundRoute);
164
- return [foundRoute, componentInstance, finalUrl];
165
- }
166
- } else {
167
- throw new AstroError({
168
- ...RewriteEncounteredAnError,
169
- message: RewriteEncounteredAnError.message(payload.toString())
170
- });
171
- }
143
+ const [foundRoute, finalUrl] = findRouteToRewrite({
144
+ payload,
145
+ request,
146
+ routes: this.manifestData?.routes,
147
+ trailingSlash: this.config.trailingSlash,
148
+ buildFormat: this.config.build.format,
149
+ base: this.config.base
150
+ });
151
+ const componentInstance = await this.getComponentByRoute(foundRoute);
152
+ return [foundRoute, componentInstance, finalUrl];
172
153
  }
173
154
  setManifestData(manifestData) {
174
155
  this.manifestData = manifestData;
175
156
  }
176
- rewriteKnownRoute(route, sourceRoute) {
177
- if (isServerLikeOutput(this.config) && sourceRoute.prerender) {
178
- if (route === "/404") {
179
- return { default: default404Page };
180
- }
181
- }
182
- throw new AstroError(InvalidRewrite404);
183
- }
184
157
  }
185
158
  export {
186
159
  DevPipeline
@@ -1,4 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  import type fs from 'node:fs';
3
2
  import type * as vite from 'vite';
4
3
  import type { AstroSettings, SSRManifest } from '../@types/astro.js';
@@ -1,4 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  import type http from 'node:http';
3
2
  import type { ManifestData } from '../@types/astro.js';
4
3
  import type { DevServerController } from './controller.js';
@@ -11,7 +11,7 @@ async function handleRequest({
11
11
  incomingResponse
12
12
  }) {
13
13
  const { config, loader } = pipeline;
14
- const origin = `${loader.isHttps() ? "https" : "http"}://${incomingRequest.headers.host}`;
14
+ const origin = `${loader.isHttps() ? "https" : "http"}://${incomingRequest.headers[":authority"] ?? incomingRequest.headers.host}`;
15
15
  const url = new URL(origin + incomingRequest.url);
16
16
  let pathname;
17
17
  if (config.trailingSlash === "never" && !incomingRequest.url) {
@@ -1,4 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  import type http from 'node:http';
3
2
  import type { ErrorWithMetadata } from '../core/errors/index.js';
4
3
  import type { ModuleLoader } from '../core/module-loader/index.js';
@@ -1,4 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  import type http from 'node:http';
3
2
  import type { ComponentInstance, ManifestData, RouteData } from '../@types/astro.js';
4
3
  import type { DevPipeline } from './pipeline.js';
@@ -108,11 +108,8 @@ async function handleRoute({
108
108
  }) {
109
109
  const timeStart = performance.now();
110
110
  const { config, loader, logger } = pipeline;
111
- if (!matchedRoute && !config.i18n) {
112
- if (isLoggedRequest(pathname)) {
113
- logger.info(null, req({ url: pathname, method: incomingRequest.method, statusCode: 404 }));
114
- }
115
- return handle404Response(origin, incomingRequest, incomingResponse);
111
+ if (!matchedRoute) {
112
+ throw new Error("No route matched, and default 404 route was not found.");
116
113
  }
117
114
  let request;
118
115
  let renderContext;
@@ -121,96 +118,40 @@ async function handleRoute({
121
118
  let route;
122
119
  const middleware = (await loadMiddleware(loader)).onRequest;
123
120
  const locals = Reflect.get(incomingRequest, clientLocalsSymbol);
124
- if (!matchedRoute) {
125
- if (config.i18n) {
126
- const locales = config.i18n.locales;
127
- const pathNameHasLocale = pathname.split("/").filter(Boolean).some((segment) => {
128
- let found = false;
129
- for (const locale of locales) {
130
- if (typeof locale === "string") {
131
- if (normalizeTheLocale(locale) === normalizeTheLocale(segment)) {
132
- found = true;
133
- break;
134
- }
135
- } else {
136
- if (locale.path === segment) {
137
- found = true;
138
- break;
139
- }
140
- }
141
- }
142
- return found;
143
- });
144
- if (!pathNameHasLocale && pathname !== "/") {
145
- return handle404Response(origin, incomingRequest, incomingResponse);
146
- }
147
- }
148
- request = createRequest({
149
- base: config.base,
150
- url,
151
- headers: incomingRequest.headers,
152
- logger,
153
- // no route found, so we assume the default for rendering the 404 page
154
- staticLike: config.output === "static" || config.output === "hybrid"
155
- });
156
- route = {
157
- component: "",
158
- generate(_data) {
159
- return "";
160
- },
161
- params: [],
162
- // Disable eslint as we only want to generate an empty RegExp
163
- // eslint-disable-next-line prefer-regex-literals
164
- pattern: new RegExp(""),
165
- prerender: false,
166
- segments: [],
167
- type: "fallback",
168
- route: "",
169
- fallbackRoutes: [],
170
- isIndex: false
171
- };
172
- renderContext = RenderContext.create({
173
- pipeline,
174
- pathname,
175
- middleware,
176
- request,
177
- routeData: route
178
- });
179
- } else {
180
- const filePath = matchedRoute.filePath;
181
- const { preloadedComponent } = matchedRoute;
182
- route = matchedRoute.route;
183
- request = createRequest({
184
- base: config.base,
185
- url,
186
- headers: incomingRequest.headers,
187
- method: incomingRequest.method,
188
- body,
189
- logger,
190
- clientAddress: incomingRequest.socket.remoteAddress,
191
- staticLike: config.output === "static" || route.prerender
192
- });
193
- for (const [name, value] of Object.entries(config.server.headers ?? {})) {
194
- if (value) incomingResponse.setHeader(name, value);
195
- }
196
- options = {
197
- pipeline,
198
- filePath,
199
- preload: preloadedComponent,
200
- pathname,
201
- request,
202
- route
203
- };
204
- mod = preloadedComponent;
205
- renderContext = RenderContext.create({
206
- locals,
207
- pipeline,
208
- pathname,
209
- middleware,
210
- request,
211
- routeData: route
212
- });
121
+ const filePath = matchedRoute.filePath;
122
+ const { preloadedComponent } = matchedRoute;
123
+ route = matchedRoute.route;
124
+ request = createRequest({
125
+ base: config.base,
126
+ url,
127
+ headers: incomingRequest.headers,
128
+ method: incomingRequest.method,
129
+ body,
130
+ logger,
131
+ clientAddress: incomingRequest.socket.remoteAddress,
132
+ staticLike: config.output === "static" || route.prerender
133
+ });
134
+ for (const [name, value] of Object.entries(config.server.headers ?? {})) {
135
+ if (value) incomingResponse.setHeader(name, value);
213
136
  }
137
+ options = {
138
+ pipeline,
139
+ filePath,
140
+ preload: preloadedComponent,
141
+ pathname,
142
+ request,
143
+ route
144
+ };
145
+ mod = preloadedComponent;
146
+ const isPrerendered404 = matchedRoute.route.route === "/404" && matchedRoute.route.prerender;
147
+ renderContext = RenderContext.create({
148
+ locals,
149
+ pipeline,
150
+ pathname,
151
+ middleware: isPrerendered404 ? void 0 : middleware,
152
+ request,
153
+ routeData: route
154
+ });
214
155
  let response;
215
156
  try {
216
157
  response = await renderContext.render(mod);
@@ -220,9 +161,10 @@ async function handleRoute({
220
161
  throw err;
221
162
  }
222
163
  logger.error("router", err.stack || err.message);
223
- const filePath = new URL(`./${custom500.component}`, config.root);
224
- const preloadedComponent = await pipeline.preload(custom500, filePath);
225
- response = await renderContext.render(preloadedComponent);
164
+ const filePath500 = new URL(`./${custom500.component}`, config.root);
165
+ const preloaded500Component = await pipeline.preload(custom500, filePath500);
166
+ renderContext.props.error = err;
167
+ response = await renderContext.render(preloaded500Component);
226
168
  status = 500;
227
169
  }
228
170
  if (isLoggedRequest(pathname)) {
@@ -1,4 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  import type fsMod from 'node:fs';
3
2
  import { type Plugin } from 'vite';
4
3
  import type { AstroSettings } from '../@types/astro.js';
@@ -1,4 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  import nodeFs from 'node:fs';
3
2
  import type * as vite from 'vite';
4
3
  type NodeFileSystemModule = typeof nodeFs;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "astro",
3
- "version": "4.10.3",
3
+ "version": "4.11.1",
4
4
  "description": "Astro is a modern site builder with web best practices, performance, and DX front-of-mind.",
5
5
  "type": "module",
6
6
  "author": "withastro",
@@ -109,7 +109,7 @@
109
109
  "vendor"
110
110
  ],
111
111
  "dependencies": {
112
- "@astrojs/compiler": "^2.8.0",
112
+ "@astrojs/compiler": "^2.8.1",
113
113
  "@babel/core": "^7.24.7",
114
114
  "@babel/generator": "^7.24.7",
115
115
  "@babel/parser": "^7.24.7",
@@ -134,7 +134,7 @@
134
134
  "diff": "^5.2.0",
135
135
  "dlv": "^1.1.3",
136
136
  "dset": "^3.1.3",
137
- "es-module-lexer": "^1.5.3",
137
+ "es-module-lexer": "^1.5.4",
138
138
  "esbuild": "^0.21.5",
139
139
  "estree-walker": "^3.0.3",
140
140
  "execa": "^8.0.1",
@@ -157,7 +157,7 @@
157
157
  "rehype": "^13.0.1",
158
158
  "resolve": "^1.22.8",
159
159
  "semver": "^7.6.2",
160
- "shiki": "^1.6.5",
160
+ "shiki": "^1.9.0",
161
161
  "string-width": "^7.1.0",
162
162
  "strip-ansi": "^7.1.0",
163
163
  "tsconfck": "^3.1.0",
@@ -168,10 +168,10 @@
168
168
  "which-pm": "^2.2.0",
169
169
  "yargs-parser": "^21.1.1",
170
170
  "zod": "^3.23.8",
171
- "zod-to-json-schema": "^3.23.0",
172
- "@astrojs/internal-helpers": "0.4.0",
173
- "@astrojs/telemetry": "3.1.0",
174
- "@astrojs/markdown-remark": "5.1.0"
171
+ "zod-to-json-schema": "^3.23.1",
172
+ "@astrojs/internal-helpers": "0.4.1",
173
+ "@astrojs/markdown-remark": "5.1.1",
174
+ "@astrojs/telemetry": "3.1.0"
175
175
  },
176
176
  "optionalDependencies": {
177
177
  "sharp": "^0.33.3"
@@ -205,16 +205,17 @@
205
205
  "mdast-util-mdx": "^3.0.0",
206
206
  "mdast-util-mdx-jsx": "^3.1.2",
207
207
  "memfs": "^4.9.3",
208
- "node-mocks-http": "^1.14.1",
208
+ "node-mocks-http": "^1.15.0",
209
209
  "parse-srcset": "^1.0.2",
210
210
  "rehype-autolink-headings": "^7.1.0",
211
211
  "rehype-slug": "^6.0.0",
212
212
  "rehype-toc": "^3.0.2",
213
213
  "remark-code-titles": "^0.1.2",
214
214
  "rollup": "^4.18.0",
215
- "sass": "^1.77.5",
215
+ "sass": "^1.77.6",
216
216
  "srcset-parse": "^1.1.0",
217
- "unified": "^11.0.4",
217
+ "undici": "^6.19.2",
218
+ "unified": "^11.0.5",
218
219
  "astro-scripts": "0.0.14"
219
220
  },
220
221
  "engines": {