alchemy 0.20.1 → 0.22.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 (323) 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 +19 -16
  38. package/lib/cloudflare/bound.d.ts.map +1 -1
  39. package/lib/cloudflare/bucket.d.ts +4 -4
  40. package/lib/cloudflare/bundle/bundle-worker.d.ts +2 -2
  41. package/lib/cloudflare/custom-domain.d.ts +3 -3
  42. package/lib/cloudflare/custom-domain.js.map +1 -1
  43. package/lib/cloudflare/d1-clone.d.ts +3 -3
  44. package/lib/cloudflare/d1-database.d.ts +3 -3
  45. package/lib/cloudflare/d1-export.d.ts +1 -1
  46. package/lib/cloudflare/d1-import.d.ts +1 -1
  47. package/lib/cloudflare/d1-migrations.d.ts +1 -1
  48. package/lib/cloudflare/dns-records.d.ts +4 -4
  49. package/lib/cloudflare/durable-object-namespace.d.ts +1 -1
  50. package/lib/cloudflare/event-source.d.ts +2 -2
  51. package/lib/cloudflare/hyperdrive.d.ts +4 -4
  52. package/lib/cloudflare/index.d.ts +40 -39
  53. package/lib/cloudflare/index.d.ts.map +1 -1
  54. package/lib/cloudflare/index.js +1 -0
  55. package/lib/cloudflare/index.js.map +1 -1
  56. package/lib/cloudflare/kv-namespace.d.ts +3 -3
  57. package/lib/cloudflare/nuxt.d.ts +4 -4
  58. package/lib/cloudflare/nuxt.d.ts.map +1 -1
  59. package/lib/cloudflare/nuxt.js +2 -1
  60. package/lib/cloudflare/nuxt.js.map +1 -1
  61. package/lib/cloudflare/permission-groups.d.ts +3 -3
  62. package/lib/cloudflare/pipeline.d.ts +4 -4
  63. package/lib/cloudflare/queue-consumer.d.ts +4 -4
  64. package/lib/cloudflare/queue.d.ts +3 -3
  65. package/lib/cloudflare/r2-rest-state-store.d.ts +3 -3
  66. package/lib/cloudflare/react-router.d.ts +13 -0
  67. package/lib/cloudflare/react-router.d.ts.map +1 -0
  68. package/lib/cloudflare/react-router.js +29 -0
  69. package/lib/cloudflare/react-router.js.map +1 -0
  70. package/lib/cloudflare/redwood.d.ts +4 -4
  71. package/lib/cloudflare/route.d.ts +4 -4
  72. package/lib/cloudflare/tanstack-start.d.ts +4 -4
  73. package/lib/cloudflare/user.d.ts +2 -2
  74. package/lib/cloudflare/vectorize-index.d.ts +3 -3
  75. package/lib/cloudflare/vectorize-metadata-index.d.ts +4 -4
  76. package/lib/cloudflare/vite.d.ts +4 -4
  77. package/lib/cloudflare/website.d.ts +3 -3
  78. package/lib/cloudflare/website.d.ts.map +1 -1
  79. package/lib/cloudflare/website.js +30 -35
  80. package/lib/cloudflare/website.js.map +1 -1
  81. package/lib/cloudflare/worker-assets.d.ts +3 -3
  82. package/lib/cloudflare/worker-metadata.d.ts +6 -6
  83. package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
  84. package/lib/cloudflare/worker-metadata.js +110 -26
  85. package/lib/cloudflare/worker-metadata.js.map +1 -1
  86. package/lib/cloudflare/worker-stub.d.ts +3 -3
  87. package/lib/cloudflare/worker.d.ts +26 -17
  88. package/lib/cloudflare/worker.d.ts.map +1 -1
  89. package/lib/cloudflare/worker.js +21 -16
  90. package/lib/cloudflare/worker.js.map +1 -1
  91. package/lib/cloudflare/workflow.d.ts +3 -1
  92. package/lib/cloudflare/workflow.d.ts.map +1 -1
  93. package/lib/cloudflare/workflow.js +3 -0
  94. package/lib/cloudflare/workflow.js.map +1 -1
  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 +5 -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 -9
  123. package/lib/index.d.ts.map +1 -1
  124. package/lib/index.js +1 -0
  125. package/lib/index.js.map +1 -1
  126. package/lib/internal/docs/providers.d.ts +2 -2
  127. package/lib/neon/api.d.ts +1 -1
  128. package/lib/neon/index.d.ts +3 -3
  129. package/lib/neon/project.d.ts +4 -4
  130. package/lib/os/exec.d.ts +2 -2
  131. package/lib/os/index.d.ts +1 -1
  132. package/lib/resource.d.ts +2 -2
  133. package/lib/runtime/bind.d.ts +3 -3
  134. package/lib/runtime/global.d.ts +1 -1
  135. package/lib/runtime/state.d.ts +1 -1
  136. package/lib/scope.d.ts +3 -3
  137. package/lib/sentry/api.d.ts +1 -1
  138. package/lib/sentry/client-key.d.ts +3 -3
  139. package/lib/sentry/index.d.ts +4 -4
  140. package/lib/sentry/project.d.ts +3 -3
  141. package/lib/sentry/team.d.ts +3 -3
  142. package/lib/serde.d.ts +3 -3
  143. package/lib/state.d.ts +2 -2
  144. package/lib/stripe/index.d.ts +4 -4
  145. package/lib/stripe/index.d.ts.map +1 -1
  146. package/lib/stripe/index.js +1 -1
  147. package/lib/stripe/index.js.map +1 -1
  148. package/lib/stripe/meter.d.ts +2 -2
  149. package/lib/stripe/price.d.ts +2 -2
  150. package/lib/stripe/product.d.ts +2 -2
  151. package/lib/stripe/webhook.d.ts +2 -2
  152. package/lib/test/bun.d.ts +3 -3
  153. package/lib/type.d.ts +6 -0
  154. package/lib/type.d.ts.map +1 -0
  155. package/lib/type.js +7 -0
  156. package/lib/type.js.map +1 -0
  157. package/lib/upstash/api.d.ts +1 -1
  158. package/lib/upstash/index.d.ts +3 -3
  159. package/lib/upstash/redis.d.ts +4 -4
  160. package/lib/vercel/api.d.ts +1 -1
  161. package/lib/vercel/index.d.ts +3 -3
  162. package/lib/vercel/project-domain.d.ts +3 -3
  163. package/lib/vercel/project.d.ts +4 -4
  164. package/lib/web/astro.d.ts +2 -2
  165. package/lib/web/shadcn-component.d.ts +2 -2
  166. package/lib/web/shadcn.d.ts +3 -3
  167. package/lib/web/tailwind.d.ts +2 -2
  168. package/lib/web/vite.d.ts +2 -2
  169. package/lib/web/vitepress/config.d.ts +1 -1
  170. package/lib/web/vitepress/custom-theme.d.ts +4 -4
  171. package/lib/web/vitepress/dependencies.d.ts +2 -2
  172. package/lib/web/vitepress/home-page.d.ts +3 -3
  173. package/lib/web/vitepress/index.d.ts +5 -5
  174. package/lib/web/vitepress/vitepress.d.ts +2 -2
  175. package/package.json +7 -7
  176. package/src/ai/astro-file.ts +5 -5
  177. package/src/ai/client.ts +1 -1
  178. package/src/ai/css-file.ts +5 -5
  179. package/src/ai/data.ts +5 -5
  180. package/src/ai/document.ts +5 -5
  181. package/src/ai/html-file.ts +5 -5
  182. package/src/ai/index.ts +10 -10
  183. package/src/ai/json-file.ts +6 -6
  184. package/src/ai/typescript-file.ts +5 -5
  185. package/src/ai/vue-file.ts +5 -5
  186. package/src/ai/yaml-file.ts +6 -6
  187. package/src/alchemy.ts +9 -9
  188. package/src/apply.ts +6 -6
  189. package/src/aws/bucket.ts +3 -3
  190. package/src/aws/control/client.ts +1 -1
  191. package/src/aws/control/error.ts +1 -1
  192. package/src/aws/control/index.ts +4 -4
  193. package/src/aws/control/proxy.ts +1 -1
  194. package/src/aws/control/resource.ts +5 -5
  195. package/src/aws/credentials.ts +1 -1
  196. package/src/aws/function.ts +4 -4
  197. package/src/aws/index.ts +9 -9
  198. package/src/aws/oidc/github-oidc-provider.ts +1 -1
  199. package/src/aws/oidc/index.ts +2 -2
  200. package/src/aws/oidc/oidc-provider.ts +3 -3
  201. package/src/aws/policy-attachment.ts +3 -3
  202. package/src/aws/policy.ts +2 -2
  203. package/src/aws/queue.ts +2 -2
  204. package/src/aws/role.ts +4 -4
  205. package/src/aws/ses.ts +3 -3
  206. package/src/aws/table.ts +4 -4
  207. package/src/cloudflare/account-api-token.ts +7 -7
  208. package/src/cloudflare/account-id.ts +1 -1
  209. package/src/cloudflare/ai-gateway.ts +6 -6
  210. package/src/cloudflare/api.ts +5 -5
  211. package/src/cloudflare/assets.ts +3 -3
  212. package/src/cloudflare/auth.ts +1 -1
  213. package/src/cloudflare/bindings.ts +18 -18
  214. package/src/cloudflare/bound.ts +60 -50
  215. package/src/cloudflare/bucket.ts +7 -7
  216. package/src/cloudflare/bundle/bundle-worker.ts +8 -8
  217. package/src/cloudflare/bundle/local-dev-cloudflare-shim.ts +1 -1
  218. package/src/cloudflare/bundle/nodejs-compat.ts +1 -1
  219. package/src/cloudflare/custom-domain.ts +5 -5
  220. package/src/cloudflare/d1-clone.ts +3 -3
  221. package/src/cloudflare/d1-database.ts +7 -7
  222. package/src/cloudflare/d1-export.ts +1 -1
  223. package/src/cloudflare/d1-import.ts +1 -1
  224. package/src/cloudflare/d1-migrations.ts +2 -2
  225. package/src/cloudflare/dns-records.ts +5 -5
  226. package/src/cloudflare/durable-object-namespace.ts +1 -1
  227. package/src/cloudflare/event-source.ts +2 -2
  228. package/src/cloudflare/hyperdrive.ts +7 -7
  229. package/src/cloudflare/index.ts +40 -39
  230. package/src/cloudflare/kv-namespace.ts +7 -7
  231. package/src/cloudflare/nuxt.ts +6 -5
  232. package/src/cloudflare/permission-groups.ts +3 -3
  233. package/src/cloudflare/pipeline.ts +7 -7
  234. package/src/cloudflare/queue-consumer.ts +5 -5
  235. package/src/cloudflare/queue.ts +6 -6
  236. package/src/cloudflare/r2-rest-state-store.ts +8 -8
  237. package/src/cloudflare/react-router.ts +45 -0
  238. package/src/cloudflare/redwood.ts +4 -4
  239. package/src/cloudflare/route.ts +5 -5
  240. package/src/cloudflare/tanstack-start.ts +4 -4
  241. package/src/cloudflare/user.ts +3 -3
  242. package/src/cloudflare/vectorize-index.ts +6 -6
  243. package/src/cloudflare/vectorize-metadata-index.ts +5 -5
  244. package/src/cloudflare/vite.ts +4 -4
  245. package/src/cloudflare/website.ts +42 -48
  246. package/src/cloudflare/worker-assets.ts +4 -4
  247. package/src/cloudflare/worker-metadata.ts +134 -43
  248. package/src/cloudflare/worker-stub.ts +4 -4
  249. package/src/cloudflare/worker.ts +169 -124
  250. package/src/cloudflare/workflow.ts +7 -2
  251. package/src/cloudflare/wrangler.json.ts +21 -2
  252. package/src/cloudflare/zone.ts +5 -5
  253. package/src/context.ts +4 -4
  254. package/src/destroy.ts +4 -4
  255. package/src/dns/import-dns.ts +3 -3
  256. package/src/dns/index.ts +2 -2
  257. package/src/esbuild/bundle.ts +2 -2
  258. package/src/esbuild/index.ts +1 -1
  259. package/src/fs/copy-file.ts +3 -3
  260. package/src/fs/file-system-state-store.ts +5 -5
  261. package/src/fs/file.ts +7 -7
  262. package/src/fs/folder.ts +3 -3
  263. package/src/fs/index.ts +14 -14
  264. package/src/fs/static-astro-file.ts +1 -1
  265. package/src/fs/static-css-file.ts +1 -1
  266. package/src/fs/static-html-file.ts +1 -1
  267. package/src/fs/static-json-file.ts +1 -1
  268. package/src/fs/static-text-file.ts +1 -1
  269. package/src/fs/static-typescript-file.ts +1 -1
  270. package/src/fs/static-vue-file.ts +1 -1
  271. package/src/fs/static-yaml-file.ts +1 -1
  272. package/src/github/index.ts +2 -2
  273. package/src/github/repository-environment.ts +3 -3
  274. package/src/github/secret.ts +4 -4
  275. package/src/index.ts +10 -9
  276. package/src/internal/docs/providers.ts +4 -4
  277. package/src/neon/api.ts +2 -2
  278. package/src/neon/index.ts +3 -3
  279. package/src/neon/project.ts +6 -6
  280. package/src/os/exec.ts +2 -2
  281. package/src/os/index.ts +1 -1
  282. package/src/resource.ts +3 -3
  283. package/src/runtime/bind.ts +7 -7
  284. package/src/runtime/global.ts +1 -1
  285. package/src/runtime/state.ts +1 -1
  286. package/src/scope.ts +5 -5
  287. package/src/secret.ts +1 -1
  288. package/src/sentry/api.ts +2 -2
  289. package/src/sentry/client-key.ts +4 -4
  290. package/src/sentry/index.ts +4 -4
  291. package/src/sentry/project.ts +4 -4
  292. package/src/sentry/team.ts +4 -4
  293. package/src/serde.ts +4 -4
  294. package/src/state.ts +3 -3
  295. package/src/stripe/index.ts +4 -4
  296. package/src/stripe/meter.ts +2 -2
  297. package/src/stripe/price.ts +2 -2
  298. package/src/stripe/product.ts +2 -2
  299. package/src/stripe/webhook.ts +2 -2
  300. package/src/test/bun.ts +5 -5
  301. package/src/type.ts +9 -0
  302. package/src/upstash/api.ts +1 -1
  303. package/src/upstash/index.ts +3 -3
  304. package/src/upstash/redis.ts +6 -6
  305. package/src/vercel/api.ts +2 -2
  306. package/src/vercel/index.ts +3 -3
  307. package/src/vercel/project-domain.ts +4 -4
  308. package/src/vercel/project.ts +4 -4
  309. package/src/web/astro.ts +7 -7
  310. package/src/web/shadcn-component.ts +3 -3
  311. package/src/web/shadcn.ts +6 -6
  312. package/src/web/tailwind.ts +4 -4
  313. package/src/web/vite.ts +8 -8
  314. package/src/web/vitepress/config.ts +1 -1
  315. package/src/web/vitepress/custom-theme.ts +10 -10
  316. package/src/web/vitepress/dependencies.ts +2 -2
  317. package/src/web/vitepress/home-page.ts +4 -4
  318. package/src/web/vitepress/index.ts +5 -5
  319. package/src/web/vitepress/vitepress.ts +7 -7
  320. package/lib/runtime/shims.d.ts +0 -6
  321. package/lib/runtime/shims.d.ts.map +0 -1
  322. package/lib/runtime/shims.js +0 -27
  323. package/lib/runtime/shims.js.map +0 -1
