create-cloudflare 0.0.0-cf4f47a8a → 0.0.0-cfa525dba

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.
Files changed (143) hide show
  1. package/dist/cli.js +39825 -38192
  2. package/dist/tsconfig.tsbuildinfo +1 -1
  3. package/package.json +14 -11
  4. package/templates/analog/templates/worker-configuration.d.ts +1 -1
  5. package/templates/angular/c3.ts +5 -110
  6. package/templates/angular/pages/c3.ts +134 -0
  7. package/{templates-experimental/angular → templates/angular/workers}/c3.ts +25 -7
  8. package/templates/astro/templates/ts/worker-configuration.d.ts +1 -1
  9. package/templates/common/ts/src/index.ts +1 -1
  10. package/templates/common/ts/worker-configuration.d.ts +1 -1
  11. package/templates/docusaurus/c3.ts +5 -24
  12. package/templates/docusaurus/pages/c3.ts +30 -0
  13. package/{templates-experimental/docusaurus → templates/docusaurus/workers}/c3.ts +3 -2
  14. package/templates/gatsby/c3.ts +5 -45
  15. package/templates/gatsby/pages/c3.ts +50 -0
  16. package/{templates-experimental/gatsby → templates/gatsby/workers}/c3.ts +2 -2
  17. package/templates/hello-world/c3.ts +17 -1
  18. package/templates/hello-world/js/package.json +2 -2
  19. package/templates/hello-world/js/vitest.config.js +1 -1
  20. package/templates/hello-world/js/{wrangler.json → wrangler.jsonc} +2 -2
  21. package/templates/hello-world/py/.python-version +1 -0
  22. package/templates/hello-world/py/README.md +23 -0
  23. package/templates/hello-world/py/pyproject.toml +9 -0
  24. package/templates/hello-world/py/uv.lock +22 -0
  25. package/templates/hello-world/py/{wrangler.json → wrangler.jsonc} +2 -2
  26. package/templates/hello-world/ts/package.json +2 -2
  27. package/templates/hello-world/ts/src/index.ts +1 -1
  28. package/templates/hello-world/ts/vitest.config.mts +1 -1
  29. package/templates/hello-world/ts/worker-configuration.d.ts +1 -1
  30. package/templates/hello-world/ts/{wrangler.json → wrangler.jsonc} +2 -2
  31. package/templates/hello-world-durable-object/js/src/index.js +3 -3
  32. package/templates/hello-world-durable-object/ts/src/index.ts +3 -3
  33. package/templates/hono/c3.ts +1 -0
  34. package/templates/hono/templates/worker-configuration.d.ts +1 -1
  35. package/templates/next/README.md +1 -1
  36. package/templates/next/c3.ts +12 -9
  37. package/templates/nuxt/c3.ts +5 -130
  38. package/templates/nuxt/pages/c3.ts +145 -0
  39. package/templates/nuxt/pages/templates/worker-configuration.d.ts +4 -0
  40. package/templates/nuxt/pages/templates/wrangler.jsonc +5 -0
  41. package/{templates-experimental/nuxt → templates/nuxt/workers}/c3.ts +12 -2
  42. package/templates/nuxt/workers/templates/worker-configuration.d.ts +4 -0
  43. package/templates/openapi/ts/worker-configuration.d.ts +1 -1
  44. package/templates/pre-existing/c3.ts +1 -1
  45. package/templates/queues/ts/src/index.ts +1 -1
  46. package/templates/queues/ts/worker-configuration.d.ts +1 -1
  47. package/templates/qwik/c3.ts +3 -2
  48. package/templates/qwik/templates/worker-configuration.d.ts +1 -1
  49. package/templates/react/c3.ts +5 -57
  50. package/templates/react/pages/c3.ts +62 -0
  51. package/templates/react/workers/c3.ts +183 -0
  52. package/templates/react/workers/js/api/index.js +13 -0
  53. package/templates/react/workers/js/src/App.css +45 -0
  54. package/templates/react/workers/js/src/App.jsx +58 -0
  55. package/templates/react/workers/js/src/assets/Cloudflare_Logo.svg +53 -0
  56. package/templates/react/workers/js/wrangler.jsonc +9 -0
  57. package/templates/react/workers/ts/api/index.ts +13 -0
  58. package/templates/react/workers/ts/src/App.css +45 -0
  59. package/templates/react/workers/ts/src/App.tsx +58 -0
  60. package/templates/react/workers/ts/src/assets/Cloudflare_Logo.svg +51 -0
  61. package/templates/react/workers/ts/tsconfig.worker.json +8 -0
  62. package/templates/react/workers/ts/worker-configuration.d.ts +5 -0
  63. package/templates/react/workers/ts/wrangler.jsonc +9 -0
  64. package/templates/remix/templates/worker-configuration.d.ts +1 -1
  65. package/templates/scheduled/js/src/index.js +1 -1
  66. package/templates/scheduled/ts/src/index.ts +2 -2
  67. package/templates/scheduled/ts/worker-configuration.d.ts +1 -1
  68. package/templates/vue/c3.ts +5 -25
  69. package/{templates-experimental/vue → templates/vue/pages}/c3.ts +5 -8
  70. package/templates/vue/workers/c3.ts +98 -0
  71. package/templates/vue/workers/js/server/index.js +13 -0
  72. package/templates/vue/workers/js/src/App.vue +107 -0
  73. package/templates/vue/workers/js/src/components/HelloWorld.vue +47 -0
  74. package/templates/vue/workers/js/vite.config.js +21 -0
  75. package/templates/vue/workers/js/wrangler.jsonc +12 -0
  76. package/templates/vue/workers/ts/server/index.ts +13 -0
  77. package/templates/vue/workers/ts/src/App.vue +107 -0
  78. package/templates/vue/workers/ts/src/components/HelloWorld.vue +44 -0
  79. package/templates/vue/workers/ts/tsconfig.worker.json +8 -0
  80. package/templates/vue/workers/ts/vite.config.ts +21 -0
  81. package/templates/vue/workers/ts/worker-configuration.d.ts +6 -0
  82. package/templates/vue/workers/ts/wrangler.jsonc +12 -0
  83. package/templates-experimental/astro/templates/ts/worker-configuration.d.ts +1 -1
  84. package/templates-experimental/hello-world-durable-object-with-assets/js/src/index.js +3 -3
  85. package/templates-experimental/hello-world-durable-object-with-assets/ts/src/index.ts +3 -3
  86. package/templates-experimental/hello-world-with-assets/js/package.json +2 -2
  87. package/templates-experimental/hello-world-with-assets/js/vitest.config.js +1 -1
  88. package/templates-experimental/hello-world-with-assets/ts/package.json +2 -2
  89. package/templates-experimental/hello-world-with-assets/ts/src/index.ts +1 -1
  90. package/templates-experimental/hello-world-with-assets/ts/vitest.config.mts +1 -1
  91. package/templates-experimental/hello-world-with-assets/ts/worker-configuration.d.ts +1 -1
  92. package/templates-experimental/hono/c3.ts +1 -0
  93. package/templates-experimental/hono/templates/worker-configuration.d.ts +1 -1
  94. package/templates-experimental/next/c3.ts +32 -16
  95. package/templates-experimental/next/templates/open-next.config.ts +5 -27
  96. package/templates-experimental/next/templates/{wrangler.json → wrangler.jsonc} +0 -1
  97. package/templates-experimental/qwik/c3.ts +3 -2
  98. package/templates-experimental/qwik/templates/worker-configuration.d.ts +1 -1
  99. package/templates/nuxt/templates/worker-configuration.d.ts +0 -4
  100. package/templates/pre-existing/js/wrangler.json +0 -5
  101. package/templates/solid/templates/wrangler.json +0 -8
  102. package/templates-experimental/nuxt/templates/worker-configuration.d.ts +0 -4
  103. package/templates-experimental/vue/templates/wrangler.json +0 -10
  104. /package/templates/analog/templates/{wrangler.json → wrangler.jsonc} +0 -0
  105. /package/templates/angular/{templates → pages/templates}/src/_routes.json +0 -0
  106. /package/{templates-experimental/angular → templates/angular/pages}/templates/src/server.ts +0 -0
  107. /package/templates/angular/{templates → pages/templates}/tools/copy-files.mjs +0 -0
  108. /package/templates/angular/{templates → workers/templates}/src/server.ts +0 -0
  109. /package/{templates-experimental/angular/templates/wrangler.json → templates/angular/workers/templates/wrangler.jsonc} +0 -0
  110. /package/templates/astro/templates/js/{wrangler.json → wrangler.jsonc} +0 -0
  111. /package/templates/astro/templates/ts/{wrangler.json → wrangler.jsonc} +0 -0
  112. /package/templates/common/js/{wrangler.json → wrangler.jsonc} +0 -0
  113. /package/templates/common/ts/{wrangler.json → wrangler.jsonc} +0 -0
  114. /package/{templates-experimental/docusaurus/templates/wrangler.json → templates/docusaurus/workers/templates/wrangler.jsonc} +0 -0
  115. /package/{templates-experimental/hello-world-assets-only/templates/wrangler.json → templates/gatsby/workers/templates/wrangler.jsonc} +0 -0
  116. /package/templates/hello-world-durable-object/js/{wrangler.json → wrangler.jsonc} +0 -0
  117. /package/templates/hello-world-durable-object/ts/{wrangler.json → wrangler.jsonc} +0 -0
  118. /package/templates/hono/templates/{wrangler.json → wrangler.jsonc} +0 -0
  119. /package/templates/next/{wrangler.json → wrangler.jsonc} +0 -0
  120. /package/{templates-experimental/nuxt → templates/nuxt/pages}/templates/env.d.ts +0 -0
  121. /package/templates/nuxt/{templates → workers/templates}/env.d.ts +0 -0
  122. /package/{templates-experimental/nuxt/templates/wrangler.json → templates/nuxt/workers/templates/wrangler.jsonc} +0 -0
  123. /package/templates/openapi/ts/{wrangler.json → wrangler.jsonc} +0 -0
  124. /package/templates/queues/js/{wrangler.json → wrangler.jsonc} +0 -0
  125. /package/templates/queues/ts/{wrangler.json → wrangler.jsonc} +0 -0
  126. /package/templates/{nuxt/templates/wrangler.json → qwik/templates/wrangler.jsonc} +0 -0
  127. /package/templates/remix/templates/{wrangler.json → wrangler.jsonc} +0 -0
  128. /package/templates/scheduled/js/{wrangler.json → wrangler.jsonc} +0 -0
  129. /package/templates/scheduled/ts/{wrangler.json → wrangler.jsonc} +0 -0
  130. /package/templates/{qwik/templates/wrangler.json → solid/templates/wrangler.jsonc} +0 -0
  131. /package/templates/svelte/templates/{wrangler.json → wrangler.jsonc} +0 -0
  132. /package/templates-experimental/astro/templates/js/{wrangler.json → wrangler.jsonc} +0 -0
  133. /package/templates-experimental/astro/templates/ts/{wrangler.json → wrangler.jsonc} +0 -0
  134. /package/templates-experimental/{gatsby/templates/wrangler.json → hello-world-assets-only/templates/wrangler.jsonc} +0 -0
  135. /package/templates-experimental/hello-world-durable-object-with-assets/js/{wrangler.json → wrangler.jsonc} +0 -0
  136. /package/templates-experimental/hello-world-durable-object-with-assets/ts/{wrangler.json → wrangler.jsonc} +0 -0
  137. /package/templates-experimental/hello-world-with-assets/js/{wrangler.json → wrangler.jsonc} +0 -0
  138. /package/templates-experimental/hello-world-with-assets/py/{wrangler.json → wrangler.jsonc} +0 -0
  139. /package/templates-experimental/hello-world-with-assets/ts/{wrangler.json → wrangler.jsonc} +0 -0
  140. /package/templates-experimental/hono/templates/{wrangler.json → wrangler.jsonc} +0 -0
  141. /package/templates-experimental/qwik/templates/{wrangler.json → wrangler.jsonc} +0 -0
  142. /package/templates-experimental/solid/templates/{wrangler.json → wrangler.jsonc} +0 -0
  143. /package/templates-experimental/svelte/templates/{wrangler.json → wrangler.jsonc} +0 -0
