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/image-service.ts1
-rw-r--r--packages/integrations/cloudflare/src/entrypoints/middleware.ts2
-rw-r--r--packages/integrations/cloudflare/src/index.ts26
-rw-r--r--packages/integrations/cloudflare/src/utils/generate-routes-json.ts8
-rw-r--r--packages/integrations/cloudflare/src/utils/image-config.ts9
5 files changed, 21 insertions, 25 deletions
diff --git a/packages/integrations/cloudflare/src/entrypoints/image-service.ts b/packages/integrations/cloudflare/src/entrypoints/image-service.ts
index 08a638d97..0c573510f 100644
--- a/packages/integrations/cloudflare/src/entrypoints/image-service.ts
+++ b/packages/integrations/cloudflare/src/entrypoints/image-service.ts
@@ -25,7 +25,6 @@ const service: ExternalImageService = {
}
const imageEndpoint = joinPaths(
- // @ts-expect-error - Property 'env' does not exist on type 'ImportMeta'.ts(2339)
import.meta.env.BASE_URL,
'/cdn-cgi/image',
resizingParams.join(','),
diff --git a/packages/integrations/cloudflare/src/entrypoints/middleware.ts b/packages/integrations/cloudflare/src/entrypoints/middleware.ts
index 60a940855..b5073cd0e 100644
--- a/packages/integrations/cloudflare/src/entrypoints/middleware.ts
+++ b/packages/integrations/cloudflare/src/entrypoints/middleware.ts
@@ -8,7 +8,9 @@ const middlewares: Record<When, MiddlewareHandler> = {
[When.DevServer]: (_, next) => next(),
[When.Server]: (_, next) => next(),
[When.Prerender]: (ctx, next) => {
+ // @ts-expect-error
if (ctx.locals.runtime === undefined) {
+ // @ts-expect-error
ctx.locals.runtime = {
env: process.env,
};
diff --git a/packages/integrations/cloudflare/src/index.ts b/packages/integrations/cloudflare/src/index.ts
index 4facef327..0acd86fd8 100644
--- a/packages/integrations/cloudflare/src/index.ts
+++ b/packages/integrations/cloudflare/src/index.ts
@@ -1,4 +1,4 @@
-import type { AstroConfig, AstroIntegration, RouteData } from 'astro';
+import type { AstroConfig, AstroIntegration, IntegrationRouteData } from 'astro';
import type { PluginOption } from 'vite';
import { createReadStream } from 'node:fs';
@@ -81,8 +81,8 @@ function wrapWithSlashes(path: string): string {
function setProcessEnv(config: AstroConfig, env: Record<string, unknown>) {
const getEnv = createGetEnv(env);
- if (config.experimental.env?.schema) {
- for (const key of Object.keys(config.experimental.env.schema)) {
+ if (config.env?.schema) {
+ for (const key of Object.keys(config.env.schema)) {
const value = getEnv(key);
if (value !== undefined) {
process.env[key] = value;
@@ -151,10 +151,10 @@ export default function createIntegration(args?: Options): AstroIntegration {
order: 'pre',
});
},
- 'astro:config:done': ({ setAdapter, config }) => {
- if (config.output === 'static') {
- throw new AstroError(
- '[@astrojs/cloudflare] `output: "server"` or `output: "hybrid"` is required to use this adapter. Otherwise, this adapter is not necessary to deploy a static site to Cloudflare.'
+ 'astro:config:done': ({ setAdapter, config, buildOutput, logger }) => {
+ if (buildOutput === 'static') {
+ logger.warn(
+ '[@astrojs/cloudflare] This adapter is intended to be used with server rendered pages, which this project does not contain any of. As such, this adapter is unnecessary.'
);
}
@@ -165,19 +165,15 @@ export default function createIntegration(args?: Options): AstroIntegration {
serverEntrypoint: '@astrojs/cloudflare/entrypoints/server.js',
exports: ['default'],
adapterFeatures: {
- functionPerRoute: false,
edgeMiddleware: false,
+ buildOutput: 'server',
},
supportedAstroFeatures: {
serverOutput: 'stable',
hybridOutput: 'stable',
staticOutput: 'unsupported',
i18nDomains: 'experimental',
- assets: {
- supportKind: 'stable',
- isSharpCompatible: false,
- isSquooshCompatible: false,
- },
+ sharpImageService: 'limited',
envGetSecret: 'experimental',
},
});
@@ -309,7 +305,7 @@ export default function createIntegration(args?: Options): AstroIntegration {
redirectsExists = false;
}
- const redirects: RouteData['segments'][] = [];
+ const redirects: IntegrationRouteData['segments'][] = [];
if (redirectsExists) {
const rl = createInterface({
input: createReadStream(new URL('./_redirects', _config.outDir)),
@@ -356,7 +352,7 @@ export default function createIntegration(args?: Options): AstroIntegration {
);
}
- const redirectRoutes: [RouteData, string][] = [];
+ const redirectRoutes: [IntegrationRouteData, string][] = [];
for (const route of routes) {
if (route.type === 'redirect') redirectRoutes.push([route, '']);
}
diff --git a/packages/integrations/cloudflare/src/utils/generate-routes-json.ts b/packages/integrations/cloudflare/src/utils/generate-routes-json.ts
index fee44638a..3d7f8a643 100644
--- a/packages/integrations/cloudflare/src/utils/generate-routes-json.ts
+++ b/packages/integrations/cloudflare/src/utils/generate-routes-json.ts
@@ -1,4 +1,4 @@
-import type { AstroConfig, AstroIntegrationLogger, RouteData, RoutePart } from 'astro';
+import type { AstroConfig, AstroIntegrationLogger, IntegrationRouteData, RoutePart } from 'astro';
import { existsSync } from 'node:fs';
import { writeFile } from 'node:fs/promises';
@@ -63,7 +63,7 @@ async function writeRoutesFileToOutDir(
}
}
-function segmentsToCfSyntax(segments: RouteData['segments'], _config: AstroConfig) {
+function segmentsToCfSyntax(segments: IntegrationRouteData['segments'], _config: AstroConfig) {
const pathSegments = [];
if (removeLeadingForwardSlash(removeTrailingForwardSlash(_config.base)).length > 0) {
pathSegments.push(removeLeadingForwardSlash(removeTrailingForwardSlash(_config.base)));
@@ -163,11 +163,11 @@ class PathTrie {
export async function createRoutesFile(
_config: AstroConfig,
logger: AstroIntegrationLogger,
- routes: RouteData[],
+ routes: IntegrationRouteData[],
pages: {
pathname: string;
}[],
- redirects: RouteData['segments'][],
+ redirects: IntegrationRouteData['segments'][],
includeExtends:
| {
pattern: string;
diff --git a/packages/integrations/cloudflare/src/utils/image-config.ts b/packages/integrations/cloudflare/src/utils/image-config.ts
index 21d9ec733..58e0f76a0 100644
--- a/packages/integrations/cloudflare/src/utils/image-config.ts
+++ b/packages/integrations/cloudflare/src/utils/image-config.ts
@@ -24,17 +24,16 @@ export function setImageConfig(
return {
...config,
service: sharpImageService(),
- endpoint: command === 'dev' ? undefined : '@astrojs/cloudflare/image-endpoint',
+ endpoint: {
+ entrypoint: command === 'dev' ? undefined : '@astrojs/cloudflare/image-endpoint',
+ },
};
case 'custom':
return { ...config };
default:
- if (
- config.service.entrypoint === 'astro/assets/services/sharp' ||
- config.service.entrypoint === 'astro/assets/services/squoosh'
- ) {
+ if (config.service.entrypoint === 'astro/assets/services/sharp') {
logger.warn(
`The current configuration does not support image optimization. To allow your project to build with the original, unoptimized images, the image service has been automatically switched to the 'noop' option. See https://docs.astro.build/en/reference/configuration-reference/#imageservice`
);