alchemy 0.45.5 → 0.46.0

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 (346) hide show
  1. package/README.md +2 -2
  2. package/bin/alchemy.mjs +19285 -15137
  3. package/bin/alchemy.ts +14 -56
  4. package/bin/commands/create.ts +307 -137
  5. package/bin/commands/deploy.ts +23 -0
  6. package/bin/commands/destroy.ts +19 -0
  7. package/bin/commands/dev.ts +21 -0
  8. package/bin/commands/login.ts +66 -0
  9. package/bin/commands/run.ts +29 -0
  10. package/bin/services/dependencies.ts +0 -5
  11. package/bin/services/execute-alchemy.ts +160 -0
  12. package/bin/services/git.ts +27 -0
  13. package/bin/services/github-workflow.ts +229 -0
  14. package/bin/services/package-manager.ts +51 -68
  15. package/bin/services/template-manager.ts +10 -21
  16. package/bin/trpc.ts +3 -0
  17. package/bin/types.ts +4 -2
  18. package/lib/apply.d.ts +2 -0
  19. package/lib/apply.d.ts.map +1 -1
  20. package/lib/apply.js +26 -8
  21. package/lib/apply.js.map +1 -1
  22. package/lib/build-date.d.ts +1 -1
  23. package/lib/build-date.js +1 -1
  24. package/lib/cloudflare/ai.d.ts +8 -4
  25. package/lib/cloudflare/ai.d.ts.map +1 -1
  26. package/lib/cloudflare/ai.js +6 -8
  27. package/lib/cloudflare/ai.js.map +1 -1
  28. package/lib/cloudflare/analytics-engine.d.ts +11 -7
  29. package/lib/cloudflare/analytics-engine.d.ts.map +1 -1
  30. package/lib/cloudflare/analytics-engine.js +11 -9
  31. package/lib/cloudflare/analytics-engine.js.map +1 -1
  32. package/lib/cloudflare/{types.d.ts → api-response.d.ts} +6 -1
  33. package/lib/cloudflare/api-response.d.ts.map +1 -0
  34. package/lib/cloudflare/api-response.js +38 -0
  35. package/lib/cloudflare/api-response.js.map +1 -0
  36. package/lib/cloudflare/auth-wrangler.d.ts +25 -0
  37. package/lib/cloudflare/auth-wrangler.d.ts.map +1 -0
  38. package/lib/cloudflare/auth-wrangler.js +224 -0
  39. package/lib/cloudflare/auth-wrangler.js.map +1 -0
  40. package/lib/cloudflare/auth.d.ts.map +1 -1
  41. package/lib/cloudflare/auth.js +7 -116
  42. package/lib/cloudflare/auth.js.map +1 -1
  43. package/lib/cloudflare/browser-rendering.d.ts +12 -3
  44. package/lib/cloudflare/browser-rendering.d.ts.map +1 -1
  45. package/lib/cloudflare/browser-rendering.js +12 -2
  46. package/lib/cloudflare/browser-rendering.js.map +1 -1
  47. package/lib/cloudflare/bundle/fs.d.ts.map +1 -1
  48. package/lib/cloudflare/bundle/fs.js +3 -0
  49. package/lib/cloudflare/bundle/fs.js.map +1 -1
  50. package/lib/cloudflare/bundle/internal-worker-bundle.d.ts +6 -0
  51. package/lib/cloudflare/bundle/internal-worker-bundle.d.ts.map +1 -0
  52. package/lib/cloudflare/bundle/internal-worker-bundle.js +14 -0
  53. package/lib/cloudflare/bundle/internal-worker-bundle.js.map +1 -0
  54. package/lib/cloudflare/compatibility-presets.d.ts +22 -0
  55. package/lib/cloudflare/compatibility-presets.d.ts.map +1 -0
  56. package/lib/cloudflare/compatibility-presets.js +27 -0
  57. package/lib/cloudflare/compatibility-presets.js.map +1 -0
  58. package/lib/cloudflare/container.d.ts +6 -2
  59. package/lib/cloudflare/container.d.ts.map +1 -1
  60. package/lib/cloudflare/container.js +48 -4
  61. package/lib/cloudflare/container.js.map +1 -1
  62. package/lib/cloudflare/dispatch-namespace.d.ts +5 -0
  63. package/lib/cloudflare/dispatch-namespace.d.ts.map +1 -1
  64. package/lib/cloudflare/dispatch-namespace.js +8 -0
  65. package/lib/cloudflare/dispatch-namespace.js.map +1 -1
  66. package/lib/cloudflare/durable-object-namespace.d.ts +23 -15
  67. package/lib/cloudflare/durable-object-namespace.d.ts.map +1 -1
  68. package/lib/cloudflare/durable-object-namespace.js +22 -21
  69. package/lib/cloudflare/durable-object-namespace.js.map +1 -1
  70. package/lib/cloudflare/hyperdrive.d.ts +19 -5
  71. package/lib/cloudflare/hyperdrive.d.ts.map +1 -1
  72. package/lib/cloudflare/hyperdrive.js +14 -0
  73. package/lib/cloudflare/hyperdrive.js.map +1 -1
  74. package/lib/cloudflare/images.d.ts +27 -17
  75. package/lib/cloudflare/images.d.ts.map +1 -1
  76. package/lib/cloudflare/images.js +13 -8
  77. package/lib/cloudflare/images.js.map +1 -1
  78. package/lib/cloudflare/index.d.ts +1 -3
  79. package/lib/cloudflare/index.d.ts.map +1 -1
  80. package/lib/cloudflare/index.js +1 -3
  81. package/lib/cloudflare/index.js.map +1 -1
  82. package/lib/cloudflare/miniflare/miniflare.d.ts +3 -3
  83. package/lib/cloudflare/miniflare/miniflare.d.ts.map +1 -1
  84. package/lib/cloudflare/miniflare/miniflare.js +7 -7
  85. package/lib/cloudflare/miniflare/miniflare.js.map +1 -1
  86. package/lib/cloudflare/miniflare/{mixed-mode.d.ts → remote-binding-proxy.d.ts} +5 -5
  87. package/lib/cloudflare/miniflare/remote-binding-proxy.d.ts.map +1 -0
  88. package/lib/cloudflare/miniflare/{mixed-mode.js → remote-binding-proxy.js} +16 -52
  89. package/lib/cloudflare/miniflare/remote-binding-proxy.js.map +1 -0
  90. package/lib/cloudflare/state.d.ts +26 -0
  91. package/lib/cloudflare/state.d.ts.map +1 -0
  92. package/lib/cloudflare/state.js +14 -0
  93. package/lib/cloudflare/state.js.map +1 -0
  94. package/lib/cloudflare/user.d.ts +2 -2
  95. package/lib/cloudflare/user.d.ts.map +1 -1
  96. package/lib/cloudflare/user.js +7 -21
  97. package/lib/cloudflare/user.js.map +1 -1
  98. package/lib/cloudflare/vectorize-index.d.ts.map +1 -1
  99. package/lib/cloudflare/vectorize-index.js +5 -2
  100. package/lib/cloudflare/vectorize-index.js.map +1 -1
  101. package/lib/cloudflare/version-metadata.d.ts +15 -3
  102. package/lib/cloudflare/version-metadata.d.ts.map +1 -1
  103. package/lib/cloudflare/version-metadata.js +11 -2
  104. package/lib/cloudflare/version-metadata.js.map +1 -1
  105. package/lib/cloudflare/vite.d.ts.map +1 -1
  106. package/lib/cloudflare/vite.js +2 -1
  107. package/lib/cloudflare/vite.js.map +1 -1
  108. package/lib/cloudflare/worker-metadata.d.ts +13 -2
  109. package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
  110. package/lib/cloudflare/worker-metadata.js +10 -15
  111. package/lib/cloudflare/worker-metadata.js.map +1 -1
  112. package/lib/cloudflare/worker-subdomain.d.ts +7 -0
  113. package/lib/cloudflare/worker-subdomain.d.ts.map +1 -1
  114. package/lib/cloudflare/worker-subdomain.js +17 -22
  115. package/lib/cloudflare/worker-subdomain.js.map +1 -1
  116. package/lib/cloudflare/{worker/tail.d.ts → worker-tail.d.ts} +2 -2
  117. package/lib/cloudflare/worker-tail.d.ts.map +1 -0
  118. package/lib/cloudflare/{worker/tail.js → worker-tail.js} +11 -9
  119. package/lib/cloudflare/worker-tail.js.map +1 -0
  120. package/lib/cloudflare/worker.d.ts +18 -8
  121. package/lib/cloudflare/worker.d.ts.map +1 -1
  122. package/lib/cloudflare/worker.js +32 -8
  123. package/lib/cloudflare/worker.js.map +1 -1
  124. package/lib/cloudflare/workflow.d.ts +22 -11
  125. package/lib/cloudflare/workflow.d.ts.map +1 -1
  126. package/lib/cloudflare/workflow.js +23 -18
  127. package/lib/cloudflare/workflow.js.map +1 -1
  128. package/lib/context.d.ts +2 -2
  129. package/lib/context.d.ts.map +1 -1
  130. package/lib/docker/api.d.ts.map +1 -1
  131. package/lib/docker/api.js +30 -8
  132. package/lib/docker/api.js.map +1 -1
  133. package/lib/fs/file-system-state-store.d.ts +5 -20
  134. package/lib/fs/file-system-state-store.d.ts.map +1 -1
  135. package/lib/fs/file-system-state-store.js +5 -121
  136. package/lib/fs/file-system-state-store.js.map +1 -1
  137. package/lib/fs/index.d.ts +0 -1
  138. package/lib/fs/index.d.ts.map +1 -1
  139. package/lib/fs/index.js +0 -1
  140. package/lib/fs/index.js.map +1 -1
  141. package/lib/llms.cloudflare.txt +6 -5
  142. package/lib/planetscale/password.js +1 -1
  143. package/lib/planetscale/password.js.map +1 -1
  144. package/lib/scope.d.ts.map +1 -1
  145. package/lib/scope.js +3 -6
  146. package/lib/scope.js.map +1 -1
  147. package/lib/state/cloudflare-state-store.d.ts +34 -0
  148. package/lib/state/cloudflare-state-store.d.ts.map +1 -0
  149. package/lib/state/cloudflare-state-store.js +116 -0
  150. package/lib/state/cloudflare-state-store.js.map +1 -0
  151. package/lib/state/d1-state-store.d.ts +15 -0
  152. package/lib/state/d1-state-store.d.ts.map +1 -0
  153. package/lib/{cloudflare → state}/d1-state-store.js +31 -27
  154. package/lib/state/d1-state-store.js.map +1 -0
  155. package/lib/{cloudflare/do-state-store/types.d.ts → state/dofs-state-store/api.d.ts} +1 -1
  156. package/lib/state/dofs-state-store/api.d.ts.map +1 -0
  157. package/lib/state/dofs-state-store/api.js +1 -0
  158. package/lib/state/dofs-state-store/api.js.map +1 -0
  159. package/lib/{cloudflare/do-state-store/store.d.ts → state/dofs-state-store/index.d.ts} +10 -5
  160. package/lib/state/dofs-state-store/index.d.ts.map +1 -0
  161. package/lib/{cloudflare/do-state-store/store.js → state/dofs-state-store/index.js} +15 -11
  162. package/lib/state/dofs-state-store/index.js.map +1 -0
  163. package/lib/{cloudflare/do-state-store/internal.d.ts → state/dofs-state-store/store.d.ts} +4 -5
  164. package/lib/state/dofs-state-store/store.d.ts.map +1 -0
  165. package/lib/{cloudflare/do-state-store/internal.js → state/dofs-state-store/store.js} +7 -22
  166. package/lib/state/dofs-state-store/store.js.map +1 -0
  167. package/lib/state/file-system-state-store.d.ts +21 -0
  168. package/lib/state/file-system-state-store.d.ts.map +1 -0
  169. package/lib/state/file-system-state-store.js +122 -0
  170. package/lib/state/file-system-state-store.js.map +1 -0
  171. package/lib/state/index.d.ts +7 -0
  172. package/lib/state/index.d.ts.map +1 -0
  173. package/lib/state/index.js +7 -0
  174. package/lib/state/index.js.map +1 -0
  175. package/lib/state/migrations.d.ts +2 -0
  176. package/lib/state/migrations.d.ts.map +1 -0
  177. package/lib/state/migrations.js +3 -0
  178. package/lib/state/migrations.js.map +1 -0
  179. package/lib/state/operations.d.ts +36 -0
  180. package/lib/state/operations.d.ts.map +1 -0
  181. package/lib/state/operations.js +126 -0
  182. package/lib/state/operations.js.map +1 -0
  183. package/lib/state/proxy.d.ts +53 -0
  184. package/lib/state/proxy.d.ts.map +1 -0
  185. package/lib/state/proxy.js +65 -0
  186. package/lib/state/proxy.js.map +1 -0
  187. package/lib/{cloudflare → state}/r2-rest-state-store.d.ts +3 -1
  188. package/lib/state/r2-rest-state-store.d.ts.map +1 -0
  189. package/lib/{cloudflare → state}/r2-rest-state-store.js +6 -4
  190. package/lib/state/r2-rest-state-store.js.map +1 -0
  191. package/lib/state/schema.d.ts.map +1 -0
  192. package/lib/state/schema.js.map +1 -0
  193. package/lib/{sqlite → state}/sqlite-state-store.d.ts +5 -3
  194. package/lib/state/sqlite-state-store.d.ts.map +1 -0
  195. package/lib/{sqlite → state}/sqlite-state-store.js +15 -6
  196. package/lib/state/sqlite-state-store.js.map +1 -0
  197. package/lib/test/vitest.d.ts.map +1 -1
  198. package/lib/test/vitest.js +3 -6
  199. package/lib/test/vitest.js.map +1 -1
  200. package/lib/util/detect-node-runtime.d.ts +3 -0
  201. package/lib/util/detect-node-runtime.d.ts.map +1 -0
  202. package/lib/util/detect-node-runtime.js +10 -0
  203. package/lib/util/detect-node-runtime.js.map +1 -0
  204. package/lib/util/detect-package-manager.d.ts +2 -2
  205. package/lib/util/detect-package-manager.d.ts.map +1 -1
  206. package/lib/util/detect-package-manager.js +15 -5
  207. package/lib/util/detect-package-manager.js.map +1 -1
  208. package/lib/util/http-server.d.ts.map +1 -0
  209. package/lib/{cloudflare/miniflare → util}/http-server.js +1 -1
  210. package/lib/util/http-server.js.map +1 -0
  211. package/lib/util/memoize.d.ts +2 -0
  212. package/lib/util/memoize.d.ts.map +1 -1
  213. package/lib/util/memoize.js +14 -7
  214. package/lib/util/memoize.js.map +1 -1
  215. package/lib/util/neverthrow.d.ts +9 -0
  216. package/lib/util/neverthrow.d.ts.map +1 -0
  217. package/lib/util/neverthrow.js +29 -0
  218. package/lib/util/neverthrow.js.map +1 -0
  219. package/package.json +20 -20
  220. package/src/apply.ts +31 -10
  221. package/src/build-date.ts +1 -1
  222. package/src/cloudflare/ai.ts +10 -5
  223. package/src/cloudflare/analytics-engine.ts +20 -11
  224. package/src/cloudflare/{types.ts → api-response.ts} +31 -0
  225. package/src/cloudflare/auth-wrangler.ts +314 -0
  226. package/src/cloudflare/auth.ts +8 -156
  227. package/src/cloudflare/browser-rendering.ts +16 -2
  228. package/src/cloudflare/bundle/fs.ts +5 -0
  229. package/src/cloudflare/bundle/internal-worker-bundle.ts +21 -0
  230. package/src/cloudflare/compatibility-presets.ts +34 -0
  231. package/src/cloudflare/container.ts +77 -6
  232. package/src/cloudflare/dispatch-namespace.ts +28 -0
  233. package/src/cloudflare/durable-object-namespace.ts +38 -27
  234. package/src/cloudflare/hyperdrive.ts +19 -5
  235. package/src/cloudflare/images.ts +32 -17
  236. package/src/cloudflare/index.ts +1 -3
  237. package/src/cloudflare/miniflare/miniflare.ts +10 -7
  238. package/src/cloudflare/miniflare/{mixed-mode.ts → remote-binding-proxy.ts} +25 -75
  239. package/src/cloudflare/state.ts +35 -0
  240. package/src/cloudflare/user.ts +55 -70
  241. package/src/cloudflare/vectorize-index.ts +7 -2
  242. package/src/cloudflare/version-metadata.ts +19 -2
  243. package/src/cloudflare/vite.ts +2 -1
  244. package/src/cloudflare/worker-metadata.ts +18 -43
  245. package/src/cloudflare/worker-subdomain.ts +43 -37
  246. package/src/cloudflare/{worker/tail.ts → worker-tail.ts} +13 -10
  247. package/src/cloudflare/worker.ts +66 -20
  248. package/src/cloudflare/workflow.ts +38 -19
  249. package/src/context.ts +2 -2
  250. package/src/docker/api.ts +33 -8
  251. package/src/fs/file-system-state-store.ts +5 -148
  252. package/src/fs/index.ts +0 -1
  253. package/src/llms.cloudflare.txt +6 -5
  254. package/src/planetscale/password.ts +1 -1
  255. package/src/scope.ts +3 -6
  256. package/src/state/cloudflare-state-store.ts +170 -0
  257. package/src/state/d1-state-store.ts +102 -0
  258. package/src/{cloudflare/do-state-store/store.ts → state/dofs-state-store/index.ts} +20 -13
  259. package/src/{cloudflare/do-state-store/internal.ts → state/dofs-state-store/store.ts} +9 -27
  260. package/src/state/file-system-state-store.ts +149 -0
  261. package/src/state/index.ts +6 -0
  262. package/src/state/migrations.ts +9 -0
  263. package/src/state/operations.ts +152 -0
  264. package/src/state/proxy.ts +132 -0
  265. package/src/{cloudflare → state}/r2-rest-state-store.ts +11 -8
  266. package/src/{sqlite → state}/sqlite-state-store.ts +18 -10
  267. package/src/test/vitest.ts +8 -6
  268. package/src/util/detect-node-runtime.ts +12 -0
  269. package/src/util/detect-package-manager.ts +19 -6
  270. package/src/{cloudflare/miniflare → util}/http-server.ts +1 -1
  271. package/src/util/memoize.ts +18 -7
  272. package/src/util/neverthrow.ts +36 -0
  273. package/templates/astro/package.json +3 -3
  274. package/templates/nuxt/package.json +3 -3
  275. package/templates/react-router/package.json +3 -3
  276. package/templates/rwsdk/alchemy.run.ts +1 -1
  277. package/templates/rwsdk/package.json +3 -3
  278. package/templates/sveltekit/package.json +3 -3
  279. package/templates/tanstack-start/package.json +3 -3
  280. package/templates/typescript/package.json +3 -2
  281. package/templates/typescript/tsconfig.json +1 -0
  282. package/templates/vite/package.json +3 -3
  283. package/workers/cloudflare-state-store.js +5638 -0
  284. package/workers/cloudflare-state-store.ts +108 -0
  285. package/workers/{do-state-store.js → dofs-state-store.js} +4 -4
  286. package/workers/{do-state-store.ts → dofs-state-store.ts} +12 -8
  287. package/workers/{mixed-mode-proxy-worker.js → remote-binding-proxy.js} +3 -3
  288. package/workers/remote-binding-proxy.ts +45 -0
  289. package/lib/cloudflare/d1-state-store.d.ts +0 -10
  290. package/lib/cloudflare/d1-state-store.d.ts.map +0 -1
  291. package/lib/cloudflare/d1-state-store.js.map +0 -1
  292. package/lib/cloudflare/do-state-store/index.d.ts +0 -2
  293. package/lib/cloudflare/do-state-store/index.d.ts.map +0 -1
  294. package/lib/cloudflare/do-state-store/index.js +0 -2
  295. package/lib/cloudflare/do-state-store/index.js.map +0 -1
  296. package/lib/cloudflare/do-state-store/internal.d.ts.map +0 -1
  297. package/lib/cloudflare/do-state-store/internal.js.map +0 -1
  298. package/lib/cloudflare/do-state-store/store.d.ts.map +0 -1
  299. package/lib/cloudflare/do-state-store/store.js.map +0 -1
  300. package/lib/cloudflare/do-state-store/types.d.ts.map +0 -1
  301. package/lib/cloudflare/do-state-store/types.js +0 -1
  302. package/lib/cloudflare/do-state-store/types.js.map +0 -1
  303. package/lib/cloudflare/miniflare/http-server.d.ts.map +0 -1
  304. package/lib/cloudflare/miniflare/http-server.js.map +0 -1
  305. package/lib/cloudflare/miniflare/mixed-mode.d.ts.map +0 -1
  306. package/lib/cloudflare/miniflare/mixed-mode.js.map +0 -1
  307. package/lib/cloudflare/r2-rest-state-store.d.ts.map +0 -1
  308. package/lib/cloudflare/r2-rest-state-store.js.map +0 -1
  309. package/lib/cloudflare/types.d.ts.map +0 -1
  310. package/lib/cloudflare/types.js +0 -19
  311. package/lib/cloudflare/types.js.map +0 -1
  312. package/lib/cloudflare/worker/shared.d.ts +0 -4
  313. package/lib/cloudflare/worker/shared.d.ts.map +0 -1
  314. package/lib/cloudflare/worker/shared.js +0 -21
  315. package/lib/cloudflare/worker/shared.js.map +0 -1
  316. package/lib/cloudflare/worker/tail.d.ts.map +0 -1
  317. package/lib/cloudflare/worker/tail.js.map +0 -1
  318. package/lib/sqlite/base-sqlite-state-store.d.ts +0 -31
  319. package/lib/sqlite/base-sqlite-state-store.d.ts.map +0 -1
  320. package/lib/sqlite/base-sqlite-state-store.js +0 -124
  321. package/lib/sqlite/base-sqlite-state-store.js.map +0 -1
  322. package/lib/sqlite/index.d.ts +0 -2
  323. package/lib/sqlite/index.d.ts.map +0 -1
  324. package/lib/sqlite/index.js +0 -2
  325. package/lib/sqlite/index.js.map +0 -1
  326. package/lib/sqlite/schema.d.ts.map +0 -1
  327. package/lib/sqlite/schema.js.map +0 -1
  328. package/lib/sqlite/sqlite-state-store.d.ts.map +0 -1
  329. package/lib/sqlite/sqlite-state-store.js.map +0 -1
  330. package/src/cloudflare/d1-state-store.ts +0 -105
  331. package/src/cloudflare/do-state-store/index.ts +0 -1
  332. package/src/cloudflare/worker/shared.ts +0 -30
  333. package/src/sqlite/base-sqlite-state-store.ts +0 -199
  334. package/src/sqlite/index.ts +0 -1
  335. package/templates/typescript/src/worker.js +0 -5
  336. package/workers/mixed-mode-proxy-worker.ts +0 -46
  337. /package/drizzle/{0000_busy_mauler.sql → default/0000_busy_mauler.sql} +0 -0
  338. /package/drizzle/{0001_concerned_iceman.sql → default/0001_concerned_iceman.sql} +0 -0
  339. /package/drizzle/{meta → default/meta}/0000_snapshot.json +0 -0
  340. /package/drizzle/{meta → default/meta}/0001_snapshot.json +0 -0
  341. /package/drizzle/{meta → default/meta}/_journal.json +0 -0
  342. /package/lib/{sqlite → state}/schema.d.ts +0 -0
  343. /package/lib/{sqlite → state}/schema.js +0 -0
  344. /package/lib/{cloudflare/miniflare → util}/http-server.d.ts +0 -0
  345. /package/src/{cloudflare/do-state-store/types.ts → state/dofs-state-store/api.ts} +0 -0
  346. /package/src/{sqlite → state}/schema.ts +0 -0
