diff options
author | 2023-08-16 12:57:00 -0500 | |
---|---|---|
committer | 2023-08-16 12:57:00 -0500 | |
commit | 79d35bbb90444ac98f56d646bd557f330bf8399e (patch) | |
tree | e2efc08da36f5ebd367bda91606fdd1c9af72ff4 | |
parent | db5e8ad8aff7a62ba45182115a95054b73f42a7d (diff) | |
download | astro-79d35bbb90444ac98f56d646bd557f330bf8399e.tar.gz astro-79d35bbb90444ac98f56d646bd557f330bf8399e.tar.zst astro-79d35bbb90444ac98f56d646bd557f330bf8399e.zip |
Fix missing async/await in vite-plugin-integrations-container on astro:server:setup hook (#8104)
* All astro integrations hooks are defined as returning void|Promise, so
all calls need to deal with a possible async/await pattern. One was
missed in vite-plugin-integrations-container.
This plugin is definitely used by the astro-dev when using a node
adapter, but I am not sure about other such scenarios. I did a search
through the code base, and all other runHook* calls are properly
awaited.
* chore: make test async
---------
Co-authored-by: Nate Moore <nate@astro.build>
Diffstat (limited to '')
-rw-r--r-- | packages/astro/src/vite-plugin-integrations-container/index.ts | 4 | ||||
-rw-r--r-- | packages/astro/test/fixtures/integration-server-setup/integration.js | 6 |
2 files changed, 7 insertions, 3 deletions
diff --git a/packages/astro/src/vite-plugin-integrations-container/index.ts b/packages/astro/src/vite-plugin-integrations-container/index.ts index d6bfd76d7..6cc2da152 100644 --- a/packages/astro/src/vite-plugin-integrations-container/index.ts +++ b/packages/astro/src/vite-plugin-integrations-container/index.ts @@ -16,9 +16,9 @@ export default function astroIntegrationsContainerPlugin({ }): VitePlugin { return { name: 'astro:integration-container', - configureServer(server) { + async configureServer(server) { if (server.config.isProduction) return; - runHookServerSetup({ config: settings.config, server, logging }); + await runHookServerSetup({ config: settings.config, server, logging }); }, async buildStart() { if (settings.injectedRoutes.length === settings.resolvedInjectedRoutes.length) return; diff --git a/packages/astro/test/fixtures/integration-server-setup/integration.js b/packages/astro/test/fixtures/integration-server-setup/integration.js index bcbd86228..f5000fa6b 100644 --- a/packages/astro/test/fixtures/integration-server-setup/integration.js +++ b/packages/astro/test/fixtures/integration-server-setup/integration.js @@ -1,8 +1,12 @@ +import { setTimeout } from "node:timers/promises"; + export default function() { return { name: '@astrojs/test-integration', hooks: { - 'astro:server:setup': ({ server }) => { + 'astro:server:setup': async ({ server }) => { + // Ensure that `async` is respected + await setTimeout(100); server.middlewares.use( function middleware(req, res, next) { res.setHeader('x-middleware', 'true'); |