create-cloudflare 0.0.0-d0fd494b → 0.0.0-d102b6023
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cli.js +51727 -52796
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +27 -24
- package/templates/analog/c3.ts +5 -4
- package/templates/analog/templates/wrangler.json +5 -0
- package/templates/angular/c3.ts +28 -14
- package/templates/angular/templates/src/server.ts +15 -0
- package/templates/angular/templates/tools/copy-files.mjs +8 -2
- package/templates/astro/c3.ts +20 -35
- package/templates/astro/templates/js/wrangler.json +8 -0
- package/templates/astro/templates/ts/src/env.d.ts +5 -0
- package/templates/astro/templates/ts/worker-configuration.d.ts +4 -0
- package/templates/astro/templates/ts/wrangler.json +8 -0
- package/templates/common/c3.ts +3 -0
- package/templates/common/js/package.json +1 -1
- package/templates/common/js/wrangler.json +8 -0
- package/templates/common/ts/package.json +2 -2
- package/templates/common/ts/src/ab-test.ts +2 -2
- package/templates/common/ts/src/index.ts +2 -2
- package/templates/common/ts/src/proxy.ts +2 -2
- package/templates/common/ts/src/redirect.ts +2 -2
- package/templates/common/ts/tsconfig.json +37 -95
- package/templates/common/ts/wrangler.json +8 -0
- package/templates/docusaurus/c3.ts +3 -1
- package/templates/gatsby/c3.ts +1 -0
- package/templates/hello-world/c3.ts +5 -1
- package/templates/hello-world/js/package.json +3 -3
- package/templates/hello-world/js/vitest.config.js +8 -8
- package/templates/hello-world/js/wrangler.json +8 -0
- package/templates/hello-world/py/__dot__gitignore +68 -0
- package/templates/hello-world/py/package.json +13 -0
- package/templates/hello-world/py/wrangler.json +9 -0
- package/templates/hello-world/ts/package.json +4 -4
- package/templates/hello-world/ts/src/index.ts +2 -2
- package/templates/hello-world/ts/test/tsconfig.json +6 -9
- package/templates/hello-world/ts/tsconfig.json +38 -96
- package/templates/hello-world/ts/vitest.config.mts +11 -0
- package/templates/hello-world/ts/wrangler.json +8 -0
- package/templates/hello-world-durable-object/c3.ts +3 -1
- package/templates/hello-world-durable-object/js/package.json +1 -1
- package/templates/hello-world-durable-object/js/src/index.js +1 -1
- package/templates/hello-world-durable-object/js/wrangler.json +24 -0
- package/templates/hello-world-durable-object/ts/package.json +2 -2
- package/templates/hello-world-durable-object/ts/src/index.ts +3 -24
- package/templates/hello-world-durable-object/ts/tsconfig.json +36 -95
- package/templates/hello-world-durable-object/ts/worker-configuration.d.ts +3 -4
- package/templates/hello-world-durable-object/ts/wrangler.json +24 -0
- package/templates/hono/c3.ts +1 -10
- package/templates/hono/snippets/appDeclaration.ts +1 -1
- package/templates/hono/templates/wrangler.json +8 -0
- package/templates/next/README.md +2 -2
- package/templates/next/app/js/app/api/hello/route.js +4 -4
- package/templates/next/app/ts/app/api/hello/route.ts +4 -5
- package/templates/next/c3.ts +20 -18
- package/templates/next/wrangler.json +8 -0
- package/templates/nuxt/c3.ts +10 -10
- package/templates/nuxt/templates/wrangler.json +8 -0
- package/templates/openapi/c3.ts +1 -0
- package/templates/openapi/ts/README.md +3 -3
- package/templates/openapi/ts/package.json +5 -3
- package/templates/openapi/ts/src/endpoints/taskCreate.ts +26 -16
- package/templates/openapi/ts/src/endpoints/taskDelete.ts +20 -19
- package/templates/openapi/ts/src/endpoints/taskFetch.ts +30 -23
- package/templates/openapi/ts/src/endpoints/taskList.ts +27 -24
- package/templates/openapi/ts/src/index.ts +14 -20
- package/templates/openapi/ts/src/types.ts +9 -8
- package/templates/openapi/ts/wrangler.json +8 -0
- package/templates/pre-existing/c3.ts +33 -14
- package/templates/pre-existing/js/package.json +1 -1
- package/templates/pre-existing/js/wrangler.json +5 -0
- package/templates/queues/c3.ts +2 -0
- package/templates/queues/js/package.json +1 -1
- package/templates/queues/js/wrangler.json +21 -0
- package/templates/queues/ts/package.json +2 -2
- package/templates/queues/ts/src/index.ts +3 -3
- package/templates/queues/ts/tsconfig.json +36 -95
- package/templates/queues/ts/wrangler.json +21 -0
- package/templates/qwik/c3.ts +7 -6
- package/templates/qwik/templates/wrangler.json +8 -0
- package/templates/react/c3.ts +33 -3
- package/templates/remix/c3.ts +1 -0
- package/templates/remix/templates/wrangler.json +5 -0
- package/templates/scheduled/c3.ts +2 -0
- package/templates/scheduled/js/package.json +3 -3
- package/templates/scheduled/js/src/index.js +8 -1
- package/templates/scheduled/js/wrangler.json +13 -0
- package/templates/scheduled/ts/package.json +4 -4
- package/templates/scheduled/ts/src/index.ts +3 -3
- package/templates/scheduled/ts/tsconfig.json +36 -95
- package/templates/scheduled/ts/wrangler.json +13 -0
- package/templates/solid/c3.ts +13 -10
- package/templates/solid/templates/wrangler.json +8 -0
- package/templates/svelte/c3.ts +40 -12
- package/templates/svelte/templates/wrangler.json +5 -0
- package/templates/vue/c3.ts +1 -0
- package/templates-experimental/angular/c3.ts +112 -0
- package/templates-experimental/angular/templates/src/server.ts +15 -0
- package/templates-experimental/angular/templates/wrangler.json +12 -0
- package/templates-experimental/astro/c3.ts +98 -0
- package/templates-experimental/astro/templates/js/public/.assetsignore +4 -0
- package/templates-experimental/astro/templates/js/wrangler.json +15 -0
- package/templates-experimental/astro/templates/ts/public/.assetsignore +4 -0
- package/templates-experimental/astro/templates/ts/worker-configuration.d.ts +4 -0
- package/templates-experimental/astro/templates/ts/wrangler.json +15 -0
- package/templates-experimental/docusaurus/c3.ts +32 -0
- package/templates-experimental/docusaurus/templates/wrangler.json +10 -0
- package/templates-experimental/gatsby/c3.ts +53 -0
- package/templates-experimental/gatsby/templates/wrangler.json +10 -0
- package/templates-experimental/hello-world-assets-only/c3.ts +15 -0
- package/{templates/hello-world-python/py → templates-experimental/hello-world-assets-only/templates}/package.json +1 -1
- package/templates-experimental/hello-world-assets-only/templates/public/index.html +11 -0
- package/templates-experimental/hello-world-assets-only/templates/wrangler.json +10 -0
- package/templates-experimental/hello-world-durable-object-with-assets/c3.ts +23 -0
- package/templates-experimental/hello-world-durable-object-with-assets/js/.editorconfig +12 -0
- package/templates-experimental/hello-world-durable-object-with-assets/js/.prettierrc +6 -0
- package/templates-experimental/hello-world-durable-object-with-assets/js/__dot__gitignore +172 -0
- package/templates-experimental/hello-world-durable-object-with-assets/js/package.json +13 -0
- package/templates-experimental/hello-world-durable-object-with-assets/js/public/index.html +19 -0
- package/templates-experimental/hello-world-durable-object-with-assets/js/src/index.js +69 -0
- package/templates-experimental/hello-world-durable-object-with-assets/js/wrangler.json +28 -0
- package/templates-experimental/hello-world-durable-object-with-assets/ts/.editorconfig +12 -0
- package/templates-experimental/hello-world-durable-object-with-assets/ts/.prettierrc +6 -0
- package/templates-experimental/hello-world-durable-object-with-assets/ts/__dot__gitignore +172 -0
- package/templates-experimental/hello-world-durable-object-with-assets/ts/package.json +15 -0
- package/templates-experimental/hello-world-durable-object-with-assets/ts/public/index.html +19 -0
- package/templates-experimental/hello-world-durable-object-with-assets/ts/src/index.ts +66 -0
- package/templates-experimental/hello-world-durable-object-with-assets/ts/tsconfig.json +42 -0
- package/templates-experimental/hello-world-durable-object-with-assets/ts/worker-configuration.d.ts +5 -0
- package/templates-experimental/hello-world-durable-object-with-assets/ts/wrangler.json +28 -0
- package/templates-experimental/hello-world-with-assets/c3.ts +22 -0
- package/templates-experimental/hello-world-with-assets/js/.editorconfig +12 -0
- package/templates-experimental/hello-world-with-assets/js/.prettierrc +6 -0
- package/templates-experimental/hello-world-with-assets/js/__dot__gitignore +172 -0
- package/templates-experimental/hello-world-with-assets/js/package.json +16 -0
- package/templates-experimental/hello-world-with-assets/js/public/index.html +31 -0
- package/templates-experimental/hello-world-with-assets/js/src/index.js +23 -0
- package/templates-experimental/hello-world-with-assets/js/test/index.spec.js +41 -0
- package/templates-experimental/hello-world-with-assets/js/vitest.config.js +11 -0
- package/templates-experimental/hello-world-with-assets/js/wrangler.json +15 -0
- package/templates-experimental/hello-world-with-assets/py/package.json +13 -0
- package/templates-experimental/hello-world-with-assets/py/public/index.html +31 -0
- package/templates-experimental/hello-world-with-assets/py/src/entry.py +9 -0
- package/templates-experimental/hello-world-with-assets/py/wrangler.json +15 -0
- package/templates-experimental/hello-world-with-assets/ts/.editorconfig +12 -0
- package/templates-experimental/hello-world-with-assets/ts/.prettierrc +6 -0
- package/templates-experimental/hello-world-with-assets/ts/__dot__gitignore +172 -0
- package/templates-experimental/hello-world-with-assets/ts/package.json +18 -0
- package/templates-experimental/hello-world-with-assets/ts/public/index.html +31 -0
- package/templates-experimental/hello-world-with-assets/ts/src/index.ts +26 -0
- package/templates-experimental/hello-world-with-assets/ts/test/index.spec.ts +41 -0
- package/templates-experimental/hello-world-with-assets/ts/test/tsconfig.json +8 -0
- package/templates-experimental/hello-world-with-assets/ts/tsconfig.json +44 -0
- package/templates-experimental/hello-world-with-assets/ts/vitest.config.mts +11 -0
- package/templates-experimental/hello-world-with-assets/ts/worker-configuration.d.ts +4 -0
- package/templates-experimental/hello-world-with-assets/ts/wrangler.json +15 -0
- package/templates-experimental/hono/c3.ts +43 -0
- package/templates-experimental/hono/templates/public/index.html +19 -0
- package/templates-experimental/hono/templates/src/index.ts +9 -0
- package/templates-experimental/hono/templates/worker-configuration.d.ts +4 -0
- package/templates-experimental/hono/templates/wrangler.json +9 -0
- package/templates-experimental/next/c3.ts +59 -0
- package/templates-experimental/next/templates/.dev.vars +2 -0
- package/templates-experimental/next/templates/__dot__gitignore +39 -0
- package/templates-experimental/next/templates/env.d.ts +5 -0
- package/templates-experimental/next/templates/open-next.config.ts +28 -0
- package/templates-experimental/next/templates/wrangler.json +13 -0
- package/templates-experimental/nuxt/c3.ts +135 -0
- package/templates-experimental/nuxt/templates/env.d.ts +14 -0
- package/templates-experimental/nuxt/templates/worker-configuration.d.ts +4 -0
- package/templates-experimental/nuxt/templates/wrangler.json +12 -0
- package/templates-experimental/qwik/c3.ts +153 -0
- package/templates-experimental/qwik/snippets/getPlatformProxy.ts +6 -0
- package/templates-experimental/qwik/templates/public/.assetsignore +4 -0
- package/templates-experimental/qwik/templates/worker-configuration.d.ts +4 -0
- package/templates-experimental/qwik/templates/wrangler.json +15 -0
- package/templates-experimental/remix/c3.ts +52 -0
- package/templates-experimental/remix/templates/public/.assetsignore +0 -0
- package/templates-experimental/remix/templates/worker-configuration.d.ts +4 -0
- package/templates-experimental/remix/templates/wrangler.toml +11 -0
- package/templates-experimental/solid/c3.ts +94 -0
- package/templates-experimental/solid/templates/wrangler.json +15 -0
- package/templates-experimental/svelte/c3.ts +129 -0
- package/templates-experimental/svelte/templates/static/.assetsignore +4 -0
- package/templates-experimental/svelte/templates/wrangler.json +12 -0
- package/templates-experimental/vue/c3.ts +33 -0
- package/templates-experimental/vue/templates/wrangler.json +10 -0
- package/templates/analog/templates/wrangler.toml +0 -85
- package/templates/angular/templates/server.ts +0 -34
- package/templates/angular/templates/tools/alter-polyfills.mjs +0 -27
- package/templates/angular/templates/tools/paths.mjs +0 -9
- package/templates/astro/templates/wrangler.toml +0 -85
- package/templates/common/js/wrangler.toml +0 -107
- package/templates/common/ts/wrangler.toml +0 -107
- package/templates/hello-world/js/wrangler.toml +0 -108
- package/templates/hello-world/ts/vitest.config.ts +0 -11
- package/templates/hello-world/ts/wrangler.toml +0 -108
- package/templates/hello-world-durable-object/js/wrangler.toml +0 -107
- package/templates/hello-world-durable-object/ts/wrangler.toml +0 -107
- package/templates/hello-world-python/c3.ts +0 -9
- package/templates/hello-world-python/py/wrangler.toml +0 -108
- package/templates/hono/snippets/bindingsType.ts +0 -3
- package/templates/hono/templates/wrangler.toml +0 -107
- package/templates/next/wrangler.toml +0 -86
- package/templates/nuxt/templates/wrangler.toml +0 -85
- package/templates/openapi/ts/wrangler.toml +0 -107
- package/templates/pre-existing/js/wrangler.toml +0 -4
- package/templates/queues/js/wrangler.toml +0 -112
- package/templates/queues/ts/wrangler.toml +0 -112
- package/templates/qwik/templates/wrangler.toml +0 -85
- package/templates/remix/templates/wrangler.toml +0 -85
- package/templates/scheduled/js/wrangler.toml +0 -113
- package/templates/scheduled/ts/wrangler.toml +0 -113
- package/templates/solid/templates/wrangler.toml +0 -84
- package/templates/svelte/js/wrangler.toml +0 -85
- package/templates/svelte/ts/wrangler.toml +0 -85
- /package/templates/{hello-world-python → hello-world}/py/src/entry.py +0 -0
- /package/{templates/astro/snippets/runtimeDeclaration.ts → templates-experimental/astro/templates/ts/src/env.d.ts} +0 -0
- /package/{templates/hello-world-python → templates-experimental/hello-world-with-assets}/py/__dot__gitignore +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-cloudflare",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-d102b6023",
|
|
4
4
|
"description": "A CLI for creating and deploying new applications to Cloudflare.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cloudflare",
|
|
@@ -23,14 +23,14 @@
|
|
|
23
23
|
"bin": "./dist/cli.js",
|
|
24
24
|
"files": [
|
|
25
25
|
"dist",
|
|
26
|
-
"templates"
|
|
26
|
+
"templates",
|
|
27
|
+
"templates-experimental"
|
|
27
28
|
],
|
|
28
29
|
"devDependencies": {
|
|
29
30
|
"@babel/parser": "^7.21.3",
|
|
30
31
|
"@babel/types": "^7.21.4",
|
|
31
32
|
"@clack/prompts": "^0.6.3",
|
|
32
|
-
"@cloudflare/
|
|
33
|
-
"@cloudflare/workers-types": "^4.20240512.0",
|
|
33
|
+
"@cloudflare/workers-types": "^4.20241230.0",
|
|
34
34
|
"@iarna/toml": "^3.0.0",
|
|
35
35
|
"@types/command-exists": "^1.2.0",
|
|
36
36
|
"@types/cross-spawn": "^6.0.2",
|
|
@@ -38,12 +38,12 @@
|
|
|
38
38
|
"@types/degit": "^2.8.6",
|
|
39
39
|
"@types/dns2": "^2.0.3",
|
|
40
40
|
"@types/esprima": "^4.0.3",
|
|
41
|
-
"@types/node": "^18.
|
|
41
|
+
"@types/node": "^18.19.59",
|
|
42
42
|
"@types/semver": "^7.5.1",
|
|
43
43
|
"@types/which-pm-runs": "^1.0.0",
|
|
44
44
|
"@types/yargs": "^17.0.22",
|
|
45
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
46
|
-
"@typescript-eslint/parser": "^
|
|
45
|
+
"@typescript-eslint/eslint-plugin": "^6.9.0",
|
|
46
|
+
"@typescript-eslint/parser": "^6.9.0",
|
|
47
47
|
"chalk": "^5.2.0",
|
|
48
48
|
"command-exists": "^1.2.9",
|
|
49
49
|
"cross-spawn": "^7.0.3",
|
|
@@ -51,46 +51,49 @@
|
|
|
51
51
|
"degit": "^2.8.4",
|
|
52
52
|
"dns2": "^2.1.0",
|
|
53
53
|
"dotenv": "^16.0.0",
|
|
54
|
-
"esbuild": "
|
|
54
|
+
"esbuild": "0.17.19",
|
|
55
55
|
"execa": "^7.1.1",
|
|
56
56
|
"glob": "^10.3.3",
|
|
57
57
|
"haikunator": "^2.1.2",
|
|
58
58
|
"indent-string": "^5.0.0",
|
|
59
59
|
"magic-string": "^0.30.5",
|
|
60
60
|
"open": "^8.4.0",
|
|
61
|
-
"pnpm": "^8.10.0",
|
|
62
61
|
"recast": "^0.22.0",
|
|
63
62
|
"semver": "^7.5.1",
|
|
64
|
-
"
|
|
65
|
-
"undici": "5.28.3",
|
|
63
|
+
"undici": "^5.28.4",
|
|
66
64
|
"vite-tsconfig-paths": "^4.0.8",
|
|
67
65
|
"which-pm-runs": "^1.1.0",
|
|
68
66
|
"wrap-ansi": "^9.0.0",
|
|
69
|
-
"
|
|
70
|
-
"
|
|
67
|
+
"xdg-app-paths": "^8.3.0",
|
|
68
|
+
"yargs": "^17.7.2",
|
|
71
69
|
"@cloudflare/cli": "1.1.1",
|
|
72
70
|
"@cloudflare/workers-tsconfig": "0.0.0",
|
|
73
|
-
"
|
|
71
|
+
"@cloudflare/eslint-config-worker": "1.1.0",
|
|
72
|
+
"wrangler": "0.0.0-d102b6023"
|
|
74
73
|
},
|
|
75
74
|
"engines": {
|
|
76
75
|
"node": ">=18.14.1"
|
|
77
76
|
},
|
|
78
77
|
"workers-sdk": {
|
|
79
|
-
"prerelease": true
|
|
78
|
+
"prerelease": true,
|
|
79
|
+
"type": "cli"
|
|
80
|
+
},
|
|
81
|
+
"volta": {
|
|
82
|
+
"extends": "../../package.json"
|
|
80
83
|
},
|
|
81
84
|
"scripts": {
|
|
82
85
|
"build": "node -r esbuild-register scripts/build.ts",
|
|
83
86
|
"dev:codemod": "node -r esbuild-register scripts/codemodDev.ts",
|
|
84
|
-
"check:lint": "eslint .",
|
|
87
|
+
"check:lint": "eslint . --max-warnings=0",
|
|
85
88
|
"check:type": "tsc",
|
|
86
|
-
"
|
|
87
|
-
"test:e2e:npm": "pnpm run build && cross-env TEST_PM=npm vitest run --config ./vitest-e2e.config.
|
|
88
|
-
"test:e2e:pnpm": "pnpm run build && cross-env TEST_PM=pnpm vitest run --config ./vitest-e2e.config.
|
|
89
|
-
"test:e2e:bun": "pnpm run build && cross-env TEST_PM=bun vitest run --config ./vitest-e2e.config.
|
|
90
|
-
"test:e2e:yarn": "pnpm run build && cross-env TEST_PM=yarn vitest run --config ./vitest-e2e.config.
|
|
91
|
-
"test:unit": "vitest run --config ./vitest.config.
|
|
92
|
-
"test:unit:watch": "vitest --config ./vitest.config.
|
|
89
|
+
"test:e2e": "vitest run --config ./vitest-e2e.config.mts",
|
|
90
|
+
"test:e2e:npm": "pnpm run build && cross-env TEST_PM=npm vitest run --config ./vitest-e2e.config.mts",
|
|
91
|
+
"test:e2e:pnpm": "pnpm run build && cross-env TEST_PM=pnpm vitest run --config ./vitest-e2e.config.mts",
|
|
92
|
+
"test:e2e:bun": "pnpm run build && cross-env TEST_PM=bun vitest run --config ./vitest-e2e.config.mts",
|
|
93
|
+
"test:e2e:yarn": "pnpm run build && cross-env TEST_PM=yarn vitest run --config ./vitest-e2e.config.mts",
|
|
94
|
+
"test:unit": "vitest run --config ./vitest.config.mts",
|
|
95
|
+
"test:unit:watch": "vitest --config ./vitest.config.mts",
|
|
93
96
|
"watch": "node -r esbuild-register scripts/build.ts --watch",
|
|
94
|
-
"test:ci": "vitest run --config ./vitest.config.
|
|
97
|
+
"test:ci": "vitest run --config ./vitest.config.mts"
|
|
95
98
|
}
|
|
96
99
|
}
|
package/templates/analog/c3.ts
CHANGED
|
@@ -76,7 +76,7 @@ const updateViteConfig = (ctx: C3Context) => {
|
|
|
76
76
|
transformFile(configFile, {
|
|
77
77
|
visitProgram(n) {
|
|
78
78
|
const lastImportIndex = n.node.body.findLastIndex(
|
|
79
|
-
(t) => t.type === "ImportDeclaration"
|
|
79
|
+
(t) => t.type === "ImportDeclaration",
|
|
80
80
|
);
|
|
81
81
|
const lastImport = n.get("body", lastImportIndex);
|
|
82
82
|
lastImport.insertAfter(...snippets.devBindingsModuleTs);
|
|
@@ -91,13 +91,13 @@ const updateViteConfig = (ctx: C3Context) => {
|
|
|
91
91
|
b.objectExpression([
|
|
92
92
|
b.objectProperty(
|
|
93
93
|
b.identifier("preset"),
|
|
94
|
-
b.stringLiteral("cloudflare-pages")
|
|
94
|
+
b.stringLiteral("cloudflare-pages"),
|
|
95
95
|
),
|
|
96
96
|
b.objectProperty(
|
|
97
97
|
b.identifier("modules"),
|
|
98
|
-
b.arrayExpression([b.identifier("devBindingsModule")])
|
|
98
|
+
b.arrayExpression([b.identifier("devBindingsModule")]),
|
|
99
99
|
),
|
|
100
|
-
])
|
|
100
|
+
]),
|
|
101
101
|
);
|
|
102
102
|
|
|
103
103
|
n.node.arguments = [b.objectExpression([pluginArguments])];
|
|
@@ -113,6 +113,7 @@ const updateViteConfig = (ctx: C3Context) => {
|
|
|
113
113
|
const config: TemplateConfig = {
|
|
114
114
|
configVersion: 1,
|
|
115
115
|
id: "analog",
|
|
116
|
+
frameworkCli: "create-analog",
|
|
116
117
|
platform: "pages",
|
|
117
118
|
displayName: "Analog",
|
|
118
119
|
copyFiles: {
|
package/templates/angular/c3.ts
CHANGED
|
@@ -13,7 +13,11 @@ import type { C3Context } from "types";
|
|
|
13
13
|
const { npm } = detectPackageManager();
|
|
14
14
|
|
|
15
15
|
const generate = async (ctx: C3Context) => {
|
|
16
|
-
await runFrameworkGenerator(ctx, [
|
|
16
|
+
await runFrameworkGenerator(ctx, [
|
|
17
|
+
ctx.project.name,
|
|
18
|
+
"--ssr",
|
|
19
|
+
"--server-routing" /** Dev Preview API */,
|
|
20
|
+
]);
|
|
17
21
|
logRaw("");
|
|
18
22
|
};
|
|
19
23
|
|
|
@@ -24,14 +28,11 @@ const configure = async (ctx: C3Context) => {
|
|
|
24
28
|
};
|
|
25
29
|
|
|
26
30
|
async function installCFWorker() {
|
|
27
|
-
await installPackages(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
doneText: `${brandColor("installed")} ${dim(`via \`${npm} install\``)}`,
|
|
33
|
-
}
|
|
34
|
-
);
|
|
31
|
+
await installPackages(["xhr2"], {
|
|
32
|
+
dev: true,
|
|
33
|
+
startText: "Installing additional dependencies",
|
|
34
|
+
doneText: `${brandColor("installed")} ${dim(`via \`${npm} install\``)}`,
|
|
35
|
+
});
|
|
35
36
|
}
|
|
36
37
|
async function updateAppCode() {
|
|
37
38
|
const s = spinner();
|
|
@@ -45,18 +46,28 @@ async function updateAppCode() {
|
|
|
45
46
|
"import { provideHttpClient, withFetch } from '@angular/common/http';\n" +
|
|
46
47
|
appConfig.replace(
|
|
47
48
|
"providers: [",
|
|
48
|
-
"providers: [provideHttpClient(withFetch()), "
|
|
49
|
+
"providers: [provideHttpClient(withFetch()), ",
|
|
49
50
|
);
|
|
50
51
|
writeFile(resolve(appConfigPath), newAppConfig);
|
|
51
52
|
s.stop(`${brandColor(`updated`)} ${dim(appConfigPath)}`);
|
|
52
53
|
|
|
54
|
+
// Update an app server routes file to:
|
|
55
|
+
const appServerRoutesPath = "src/app/app.routes.server.ts";
|
|
56
|
+
const appRoutes = readFile(resolve(appServerRoutesPath));
|
|
57
|
+
const newAppRoutes = appRoutes.replace(
|
|
58
|
+
"RenderMode.Prerender",
|
|
59
|
+
"RenderMode.Server",
|
|
60
|
+
);
|
|
61
|
+
writeFile(resolve(appServerRoutesPath), newAppRoutes);
|
|
62
|
+
s.stop(`${brandColor(`updated`)} ${dim(appServerRoutesPath)}`);
|
|
63
|
+
|
|
53
64
|
// Remove unwanted dependencies
|
|
54
65
|
s.start(`Updating package.json`);
|
|
55
66
|
const packageJsonPath = resolve("package.json");
|
|
56
67
|
const packageManifest = readJSON(packageJsonPath);
|
|
57
68
|
|
|
58
|
-
delete packageManifest["dependencies"]["@angular/ssr"];
|
|
59
69
|
delete packageManifest["dependencies"]["express"];
|
|
70
|
+
delete packageManifest["devDependencies"]["@types/express"];
|
|
60
71
|
|
|
61
72
|
writeFile(packageJsonPath, JSON.stringify(packageManifest, null, 2));
|
|
62
73
|
s.stop(`${brandColor(`updated`)} ${dim(`\`package.json\``)}`);
|
|
@@ -69,6 +80,8 @@ function updateAngularJson(ctx: C3Context) {
|
|
|
69
80
|
// Update builder
|
|
70
81
|
const architectSection = angularJson.projects[ctx.project.name].architect;
|
|
71
82
|
architectSection.build.options.outputPath = "dist";
|
|
83
|
+
architectSection.build.options.outputMode = "server";
|
|
84
|
+
architectSection.build.options.ssr.experimentalPlatform = "neutral";
|
|
72
85
|
architectSection.build.options.assets.push("src/_routes.json");
|
|
73
86
|
|
|
74
87
|
writeFile(resolve("angular.json"), JSON.stringify(angularJson, null, 2));
|
|
@@ -78,6 +91,7 @@ function updateAngularJson(ctx: C3Context) {
|
|
|
78
91
|
const config: TemplateConfig = {
|
|
79
92
|
configVersion: 1,
|
|
80
93
|
id: "angular",
|
|
94
|
+
frameworkCli: "@angular/create",
|
|
81
95
|
displayName: "Angular",
|
|
82
96
|
platform: "pages",
|
|
83
97
|
copyFiles: {
|
|
@@ -85,14 +99,14 @@ const config: TemplateConfig = {
|
|
|
85
99
|
},
|
|
86
100
|
devScript: "start",
|
|
87
101
|
deployScript: "deploy",
|
|
102
|
+
previewScript: "start",
|
|
88
103
|
generate,
|
|
89
104
|
configure,
|
|
90
105
|
transformPackageJson: async () => ({
|
|
91
106
|
scripts: {
|
|
92
|
-
start: `${npm} run build && wrangler pages dev dist/cloudflare ${await compatDateFlag()}
|
|
107
|
+
start: `${npm} run build && wrangler pages dev dist/cloudflare ${await compatDateFlag()}`,
|
|
93
108
|
build: `ng build && ${npm} run process`,
|
|
94
|
-
process:
|
|
95
|
-
"node ./tools/copy-files.mjs && node ./tools/alter-polyfills.mjs",
|
|
109
|
+
process: "node ./tools/copy-files.mjs",
|
|
96
110
|
deploy: `${npm} run build && wrangler pages deploy dist/cloudflare`,
|
|
97
111
|
},
|
|
98
112
|
}),
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AngularAppEngine, createRequestHandler } from '@angular/ssr';
|
|
2
|
+
|
|
3
|
+
const angularApp = new AngularAppEngine();
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* This is a request handler used by the Angular CLI (dev-server and during build).
|
|
7
|
+
*/
|
|
8
|
+
export const reqHandler = createRequestHandler(async (req) => {
|
|
9
|
+
const res = await angularApp.handle(req);
|
|
10
|
+
|
|
11
|
+
return res ?? new Response('Page not found.', { status: 404 });
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
export default { fetch: reqHandler };
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
// Copy the files over so that they can be uploaded by the pages publish command.
|
|
2
2
|
import fs from "node:fs";
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
-
import {
|
|
3
|
+
import { join, resolve } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
|
|
6
|
+
const root = resolve(fileURLToPath(import.meta.url), "../../");
|
|
7
|
+
const client = resolve(root, "dist/browser");
|
|
8
|
+
const ssr = resolve(root, "dist/server");
|
|
9
|
+
const cloudflare = resolve(root, "dist/cloudflare");
|
|
10
|
+
const worker = resolve(cloudflare, "_worker.js");
|
|
5
11
|
|
|
6
12
|
fs.cpSync(client, cloudflare, { recursive: true });
|
|
7
13
|
fs.cpSync(ssr, worker, { recursive: true });
|
package/templates/astro/c3.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { logRaw, updateStatus } from "@cloudflare/cli";
|
|
2
2
|
import { blue, brandColor, dim } from "@cloudflare/cli/colors";
|
|
3
3
|
import { runFrameworkGenerator } from "frameworks/index";
|
|
4
|
-
import {
|
|
4
|
+
import { transformFile } from "helpers/codemod";
|
|
5
5
|
import { runCommand } from "helpers/command";
|
|
6
6
|
import { usesTypescript } from "helpers/files";
|
|
7
7
|
import { detectPackageManager } from "helpers/packageManagers";
|
|
@@ -17,17 +17,16 @@ const generate = async (ctx: C3Context) => {
|
|
|
17
17
|
logRaw(""); // newline
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
const configure = async (
|
|
20
|
+
const configure = async () => {
|
|
21
21
|
await runCommand([npx, "astro", "add", "cloudflare", "-y"], {
|
|
22
22
|
silent: true,
|
|
23
23
|
startText: "Installing adapter",
|
|
24
24
|
doneText: `${brandColor("installed")} ${dim(
|
|
25
|
-
`via \`${npx} astro add cloudflare
|
|
25
|
+
`via \`${npx} astro add cloudflare\``,
|
|
26
26
|
)}`,
|
|
27
27
|
});
|
|
28
28
|
|
|
29
29
|
updateAstroConfig();
|
|
30
|
-
updateEnvDeclaration(ctx);
|
|
31
30
|
};
|
|
32
31
|
|
|
33
32
|
const updateAstroConfig = () => {
|
|
@@ -49,7 +48,7 @@ const updateAstroConfig = () => {
|
|
|
49
48
|
b.identifier("platformProxy"),
|
|
50
49
|
b.objectExpression([
|
|
51
50
|
b.objectProperty(b.identifier("enabled"), b.booleanLiteral(true)),
|
|
52
|
-
])
|
|
51
|
+
]),
|
|
53
52
|
),
|
|
54
53
|
]),
|
|
55
54
|
];
|
|
@@ -59,42 +58,28 @@ const updateAstroConfig = () => {
|
|
|
59
58
|
});
|
|
60
59
|
};
|
|
61
60
|
|
|
62
|
-
const updateEnvDeclaration = (ctx: C3Context) => {
|
|
63
|
-
if (!usesTypescript(ctx)) {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
const filePath = "src/env.d.ts";
|
|
68
|
-
|
|
69
|
-
updateStatus(`Adding type declarations in ${blue(filePath)}`);
|
|
70
|
-
|
|
71
|
-
transformFile(filePath, {
|
|
72
|
-
visitProgram: function (n) {
|
|
73
|
-
const snippets = loadTemplateSnippets(ctx);
|
|
74
|
-
const patch = snippets.runtimeDeclarationTs;
|
|
75
|
-
const b = recast.types.builders;
|
|
76
|
-
|
|
77
|
-
// Preserve comments with the new body
|
|
78
|
-
const comments = n.get("comments").value;
|
|
79
|
-
n.node.comments = comments.map((c: recast.types.namedTypes.CommentLine) =>
|
|
80
|
-
b.commentLine(c.value)
|
|
81
|
-
);
|
|
82
|
-
|
|
83
|
-
// Add the patch
|
|
84
|
-
n.get("body").push(...patch);
|
|
85
|
-
|
|
86
|
-
return false;
|
|
87
|
-
},
|
|
88
|
-
});
|
|
89
|
-
};
|
|
90
|
-
|
|
91
61
|
const config: TemplateConfig = {
|
|
92
62
|
configVersion: 1,
|
|
93
63
|
id: "astro",
|
|
64
|
+
frameworkCli: "create-astro",
|
|
94
65
|
platform: "pages",
|
|
95
66
|
displayName: "Astro",
|
|
96
67
|
copyFiles: {
|
|
97
|
-
|
|
68
|
+
async selectVariant(ctx) {
|
|
69
|
+
// Note: this `selectVariant` function should not be needed
|
|
70
|
+
// this is just a quick workaround until
|
|
71
|
+
// https://github.com/cloudflare/workers-sdk/issues/7495
|
|
72
|
+
// is resolved
|
|
73
|
+
return usesTypescript(ctx) ? "ts" : "js";
|
|
74
|
+
},
|
|
75
|
+
variants: {
|
|
76
|
+
js: {
|
|
77
|
+
path: "./templates/js",
|
|
78
|
+
},
|
|
79
|
+
ts: {
|
|
80
|
+
path: "./templates/ts",
|
|
81
|
+
},
|
|
82
|
+
},
|
|
98
83
|
},
|
|
99
84
|
devScript: "dev",
|
|
100
85
|
deployScript: "deploy",
|
package/templates/common/c3.ts
CHANGED
|
@@ -6,7 +6,7 @@ const EXPERIMENTS = [
|
|
|
6
6
|
];
|
|
7
7
|
|
|
8
8
|
export default {
|
|
9
|
-
async fetch(request
|
|
9
|
+
async fetch(request, env, ctx): Promise<Response> {
|
|
10
10
|
const fingerprint = [request.headers.get('cf-connecting-ip'), request.cf?.postalCode]; // add any values you want considered as a fingerprint
|
|
11
11
|
const activeExperiments = await getActiveExperiments(fingerprint, EXPERIMENTS);
|
|
12
12
|
|
|
@@ -22,7 +22,7 @@ export default {
|
|
|
22
22
|
|
|
23
23
|
return rewriter.transform(res);
|
|
24
24
|
},
|
|
25
|
-
}
|
|
25
|
+
} satisfies ExportedHandler<Env>;
|
|
26
26
|
|
|
27
27
|
// Get active experiments by hashing a fingerprint
|
|
28
28
|
async function getActiveExperiments(fingerprint: unknown, experiments: Array<{ name: string; threshold: number }>) {
|
|
@@ -19,7 +19,7 @@ import apiRouter from './router';
|
|
|
19
19
|
export default {
|
|
20
20
|
// The fetch handler is invoked when this worker receives a HTTP(S) request
|
|
21
21
|
// and should return a Response (optionally wrapped in a Promise)
|
|
22
|
-
async fetch(request
|
|
22
|
+
async fetch(request, env, ctx): Promise<Response> {
|
|
23
23
|
// You'll find it helpful to parse the request.url string into a URL object. Learn more at https://developer.mozilla.org/en-US/docs/Web/API/URL
|
|
24
24
|
const url = new URL(request.url);
|
|
25
25
|
|
|
@@ -46,4 +46,4 @@ export default {
|
|
|
46
46
|
{ headers: { 'Content-Type': 'text/html' } }
|
|
47
47
|
);
|
|
48
48
|
},
|
|
49
|
-
}
|
|
49
|
+
} satisfies ExportedHandler<Env>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export default {
|
|
2
|
-
async fetch(request
|
|
2
|
+
async fetch(request, env, ctx): Promise<Response> {
|
|
3
3
|
const url = new URL(request.url);
|
|
4
4
|
|
|
5
5
|
const proxyUrl = url.searchParams.get('proxyUrl'); // get a query param value (?proxyUrl=...)
|
|
@@ -20,4 +20,4 @@ export default {
|
|
|
20
20
|
|
|
21
21
|
return res;
|
|
22
22
|
},
|
|
23
|
-
}
|
|
23
|
+
} satisfies ExportedHandler<Env>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export default {
|
|
2
|
-
async fetch(request
|
|
2
|
+
async fetch(request, env, ctx): Promise<Response> {
|
|
3
3
|
const url = new URL(request.url);
|
|
4
4
|
const redirectUrl = url.searchParams.get('redirectUrl'); // get a query param value (?redirectUrl=...)
|
|
5
5
|
|
|
@@ -10,4 +10,4 @@ export default {
|
|
|
10
10
|
// The Response class has static methods to create common Response objects as a convenience
|
|
11
11
|
return Response.redirect(redirectUrl);
|
|
12
12
|
},
|
|
13
|
-
}
|
|
13
|
+
} satisfies ExportedHandler<Env>;
|