@@ -1,14 +1,14 @@
1
- import type { Context } from "../context.js";
2
- import { Resource, ResourceKind } from "../resource.js";
3
- import { bind } from "../runtime/bind.js";
4
- import { withExponentialBackoff } from "../util/retry.js";
5
- import { handleApiError } from "./api-error.js";
1
+ import type { Context } from "../context.ts";
2
+ import { Resource, ResourceKind } from "../resource.ts";
3
+ import { bind } from "../runtime/bind.ts";
4
+ import { withExponentialBackoff } from "../util/retry.ts";
5
+ import { handleApiError } from "./api-error.ts";
6
6
  import {
7
7
  createCloudflareApi,
8
8
  type CloudflareApi,
9
9
  type CloudflareApiOptions,
10
- } from "./api.js";
11
- import type { Bound } from "./bound.js";
10
+ } from "./api.ts";
11
+ import type { Bound } from "./bound.ts";
12
12
 
13
13
  /**
14
14
  * Properties for creating or updating a KV Namespace
@@ -1,7 +1,8 @@
1
- import type { Assets } from "./assets.js";
2
- import type { Bindings } from "./bindings.js";
3
- import { Website, type WebsiteProps } from "./website.js";
4
- import type { Worker } from "./worker.js";
1
+ import path from "node:path";
2
+ import type { Assets } from "./assets.ts";
3
+ import type { Bindings } from "./bindings.ts";
4
+ import { Website, type WebsiteProps } from "./website.ts";
5
+ import type { Worker } from "./worker.ts";
5
6
 
6
7
  /**
7
8
  * Properties for creating a Nuxt resource.
@@ -57,7 +58,7 @@ export async function Nuxt<B extends Bindings>(
57
58
  // Default entry point for cloudflare-module preset
58
59
  main: props?.main ?? "./index.ts",
59
60
  // Default static assets directory for cloudflare-module preset
60
- assets: props?.assets ?? "./.output/public",
61
+ assets: props?.assets ?? path.join(".output", "public"),
61
62
  // Ensure nodejs_compat flag is included for Nuxt compatibility
62
63
  compatibilityFlags: ["nodejs_compat", ...(props?.compatibilityFlags ?? [])],
63
64
  // Enable wrangler by default, common for Nuxt/Cloudflare deployments
@@ -1,6 +1,6 @@
1
- import type { Context } from "../context.js";
2
- import { Resource } from "../resource.js";
3
- import { createCloudflareApi, type CloudflareApiOptions } from "./api.js";
1
+ import type { Context } from "../context.ts";
2
+ import { Resource } from "../resource.ts";
3
+ import { createCloudflareApi, type CloudflareApiOptions } from "./api.ts";
4
4
 
5
5
  /**
6
6
  * Cloudflare permission group as returned by the API
@@ -1,14 +1,14 @@
1
- import type { Context } from "../context.js";
2
- import { Resource, ResourceKind } from "../resource.js";
3
- import { bind } from "../runtime/bind.js";
4
- import type { Secret } from "../secret.js";
5
- import { CloudflareApiError, handleApiError } from "./api-error.js";
1
+ import type { Context } from "../context.ts";
2
+ import { Resource, ResourceKind } from "../resource.ts";
3
+ import { bind } from "../runtime/bind.ts";
4
+ import type { Secret } from "../secret.ts";
5
+ import { CloudflareApiError, handleApiError } from "./api-error.ts";
6
6
  import {
7
7
  createCloudflareApi,
8
8
  type CloudflareApi,
9
9
  type CloudflareApiOptions,
10
- } from "./api.js";
11
- import type { Bound } from "./bound.js";
10
+ } from "./api.ts";
11
+ import type { Bound } from "./bound.ts";
12
12
 
13
13
  /**
14
14
  * Settings for compression of pipeline output
@@ -1,12 +1,12 @@
1
- import type { Context } from "../context.js";
2
- import { Resource } from "../resource.js";
3
- import { CloudflareApiError, handleApiError } from "./api-error.js";
1
+ import type { Context } from "../context.ts";
2
+ import { Resource } from "../resource.ts";
3
+ import { CloudflareApiError, handleApiError } from "./api-error.ts";
4
4
  import {
5
5
  createCloudflareApi,
6
6
  type CloudflareApi,
7
7
  type CloudflareApiOptions,
8
- } from "./api.js";
9
- import type { QueueResource } from "./queue.js";
8
+ } from "./api.ts";
9
+ import type { QueueResource } from "./queue.ts";
10
10
 
11
11
  /**
12
12
  * Settings for configuring a Queue Consumer
@@ -1,13 +1,13 @@
1
- import type { Context } from "../context.js";
2
- import { Resource, ResourceKind } from "../resource.js";
3
- import { bind } from "../runtime/bind.js";
4
- import { CloudflareApiError, handleApiError } from "./api-error.js";
1
+ import type { Context } from "../context.ts";
2
+ import { Resource, ResourceKind } from "../resource.ts";
3
+ import { bind } from "../runtime/bind.ts";
4
+ import { CloudflareApiError, handleApiError } from "./api-error.ts";
5
5
  import {
6
6
  createCloudflareApi,
7
7
  type CloudflareApi,
8
8
  type CloudflareApiOptions,
9
- } from "./api.js";
10
- import type { Bound } from "./bound.js";
9
+ } from "./api.ts";
10
+ import type { Bound } from "./bound.ts";
11
11
 
12
12
  /**
13
13
  * Settings for a Cloudflare Queue
@@ -1,15 +1,15 @@
1
- import { ResourceScope } from "../resource.js";
2
- import type { Scope } from "../scope.js";
3
- import { serialize } from "../serde.js";
4
- import { deserializeState, type State, type StateStore } from "../state.js";
5
- import { withExponentialBackoff } from "../util/retry.js";
6
- import { CloudflareApiError, handleApiError } from "./api-error.js";
1
+ import { ResourceScope } from "../resource.ts";
2
+ import type { Scope } from "../scope.ts";
3
+ import { serialize } from "../serde.ts";
4
+ import { deserializeState, type State, type StateStore } from "../state.ts";
5
+ import { withExponentialBackoff } from "../util/retry.ts";
6
+ import { CloudflareApiError, handleApiError } from "./api-error.ts";
7
7
  import {
8
8
  type CloudflareApi,
9
9
  type CloudflareApiOptions,
10
10
  createCloudflareApi,
11
- } from "./api.js";
12
- import { createBucket, getBucket } from "./bucket.js";
11
+ } from "./api.ts";
12
+ import { createBucket, getBucket } from "./bucket.ts";
13
13
 
14
14
  /**
15
15
  * Options for CloudflareR2StateStore
@@ -0,0 +1,45 @@
1
+ import path from "node:path";
2
+ import type { Assets } from "./assets.js";
3
+ import type { Bindings } from "./bindings.js";
4
+ import { Website, type WebsiteProps } from "./website.js";
5
+ import type { Worker } from "./worker.js";
6
+
7
+ export interface ReactRouterProps<B extends Bindings> extends WebsiteProps<B> {}
8
+
9
+ // don't allow the ASSETS to be overriden
10
+ export type ReactRouter<B extends Bindings> = B extends { ASSETS: any }
11
+ ? never
12
+ : Worker<B & { ASSETS: Assets }>;
13
+
14
+ export async function ReactRouter<B extends Bindings>(
15
+ id: string,
16
+ props: ReactRouterProps<B>,
17
+ ): Promise<ReactRouter<B>> {
18
+ const defaultAssets = path.join("build", "client");
19
+ return Website(id, {
20
+ ...props,
21
+ // Alchemy should bundle the result of `vite built`, not the user's main
22
+ // TODO: we probably need bundling to properly handle WASM/rules
23
+ main: path.join(props.cwd ?? process.cwd(), "build", "server", "index.js"),
24
+ wrangler: {
25
+ // wrangler should point to the user's main (e.g. `worker.ts`), unless overridden
26
+ main:
27
+ typeof props.wrangler === "object"
28
+ ? (props.wrangler.main ?? props.main)
29
+ : props.main,
30
+ // write to wrangler.json by default but respect overrides
31
+ path:
32
+ typeof props.wrangler === "string"
33
+ ? props.wrangler
34
+ : typeof props.wrangler === "object"
35
+ ? props.wrangler.path
36
+ : undefined,
37
+ },
38
+ assets:
39
+ typeof props.assets === "object"
40
+ ? {
41
+ dist: props.assets.dist ?? defaultAssets,
42
+ }
43
+ : (props.assets ?? defaultAssets),
44
+ });
45
+ }
@@ -1,8 +1,8 @@
1
1
  import path from "node:path";
2
- import type { Assets } from "./assets.js";
3
- import type { Bindings } from "./bindings.js";
4
- import { Website, type WebsiteProps } from "./website.js";
5
- import type { Worker } from "./worker.js";
2
+ import type { Assets } from "./assets.ts";
3
+ import type { Bindings } from "./bindings.ts";
4
+ import { Website, type WebsiteProps } from "./website.ts";
5
+ import type { Worker } from "./worker.ts";
6
6
 
7
7
  export interface RedwoodProps<B extends Bindings> extends WebsiteProps<B> {}
8
8
 
@@ -1,12 +1,12 @@
1
- import type { Context } from "../context.js";
2
- import { Resource } from "../resource.js";
3
- import { CloudflareApiError, handleApiError } from "./api-error.js";
1
+ import type { Context } from "../context.ts";
2
+ import { Resource } from "../resource.ts";
3
+ import { CloudflareApiError, handleApiError } from "./api-error.ts";
4
4
  import {
5
5
  createCloudflareApi,
6
6
  type CloudflareApi,
7
7
  type CloudflareApiOptions,
8
- } from "./api.js";
9
- import type { Worker } from "./worker.js";
8
+ } from "./api.ts";
9
+ import type { Worker } from "./worker.ts";
10
10
 
11
11
  /**
12
12
  * Properties for creating or updating a Route
@@ -1,7 +1,7 @@
1
- import type { Assets } from "./assets.js";
2
- import type { Bindings } from "./bindings.js";
3
- import { Website, type WebsiteProps } from "./website.js";
4
- import type { Worker } from "./worker.js";
1
+ import type { Assets } from "./assets.ts";
2
+ import type { Bindings } from "./bindings.ts";
3
+ import { Website, type WebsiteProps } from "./website.ts";
4
+ import type { Worker } from "./worker.ts";
5
5
 
6
6
  export interface TanStackStartProps<B extends Bindings>
7
7
  extends WebsiteProps<B> {}
@@ -1,9 +1,9 @@
1
- import type { Secret } from "../secret.js";
2
- import { CloudflareApiError } from "./api-error.js";
1
+ import type { Secret } from "../secret.ts";
2
+ import { CloudflareApiError } from "./api-error.ts";
3
3
  import {
4
4
  getCloudflareAuthHeaders,
5
5
  type CloudflareAuthOptions,
6
- } from "./auth.js";
6
+ } from "./auth.ts";
7
7
 
8
8
  export interface CloudflareAccount {
9
9
  name: string;
@@ -1,13 +1,13 @@
1
- import type { Context } from "../context.js";
2
- import { Resource, ResourceKind } from "../resource.js";
3
- import { bind } from "../runtime/bind.js";
4
- import { CloudflareApiError, handleApiError } from "./api-error.js";
1
+ import type { Context } from "../context.ts";
2
+ import { Resource, ResourceKind } from "../resource.ts";
3
+ import { bind } from "../runtime/bind.ts";
4
+ import { CloudflareApiError, handleApiError } from "./api-error.ts";
5
5
  import {
6
6
  createCloudflareApi,
7
7
  type CloudflareApi,
8
8
  type CloudflareApiOptions,
9
- } from "./api.js";
10
- import type { Bound } from "./bound.js";
9
+ } from "./api.ts";
10
+ import type { Bound } from "./bound.ts";
11
11
 
12
12
  /**
13
13
  * Properties for creating or updating a Vectorize Index
@@ -1,12 +1,12 @@
1
- import type { Context } from "../context.js";
2
- import { Resource, ResourceKind } from "../resource.js";
3
- import { CloudflareApiError, handleApiError } from "./api-error.js";
1
+ import type { Context } from "../context.ts";
2
+ import { Resource, ResourceKind } from "../resource.ts";
3
+ import { CloudflareApiError, handleApiError } from "./api-error.ts";
4
4
  import {
5
5
  createCloudflareApi,
6
6
  type CloudflareApi,
7
7
  type CloudflareApiOptions,
8
- } from "./api.js";
9
- import type { VectorizeIndexResource } from "./vectorize-index.js";
8
+ } from "./api.ts";
9
+ import type { VectorizeIndexResource } from "./vectorize-index.ts";
10
10
 
11
11
  /**
12
12
  * Properties for creating or deleting a Vectorize Metadata Index
@@ -1,8 +1,8 @@
1
1
  import path from "node:path";
2
- import type { Assets } from "./assets.js";
3
- import type { Bindings } from "./bindings.js";
4
- import { Website, type WebsiteProps } from "./website.js";
5
- import type { Worker } from "./worker.js";
2
+ import type { Assets } from "./assets.ts";
3
+ import type { Bindings } from "./bindings.ts";
4
+ import { Website, type WebsiteProps } from "./website.ts";
5
+ import type { Worker } from "./worker.ts";
6
6
 
7
7
  export interface ViteProps<B extends Bindings> extends WebsiteProps<B> {}
8
8
 
@@ -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;