alchemy 0.56.0 → 0.57.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 (247) hide show
  1. package/bin/alchemy.js +14201 -14162
  2. package/bin/commands/create.ts +7 -7
  3. package/bin/commands/deploy.ts +2 -2
  4. package/bin/commands/destroy.ts +2 -2
  5. package/bin/commands/dev.ts +2 -2
  6. package/bin/commands/init.ts +6 -6
  7. package/bin/commands/login.ts +3 -3
  8. package/bin/commands/run.ts +2 -2
  9. package/bin/services/execute-alchemy.ts +3 -3
  10. package/bin/trpc.ts +49 -0
  11. package/lib/apply.d.ts.map +1 -1
  12. package/lib/apply.js +3 -4
  13. package/lib/apply.js.map +1 -1
  14. package/lib/cloudflare/{astro.d.ts → astro/astro.d.ts} +6 -5
  15. package/lib/cloudflare/astro/astro.d.ts.map +1 -0
  16. package/lib/cloudflare/astro/astro.js +91 -0
  17. package/lib/cloudflare/astro/astro.js.map +1 -0
  18. package/lib/cloudflare/astro/plugin.d.ts +4 -0
  19. package/lib/cloudflare/astro/plugin.d.ts.map +1 -0
  20. package/lib/cloudflare/astro/plugin.js +10 -0
  21. package/lib/cloudflare/astro/plugin.js.map +1 -0
  22. package/lib/cloudflare/cloudflare-env-proxy.d.ts +4 -0
  23. package/lib/cloudflare/cloudflare-env-proxy.d.ts.map +1 -0
  24. package/lib/cloudflare/cloudflare-env-proxy.js +34 -0
  25. package/lib/cloudflare/cloudflare-env-proxy.js.map +1 -0
  26. package/lib/cloudflare/compatibility-date.gen.d.ts +1 -1
  27. package/lib/cloudflare/compatibility-date.gen.js +1 -1
  28. package/lib/cloudflare/d1-local-migrations.js +1 -1
  29. package/lib/cloudflare/d1-local-migrations.js.map +1 -1
  30. package/lib/cloudflare/index.d.ts +8 -8
  31. package/lib/cloudflare/index.d.ts.map +1 -1
  32. package/lib/cloudflare/index.js +8 -8
  33. package/lib/cloudflare/index.js.map +1 -1
  34. package/lib/cloudflare/miniflare/miniflare-controller.d.ts.map +1 -1
  35. package/lib/cloudflare/miniflare/miniflare-controller.js +2 -1
  36. package/lib/cloudflare/miniflare/miniflare-controller.js.map +1 -1
  37. package/lib/cloudflare/miniflare/paths.d.ts +5 -0
  38. package/lib/cloudflare/miniflare/paths.d.ts.map +1 -0
  39. package/lib/cloudflare/miniflare/paths.js +35 -0
  40. package/lib/cloudflare/miniflare/paths.js.map +1 -0
  41. package/lib/cloudflare/{nuxt.d.ts → nuxt/nuxt.d.ts} +4 -4
  42. package/lib/cloudflare/nuxt/nuxt.d.ts.map +1 -0
  43. package/lib/cloudflare/{nuxt.js → nuxt/nuxt.js} +8 -13
  44. package/lib/cloudflare/nuxt/nuxt.js.map +1 -0
  45. package/lib/cloudflare/nuxt/plugin.d.ts +4 -0
  46. package/lib/cloudflare/nuxt/plugin.d.ts.map +1 -0
  47. package/lib/cloudflare/nuxt/plugin.js +14 -0
  48. package/lib/cloudflare/nuxt/plugin.js.map +1 -0
  49. package/lib/cloudflare/oauth.js +2 -2
  50. package/lib/cloudflare/oauth.js.map +1 -1
  51. package/lib/cloudflare/orange.d.ts +3 -3
  52. package/lib/cloudflare/orange.d.ts.map +1 -1
  53. package/lib/cloudflare/orange.js +11 -21
  54. package/lib/cloudflare/orange.js.map +1 -1
  55. package/lib/cloudflare/react-router/plugin.d.ts +4 -0
  56. package/lib/cloudflare/react-router/plugin.d.ts.map +1 -0
  57. package/lib/cloudflare/react-router/plugin.js +11 -0
  58. package/lib/cloudflare/react-router/plugin.js.map +1 -0
  59. package/lib/cloudflare/react-router/react-router.d.ts +17 -0
  60. package/lib/cloudflare/react-router/react-router.d.ts.map +1 -0
  61. package/lib/cloudflare/react-router/react-router.js +21 -0
  62. package/lib/cloudflare/react-router/react-router.js.map +1 -0
  63. package/lib/cloudflare/redwood/plugin.d.ts +4 -0
  64. package/lib/cloudflare/redwood/plugin.d.ts.map +1 -0
  65. package/lib/cloudflare/redwood/plugin.js +19 -0
  66. package/lib/cloudflare/redwood/plugin.js.map +1 -0
  67. package/lib/cloudflare/{redwood.d.ts → redwood/redwood.d.ts} +5 -5
  68. package/lib/cloudflare/redwood/redwood.d.ts.map +1 -0
  69. package/lib/cloudflare/{redwood.js → redwood/redwood.js} +12 -13
  70. package/lib/cloudflare/redwood/redwood.js.map +1 -0
  71. package/lib/cloudflare/sveltekit/plugin.d.ts +4 -0
  72. package/lib/cloudflare/sveltekit/plugin.d.ts.map +1 -0
  73. package/lib/cloudflare/sveltekit/plugin.js +11 -0
  74. package/lib/cloudflare/sveltekit/plugin.js.map +1 -0
  75. package/lib/cloudflare/{sveltekit.d.ts → sveltekit/sveltekit.d.ts} +5 -5
  76. package/lib/cloudflare/sveltekit/sveltekit.d.ts.map +1 -0
  77. package/lib/cloudflare/{sveltekit.js → sveltekit/sveltekit.js} +4 -4
  78. package/lib/cloudflare/sveltekit/sveltekit.js.map +1 -0
  79. package/lib/cloudflare/{local-dev-cloudflare-shim.d.ts → tanstack-start/plugin.d.ts} +3 -2
  80. package/lib/cloudflare/tanstack-start/plugin.d.ts.map +1 -0
  81. package/lib/cloudflare/{local-dev-cloudflare-shim.js → tanstack-start/plugin.js} +6 -9
  82. package/lib/cloudflare/tanstack-start/plugin.js.map +1 -0
  83. package/lib/cloudflare/{tanstack-start.d.ts → tanstack-start/tanstack-start.d.ts} +5 -5
  84. package/lib/cloudflare/tanstack-start/tanstack-start.d.ts.map +1 -0
  85. package/lib/cloudflare/tanstack-start/tanstack-start.js +11 -0
  86. package/lib/cloudflare/tanstack-start/tanstack-start.js.map +1 -0
  87. package/lib/cloudflare/vite/plugin.d.ts +4 -0
  88. package/lib/cloudflare/vite/plugin.d.ts.map +1 -0
  89. package/lib/cloudflare/vite/plugin.js +23 -0
  90. package/lib/cloudflare/vite/plugin.js.map +1 -0
  91. package/lib/cloudflare/{vite.d.ts → vite/vite.d.ts} +4 -4
  92. package/lib/cloudflare/vite/vite.d.ts.map +1 -0
  93. package/lib/cloudflare/vite/vite.js +19 -0
  94. package/lib/cloudflare/vite/vite.js.map +1 -0
  95. package/lib/cloudflare/website.d.ts +92 -70
  96. package/lib/cloudflare/website.d.ts.map +1 -1
  97. package/lib/cloudflare/website.js +225 -94
  98. package/lib/cloudflare/website.js.map +1 -1
  99. package/lib/cloudflare/worker-bundle.d.ts +1 -1
  100. package/lib/cloudflare/worker-bundle.d.ts.map +1 -1
  101. package/lib/cloudflare/worker-bundle.js +23 -13
  102. package/lib/cloudflare/worker-bundle.js.map +1 -1
  103. package/lib/cloudflare/worker-stub.d.ts.map +1 -1
  104. package/lib/cloudflare/worker-stub.js +3 -6
  105. package/lib/cloudflare/worker-stub.js.map +1 -1
  106. package/lib/cloudflare/worker.d.ts +2 -7
  107. package/lib/cloudflare/worker.d.ts.map +1 -1
  108. package/lib/cloudflare/worker.js +5 -124
  109. package/lib/cloudflare/worker.js.map +1 -1
  110. package/lib/cloudflare/wrangler.json.d.ts +6 -0
  111. package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
  112. package/lib/cloudflare/wrangler.json.js +23 -6
  113. package/lib/cloudflare/wrangler.json.js.map +1 -1
  114. package/lib/env.d.ts +2 -2
  115. package/lib/env.d.ts.map +1 -1
  116. package/lib/env.js +5 -6
  117. package/lib/env.js.map +1 -1
  118. package/lib/random/index.d.ts +2 -0
  119. package/lib/random/index.d.ts.map +1 -0
  120. package/lib/random/index.js +2 -0
  121. package/lib/random/index.js.map +1 -0
  122. package/lib/random/random-string.d.ts +87 -0
  123. package/lib/random/random-string.d.ts.map +1 -0
  124. package/lib/random/random-string.js +72 -0
  125. package/lib/random/random-string.js.map +1 -0
  126. package/lib/runtime/bind.d.ts +1 -1
  127. package/lib/runtime/bind.d.ts.map +1 -1
  128. package/lib/runtime/bind.js.map +1 -1
  129. package/lib/scope.d.ts +0 -1
  130. package/lib/scope.d.ts.map +1 -1
  131. package/lib/scope.js +1 -2
  132. package/lib/scope.js.map +1 -1
  133. package/lib/secret.d.ts +2 -2
  134. package/lib/secret.d.ts.map +1 -1
  135. package/lib/secret.js +2 -2
  136. package/lib/secret.js.map +1 -1
  137. package/lib/state/cloudflare-state-store.js +1 -1
  138. package/lib/state/cloudflare-state-store.js.map +1 -1
  139. package/lib/state/dofs-state-store/index.js +1 -1
  140. package/lib/state/dofs-state-store/index.js.map +1 -1
  141. package/lib/util/detect-package-manager.d.ts +1 -0
  142. package/lib/util/detect-package-manager.d.ts.map +1 -1
  143. package/lib/util/detect-package-manager.js +10 -0
  144. package/lib/util/detect-package-manager.js.map +1 -1
  145. package/lib/util/telemetry/client.d.ts +1 -1
  146. package/lib/util/telemetry/client.d.ts.map +1 -1
  147. package/lib/util/telemetry/client.js +22 -1
  148. package/lib/util/telemetry/client.js.map +1 -1
  149. package/lib/util/telemetry/constants.d.ts.map +1 -1
  150. package/lib/util/telemetry/constants.js +2 -3
  151. package/lib/util/telemetry/constants.js.map +1 -1
  152. package/lib/util/telemetry/context.d.ts +1 -1
  153. package/lib/util/telemetry/context.d.ts.map +1 -1
  154. package/lib/util/telemetry/types.d.ts +7 -3
  155. package/lib/util/telemetry/types.d.ts.map +1 -1
  156. package/lib/vercel/api.d.ts.map +1 -1
  157. package/lib/vercel/api.js +1 -1
  158. package/lib/vercel/api.js.map +1 -1
  159. package/package.json +41 -3
  160. package/src/apply.ts +3 -7
  161. package/src/cloudflare/{astro.ts → astro/astro.ts} +46 -29
  162. package/src/cloudflare/astro/plugin.ts +11 -0
  163. package/src/cloudflare/cloudflare-env-proxy.ts +50 -0
  164. package/src/cloudflare/compatibility-date.gen.ts +1 -1
  165. package/src/cloudflare/d1-local-migrations.ts +1 -1
  166. package/src/cloudflare/index.ts +8 -8
  167. package/src/cloudflare/miniflare/miniflare-controller.ts +2 -1
  168. package/src/cloudflare/miniflare/paths.ts +52 -0
  169. package/src/cloudflare/{nuxt.ts → nuxt/nuxt.ts} +11 -16
  170. package/src/cloudflare/nuxt/plugin.ts +18 -0
  171. package/src/cloudflare/oauth.ts +2 -2
  172. package/src/cloudflare/orange.ts +13 -23
  173. package/src/cloudflare/react-router/plugin.ts +13 -0
  174. package/src/cloudflare/react-router/react-router.ts +41 -0
  175. package/src/cloudflare/redwood/plugin.ts +20 -0
  176. package/src/cloudflare/{redwood.ts → redwood/redwood.ts} +16 -19
  177. package/src/cloudflare/sveltekit/plugin.ts +12 -0
  178. package/src/cloudflare/{sveltekit.ts → sveltekit/sveltekit.ts} +9 -8
  179. package/src/cloudflare/{local-dev-cloudflare-shim.ts → tanstack-start/plugin.ts} +8 -9
  180. package/src/cloudflare/tanstack-start/tanstack-start.ts +24 -0
  181. package/src/cloudflare/vite/plugin.ts +30 -0
  182. package/src/cloudflare/vite/vite.ts +34 -0
  183. package/src/cloudflare/website.ts +379 -204
  184. package/src/cloudflare/worker-bundle.ts +27 -13
  185. package/src/cloudflare/worker-stub.ts +11 -14
  186. package/src/cloudflare/worker.ts +8 -155
  187. package/src/cloudflare/wrangler.json.ts +32 -4
  188. package/src/env.ts +8 -9
  189. package/src/random/index.ts +1 -0
  190. package/src/random/random-string.ts +126 -0
  191. package/src/runtime/bind.ts +2 -2
  192. package/src/scope.ts +1 -3
  193. package/src/secret.ts +4 -8
  194. package/src/state/cloudflare-state-store.ts +2 -2
  195. package/src/state/dofs-state-store/index.ts +1 -1
  196. package/src/util/detect-package-manager.ts +11 -0
  197. package/src/util/telemetry/client.ts +25 -2
  198. package/src/util/telemetry/constants.ts +2 -4
  199. package/src/util/telemetry/context.ts +1 -1
  200. package/src/util/telemetry/types.ts +8 -2
  201. package/src/vercel/api.ts +2 -4
  202. package/templates/astro/alchemy.run.ts +1 -3
  203. package/templates/astro/astro.config.mjs +2 -2
  204. package/templates/nuxt/alchemy.run.ts +1 -3
  205. package/templates/nuxt/nuxt.config.ts +4 -5
  206. package/templates/nuxt/package.json +0 -1
  207. package/templates/react-router/alchemy.run.ts +1 -4
  208. package/templates/react-router/vite.config.ts +2 -2
  209. package/templates/rwsdk/alchemy.run.ts +0 -1
  210. package/templates/rwsdk/package.json +0 -2
  211. package/templates/rwsdk/vite.config.mts +2 -2
  212. package/templates/sveltekit/alchemy.run.ts +1 -3
  213. package/templates/sveltekit/svelte.config.js +2 -2
  214. package/templates/tanstack-start/vite.config.ts +2 -2
  215. package/templates/vite/alchemy.run.ts +1 -1
  216. package/templates/vite/vite.config.ts +4 -5
  217. package/workers/cloudflare-state-store.js +12 -14
  218. package/lib/cloudflare/astro.d.ts.map +0 -1
  219. package/lib/cloudflare/astro.js +0 -69
  220. package/lib/cloudflare/astro.js.map +0 -1
  221. package/lib/cloudflare/local-dev-cloudflare-shim.d.ts.map +0 -1
  222. package/lib/cloudflare/local-dev-cloudflare-shim.js.map +0 -1
  223. package/lib/cloudflare/nuxt.d.ts.map +0 -1
  224. package/lib/cloudflare/nuxt.js.map +0 -1
  225. package/lib/cloudflare/react-router.d.ts +0 -17
  226. package/lib/cloudflare/react-router.d.ts.map +0 -1
  227. package/lib/cloudflare/react-router.js +0 -35
  228. package/lib/cloudflare/react-router.js.map +0 -1
  229. package/lib/cloudflare/redwood.d.ts.map +0 -1
  230. package/lib/cloudflare/redwood.js.map +0 -1
  231. package/lib/cloudflare/sveltekit.d.ts.map +0 -1
  232. package/lib/cloudflare/sveltekit.js.map +0 -1
  233. package/lib/cloudflare/tanstack-start.d.ts.map +0 -1
  234. package/lib/cloudflare/tanstack-start.js +0 -21
  235. package/lib/cloudflare/tanstack-start.js.map +0 -1
  236. package/lib/cloudflare/vite.d.ts.map +0 -1
  237. package/lib/cloudflare/vite.js +0 -20
  238. package/lib/cloudflare/vite.js.map +0 -1
  239. package/src/cloudflare/react-router.ts +0 -56
  240. package/src/cloudflare/tanstack-start.ts +0 -35
  241. package/src/cloudflare/vite.ts +0 -35
  242. package/templates/react-router/wrangler.jsonc +0 -6
  243. package/templates/rwsdk/wrangler.jsonc +0 -31
  244. package/templates/sveltekit/wrangler.jsonc +0 -7
  245. package/templates/tanstack-start/wrangler.jsonc +0 -7
  246. package/templates/typescript/index.ts +0 -1
  247. package/templates/vite/wrangler.jsonc +0 -6
