summaryrefslogtreecommitdiff
path: root/packages/integrations/cloudflare/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/cloudflare/src')
-rw-r--r--packages/integrations/cloudflare/src/entrypoints/middleware.ts15
-rw-r--r--packages/integrations/cloudflare/src/index.ts15
2 files changed, 29 insertions, 1 deletions
diff --git a/packages/integrations/cloudflare/src/entrypoints/middleware.ts b/packages/integrations/cloudflare/src/entrypoints/middleware.ts
new file mode 100644
index 000000000..3acd1e2f3
--- /dev/null
+++ b/packages/integrations/cloudflare/src/entrypoints/middleware.ts
@@ -0,0 +1,15 @@
+import { When, whenAmI } from '@it-astro:when';
+import type { MiddlewareHandler } from 'astro';
+
+const middlewares: Record<any, MiddlewareHandler> = {
+ [When.Prerender]: (ctx, next) => {
+ if (ctx.locals.runtime === undefined) {
+ ctx.locals.runtime = {
+ env: process.env,
+ };
+ }
+ return next();
+ },
+};
+
+export const onRequest = middlewares[whenAmI];
diff --git a/packages/integrations/cloudflare/src/index.ts b/packages/integrations/cloudflare/src/index.ts
index 1a14fa957..718fac020 100644
--- a/packages/integrations/cloudflare/src/index.ts
+++ b/packages/integrations/cloudflare/src/index.ts
@@ -10,6 +10,7 @@ import {
removeLeadingForwardSlash,
} from '@astrojs/internal-helpers/path';
import { createRedirectsFromAstroRoutes } from '@astrojs/underscore-redirects';
+import astroWhen from '@inox-tools/astro-when';
import { AstroError } from 'astro/errors';
import { getPlatformProxy } from 'wrangler';
import {
@@ -108,7 +109,14 @@ export default function createIntegration(args?: Options): AstroIntegration {
return {
name: '@astrojs/cloudflare',
hooks: {
- 'astro:config:setup': ({ command, config, updateConfig, logger, addWatchFile }) => {
+ 'astro:config:setup': ({
+ command,
+ config,
+ updateConfig,
+ logger,
+ addWatchFile,
+ addMiddleware,
+ }) => {
updateConfig({
build: {
client: new URL(`.${wrapWithSlashes(config.base)}`, config.outDir),
@@ -123,10 +131,15 @@ export default function createIntegration(args?: Options): AstroIntegration {
cloudflareModulePlugin,
],
},
+ integrations: [astroWhen()],
image: setImageConfig(args?.imageService ?? 'compile', config.image, command, logger),
});
addWatchFile(new URL('./wrangler.toml', config.root));
addWatchFile(new URL('./wrangler.json', config.root));
+ addMiddleware({
+ entrypoint: '@astrojs/cloudflare/entrypoints/middleware.js',
+ order: 'pre',
+ });
},
'astro:config:done': ({ setAdapter, config }) => {
if (config.output === 'static') {