summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Adam Heath <doogie@brainfood.com> 2023-08-16 12:57:00 -0500
committerGravatar GitHub <noreply@github.com> 2023-08-16 12:57:00 -0500
commit79d35bbb90444ac98f56d646bd557f330bf8399e (patch)
treee2efc08da36f5ebd367bda91606fdd1c9af72ff4
parentdb5e8ad8aff7a62ba45182115a95054b73f42a7d (diff)
downloadastro-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.ts4
-rw-r--r--packages/astro/test/fixtures/integration-server-setup/integration.js6
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');