create-cloudflare 0.0.0-e51a43c7 → 0.0.0-e55f489db

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 (310) hide show
  1. package/README.md +1 -1
  2. package/dist/cli.js +62741 -62238
  3. package/dist/tsconfig.tsbuildinfo +1 -1
  4. package/package.json +35 -24
  5. package/templates/analog/c3.ts +1 -0
  6. package/templates/analog/templates/worker-configuration.d.ts +1 -1
  7. package/templates/analog/templates/wrangler.jsonc +5 -0
  8. package/templates/angular/c3.ts +5 -96
  9. package/templates/angular/pages/c3.ts +135 -0
  10. package/templates/angular/pages/templates/src/server.ts +15 -0
  11. package/templates/angular/pages/templates/tools/copy-files.mjs +15 -0
  12. package/templates/angular/workers/c3.ts +130 -0
  13. package/templates/angular/workers/templates/src/server.ts +15 -0
  14. package/templates/angular/workers/templates/wrangler.jsonc +12 -0
  15. package/templates/astro/c3.ts +5 -108
  16. package/templates/astro/pages/c3.ts +99 -0
  17. package/templates/astro/pages/templates/js/wrangler.jsonc +8 -0
  18. package/templates/astro/pages/templates/ts/worker-configuration.d.ts +4 -0
  19. package/templates/astro/pages/templates/ts/wrangler.jsonc +8 -0
  20. package/templates/astro/workers/c3.ts +98 -0
  21. package/templates/astro/workers/templates/js/public/.assetsignore +2 -0
  22. package/templates/astro/workers/templates/js/wrangler.jsonc +15 -0
  23. package/templates/astro/workers/templates/ts/public/.assetsignore +2 -0
  24. package/templates/astro/workers/templates/ts/src/env.d.ts +5 -0
  25. package/templates/astro/workers/templates/ts/worker-configuration.d.ts +4 -0
  26. package/templates/astro/workers/templates/ts/wrangler.jsonc +15 -0
  27. package/templates/common/c3.ts +8 -1
  28. package/templates/common/js/package.json +1 -1
  29. package/templates/common/js/wrangler.jsonc +8 -0
  30. package/templates/common/ts/package.json +2 -2
  31. package/templates/common/ts/src/ab-test.ts +2 -2
  32. package/templates/common/ts/src/index.ts +3 -3
  33. package/templates/common/ts/src/proxy.ts +2 -2
  34. package/templates/common/ts/src/redirect.ts +2 -2
  35. package/templates/common/ts/tsconfig.json +37 -95
  36. package/templates/common/ts/worker-configuration.d.ts +1 -1
  37. package/templates/common/ts/wrangler.jsonc +8 -0
  38. package/templates/docusaurus/c3.ts +5 -22
  39. package/templates/docusaurus/pages/c3.ts +31 -0
  40. package/templates/docusaurus/workers/c3.ts +33 -0
  41. package/templates/docusaurus/workers/templates/wrangler.jsonc +10 -0
  42. package/templates/gatsby/c3.ts +5 -44
  43. package/templates/gatsby/pages/c3.ts +51 -0
  44. package/templates/gatsby/workers/c3.ts +53 -0
  45. package/templates/gatsby/workers/templates/wrangler.jsonc +10 -0
  46. package/templates/hello-world/c3.ts +23 -2
  47. package/templates/hello-world/js/package.json +3 -3
  48. package/templates/hello-world/js/test/index.spec.js +1 -1
  49. package/templates/hello-world/js/vitest.config.js +8 -8
  50. package/templates/hello-world/js/wrangler.jsonc +8 -0
  51. package/templates/hello-world/py/.python-version +1 -0
  52. package/templates/hello-world/py/README.md +23 -0
  53. package/templates/hello-world/py/__dot__gitignore +68 -0
  54. package/templates/hello-world/py/package.json +13 -0
  55. package/templates/hello-world/py/pyproject.toml +9 -0
  56. package/templates/hello-world/py/src/entry.py +5 -0
  57. package/templates/hello-world/py/uv.lock +22 -0
  58. package/templates/hello-world/py/wrangler.jsonc +9 -0
  59. package/templates/hello-world/ts/package.json +4 -4
  60. package/templates/hello-world/ts/src/index.ts +3 -3
  61. package/templates/hello-world/ts/test/env.d.ts +3 -0
  62. package/templates/hello-world/ts/test/tsconfig.json +6 -9
  63. package/templates/hello-world/ts/tsconfig.json +38 -96
  64. package/templates/hello-world/ts/vitest.config.mts +11 -0
  65. package/templates/hello-world/ts/worker-configuration.d.ts +7 -3
  66. package/templates/hello-world/ts/wrangler.jsonc +8 -0
  67. package/templates/hello-world-assets-only/c3.ts +16 -0
  68. package/templates/{hello-world-python/py → hello-world-assets-only/templates}/package.json +1 -1
  69. package/templates/hello-world-assets-only/templates/public/index.html +11 -0
  70. package/templates/hello-world-assets-only/templates/wrangler.jsonc +10 -0
  71. package/templates/hello-world-durable-object/c3.ts +10 -2
  72. package/templates/hello-world-durable-object/js/package.json +1 -1
  73. package/templates/hello-world-durable-object/js/src/index.js +13 -12
  74. package/templates/hello-world-durable-object/js/wrangler.jsonc +24 -0
  75. package/templates/hello-world-durable-object/py/.python-version +1 -0
  76. package/templates/hello-world-durable-object/py/README.md +23 -0
  77. package/templates/hello-world-durable-object/py/__dot__gitignore +68 -0
  78. package/templates/hello-world-durable-object/py/package.json +13 -0
  79. package/templates/hello-world-durable-object/py/pyproject.toml +9 -0
  80. package/templates/hello-world-durable-object/py/src/entry.py +66 -0
  81. package/templates/hello-world-durable-object/py/uv.lock +22 -0
  82. package/templates/hello-world-durable-object/py/wrangler.jsonc +27 -0
  83. package/templates/hello-world-durable-object/ts/package.json +2 -2
  84. package/templates/hello-world-durable-object/ts/src/index.ts +16 -36
  85. package/templates/hello-world-durable-object/ts/tsconfig.json +36 -95
  86. package/templates/hello-world-durable-object/ts/worker-configuration.d.ts +6 -5
  87. package/templates/hello-world-durable-object/ts/wrangler.jsonc +24 -0
  88. package/templates/hello-world-durable-object-with-assets/c3.ts +26 -0
  89. package/templates/hello-world-durable-object-with-assets/js/.editorconfig +12 -0
  90. package/templates/hello-world-durable-object-with-assets/js/.prettierrc +6 -0
  91. package/templates/hello-world-durable-object-with-assets/js/__dot__gitignore +172 -0
  92. package/templates/hello-world-durable-object-with-assets/js/package.json +13 -0
  93. package/templates/hello-world-durable-object-with-assets/js/public/index.html +19 -0
  94. package/templates/hello-world-durable-object-with-assets/js/src/index.js +70 -0
  95. package/templates/hello-world-durable-object-with-assets/js/wrangler.jsonc +28 -0
  96. package/templates/hello-world-durable-object-with-assets/py/.python-version +1 -0
  97. package/templates/hello-world-durable-object-with-assets/py/README.md +23 -0
  98. package/templates/hello-world-durable-object-with-assets/py/package.json +13 -0
  99. package/templates/hello-world-durable-object-with-assets/py/public/index.html +19 -0
  100. package/templates/hello-world-durable-object-with-assets/py/pyproject.toml +9 -0
  101. package/templates/hello-world-durable-object-with-assets/py/src/entry.py +66 -0
  102. package/templates/hello-world-durable-object-with-assets/py/uv.lock +22 -0
  103. package/templates/hello-world-durable-object-with-assets/py/wrangler.jsonc +31 -0
  104. package/templates/hello-world-durable-object-with-assets/ts/.editorconfig +12 -0
  105. package/templates/hello-world-durable-object-with-assets/ts/.prettierrc +6 -0
  106. package/templates/hello-world-durable-object-with-assets/ts/__dot__gitignore +172 -0
  107. package/templates/hello-world-durable-object-with-assets/ts/package.json +15 -0
  108. package/templates/hello-world-durable-object-with-assets/ts/public/index.html +19 -0
  109. package/templates/hello-world-durable-object-with-assets/ts/src/index.ts +67 -0
  110. package/templates/hello-world-durable-object-with-assets/ts/tsconfig.json +42 -0
  111. package/templates/hello-world-durable-object-with-assets/ts/worker-configuration.d.ts +8 -0
  112. package/templates/hello-world-durable-object-with-assets/ts/wrangler.jsonc +28 -0
  113. package/templates/hello-world-with-assets/c3.ts +25 -0
  114. package/templates/hello-world-with-assets/js/.editorconfig +12 -0
  115. package/templates/hello-world-with-assets/js/.prettierrc +6 -0
  116. package/templates/hello-world-with-assets/js/__dot__gitignore +172 -0
  117. package/templates/hello-world-with-assets/js/package.json +16 -0
  118. package/templates/hello-world-with-assets/js/public/index.html +31 -0
  119. package/templates/hello-world-with-assets/js/src/index.js +23 -0
  120. package/templates/hello-world-with-assets/js/test/index.spec.js +41 -0
  121. package/templates/hello-world-with-assets/js/vitest.config.js +11 -0
  122. package/templates/hello-world-with-assets/js/wrangler.jsonc +15 -0
  123. package/templates/hello-world-with-assets/py/.python-version +1 -0
  124. package/templates/hello-world-with-assets/py/README.md +23 -0
  125. package/templates/hello-world-with-assets/py/__dot__gitignore +68 -0
  126. package/templates/hello-world-with-assets/py/package.json +13 -0
  127. package/templates/hello-world-with-assets/py/public/index.html +31 -0
  128. package/templates/hello-world-with-assets/py/pyproject.toml +9 -0
  129. package/templates/hello-world-with-assets/py/src/entry.py +11 -0
  130. package/templates/hello-world-with-assets/py/uv.lock +22 -0
  131. package/templates/hello-world-with-assets/py/wrangler.jsonc +15 -0
  132. package/templates/hello-world-with-assets/ts/.editorconfig +12 -0
  133. package/templates/hello-world-with-assets/ts/.prettierrc +6 -0
  134. package/templates/hello-world-with-assets/ts/__dot__gitignore +172 -0
  135. package/templates/hello-world-with-assets/ts/package.json +18 -0
  136. package/templates/hello-world-with-assets/ts/public/index.html +31 -0
  137. package/templates/hello-world-with-assets/ts/src/index.ts +26 -0
  138. package/templates/hello-world-with-assets/ts/test/env.d.ts +3 -0
  139. package/templates/hello-world-with-assets/ts/test/index.spec.ts +41 -0
  140. package/templates/hello-world-with-assets/ts/test/tsconfig.json +8 -0
  141. package/templates/hello-world-with-assets/ts/tsconfig.json +44 -0
  142. package/templates/hello-world-with-assets/ts/vitest.config.mts +11 -0
  143. package/templates/hello-world-with-assets/ts/worker-configuration.d.ts +7 -0
  144. package/templates/hello-world-with-assets/ts/wrangler.jsonc +15 -0
  145. package/templates/hono/c3.ts +5 -74
  146. package/templates/hono/pages/c3.ts +44 -0
  147. package/templates/hono/pages/templates/src/index.tsx +12 -0
  148. package/templates/hono/pages/templates/worker-configuration.d.ts +4 -0
  149. package/templates/hono/pages/templates/wrangler.jsonc +8 -0
  150. package/templates/hono/workers/c3.ts +42 -0
  151. package/templates/hono/workers/templates/public/index.html +19 -0
  152. package/templates/hono/workers/templates/src/index.ts +9 -0
  153. package/templates/hono/workers/templates/worker-configuration.d.ts +4 -0
  154. package/templates/hono/workers/templates/wrangler.jsonc +9 -0
  155. package/templates/next/c3.ts +7 -236
  156. package/templates/next/{README.md → pages/README.md} +4 -5
  157. package/templates/next/{app → pages/app}/js/app/api/hello/route.js +4 -4
  158. package/templates/next/{app → pages/app}/ts/app/api/hello/route.ts +4 -5
  159. package/templates/next/pages/c3.ts +225 -0
  160. package/templates/next/pages/wrangler.jsonc +8 -0
  161. package/templates/next/workers/c3.ts +69 -0
  162. package/templates/next/workers/templates/.dev.vars +2 -0
  163. package/templates/next/workers/templates/__dot__gitignore +39 -0
  164. package/templates/next/workers/templates/cloudflare-env.d.ts +5 -0
  165. package/templates/next/workers/templates/open-next.config.ts +9 -0
  166. package/templates/next/workers/templates/wrangler.jsonc +13 -0
  167. package/templates/nuxt/c3.ts +5 -130
  168. package/templates/nuxt/pages/c3.ts +147 -0
  169. package/templates/nuxt/pages/templates/worker-configuration.d.ts +4 -0
  170. package/templates/nuxt/pages/templates/wrangler.jsonc +5 -0
  171. package/templates/nuxt/workers/c3.ts +146 -0
  172. package/templates/nuxt/workers/templates/env.d.ts +14 -0
  173. package/templates/nuxt/workers/templates/worker-configuration.d.ts +4 -0
  174. package/templates/nuxt/workers/templates/wrangler.jsonc +12 -0
  175. package/templates/openapi/c3.ts +6 -1
  176. package/templates/openapi/ts/README.md +3 -3
  177. package/templates/openapi/ts/__dot__gitignore +1 -0
  178. package/templates/openapi/ts/package.json +7 -4
  179. package/templates/openapi/ts/src/endpoints/taskCreate.ts +27 -17
  180. package/templates/openapi/ts/src/endpoints/taskDelete.ts +21 -20
  181. package/templates/openapi/ts/src/endpoints/taskFetch.ts +31 -24
  182. package/templates/openapi/ts/src/endpoints/taskList.ts +28 -25
  183. package/templates/openapi/ts/src/index.ts +16 -19
  184. package/templates/openapi/ts/src/types.ts +12 -8
  185. package/templates/openapi/ts/tsconfig.json +18 -20
  186. package/templates/openapi/ts/worker-configuration.d.ts +1 -1
  187. package/templates/openapi/ts/wrangler.jsonc +8 -0
  188. package/templates/pre-existing/c3.ts +37 -14
  189. package/templates/pre-existing/js/package.json +1 -1
  190. package/templates/queues/c3.ts +7 -1
  191. package/templates/queues/js/package.json +1 -1
  192. package/templates/queues/js/wrangler.jsonc +21 -0
  193. package/templates/queues/ts/package.json +2 -2
  194. package/templates/queues/ts/src/index.ts +4 -4
  195. package/templates/queues/ts/tsconfig.json +36 -95
  196. package/templates/queues/ts/worker-configuration.d.ts +1 -1
  197. package/templates/queues/ts/wrangler.jsonc +21 -0
  198. package/templates/qwik/c3.ts +5 -142
  199. package/templates/qwik/pages/c3.ts +150 -0
  200. package/templates/qwik/pages/templates/worker-configuration.d.ts +4 -0
  201. package/templates/qwik/pages/templates/wrangler.jsonc +8 -0
  202. package/templates/qwik/workers/c3.ts +152 -0
  203. package/templates/qwik/workers/snippets/getPlatformProxy.ts +6 -0
  204. package/templates/qwik/workers/templates/public/.assetsignore +4 -0
  205. package/templates/qwik/workers/templates/worker-configuration.d.ts +4 -0
  206. package/templates/qwik/workers/templates/wrangler.jsonc +15 -0
  207. package/templates/react/c3.ts +5 -27
  208. package/templates/react/pages/c3.ts +63 -0
  209. package/templates/react/workers/c3.ts +183 -0
  210. package/templates/react/workers/js/src/App.css +45 -0
  211. package/templates/react/workers/js/src/App.jsx +58 -0
  212. package/templates/react/workers/js/src/assets/Cloudflare_Logo.svg +53 -0
  213. package/templates/react/workers/js/worker/index.js +13 -0
  214. package/templates/react/workers/js/wrangler.jsonc +9 -0
  215. package/templates/react/workers/ts/src/App.css +45 -0
  216. package/templates/react/workers/ts/src/App.tsx +58 -0
  217. package/templates/react/workers/ts/src/assets/Cloudflare_Logo.svg +51 -0
  218. package/templates/react/workers/ts/tsconfig.worker.json +8 -0
  219. package/templates/react/workers/ts/worker/index.ts +12 -0
  220. package/templates/react/workers/ts/worker-configuration.d.ts +5 -0
  221. package/templates/react/workers/ts/wrangler.jsonc +9 -0
  222. package/templates/react-router/c3.ts +53 -0
  223. package/templates/react-router/templates/worker-configuration.d.ts +8 -0
  224. package/templates/remix/c3.ts +6 -62
  225. package/templates/remix/pages/c3.ts +69 -0
  226. package/templates/remix/pages/templates/worker-configuration.d.ts +4 -0
  227. package/templates/remix/pages/templates/wrangler.jsonc +5 -0
  228. package/templates/remix/workers/c3.ts +52 -0
  229. package/templates/remix/workers/templates/public/.assetsignore +0 -0
  230. package/templates/remix/workers/templates/wrangler.toml +11 -0
  231. package/templates/scheduled/c3.ts +7 -1
  232. package/templates/scheduled/js/package.json +1 -1
  233. package/templates/scheduled/js/src/index.js +1 -1
  234. package/templates/scheduled/js/wrangler.jsonc +13 -0
  235. package/templates/scheduled/ts/package.json +2 -2
  236. package/templates/scheduled/ts/src/index.ts +13 -6
  237. package/templates/scheduled/ts/tsconfig.json +36 -95
  238. package/templates/scheduled/ts/worker-configuration.d.ts +1 -1
  239. package/templates/scheduled/ts/wrangler.jsonc +13 -0
  240. package/templates/solid/c3.ts +9 -6
  241. package/templates/solid/templates/wrangler.jsonc +8 -0
  242. package/templates/svelte/c3.ts +6 -127
  243. package/templates/svelte/pages/c3.ts +160 -0
  244. package/templates/svelte/pages/templates/wrangler.jsonc +5 -0
  245. package/templates/svelte/workers/c3.ts +129 -0
  246. package/templates/svelte/workers/templates/static/.assetsignore +2 -0
  247. package/templates/svelte/workers/templates/wrangler.jsonc +12 -0
  248. package/templates/vue/c3.ts +5 -24
  249. package/templates/vue/pages/c3.ts +31 -0
  250. package/templates/vue/workers/c3.ts +98 -0
  251. package/templates/vue/workers/js/server/index.js +13 -0
  252. package/templates/vue/workers/js/src/App.vue +107 -0
  253. package/templates/vue/workers/js/src/components/HelloWorld.vue +47 -0
  254. package/templates/vue/workers/js/vite.config.js +21 -0
  255. package/templates/vue/workers/js/wrangler.jsonc +11 -0
  256. package/templates/vue/workers/ts/server/index.ts +12 -0
  257. package/templates/vue/workers/ts/src/App.vue +107 -0
  258. package/templates/vue/workers/ts/src/components/HelloWorld.vue +44 -0
  259. package/templates/vue/workers/ts/tsconfig.worker.json +8 -0
  260. package/templates/vue/workers/ts/vite.config.ts +21 -0
  261. package/templates/vue/workers/ts/worker-configuration.d.ts +6 -0
  262. package/templates/vue/workers/ts/wrangler.jsonc +11 -0
  263. package/templates-experimental/solid/c3.ts +94 -0
  264. package/templates-experimental/solid/templates/wrangler.jsonc +15 -0
  265. package/templates/analog/templates/wrangler.toml +0 -85
  266. package/templates/angular/templates/server.ts +0 -34
  267. package/templates/angular/templates/tools/alter-polyfills.mjs +0 -27
  268. package/templates/angular/templates/tools/copy-files.mjs +0 -9
  269. package/templates/angular/templates/tools/paths.mjs +0 -9
  270. package/templates/astro/templates/wrangler.toml +0 -85
  271. package/templates/common/js/wrangler.toml +0 -107
  272. package/templates/common/ts/wrangler.toml +0 -107
  273. package/templates/hello-world/js/wrangler.toml +0 -108
  274. package/templates/hello-world/ts/vitest.config.ts +0 -11
  275. package/templates/hello-world/ts/wrangler.toml +0 -108
  276. package/templates/hello-world-durable-object/js/wrangler.toml +0 -107
  277. package/templates/hello-world-durable-object/ts/wrangler.toml +0 -107
  278. package/templates/hello-world-python/c3.ts +0 -9
  279. package/templates/hello-world-python/py/src/entry.py +0 -4
  280. package/templates/hello-world-python/py/wrangler.toml +0 -108
  281. package/templates/hono/snippets/appDeclaration.ts +0 -1
  282. package/templates/hono/snippets/bindingsType.ts +0 -3
  283. package/templates/hono/templates/worker-configuration.d.ts +0 -4
  284. package/templates/hono/templates/wrangler.toml +0 -107
  285. package/templates/next/wrangler.toml +0 -86
  286. package/templates/nuxt/templates/wrangler.toml +0 -85
  287. package/templates/openapi/ts/wrangler.toml +0 -107
  288. package/templates/pre-existing/js/wrangler.toml +0 -4
  289. package/templates/queues/js/wrangler.toml +0 -112
  290. package/templates/queues/ts/wrangler.toml +0 -112
  291. package/templates/qwik/templates/worker-configuration.d.ts +0 -4
  292. package/templates/qwik/templates/wrangler.toml +0 -85
  293. package/templates/remix/templates/worker-configuration.d.ts +0 -4
  294. package/templates/remix/templates/wrangler.toml +0 -85
  295. package/templates/scheduled/js/wrangler.toml +0 -113
  296. package/templates/scheduled/ts/wrangler.toml +0 -113
  297. package/templates/solid/templates/wrangler.toml +0 -84
  298. package/templates/svelte/js/wrangler.toml +0 -85
  299. package/templates/svelte/ts/wrangler.toml +0 -85
  300. /package/templates/angular/{templates → pages/templates}/src/_routes.json +0 -0
  301. /package/templates/astro/{snippets/runtimeDeclaration.ts → pages/templates/ts/src/env.d.ts} +0 -0
  302. /package/templates/{hello-world-python → hello-world-durable-object-with-assets}/py/__dot__gitignore +0 -0
  303. /package/templates/next/{app → pages/app}/js/app/not-found.js +0 -0
  304. /package/templates/next/{app → pages/app}/ts/app/not-found.tsx +0 -0
  305. /package/templates/next/{env.d.ts → pages/env.d.ts} +0 -0
  306. /package/templates/next/pages/{js → pages/js}/pages/api/hello.js +0 -0
  307. /package/templates/next/pages/{ts → pages/ts}/pages/api/hello.ts +0 -0
  308. /package/templates/nuxt/{templates → pages/templates}/env.d.ts +0 -0
  309. /package/templates/qwik/{snippets → pages/snippets}/getPlatformProxy.ts +0 -0
  310. /package/templates/{nuxt → remix/workers}/templates/worker-configuration.d.ts +0 -0
