Skip to content

Commit 853784c

Browse files
committed
feat: add Waku to C3
Fixes cloudflare#7594. Adding a C3 template for Waku, a minimal React framework. https://waku.gg/ - Tests - [ ] TODO (before merge) - [x] Tests included - [ ] Tests not necessary because: - E2E Tests CI Job required? (Use "e2e" label or ask maintainer to run separately) - [ ] I don't know - [x] Required - [ ] Not required because: - Public documentation - [ ] TODO (before merge) - [x] Cloudflare docs PR(s): <cloudflare/cloudflare-docs#20444> - [ ] Documentation not necessary because:
1 parent f566680 commit 853784c

File tree

6 files changed

+127
-0
lines changed

6 files changed

+127
-0
lines changed

packages/create-cloudflare/e2e-tests/frameworks/framework-test-config-experimental.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,22 @@ export default function getFrameworkTestConfigExperimental() {
2626
expectedText: "Hello world",
2727
},
2828
},
29+
waku: {
30+
testCommitMessage: true,
31+
timeout: LONG_TIMEOUT,
32+
unsupportedOSs: ["win32"],
33+
verifyDeploy: {
34+
route: "/",
35+
expectedText: "Waku",
36+
},
37+
verifyPreview: {
38+
route: "/",
39+
expectedText: "Waku",
40+
},
41+
verifyBuildCfTypes: {
42+
outputFile: "worker-configuration.d.ts",
43+
envInterfaceName: "Env",
44+
},
45+
},
2946
};
3047
}

packages/create-cloudflare/src/frameworks/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"create-react-router": "7.4.1",
1818
"create-solid": "0.6.2",
1919
"create-vue": "3.15.1",
20+
"create-waku": "0.11.3-0.22.1-0",
2021
"gatsby": "5.14.1",
2122
"sv": "0.6.23",
2223
"nuxi": "3.24.1"

packages/create-cloudflare/src/templates.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {
1919
writeJSON,
2020
} from "helpers/files";
2121
import solidTemplateExperimental from "templates-experimental/solid/c3";
22+
import wakuTemplateExperimental from "templates-experimental/waku/c3";
2223
import analogTemplate from "templates/analog/c3";
2324
import angularTemplate from "templates/angular/c3";
2425
import astroTemplate from "templates/astro/c3";
@@ -175,6 +176,7 @@ export function getFrameworkMap({ experimental = false }): TemplateMap {
175176
if (experimental) {
176177
return {
177178
solid: solidTemplateExperimental,
179+
waku: wakuTemplateExperimental,
178180
};
179181
} else {
180182
return {
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import { logRaw } from "@cloudflare/cli";
2+
import { brandColor, dim } from "@cloudflare/cli/colors";
3+
import { runFrameworkGenerator } from "frameworks/index";
4+
import { detectPackageManager } from "helpers/packageManagers";
5+
import { installPackages } from "helpers/packages";
6+
import type { TemplateConfig } from "../../src/templates";
7+
import type { C3Context } from "types";
8+
9+
const { npm } = detectPackageManager();
10+
11+
const generate = async (ctx: C3Context) => {
12+
await runFrameworkGenerator(ctx, [
13+
"--project-name",
14+
ctx.project.name,
15+
"--template",
16+
"07_cloudflare",
17+
]);
18+
19+
logRaw(""); // newline
20+
};
21+
22+
const configure = async () => {
23+
await installPackages(["wrangler@latest"], {
24+
dev: true,
25+
startText: "Updating the Wrangler version",
26+
doneText: `${brandColor(`updated`)} ${dim("wrangler@latest")}`,
27+
});
28+
};
29+
30+
const config: TemplateConfig = {
31+
configVersion: 1,
32+
id: "waku",
33+
frameworkCli: "create-waku",
34+
platform: "workers",
35+
displayName: "Waku",
36+
copyFiles: {
37+
path: "./templates",
38+
},
39+
path: "templates-experimental/waku",
40+
generate,
41+
configure,
42+
transformPackageJson: async () => ({
43+
scripts: {
44+
deploy: `${npm} run build && wrangler deploy`,
45+
preview: `${npm} run build && wrangler dev`,
46+
},
47+
}),
48+
devScript: "dev",
49+
deployScript: "deploy",
50+
previewScript: "preview",
51+
};
52+
export default config;
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { logRaw } from "@cloudflare/cli";
2+
import { runFrameworkGenerator } from "frameworks/index";
3+
import { detectPackageManager } from "helpers/packageManagers";
4+
import type { TemplateConfig } from "../../../src/templates";
5+
import type { C3Context } from "types";
6+
7+
const { npm } = detectPackageManager();
8+
9+
const generate = async (ctx: C3Context) => {
10+
await runFrameworkGenerator(ctx, [
11+
"--project-name",
12+
ctx.project.name,
13+
"--template",
14+
"07_cloudflare",
15+
]);
16+
};
17+
18+
const config: TemplateConfig = {
19+
configVersion: 1,
20+
id: "waku",
21+
frameworkCli: "create-waku",
22+
platform: "workers",
23+
displayName: "Waku",
24+
path: "templates/workers/waku",
25+
generate,
26+
transformPackageJson: async () => ({
27+
scripts: {
28+
deploy: `${npm} run build && wrangler deploy`,
29+
preview: `${npm} run build && wrangler dev`,
30+
},
31+
}),
32+
devScript: "dev",
33+
deployScript: "deploy",
34+
previewScript: "preview",
35+
};
36+
export default config;
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"name": "<TBD>",
3+
"main": "./dist/worker/serve-cloudflare.js",
4+
// https://developers.cloudflare.com/workers/platform/compatibility-dates
5+
"compatibility_date": "<TBD>",
6+
// nodejs_als is required for Waku server-side request context
7+
// It can be removed if only building static pages
8+
"compatibility_flags": ["nodejs_als"],
9+
// https://developers.cloudflare.com/workers/static-assets/binding/
10+
"assets": {
11+
"binding": "ASSETS",
12+
"directory": "./dist/assets",
13+
"html_handling": "drop-trailing-slash",
14+
"not_found_handling": "404-page"
15+
},
16+
"vars": {
17+
"MAX_ITEMS": 10
18+
}
19+
}

0 commit comments

Comments
 (0)