alchemy 0.21.0 → 0.22.1

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 (316) hide show
  1. package/lib/ai/astro-file.d.ts +4 -4
  2. package/lib/ai/client.d.ts +1 -1
  3. package/lib/ai/css-file.d.ts +4 -4
  4. package/lib/ai/data.d.ts +4 -4
  5. package/lib/ai/document.d.ts +5 -5
  6. package/lib/ai/html-file.d.ts +4 -4
  7. package/lib/ai/index.d.ts +10 -10
  8. package/lib/ai/json-file.d.ts +4 -4
  9. package/lib/ai/typescript-file.d.ts +4 -4
  10. package/lib/ai/vue-file.d.ts +4 -4
  11. package/lib/ai/yaml-file.d.ts +4 -4
  12. package/lib/alchemy.d.ts +5 -5
  13. package/lib/apply.d.ts +2 -2
  14. package/lib/aws/bucket.d.ts +2 -2
  15. package/lib/aws/control/error.d.ts +1 -1
  16. package/lib/aws/control/index.d.ts +4 -4
  17. package/lib/aws/control/resource.d.ts +2 -2
  18. package/lib/aws/credentials.d.ts +1 -1
  19. package/lib/aws/function.d.ts +3 -3
  20. package/lib/aws/index.d.ts +9 -9
  21. package/lib/aws/oidc/github-oidc-provider.d.ts +1 -1
  22. package/lib/aws/oidc/index.d.ts +2 -2
  23. package/lib/aws/oidc/oidc-provider.d.ts +2 -2
  24. package/lib/aws/policy-attachment.d.ts +2 -2
  25. package/lib/aws/policy.d.ts +2 -2
  26. package/lib/aws/queue.d.ts +2 -2
  27. package/lib/aws/role.d.ts +3 -3
  28. package/lib/aws/ses.d.ts +2 -2
  29. package/lib/aws/table.d.ts +2 -2
  30. package/lib/cloudflare/account-api-token.d.ts +5 -5
  31. package/lib/cloudflare/account-id.d.ts +1 -1
  32. package/lib/cloudflare/ai-gateway.d.ts +3 -3
  33. package/lib/cloudflare/api.d.ts +2 -2
  34. package/lib/cloudflare/assets.d.ts +2 -2
  35. package/lib/cloudflare/auth.d.ts +1 -1
  36. package/lib/cloudflare/bindings.d.ts +18 -18
  37. package/lib/cloudflare/bound.d.ts +16 -16
  38. package/lib/cloudflare/bucket.d.ts +4 -4
  39. package/lib/cloudflare/bundle/bundle-worker.d.ts +2 -2
  40. package/lib/cloudflare/bundle/bundle-worker.d.ts.map +1 -1
  41. package/lib/cloudflare/bundle/bundle-worker.js +4 -0
  42. package/lib/cloudflare/bundle/bundle-worker.js.map +1 -1
  43. package/lib/cloudflare/bundle/wasm-plugin.d.ts +3 -0
  44. package/lib/cloudflare/bundle/wasm-plugin.d.ts.map +1 -0
  45. package/lib/cloudflare/bundle/wasm-plugin.js +53 -0
  46. package/lib/cloudflare/bundle/wasm-plugin.js.map +1 -0
  47. package/lib/cloudflare/custom-domain.d.ts +3 -3
  48. package/lib/cloudflare/custom-domain.js.map +1 -1
  49. package/lib/cloudflare/d1-clone.d.ts +3 -3
  50. package/lib/cloudflare/d1-database.d.ts +3 -3
  51. package/lib/cloudflare/d1-export.d.ts +1 -1
  52. package/lib/cloudflare/d1-import.d.ts +1 -1
  53. package/lib/cloudflare/d1-migrations.d.ts +1 -1
  54. package/lib/cloudflare/dns-records.d.ts +4 -4
  55. package/lib/cloudflare/durable-object-namespace.d.ts +1 -1
  56. package/lib/cloudflare/event-source.d.ts +2 -2
  57. package/lib/cloudflare/hyperdrive.d.ts +4 -4
  58. package/lib/cloudflare/index.d.ts +40 -39
  59. package/lib/cloudflare/index.d.ts.map +1 -1
  60. package/lib/cloudflare/index.js +1 -0
  61. package/lib/cloudflare/index.js.map +1 -1
  62. package/lib/cloudflare/kv-namespace.d.ts +3 -3
  63. package/lib/cloudflare/nuxt.d.ts +4 -4
  64. package/lib/cloudflare/nuxt.d.ts.map +1 -1
  65. package/lib/cloudflare/nuxt.js +2 -1
  66. package/lib/cloudflare/nuxt.js.map +1 -1
  67. package/lib/cloudflare/permission-groups.d.ts +3 -3
  68. package/lib/cloudflare/pipeline.d.ts +4 -4
  69. package/lib/cloudflare/queue-consumer.d.ts +4 -4
  70. package/lib/cloudflare/queue.d.ts +3 -3
  71. package/lib/cloudflare/r2-rest-state-store.d.ts +3 -3
  72. package/lib/cloudflare/react-router.d.ts +13 -0
  73. package/lib/cloudflare/react-router.d.ts.map +1 -0
  74. package/lib/cloudflare/react-router.js +29 -0
  75. package/lib/cloudflare/react-router.js.map +1 -0
  76. package/lib/cloudflare/redwood.d.ts +4 -4
  77. package/lib/cloudflare/route.d.ts +4 -4
  78. package/lib/cloudflare/tanstack-start.d.ts +4 -4
  79. package/lib/cloudflare/user.d.ts +2 -2
  80. package/lib/cloudflare/vectorize-index.d.ts +3 -3
  81. package/lib/cloudflare/vectorize-metadata-index.d.ts +4 -4
  82. package/lib/cloudflare/vite.d.ts +4 -4
  83. package/lib/cloudflare/website.d.ts +3 -3
  84. package/lib/cloudflare/website.d.ts.map +1 -1
  85. package/lib/cloudflare/website.js +30 -35
  86. package/lib/cloudflare/website.js.map +1 -1
  87. package/lib/cloudflare/worker-assets.d.ts +3 -3
  88. package/lib/cloudflare/worker-metadata.d.ts +5 -5
  89. package/lib/cloudflare/worker-stub.d.ts +3 -3
  90. package/lib/cloudflare/worker.d.ts +12 -11
  91. package/lib/cloudflare/worker.d.ts.map +1 -1
  92. package/lib/cloudflare/worker.js +2 -1
  93. package/lib/cloudflare/worker.js.map +1 -1
  94. package/lib/cloudflare/workflow.d.ts +2 -2
  95. package/lib/cloudflare/wrangler.json.d.ts +13 -2
  96. package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
  97. package/lib/cloudflare/wrangler.json.js +1 -0
  98. package/lib/cloudflare/wrangler.json.js.map +1 -1
  99. package/lib/cloudflare/zone.d.ts +4 -4
  100. package/lib/context.d.ts +3 -3
  101. package/lib/destroy.d.ts +2 -2
  102. package/lib/dns/import-dns.d.ts +3 -3
  103. package/lib/dns/index.d.ts +2 -2
  104. package/lib/esbuild/bundle.d.ts +2 -2
  105. package/lib/esbuild/index.d.ts +1 -1
  106. package/lib/fs/copy-file.d.ts +2 -2
  107. package/lib/fs/file-system-state-store.d.ts +2 -2
  108. package/lib/fs/file.d.ts +5 -5
  109. package/lib/fs/folder.d.ts +2 -2
  110. package/lib/fs/index.d.ts +14 -14
  111. package/lib/fs/static-astro-file.d.ts +1 -1
  112. package/lib/fs/static-css-file.d.ts +1 -1
  113. package/lib/fs/static-html-file.d.ts +1 -1
  114. package/lib/fs/static-json-file.d.ts +1 -1
  115. package/lib/fs/static-text-file.d.ts +1 -1
  116. package/lib/fs/static-typescript-file.d.ts +1 -1
  117. package/lib/fs/static-vue-file.d.ts +1 -1
  118. package/lib/fs/static-yaml-file.d.ts +1 -1
  119. package/lib/github/index.d.ts +2 -2
  120. package/lib/github/repository-environment.d.ts +2 -2
  121. package/lib/github/secret.d.ts +3 -3
  122. package/lib/index.d.ts +10 -10
  123. package/lib/internal/docs/providers.d.ts +2 -2
  124. package/lib/neon/api.d.ts +1 -1
  125. package/lib/neon/index.d.ts +3 -3
  126. package/lib/neon/project.d.ts +4 -4
  127. package/lib/os/exec.d.ts +2 -2
  128. package/lib/os/index.d.ts +1 -1
  129. package/lib/resource.d.ts +2 -2
  130. package/lib/runtime/bind.d.ts +3 -3
  131. package/lib/runtime/global.d.ts +1 -1
  132. package/lib/runtime/state.d.ts +1 -1
  133. package/lib/scope.d.ts +3 -3
  134. package/lib/sentry/api.d.ts +1 -1
  135. package/lib/sentry/client-key.d.ts +3 -3
  136. package/lib/sentry/index.d.ts +4 -4
  137. package/lib/sentry/project.d.ts +3 -3
  138. package/lib/sentry/team.d.ts +3 -3
  139. package/lib/serde.d.ts +3 -3
  140. package/lib/state.d.ts +2 -2
  141. package/lib/stripe/index.d.ts +4 -4
  142. package/lib/stripe/index.d.ts.map +1 -1
  143. package/lib/stripe/index.js +1 -1
  144. package/lib/stripe/index.js.map +1 -1
  145. package/lib/stripe/meter.d.ts +2 -2
  146. package/lib/stripe/price.d.ts +2 -2
  147. package/lib/stripe/product.d.ts +2 -2
  148. package/lib/stripe/webhook.d.ts +2 -2
  149. package/lib/test/bun.d.ts +3 -3
  150. package/lib/upstash/api.d.ts +1 -1
  151. package/lib/upstash/index.d.ts +3 -3
  152. package/lib/upstash/redis.d.ts +4 -4
  153. package/lib/vercel/api.d.ts +1 -1
  154. package/lib/vercel/index.d.ts +3 -3
  155. package/lib/vercel/project-domain.d.ts +3 -3
  156. package/lib/vercel/project.d.ts +4 -4
  157. package/lib/web/astro.d.ts +2 -2
  158. package/lib/web/shadcn-component.d.ts +2 -2
  159. package/lib/web/shadcn.d.ts +3 -3
  160. package/lib/web/tailwind.d.ts +2 -2
  161. package/lib/web/vite.d.ts +2 -2
  162. package/lib/web/vitepress/config.d.ts +1 -1
  163. package/lib/web/vitepress/custom-theme.d.ts +4 -4
  164. package/lib/web/vitepress/dependencies.d.ts +2 -2
  165. package/lib/web/vitepress/home-page.d.ts +3 -3
  166. package/lib/web/vitepress/index.d.ts +5 -5
  167. package/lib/web/vitepress/vitepress.d.ts +2 -2
  168. package/package.json +7 -7
  169. package/src/ai/astro-file.ts +5 -5
  170. package/src/ai/client.ts +1 -1
  171. package/src/ai/css-file.ts +5 -5
  172. package/src/ai/data.ts +5 -5
  173. package/src/ai/document.ts +5 -5
  174. package/src/ai/html-file.ts +5 -5
  175. package/src/ai/index.ts +10 -10
  176. package/src/ai/json-file.ts +6 -6
  177. package/src/ai/typescript-file.ts +5 -5
  178. package/src/ai/vue-file.ts +5 -5
  179. package/src/ai/yaml-file.ts +6 -6
  180. package/src/alchemy.ts +9 -9
  181. package/src/apply.ts +6 -6
  182. package/src/aws/bucket.ts +3 -3
  183. package/src/aws/control/client.ts +1 -1
  184. package/src/aws/control/error.ts +1 -1
  185. package/src/aws/control/index.ts +4 -4
  186. package/src/aws/control/proxy.ts +1 -1
  187. package/src/aws/control/resource.ts +5 -5
  188. package/src/aws/credentials.ts +1 -1
  189. package/src/aws/function.ts +4 -4
  190. package/src/aws/index.ts +9 -9
  191. package/src/aws/oidc/github-oidc-provider.ts +1 -1
  192. package/src/aws/oidc/index.ts +2 -2
  193. package/src/aws/oidc/oidc-provider.ts +3 -3
  194. package/src/aws/policy-attachment.ts +3 -3
  195. package/src/aws/policy.ts +2 -2
  196. package/src/aws/queue.ts +2 -2
  197. package/src/aws/role.ts +4 -4
  198. package/src/aws/ses.ts +3 -3
  199. package/src/aws/table.ts +4 -4
  200. package/src/cloudflare/account-api-token.ts +7 -7
  201. package/src/cloudflare/account-id.ts +1 -1
  202. package/src/cloudflare/ai-gateway.ts +6 -6
  203. package/src/cloudflare/api.ts +5 -5
  204. package/src/cloudflare/assets.ts +3 -3
  205. package/src/cloudflare/auth.ts +1 -1
  206. package/src/cloudflare/bindings.ts +18 -18
  207. package/src/cloudflare/bound.ts +16 -16
  208. package/src/cloudflare/bucket.ts +7 -7
  209. package/src/cloudflare/bundle/bundle-worker.ts +12 -8
  210. package/src/cloudflare/bundle/local-dev-cloudflare-shim.ts +1 -1
  211. package/src/cloudflare/bundle/nodejs-compat.ts +1 -1
  212. package/src/cloudflare/bundle/wasm-plugin.ts +57 -0
  213. package/src/cloudflare/custom-domain.ts +5 -5
  214. package/src/cloudflare/d1-clone.ts +3 -3
  215. package/src/cloudflare/d1-database.ts +7 -7
  216. package/src/cloudflare/d1-export.ts +1 -1
  217. package/src/cloudflare/d1-import.ts +1 -1
  218. package/src/cloudflare/d1-migrations.ts +2 -2
  219. package/src/cloudflare/dns-records.ts +5 -5
  220. package/src/cloudflare/durable-object-namespace.ts +1 -1
  221. package/src/cloudflare/event-source.ts +2 -2
  222. package/src/cloudflare/hyperdrive.ts +7 -7
  223. package/src/cloudflare/index.ts +40 -39
  224. package/src/cloudflare/kv-namespace.ts +7 -7
  225. package/src/cloudflare/nuxt.ts +6 -5
  226. package/src/cloudflare/permission-groups.ts +3 -3
  227. package/src/cloudflare/pipeline.ts +7 -7
  228. package/src/cloudflare/queue-consumer.ts +5 -5
  229. package/src/cloudflare/queue.ts +6 -6
  230. package/src/cloudflare/r2-rest-state-store.ts +8 -8
  231. package/src/cloudflare/react-router.ts +45 -0
  232. package/src/cloudflare/redwood.ts +4 -4
  233. package/src/cloudflare/route.ts +5 -5
  234. package/src/cloudflare/tanstack-start.ts +4 -4
  235. package/src/cloudflare/user.ts +3 -3
  236. package/src/cloudflare/vectorize-index.ts +6 -6
  237. package/src/cloudflare/vectorize-metadata-index.ts +5 -5
  238. package/src/cloudflare/vite.ts +4 -4
  239. package/src/cloudflare/website.ts +42 -48
  240. package/src/cloudflare/worker-assets.ts +4 -4
  241. package/src/cloudflare/worker-metadata.ts +7 -7
  242. package/src/cloudflare/worker-stub.ts +4 -4
  243. package/src/cloudflare/worker.ts +36 -33
  244. package/src/cloudflare/workflow.ts +3 -3
  245. package/src/cloudflare/wrangler.json.ts +17 -2
  246. package/src/cloudflare/zone.ts +5 -5
  247. package/src/context.ts +4 -4
  248. package/src/destroy.ts +4 -4
  249. package/src/dns/import-dns.ts +3 -3
  250. package/src/dns/index.ts +2 -2
  251. package/src/esbuild/bundle.ts +2 -2
  252. package/src/esbuild/index.ts +1 -1
  253. package/src/fs/copy-file.ts +3 -3
  254. package/src/fs/file-system-state-store.ts +5 -5
  255. package/src/fs/file.ts +7 -7
  256. package/src/fs/folder.ts +3 -3
  257. package/src/fs/index.ts +14 -14
  258. package/src/fs/static-astro-file.ts +1 -1
  259. package/src/fs/static-css-file.ts +1 -1
  260. package/src/fs/static-html-file.ts +1 -1
  261. package/src/fs/static-json-file.ts +1 -1
  262. package/src/fs/static-text-file.ts +1 -1
  263. package/src/fs/static-typescript-file.ts +1 -1
  264. package/src/fs/static-vue-file.ts +1 -1
  265. package/src/fs/static-yaml-file.ts +1 -1
  266. package/src/github/index.ts +2 -2
  267. package/src/github/repository-environment.ts +3 -3
  268. package/src/github/secret.ts +4 -4
  269. package/src/index.ts +10 -10
  270. package/src/internal/docs/providers.ts +4 -4
  271. package/src/neon/api.ts +2 -2
  272. package/src/neon/index.ts +3 -3
  273. package/src/neon/project.ts +6 -6
  274. package/src/os/exec.ts +2 -2
  275. package/src/os/index.ts +1 -1
  276. package/src/resource.ts +3 -3
  277. package/src/runtime/bind.ts +7 -7
  278. package/src/runtime/global.ts +1 -1
  279. package/src/runtime/state.ts +1 -1
  280. package/src/scope.ts +5 -5
  281. package/src/secret.ts +1 -1
  282. package/src/sentry/api.ts +2 -2
  283. package/src/sentry/client-key.ts +4 -4
  284. package/src/sentry/index.ts +4 -4
  285. package/src/sentry/project.ts +4 -4
  286. package/src/sentry/team.ts +4 -4
  287. package/src/serde.ts +4 -4
  288. package/src/state.ts +3 -3
  289. package/src/stripe/index.ts +4 -4
  290. package/src/stripe/meter.ts +2 -2
  291. package/src/stripe/price.ts +2 -2
  292. package/src/stripe/product.ts +2 -2
  293. package/src/stripe/webhook.ts +2 -2
  294. package/src/test/bun.ts +5 -5
  295. package/src/upstash/api.ts +1 -1
  296. package/src/upstash/index.ts +3 -3
  297. package/src/upstash/redis.ts +6 -6
  298. package/src/vercel/api.ts +2 -2
  299. package/src/vercel/index.ts +3 -3
  300. package/src/vercel/project-domain.ts +4 -4
  301. package/src/vercel/project.ts +4 -4
  302. package/src/web/astro.ts +7 -7
  303. package/src/web/shadcn-component.ts +3 -3
  304. package/src/web/shadcn.ts +6 -6
  305. package/src/web/tailwind.ts +4 -4
  306. package/src/web/vite.ts +8 -8
  307. package/src/web/vitepress/config.ts +1 -1
  308. package/src/web/vitepress/custom-theme.ts +10 -10
  309. package/src/web/vitepress/dependencies.ts +2 -2
  310. package/src/web/vitepress/home-page.ts +4 -4
  311. package/src/web/vitepress/index.ts +5 -5
  312. package/src/web/vitepress/vitepress.ts +7 -7
  313. package/lib/runtime/shims.d.ts +0 -6
  314. package/lib/runtime/shims.d.ts.map +0 -1
  315. package/lib/runtime/shims.js +0 -27
  316. package/lib/runtime/shims.js.map +0 -1
