alchemy 2.0.0-beta.50 → 2.0.0-beta.52

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 (254) hide show
  1. package/bin/exec.js +133 -135
  2. package/bin/exec.js.map +1 -1
  3. package/lib/AWS/Lambda/BucketEventSource.d.ts.map +1 -1
  4. package/lib/AWS/Lambda/BucketEventSource.js +13 -2
  5. package/lib/AWS/Lambda/BucketEventSource.js.map +1 -1
  6. package/lib/AWS/S3/Bucket.d.ts.map +1 -1
  7. package/lib/AWS/S3/Bucket.js +49 -0
  8. package/lib/AWS/S3/Bucket.js.map +1 -1
  9. package/lib/AWS/S3/BucketNotifications.d.ts +10 -0
  10. package/lib/AWS/S3/BucketNotifications.d.ts.map +1 -1
  11. package/lib/AWS/S3/BucketNotifications.js.map +1 -1
  12. package/lib/Apply.js +15 -3
  13. package/lib/Apply.js.map +1 -1
  14. package/lib/Auth/AuthProvider.js +1 -1
  15. package/lib/Auth/AuthProvider.js.map +1 -1
  16. package/lib/Binding.d.ts.map +1 -1
  17. package/lib/Binding.js +12 -8
  18. package/lib/Binding.js.map +1 -1
  19. package/lib/Build/DevServer.d.ts +113 -0
  20. package/lib/Build/DevServer.d.ts.map +1 -0
  21. package/lib/Build/DevServer.js +212 -0
  22. package/lib/Build/DevServer.js.map +1 -0
  23. package/lib/Build/Local.d.ts +2 -0
  24. package/lib/Build/Local.d.ts.map +1 -0
  25. package/lib/Build/Local.js +4 -0
  26. package/lib/Build/Local.js.map +1 -0
  27. package/lib/Bundle/Bundle.js +1 -1
  28. package/lib/Bundle/Bundle.js.map +1 -1
  29. package/lib/Cli/commands/cloudflare.d.ts +1 -1
  30. package/lib/Cloudflare/Access.js +1 -1
  31. package/lib/Cloudflare/Access.js.map +1 -1
  32. package/lib/Cloudflare/AiGateway/AiGateway.d.ts +1 -1
  33. package/lib/Cloudflare/AiGateway/AiGateway.js +1 -1
  34. package/lib/Cloudflare/AiGateway/AiGatewayBinding.d.ts +1 -1
  35. package/lib/Cloudflare/AiGateway/AiGatewayBinding.d.ts.map +1 -1
  36. package/lib/Cloudflare/AiGateway/AiGatewayBinding.js +6 -2
  37. package/lib/Cloudflare/AiGateway/AiGatewayBinding.js.map +1 -1
  38. package/lib/Cloudflare/Browser/Browser.d.ts +84 -12
  39. package/lib/Cloudflare/Browser/Browser.d.ts.map +1 -1
  40. package/lib/Cloudflare/Browser/Browser.js +80 -9
  41. package/lib/Cloudflare/Browser/Browser.js.map +1 -1
  42. package/lib/Cloudflare/Browser/BrowserBinding.d.ts +90 -16
  43. package/lib/Cloudflare/Browser/BrowserBinding.d.ts.map +1 -1
  44. package/lib/Cloudflare/Browser/BrowserBinding.js +41 -6
  45. package/lib/Cloudflare/Browser/BrowserBinding.js.map +1 -1
  46. package/lib/Cloudflare/Browser/index.d.ts +1 -1
  47. package/lib/Cloudflare/Browser/index.d.ts.map +1 -1
  48. package/lib/Cloudflare/Browser/index.js.map +1 -1
  49. package/lib/Cloudflare/Container/ContainerBinding.d.ts.map +1 -1
  50. package/lib/Cloudflare/Container/ContainerBinding.js +2 -4
  51. package/lib/Cloudflare/Container/ContainerBinding.js.map +1 -1
  52. package/lib/Cloudflare/Images/Images.d.ts +4 -3
  53. package/lib/Cloudflare/Images/Images.d.ts.map +1 -1
  54. package/lib/Cloudflare/Images/Images.js.map +1 -1
  55. package/lib/Cloudflare/Providers.d.ts +1 -1
  56. package/lib/Cloudflare/Providers.d.ts.map +1 -1
  57. package/lib/Cloudflare/Providers.js +6 -1
  58. package/lib/Cloudflare/Providers.js.map +1 -1
  59. package/lib/Cloudflare/RateLimit/RateLimit.d.ts +4 -3
  60. package/lib/Cloudflare/RateLimit/RateLimit.d.ts.map +1 -1
  61. package/lib/Cloudflare/RateLimit/RateLimit.js.map +1 -1
  62. package/lib/Cloudflare/Ruleset/Ruleset.d.ts +82 -0
  63. package/lib/Cloudflare/Ruleset/Ruleset.d.ts.map +1 -0
  64. package/lib/Cloudflare/Ruleset/Ruleset.js +126 -0
  65. package/lib/Cloudflare/Ruleset/Ruleset.js.map +1 -0
  66. package/lib/Cloudflare/Ruleset/index.d.ts +2 -0
  67. package/lib/Cloudflare/Ruleset/index.d.ts.map +1 -0
  68. package/lib/Cloudflare/Ruleset/index.js +2 -0
  69. package/lib/Cloudflare/Ruleset/index.js.map +1 -0
  70. package/lib/Cloudflare/SecretsStore/Secret.d.ts +1 -0
  71. package/lib/Cloudflare/SecretsStore/Secret.d.ts.map +1 -1
  72. package/lib/Cloudflare/SecretsStore/Secret.js +2 -0
  73. package/lib/Cloudflare/SecretsStore/Secret.js.map +1 -1
  74. package/lib/Cloudflare/StateStore/State.d.ts +1 -1
  75. package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
  76. package/lib/Cloudflare/Website/StaticSite.d.ts +64 -12
  77. package/lib/Cloudflare/Website/StaticSite.d.ts.map +1 -1
  78. package/lib/Cloudflare/Website/StaticSite.js +80 -30
  79. package/lib/Cloudflare/Website/StaticSite.js.map +1 -1
  80. package/lib/Cloudflare/Website/Vite.d.ts +36 -7
  81. package/lib/Cloudflare/Website/Vite.d.ts.map +1 -1
  82. package/lib/Cloudflare/Website/Vite.js +26 -8
  83. package/lib/Cloudflare/Website/Vite.js.map +1 -1
  84. package/lib/Cloudflare/Workers/Assets.d.ts +10 -4
  85. package/lib/Cloudflare/Workers/Assets.d.ts.map +1 -1
  86. package/lib/Cloudflare/Workers/Assets.js +6 -6
  87. package/lib/Cloudflare/Workers/Assets.js.map +1 -1
  88. package/lib/Cloudflare/Workers/DurableObjectChatPersistence.d.ts +69 -0
  89. package/lib/Cloudflare/Workers/DurableObjectChatPersistence.d.ts.map +1 -0
  90. package/lib/Cloudflare/Workers/DurableObjectChatPersistence.js +104 -0
  91. package/lib/Cloudflare/Workers/DurableObjectChatPersistence.js.map +1 -0
  92. package/lib/Cloudflare/Workers/DynamicWorkerLoader.d.ts +4 -4
  93. package/lib/Cloudflare/Workers/InferEnv.d.ts +1 -1
  94. package/lib/Cloudflare/Workers/InferEnv.d.ts.map +1 -1
  95. package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
  96. package/lib/Cloudflare/Workers/LocalWorkerProvider.js +45 -11
  97. package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
  98. package/lib/Cloudflare/Workers/RpcDurableObjectNamespace.d.ts +5 -4
  99. package/lib/Cloudflare/Workers/RpcDurableObjectNamespace.d.ts.map +1 -1
  100. package/lib/Cloudflare/Workers/RpcDurableObjectNamespace.js +4 -2
  101. package/lib/Cloudflare/Workers/RpcDurableObjectNamespace.js.map +1 -1
  102. package/lib/Cloudflare/Workers/RpcWorker.d.ts +3 -2
  103. package/lib/Cloudflare/Workers/RpcWorker.d.ts.map +1 -1
  104. package/lib/Cloudflare/Workers/RpcWorker.js +5 -3
  105. package/lib/Cloudflare/Workers/RpcWorker.js.map +1 -1
  106. package/lib/Cloudflare/Workers/VersionMetadata.d.ts +99 -0
  107. package/lib/Cloudflare/Workers/VersionMetadata.d.ts.map +1 -0
  108. package/lib/Cloudflare/Workers/VersionMetadata.js +65 -0
  109. package/lib/Cloudflare/Workers/VersionMetadata.js.map +1 -0
  110. package/lib/Cloudflare/Workers/VersionMetadataBinding.d.ts +35 -0
  111. package/lib/Cloudflare/Workers/VersionMetadataBinding.d.ts.map +1 -0
  112. package/lib/Cloudflare/Workers/VersionMetadataBinding.js +31 -0
  113. package/lib/Cloudflare/Workers/VersionMetadataBinding.js.map +1 -0
  114. package/lib/Cloudflare/Workers/Worker.d.ts +20 -19
  115. package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
  116. package/lib/Cloudflare/Workers/Worker.js +23 -37
  117. package/lib/Cloudflare/Workers/Worker.js.map +1 -1
  118. package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts.map +1 -1
  119. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js +16 -0
  120. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js.map +1 -1
  121. package/lib/Cloudflare/Workers/WorkerBinding.d.ts +3 -1
  122. package/lib/Cloudflare/Workers/WorkerBinding.d.ts.map +1 -1
  123. package/lib/Cloudflare/Workers/WorkerBinding.js.map +1 -1
  124. package/lib/Cloudflare/Workers/Workflow.d.ts +8 -1
  125. package/lib/Cloudflare/Workers/Workflow.d.ts.map +1 -1
  126. package/lib/Cloudflare/Workers/Workflow.js +1 -0
  127. package/lib/Cloudflare/Workers/Workflow.js.map +1 -1
  128. package/lib/Cloudflare/Workers/WorkflowBridge.d.ts.map +1 -1
  129. package/lib/Cloudflare/Workers/WorkflowBridge.js +31 -2
  130. package/lib/Cloudflare/Workers/WorkflowBridge.js.map +1 -1
  131. package/lib/Cloudflare/Workers/index.d.ts +3 -0
  132. package/lib/Cloudflare/Workers/index.d.ts.map +1 -1
  133. package/lib/Cloudflare/Workers/index.js +3 -0
  134. package/lib/Cloudflare/Workers/index.js.map +1 -1
  135. package/lib/Cloudflare/Zaraz/ZarazConfig.d.ts.map +1 -1
  136. package/lib/Cloudflare/index.d.ts +1 -0
  137. package/lib/Cloudflare/index.d.ts.map +1 -1
  138. package/lib/Cloudflare/index.js +1 -0
  139. package/lib/Cloudflare/index.js.map +1 -1
  140. package/lib/Deploy.d.ts +3 -2
  141. package/lib/Deploy.d.ts.map +1 -1
  142. package/lib/Deploy.js.map +1 -1
  143. package/lib/Destroy.d.ts +3 -2
  144. package/lib/Destroy.d.ts.map +1 -1
  145. package/lib/Destroy.js.map +1 -1
  146. package/lib/Diff.d.ts.map +1 -1
  147. package/lib/Diff.js +7 -0
  148. package/lib/Diff.js.map +1 -1
  149. package/lib/Drizzle/Postgres.d.ts +13 -12
  150. package/lib/Drizzle/Postgres.d.ts.map +1 -1
  151. package/lib/Drizzle/Postgres.js +13 -12
  152. package/lib/Drizzle/Postgres.js.map +1 -1
  153. package/lib/Drizzle/Schema.d.ts +1 -1
  154. package/lib/Drizzle/Schema.d.ts.map +1 -1
  155. package/lib/Drizzle/Schema.js +20 -9
  156. package/lib/Drizzle/Schema.js.map +1 -1
  157. package/lib/Local/RpcSerialization.js +5 -2
  158. package/lib/Local/RpcSerialization.js.map +1 -1
  159. package/lib/Output.d.ts.map +1 -1
  160. package/lib/Output.js +11 -10
  161. package/lib/Output.js.map +1 -1
  162. package/lib/Plan.d.ts.map +1 -1
  163. package/lib/Plan.js +5 -1
  164. package/lib/Plan.js.map +1 -1
  165. package/lib/Planetscale/MySQL/MySQLDatabase.d.ts +0 -2
  166. package/lib/Planetscale/MySQL/MySQLDatabase.d.ts.map +1 -1
  167. package/lib/Planetscale/MySQL/MySQLDatabase.js +1 -3
  168. package/lib/Planetscale/MySQL/MySQLDatabase.js.map +1 -1
  169. package/lib/Planetscale/Postgres/PostgresDatabase.d.ts +0 -2
  170. package/lib/Planetscale/Postgres/PostgresDatabase.d.ts.map +1 -1
  171. package/lib/Planetscale/Postgres/PostgresDatabase.js +1 -3
  172. package/lib/Planetscale/Postgres/PostgresDatabase.js.map +1 -1
  173. package/lib/Platform.d.ts +4 -4
  174. package/lib/Platform.d.ts.map +1 -1
  175. package/lib/Platform.js +27 -25
  176. package/lib/Platform.js.map +1 -1
  177. package/lib/Resource.d.ts +7 -1
  178. package/lib/Resource.d.ts.map +1 -1
  179. package/lib/Resource.js +11 -12
  180. package/lib/Resource.js.map +1 -1
  181. package/lib/Runtime.d.ts +1 -1
  182. package/lib/Runtime.d.ts.map +1 -1
  183. package/lib/Runtime.js +3 -4
  184. package/lib/Runtime.js.map +1 -1
  185. package/lib/Stack.d.ts +5 -4
  186. package/lib/Stack.d.ts.map +1 -1
  187. package/lib/Stack.js.map +1 -1
  188. package/lib/Test/Core.d.ts +2 -2
  189. package/lib/Test/Core.d.ts.map +1 -1
  190. package/lib/Util/effect.d.ts.map +1 -1
  191. package/lib/Util/effect.js +13 -15
  192. package/lib/Util/effect.js.map +1 -1
  193. package/lib/Util/poll.d.ts +0 -1
  194. package/lib/Util/poll.d.ts.map +1 -1
  195. package/lib/Util/poll.js +2 -2
  196. package/lib/Util/poll.js.map +1 -1
  197. package/lib/tsconfig.test.tsbuildinfo +1 -1
  198. package/package.json +20 -20
  199. package/src/AWS/Lambda/BucketEventSource.ts +16 -1
  200. package/src/AWS/S3/Bucket.ts +78 -0
  201. package/src/AWS/S3/BucketNotifications.ts +10 -0
  202. package/src/Apply.ts +22 -3
  203. package/src/Auth/AuthProvider.ts +1 -1
  204. package/src/Binding.ts +45 -38
  205. package/src/Build/DevServer.ts +330 -0
  206. package/src/Build/Local.ts +4 -0
  207. package/src/Bundle/Bundle.ts +1 -1
  208. package/src/Cloudflare/Access.ts +1 -1
  209. package/src/Cloudflare/AiGateway/AiGateway.ts +1 -1
  210. package/src/Cloudflare/AiGateway/AiGatewayBinding.ts +8 -3
  211. package/src/Cloudflare/Browser/Browser.ts +84 -12
  212. package/src/Cloudflare/Browser/BrowserBinding.ts +205 -33
  213. package/src/Cloudflare/Browser/index.ts +15 -2
  214. package/src/Cloudflare/Container/ContainerBinding.ts +5 -10
  215. package/src/Cloudflare/Images/Images.ts +4 -3
  216. package/src/Cloudflare/Providers.ts +8 -0
  217. package/src/Cloudflare/RateLimit/RateLimit.ts +4 -3
  218. package/src/Cloudflare/Ruleset/Ruleset.ts +223 -0
  219. package/src/Cloudflare/Ruleset/index.ts +1 -0
  220. package/src/Cloudflare/SecretsStore/Secret.ts +4 -0
  221. package/src/Cloudflare/Website/StaticSite.ts +154 -41
  222. package/src/Cloudflare/Website/Vite.ts +73 -25
  223. package/src/Cloudflare/Workers/Assets.ts +10 -8
  224. package/src/Cloudflare/Workers/DurableObjectChatPersistence.ts +131 -0
  225. package/src/Cloudflare/Workers/DynamicWorkerLoader.ts +4 -4
  226. package/src/Cloudflare/Workers/InferEnv.ts +14 -12
  227. package/src/Cloudflare/Workers/LocalWorkerProvider.ts +54 -13
  228. package/src/Cloudflare/Workers/RpcDurableObjectNamespace.ts +11 -8
  229. package/src/Cloudflare/Workers/RpcWorker.ts +8 -7
  230. package/src/Cloudflare/Workers/VersionMetadata.ts +129 -0
  231. package/src/Cloudflare/Workers/VersionMetadataBinding.ts +82 -0
  232. package/src/Cloudflare/Workers/Worker.ts +66 -82
  233. package/src/Cloudflare/Workers/WorkerAsyncBindings.ts +14 -0
  234. package/src/Cloudflare/Workers/WorkerBinding.ts +4 -0
  235. package/src/Cloudflare/Workers/Workflow.ts +12 -1
  236. package/src/Cloudflare/Workers/WorkflowBridge.ts +47 -6
  237. package/src/Cloudflare/Workers/index.ts +3 -0
  238. package/src/Cloudflare/index.ts +1 -0
  239. package/src/Deploy.ts +2 -1
  240. package/src/Destroy.ts +2 -1
  241. package/src/Diff.ts +7 -0
  242. package/src/Drizzle/Postgres.ts +13 -12
  243. package/src/Drizzle/Schema.ts +27 -9
  244. package/src/Local/RpcSerialization.ts +5 -2
  245. package/src/Output.ts +12 -10
  246. package/src/Plan.ts +5 -1
  247. package/src/Planetscale/MySQL/MySQLDatabase.ts +1 -6
  248. package/src/Planetscale/Postgres/PostgresDatabase.ts +1 -5
  249. package/src/Platform.ts +48 -36
  250. package/src/Resource.ts +22 -13
  251. package/src/Runtime.ts +3 -7
  252. package/src/Stack.ts +11 -10
  253. package/src/Util/effect.ts +13 -17
  254. package/src/Util/poll.ts +3 -3
