create-cloudflare 0.0.0-efd7f9764 → 0.0.0-efdba4f7f

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 (253) hide show
  1. package/dist/cli.js +19578 -17866
  2. package/dist/tsconfig.tsbuildinfo +1 -1
  3. package/package.json +9 -7
  4. package/templates/analog/c3.ts +0 -24
  5. package/templates/analog/templates/env.d.ts +1 -1
  6. package/templates/angular/c3.ts +5 -110
  7. package/templates/angular/pages/c3.ts +135 -0
  8. package/templates/angular/pages/templates/wrangler.jsonc +5 -0
  9. package/{templates-experimental/angular → templates/angular/workers}/c3.ts +26 -7
  10. package/templates/astro/c3.ts +5 -93
  11. package/templates/astro/pages/c3.ts +99 -0
  12. package/{templates-experimental/astro → templates/astro/workers}/c3.ts +2 -2
  13. package/templates/astro/workers/templates/js/public/.assetsignore +2 -0
  14. package/{templates-experimental/astro → templates/astro/workers}/templates/js/wrangler.jsonc +2 -1
  15. package/templates/astro/workers/templates/ts/public/.assetsignore +2 -0
  16. package/{templates-experimental/astro → templates/astro/workers}/templates/ts/wrangler.jsonc +3 -2
  17. package/templates/common/c3.ts +5 -1
  18. package/templates/common/ts/tsconfig.json +0 -3
  19. package/templates/docusaurus/c3.ts +5 -24
  20. package/templates/docusaurus/pages/c3.ts +32 -0
  21. package/{templates-experimental/docusaurus → templates/docusaurus/workers}/c3.ts +4 -2
  22. package/templates/gatsby/c3.ts +5 -45
  23. package/templates/gatsby/pages/c3.ts +52 -0
  24. package/{templates-experimental/gatsby → templates/gatsby/workers}/c3.ts +3 -2
  25. package/templates/hello-world/c3.ts +20 -3
  26. package/templates/hello-world/js/package.json +2 -2
  27. package/templates/hello-world/py/.python-version +1 -0
  28. package/templates/hello-world/py/README.md +23 -0
  29. package/templates/hello-world/py/pyproject.toml +9 -0
  30. package/templates/hello-world/py/src/entry.py +3 -2
  31. package/templates/hello-world/py/uv.lock +22 -0
  32. package/templates/hello-world/ts/package.json +2 -2
  33. package/templates/hello-world/ts/test/env.d.ts +3 -0
  34. package/templates/hello-world/ts/test/index.spec.ts +0 -1
  35. package/templates/hello-world/ts/test/tsconfig.json +1 -1
  36. package/templates/hello-world/ts/tsconfig.json +0 -2
  37. package/{templates-experimental → templates}/hello-world-assets-only/c3.ts +4 -3
  38. package/{templates-experimental → templates}/hello-world-assets-only/templates/public/index.html +1 -0
  39. package/{templates-experimental → templates}/hello-world-assets-only/templates/wrangler.jsonc +1 -0
  40. package/templates/hello-world-durable-object/c3.ts +9 -3
  41. package/templates/hello-world-durable-object/js/src/index.js +10 -9
  42. package/templates/hello-world-durable-object/js/wrangler.jsonc +1 -1
  43. package/templates/hello-world-durable-object/py/.python-version +1 -0
  44. package/templates/hello-world-durable-object/py/README.md +23 -0
  45. package/templates/hello-world-durable-object/py/__dot__gitignore +68 -0
  46. package/templates/hello-world-durable-object/py/package.json +13 -0
  47. package/templates/hello-world-durable-object/py/pyproject.toml +9 -0
  48. package/templates/hello-world-durable-object/py/src/entry.py +66 -0
  49. package/templates/hello-world-durable-object/py/uv.lock +22 -0
  50. package/templates/hello-world-durable-object/py/wrangler.jsonc +27 -0
  51. package/templates/hello-world-durable-object/ts/src/index.ts +10 -9
  52. package/templates/hello-world-durable-object/ts/tsconfig.json +0 -2
  53. package/templates/hello-world-durable-object/ts/wrangler.jsonc +1 -1
  54. package/{templates-experimental → templates}/hello-world-durable-object-with-assets/c3.ts +6 -3
  55. package/{templates-experimental → templates}/hello-world-durable-object-with-assets/js/public/index.html +1 -0
  56. package/{templates-experimental → templates}/hello-world-durable-object-with-assets/js/src/index.js +11 -10
  57. package/{templates-experimental → templates}/hello-world-durable-object-with-assets/js/wrangler.jsonc +3 -3
  58. package/templates/hello-world-durable-object-with-assets/py/.python-version +1 -0
  59. package/templates/hello-world-durable-object-with-assets/py/README.md +23 -0
  60. package/{templates-experimental/hello-world-durable-object-with-assets/ts → templates/hello-world-durable-object-with-assets/py}/public/index.html +1 -0
  61. package/templates/hello-world-durable-object-with-assets/py/pyproject.toml +9 -0
  62. package/templates/hello-world-durable-object-with-assets/py/src/entry.py +66 -0
  63. package/templates/hello-world-durable-object-with-assets/py/uv.lock +22 -0
  64. package/templates/hello-world-durable-object-with-assets/py/wrangler.jsonc +31 -0
  65. package/templates/hello-world-durable-object-with-assets/ts/public/index.html +20 -0
  66. package/{templates-experimental → templates}/hello-world-durable-object-with-assets/ts/src/index.ts +10 -9
  67. package/{templates-experimental → templates}/hello-world-durable-object-with-assets/ts/tsconfig.json +0 -2
  68. package/{templates-experimental → templates}/hello-world-durable-object-with-assets/ts/wrangler.jsonc +2 -2
  69. package/templates/hello-world-with-assets/c3.ts +25 -0
  70. package/{templates-experimental → templates}/hello-world-with-assets/js/package.json +2 -2
  71. package/{templates-experimental/hello-world-with-assets/py → templates/hello-world-with-assets/js}/public/index.html +3 -2
  72. package/{templates-experimental → templates}/hello-world-with-assets/js/wrangler.jsonc +3 -2
  73. package/templates/hello-world-with-assets/py/.python-version +1 -0
  74. package/templates/hello-world-with-assets/py/README.md +23 -0
  75. package/templates/hello-world-with-assets/py/__dot__gitignore +68 -0
  76. package/templates/hello-world-with-assets/py/package.json +13 -0
  77. package/{templates-experimental/hello-world-with-assets/ts → templates/hello-world-with-assets/py}/public/index.html +3 -2
  78. package/templates/hello-world-with-assets/py/pyproject.toml +9 -0
  79. package/templates/hello-world-with-assets/py/src/entry.py +11 -0
  80. package/templates/hello-world-with-assets/py/uv.lock +22 -0
  81. package/{templates-experimental → templates}/hello-world-with-assets/py/wrangler.jsonc +1 -1
  82. package/{templates-experimental → templates}/hello-world-with-assets/ts/package.json +2 -2
  83. package/{templates-experimental/hello-world-with-assets/js → templates/hello-world-with-assets/ts}/public/index.html +3 -2
  84. package/templates/hello-world-with-assets/ts/test/env.d.ts +3 -0
  85. package/templates/hello-world-with-assets/ts/test/tsconfig.json +8 -0
  86. package/{templates-experimental → templates}/hello-world-with-assets/ts/tsconfig.json +0 -2
  87. package/{templates-experimental → templates}/hello-world-with-assets/ts/wrangler.jsonc +2 -2
  88. package/templates/hono/c3.ts +5 -65
  89. package/templates/hono/pages/c3.ts +47 -0
  90. package/templates/hono/pages/templates/src/index.tsx +12 -0
  91. package/templates/hono/{templates → pages/templates}/wrangler.jsonc +1 -1
  92. package/{templates-experimental/hono → templates/hono/workers}/c3.ts +6 -5
  93. package/templates/next/c3.ts +7 -218
  94. package/templates/next/pages/c3.ts +221 -0
  95. package/templates/next/workers/c3.ts +71 -0
  96. package/templates/next/workers/templates/open-next.config.ts +9 -0
  97. package/{templates-experimental/next → templates/next/workers}/templates/wrangler.jsonc +3 -3
  98. package/templates/nuxt/c3.ts +5 -130
  99. package/templates/nuxt/pages/c3.ts +123 -0
  100. package/{templates-experimental/nuxt → templates/nuxt/pages}/templates/env.d.ts +1 -1
  101. package/templates/{qwik → nuxt/pages}/templates/wrangler.jsonc +0 -3
  102. package/{templates-experimental/nuxt → templates/nuxt/workers}/c3.ts +15 -28
  103. package/templates/nuxt/{templates → workers/templates}/env.d.ts +1 -1
  104. package/templates/openapi/c3.ts +5 -1
  105. package/templates/openapi/ts/__dot__gitignore +1 -0
  106. package/templates/openapi/ts/package.json +7 -6
  107. package/templates/openapi/ts/src/endpoints/taskCreate.ts +2 -2
  108. package/templates/openapi/ts/src/endpoints/taskDelete.ts +2 -2
  109. package/templates/openapi/ts/src/endpoints/taskFetch.ts +2 -2
  110. package/templates/openapi/ts/src/endpoints/taskList.ts +2 -2
  111. package/templates/openapi/ts/src/index.ts +4 -1
  112. package/templates/openapi/ts/src/types.ts +3 -0
  113. package/templates/openapi/ts/tsconfig.json +18 -21
  114. package/templates/pre-existing/c3.ts +7 -3
  115. package/templates/queues/c3.ts +5 -1
  116. package/templates/queues/ts/tsconfig.json +0 -2
  117. package/templates/qwik/c3.ts +5 -143
  118. package/templates/qwik/pages/c3.ts +151 -0
  119. package/{templates-experimental/qwik → templates/qwik/workers}/c3.ts +8 -8
  120. package/{templates-experimental/qwik → templates/qwik/workers}/templates/wrangler.jsonc +2 -1
  121. package/templates/react/c3.ts +5 -57
  122. package/templates/react/pages/c3.ts +65 -0
  123. package/templates/react/pages/templates/wrangler.jsonc +5 -0
  124. package/templates/react/workers/c3.ts +183 -0
  125. package/templates/react/workers/js/src/App.css +45 -0
  126. package/templates/react/workers/js/src/App.jsx +58 -0
  127. package/templates/react/workers/js/src/assets/Cloudflare_Logo.svg +53 -0
  128. package/templates/react/workers/js/worker/index.js +13 -0
  129. package/templates/react/workers/js/wrangler.jsonc +9 -0
  130. package/templates/react/workers/ts/src/App.css +45 -0
  131. package/templates/react/workers/ts/src/App.tsx +58 -0
  132. package/templates/react/workers/ts/src/assets/Cloudflare_Logo.svg +51 -0
  133. package/templates/react/workers/ts/tsconfig.worker.json +8 -0
  134. package/templates/react/workers/ts/worker/index.ts +12 -0
  135. package/templates/react/workers/ts/wrangler.jsonc +9 -0
  136. package/templates/react-router/c3.ts +41 -0
  137. package/templates/remix/c3.ts +6 -63
  138. package/templates/remix/pages/c3.ts +70 -0
  139. package/{templates-experimental/remix → templates/remix/workers}/c3.ts +3 -2
  140. package/templates/remix/workers/templates/worker-configuration.d.ts +4 -0
  141. package/{templates-experimental/remix → templates/remix/workers}/templates/wrangler.toml +1 -1
  142. package/templates/scheduled/c3.ts +5 -1
  143. package/templates/scheduled/ts/src/index.ts +7 -0
  144. package/templates/scheduled/ts/tsconfig.json +0 -2
  145. package/templates/solid/c3.ts +1 -0
  146. package/templates/svelte/c3.ts +5 -154
  147. package/templates/svelte/pages/c3.ts +160 -0
  148. package/{templates-experimental/svelte → templates/svelte/workers}/c3.ts +6 -6
  149. package/templates/svelte/workers/templates/static/.assetsignore +2 -0
  150. package/templates/vue/c3.ts +5 -25
  151. package/{templates-experimental/vue → templates/vue/pages}/c3.ts +8 -8
  152. package/templates/vue/pages/templates/wrangler.jsonc +5 -0
  153. package/templates/vue/workers/c3.ts +98 -0
  154. package/templates/vue/workers/js/server/index.js +13 -0
  155. package/templates/vue/workers/js/src/App.vue +107 -0
  156. package/templates/vue/workers/js/src/components/HelloWorld.vue +47 -0
  157. package/templates/vue/workers/js/vite.config.js +21 -0
  158. package/templates/vue/workers/js/wrangler.jsonc +11 -0
  159. package/templates/vue/workers/ts/server/index.ts +12 -0
  160. package/templates/vue/workers/ts/src/App.vue +107 -0
  161. package/templates/vue/workers/ts/src/components/HelloWorld.vue +44 -0
  162. package/templates/vue/workers/ts/tsconfig.worker.json +8 -0
  163. package/templates/vue/workers/ts/vite.config.ts +21 -0
  164. package/templates/vue/workers/ts/wrangler.jsonc +11 -0
  165. package/templates-experimental/solid/c3.ts +1 -1
  166. package/templates/analog/templates/worker-configuration.d.ts +0 -4
  167. package/templates/astro/templates/ts/worker-configuration.d.ts +0 -4
  168. package/templates/common/ts/worker-configuration.d.ts +0 -4
  169. package/templates/hello-world/ts/worker-configuration.d.ts +0 -4
  170. package/templates/hello-world-durable-object/ts/worker-configuration.d.ts +0 -5
  171. package/templates/hono/snippets/appDeclaration.ts +0 -1
  172. package/templates/hono/templates/worker-configuration.d.ts +0 -4
  173. package/templates/next/env.d.ts +0 -5
  174. package/templates/nuxt/templates/worker-configuration.d.ts +0 -4
  175. package/templates/openapi/ts/worker-configuration.d.ts +0 -4
  176. package/templates/pre-existing/js/wrangler.jsonc +0 -5
  177. package/templates/queues/ts/worker-configuration.d.ts +0 -5
  178. package/templates/qwik/templates/worker-configuration.d.ts +0 -4
  179. package/templates/remix/templates/worker-configuration.d.ts +0 -4
  180. package/templates/scheduled/ts/worker-configuration.d.ts +0 -4
  181. package/templates-experimental/astro/templates/ts/public/.assetsignore +0 -4
  182. package/templates-experimental/hello-world-durable-object-with-assets/ts/worker-configuration.d.ts +0 -5
  183. package/templates-experimental/hello-world-with-assets/c3.ts +0 -22
  184. package/templates-experimental/hello-world-with-assets/py/src/entry.py +0 -9
  185. package/templates-experimental/hello-world-with-assets/ts/test/tsconfig.json +0 -8
  186. package/templates-experimental/hono/templates/worker-configuration.d.ts +0 -4
  187. package/templates-experimental/next/c3.ts +0 -84
  188. package/templates-experimental/next/templates/cloudflare-env.d.ts +0 -5
  189. package/templates-experimental/next/templates/open-next.config.ts +0 -28
  190. package/templates-experimental/qwik/templates/public/.assetsignore +0 -4
  191. package/templates-experimental/qwik/templates/worker-configuration.d.ts +0 -4
  192. package/templates-experimental/svelte/templates/static/.assetsignore +0 -4
  193. package/templates-experimental/vue/templates/wrangler.jsonc +0 -10
  194. /package/templates/angular/{templates → pages/templates}/src/_routes.json +0 -0
  195. /package/{templates-experimental/angular → templates/angular/pages}/templates/src/server.ts +0 -0
  196. /package/templates/angular/{templates → pages/templates}/tools/copy-files.mjs +0 -0
  197. /package/templates/angular/{templates → workers/templates}/src/server.ts +0 -0
  198. /package/{templates-experimental/angular → templates/angular/workers}/templates/wrangler.jsonc +0 -0
  199. /package/templates/astro/{templates → pages/templates}/js/wrangler.jsonc +0 -0
  200. /package/{templates-experimental/astro → templates/astro/pages}/templates/ts/src/env.d.ts +0 -0
  201. /package/{templates-experimental/astro → templates/astro/pages}/templates/ts/worker-configuration.d.ts +0 -0
  202. /package/templates/astro/{templates → pages/templates}/ts/wrangler.jsonc +0 -0
  203. /package/templates/astro/{templates → workers/templates}/ts/src/env.d.ts +0 -0
  204. /package/{templates-experimental/docusaurus → templates/docusaurus/workers}/templates/wrangler.jsonc +0 -0
  205. /package/{templates-experimental/gatsby → templates/gatsby/workers}/templates/wrangler.jsonc +0 -0
  206. /package/{templates-experimental → templates}/hello-world-assets-only/templates/package.json +0 -0
  207. /package/{templates-experimental → templates}/hello-world-durable-object-with-assets/js/.editorconfig +0 -0
  208. /package/{templates-experimental → templates}/hello-world-durable-object-with-assets/js/.prettierrc +0 -0
  209. /package/{templates-experimental → templates}/hello-world-durable-object-with-assets/js/__dot__gitignore +0 -0
  210. /package/{templates-experimental → templates}/hello-world-durable-object-with-assets/js/package.json +0 -0
  211. /package/{templates-experimental/hello-world-with-assets → templates/hello-world-durable-object-with-assets}/py/__dot__gitignore +0 -0
  212. /package/{templates-experimental/hello-world-with-assets → templates/hello-world-durable-object-with-assets}/py/package.json +0 -0
  213. /package/{templates-experimental → templates}/hello-world-durable-object-with-assets/ts/.editorconfig +0 -0
  214. /package/{templates-experimental → templates}/hello-world-durable-object-with-assets/ts/.prettierrc +0 -0
  215. /package/{templates-experimental → templates}/hello-world-durable-object-with-assets/ts/__dot__gitignore +0 -0
  216. /package/{templates-experimental → templates}/hello-world-durable-object-with-assets/ts/package.json +0 -0
  217. /package/{templates-experimental → templates}/hello-world-with-assets/js/.editorconfig +0 -0
  218. /package/{templates-experimental → templates}/hello-world-with-assets/js/.prettierrc +0 -0
  219. /package/{templates-experimental → templates}/hello-world-with-assets/js/__dot__gitignore +0 -0
  220. /package/{templates-experimental → templates}/hello-world-with-assets/js/src/index.js +0 -0
  221. /package/{templates-experimental → templates}/hello-world-with-assets/js/test/index.spec.js +0 -0
  222. /package/{templates-experimental → templates}/hello-world-with-assets/js/vitest.config.js +0 -0
  223. /package/{templates-experimental → templates}/hello-world-with-assets/ts/.editorconfig +0 -0
  224. /package/{templates-experimental → templates}/hello-world-with-assets/ts/.prettierrc +0 -0
  225. /package/{templates-experimental → templates}/hello-world-with-assets/ts/__dot__gitignore +0 -0
  226. /package/{templates-experimental → templates}/hello-world-with-assets/ts/src/index.ts +0 -0
  227. /package/{templates-experimental → templates}/hello-world-with-assets/ts/test/index.spec.ts +0 -0
  228. /package/{templates-experimental → templates}/hello-world-with-assets/ts/vitest.config.mts +0 -0
  229. /package/{templates-experimental/hono → templates/hono/workers}/templates/public/index.html +0 -0
  230. /package/{templates-experimental/hono → templates/hono/workers}/templates/src/index.ts +0 -0
  231. /package/{templates-experimental/hono → templates/hono/workers}/templates/wrangler.jsonc +0 -0
  232. /package/templates/next/{README.md → pages/README.md} +0 -0
  233. /package/templates/next/{app → pages/app}/js/app/api/hello/route.js +0 -0
  234. /package/templates/next/{app → pages/app}/js/app/not-found.js +0 -0
  235. /package/templates/next/{app → pages/app}/ts/app/api/hello/route.ts +0 -0
  236. /package/templates/next/{app → pages/app}/ts/app/not-found.tsx +0 -0
  237. /package/templates/next/pages/{js → pages/js}/pages/api/hello.js +0 -0
  238. /package/templates/next/pages/{ts → pages/ts}/pages/api/hello.ts +0 -0
  239. /package/templates/next/{wrangler.jsonc → pages/wrangler.jsonc} +0 -0
  240. /package/{templates-experimental/next → templates/next/workers}/templates/.dev.vars +0 -0
  241. /package/{templates-experimental/next → templates/next/workers}/templates/__dot__gitignore +0 -0
  242. /package/{templates-experimental/nuxt → templates/nuxt/workers}/templates/wrangler.jsonc +0 -0
  243. /package/{templates-experimental/qwik → templates/qwik/pages}/snippets/getPlatformProxy.ts +0 -0
  244. /package/{templates-experimental/hello-world-with-assets/ts → templates/qwik/pages/templates}/worker-configuration.d.ts +0 -0
  245. /package/templates/{nuxt → qwik/pages}/templates/wrangler.jsonc +0 -0
  246. /package/templates/qwik/{snippets → workers/snippets}/getPlatformProxy.ts +0 -0
  247. /package/{templates-experimental/astro/templates/js → templates/qwik/workers/templates}/public/.assetsignore +0 -0
  248. /package/{templates-experimental/nuxt → templates/qwik/workers}/templates/worker-configuration.d.ts +0 -0
  249. /package/{templates-experimental/remix → templates/remix/pages}/templates/worker-configuration.d.ts +0 -0
  250. /package/templates/remix/{templates → pages/templates}/wrangler.jsonc +0 -0
  251. /package/{templates-experimental/remix → templates/remix/workers}/templates/public/.assetsignore +0 -0
  252. /package/templates/svelte/{templates → pages/templates}/wrangler.jsonc +0 -0
  253. /package/{templates-experimental/svelte → templates/svelte/workers}/templates/wrangler.jsonc +0 -0
