Skip to content

Commit 5b0bb7f

Browse files
rmarscherpenalosa
authored andcommitted
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 336a75d commit 5b0bb7f

File tree

6 files changed

+77
-0
lines changed

6 files changed

+77
-0
lines changed

.changeset/moody-hands-sort.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"create-cloudflare": patch
3+
---
4+
5+
feat(create-cloudflare): Add Waku workers template

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -625,6 +625,21 @@ function getFrameworkTestConfig(pm: string): NamedFrameworkTestConfig[] {
625625
},
626626
nodeCompat: false,
627627
},
628+
{
629+
name: "waku",
630+
testCommitMessage: true,
631+
timeout: LONG_TIMEOUT,
632+
unsupportedOSs: ["win32"],
633+
verifyDeploy: {
634+
route: "/",
635+
expectedText: "Waku",
636+
},
637+
verifyPreview: {
638+
route: "/",
639+
expectedText: "Waku",
640+
},
641+
nodeCompat: false,
642+
},
628643
];
629644
}
630645

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.8.2",
1818
"create-solid": "0.6.7",
1919
"create-vue": "3.18.0",
20+
"create-waku": "0.12.3-0.24.0-0",
2021
"gatsby": "5.14.6",
2122
"sv": "0.9.2",
2223
"nuxi": "3.28.0"

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";
@@ -206,6 +207,7 @@ export function getFrameworkMap({ experimental = false }): TemplateMap {
206207
solid: solidTemplate,
207208
svelte: svelteTemplate,
208209
vue: vueTemplate,
210+
waku: wakuTemplate,
209211
};
210212
}
211213
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import { runFrameworkGenerator } from "frameworks/index";
2+
import { detectPackageManager } from "helpers/packageManagers";
3+
import type { TemplateConfig } from "../../src/templates";
4+
import type { C3Context } from "types";
5+
6+
const { npm } = detectPackageManager();
7+
8+
const generate = async (ctx: C3Context) => {
9+
await runFrameworkGenerator(ctx, [
10+
"--project-name",
11+
ctx.project.name,
12+
"--template",
13+
"07_cloudflare",
14+
]);
15+
};
16+
17+
const config: TemplateConfig = {
18+
configVersion: 1,
19+
id: "waku",
20+
frameworkCli: "create-waku",
21+
platform: "workers",
22+
displayName: "Waku",
23+
path: "templates/waku",
24+
generate,
25+
transformPackageJson: async () => ({
26+
scripts: {
27+
deploy: `${npm} run build && wrangler deploy`,
28+
preview: `${npm} run build && wrangler dev`,
29+
},
30+
}),
31+
devScript: "dev",
32+
deployScript: "deploy",
33+
previewScript: "preview",
34+
};
35+
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)