@@ -1,7 +1,11 @@
1
+ import * as Output from "alchemy/Output";
1
2
  import * as Effect from "effect/Effect";
2
3
  import * as Redacted from "effect/Redacted";
4
+ import { AlchemyContext } from "../../AlchemyContext.js";
3
5
  import { Command } from "../../Build/Command.js";
6
+ import { DevServer } from "../../Build/DevServer.js";
4
7
  import * as Namespace from "../../Namespace.js";
8
+ import { effectClass } from "../../Util/effect.js";
5
9
  import { Worker, } from "../Workers/Worker.js";
6
10
  /**
7
11
  * A Cloudflare Worker that serves static assets built by a shell command.
@@ -44,7 +48,7 @@ import { Worker, } from "../Workers/Worker.js";
44
48
  * ```
45
49
  *
46
50
  * @section Asset Configuration
47
- * Use `assetsConfig` to control how Cloudflare handles routing for
51
+ * Use `assets` to control how Cloudflare handles routing for
48
52
  * your static files — HTML handling, not-found behavior, etc.
49
53
  *
50
54
  * @example SPA-style routing
@@ -53,7 +57,7 @@ import { Worker, } from "../Workers/Worker.js";
53
57
  * command: "npm run build",
54
58
  * outdir: "dist",
55
59
  * main: "./src/worker.ts",
56
- * assetsConfig: {
60
+ * assets: {
57
61
  * htmlHandling: "auto-trailing-slash",
58
62
  * notFoundHandling: "single-page-application",
59
63
  * },
@@ -89,37 +93,83 @@ import { Worker, } from "../Workers/Worker.js";
89
93
  * },
90
94
  * });
91
95
  * ```
96
+ *
97
+ * @section Class Form
98
+ * Calling `StaticSite` with no arguments returns a constructor you can
99
+ * `extend` to declare the Worker as a named class. The class is both
100
+ * an `Effect` you can `yield*` to deploy and a type you can reference
101
+ * elsewhere — useful when other resources need to bind to this Worker.
102
+ *
103
+ * @example Declaring a Worker class
104
+ * ```typescript
105
+ * class Blog extends Cloudflare.StaticSite<Blog>()("Blog", {
106
+ * command: "hugo --minify",
107
+ * outdir: "public",
108
+ * main: "./src/worker.ts",
109
+ * }) {}
110
+ *
111
+ * const site = yield* Blog;
112
+ * ```
92
113
  */