@@ -0,0 +1,68 @@
1
+ # Logs
2
+
3
+ logs
4
+ _.log
5
+ npm-debug.log_
6
+ yarn-debug.log*
7
+ yarn-error.log*
8
+ lerna-debug.log*
9
+ .pnpm-debug.log*
10
+
11
+ # Diagnostic reports (https://nodejs.org/api/report.html)
12
+
13
+ report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
14
+
15
+ # Runtime data
16
+
17
+ pids
18
+ _.pid
19
+ _.seed
20
+ \*.pid.lock
21
+
22
+ # Dependency directories
23
+
24
+ node_modules/
25
+ jspm_packages/
26
+
27
+ # TypeScript cache
28
+
29
+ \*.tsbuildinfo
30
+
31
+ # Optional npm cache directory
32
+
33
+ .npm
34
+
35
+ # Optional eslint cache
36
+
37
+ .eslintcache
38
+
39
+ # Optional stylelint cache
40
+
41
+ .stylelintcache
42
+
43
+ # Optional REPL history
44
+
45
+ .node_repl_history
46
+
47
+ # Output of 'npm pack'
48
+
49
+ \*.tgz
50
+
51
+ # dotenv environment variable files
52
+
53
+ .env
54
+ .env.development.local
55
+ .env.test.local
56
+ .env.production.local
57
+ .env.local
58
+
59
+ # public
60
+
61
+ # Stores VSCode versions used for testing VSCode extensions
62
+
63
+ .vscode-test
64
+
65
+ # wrangler project
66
+
67
+ .dev.vars
68
+ .wrangler/
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "<TBD>",
3
+ "version": "0.0.0",
4
+ "private": true,
5
+ "scripts": {
6
+ "deploy": "wrangler deploy",
7
+ "dev": "wrangler dev",
8
+ "start": "wrangler dev"
9
+ },
10
+ "devDependencies": {
11
+ "wrangler": "^3.101.0"
12
+ }
13
+ }
@@ -7,8 +7,9 @@
7
7
  </head>