@@ -1,112 +1,9 @@
1
- import { logRaw, updateStatus } from "@cloudflare/cli";
2
- import { blue, brandColor, dim } from "@cloudflare/cli/colors";
3
- import { runFrameworkGenerator } from "frameworks/index";
4
- import { loadTemplateSnippets, transformFile } from "helpers/codemod";
5
- import { runCommand } from "helpers/command";
6
- import { usesTypescript } from "helpers/files";
7
- import { detectPackageManager } from "helpers/packageManagers";
8
- import * as recast from "recast";
9
- import type { TemplateConfig } from "../../src/templates";
10
- import type { C3Context, PackageJson } from "types";
1
+ import pages from "./pages/c3";
2
+ import workers from "./workers/c3";
3
+ import type { MultiPlatformTemplateConfig } from "../../src/templates";
11
4
 
12
- const { npx } = detectPackageManager();
13
-
14
- const generate = async (ctx: C3Context) => {
15
- await runFrameworkGenerator(ctx, [ctx.project.name, "--no-install"]);
16
-
17
- logRaw(""); // newline
18
- };
19
-
20
- const configure = async (ctx: C3Context) => {
21
- await runCommand([npx, "astro", "add", "cloudflare", "-y"], {
22
- silent: true,
23
- startText: "Installing adapter",
24
- doneText: `${brandColor("installed")} ${dim(
25
- `via \`${npx} astro add cloudflare\``,
26
- )}`,
27
- });
28
-
29
- updateAstroConfig();
30
- updateEnvDeclaration(ctx);
31
- };
32
-
33
- const updateAstroConfig = () => {
34
- const filePath = "astro.config.mjs";
35
-
36
- updateStatus(`Updating configuration in ${blue(filePath)}`);
37
-
38
- transformFile(filePath, {
39
- visitCallExpression: function (n) {
40
- const callee = n.node.callee as recast.types.namedTypes.Identifier;
41
- if (callee.name !== "cloudflare") {
42
- return this.traverse(n);
43
- }
44
-
45
- const b = recast.types.builders;
46
- n.node.arguments = [
47
- b.objectExpression([
48
- b.objectProperty(
49
- b.identifier("platformProxy"),
50
- b.objectExpression([
51
- b.objectProperty(b.identifier("enabled"), b.booleanLiteral(true)),
52
- ]),
53
- ),
54
- ]),
55
- ];
56
-
57
- return false;
58
- },
59
- });
60
- };
61
-
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
- const config: TemplateConfig = {
92
- configVersion: 1,
93
- id: "astro",
94
- platform: "pages",
5
+ const config: MultiPlatformTemplateConfig = {
95
6
  displayName: "Astro",
96
- copyFiles: {
97
- path: "./templates",
98
- },
99
- devScript: "dev",
100
- deployScript: "deploy",
101
- previewScript: "preview",
102
- generate,
103
- configure,
104
- transformPackageJson: async (pkgJson: PackageJson, ctx: C3Context) => ({
105
- scripts: {
106
- deploy: `astro build && wrangler pages deploy`,
107
- preview: `astro build && wrangler pages dev`,
108
- ...(usesTypescript(ctx) && { "cf-typegen": `wrangler types` }),
109
- },
110
- }),
7
+ platformVariants: { pages, workers },
111
8
  };
112
9
  export default config;
@@ -0,0 +1,99 @@
1
+ import { logRaw, updateStatus } from "@cloudflare/cli";
2
+ import { blue, brandColor, dim } from "@cloudflare/cli/colors";
3
+ import { runFrameworkGenerator } from "frameworks/index";
4
+ import { transformFile } from "helpers/codemod";
5
+ import { runCommand } from "helpers/command";
6
+ import { usesTypescript } from "helpers/files";
7
+ import { detectPackageManager } from "helpers/packageManagers";
8
+ import * as recast from "recast";
9
+ import type { TemplateConfig } from "../../../src/templates";
10
+ import type { C3Context, PackageJson } from "types";
11
+
12
+ const { npx } = detectPackageManager();
13
+
14
+ const generate = async (ctx: C3Context) => {
15
+ await runFrameworkGenerator(ctx, [ctx.project.name, "--no-install"]);
16
+
17
+ logRaw(""); // newline
18
+ };
19
+
20
+ const configure = async () => {
21
+ await runCommand([npx, "astro", "add", "cloudflare", "-y"], {
22
+ silent: true,
23
+ startText: "Installing adapter",
24
+ doneText: `${brandColor("installed")} ${dim(
25
+ `via \`${npx} astro add cloudflare\``,
26
+ )}`,
27
+ });
28
+
29
+ updateAstroConfig();
30
+ };
31
+
32
+ const updateAstroConfig = () => {
33
+ const filePath = "astro.config.mjs";
34
+
35
+ updateStatus(`Updating configuration in ${blue(filePath)}`);
36
+
37
+ transformFile(filePath, {
38
+ visitCallExpression: function (n) {
39
+ const callee = n.node.callee as recast.types.namedTypes.Identifier;
40
+ if (callee.name !== "cloudflare") {
41
+ return this.traverse(n);
42
+ }
43
+
44
+ const b = recast.types.builders;
45
+ n.node.arguments = [
46
+ b.objectExpression([
47
+ b.objectProperty(
48
+ b.identifier("platformProxy"),
49
+ b.objectExpression([
50
+ b.objectProperty(b.identifier("enabled"), b.booleanLiteral(true)),
51
+ ]),
52
+ ),
53
+ ]),
54
+ ];
55
+
56
+ return false;
57
+ },
58
+ });
59
+ };
60
+
61
+ const config: TemplateConfig = {
62
+ configVersion: 1,
63
+ id: "astro",
64
+ frameworkCli: "create-astro",
65
+ platform: "pages",
66
+ hidden: true,
67
+ displayName: "Astro",
68
+ path: "templates/astro/pages",
69
+ copyFiles: {
70
+ async selectVariant(ctx) {
71
+ // Note: this `selectVariant` function should not be needed
72
+ // this is just a quick workaround until
73
+ // https://github.com/cloudflare/workers-sdk/issues/7495
74
+ // is resolved
75
+ return usesTypescript(ctx) ? "ts" : "js";
76
+ },
77
+ variants: {
78
+ js: {
79
+ path: "./templates/js",
80
+ },
81
+ ts: {
82
+ path: "./templates/ts",
83
+ },
84
+ },
85
+ },
86
+ devScript: "dev",
87
+ deployScript: "deploy",
88
+ previewScript: "preview",
89
+ generate,
90
+ configure,
91
+ transformPackageJson: async (pkgJson: PackageJson, ctx: C3Context) => ({
92
+ scripts: {
93
+ deploy: `astro build && wrangler pages deploy`,
94
+ preview: `astro build && wrangler pages dev`,
95
+ ...(usesTypescript(ctx) && { "cf-typegen": `wrangler types` }),
96
+ },
97
+ }),
98
+ };
99
+ export default config;
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "<TBD>",
3
+ "compatibility_date": "<TBD>",
4
+ "compatibility_flags": [
5
+ "nodejs_compat"
6
+ ],
7
+ "pages_build_output_dir": "./dist"
8
+ }
@@ -0,0 +1,4 @@
1
+ // Generated by Wrangler
2
+ // After adding bindings to `wrangler.jsonc`, regenerate this interface via `npm run cf-typegen`
3
+ interface Env {
4
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "<TBD>",
3
+ "compatibility_date": "<TBD>",
4
+ "compatibility_flags": [
5
+ "nodejs_compat"
6
+ ],
7
+ "pages_build_output_dir": "./dist"
8
+ }
@@ -0,0 +1,98 @@
1
+ import { logRaw, updateStatus } from "@cloudflare/cli";
2
+ import { blue, brandColor, dim } from "@cloudflare/cli/colors";
3
+ import { runFrameworkGenerator } from "frameworks/index";
4
+ import { transformFile } from "helpers/codemod";
5
+ import { runCommand } from "helpers/command";
6
+ import { usesTypescript } from "helpers/files";
7
+ import { detectPackageManager } from "helpers/packageManagers";
8
+ import * as recast from "recast";
9
+ import type { TemplateConfig } from "../../../src/templates";
10
+ import type { C3Context, PackageJson } from "types";
11
+
12
+ const { npx } = detectPackageManager();
13
+
14
+ const generate = async (ctx: C3Context) => {
15
+ await runFrameworkGenerator(ctx, [ctx.project.name, "--no-install"]);
16
+
17
+ logRaw(""); // newline
18
+ };
19
+
20
+ const configure = async () => {
21
+ await runCommand([npx, "astro", "add", "cloudflare", "-y"], {
22
+ silent: true,
23
+ startText: "Installing adapter",
24
+ doneText: `${brandColor("installed")} ${dim(
25
+ `via \`${npx} astro add cloudflare\``,
26
+ )}`,
27
+ });
28
+
29
+ updateAstroConfig();
30
+ };
31
+
32
+ const updateAstroConfig = () => {
33
+ const filePath = "astro.config.mjs";
34
+
35
+ updateStatus(`Updating configuration in ${blue(filePath)}`);
36
+
37
+ transformFile(filePath, {
38
+ visitCallExpression: function (n) {
39
+ const callee = n.node.callee as recast.types.namedTypes.Identifier;
40
+ if (callee.name !== "cloudflare") {
41
+ return this.traverse(n);
42
+ }
43
+
44
+ const b = recast.types.builders;
45
+ n.node.arguments = [
46
+ b.objectExpression([
47
+ b.objectProperty(
48
+ b.identifier("platformProxy"),
49
+ b.objectExpression([
50
+ b.objectProperty(b.identifier("enabled"), b.booleanLiteral(true)),
51
+ ]),
52
+ ),
53
+ ]),
54
+ ];
55
+
56
+ return false;
57
+ },
58
+ });
59
+ };
60
+
61
+ const config: TemplateConfig = {
62
+ configVersion: 1,
63
+ id: "astro",
64
+ frameworkCli: "create-astro",
65
+ platform: "workers",
66
+ displayName: "Astro",
67
+ copyFiles: {
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
+ },
83
+ },
84
+ devScript: "dev",
85
+ deployScript: "deploy",
86
+ previewScript: "preview",
87
+ path: "templates/astro/workers",
88
+ generate,
89
+ configure,
90
+ transformPackageJson: async (pkgJson: PackageJson, ctx: C3Context) => ({
91
+ scripts: {
92
+ deploy: `astro build && wrangler deploy`,
93
+ preview: `astro build && wrangler dev`,
94
+ ...(usesTypescript(ctx) && { "cf-typegen": `wrangler types` }),
95
+ },
96
+ }),
97
+ };
98
+ export default config;
@@ -0,0 +1,2 @@
1
+ _worker.js
2
+ _routes.json
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "<TBD>",
3
+ "main": "./dist/_worker.js/index.js",
4
+ "compatibility_date": "<TBD>",
5
+ "compatibility_flags": [
6
+ "nodejs_compat"
7
+ ],
8
+ "assets": {
9
+ "binding": "ASSETS",
10
+ "directory": "./dist"
11
+ },
12
+ "observability": {
13
+ "enabled": true
14
+ }
15
+ }
@@ -0,0 +1,2 @@
1
+ _worker.js
2
+ _routes.json
@@ -0,0 +1,5 @@
1
+ type Runtime = import("@astrojs/cloudflare").Runtime<Env>;
2
+
3
+ declare namespace App {
4
+ interface Locals extends Runtime {}
5
+ }
@@ -0,0 +1,4 @@
1
+ // Generated by Wrangler
2
+ // After adding bindings to `wrangler.jsonc`, regenerate this interface via `npm run cf-typegen`
3
+ interface Env {
4
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "<TBD>",
3
+ "main": "./dist/_worker.js/index.js",
4
+ "compatibility_date": "<TBD>",
5
+ "compatibility_flags": [
6
+ "nodejs_compat"
7
+ ],
8
+ "assets": {
9
+ "binding": "ASSETS",
10
+ "directory": "./dist"
11
+ },
12
+ "observability": {
13
+ "enabled": true
14
+ },
15
+ }
@@ -1,8 +1,13 @@
1
- export default {
1
+ import type { TemplateConfig } from "../../src/templates";
2
+
3
+ const config: TemplateConfig = {
2
4
  configVersion: 1,
3
5
  id: "common",
4
6
  displayName: "Example router & proxy Worker",
7
+ description:
8
+ "Create a Worker to route and forward requests to other services",
5
9
  platform: "workers",
10
+ hidden: true,
6
11
  copyFiles: {
7
12
  variants: {
8
13
  js: {
@@ -14,3 +19,5 @@ export default {
14
19
  },
15
20
  },
16
21
  };
22
+
23
+ export default config;
@@ -9,6 +9,6 @@
9
9
  },
10
10
  "devDependencies": {
11
11
  "itty-router": "^3.0.12",
12
- "wrangler": "^3.0.0"
12
+ "wrangler": "^3.101.0"
13
13
  }
14
14
  }
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "<TBD>",
3
+ "main": "src/index.js",
4
+ "compatibility_date": "<TBD>",
5
+ "observability": {
6
+ "enabled": true
7
+ }
8
+ }
@@ -10,7 +10,7 @@
10
10
  },
11
11
  "devDependencies": {
12
12
  "itty-router": "^3.0.12",
13
- "typescript": "^5.0.4",
14
- "wrangler": "^3.0.0"
13
+ "typescript": "^5.5.2",
14
+ "wrangler": "^3.101.0"
15
15
  }
16
16
  }
@@ -6,7 +6,7 @@ const EXPERIMENTS = [
6
6
  ];
7
7
 
8
8
  export default {
9
- async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
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 }>) {
@@ -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.toml`. 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/
@@ -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: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
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: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
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: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
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>;