93
- export const StaticSite = (id, propsEff) => Effect.gen(function* () {
114
+ export const StaticSite = ((id, propsEff) => id === undefined
115
+ ? (id, propsEff) => effectClass(makeStaticSite(id, propsEff))
116
+ : makeStaticSite(id, propsEff));
117
+ const makeStaticSite = (id, propsEff) => Effect.gen(function* () {
94
118
  const props = Effect.isEffect(propsEff)
95
119
  ? propsEff
96
120
  : Effect.succeed(propsEff);
97
- // TODO(sam): local dev/hmr support?
98
- const build = yield* Command("Build", Effect.map(props, (props) => ({
99
- command: props.command,
100
- cwd: props.cwd,
101
- memo: props.memo,
102
- outdir: props.outdir,
103
- env: props.env
104
- ? Object.fromEntries(Object.entries(props.env).flatMap(([k, v]) => {
105
- if (v === undefined)
106
- return [];
107
- if (typeof v === "string" || Redacted.isRedacted(v))
108
- return [[k, v]];
109
- return [[k, JSON.stringify(v)]];
110
- }))
111
- : undefined,
112
- })));
113
- return yield* Worker("Worker", Effect.map(props, (props) => ({
114
- ...props,
115
- assets: {
116
- path: build.outdir,
117
- hash: build.hash,
118
- config: props.assetsConfig,
119
- },
120
- // Omit the dev command from WorkerProps since it's different from WorkerProps["dev"].
121
- // TODO: we'll need to update this when we add local dev support for StaticSite.
122
- dev: undefined,
123
- })));
121
+ const { dev: isDevPhase } = yield* AlchemyContext;
122
+ return yield* Effect.gen(function* () {
123
+ const resolved = yield* props;
124
+ const useDevServer = isDevPhase && resolved.dev !== undefined;
125
+ // In dev mode with a dev.command, declare a DevCommand resource so
126
+ // the sidecar owns the process lifecycle (survives user-code HMR),
127
+ // skip the build, and tell Worker not to start a local instance.
128
+ let devUrl = yield* useDevServer
129
+ ? DevServer("Dev", {
130
+ command: resolved.dev.command,
131
+ cwd: resolved.dev.cwd ??
132
+ (typeof resolved.cwd === "string" ? resolved.cwd : undefined),
133
+ }).pipe(Effect.map((d) => Output.map(d.url, (url) => url ?? resolved.dev?.url ?? false)))
134
+ : Effect.succeed(false);
135
+ const build = useDevServer
136
+ ? undefined
137
+ : yield* Command("Build", {
138
+ command: resolved.command,
139
+ cwd: resolved.cwd,
140
+ memo: resolved.memo,
141
+ outdir: resolved.outdir,
142
+ env: resolved.env
143
+ ? Object.fromEntries(Object.entries(resolved.env).flatMap(([k, v]) => {
144
+ if (v === undefined)
145
+ return [];
146
+ if (typeof v === "string" || Redacted.isRedacted(v))
147
+ return [[k, v]];
148
+ return [[k, JSON.stringify(v)]];
149
+ }))
150
+ : undefined,
151
+ });
152
+ // Pure-static sites don't need a custom Worker entrypoint —
153
+ // delegate every request straight to the ASSETS binding. Only
154
+ // injected when the user provided neither `main` nor `script`.
155
+ const fallbackScript = resolved.main == null && resolved.script == null
156
+ ? `export default { fetch: (request, env) => env.ASSETS.fetch(request) };`
157
+ : undefined;
158
+ return yield* Worker("Worker", {
159
+ ...resolved,
160
+ assets: build
161
+ ? {
162
+ directory: build.outdir,
163
+ hash: build.hash,
164
+ ...resolved.assets,
165
+ }
166
+ : undefined,
167
+ // Opt out of the local Worker in dev when the external DevCommand
168
+ // is serving the content. The Worker resource still exists in
169
+ // state with a stub Attributes shape.
170
+ dev: useDevServer ? devUrl : undefined,
171
+ script: fallbackScript ?? resolved.script,
172
+ });
173
+ });
124
174
  }).pipe(Namespace.push(id));
125
175
  //# sourceMappingURL=StaticSite.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StaticSite.js","sourceRoot":"","sources":["../../../src/Cloudflare/Website/StaticSite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAqB,MAAM,wBAAwB,CAAC;AAEpE,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EACL,MAAM,GAIP,MAAM,sBAAsB,CAAC;AAkB9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsFG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAIxB,EAAU,EACV,QAEoE,EACpE,EAAE,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACrC,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE7B,oCAAoC;IACpC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,CAC1B,OAAO,EACP,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,EAAE,KAAK,CAAC,GAAG;YACZ,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;gBAC3C,IAAI,CAAC,KAAK,SAAS;oBAAE,OAAO,EAAE,CAAC;gBAC/B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;oBACjD,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAClB,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC,CAAC,CACH;YACH,CAAC,CAAC,SAAS;KACd,CAAC,CAAC,CACJ,CAAC;IAEF,OAAO,KAAK,CAAC,CAAC,MAAM,CAClB,QAAQ,EACR,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,GAAG,KAAK;QACR,MAAM,EAAE;YACN,IAAI,EAAE,KAAK,CAAC,MAAM;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,YAAY;SAC3B;QACD,sFAAsF;QACtF,gFAAgF;QAChF,GAAG,EAAE,SAAS;KACf,CAAC,CAAC,CACJ,CAAC;AACJ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"StaticSite.js","sourceRoot":"","sources":["../../../src/Cloudflare/Website/StaticSite.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  import * as Effect from "effect/Effect";
2
2
  import type { MemoOptions } from "../../Build/Memo.ts";
3
3
  import type { InputProps } from "../../Input.ts";
4
- import { Worker, type WorkerBindingProps, type WorkerProps } from "../Workers/Worker.ts";
5
- export interface ViteProps<Bindings extends WorkerBindingProps = {}> extends Omit<WorkerProps<Bindings>, "vite" | "main"> {
4
+ import type { Providers } from "../Providers.ts";
5
+ import type { AssetsConfig } from "../Workers/Assets.ts";
6
+ import { Worker, type NormalizedBindings, type WorkerAssetsConfig, type WorkerBindingProps, type WorkerProps } from "../Workers/Worker.ts";
7
+ export interface ViteProps<Bindings extends WorkerBindingProps = {}> extends Omit<WorkerProps<Bindings>, "vite" | "main" | "assets"> {
6
8
  /**
7
9
  * Root directory passed to Vite's `root` option.
8
10
  * Defaults to the current working directory (`process.cwd()`).
@@ -16,6 +18,11 @@ export interface ViteProps<Bindings extends WorkerBindingProps = {}> extends Omi
16
18
  * @see {@link MemoOptions}
17
19
  */
18
20
  memo?: MemoOptions;
21
+ /**
22
+ * Optional configuration for static asset routing behavior.
23
+ * Supports `runWorkerFirst`, `htmlHandling`, `notFoundHandling`, etc.
24
+ */
25
+ assets?: AssetsConfig;
19
26
  }
20
27
  /**
21
28
  * A Cloudflare Worker deployed from a Vite project.
@@ -97,10 +104,32 @@ export interface ViteProps<Bindings extends WorkerBindingProps = {}> extends Omi
97
104
  * },
98
105
  * });
99
106
  * ```
107
+ *
108
+ * @section Class Form
109
+ * Calling `Vite` with no arguments returns a constructor you can
110
+ * `extend` to declare the Worker as a named class. The class is both
111
+ * an `Effect` you can `yield*` to deploy and a type you can reference
112
+ * elsewhere — useful when other resources need to bind to this Worker.
113
+ *
114
+ * @example Declaring a Worker class
115
+ * ```typescript
116
+ * class Website extends Cloudflare.Vite<Website>()("Website", {
117
+ * compatibility: { flags: ["nodejs_compat"] },
118
+ * }) {}
119
+ *
120
+ * const site = yield* Website;
121
+ * ```
100
122
  */
101
- export declare const Vite: <const Bindings extends WorkerBindingProps = {}, Req = never>(id: string, propsEff?: InputProps<ViteProps<Bindings>> | Effect.Effect<InputProps<ViteProps<Bindings>>, never, Req>) => Effect.Effect<Worker<{ [binding in keyof ({ [B in keyof Bindings]: Bindings[B] extends Effect.Effect<infer T extends import("../index.ts").WorkerBindingResource, any, any> ? T extends import("effect/Redacted").Redacted<infer T_1> | import("effect/Config").Config<infer T_1> ? T_1 : T : Extract<Bindings[B], import("../index.ts").WorkerBindingResource>; } & {
102
- ASSETS: import("../index.ts").Assets;
103
- })]: ({ [B in keyof Bindings]: Bindings[B] extends Effect.Effect<infer T extends import("../index.ts").WorkerBindingResource, any, any> ? T extends import("effect/Redacted").Redacted<infer T_1> | import("effect/Config").Config<infer T_1> ? T_1 : T : Extract<Bindings[B], import("../index.ts").WorkerBindingResource>; } & {
104
- ASSETS: import("../index.ts").Assets;
105
- })[binding]; }>, never, import("../Providers.ts").Providers | Req>;
123
+ export declare const Vite: {
124
+ <Self>(): {
125
+ <const Bindings extends WorkerBindingProps = {}, Req = never>(id: string, propsEff?: InputProps<ViteProps<Bindings>> | Effect.Effect<InputProps<ViteProps<Bindings>>, never, Req>): Effect.Effect<Self, never, Req | Providers> & {
126
+ new (): Worker<{
127
+ [binding in keyof NormalizedBindings<Bindings, WorkerAssetsConfig>]: NormalizedBindings<Bindings, WorkerAssetsConfig>[binding];
128
+ }>;
129
+ };
130
+ };
131
+ <const Bindings extends WorkerBindingProps = {}, Req = never>(id: string, propsEff?: InputProps<ViteProps<Bindings>> | Effect.Effect<InputProps<ViteProps<Bindings>>, never, Req>): Effect.Effect<Worker<{
132
+ [binding in keyof NormalizedBindings<Bindings, WorkerAssetsConfig>]: NormalizedBindings<Bindings, WorkerAssetsConfig>[binding];
133
+ }>, never, Req | Providers>;
134
+ };
106
135
  //# sourceMappingURL=Vite.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Vite.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Website/Vite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EACL,MAAM,EAEN,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,SAAS,CACxB,QAAQ,SAAS,kBAAkB,GAAG,EAAE,CACxC,SAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpD;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFG;AACH,eAAO,MAAM,IAAI,GACf,KAAK,CAAC,QAAQ,SAAS,kBAAkB,GAAG,EAAE,EAC9C,GAAG,GAAG,KAAK,EAEX,IAAI,MAAM,EACV,WACI,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAC/B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC;;;;kEAe7D,CAAC"}
1
+ {"version":3,"file":"Vite.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Website/Vite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,MAAM,EACN,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,MAAM,WAAW,SAAS,CACxB,QAAQ,SAAS,kBAAkB,GAAG,EAAE,CACxC,SAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC/D;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+FG;AACH,eAAO,MAAM,IAAI,EAAE;IACjB,CAAC,IAAI,KAAK;QACR,CAAC,KAAK,CAAC,QAAQ,SAAS,kBAAkB,GAAG,EAAE,EAAE,GAAG,GAAG,KAAK,EAC1D,EAAE,EAAE,MAAM,EACV,QAAQ,CAAC,EACL,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAC/B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,GAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,GAAG,SAAS,CAAC,GAAG;YAC/C,QAAQ,MAAM,CAAC;iBACZ,OAAO,IAAI,MAAM,kBAAkB,CAClC,QAAQ,EACR,kBAAkB,CACnB,GAAG,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,OAAO,CAAC;aAC9D,CAAC,CAAC;SACJ,CAAC;KACH,CAAC;IACF,CAAC,KAAK,CAAC,QAAQ,SAAS,kBAAkB,GAAG,EAAE,EAAE,GAAG,GAAG,KAAK,EAC1D,EAAE,EAAE,MAAM,EACV,QAAQ,CAAC,EACL,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAC/B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,GAC7D,MAAM,CAAC,MAAM,CACd,MAAM,CAAC;SACJ,OAAO,IAAI,MAAM,kBAAkB,CAClC,QAAQ,EACR,kBAAkB,CACnB,GAAG,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,OAAO,CAAC;KAC9D,CAAC,EACF,KAAK,EACL,GAAG,GAAG,SAAS,CAChB,CAAC;CAiBW,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import * as Effect from "effect/Effect";
2
+ import { effectClass } from "../../Util/effect.js";
2
3
  import { Worker, } from "../Workers/Worker.js";
3
4
  /**
4
5
  * A Cloudflare Worker deployed from a Vite project.
@@ -80,13 +81,30 @@ import { Worker, } from "../Workers/Worker.js";
80
81
  * },
81
82
  * });
82
83
  * ```
84
+ *
85
+ * @section Class Form
86
+ * Calling `Vite` with no arguments returns a constructor you can
87
+ * `extend` to declare the Worker as a named class. The class is both
88
+ * an `Effect` you can `yield*` to deploy and a type you can reference
89
+ * elsewhere — useful when other resources need to bind to this Worker.
90
+ *
91
+ * @example Declaring a Worker class
92
+ * ```typescript
93
+ * class Website extends Cloudflare.Vite<Website>()("Website", {
94
+ * compatibility: { flags: ["nodejs_compat"] },
95
+ * }) {}
96
+ *
97
+ * const site = yield* Website;
98
+ * ```
83
99
  */
84
- export const Vite = (id, propsEff) => Worker(id, Effect.map(Effect.isEffect(propsEff) ? propsEff : Effect.succeed(propsEff), (props) => ({
85
- ...props,
86
- main: undefined,
87
- vite: {
88
- rootDir: props?.rootDir,
89
- memo: props?.memo,
90
- },
91
- })));
100
+ export const Vite = ((id, propsEff) => id === undefined
101
+ ? (id, propsEff) => effectClass(Vite(id, propsEff))
102
+ : Worker(id, Effect.map(Effect.isEffect(propsEff) ? propsEff : Effect.succeed(propsEff), (props) => ({
103
+ ...props,
104
+ main: undefined,
105
+ vite: {
106
+ rootDir: props?.rootDir,
107
+ memo: props?.memo,
108
+ },
109
+ }))));
92
110
  //# sourceMappingURL=Vite.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Vite.js","sourceRoot":"","sources":["../../../src/Cloudflare/Website/Vite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EACL,MAAM,GAIP,MAAM,sBAAsB,CAAC;AAoB9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAIlB,EAAU,EACV,QAE8D,EAC9D,EAAE,CACF,MAAM,CACJ,EAAE,EACF,MAAM,CAAC,GAAG,CACR,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAC/D,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACV,GAAG,KAAK;IACR,IAAI,EAAE,SAAU;IAChB,IAAI,EAAE;QACJ,OAAO,EAAE,KAAK,EAAE,OAAO;QACvB,IAAI,EAAE,KAAK,EAAE,IAAI;KAClB;CACF,CAAC,CACH,CACF,CAAC"}
1
+ {"version":3,"file":"Vite.js","sourceRoot":"","sources":["../../../src/Cloudflare/Website/Vite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,OAAO,EACL,MAAM,GAKP,MAAM,sBAAsB,CAAC;AAwB9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+FG;AACH,MAAM,CAAC,MAAM,IAAI,GA+Bb,CAAC,CAAC,EAAQ,EAAE,QAAc,EAAE,EAAE,CAChC,EAAE,KAAK,SAAS;IACd,CAAC,CAAC,CAAC,EAAU,EAAE,QAAa,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC,CAAC,MAAM,CACJ,EAAE,EACF,MAAM,CAAC,GAAG,CACR,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAC/D,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACV,GAAG,KAAK;QACR,IAAI,EAAE,SAAU;QAChB,IAAI,EAAE;YACJ,OAAO,EAAE,KAAK,EAAE,OAAO;YACvB,IAAI,EAAE,KAAK,EAAE,IAAI;SAClB;KACF,CAAC,CACH,CACF,CAAQ,CAAC"}
@@ -21,9 +21,8 @@ export interface AssetReadResult {
21
21
  _redirects: string | undefined;
22
22
  hash: string;
23
23
  }
24
- export interface AssetsProps {
24
+ export interface AssetsProps extends AssetsConfig {
25
25
  directory: string;
26
- config?: AssetsConfig;
27
26
  }
28
27
  export type ValidationError = AssetTooLargeError | TooManyAssetsError | AssetNotFoundError | FailedToReadAssetError;
29
28
  declare const AssetTooLargeError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
@@ -61,9 +60,16 @@ export declare class FailedToReadAssetError extends FailedToReadAssetError_base<
61
60
  cause: PlatformError;
62
61
  }> {
63
62
  }
64
- export declare const readAssets: (props: AssetsProps) => Effect.Effect<{
63
+ export declare const readAssets: (args_0: AssetsProps) => Effect.Effect<{
65
64
  directory: string;
66
- config: AssetsConfig | undefined;
65
+ config: {
66
+ headers?: string;
67
+ redirects?: string;
68
+ htmlHandling?: "auto-trailing-slash" | "force-trailing-slash" | "drop-trailing-slash" | "none" | (string & {});
69
+ notFoundHandling?: "none" | "404-page" | "single-page-application" | (string & {});
70
+ runWorkerFirst?: string[] | boolean;
71
+ serveDirectly?: boolean;
72
+ };
67
73
  manifest: {
68
74
  [k: string]: {
69
75
  hash: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Assets.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/Assets.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,qCAAqC,CAAC;AAE/D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAMhE,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,2BAA2B,CAAC;CACnC;AAED,eAAO,MAAM,QAAQ,GAAI,OAAO,GAAG,KAAG,KAAK,IAAI,MACF,CAAC;AAE9C,MAAM,WAAW,YAAa,SAAQ,OAAO,CAC3C,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,EAC5E,SAAS,CACV;CAAG;AAEJ,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,MAAM,eAAe,GACvB,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,sBAAsB,CAAC;;;;AAE3B,qBAAa,kBAAmB,SAAQ,wBAAuC;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;CAAG;;;;AAEL,qBAAa,kBAAmB,SAAQ,wBAAuC;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;CAAG;;;;AAEL,qBAAa,kBAAmB,SAAQ,wBAAuC;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;CAAG;;;;AAEL,qBAAa,sBAAuB,SAAQ,4BAE1C;IACA,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,aAAa,CAAC;CACtB,CAAC;CAAG;AAqCL,eAAO,MAAM,UAAU;;;;;kBAmBoB,MAAM;kBAAQ,MAAM;;;;;;8FAmE7D,CAAC;AAEH,eAAO,MAAM,YAAY;;ivBA6EvB,CAAC"}
1
+ {"version":3,"file":"Assets.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/Assets.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,qCAAqC,CAAC;AAE/D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAMhE,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,2BAA2B,CAAC;CACnC;AAED,eAAO,MAAM,QAAQ,GAAI,OAAO,GAAG,KAAG,KAAK,IAAI,MACF,CAAC;AAE9C,MAAM,WAAW,YAAa,SAAQ,OAAO,CAC3C,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,EAC5E,SAAS,CACV;CAAG;AAEJ,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,eAAe,GACvB,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,sBAAsB,CAAC;;;;AAE3B,qBAAa,kBAAmB,SAAQ,wBAAuC;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;CAAG;;;;AAEL,qBAAa,kBAAmB,SAAQ,wBAAuC;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;CAAG;;;;AAEL,qBAAa,kBAAmB,SAAQ,wBAAuC;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;CAAG;;;;AAEL,qBAAa,sBAAuB,SAAQ,4BAE1C;IACA,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,aAAa,CAAC;CACtB,CAAC;CAAG;AAqCL,eAAO,MAAM,UAAU;;;;;;;;;;;;kBAsBoB,MAAM;kBAAQ,MAAM;;;;;;8FAmE7D,CAAC;AAEH,eAAO,MAAM,YAAY;;ivBA6EvB,CAAC"}
@@ -51,10 +51,10 @@ const createIgnoreMatcher = (patterns) => {
51
51
  const matcher = createIgnore().add(patterns);
52
52
  return (file) => matcher.ignores(file);
53
53
  };
54
- export const readAssets = Effect.fnUntraced(function* (props) {
54
+ export const readAssets = Effect.fnUntraced(function* ({ directory, ...config }) {
55
55
  const fs = yield* FileSystem.FileSystem;
56
56
  const path = yield* Path.Path;
57
- const resolvedDirectory = path.resolve(props.directory);
57
+ const resolvedDirectory = path.resolve(directory);
58
58
  const [files, ignore, _headers, _redirects] = yield* Effect.all([
59
59
  fs.readDirectory(resolvedDirectory, { recursive: true }),
60
60
  maybeReadString(path.join(resolvedDirectory, ".assetsignore")),
@@ -94,7 +94,7 @@ export const readAssets = Effect.fnUntraced(function* (props) {
94
94
  if (count > MAX_ASSET_COUNT) {
95
95
  return yield* new TooManyAssetsError({
96
96
  message: `Too many assets (the maximum count is ${MAX_ASSET_COUNT}; this directory has ${count} assets)`,
97
- directory: props.directory,
97
+ directory,
98
98
  count,
99
99
  });
100
100
  }
@@ -113,14 +113,14 @@ export const readAssets = Effect.fnUntraced(function* (props) {
113
113
  // causes both unnecessary re-uploads and `NotFound` failures when
114
114
  // the previously-recorded path is gone.
115
115
  const hash = yield* sha256Object({
116
- config: props.config,
116
+ config,
117
117
  manifest: sortedManifest,
118
118
  _headers,
119
119
  _redirects,
120
120
  });
121
121
  return {
122
- directory: props.directory,
123
- config: props.config,
122
+ directory,
123
+ config,
124
124
  manifest: sortedManifest,
125
125
  _headers,
126
126
  _redirects,
@@ -1 +1 @@
1
- {"version":3,"file":"Assets.js","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/Assets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Assets.js","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/Assets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import * as Layer from "effect/Layer";
2
+ import { BackingPersistence } from "effect/unstable/persistence/Persistence";
3
+ import { DurableObjectState } from "./DurableObjectState.ts";
4
+ /**
5
+ * A `BackingPersistence` layer (Effect AI persistence module) backed
6
+ * by the surrounding Durable Object's `state.storage`. Drop-in storage
7
+ * for `Persistence.layerResultPersisted({ storeId })` so chat history,
8
+ * cached AI responses, or any other persisted state lives in the DO
9
+ * SQLite store with `${storeId}:` key namespacing.
10
+ *
11
+ * Multiple `storeId`s can coexist within a single Durable Object —
12
+ * keys are namespaced with a `${storeId}:` prefix so they don't
13
+ * collide.
14
+ *
15
+ * :::caution
16
+ * TTL is currently ignored; Durable Object storage has no native TTL.
17
+ * If you need expiry, layer a TTL-aware backing store on top, or run
18
+ * a periodic `clear`.
19
+ * :::
20
+ *
21
+ * @binding
22
+ *
23
+ * @section Wiring it into a chat-backing DO
24
+ * @example Persisted chat history per DO instance
25
+ * `Persistence.layerResultPersisted({ storeId })` is the seam Effect
26
+ * AI exposes for cached/replayable AI calls. Layer
27
+ * `DurableObjectChatPersistence` underneath and every entry is stored
28
+ * in the DO's `state.storage` under the `alchemy.chat:` prefix.
29
+ * ```typescript
30
+ * import * as Cloudflare from "alchemy/Cloudflare";
31
+ * import * as Effect from "effect/Effect";
32
+ * import * as Layer from "effect/Layer";
33
+ * import { Chat, LanguageModel } from "effect/unstable/ai";
34
+ * import { Persistence } from "effect/unstable/persistence";
35
+ *
36
+ * export default class ChatBackend extends Cloudflare.DurableObjectNamespace<ChatBackend>()(
37
+ * "ChatBackend",
38
+ * Effect.gen(function* () {
39
+ * return Effect.gen(function* () {
40
+ * const persistence = yield* Persistence.layerResultPersisted({
41
+ * storeId: "alchemy.chat",
42
+ * }).pipe(Layer.provide(Cloudflare.DurableObjectChatPersistence));
43
+ *
44
+ * return {
45
+ * send: (threadId: string, prompt: string) =>
46
+ * LanguageModel.generateText({ prompt }).pipe(Effect.provide(persistence)),
47
+ * };
48
+ * });
49
+ * }),
50
+ * ) {}
51
+ * ```
52
+ *
53
+ * @section Multiple stores in the same DO
54
+ * @example Separate `storeId`s coexist
55
+ * Different `storeId`s namespace their keys with `${storeId}:`, so
56
+ * one DO can keep, say, chat history *and* an audit log in separate
57
+ * stores without colliding.
58
+ * ```typescript
59
+ * const aiPersistence = yield* Persistence.layerResultPersisted({
60
+ * storeId: "alchemy.chat",
61
+ * }).pipe(Layer.provide(Cloudflare.DurableObjectChatPersistence));
62
+ *
63
+ * const auditPersistence = yield* Persistence.layerResultPersisted({
64
+ * storeId: "alchemy.audit",
65
+ * }).pipe(Layer.provide(Cloudflare.DurableObjectChatPersistence));
66
+ * ```
67
+ */
68
+ export declare const DurableObjectChatPersistence: Layer.Layer<BackingPersistence, never, DurableObjectState>;
69
+ //# sourceMappingURL=DurableObjectChatPersistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DurableObjectChatPersistence.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/DurableObjectChatPersistence.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EACL,kBAAkB,EAGnB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACH,eAAO,MAAM,4BAA4B,4DAwDxC,CAAC"}
@@ -0,0 +1,104 @@
1
+ import * as Arr from "effect/Array";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Layer from "effect/Layer";
4
+ import { BackingPersistence, PersistenceError, } from "effect/unstable/persistence/Persistence";
5
+ import { DurableObjectState } from "./DurableObjectState.js";
6
+ /**
7
+ * A `BackingPersistence` layer (Effect AI persistence module) backed
8
+ * by the surrounding Durable Object's `state.storage`. Drop-in storage
9
+ * for `Persistence.layerResultPersisted({ storeId })` so chat history,
10
+ * cached AI responses, or any other persisted state lives in the DO
11
+ * SQLite store with `${storeId}:` key namespacing.
12
+ *
13
+ * Multiple `storeId`s can coexist within a single Durable Object —
14
+ * keys are namespaced with a `${storeId}:` prefix so they don't
15
+ * collide.
16
+ *
17
+ * :::caution
18
+ * TTL is currently ignored; Durable Object storage has no native TTL.
19
+ * If you need expiry, layer a TTL-aware backing store on top, or run
20
+ * a periodic `clear`.
21
+ * :::
22
+ *
23
+ * @binding
24
+ *
25
+ * @section Wiring it into a chat-backing DO
26
+ * @example Persisted chat history per DO instance
27
+ * `Persistence.layerResultPersisted({ storeId })` is the seam Effect
28
+ * AI exposes for cached/replayable AI calls. Layer
29
+ * `DurableObjectChatPersistence` underneath and every entry is stored
30
+ * in the DO's `state.storage` under the `alchemy.chat:` prefix.
31
+ * ```typescript
32
+ * import * as Cloudflare from "alchemy/Cloudflare";
33
+ * import * as Effect from "effect/Effect";
34
+ * import * as Layer from "effect/Layer";
35
+ * import { Chat, LanguageModel } from "effect/unstable/ai";
36
+ * import { Persistence } from "effect/unstable/persistence";
37
+ *
38
+ * export default class ChatBackend extends Cloudflare.DurableObjectNamespace<ChatBackend>()(
39
+ * "ChatBackend",
40
+ * Effect.gen(function* () {
41
+ * return Effect.gen(function* () {
42
+ * const persistence = yield* Persistence.layerResultPersisted({
43
+ * storeId: "alchemy.chat",
44
+ * }).pipe(Layer.provide(Cloudflare.DurableObjectChatPersistence));
45
+ *
46
+ * return {
47
+ * send: (threadId: string, prompt: string) =>
48
+ * LanguageModel.generateText({ prompt }).pipe(Effect.provide(persistence)),
49
+ * };
50
+ * });
51
+ * }),
52
+ * ) {}
53
+ * ```
54
+ *
55
+ * @section Multiple stores in the same DO
56
+ * @example Separate `storeId`s coexist
57
+ * Different `storeId`s namespace their keys with `${storeId}:`, so
58
+ * one DO can keep, say, chat history *and* an audit log in separate
59
+ * stores without colliding.
60
+ * ```typescript
61
+ * const aiPersistence = yield* Persistence.layerResultPersisted({
62
+ * storeId: "alchemy.chat",
63
+ * }).pipe(Layer.provide(Cloudflare.DurableObjectChatPersistence));
64
+ *
65
+ * const auditPersistence = yield* Persistence.layerResultPersisted({
66
+ * storeId: "alchemy.audit",
67
+ * }).pipe(Layer.provide(Cloudflare.DurableObjectChatPersistence));
68
+ * ```
69
+ */
70
+ export const DurableObjectChatPersistence = Layer.effect(BackingPersistence)(Effect.gen(function* () {
71
+ const state = yield* DurableObjectState;
72
+ const storage = state.storage;
73
+ const wrapErr = (op, key) => (cause) => new PersistenceError({
74
+ message: `Failed to ${op}${key !== undefined ? ` key ${key}` : ""} in DurableObject storage`,
75
+ cause,
76
+ });
77
+ return BackingPersistence.of({
78
+ make: (storeId) => Effect.sync(() => {
79
+ const prefixed = (k) => `${storeId}:${k}`;
80
+ return {
81
+ get: (key) => storage
82
+ .get(prefixed(key))
83
+ .pipe(Effect.mapError(wrapErr("get", key))),
84
+ getMany: (keys) => storage.get(keys.map(prefixed)).pipe(Effect.mapError(wrapErr("getMany")), Effect.map((map) => keys.map((k) => map.get(prefixed(k))))),
85
+ set: (key, value, _ttl) => storage
86
+ .put(prefixed(key), value)
87
+ .pipe(Effect.mapError(wrapErr("set", key))),
88
+ setMany: (entries) => storage
89
+ .put(Object.fromEntries(entries.map(([k, v]) => [prefixed(k), v])))
90
+ .pipe(Effect.mapError(wrapErr("setMany"))),
91
+ remove: (key) => storage
92
+ .delete(prefixed(key))
93
+ .pipe(Effect.asVoid, Effect.mapError(wrapErr("remove", key))),
94
+ clear: storage.list({ prefix: `${storeId}:` }).pipe(Effect.flatMap((map) => {
95
+ const ks = [...map.keys()];
96
+ if (ks.length === 0)
97
+ return Effect.void;
98
+ return Effect.asVoid(storage.delete(ks));
99
+ }), Effect.mapError(wrapErr("clear"))),
100
+ };
101
+ }),
102
+ });
103
+ }));
104
+ //# sourceMappingURL=DurableObjectChatPersistence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DurableObjectChatPersistence.js","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/DurableObjectChatPersistence.ts"],"names":[],"mappings":"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"}
@@ -90,10 +90,10 @@ type BindEffect = ReturnType<typeof bindLoader>;
90
90
  * surrounding Worker and returns a {@link DynamicWorkerLoaderHandle} with
91
91
  * `.load()` — no separate `.bind(...)` step required.
92
92
  *
93
- * The divergence is achieved via `[Symbol.iterator]`: the object is not an
94
- * `Effect` (so `InferEnv` resolves it to the native
95
- * {@link DynamicWorkerLoaderBinding} in the `env` position), but it is iterable
96
- * as one when `yield*`-ed.
93
+ * The divergence is achieved via `[Symbol.iterator]`: the object is
94
+ * deliberately not an `Effect` (so `InferEnv` and the Worker `env` resolver
95
+ * keep it as the native {@link DynamicWorkerLoaderBinding} rather than
96
+ * `yield*`-ing it), but it is iterable as one when `yield*`-ed.
97
97
  */
98
98
  export interface DynamicWorkerLoader {
99
99
  kind: DynamicWorkerTypeId;
@@ -8,7 +8,7 @@ import type { Worker } from "./Worker.ts";
8
8
  export type InferEnv<W> = W extends Effect.Effect<infer A, infer _E, infer _R> ? InferEnv<A> : W extends Worker<any> ? InferEnv<Exclude<W["Props"]["env"], undefined>> : {
9
9
  [k in keyof W]: GetBindingType<W[k]>;
10
10
  };
11
- export type GetBindingType<T> = T extends Effect.Effect<infer A, infer _E, infer _R> ? GetBindingType<A> : T extends Cloudflare.Assets ? Service : T extends Rpc<infer Shape extends object> ? RpcWireShape<Shape> & Service : T extends Cloudflare.D1Database ? D1Database : T extends Cloudflare.R2Bucket ? R2Bucket : T extends Cloudflare.KVNamespace ? KVNamespace : T extends Cloudflare.Queue ? Queue<unknown> : T extends Cloudflare.AiGateway ? Ai : T extends Cloudflare.SendEmail ? SendEmail : T extends Cloudflare.AnalyticsEngineDataset ? AnalyticsEngineDataset : T extends Cloudflare.Artifacts ? Artifacts : T extends Cloudflare.RateLimit ? RateLimit : T extends Cloudflare.Images ? ImagesBinding : T extends Cloudflare.Browser ? Fetcher : T extends Cloudflare.Hyperdrive ? Hyperdrive : T extends Cloudflare.DynamicWorkerLoader ? Cloudflare.DynamicWorkerLoaderBinding : T extends Cloudflare.DurableObjectNamespaceLike ? DurableObjectNamespace<Exclude<T["Shape"], undefined>> : T extends Redacted<any> ? string : T;
11
+ export type GetBindingType<T> = T extends Effect.Effect<infer A, infer _E, infer _R> ? GetBindingType<A> : T extends Cloudflare.Assets ? Service : T extends Rpc<infer Shape extends object> ? RpcWireShape<Shape> & Service : T extends Cloudflare.D1Database ? D1Database : T extends Cloudflare.R2Bucket ? R2Bucket : T extends Cloudflare.KVNamespace ? KVNamespace : T extends Cloudflare.Queue ? Queue<unknown> : T extends Cloudflare.AiGateway ? Ai : T extends Cloudflare.SendEmail ? SendEmail : T extends Cloudflare.AnalyticsEngineDataset ? AnalyticsEngineDataset : T extends Cloudflare.Artifacts ? Artifacts : T extends Cloudflare.RateLimit ? RateLimit : T extends Cloudflare.Images ? ImagesBinding : T extends Cloudflare.Browser ? BrowserRun : T extends Cloudflare.Hyperdrive ? Hyperdrive : T extends Cloudflare.VersionMetadata ? WorkerVersionMetadata : T extends Cloudflare.DynamicWorkerLoader ? Cloudflare.DynamicWorkerLoaderBinding : T extends Cloudflare.DurableObjectNamespaceLike ? DurableObjectNamespace<Exclude<T["Shape"], undefined>> : T extends Redacted<any> ? string : T;
12
12
  /**
13
13
  * Cloudflare service-binding wire shape for an Effect-native Worker.
14
14
  *