8
8
  <body>
9
9
  <h1 id="heading"></h1>
10
- <button id="button">Fetch a random UUID</button>
11
- <div id="random"></div>
10
+ <p>This page comes from a static asset stored at `public/index.html` as configured in `wrangler.jsonc`.</p>
11
+ <button id="button" type="button">Fetch a random UUID</button>
12
+ <output id="random" for="button"></output>
12
13
  <script>
13
14
  fetch('/message')
14
15
  .then((resp) => resp.text())
@@ -0,0 +1,9 @@
1
+ [project]
2
+ name = "<TBD>"
3
+ version = "0.1.0"
4
+ description = "Add your description here"
5
+ readme = "README.md"
6
+ requires-python = ">=3.12"
7
+ dependencies = [
8
+ "webtypy>=0.1.7",
9
+ ]
@@ -0,0 +1,11 @@
1
+ from workers import Response
2
+ from uuid import uuid4
3
+ from urllib.parse import urlparse
4
+
5
+ async def on_fetch(request, env):
6
+ url = urlparse(request.url)
7
+ if url.path == '/message':
8
+ return Response('Hello, World!')
9
+ if url.path == '/random':
10
+ return Response(uuid4())
11
+ return Response('Not Found', status=404)
@@ -0,0 +1,22 @@
1
+ version = 1
2
+ requires-python = ">=3.12"
3
+
4
+ [[package]]
5
+ name = "<TBD>"
6
+ version = "0.1.0"
7
+ source = { virtual = "." }
8
+ dependencies = [
9
+ { name = "webtypy" },
10
+ ]
11
+
12
+ [package.metadata]
13
+ requires-dist = [{ name = "webtypy", specifier = ">=0.1.7" }]
14
+
15
+ [[package]]
16
+ name = "webtypy"
17
+ version = "0.1.7"
18
+ source = { registry = "https://pypi.org/simple" }
19
+ sdist = { url = "https://files.pythonhosted.org/packages/5e/89/c7a0311fdc73809fc2415be97767f085ff3e00c86546430034dc8465fee7/webtypy-0.1.7.tar.gz", hash = "sha256:1b7212719a949c802f3d60fac5f0d952eb503a92121409cf1ad9847d7c76a336", size = 104505 }
20
+ wheels = [
21
+ { url = "https://files.pythonhosted.org/packages/61/91/c731bdaa605279e00b28bfd2bf0ae67f48061d16890fb1c026924bfbd242/webtypy-0.1.7-py3-none-any.whl", hash = "sha256:f35e6d73a4e08783e23adfac271a11cda3a2bd1105499db70e4819244efed0ae", size = 103519 },
22
+ ]
@@ -6,7 +6,7 @@
6
6
  "python_workers"