@@ -0,0 +1,224 @@
1
+ import kleur from "kleur";
2
+ import { err, ok, ResultAsync } from "neverthrow";
3
+ import crypto from "node:crypto";
4
+ import fs from "node:fs/promises";
5
+ import os from "node:os";
6
+ import path from "node:path";
7
+ import open from "open";
8
+ import { HTTPServer } from "../util/http-server.js";
9
+ import { memoize, memoizeSync } from "../util/memoize.js";
10
+ import { detached, ensure, singleFlight } from "../util/neverthrow.js";
11
+ import { createXdgAppPaths } from "../util/xdg-paths.js";
12
+ const CLIENT_ID = "54d11594-84e4-41aa-b438-e81b8fa78ee7";
13
+ const REDIRECT_URI = "http://localhost:8976/oauth/callback";
14
+ const ALCHEMY_BASE_URL = "https://alchemy.run";
15
+ export const DEFAULT_SCOPES = [
16
+ "account:read",
17
+ "user:read",
18
+ "workers:write",
19
+ "workers_kv:write",
20
+ "workers_routes:write",
21
+ "workers_scripts:write",
22
+ "workers_tail:read",
23
+ "d1:write",
24
+ "pages:write",
25
+ "zone:read",
26
+ "ssl_certs:write",
27
+ "ai:write",
28
+ "queues:write",
29
+ "pipelines:write",
30
+ "secrets_store:write",
31
+ "containers:write",
32
+ "cloudchamber:write",
33
+ ];
34
+ const getWranglerConfigPath = memoize(async () => {
35
+ const xdgConfigDir = createXdgAppPaths(".wrangler").config();
36
+ const legacyConfigDir = path.join(os.homedir(), ".wrangler");
37
+ const configDir = (await fs
38
+ .stat(legacyConfigDir)
39
+ .then((stat) => stat.isDirectory())
40
+ .catch(() => false))
41
+ ? legacyConfigDir
42
+ : xdgConfigDir;
43
+ return path.join(configDir, "config", "default.toml");
44
+ });
45
+ const readWranglerConfig = () => {
46
+ return ResultAsync.fromSafePromise(getWranglerConfigPath())
47
+ .andThen((path) => ResultAsync.fromPromise(fs.readFile(path, "utf-8").then(async (text) => {
48
+ const toml = await import("@iarna/toml");
49
+ return toml.parse(text.replace(/\r\n/g, "\n"));
50
+ }), () => new Error("Failed to read Wrangler config.")))
51
+ .andThen((config) => {
52
+ if (typeof config.oauth_token !== "string" ||
53
+ typeof config.refresh_token !== "string" ||
54
+ !config.expiration_time ||
55
+ !Array.isArray(config.scopes)) {
56
+ return err(new Error("Invalid Wrangler config."));
57
+ }
58
+ return ok({
59
+ oauth_token: config.oauth_token,
60
+ refresh_token: config.refresh_token,
61
+ expiration_time: new Date(config.expiration_time),
62
+ scopes: Array.from(config.scopes),
63
+ });
64
+ });
65
+ };
66
+ const writeWranglerConfig = (config) => {
67
+ return ResultAsync.fromSafePromise(getWranglerConfigPath()).map(async (configPath) => {
68
+ const toml = await import("@iarna/toml");
69
+ await fs.writeFile(configPath, toml.stringify({
70
+ oauth_token: config.oauth_token,
71
+ refresh_token: config.refresh_token,
72
+ expiration_time: config.expiration_time,
73
+ scopes: config.scopes,
74
+ }));
75
+ });
76
+ };
77
+ const fetchToken = (body) => {
78
+ return ResultAsync.fromPromise(fetch("https://dash.cloudflare.com/oauth2/token", {
79
+ method: "POST",
80
+ headers: {
81
+ "Content-Type": "application/x-www-form-urlencoded",
82
+ },
83
+ body: new URLSearchParams(body),
84
+ }), () => new OAuthError({
85
+ error: "fetch_error",
86
+ error_description: "Failed to fetch OAuth token.",
87
+ status_code: 0,
88
+ }))
89
+ .andThen((res) => ResultAsync.fromPromise(res.json(), () => new OAuthError({
90
+ error: "invalid_response",
91
+ error_description: "The server returned an invalid response.",
92
+ status_code: res.status,
93
+ })).andThen((json) => res.ok ? ok(json) : err(new OAuthError(json))))
94
+ .map((tokens) => ({
95
+ oauth_token: tokens.access_token,
96
+ refresh_token: tokens.refresh_token,
97
+ expiration_time: new Date(Date.now() + tokens.expires_in * 1000),
98
+ scopes: tokens.scope.split(" "),
99
+ }))
100
+ .andTee((config) => writeWranglerConfig(config));
101
+ };
102
+ export const getRefreshedWranglerConfig = singleFlight(memoizeSync(() => {
103
+ return readWranglerConfig()
104
+ .andThen((config) => {
105
+ if (config.expiration_time.getTime() > Date.now() + 10 * 1000) {
106
+ return ok(config);
107
+ }
108
+ return fetchToken({
109
+ grant_type: "refresh_token",
110
+ refresh_token: config.refresh_token,
111
+ client_id: CLIENT_ID,
112
+ });
113
+ })
114
+ .orElse((error) => {
115
+ if (isInteractive()) {
116
+ return wranglerLogin();
117
+ }
118
+ if (error instanceof OAuthError) {
119
+ return err(error);
120
+ }
121
+ return ok(null);
122
+ });
123
+ }, () => Math.floor(Date.now() / 5000).toString()));
124
+ const isInteractive = () => {
125
+ return process.stdin.isTTY && process.stdout.isTTY && !process.env.CI;
126
+ };
127
+ const generateAuthorizationURL = (scopes) => {
128
+ const state = crypto.randomBytes(32).toString("base64url");
129
+ const verifier = crypto.randomBytes(96).toString("base64url");
130
+ const challenge = crypto
131
+ .createHash("sha256")
132
+ .update(verifier)
133
+ .digest("base64url");
134
+ const url = new URL("https://dash.cloudflare.com/oauth2/auth");
135
+ url.search = new URLSearchParams({
136
+ response_type: "code",
137
+ client_id: CLIENT_ID,
138
+ redirect_uri: REDIRECT_URI,
139
+ scope: [...scopes, "offline_access"].join(" "),
140
+ state,
141
+ code_challenge: challenge,
142
+ code_challenge_method: "S256",
143
+ }).toString();
144
+ return { url: url.toString(), state, verifier };
145
+ };
146
+ class OAuthError extends Error {
147
+ error;
148
+ error_verbose;
149
+ error_hint;
150
+ status_code;
151
+ constructor(params) {
152
+ console.dir(params, { depth: null });
153
+ super(params.error_description);
154
+ this.error = params.error;
155
+ this.error_verbose = params.error_verbose;
156
+ this.error_hint = params.error_hint;
157
+ this.status_code = params.status_code;
158
+ }
159
+ }
160
+ export const wranglerLogin = (scopes = DEFAULT_SCOPES, log = console.log) => {
161
+ const challenge = generateAuthorizationURL(scopes);
162
+ log([
163
+ "Opening browser to authorize with Cloudflare...",
164
+ "",
165
+ kleur.gray("If you are not automatically redirected, please open the following URL in your browser:"),
166
+ challenge.url,
167
+ ].join("\n"));
168
+ open(challenge.url);
169
+ const { result, ok, err } = detached();
170
+ const server = new HTTPServer({
171
+ port: 8976,
172
+ fetch: async (request) => {
173
+ const url = new URL(request.url);
174
+ if (url.pathname !== "/oauth/callback") {
175
+ return new Response("Not found", { status: 404 });
176
+ }
177
+ const error = url.searchParams.get("error");
178
+ const error_description = url.searchParams.get("error_description");
179
+ const code = url.searchParams.get("code");
180
+ const state = url.searchParams.get("state");
181
+ if (error) {
182
+ err(new OAuthError({
183
+ error,
184
+ error_description: error_description ?? "Unknown error",
185
+ status_code: 400,
186
+ }));
187
+ return Response.redirect(`${ALCHEMY_BASE_URL}/auth/error`);
188
+ }
189
+ if (!code || !state || state !== challenge.state) {
190
+ err(new OAuthError({
191
+ error: "invalid_request",
192
+ error_description: "Invalid request",
193
+ status_code: 400,
194
+ }));
195
+ return Response.redirect(`${ALCHEMY_BASE_URL}/auth/error`);
196
+ }
197
+ const tokens = await fetchToken({
198
+ grant_type: "authorization_code",
199
+ code,
200
+ code_verifier: challenge.verifier,
201
+ client_id: CLIENT_ID,
202
+ redirect_uri: REDIRECT_URI,
203
+ });
204
+ if (tokens.isErr()) {
205
+ err(tokens.error);
206
+ return Response.redirect(`${ALCHEMY_BASE_URL}/auth/error`);
207
+ }
208
+ ok(tokens.value);
209
+ return Response.redirect(`${ALCHEMY_BASE_URL}/auth/success`);
210
+ },
211
+ });
212
+ const timeout = setTimeout(() => {
213
+ err(new OAuthError({
214
+ error: "timeout",
215
+ error_description: "Authorization timed out after 5 minutes",
216
+ status_code: 408,
217
+ }));
218
+ }, 1000 * 60 * 5);
219
+ return ensure(result, async () => {
220
+ clearTimeout(timeout);
221
+ await server.stop();
222
+ });
223
+ };
224
+ //# sourceMappingURL=auth-wrangler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-wrangler.js","sourceRoot":"","sources":["../../src/cloudflare/auth-wrangler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/cloudflare/auth.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAC7B,2BAA2B,GAC3B,6BAA6B,CAAC;AAElC,MAAM,MAAM,2BAA2B,GAAG;IACxC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,qBAAqB,GAAG,SAAS,GACzC,OAAO,IAAI,2BAA2B,CAExC;AAED,MAAM,MAAM,6BAA6B,GAAG;IAC1C;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,qBAAqB,GAAG,SAAS,GACzC,OAAO,IAAI,6BAA6B,CAE1C;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,qBAAqB,GAAG,SAAS,GACzC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAuBjC"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/cloudflare/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAC7B,2BAA2B,GAC3B,6BAA6B,CAAC;AAElC,MAAM,MAAM,2BAA2B,GAAG;IACxC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,qBAAqB,GAAG,SAAS,GACzC,OAAO,IAAI,2BAA2B,CAExC;AAED,MAAM,MAAM,6BAA6B,GAAG;IAC1C;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,qBAAqB,GAAG,SAAS,GACzC,OAAO,IAAI,6BAA6B,CAE1C;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,qBAAqB,GAAG,SAAS,GACzC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA2BjC"}
@@ -1,7 +1,4 @@
1
- import fs from "node:fs/promises";
2
- import os from "node:os";
3
- import path from "node:path";
4
- import { createXdgAppPaths } from "../util/xdg-paths.js";
1
+ import { getRefreshedWranglerConfig } from "./auth-wrangler.js";
5
2
  export function isCloudflareApiKeyAuthOptions(options) {
6
3
  return options !== undefined && options.apiKey !== undefined;
7
4
  }