@@ -1,11 +1,15 @@
1
- import fs from "node:fs/promises";
2
1
  import path from "node:path";
3
- import { alchemy } from "../alchemy.js";
4
- import { Exec } from "../os/exec.js";
5
- import { Assets } from "./assets.js";
6
- import type { Bindings } from "./bindings.js";
7
- import { Worker, type AssetsConfig, type WorkerProps } from "./worker.js";
8
- import { WranglerJson } from "./wrangler.json.js";
2
+ import { alchemy } from "../alchemy.ts";
3
+ import { Exec } from "../os/exec.ts";
4
+ import { Assets } from "./assets.ts";
5
+ import type { Bindings } from "./bindings.ts";
6
+ import {
7
+ DEFAULT_COMPATIBILITY_DATE,
8
+ Worker,
9
+ type AssetsConfig,
10
+ type WorkerProps,
11
+ } from "./worker.ts";
12
+ import { WranglerJson } from "./wrangler.json.ts";
9
13
 
10
14
  export interface WebsiteProps<B extends Bindings>
11
15
  extends Omit<WorkerProps<B>, "name" | "assets" | "entrypoint"> {
@@ -69,9 +73,6 @@ export async function Website<B extends Bindings>(
69
73
  const wrangler = props.wrangler ?? true;
70
74
 
71
75
  return alchemy.run(id, async () => {
72
- // building the site requires a wrangler.jsonc file to start
73
- // - so initialize an empty one if it doesn't exist
74
-
75
76
  const cwd = path.resolve(props.cwd || process.cwd());
76
77
  const fileName =
77
78
  typeof wrangler === "boolean"
@@ -84,35 +85,17 @@ export async function Website<B extends Bindings>(
84
85
  const wranglerMain =
85
86
  typeof wrangler === "object" ? (wrangler.main ?? props.main) : props.main;
86
87
 
87
- if (wrangler) {
88
- try {
89
- await fs.access(wranglerPath!);
90
- } catch {
91
- await fs.writeFile(
92
- wranglerPath!,
93
- JSON.stringify(
94
- {
95
- name: id,
96
- main: wranglerMain,
97
- compatibility_date: new Date().toISOString().split("T")[0],
98
- compatibility_flags: props.compatibilityFlags ?? [],
99
- },
100
- null,
101
- 2,
102
- ),
103
- );
104
- }
105
- }
88
+ const workerName = props.name ?? id;
106
89
 
107
- await Exec("build", {
108
- cwd,
109
- command: props.command,
110
- });
90
+ const assetDir =
91
+ typeof props.assets === "string"
92
+ ? props.assets
93
+ : (props.assets?.dist ?? "dist");
111
94
 
112
- // @ts-expect-error - the WorkerProps union type not happy
113
- const worker = await Worker("worker", {
95
+ const workerProps = {
114
96
  ...props,
115
- name: props.name ?? id,
97
+ compatibilityDate: props.compatibilityDate ?? DEFAULT_COMPATIBILITY_DATE,
98
+ name: workerName,
116
99
  entrypoint: props.main,
117
100
  assets: {
118
101
  html_handling: "auto-trailing-slash",
@@ -130,25 +113,36 @@ export default {
130
113
  };`,
131
114
  url: true,
132
115
  adopt: true,
133
- bindings: {
134
- ...props.bindings,
135
- ASSETS: await Assets("assets", {
136
- path:
137
- typeof props.assets === "string"
138
- ? props.assets
139
- : (props.assets?.dist ?? "dist"),
140
- }),
141
- },
142
- });
116
+ } as WorkerProps<any> & { name: string };
143
117
 
144
118
  if (wrangler) {
145
119
  await WranglerJson("wrangler.jsonc", {
146
120
  path: wranglerPath,
147
- worker,
121
+ worker: workerProps,
148
122
  main: wranglerMain,
123
+ // hard-code the assets directory because we haven't yet included the assets binding
124
+ assets: {
125
+ binding: "ASSETS",
126
+ directory: assetDir,
127
+ },
149
128
  });
150
129
  }
151
130
 
152
- return worker as Website<B>;
131
+ await Exec("build", {
132
+ cwd,
133
+ command: props.command,
134
+ });
135
+
136
+ return (await Worker("worker", {
137
+ ...workerProps,
138
+ bindings: {
139
+ ...workerProps.bindings,
140
+ // we don't include the Assets binding until after build to make sure the asset manifest is correct
141
+ // we generate the wrangler.json using all the bind
142
+ ASSETS: await Assets("assets", {
143
+ path: assetDir,
144
+ }),
145
+ },
146
+ } as WorkerProps<any> & { name: string })) as Website<B>;
153
147
  });
154
148
  }
@@ -1,10 +1,10 @@
1
1
  import crypto from "node:crypto";
2
2
  import fs from "node:fs/promises";
3
3
  import path from "node:path";
4
- import { getContentType } from "../util/content-type.js";
5
- import type { CloudflareApi } from "./api.js";
6
- import type { Assets } from "./assets.js";
7
- import type { AssetsConfig, WorkerProps } from "./worker.js";
4
+ import { getContentType } from "../util/content-type.ts";
5
+ import type { CloudflareApi } from "./api.ts";
6
+ import type { Assets } from "./assets.ts";
7
+ import type { AssetsConfig, WorkerProps } from "./worker.ts";
8
8
 
9
9
  export interface AssetUploadResult {
10
10
  completionToken: string;
@@ -1,18 +1,18 @@
1
- import type { Context } from "../context.js";
2
- import { slugify } from "../util/slugify.js";
1
+ import type { Context } from "../context.ts";
2
+ import { slugify } from "../util/slugify.ts";
3
3
  import {
4
4
  Self,
5
5
  type Bindings,
6
6
  type WorkerBindingDurableObjectNamespace,
7
7
  type WorkerBindingSpec,
8
- } from "./bindings.js";
8
+ } from "./bindings.ts";
9
9
  import {
10
10
  isDurableObjectNamespace,
11
11
  type DurableObjectNamespace,
12
- } from "./durable-object-namespace.js";
13
- import { createAssetConfig, type AssetUploadResult } from "./worker-assets.js";
14
- import type { SingleStepMigration } from "./worker-migration.js";
15
- import type { AssetsConfig, Worker, WorkerProps } from "./worker.js";
12
+ } from "./durable-object-namespace.ts";
13
+ import { createAssetConfig, type AssetUploadResult } from "./worker-assets.ts";
14
+ import type { SingleStepMigration } from "./worker-migration.ts";
15
+ import type { AssetsConfig, Worker, WorkerProps } from "./worker.ts";
16
16
 
17
17
  /**
18
18
  * Metadata returned by Cloudflare API for a worker script
@@ -1,11 +1,11 @@
1
- import type { Context } from "../context.js";
2
- import { Resource, ResourceKind } from "../resource.js";
3
- import { handleApiError } from "./api-error.js";
1
+ import type { Context } from "../context.ts";
2
+ import { Resource, ResourceKind } from "../resource.ts";
3
+ import { handleApiError } from "./api-error.ts";
4
4
  import {
5
5
  createCloudflareApi,
6
6
  type CloudflareApi,
7
7
  type CloudflareApiOptions,
8
- } from "./api.js";
8
+ } from "./api.ts";
9
9
 
10
10
  /**
11
11
  * Properties for creating a Worker stub
@@ -1,60 +1,60 @@
1
1
  import path from "node:path";
2
- import type { Context } from "../context.js";
3
- import type { BundleProps } from "../esbuild/bundle.js";
4
- import { InnerResourceScope, Resource, ResourceKind } from "../resource.js";
5
- import { getBindKey, tryGetBinding } from "../runtime/bind.js";
6
- import { isRuntime } from "../runtime/global.js";
7
- import { bootstrapPlugin } from "../runtime/plugin.js";
8
- import { Scope } from "../scope.js";
9
- import { Secret, secret } from "../secret.js";
10
- import { serializeScope } from "../serde.js";
11
- import type { type } from "../type.js";
12
- import { withExponentialBackoff } from "../util/retry.js";
13
- import { slugify } from "../util/slugify.js";
14
- import { CloudflareApiError, handleApiError } from "./api-error.js";
2
+ import type { Context } from "../context.ts";
3
+ import type { BundleProps } from "../esbuild/bundle.ts";
4
+ import { InnerResourceScope, Resource, ResourceKind } from "../resource.ts";
5
+ import { getBindKey, tryGetBinding } from "../runtime/bind.ts";
6
+ import { isRuntime } from "../runtime/global.ts";
7
+ import { bootstrapPlugin } from "../runtime/plugin.ts";
8
+ import { Scope } from "../scope.ts";
9
+ import { Secret, secret } from "../secret.ts";
10
+ import { serializeScope } from "../serde.ts";
11
+ import type { type } from "../type.ts";
12
+ import { withExponentialBackoff } from "../util/retry.ts";
13
+ import { slugify } from "../util/slugify.ts";
14
+ import { CloudflareApiError, handleApiError } from "./api-error.ts";
15
15
  import {
16
16
  type CloudflareApi,
17
17
  type CloudflareApiOptions,
18
18
  createCloudflareApi,
19
- } from "./api.js";
20
- import type { Assets } from "./assets.js";
19
+ } from "./api.ts";
20
+ import type { Assets } from "./assets.ts";
21
21
  import {
22
22
  type Binding,
23
23
  type Bindings,
24
24
  Json,
25
25
  type WorkerBindingSpec,
26
- } from "./bindings.js";
27
- import type { Bound } from "./bound.js";
28
- import { isBucket } from "./bucket.js";
29
- import { bundleWorkerScript } from "./bundle/bundle-worker.js";
30
- import { isD1Database } from "./d1-database.js";
26
+ } from "./bindings.ts";
27
+ import type { Bound } from "./bound.ts";
28
+ import { isBucket } from "./bucket.ts";
29
+ import { bundleWorkerScript } from "./bundle/bundle-worker.ts";
30
+ import { isD1Database } from "./d1-database.ts";
31
31
  import {
32
32
  DurableObjectNamespace,
33
33
  isDurableObjectNamespace,
34
- } from "./durable-object-namespace.js";
34
+ } from "./durable-object-namespace.ts";
35
35
  import {
36
36
  type EventSource,
37
37
  type QueueEventSource,
38
38
  isQueueEventSource,
39
- } from "./event-source.js";
40
- import { isKVNamespace } from "./kv-namespace.js";
41
- import { isPipeline } from "./pipeline.js";
39
+ } from "./event-source.ts";
40
+ import { isKVNamespace } from "./kv-namespace.ts";
41
+ import { isPipeline } from "./pipeline.ts";
42
42
  import {
43
43
  QueueConsumer,
44
44
  deleteQueueConsumer,
45
45
  listQueueConsumers,
46
- } from "./queue-consumer.js";
47
- import { type QueueResource, isQueue } from "./queue.js";
48
- import { isVectorizeIndex } from "./vectorize-index.js";
49
- import { type AssetUploadResult, uploadAssets } from "./worker-assets.js";
46
+ } from "./queue-consumer.ts";
47
+ import { type QueueResource, isQueue } from "./queue.ts";
48
+ import { isVectorizeIndex } from "./vectorize-index.ts";
49
+ import { type AssetUploadResult, uploadAssets } from "./worker-assets.ts";
50
50
  import {
51
51
  type WorkerMetadata,
52
52
  type WorkerScriptMetadata,
53
53
  prepareWorkerMetadata,
54
- } from "./worker-metadata.js";
55
- import type { SingleStepMigration } from "./worker-migration.js";
56
- import { WorkerStub, isWorkerStub } from "./worker-stub.js";
57
- import { type Workflow, upsertWorkflow } from "./workflow.js";
54
+ } from "./worker-metadata.ts";
55
+ import type { SingleStepMigration } from "./worker-migration.ts";
56
+ import { WorkerStub, isWorkerStub } from "./worker-stub.ts";
57
+ import { type Workflow, upsertWorkflow } from "./workflow.ts";
58
58
 
59
59
  /**
60
60
  * Configuration options for static assets
@@ -683,6 +683,8 @@ export function Worker<const B extends Bindings>(
683
683
  });
684
684
  }
685
685
 
686
+ export const DEFAULT_COMPATIBILITY_DATE = "2025-04-20";
687
+
686
688
  export const _Worker = Resource(
687
689
  "cloudflare::Worker",
688
690
  {
@@ -699,7 +701,8 @@ export const _Worker = Resource(
699
701
  // Use the provided name
700
702
  const workerName = props.name ?? id;
701
703
 
702
- const compatibilityDate = props.compatibilityDate ?? "2025-04-20";
704
+ const compatibilityDate =
705
+ props.compatibilityDate ?? DEFAULT_COMPATIBILITY_DATE;
703
706
  const compatibilityFlags = props.compatibilityFlags ?? [];
704
707
 
705
708
  const uploadWorkerScript = async (props: WorkerProps<B>) => {
@@ -1,6 +1,6 @@
1
- import { handleApiError } from "./api-error.js";
2
- import type { CloudflareApi } from "./api.js";
3
- import type { Binding } from "./bindings.js";
1
+ import { handleApiError } from "./api-error.ts";
2
+ import type { CloudflareApi } from "./api.ts";
3
+ import type { Binding } from "./bindings.ts";
4
4
 
5
5
  export interface WorkflowProps {
6
6
  /**
@@ -7,7 +7,7 @@ import type { DurableObjectNamespace } from "./durable-object-namespace.js";
7
7
  import type { EventSource } from "./event-source.js";
8
8
  import { isQueueEventSource } from "./event-source.js";
9
9
  import { isQueue } from "./queue.js";
10
- import type { Worker } from "./worker.js";
10
+ import type { Worker, WorkerProps } from "./worker.js";
11
11
 
12
12
  /**
13
13
  * Properties for wrangler.json configuration file
@@ -17,7 +17,11 @@ export interface WranglerJsonProps {
17
17
  /**
18
18
  * The worker to generate the wrangler.json file for
19
19
  */
20
- worker: Worker<any>;
20
+ worker:
21
+ | Worker
22
+ | (WorkerProps<any> & {
23
+ name: string;
24
+ });
21
25
  /**
22
26
  * Path to write the wrangler.json file to
23
27
  *
@@ -31,6 +35,16 @@ export interface WranglerJsonProps {
31
35
  * @default worker.entrypoint
32
36
  */
33
37
  main?: string;
38
+
39
+ /**
40
+ * Path to the assets directory
41
+ *
42
+ * @default inferred from the worker's Asset bindings
43
+ */
44
+ assets?: {
45
+ binding: string;
46
+ directory: string;
47
+ };
34
48
  }
35
49
 
36
50
  /**
@@ -92,6 +106,7 @@ export const WranglerJson = Resource(
92
106
  // see: https://developers.cloudflare.com/workers/configuration/compatibility-dates/
93
107
  compatibility_date: worker.compatibilityDate,
94
108
  compatibility_flags: props.worker.compatibilityFlags,
109
+ assets: props.assets,
95
110
  };
96
111
 
97
112
  // Process bindings if they exist
@@ -1,7 +1,7 @@
1
- import type { Context } from "../context.js";
2
- import { Resource } from "../resource.js";
3
- import { handleApiError } from "./api-error.js";
4
- import { createCloudflareApi, type CloudflareApiOptions } from "./api.js";
1
+ import type { Context } from "../context.ts";
2
+ import { Resource } from "../resource.ts";
3
+ import { handleApiError } from "./api-error.ts";
4
+ import { createCloudflareApi, type CloudflareApiOptions } from "./api.ts";
5
5
  import type {
6
6
  AlwaysUseHTTPSValue,
7
7
  AutomaticHTTPSRewritesValue,
@@ -20,7 +20,7 @@ import type {
20
20
  UpdateZoneSettingParams,
21
21
  WebSocketsValue,
22
22
  ZeroRTTValue,
23
- } from "./zone-settings.js";
23
+ } from "./zone-settings.ts";
24
24
 
25
25
  /**
26
26
  * Properties for creating or updating a Zone
package/src/context.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { DestroyedSignal } from "./destroy.js";
1
+ import { DestroyedSignal } from "./destroy.ts";
2
2
  import {
3
3
  ResourceFQN,
4
4
  ResourceID,
@@ -7,9 +7,9 @@ import {
7
7
  ResourceSeq,
8
8
  type Resource,
9
9
  type ResourceProps,
10
- } from "./resource.js";
11
- import type { Scope } from "./scope.js";
12
- import type { State } from "./state.js";
10
+ } from "./resource.ts";
11
+ import type { Scope } from "./scope.ts";
12
+ import type { State } from "./state.ts";
13
13
 
14
14
  export type Context<
15
15
  Out extends Resource,
package/src/destroy.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { alchemy } from "./alchemy.js";
2
- import { context } from "./context.js";
1
+ import { alchemy } from "./alchemy.ts";
2
+ import { context } from "./context.ts";
3
3
  import {
4
4
  resolveDeletionHandler,
5
5
  type Resource,
@@ -8,8 +8,8 @@ import {
8
8
  ResourceKind,
9
9
  ResourceScope,
10
10
  ResourceSeq,
11
- } from "./resource.js";
12
- import { Scope } from "./scope.js";
11
+ } from "./resource.ts";
12
+ import { Scope } from "./scope.ts";
13
13
 
14
14
  export class DestroyedSignal extends Error {}
15
15
 
@@ -1,6 +1,6 @@
1
- import type { Context } from "../context.js";
2
- import { Resource } from "../resource.js";
3
- import { DEFAULT_RECORD_TYPES, type DnsRecordType } from "./record.js";
1
+ import type { Context } from "../context.ts";
2
+ import { Resource } from "../resource.ts";
3
+ import { DEFAULT_RECORD_TYPES, type DnsRecordType } from "./record.ts";
4
4
 
5
5
  /**
6
6
  * DNS record response structure from Cloudflare DNS API
package/src/dns/index.ts CHANGED
@@ -1,2 +1,2 @@
1
- export * from "./import-dns.js";
2
- export * from "./record.js";
1
+ export * from "./import-dns.ts";
2
+ export * from "./record.ts";
@@ -2,8 +2,8 @@ import type esbuild from "esbuild";
2
2
  import crypto from "node:crypto";
3
3
  import fs from "node:fs/promises";
4
4
  import path from "node:path";
5
- import type { Context } from "../context.js";
6
- import { Resource } from "../resource.js";
5
+ import type { Context } from "../context.ts";
6
+ import { Resource } from "../resource.ts";
7
7
 
8
8
  /**
9
9
  * Properties for creating or updating an esbuild bundle
@@ -1 +1 @@
1
- export * from "./bundle.js";
1
+ export * from "./bundle.ts";
@@ -1,7 +1,7 @@
1
1
  import fs from "node:fs";
2
- import type { Context } from "../context.js";
3
- import { Resource } from "../resource.js";
4
- import { ignore } from "../util/ignore.js";
2
+ import type { Context } from "../context.ts";
3
+ import { Resource } from "../resource.ts";
4
+ import { ignore } from "../util/ignore.ts";
5
5
 
6
6
  /**
7
7
  * Properties for creating a CopyFile resource
@@ -1,10 +1,10 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
- import { ResourceScope } from "../resource.js";
4
- import type { Scope } from "../scope.js";
5
- import { serialize } from "../serde.js";
6
- import { deserializeState, type State, type StateStore } from "../state.js";
7
- import { ignore } from "../util/ignore.js";
3
+ import { ResourceScope } from "../resource.ts";
4
+ import type { Scope } from "../scope.ts";
5
+ import { serialize } from "../serde.ts";
6
+ import { deserializeState, type State, type StateStore } from "../state.ts";
7
+ import { ignore } from "../util/ignore.ts";
8
8
 
9
9
  const stateRootDir = path.join(process.cwd(), ".alchemy");
10
10
 
package/src/fs/file.ts CHANGED
@@ -1,14 +1,14 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
- import type { Context } from "../context.js";
4
- import { Resource } from "../resource.js";
5
- import { ignore } from "../util/ignore.js";
3
+ import type { Context } from "../context.ts";
4
+ import { Resource } from "../resource.ts";
5
+ import { ignore } from "../util/ignore.ts";
6
6
 
7
- import { alchemy } from "../alchemy.js";
8
- import type { FileCollection } from "./file-collection.js";
9
- import type { FileRef } from "./file-ref.js";
7
+ import { alchemy } from "../alchemy.ts";
8
+ import type { FileCollection } from "./file-collection.ts";
9
+ import type { FileRef } from "./file-ref.ts";
10
10
 
11
- declare module "../alchemy.js" {
11
+ declare module "../alchemy.ts" {
12
12
  interface Alchemy {
13
13
  /**
14
14
  * Creates a reference to a file in the filesystem.
package/src/fs/folder.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import fs from "node:fs";
2
- import type { Context } from "../context.js";
3
- import { Resource } from "../resource.js";
4
- import { ignore } from "../util/ignore.js";
2
+ import type { Context } from "../context.ts";
3
+ import { Resource } from "../resource.ts";
4
+ import { ignore } from "../util/ignore.ts";
5
5
 
6
6
  export interface FolderProps {
7
7
  /**
package/src/fs/index.ts CHANGED
@@ -1,14 +1,14 @@
1
- export * from "./copy-file.js";
2
- export * from "./file-collection.js";
3
- export * from "./file-ref.js";
4
- export * from "./file-system-state-store.js";
5
- export * from "./file.js";
6
- export * from "./folder.js";
7
- export * from "./static-astro-file.js";
8
- export * from "./static-css-file.js";
9
- export * from "./static-html-file.js";
10
- export * from "./static-json-file.js";
11
- export * from "./static-text-file.js";
12
- export * from "./static-typescript-file.js";
13
- export * from "./static-vue-file.js";
14
- export * from "./static-yaml-file.js";
1
+ export * from "./copy-file.ts";
2
+ export * from "./file-collection.ts";
3
+ export * from "./file-ref.ts";
4
+ export * from "./file-system-state-store.ts";
5
+ export * from "./file.ts";
6
+ export * from "./folder.ts";
7
+ export * from "./static-astro-file.ts";
8
+ export * from "./static-css-file.ts";
9
+ export * from "./static-html-file.ts";
10
+ export * from "./static-json-file.ts";
11
+ export * from "./static-text-file.ts";
12
+ export * from "./static-typescript-file.ts";
13
+ export * from "./static-vue-file.ts";
14
+ export * from "./static-yaml-file.ts";
@@ -1,4 +1,4 @@
1
- import { File } from "./file.js";
1
+ import { File } from "./file.ts";
2
2
 
3
3
  export type StaticAstroFile = File;
4
4
 
@@ -1,4 +1,4 @@
1
- import { File } from "./file.js";
1
+ import { File } from "./file.ts";
2
2
 
3
3
  export type StaticCSSFile = File;
4
4
 
@@ -1,4 +1,4 @@
1
- import { File } from "./file.js";
1
+ import { File } from "./file.ts";
2
2
 
3
3
  export type StaticHTMLFile = File;
4
4
 
@@ -1,4 +1,4 @@
1
- import { File } from "./file.js";
1
+ import { File } from "./file.ts";
2
2
 
3
3
  /**
4
4
  * Creates a JSON file with formatted content
@@ -1,4 +1,4 @@
1
- import { File } from "./file.js";
1
+ import { File } from "./file.ts";
2
2
 
3
3
  /**
4
4
  * Creates a plain text file
@@ -1,4 +1,4 @@
1
- import { File } from "./file.js";
1
+ import { File } from "./file.ts";
2
2
 
3
3
  /**
4
4
  * Creates a TypeScript file with formatted content using prettier
@@ -1,4 +1,4 @@
1
- import { File } from "./file.js";
1
+ import { File } from "./file.ts";
2
2
 
3
3
  export type StaticVueFile = File;
4
4
 
@@ -1,4 +1,4 @@
1
- import { File } from "./file.js";
1
+ import { File } from "./file.ts";
2
2
  /**
3
3
  * Creates a YAML file with formatted content
4
4
  *
@@ -1,2 +1,2 @@
1
- export * from "./repository-environment.js";
2
- export * from "./secret.js";
1
+ export * from "./repository-environment.ts";
2
+ export * from "./secret.ts";
@@ -1,6 +1,6 @@
1
- import type { Context } from "../context.js";
2
- import { Resource } from "../resource.js";
3
- import { createGitHubClient, verifyGitHubAuth } from "./client.js";
1
+ import type { Context } from "../context.ts";
2
+ import { Resource } from "../resource.ts";
3
+ import { createGitHubClient, verifyGitHubAuth } from "./client.ts";
4
4
 
5
5
  /**
6
6
  * Properties for creating or updating a GitHub Repository Environment
@@ -1,8 +1,8 @@
1
1
  import sodium from "libsodium-wrappers";
2
- import type { Context } from "../context.js";
3
- import { Resource } from "../resource.js";
4
- import type { Secret } from "../secret.js";
5
- import { createGitHubClient, verifyGitHubAuth } from "./client.js";
2
+ import type { Context } from "../context.ts";
3
+ import { Resource } from "../resource.ts";
4
+ import type { Secret } from "../secret.ts";
5
+ import { createGitHubClient, verifyGitHubAuth } from "./client.ts";
6
6
  /**
7
7
  * Properties for creating or updating a GitHub Secret
8
8
  */