7
7
  ],
8
8
  "assets": {
9
- "binding": "ASSETS",
9
+ // The path to the directory containing the `index.html` file to be served at `/`
10
10
  "directory": "./public"
11
11
  },
12
12
  "observability": {
@@ -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.8.19",
14
14
  "typescript": "^5.5.2",
15
- "vitest": "~2.1.9",
15
+ "vitest": "~3.0.7",
16
16
  "wrangler": "^3.101.0"
17
17
  }
18
18
  }
@@ -7,8 +7,9 @@
7
7
  </head>
8
8
  <body>
9
9
  <h1 id="heading"></h1>
10
- <button id="button">Fetch a random UUID</button>
11
- <div id="random"></div>
10
+ <p>This page comes from a static asset stored at `public/index.html` as configured in `wrangler.jsonc`.</p>
11
+ <button id="button" type="button">Fetch a random UUID</button>
12
+ <output id="random" for="button"></output>
12
13
  <script>
13
14
  fetch('/message')
14
15
  .then((resp) => resp.text())
@@ -0,0 +1,3 @@
1
+ declare module 'cloudflare:test' {
2
+ interface ProvidedEnv extends Env {}
3
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "../tsconfig.json",
3
+ "compilerOptions": {
4
+ "types": ["@cloudflare/vitest-pool-workers"]
5
+ },
6
+ "include": ["./**/*.ts", "../worker-configuration.d.ts"],
7
+ "exclude": []
8
+ }
@@ -13,8 +13,6 @@
13
13
  "module": "es2022",
