Skip to content

Commit d3cb44a

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 d3cb44a

File tree

5 files changed

+75
-0
lines changed

5 files changed

+75
-0
lines changed

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -659,5 +659,22 @@ export default function getFrameworkTestConfig(pm: string) {
659659
expectedText: "Vite App",
660660
},
661661
},
662+
waku: {
663+
testCommitMessage: true,
664+
timeout: LONG_TIMEOUT,
665+
unsupportedOSs: ["win32"],
666+
verifyDeploy: {
667+
route: "/",
668+
expectedText: "Waku",
669+
},
670+
verifyPreview: {
671+
route: "/",
672+
expectedText: "Waku",
673+
},
674+
verifyBuildCfTypes: {
675+
outputFile: "worker-configuration.d.ts",
676+
envInterfaceName: "Env",
677+
},
678+
},
662679
};
663680
}

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
@@ -44,6 +44,7 @@ import scheduledTemplate from "templates/scheduled/c3";
4444
import solidTemplate from "templates/solid/c3";
4545
import svelteTemplate from "templates/svelte/c3";
4646
import vueTemplate from "templates/vue/c3";
47+
import wakuTemplate from "templates/waku/c3";
4748
import { isInsideGitRepo } from "./git";
4849
import { validateProjectDirectory, validateTemplateUrl } from "./validators";
4950
import type { Option } from "@cloudflare/cli/interactive";
@@ -193,6 +194,7 @@ export function getFrameworkMap({ experimental = false }): TemplateMap {
193194
solid: solidTemplate,
194195
svelte: svelteTemplate,
195196
vue: vueTemplate,
197+
waku: wakuTemplate,
196198
};
197199
}
198200
}
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)