@@ -23,121 +20,15 @@ export async function getCloudflareAuthHeaders(options) {
23
20
  };
24
21
  }
25
22
  // Wrangler OAuth Token
26
- const authConfig = await getRefreshedAuthConfig();
27
- if (authConfig.oauth_token) {
23
+ const wranglerConfig = await getRefreshedWranglerConfig();
24
+ if (wranglerConfig.isOk() && wranglerConfig.value) {
28
25
  return {
29
- Authorization: `Bearer ${authConfig.oauth_token}`,
26
+ Authorization: `Bearer ${wranglerConfig.value.oauth_token}`,
30
27
  };
31
28
  }
32
- throw new Error("Cloudflare authentication required. Did you forget to login with `wrangler login` or set CLOUDFLARE_API_TOKEN, CLOUDFLARE_API_KEY?");
33
- }
34
- async function refreshAuthToken(options) {
35
- const response = await fetch("https://dash.cloudflare.com/oauth2/token", {
36
- method: "POST",
37
- headers: {
38
- "Content-Type": "application/x-www-form-urlencoded",
39
- },
40
- body: new URLSearchParams({
41
- grant_type: "refresh_token",
42
- refresh_token: options.refresh_token,
43
- client_id: "54d11594-84e4-41aa-b438-e81b8fa78ee7",
44
- }).toString(),
45
- });
46
- if (!response.ok) {
47
- throw new Error(`Failed to refresh auth token: ${response.status} ${response.statusText} ${await response.text()}`);
48
- }
49
- const data = await response.json();
50
- if (!data.access_token) {
51
- throw new Error("Failed to refresh auth token - no access token returned");
52
- }
53
- options.oauth_token = data.access_token;
54
- options.refresh_token = data.refresh_token;
55
- options.expiration_time = new Date(Date.now() + data.expires_in * 1000).toISOString();
56
- options.scopes = data.scope?.split(" ") || [];
57
- return options;
58
- }
59
- async function getRefreshedAuthConfig() {
60
- let authConfig = await readWranglerConfig();
61
- if (authConfig.expiration_time) {
62
- const expiry = new Date(authConfig.expiration_time);
63
- // if expiring in 10s
64
- if (expiry.getTime() < Date.now() + 10 * 1000) {
65
- authConfig = await refreshAuthToken(authConfig);
66
- authConfigCache[authConfig.path] = authConfig;
67
- await writeWranglerConfig(authConfig);
68
- }
69
- }
70
- return authConfig;
71
- }
72
- async function writeWranglerConfig(config) {
73
- if (config.exists === false)
74
- return;
75
- const TOML = await import("@iarna/toml");
76
- const configPath = await findWranglerConfig();
77
- config = {
78
- ...config,
79
- };
80
- // @ts-ignore - i put this here
81
- delete config.path;
82
- const toml = TOML.stringify(config);
83
- await fs.writeFile(configPath, toml);
84
- }
85
- // cache the file once per process
86
- const authConfigCache = {};
87
- async function readWranglerConfig() {
88
- const configPath = await findWranglerConfig();
89
- try {
90
- const config = (authConfigCache[configPath] ??= await parseTOML(await fs.readFile(configPath, "utf-8")));
91
- config.path = configPath;
92
- return config;
93
- }
94
- catch (e) {
95
- if (e.code === "ENOENT") {
96
- // The config doesn't exist
97
- return {
98
- path: configPath,
99
- exists: false,
100
- };
101
- }
102
- throw e;
103
- }
104
- }
105
- let wranglerConfigPath;
106
- async function findWranglerConfig() {
107
- if (wranglerConfigPath) {
108
- return wranglerConfigPath;
109
- }
110
- const environment = process.env.WRANGLER_API_ENVIRONMENT ?? "production";
111
- const filePath = path.join("config", `${environment === "production" ? "default.toml" : `${environment}.toml`}`);
112
- const xdgAppPaths = createXdgAppPaths(".wrangler");
113
- //TODO: We should implement a custom path --global-config and/or the WRANGLER_HOME type environment variable
114
- const configDir = xdgAppPaths.config(); // New XDG compliant config path
115
- const legacyConfigDir = path.join(os.homedir(), ".wrangler"); // Legacy config in user's home directory
116
- // Check for the .wrangler directory in root if it is not there then use the XDG compliant path.
117
- wranglerConfigPath = path.join((await isDirectory(legacyConfigDir)) ? legacyConfigDir : configDir, filePath);
118
- return wranglerConfigPath;
119
- }
120
- async function parseTOML(input) {
121
- const TOML = await import("@iarna/toml");
122
- try {
123
- // Normalize CRLF to LF to avoid hitting https://github.com/iarna/iarna-toml/issues/33.
124
- const normalizedInput = input.replace(/\r\n/g, "\n");
125
- return TOML.parse(normalizedInput);
126
- }
127
- catch (err) {
128
- const { name } = err;
129
- if (name !== "TomlError") {
130
- throw err;
131
- }
132
- throw new Error("TOML parse error");
133
- }
134
- }
135
- async function isDirectory(dir) {
136
- try {
137
- return (await fs.stat(dir)).isDirectory();
138
- }
139
- catch (_err) {
140
- return false;
29
+ else if (wranglerConfig.isErr()) {
30
+ throw new Error(`Cloudflare authentication failed: ${wranglerConfig.error.message}`);
141
31
  }
32
+ throw new Error("Cloudflare authentication required. Did you forget to login with `wrangler login` or set CLOUDFLARE_API_TOKEN, CLOUDFLARE_API_KEY?");
142
33
  }
143
34
  //# sourceMappingURL=auth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cloudflare/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cloudflare/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAyBhE,MAAM,UAAU,6BAA6B,CAC3C,OAA0C;IAE1C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC;AAC/D,CAAC;AAmBD,MAAM,UAAU,+BAA+B,CAC7C,OAA0C;IAE1C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAA0C;IAE1C,IAAI,6BAA6B,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,iBAAiB;QACjB,OAAO;YACL,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW;YACxC,cAAc,EAAE,OAAO,CAAC,KAAK;SAC9B,CAAC;IACJ,CAAC;SAAM,IAAI,+BAA+B,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,YAAY;QACZ,OAAO;YACL,aAAa,EAAE,UAAU,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE;SACzD,CAAC;IACJ,CAAC;IACD,uBAAuB;IACvB,MAAM,cAAc,GAAG,MAAM,0BAA0B,EAAE,CAAC;IAC1D,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;QAClD,OAAO;YACL,aAAa,EAAE,UAAU,cAAc,CAAC,KAAK,CAAC,WAAW,EAAE;SAC5D,CAAC;IACJ,CAAC;SAAM,IAAI,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,qCAAqC,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,CACpE,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,KAAK,CACb,oIAAoI,CACrI,CAAC;AACJ,CAAC"}
@@ -1,4 +1,13 @@
1
- export declare class BrowserRendering {
2
- readonly type = "browser";
3
- }
1
+ export type BrowserRendering = {
2
+ type: "browser";
3
+ };
4
+ /**
5
+ * Creates a browser rendering binding for running browser tasks in Workers.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * const browser = BrowserRendering();
10
+ * ```
11
+ */
12
+ export declare function BrowserRendering(): BrowserRendering;
4
13
  //# sourceMappingURL=browser-rendering.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-rendering.d.ts","sourceRoot":"","sources":["../../src/cloudflare/browser-rendering.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAgB;IAC3B,SAAgB,IAAI,aAAa;CAClC"}
1
+ {"version":3,"file":"browser-rendering.d.ts","sourceRoot":"","sources":["../../src/cloudflare/browser-rendering.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,SAAS,CAAC;CACjB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,IAAI,gBAAgB,CAInD"}
@@ -1,4 +1,14 @@
1
- export class BrowserRendering {
2
- type = "browser";
1
+ /**
2
+ * Creates a browser rendering binding for running browser tasks in Workers.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * const browser = BrowserRendering();
7
+ * ```
8
+ */
9
+ export function BrowserRendering() {
10
+ return {
11
+ type: "browser",
12
+ };
3
13
  }
4
14
  //# sourceMappingURL=browser-rendering.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-rendering.js","sourceRoot":"","sources":["../../src/cloudflare/browser-rendering.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,gBAAgB;IACX,IAAI,GAAG,SAAS,CAAC;CAClC"}
1
+ {"version":3,"file":"browser-rendering.js","sourceRoot":"","sources":["../../src/cloudflare/browser-rendering.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;QACL,IAAI,EAAE,SAAS;KAChB,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../../src/cloudflare/bundle/fs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAGrB,UAAU,aAAc,SAAQ,qBAAqB;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,qBAAa,gBAAiB,YAAW,oBAAoB;IAC3D,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,MAAM,CAAgB;gBAElB,KAAK,EAAE,aAAa;IAa1B,MAAM,CAAC,GAAG,UAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IA4BzC,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;CA+B7E"}
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../../src/cloudflare/bundle/fs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAGrB,UAAU,aAAc,SAAQ,qBAAqB;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,qBAAa,gBAAiB,YAAW,oBAAoB;IAC3D,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,MAAM,CAAgB;gBAElB,KAAK,EAAE,aAAa;IAa1B,MAAM,CAAC,GAAG,UAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IAiCzC,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;CA+B7E"}
@@ -27,6 +27,9 @@ export class FSBundleProvider {
27
27
  fileNames.add(file);
28
28
  }
29
29
  }));
30
+ if (fileNames.size === 0) {
31
+ throw new Error(`No files found matching ${this.globs.join(", ")} in ${this.root}`);
32
+ }
30
33
  const { files, hash } = await parseFiles(this.root, Array.from(fileNames), this.format);
31
34
  if (log) {
32
35
  logger.log(`${kleur.gray("worker:")} ${kleur.blue(this.entrypoint)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../src/cloudflare/bundle/fs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../src/cloudflare/bundle/fs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,OAAO,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAO9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASzC,MAAM,OAAO,gBAAgB;IACnB,IAAI,CAAS;IACb,UAAU,CAAS;IACnB,KAAK,CAAW;IAChB,MAAM,CAAgB;IAE9B,YAAY,KAAoB;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI;YAC1B,SAAS;YACT,UAAU;YACV,WAAW;YACX,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7C,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI;QACrB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAC5B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC3D,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QACF,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,2BAA2B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,CACnE,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CACtC,IAAI,CAAC,IAAI,EACT,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EACrB,IAAI,CAAC,MAAM,CACZ,CAAC;QACF,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACtE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACpE,MAAM,CAAC,GAAG,CACR,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CACjF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK;YACL,IAAI;SACL,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAmB;QAC7B,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;YAClC,SAAS,EAAE,IAAI;YACf,MAAM;SACP,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,cAAc,CAAC;YACxB,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBAC1B,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBACzB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC/C,IAAI,GAAG,YAAY,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;wBAC7D,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;oBACxB,CAAC;oBACD,MAAM,GAAG,CAAC;gBACZ,CAAC,CAAC,CAAC;gBACH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,UAAU,CAAC,KAAK,EAAE,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;oBACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACxC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;wBAChC,MAAM,GAAG,MAAM,CAAC;wBAChB,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;oBAC9C,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ export type InternalWorker = "cloudflare-state-store" | "dofs-state-store" | "remote-binding-proxy";
2
+ export declare const getInternalWorkerBundle: (name: InternalWorker) => Promise<{
3
+ file: File;
4
+ tag: string;
5
+ }>;
6
+ //# sourceMappingURL=internal-worker-bundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal-worker-bundle.d.ts","sourceRoot":"","sources":["../../../src/cloudflare/bundle/internal-worker-bundle.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,cAAc,GACtB,wBAAwB,GACxB,kBAAkB,GAClB,sBAAsB,CAAC;AAE3B,eAAO,MAAM,uBAAuB;;;EAUlC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import crypto from "node:crypto";
2
+ import fs from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { memoize } from "../../util/memoize.js";
5
+ export const getInternalWorkerBundle = memoize(async (name) => {
6
+ const content = await fs.readFile(path.join(import.meta.dirname, "..", "..", "..", "workers", `${name}.js`));
7
+ return {
8
+ file: new File([content], `${name}.js`, {
9
+ type: "application/javascript+module",
10
+ }),
11
+ tag: `${name}:${crypto.createHash("sha256").update(content).digest("hex")}`,
12
+ };
13
+ });
14
+ //# sourceMappingURL=internal-worker-bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal-worker-bundle.js","sourceRoot":"","sources":["../../../src/cloudflare/bundle/internal-worker-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAOhD,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC,KAAK,EAAE,IAAoB,EAAE,EAAE;IAC5E,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,KAAK,CAAC,CAC1E,CAAC;IACF,OAAO;QACL,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,KAAK,EAAE;YACtC,IAAI,EAAE,+BAA+B;SACtC,CAAC;QACF,GAAG,EAAE,GAAG,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;KAC5E,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Compatibility presets for Cloudflare Workers
3
+ *
4
+ * These presets provide common sets of compatibility flags to avoid
5
+ * users having to remember which flags they need for common use cases.
6
+ */
7
+ /**
8
+ * Mapping of compatibility presets to their respective compatibility flags
9
+ */
10
+ export declare const COMPATIBILITY_PRESETS: {
11
+ /**
12
+ * Node.js compatibility preset
13
+ * Enables Node.js APIs and runtime compatibility
14
+ */
15
+ readonly node: readonly ["nodejs_compat"];
16
+ };
17
+ export type CompatibilityPreset = keyof typeof COMPATIBILITY_PRESETS;
18
+ /**
19
+ * Union preset compatibility flags with user-provided flags
20
+ */
21
+ export declare function unionCompatibilityFlags(preset: CompatibilityPreset | undefined, userFlags?: string[]): string[];
22
+ //# sourceMappingURL=compatibility-presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility-presets.d.ts","sourceRoot":"","sources":["../../src/cloudflare/compatibility-presets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,eAAO,MAAM,qBAAqB;IAChC;;;OAGG;;CAEK,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,qBAAqB,CAAC;AAErE;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,mBAAmB,GAAG,SAAS,EACvC,SAAS,GAAE,MAAM,EAAO,GACvB,MAAM,EAAE,CAOV"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Compatibility presets for Cloudflare Workers
3
+ *
4
+ * These presets provide common sets of compatibility flags to avoid
5
+ * users having to remember which flags they need for common use cases.
6
+ */
7
+ /**
8
+ * Mapping of compatibility presets to their respective compatibility flags
9
+ */
10
+ export const COMPATIBILITY_PRESETS = {
11
+ /**
12
+ * Node.js compatibility preset
13
+ * Enables Node.js APIs and runtime compatibility
14
+ */
15
+ node: ["nodejs_compat"],
16
+ };
17
+ /**
18
+ * Union preset compatibility flags with user-provided flags
19
+ */
20
+ export function unionCompatibilityFlags(preset, userFlags = []) {
21
+ if (!preset) {
22
+ return userFlags;
23
+ }
24
+ const presetFlags = COMPATIBILITY_PRESETS[preset];
25
+ return Array.from(new Set([...presetFlags, ...userFlags]));
26
+ }
27
+ //# sourceMappingURL=compatibility-presets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility-presets.js","sourceRoot":"","sources":["../../src/cloudflare/compatibility-presets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC;;;OAGG;IACH,IAAI,EAAE,CAAC,eAAe,CAAC;CACf,CAAC;AAIX;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAuC,EACvC,YAAsB,EAAE;IAExB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,WAAW,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC"}
@@ -101,7 +101,7 @@ export type Container<T = any> = {
101
101
  /** Unique identifier for the container */
102
102
  id: string;
103
103
  /** Optional human-readable name for the container */
104
- name?: string;
104
+ name: string;
105
105
  /** Class name used to identify the container in Worker bindings */
106
106
  className: string;
107
107
  /** Docker image configuration for the container */
@@ -448,6 +448,7 @@ export interface ContainerApplicationData {
448
448
  /** Additional properties that may be returned by the API */
449
449
  [key: string]: any;
450
450
  }
451
+ export declare function getContainerApplication(api: CloudflareApi, applicationId: string): Promise<ContainerApplicationData | undefined>;
451
452
  export declare function listContainerApplications(api: CloudflareApi): Promise<ContainerApplicationData[]>;
452
453
  export declare function findContainerApplicationByName(api: CloudflareApi, name: string): Promise<ContainerApplicationData | undefined>;
453
454
  export interface CreateContainerApplicationBody {
@@ -462,9 +463,12 @@ export interface CreateContainerApplicationBody {
462
463
  constraints?: {
463
464
  tier: number;
464
465
  };
466
+ affinities?: {
467
+ colocation?: "datacenter";
468
+ };
465
469
  [key: string]: any;
466
470
  }
467
- export declare function createContainerApplication(api: CloudflareApi, body: CreateContainerApplicationBody): Promise<ContainerApplicationData>;
471
+ export declare function createContainerApplication(api: CloudflareApi, adopt: boolean | undefined, body: CreateContainerApplicationBody): Promise<ContainerApplicationData>;
468
472
  type Region = "AFR" | "APAC" | "EEUR" | "ENAM" | "WNAM" | "ME" | "OC" | "SAM" | "WEUR" | (string & {});
469
473
  type City = "AFR" | "APAC" | "EEUR" | "ENAM" | "WNAM" | "ME" | "OC" | "SAM" | "WEUR" | (string & {});
470
474
  export type UpdateApplicationRequestBody = {