14
14
  /* Specify how TypeScript looks up a file from a given module specifier. */
15
15
  "moduleResolution": "Bundler",
16
- /* Specify type package names to be included without being referenced in a source file. */
17
- "types": ["@cloudflare/workers-types"],
18
16
  /* Enable importing .json files */
19
17
  "resolveJsonModule": true,
20
18
 
@@ -3,10 +3,10 @@
3
3
  "main": "src/index.ts",
4
4
  "compatibility_date": "<TBD>",
5
5
  "compatibility_flags": [
6
- "nodejs_compat"
6
+ "global_fetch_strictly_public"
7
7
  ],
8
8
  "assets": {
9
- "binding": "ASSETS",
9
+ // The path to the directory containing the `index.html` file to be served at `/`
10
10
  "directory": "./public"
11
11
  },
12
12
  "observability": {
@@ -1,69 +1,9 @@
1
- import { logRaw } from "@cloudflare/cli";
2
- import { brandColor, dim } from "@cloudflare/cli/colors";
3
- import { spinner } from "@cloudflare/cli/interactive";
4
- import { runFrameworkGenerator } from "frameworks/index";
5
- import { loadTemplateSnippets, transformFile } from "helpers/codemod";
6
- import { detectPackageManager } from "helpers/packageManagers";
7
- import type { TemplateConfig } from "../../src/templates";
8
- import type * as recast from "recast";
9
- import type { C3Context } from "types";
1
+ import pages from "./pages/c3";
2
+ import workers from "./workers/c3";
3
+ import type { MultiPlatformTemplateConfig } from "../../src/templates";
10
4
 
11
- const generate = async (ctx: C3Context) => {
12
- const { name: pm } = detectPackageManager();
13
-
14
- await runFrameworkGenerator(ctx, [
15
- ctx.project.name,
16
- "--template",
17
- "cloudflare-workers",
18
- "--install",
19
- "--pm",
20
- pm,
21
- ]);
22
-
23
- logRaw(""); // newline
24
- };
25
-
26
- const configure = async (ctx: C3Context) => {
27
- const indexFile = "src/index.ts";
28
-
29
- const s = spinner();
30
- s.start(`Updating \`${indexFile}\``);
31
-
32
- const snippets = loadTemplateSnippets(ctx);
33
-
34
- transformFile(indexFile, {
35
- visitVariableDeclarator(n) {
36
- if (n.node.id.type === "Identifier" && n.node.id.name === "app") {
37
- n.node.init = snippets
38
- .appDeclarationTs[0] as recast.types.namedTypes.NewExpression;
39
-
40
- return false;
41
- }
42
- },
43
- });
44
-
45
- s.stop(`${brandColor("updated")} \`${dim(indexFile)}\``);
46
- };
47
-
48
- const config: TemplateConfig = {
49
- configVersion: 1,
50
- id: "hono",
51
- frameworkCli: "create-hono",
5
+ const config: MultiPlatformTemplateConfig = {
52
6
  displayName: "Hono",
53
- copyFiles: {
54
- path: "./templates",
55
- },
56
- platform: "workers",
57
- generate,
58
- configure,
59
- transformPackageJson: async () => ({
60
- scripts: {
61
- dev: "wrangler dev",
62
- deploy: "wrangler deploy --minify",
63
- "cf-typegen": "wrangler types --env-interface CloudflareBindings",
64
- },
65
- }),
66
- devScript: "dev",
67
- deployScript: "deploy",
7
+ platformVariants: { pages, workers },
68
8
  };
69
9
  export default config;
@@ -0,0 +1,47 @@
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 generate = async (ctx: C3Context) => {
8
+ const { name: pm } = detectPackageManager();
9
+
10
+ await runFrameworkGenerator(ctx, [
11
+ ctx.project.name,
12
+ "--template",
13
+ "cloudflare-pages",
14
+ "--install",
15
+ "--pm",
16
+ pm,
17
+ ]);
18
+
19
+ logRaw(""); // newline
20
+ };
21
+
22
+ const envInterfaceName = "CloudflareBindings";
23
+
24
+ const config: TemplateConfig = {
25
+ configVersion: 1,
26
+ id: "hono",
27
+ frameworkCli: "create-hono",
28
+ displayName: "Hono",
29
+ copyFiles: {
30
+ path: "./templates",
31
+ },
32
+ path: "templates/hono/pages",
33
+ platform: "pages",
34
+ hidden: true,
35
+ generate,
36
+ transformPackageJson: async () => ({
37
+ scripts: {
38
+ "cf-typegen": `wrangler types --env-interface ${envInterfaceName}`,
39
+ preview: "vite build && wrangler pages dev",
40
+ },
41
+ }),
42
+ devScript: "dev",
43
+ deployScript: "deploy",
44
+ previewScript: "preview",
45
+ envInterfaceName,
46
+ };
47
+ export default config;
@@ -0,0 +1,12 @@
1
+ import { Hono } from 'hono'
2
+ import { renderer } from './renderer'
3
+
4
+ const app = new Hono<{ Bindings: CloudflareBindings }>();
5
+
6
+ app.use(renderer)
7
+
8
+ app.get('/', (c) => {
9
+ return c.render(<h1>Hello!</h1>)
10
+ })
11
+
12
+ export default app
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "<TBD>",
3
- "main": "src/index.ts",
4
3
  "compatibility_date": "<TBD>",
4
+ "pages_build_output_dir": "./dist",
5
5
  "observability": {
6
6
  "enabled": true
7
7
  }
@@ -1,7 +1,7 @@
1
1
  import { logRaw } from "@cloudflare/cli";
2
2
  import { runFrameworkGenerator } from "frameworks/index";
3
3
  import { detectPackageManager } from "helpers/packageManagers";
4
- import type { TemplateConfig } from "../../src/templates";
4
+ import type { TemplateConfig } from "../../../src/templates";
5
5
  import type { C3Context } from "types";
6
6
 
7
7
  const generate = async (ctx: C3Context) => {
@@ -19,6 +19,7 @@ const generate = async (ctx: C3Context) => {
19
19
  logRaw(""); // newline
20
20
  };
21
21
 
22
+ const envInterfaceName = "CloudflareBindings";
22
23
  const config: TemplateConfig = {
23
24
  configVersion: 1,
24
25
  id: "hono",
@@ -28,16 +29,16 @@ const config: TemplateConfig = {
28
29
  path: "./templates",
29
30
  },
30
31
  platform: "workers",
31
- path: "templates-experimental/hono",
32
+ path: "templates/hono/workers",
32
33
  generate,
33
34
  transformPackageJson: async () => ({
34
35
  scripts: {
35
- dev: "wrangler dev",
36
- deploy: "wrangler deploy --minify",
37
- "cf-typegen": "wrangler types --env-interface CloudflareBindings",
36
+ "cf-typegen": `wrangler types --env-interface ${envInterfaceName}`,
38
37
  },
39
38
  }),
40
39
  devScript: "dev",
41
40
  deployScript: "deploy",
41
+ previewScript: "dev",
42
+ envInterfaceName,
42
43
  };
43
44
  export default config;
@@ -1,220 +1,9 @@
1
- import { join } from "path";
2
- import { updateStatus, warn } from "@cloudflare/cli";
3
- import { brandColor, dim } from "@cloudflare/cli/colors";
4
- import { inputPrompt, spinner } from "@cloudflare/cli/interactive";
5
- import { runFrameworkGenerator } from "frameworks/index";
6
- import {
7
- copyFile,
8
- probePaths,
9
- readFile,
10
- readJSON,
11
- usesEslint,
12
- usesTypescript,
13
- writeFile,
14
- writeJSON,
15
- } from "helpers/files";
16
- import { detectPackageManager } from "helpers/packageManagers";
17
- import { installPackages } from "helpers/packages";
18
- import { getTemplatePath } from "../../src/templates";
19
- import type { TemplateConfig } from "../../src/templates";
20
- import type { C3Context } from "types";
1
+ import pages from "./pages/c3";
2
+ import workers from "./workers/c3";
3
+ import type { MultiPlatformTemplateConfig } from "../../src/templates";
21
4
 
22
- const { npm, npx } = detectPackageManager();
23
-
24
- const generate = async (ctx: C3Context) => {
25
- const projectName = ctx.project.name;
26
-
27
- await runFrameworkGenerator(ctx, [projectName]);
28
-
29
- const wranglerConfig = readFile(join(getTemplatePath(ctx), "wrangler.jsonc"));
30
- writeFile(join(ctx.project.path, "wrangler.jsonc"), wranglerConfig);
31
- updateStatus("Created wrangler.jsonc file");
32
- };
33
-
34
- const updateNextConfig = (usesTs: boolean) => {
35
- const s = spinner();
36
-
37
- const configFile = `next.config.${usesTs ? "ts" : "mjs"}`;
38
- s.start(`Updating \`${configFile}\``);
39
-
40
- const configContent = readFile(configFile);
41
-
42
- const updatedConfigFile =
43
- `import { setupDevPlatform } from '@cloudflare/next-on-pages/next-dev';
44
-
45
- // Here we use the @cloudflare/next-on-pages next-dev module to allow us to
46
- // use bindings during local development (when running the application with
47
- // \`next dev\`). This function is only necessary during development and
48
- // has no impact outside of that. For more information see:
49
- // https://github.com/cloudflare/next-on-pages/blob/main/internal-packages/next-dev/README.md
50
- setupDevPlatform().catch(console.error);
51
-
52
- `.replace(/\n\t*/g, "\n") + configContent;
53
-
54
- writeFile(configFile, updatedConfigFile);
55
-
56
- s.stop(`${brandColor(`updated`)} ${dim(`\`${configFile}\``)}`);
57
- };
58
-
59
- const configure = async (ctx: C3Context) => {
60
- const projectPath = ctx.project.path;
61
-
62
- // Add a compatible function handler example
63
- const path = probePaths([
64
- `${projectPath}/pages/api`,
65
- `${projectPath}/src/pages/api`,
66
- `${projectPath}/src/app/api`,
67
- `${projectPath}/app/api`,
68
- `${projectPath}/src/app`,
69
- `${projectPath}/app`,
70
- ]);
71
-
72
- if (!path) {
73
- throw new Error("Could not find the `/api` or `/app` directory");
74
- }
75
-
76
- const usesTs = usesTypescript(ctx);
77
-
78
- if (usesTs) {
79
- copyFile(
80
- join(getTemplatePath(ctx), "env.d.ts"),
81
- join(projectPath, "env.d.ts"),
82
- );
83
- updateStatus("Created an env.d.ts file");
84
- }
85
-
86
- const installEslintPlugin = await shouldInstallNextOnPagesEslintPlugin(ctx);
87
-
88
- if (installEslintPlugin) {
89
- await writeEslintrc(ctx);
90
- }
91
-
92
- updateNextConfig(usesTs);
93
-
94
- copyFile(
95
- join(getTemplatePath(ctx), "README.md"),
96
- join(projectPath, "README.md"),
97
- );
98
- updateStatus("Updated the README file");
99
-
100
- await addDevDependencies(installEslintPlugin);
101
- };
102
-
103
- export const shouldInstallNextOnPagesEslintPlugin = async (
104
- ctx: C3Context,
105
- ): Promise<boolean> => {
106
- const eslintUsage = usesEslint(ctx);
107
-
108
- if (!eslintUsage.used) {
109
- return false;
110
- }
111
-
112
- if (eslintUsage.configType !== ".eslintrc.json") {
113
- warn(
114
- `Expected .eslintrc.json from Next.js scaffolding but found ${eslintUsage.configType} instead`,
115
- );
116
- return false;
117
- }
118
-
119
- return await inputPrompt({
120
- type: "confirm",
121
- question: "Do you want to use the next-on-pages eslint-plugin?",
122
- label: "eslint-plugin",
123
- defaultValue: true,
124
- });
125
- };
126
-
127
- export const writeEslintrc = async (ctx: C3Context): Promise<void> => {
128
- const eslintConfig = readJSON(`${ctx.project.path}/.eslintrc.json`);
129
-
130
- eslintConfig.plugins ??= [];
131
- eslintConfig.plugins.push("eslint-plugin-next-on-pages");
132
-
133
- if (typeof eslintConfig.extends === "string") {
134
- eslintConfig.extends = [eslintConfig.extends];
135
- }
136
- eslintConfig.extends ??= [];
137
- eslintConfig.extends.push("plugin:eslint-plugin-next-on-pages/recommended");
138
-
139
- writeJSON(`${ctx.project.path}/.eslintrc.json`, eslintConfig);
140
- };
141
-
142
- const addDevDependencies = async (installEslintPlugin: boolean) => {
143
- const packages = [
144
- "@cloudflare/next-on-pages@1",
145
- "@cloudflare/workers-types",
146
- "vercel",
147
- ...(installEslintPlugin ? ["eslint-plugin-next-on-pages"] : []),
148
- ];
149
- await installPackages(packages, {
150
- dev: true,
151
- startText: "Adding the Cloudflare Pages adapter",
152
- doneText: `${brandColor(`installed`)} ${dim(packages.join(", "))}`,
153
- });
154
- };
155
-
156
- export default {
157
- configVersion: 1,
158
- id: "next",
159
- frameworkCli: "create-next-app",
160
- platform: "pages",
5
+ const config: MultiPlatformTemplateConfig = {
161
6
  displayName: "Next.js",
162
- generate,
163
- configure,
164
- copyFiles: {
165
- async selectVariant(ctx) {
166
- const isApp = probePaths([
167
- `${ctx.project.path}/src/app`,
168
- `${ctx.project.path}/app`,
169
- ]);
170
-
171
- const isTypescript = usesTypescript(ctx);
172
-
173
- const dir = isApp ? "app" : "pages";
174
- return `${dir}/${isTypescript ? "ts" : "js"}`;
175
- },
176
- destinationDir(ctx) {
177
- const srcPath = probePaths([`${ctx.project.path}/src`]);
178
- return srcPath ? "./src" : "./";
179
- },
180
- variants: {
181
- "app/ts": {
182
- path: "./app/ts",
183
- },
184
- "app/js": {
185
- path: "./app/js",
186
- },
187
- "pages/ts": {
188
- path: "./pages/ts",
189
- },
190
- "pages/js": {
191
- path: "./pages/js",
192
- },
193
- },
194
- },
195
- transformPackageJson: async (_, ctx) => {
196
- const isNpm = npm === "npm";
197
- const isBun = npm === "bun";
198
- const isNpmOrBun = isNpm || isBun;
199
- const nextOnPagesScope = isNpmOrBun ? "@cloudflare/" : "";
200
- const nextOnPagesCommand = `${nextOnPagesScope}next-on-pages`;
201
- const pmCommand = isNpmOrBun ? npx : npm;
202
- const pagesBuildRunCommand = `${
203
- isNpm ? "npm run" : isBun ? "bun" : pmCommand
204
- } pages:build`;
205
- return {
206
- scripts: {
207
- "pages:build": `${pmCommand} ${nextOnPagesCommand}`,
208
- preview: `${pagesBuildRunCommand} && wrangler pages dev`,
209
- deploy: `${pagesBuildRunCommand} && wrangler pages deploy`,
210
- ...(usesTypescript(ctx) && {
211
- "cf-typegen": `wrangler types --env-interface CloudflareEnv env.d.ts`,
212
- }),
213
- },
214
- };
215
- },
216
- devScript: "dev",
217
- previewScript: "preview",
218
- deployScript: "deploy",
219
- compatibilityFlags: ["nodejs_compat"],
220
- } as TemplateConfig;
7
+ platformVariants: { pages, workers },
8
+ };
9
+ export default config;