Skip to content

Commit 9eaa9e2

Browse files
Update the structure of the configure method of autoconfig frameworks (#11461)
1 parent 67c6634 commit 9eaa9e2

File tree

10 files changed

+76
-48
lines changed

10 files changed

+76
-48
lines changed

.changeset/wet-flowers-kiss.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
"wrangler": patch
3+
---
4+
5+
Update the structure of the `configure` method of autoconfig frameworks
6+
7+
Update the signature of the `configure` function of autoconfig frameworks (`AutoconfigDetails#Framework`), before they would return a `RawConfig` object to use to update the project's wrangler config file, now they return an object that includes the `RawConfig` and that can potentially also hold additional data relevant to the configuration.

packages/wrangler/src/__tests__/autoconfig/details/confirm-auto-config-details.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ describe("autoconfig details - confirmAutoConfigDetails()", () => {
103103
buildCommand: "astro build",
104104
framework: {
105105
configured: false,
106-
configure: () => ({}),
106+
configure: () => ({ wranglerConfig: {} }),
107107
name: "astro",
108108
},
109109
outputDir: "<OUTPUT_DIR>",

packages/wrangler/src/__tests__/autoconfig/details/display-auto-config-details.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,11 @@ describe("autoconfig details - displayAutoConfigDetails()", () => {
3535
configured: false,
3636
projectPath: process.cwd(),
3737
workerName: "my-astro-app",
38-
framework: { name: "Astro", configured: false, configure: () => ({}) },
38+
framework: {
39+
name: "Astro",
40+
configured: false,
41+
configure: () => ({ wranglerConfig: {} }),
42+
},
3943
buildCommand: "astro build",
4044
outputDir: "dist",
4145
});

packages/wrangler/src/__tests__/autoconfig/run.test.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,9 @@ describe("autoconfig (deploy)", () => {
150150
});
151151
await writeFile(".gitignore", "");
152152
const configureSpy = vi.fn(async ({ outputDir }) => ({
153-
assets: { directory: outputDir },
153+
wranglerConfig: {
154+
assets: { directory: outputDir },
155+
},
154156
}));
155157
await run.runAutoConfig({
156158
projectPath: process.cwd(),

packages/wrangler/src/autoconfig/frameworks/astro.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,13 @@ import { brandColor, dim } from "@cloudflare/cli/colors";
33
import { getPackageManager } from "../../package-manager";
44
import { runCommand } from "../c3-vendor/command";
55
import { Framework } from ".";
6-
import type { ConfigurationOptions } from ".";
7-
import type { RawConfig } from "@cloudflare/workers-utils";
6+
import type { ConfigurationOptions, ConfigurationResults } from ".";
87

98
export class Astro extends Framework {
109
async configure({
1110
outputDir,
1211
dryRun,
13-
}: ConfigurationOptions): Promise<RawConfig> {
12+
}: ConfigurationOptions): Promise<ConfigurationResults> {
1413
const { npx } = await getPackageManager();
1514
if (!dryRun) {
1615
await runCommand([npx, "astro", "add", "cloudflare", "-y"], {
@@ -23,11 +22,13 @@ export class Astro extends Framework {
2322
writeFileSync("public/.assetsignore", "_worker.js\n_routes.json");
2423
}
2524
return {
26-
main: `${outputDir}/_worker.js/index.js`,
27-
compatibility_flags: ["nodejs_compat", "global_fetch_strictly_public"],
28-
assets: {
29-
binding: "ASSETS",
30-
directory: outputDir,
25+
wranglerConfig: {
26+
main: `${outputDir}/_worker.js/index.js`,
27+
compatibility_flags: ["nodejs_compat", "global_fetch_strictly_public"],
28+
assets: {
29+
binding: "ASSETS",
30+
directory: outputDir,
31+
},
3132
},
3233
};
3334
}

packages/wrangler/src/autoconfig/frameworks/index.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ export type ConfigurationOptions = {
66
workerName: string;
77
dryRun: boolean;
88
};
9+
10+
export type ConfigurationResults = {
11+
wranglerConfig: RawConfig;
12+
};
13+
914
export abstract class Framework {
1015
constructor(public name: string = "Static") {}
1116

@@ -21,7 +26,7 @@ export abstract class Framework {
2126

2227
abstract configure(
2328
options: ConfigurationOptions
24-
): Promise<RawConfig> | RawConfig;
29+
): Promise<ConfigurationResults> | ConfigurationResults;
2530

2631
configurationDescription?: string;
2732
}

packages/wrangler/src/autoconfig/frameworks/static.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
import { Framework } from ".";
2-
import type { ConfigurationOptions } from ".";
3-
import type { RawConfig } from "@cloudflare/workers-utils";
2+
import type { ConfigurationOptions, ConfigurationResults } from ".";
43

54
export class Static extends Framework {
6-
configure({
7-
outputDir,
8-
}: ConfigurationOptions): Promise<RawConfig> | RawConfig {
5+
configure({ outputDir }: ConfigurationOptions): ConfigurationResults {
96
return {
10-
assets: {
11-
directory: outputDir,
7+
wranglerConfig: {
8+
assets: {
9+
directory: outputDir,
10+
},
1211
},
1312
};
1413
}

packages/wrangler/src/autoconfig/frameworks/sveltekit.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@ import { getPackageManager } from "../../package-manager";
44
import { runCommand } from "../c3-vendor/command";
55
import { installPackages } from "../c3-vendor/packages";
66
import { Framework } from ".";
7-
import type { ConfigurationOptions } from ".";
8-
import type { RawConfig } from "@cloudflare/workers-utils";
7+
import type { ConfigurationOptions, ConfigurationResults } from ".";
98

109
export class SvelteKit extends Framework {
11-
async configure({ dryRun }: ConfigurationOptions): Promise<RawConfig> {
10+
async configure({
11+
dryRun,
12+
}: ConfigurationOptions): Promise<ConfigurationResults> {
1213
const { dlx } = await getPackageManager();
1314
if (!dryRun) {
1415
await runCommand(
@@ -36,11 +37,13 @@ export class SvelteKit extends Framework {
3637
});
3738
}
3839
return {
39-
main: ".svelte-kit/cloudflare/_worker.js",
40-
compatibility_flags: ["nodejs_als"],
41-
assets: {
42-
binding: "ASSETS",
43-
directory: ".svelte-kit/cloudflare",
40+
wranglerConfig: {
41+
main: ".svelte-kit/cloudflare/_worker.js",
42+
compatibility_flags: ["nodejs_als"],
43+
assets: {
44+
binding: "ASSETS",
45+
directory: ".svelte-kit/cloudflare",
46+
},
4447
},
4548
};
4649
}

packages/wrangler/src/autoconfig/frameworks/tanstack.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ import * as recast from "recast";
66
import { transformFile } from "../c3-vendor/codemod";
77
import { installPackages } from "../c3-vendor/packages";
88
import { Framework } from ".";
9-
import type { ConfigurationOptions } from ".";
10-
import type { RawConfig } from "@cloudflare/workers-utils";
9+
import type { ConfigurationOptions, ConfigurationResults } from ".";
1110
import type { types } from "recast";
1211

1312
const b = recast.types.builders;
@@ -128,7 +127,7 @@ export class TanstackStart extends Framework {
128127
async configure({
129128
dryRun,
130129
projectPath,
131-
}: ConfigurationOptions): Promise<RawConfig> {
130+
}: ConfigurationOptions): Promise<ConfigurationResults> {
132131
if (!dryRun) {
133132
await installPackages(["@cloudflare/vite-plugin"], {
134133
dev: true,
@@ -140,8 +139,10 @@ export class TanstackStart extends Framework {
140139
}
141140

142141
return {
143-
compatibility_flags: ["nodejs_compat"],
144-
main: "@tanstack/react-start/server-entry",
142+
wranglerConfig: {
143+
compatibility_flags: ["nodejs_compat"],
144+
main: "@tanstack/react-start/server-entry",
145+
},
145146
};
146147
}
147148

packages/wrangler/src/autoconfig/run.ts

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -73,14 +73,17 @@ export async function runAutoConfig(
7373
},
7474
} satisfies RawConfig;
7575

76-
const modifications = await buildOperationsSummary(autoConfigDetails, {
77-
...wranglerConfig,
78-
...(await autoConfigDetails.framework?.configure({
76+
const dryRunConfigurationResults =
77+
await autoConfigDetails.framework?.configure({
7978
outputDir: autoConfigDetails.outputDir,
8079
projectPath: autoConfigDetails.projectPath,
8180
workerName: autoConfigDetails.workerName,
8281
dryRun: true,
83-
})),
82+
});
83+
84+
const modifications = await buildOperationsSummary(autoConfigDetails, {
85+
...wranglerConfig,
86+
...dryRunConfigurationResults?.wranglerConfig,
8487
});
8588

8689
if (!(skipConfirmations || (await confirm("Proceed with setup?")))) {
@@ -99,10 +102,6 @@ export async function runAutoConfig(
99102
`Running autoconfig with:\n${JSON.stringify(autoConfigDetails, null, 2)}...`
100103
);
101104

102-
if (modifications.wranglerInstall) {
103-
await installWrangler();
104-
}
105-
106105
if (autoConfigDetails.packageJson) {
107106
await writeFile(
108107
resolve(autoConfigDetails.projectPath, "package.json"),
@@ -119,17 +118,24 @@ export async function runAutoConfig(
119118
)
120119
);
121120
}
122-
const additionalConfigDetails =
123-
(await autoConfigDetails.framework?.configure({
124-
outputDir: autoConfigDetails.outputDir,
125-
projectPath: autoConfigDetails.projectPath,
126-
workerName: autoConfigDetails.workerName,
127-
dryRun: false,
128-
})) ?? {};
121+
122+
if (modifications.wranglerInstall) {
123+
await installWrangler();
124+
}
125+
const configurationResults = await autoConfigDetails.framework?.configure({
126+
outputDir: autoConfigDetails.outputDir,
127+
projectPath: autoConfigDetails.projectPath,
128+
workerName: autoConfigDetails.workerName,
129+
dryRun: false,
130+
});
129131

130132
await writeFile(
131133
resolve(autoConfigDetails.projectPath, "wrangler.jsonc"),
132-
JSON.stringify({ ...wranglerConfig, ...additionalConfigDetails }, null, 2)
134+
JSON.stringify(
135+
{ ...wranglerConfig, ...configurationResults?.wranglerConfig },
136+
null,
137+
2
138+
)
133139
);
134140

135141
addWranglerToGitIgnore(autoConfigDetails.projectPath);

0 commit comments

Comments
 (0)