@@ -7,7 +7,7 @@ import { DurableObject } from "cloudflare:workers";
7
7
  * - Open a browser tab at http://localhost:8787/ to see your Durable Object in action
8
8
  * - Run `npm run deploy` to publish your application
9
9
  *
10
- * Bind resources to your worker in `wrangler.json`. After adding bindings, a type definition for the
10
+ * Bind resources to your worker in `wrangler.jsonc`. After adding bindings, a type definition for the
11
11
  * `Env` object can be regenerated with `npm run cf-typegen`.
12
12
  *
13
13
  * Learn more at https://developers.cloudflare.com/durable-objects
@@ -21,7 +21,7 @@ export class MyDurableObject extends DurableObject {
21
21
  * `DurableObjectStub::get` for a given identifier (no-op constructors can be omitted)
22
22
  *
23
23
  * @param ctx - The interface for interacting with Durable Object state
24
- * @param env - The interface to reference bindings declared in wrangler.json
24
+ * @param env - The interface to reference bindings declared in wrangler.jsonc
25
25
  */
26
26
  constructor(ctx: DurableObjectState, env: Env) {
27
27
  super(ctx, env);
@@ -44,7 +44,7 @@ export default {
44
44
  * This is the standard fetch handler for a Cloudflare Worker
45
45
  *
46
46
  * @param request - The request submitted to the Worker from the client
47
- * @param env - The interface to reference bindings declared in wrangler.json
47
+ * @param env - The interface to reference bindings declared in wrangler.jsonc
48
48
  * @param ctx - The execution context of the Worker
49
49
  * @returns The response to be sent back to the client
50
50
  */
@@ -9,8 +9,8 @@
9
9
  "test": "vitest"
10
10
  },
11
11
  "devDependencies": {
12
- "@cloudflare/vitest-pool-workers": "^0.6.4",
12
+ "@cloudflare/vitest-pool-workers": "^0.7.5",
13
13
  "wrangler": "^3.101.0",
14
- "vitest": "2.1.8"
14
+ "vitest": "~3.0.7"
15
15
  }
16
16
  }
@@ -4,7 +4,7 @@ export default defineWorkersConfig({
4
4
  test: {
5
5
  poolOptions: {
6
6
  workers: {
7
- wrangler: { configPath: './wrangler.json' },
7
+ wrangler: { configPath: './wrangler.jsonc' },
8
8
  },
9
9
  },
10
10
  },
@@ -10,9 +10,9 @@
10
10
  "cf-typegen": "wrangler types"
11
11
  },
12
12
  "devDependencies": {
13
- "@cloudflare/vitest-pool-workers": "^0.6.4",
13
+ "@cloudflare/vitest-pool-workers": "^0.7.5",
14
14
  "typescript": "^5.5.2",
15
- "vitest": "2.1.8",
15
+ "vitest": "~3.0.7",
16
16
  "wrangler": "^3.101.0"
17
17
  }
18
18
  }
@@ -5,7 +5,7 @@
5
5
  * - Open a browser tab at http://localhost:8787/ to see your worker in action
6
6
  * - Run `npm run deploy` to publish your worker
7
7
  *
8
- * Bind resources to your worker in `wrangler.json`. After adding bindings, a type definition for the
8
+ * Bind resources to your worker in `wrangler.jsonc`. After adding bindings, a type definition for the
9
9
  * `Env` object can be regenerated with `npm run cf-typegen`.
10
10
  *
11
11
  * Learn more at https://developers.cloudflare.com/workers/
@@ -4,7 +4,7 @@ export default defineWorkersConfig({
4
4
  test: {
5
5
  poolOptions: {
6
6
  workers: {
7
- wrangler: { configPath: './wrangler.json' },
7
+ wrangler: { configPath: './wrangler.jsonc' },
8
8
  },
9
9
  },
10
10
  },
@@ -1,4 +1,4 @@
1
1
  // Generated by Wrangler
2
- // After adding bindings to `wrangler.json`, regenerate this interface via `npm run cf-typegen`
2
+ // After adding bindings to `wrangler.jsonc`, regenerate this interface via `npm run cf-typegen`
3
3
  interface Env {
4
4
  }
@@ -39,5 +39,6 @@ const config: TemplateConfig = {
39
39
  }),
40
40
  devScript: "dev",
41
41
  deployScript: "deploy",
42
+ previewScript: "dev",
42
43
  };
43
44
  export default config;
@@ -1,4 +1,4 @@
1
1
  // Generated by Wrangler
2
- // After adding bindings to `wrangler.json`, regenerate this interface via `npm run cf-typegen`
2
+ // After adding bindings to `wrangler.jsonc`, regenerate this interface via `npm run cf-typegen`
3
3
  interface CloudflareBindings {
4
4
  }
@@ -1,25 +1,18 @@
1
1
  import { brandColor, dim } from "@cloudflare/cli/colors";
2
+ import { spinner } from "@cloudflare/cli/interactive";
2
3
  import { runFrameworkGenerator } from "frameworks/index";
4
+ import { readFile, usesTypescript, writeFile } from "helpers/files";
3
5
  import { installPackages } from "helpers/packages";
4
6
  import type { TemplateConfig } from "../../src/templates";
5
7
  import type { C3Context } from "types";
6
8
 
7
9
  const generate = async (ctx: C3Context) => {
8
- await runFrameworkGenerator(ctx, [
9
- ctx.project.name,
10
- "--ts",
11
- "--tailwind",
12
- "--eslint",
13
- "--app",
14
- "--import-alias",
15
- "@/*",
16
- "--src-dir",
17
- ]);
10
+ await runFrameworkGenerator(ctx, [ctx.project.name]);
18
11
  };
19
12
 
20
- const configure = async () => {
13
+ const configure = async (ctx: C3Context) => {
21
14
  const packages = [
22
- "@opennextjs/cloudflare@0.3.x",
15
+ "@opennextjs/cloudflare@0.5.x",
23
16
  "@cloudflare/workers-types",
24
17
  ];
25
18
  await installPackages(packages, {
@@ -27,16 +20,39 @@ const configure = async () => {
27
20
  startText: "Adding the Cloudflare adapter",
28
21
  doneText: `${brandColor(`installed`)} ${dim(packages.join(", "))}`,
29
22
  });
23
+
24
+ const usesTs = usesTypescript(ctx);
25
+
26
+ updateNextConfig(usesTs);
27
+ };
28
+
29
+ const updateNextConfig = (usesTs: boolean) => {
30
+ const s = spinner();
31
+
32
+ const configFile = `next.config.${usesTs ? "ts" : "mjs"}`;
33
+ s.start(`Updating \`${configFile}\``);
34
+
35
+ const configContent = readFile(configFile);
36
+
37
+ const updatedConfigFile =
38
+ configContent +
39
+ `
40
+ // added by create cloudflare to enable calling \`getCloudflareContext()\` in \`next dev\`
41
+ import { initOpenNextCloudflareForDev } from '@opennextjs/cloudflare';
42
+ initOpenNextCloudflareForDev();
43
+ `.replace(/\n\t*/g, "\n");
44
+
45
+ writeFile(configFile, updatedConfigFile);
46
+
47
+ s.stop(`${brandColor(`updated`)} ${dim(`\`${configFile}\``)}`);
30
48
  };
31
49
 
32
50
  export default {
33
51
  configVersion: 1,
34
52
  id: "next",
35
53
  frameworkCli: "create-next-app",
36
- // TODO: here we need to specify a version of create-next-app which is different from the
37
- // standard one used in the stable Next.js template, that's because our open-next adapter
38
- // is not yet fully ready for Next.js 15, once it is we should remove the following
39
- frameworkCliPinnedVersion: "^14.2.23",
54
+ // TODO: Stop using a pinned version when the template graduates.
55
+ frameworkCliPinnedVersion: "~15.2.2",
40
56
  platform: "workers",
41
57
  displayName: "Next.js (using Node.js compat + Workers Assets)",
42
58
  path: "templates-experimental/next",
@@ -1,28 +1,6 @@
1
- import cache from "@opennextjs/cloudflare/kvCache";
1
+ import { defineCloudflareConfig } from "@opennextjs/cloudflare";
2
+ import kvIncrementalCache from "@opennextjs/cloudflare/kv-cache";
2
3
 
3
- const config = {
4
- default: {
5
- override: {
6
- wrapper: "cloudflare-node",
7
- converter: "edge",
8
- incrementalCache: async () => cache,
9
- tagCache: "dummy",
10
- queue: "dummy",
11
- },
12
- },
13
-
14
- middleware: {
15
- external: true,
16
- override: {
17
- wrapper: "cloudflare-edge",
18
- converter: "edge",
19
- proxyExternalRequest: "fetch",
20
- },
21
- },
22
-
23
- dangerous: {
24
- enableCacheInterception: false,
25
- },
26
- };
27
-
28
- export default config;
4
+ export default defineCloudflareConfig({
5
+ incrementalCache: kvIncrementalCache,
6
+ });
@@ -5,7 +5,6 @@
5
5
  "compatibility_flags": [
6
6
  "nodejs_compat"
7
7
  ],
8
- "minify": true,
9
8
  "assets": {
10
9
  "binding": "ASSETS",
11
10
  "directory": ".open-next/assets"
@@ -10,7 +10,7 @@ import * as recast from "recast";
10
10
  import type { TemplateConfig } from "../../src/templates";
11
11
  import type { C3Context } from "types";
12
12
 
13
- const { npm, npx } = detectPackageManager();
13
+ const { npm, npx, name } = detectPackageManager();
14
14
 
15
15
  const generate = async (ctx: C3Context) => {
16
16
  await runFrameworkGenerator(ctx, ["playground", ctx.project.name]);
@@ -18,7 +18,8 @@ const generate = async (ctx: C3Context) => {
18
18
 
19
19
  const configure = async (ctx: C3Context) => {
20
20
  // Add the pages integration
21
- const cmd = [npx, "qwik", "add", "cloudflare-pages"];
21
+ // For some reason `pnpx qwik add` fails for qwik so we use `pnpm qwik add` instead.
22
+ const cmd = [name === "pnpm" ? npm : npx, "qwik", "add", "cloudflare-pages"];
22
23
  endSection(`Running ${quoteShellArgs(cmd)}`);
23
24
  await runCommand(cmd);
24
25
 
@@ -1,4 +1,4 @@
1
1
  // Generated by Wrangler
2
- // After adding bindings to `wrangler.json`, regenerate this interface via `npm run cf-typegen`
2
+ // After adding bindings to `wrangler.jsonc`, regenerate this interface via `npm run cf-typegen`
3
3
  interface Env {
4
4
  }
@@ -1,4 +0,0 @@
1
- // Generated by Wrangler
2
- // After adding bindings to `wrangler.json`, regenerate this interface via `npm run cf-typegen`
3
- interface Env {
4
- }
@@ -1,5 +0,0 @@
1
- {
2
- "name": "<TBD>",
3
- "main": "src/index.js",
4
- "compatibility_date": "<TBD>"
5
- }
@@ -1,8 +0,0 @@
1
- {
2
- "name": "<TBD>",
3
- "compatibility_date": "<TBD>",
4
- "compatibility_flags": [
5
- "nodejs_compat"
6
- ],
7
- "pages_build_output_dir": "./dist"
8
- }
@@ -1,4 +0,0 @@
1
- // Generated by Wrangler
2
- // After adding bindings to `wrangler.json`, regenerate this interface via `npm run cf-typegen`
3
- interface Env {
4
- }
@@ -1,10 +0,0 @@
1
- {
2
- "name": "<TBD>",
3
- "compatibility_date": "<TBD>",
4
- "assets": {
5
- "directory": "./dist"
6
- },
7
- "observability": {
8
- "enabled": true
9
- }
10
- }