@@ -1,10 +1,10 @@
1
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";
2
+ import type { Assets } from "../assets.ts";
3
+ import type { Bindings } from "../bindings.ts";
4
+ import { Vite, type ViteProps } from "../vite/vite.ts";
5
+ import type { Worker } from "../worker.ts";
6
6
 
7
- export interface RedwoodProps<B extends Bindings> extends WebsiteProps<B> {}
7
+ export interface RedwoodProps<B extends Bindings> extends ViteProps<B> {}
8
8
 
9
9
  // don't allow the ASSETS to be overridden
10
10
  export type Redwood<B extends Bindings> = B extends { ASSETS: any }
@@ -41,24 +41,21 @@ export async function Redwood<B extends Bindings>(
41
41
  id: string,
42
42
  props?: Partial<RedwoodProps<B>>,
43
43
  ): Promise<Redwood<B>> {
44
- return Website(id, {
44
+ return await Vite(id, {
45
45
  ...props,
46
- command:
47
- props?.command ??
48
- "rm -rf ./node_modules/.vite && RWSDK_DEPLOY=1 vite build",
49
- dev: props?.dev ?? {
50
- command: "vite dev",
46
+ build: props?.build ?? {
47
+ command: "rm -rf ./node_modules/.vite && vite build",
48
+ env: {
49
+ RWSDK_DEPLOY: "1",
50
+ },
51
51
  },
52
52
  noBundle: props?.noBundle ?? true,
53
- wrangler:
54
- props?.wrangler === false
55
- ? false
56
- : {
57
- main: props?.main ?? path.join("src", "worker.tsx"),
58
- },
59
- main: props?.main ?? path.join("dist", "worker", "worker.js"),
60
- assets: props?.assets ?? path.join("dist", "client"),
53
+ entrypoint: props?.entrypoint ?? path.join("dist", "worker", "worker.js"),
61
54
  compatibilityFlags: ["nodejs_compat", ...(props?.compatibilityFlags ?? [])],
62
55
  compatibilityDate: props?.compatibilityDate ?? "2025-04-02",
56
+ wrangler: {
57
+ main: props?.wrangler?.main ?? "src/worker.tsx",
58
+ transform: props?.wrangler?.transform,
59
+ },
63
60
  });
64
61
  }
@@ -0,0 +1,12 @@
1
+ import adapter, { type AdapterOptions } from "@sveltejs/adapter-cloudflare";
2
+ import { getPlatformProxyOptions } from "../cloudflare-env-proxy.ts";
3
+
4
+ const alchemy = (options?: AdapterOptions) => {
5
+ const platformProxy = getPlatformProxyOptions(options?.platformProxy);
6
+ return adapter({
7
+ platformProxy,
8
+ ...options,
9
+ });
10
+ };
11
+
12
+ export default alchemy;
@@ -1,10 +1,10 @@
1
1
  import { join } 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";
2
+ import type { Assets } from "../assets.ts";
3
+ import type { Bindings } from "../bindings.ts";
4
+ import { Vite, type ViteProps } from "../vite/vite.ts";
5
+ import type { Worker } from "../worker.ts";
6
6
 
7
- export interface SvelteKitProps<B extends Bindings> extends WebsiteProps<B> {}
7
+ export interface SvelteKitProps<B extends Bindings> extends ViteProps<B> {}
8
8
 
9
9
  // don't allow the ASSETS to be overriden
10
10
  export type SvelteKit<B extends Bindings> = B extends { ASSETS: any }
@@ -61,12 +61,13 @@ export async function SvelteKit<B extends Bindings>(
61
61
  }
62
62
  }
63
63
 
64
- return Website(id, {
64
+ return await Vite(id, {
65
65
  ...props,
66
- command: props?.command ?? "bun run build",
67
- main: props?.main ?? join(".svelte-kit", "cloudflare", "_worker.js"),
66
+ entrypoint:
67
+ props?.entrypoint ?? join(".svelte-kit", "cloudflare", "_worker.js"),
68
68
  assets: props?.assets ?? join(".svelte-kit", "cloudflare"),
69
69
  compatibilityFlags: ["nodejs_compat", ...(props?.compatibilityFlags ?? [])],
70
70
  compatibilityDate: props?.compatibilityDate,
71
+ wrangler: { secrets: true },
71
72
  });
72
73
  }
@@ -1,4 +1,5 @@
1
- import { dedent } from "../util/dedent.ts";
1
+ import type { GetPlatformProxyOptions } from "wrangler";
2
+ import { dedent } from "../../util/dedent.ts";
2
3
 
3
4
  /**
4
5
  * TanStackStart server functions and middleware run in Node.js intead of Miniflare when using `vite dev`.
@@ -7,7 +8,7 @@ import { dedent } from "../util/dedent.ts";
7
8
  *
8
9
  * @see https://developers.cloudflare.com/workers/framework-guides/web-apps/tanstack/#using-cloudflare-bindings
9
10
  */
10
- export function cloudflareWorkersDevEnvironmentShim() {
11
+ export default function alchemy(options: GetPlatformProxyOptions = {}) {
11
12
  return {
12
13
  name: "cloudflare-workers-dev-shim",
13
14
  apply: "serve", // dev‑only
@@ -17,14 +18,12 @@ export function cloudflareWorkersDevEnvironmentShim() {
17
18
  },
18
19
  load(id: string) {
19
20
  if (id === "cloudflare:workers") {
20
- const processEnv = JSON.stringify(process.env);
21
-
22
- // @see https://developers.cloudflare.com/workers/wrangler/api/#getplatformproxy
23
21
  return dedent`
24
- import { getPlatformProxy } from "wrangler";
25
- const cloudflare = await getPlatformProxy({ experimental: { remoteBindings: true } });
26
- export const env = Object.assign(${processEnv}, cloudflare.env);
27
- `.trim();
22
+ import { getCloudflareEnvProxy } from "alchemy/cloudflare";
23
+ export const env = await getCloudflareEnvProxy(${JSON.stringify(
24
+ options,
25
+ )});
26
+ `;
28
27
  }
29
28
  },
30
29
  } as const;
@@ -0,0 +1,24 @@
1
+ import type { Assets } from "../assets.ts";
2
+ import type { Bindings } from "../bindings.ts";
3
+ import { Vite, type ViteProps } from "../vite/vite.ts";
4
+ import type { Worker } from "../worker.ts";
5
+
6
+ export interface TanStackStartProps<B extends Bindings> extends ViteProps<B> {}
7
+
8
+ // don't allow the ASSETS to be overriden
9
+ export type TanStackStart<B extends Bindings> = B extends { ASSETS: any }
10
+ ? never
11
+ : Worker<B & { ASSETS: Assets }>;
12
+
13
+ export async function TanStackStart<B extends Bindings>(
14
+ id: string,
15
+ props?: Partial<TanStackStartProps<B>>,
16
+ ): Promise<TanStackStart<B>> {
17
+ return await Vite(id, {
18
+ ...props,
19
+ noBundle: true,
20
+ entrypoint: props?.entrypoint ?? ".output/server/index.mjs",
21
+ compatibilityFlags: ["nodejs_compat", ...(props?.compatibilityFlags ?? [])],
22
+ assets: props?.assets ?? ".output/public",
23
+ });
24
+ }
@@ -0,0 +1,30 @@
1
+ import { cloudflare, type PluginConfig } from "@cloudflare/vite-plugin";
2
+ import path from "node:path";
3
+ import {
4
+ DEFAULT_PERSIST_PATH,
5
+ validateConfigPath,
6
+ validatePersistPath,
7
+ } from "../miniflare/paths.ts";
8
+
9
+ const alchemy = (config?: PluginConfig) => {
10
+ const persistState = config?.persistState ?? {
11
+ path: validatePersistPath(
12
+ typeof config?.persistState === "object"
13
+ ? config.persistState.path
14
+ : DEFAULT_PERSIST_PATH,
15
+ ),
16
+ };
17
+ if (typeof persistState === "object" && persistState.path.endsWith("v3")) {
18
+ persistState.path = path.dirname(persistState.path);
19
+ }
20
+ return cloudflare({
21
+ ...config,
22
+ configPath: validateConfigPath(config?.configPath),
23
+ persistState,
24
+ experimental: config?.experimental ?? {
25
+ remoteBindings: true,
26
+ },
27
+ });
28
+ };
29
+
30
+ export default alchemy;
@@ -0,0 +1,34 @@
1
+ import { getPackageManagerRunner } from "../../util/detect-package-manager.ts";
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
+
7
+ export interface ViteProps<B extends Bindings>
8
+ extends Omit<WebsiteProps<B>, "spa"> {}
9
+
10
+ export type Vite<B extends Bindings> = B extends { ASSETS: any }
11
+ ? never
12
+ : Worker<B & { ASSETS: Assets }>;
13
+
14
+ export async function Vite<B extends Bindings>(
15
+ id: string,
16
+ props: ViteProps<B>,
17
+ ): Promise<Vite<B>> {
18
+ const runner = await getPackageManagerRunner();
19
+ return await Website(id, {
20
+ ...props,
21
+ spa: true,
22
+ assets:
23
+ typeof props.assets === "string"
24
+ ? { directory: props.assets }
25
+ : {
26
+ ...(props.assets ?? {}),
27
+ directory:
28
+ props.assets?.directory ??
29
+ (props.entrypoint || props.script ? "dist/client" : "dist"),
30
+ },
31
+ build: props.build ?? `${runner} vite build`,
32
+ dev: props.dev ?? `${runner} vite dev`,
33
+ });
34
+ }