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
@@ -28,9 +28,10 @@ type BindEffect = Effect.Effect<BrowserClient, never, BrowserBinding>;
28
28
  * Worker and returns the runtime {@link BrowserClient} — no separate
29
29
  * `.bind(...)` step required.
30
30
  *
31
- * The divergence is achieved via `[Symbol.iterator]`: the object is not an
32
- * `Effect` (so `InferEnv` resolves it to the native `Fetcher` in the `env`
33
- * position), but it is iterable as one when `yield*`-ed.
31
+ * The divergence is achieved via `[Symbol.iterator]`: the object is
32
+ * deliberately not an `Effect` (so `InferEnv` and the Worker `env` resolver
33
+ * keep it as the native `BrowserRun` rather than `yield*`-ing it), but it is
34
+ * iterable as one when `yield*`-ed.
34
35
  */
35
36
  export interface Browser {
36
37
  kind: BrowserTypeId;
@@ -46,7 +47,73 @@ export declare const isBrowser: (value: unknown) => value is Browser;
46
47
  * @binding
47
48
  *
48
49
  * @section Effect-style Worker (recommended)
49
- * @example Render a page title with managed browser cleanup
50
+ * @example Bind the runtime client and convert a page to Markdown
51
+ * Yielding the marker attaches the binding to the surrounding Worker and
52
+ * returns the runtime {@link BrowserClient}. Every `cf.BrowserRun` method is
53
+ * mirrored as an Effect, so no `Effect.tryPromise` wrapping is needed.
54
+ * ```typescript
55
+ * import * as Effect from "effect/Effect";
56
+ *
57
+ * Cloudflare.Worker(
58
+ * "BrowserWorker",
59
+ * { main: import.meta.filename },
60
+ * Effect.gen(function* () {
61
+ * const browser = yield* Cloudflare.Browser({ name: "BROWSER" });
62
+ *
63
+ * return {
64
+ * fetch: Effect.gen(function* () {
65
+ * return yield* browser.markdown({ url: "https://example.com" });
66
+ * }),
67
+ * };
68
+ * }).pipe(Effect.provide(Cloudflare.BrowserBindingLive)),
69
+ * );
70
+ * ```
71
+ *
72
+ * @section Quick Actions
73
+ * @example Render content, screenshot, PDF, and structured data
74
+ * JSON quick actions resolve to their parsed payload; binary actions
75
+ * (`screenshot`, `pdf`) resolve to a `Stream` of bytes. No `Promise` or
76
+ * `Response.json()` in sight.
77
+ * ```typescript
78
+ * import * as Effect from "effect/Effect";
79
+ * import * as Stream from "effect/Stream";
80
+ *
81
+ * const browser = yield* Cloudflare.Browser({ name: "BROWSER" });
82
+ * const url = "https://example.com";
83
+ *
84
+ * // HTML content — parsed payload, title lives in `meta`.
85
+ * const content = yield* browser.content({ url });
86
+ * const title = content.meta.title;
87
+ *
88
+ * // Scrape elements by CSS selector.
89
+ * yield* browser.scrape({ url, elements: [{ selector: "h1" }] });
90
+ *
91
+ * // Extract all links.
92
+ * const { result: links } = yield* browser.links({ url });
93
+ *
94
+ * // Binary actions stream bytes — collect or pipe them.
95
+ * const png = yield* browser.screenshot({ url }).pipe(Stream.runCollect);
96
+ * const pdf = yield* browser.pdf({ url }).pipe(Stream.runCollect);
97
+ *
98
+ * // AI-extracted structured data.
99
+ * yield* browser.json({ url, prompt: "Extract the page heading" });
100
+ * ```
101
+ *
102
+ * @example Call the generic `quickAction` directly
103
+ * The named methods are thin wrappers over `quickAction`, which mirrors
104
+ * `cf.BrowserRun["quickAction"]` one-to-one.
105
+ * ```typescript
106
+ * const browser = yield* Cloudflare.Browser({ name: "BROWSER" });
107
+ *
108
+ * const res = yield* browser.quickAction("snapshot", {
109
+ * url: "https://example.com",
110
+ * });
111
+ * ```
112
+ *
113
+ * @section Driving Puppeteer
114
+ * @example Use the raw `cf.BrowserRun` binding with `@cloudflare/puppeteer`
115
+ * `raw` hands you the underlying runtime binding. Puppeteer is promise-based,
116
+ * so this is the one place you reach for `Effect.tryPromise`.
50
117
  * ```typescript
51
118
  * import puppeteer from "@cloudflare/puppeteer";
52
119
  * import * as Effect from "effect/Effect";
@@ -55,25 +122,30 @@ export declare const isBrowser: (value: unknown) => value is Browser;
55
122
  * "BrowserWorker",
56
123
  * { main: import.meta.filename },
57
124
  * Effect.gen(function* () {
58
- * // Attaches the binding to this Worker AND returns the runtime client.
59
125
  * const browser = yield* Cloudflare.Browser({ name: "BROWSER" });
60
126
  *
61
127
  * return {
62
- * fetch: browser.withBrowser(puppeteer, (browser) =>
63
- * Effect.gen(function* () {
64
- * const page = yield* Effect.tryPromise(() => browser.newPage());
128
+ * fetch: Effect.gen(function* () {
129
+ * const binding = yield* browser.raw;
130
+ * const session = yield* Effect.tryPromise(() =>
131
+ * puppeteer.launch(binding),
132
+ * );
133
+ * try {
134
+ * const page = yield* Effect.tryPromise(() => session.newPage());
65
135
  * yield* Effect.tryPromise(() => page.goto("https://example.com"));
66
136
  * const title = yield* Effect.tryPromise(() => page.title());
67
137
  * return Response.json({ title });
68
- * }),
69
- * ),
138
+ * } finally {
139
+ * yield* Effect.promise(() => session.close());
140
+ * }
141
+ * }),
70
142
  * };
71
143
  * }).pipe(Effect.provide(Cloudflare.BrowserBindingLive)),
72
144
  * );
73
145
  * ```
74
146
  *
75
147
  * @section Worker binding metadata
76
- * @example
148
+ * @example Declare the binding on `env`
77
149
  * ```typescript
78
150
  * export const Worker = Cloudflare.Worker("Worker", {
79
151
  * main: "./src/worker.ts",
@@ -83,7 +155,7 @@ export declare const isBrowser: (value: unknown) => value is Browser;
83
155
  * });
84
156
  *
85
157
  * export type WorkerEnv = Cloudflare.InferEnv<typeof Worker>;
86
- * // { BROWSER: Fetcher }
158
+ * // { BROWSER: BrowserRun }
87
159
  * ```
88
160
  *
89
161
  * @example Async-style worker with the raw runtime binding
@@ -1 +1 @@
1
- {"version":3,"file":"Browser.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Browser/Browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzE,KAAK,aAAa,GAAG,OAAO,aAAa,CAAC;AAC1C,QAAA,MAAM,aAAa,EAAG,oBAA6B,CAAC;AAEpD,MAAM,MAAM,YAAY,GAAG;IACzB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;GAIG;AACH,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AAEtE;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,IAAI,UAAU,CAAC;IACvB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;CAC/D;AAED,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,OACqB,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AACH,eAAO,MAAM,OAAO,EAAE;IACpB,CAAC,KAAK,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC;IAChC;;;;OAIG;IACH,IAAI,EAAE,OAAO,cAAc,CAAC,IAAI,CAAC;CAelC,CAAC"}
1
+ {"version":3,"file":"Browser.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Browser/Browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzE,KAAK,aAAa,GAAG,OAAO,aAAa,CAAC;AAC1C,QAAA,MAAM,aAAa,EAAG,oBAA6B,CAAC;AAEpD,MAAM,MAAM,YAAY,GAAG;IACzB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;GAIG;AACH,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AAEtE;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,IAAI,UAAU,CAAC;IACvB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;CAC/D;AAED,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,OACqB,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2IG;AACH,eAAO,MAAM,OAAO,EAAE;IACpB,CAAC,KAAK,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC;IAChC;;;;OAIG;IACH,IAAI,EAAE,OAAO,cAAc,CAAC,IAAI,CAAC;CAelC,CAAC"}
@@ -9,7 +9,73 @@ export const isBrowser = (value) => typeof value === "object" && value?.kind ===
9
9
  * @binding
10
10
  *
11
11
  * @section Effect-style Worker (recommended)
12
- * @example Render a page title with managed browser cleanup
12
+ * @example Bind the runtime client and convert a page to Markdown
13
+ * Yielding the marker attaches the binding to the surrounding Worker and
14
+ * returns the runtime {@link BrowserClient}. Every `cf.BrowserRun` method is
15
+ * mirrored as an Effect, so no `Effect.tryPromise` wrapping is needed.
16
+ * ```typescript
17
+ * import * as Effect from "effect/Effect";
18
+ *
19
+ * Cloudflare.Worker(
20
+ * "BrowserWorker",
21
+ * { main: import.meta.filename },
22
+ * Effect.gen(function* () {
23
+ * const browser = yield* Cloudflare.Browser({ name: "BROWSER" });
24
+ *
25
+ * return {
26
+ * fetch: Effect.gen(function* () {
27
+ * return yield* browser.markdown({ url: "https://example.com" });
28
+ * }),
29
+ * };
30
+ * }).pipe(Effect.provide(Cloudflare.BrowserBindingLive)),
31
+ * );
32
+ * ```
33
+ *
34
+ * @section Quick Actions
35
+ * @example Render content, screenshot, PDF, and structured data
36
+ * JSON quick actions resolve to their parsed payload; binary actions
37
+ * (`screenshot`, `pdf`) resolve to a `Stream` of bytes. No `Promise` or
38
+ * `Response.json()` in sight.
39
+ * ```typescript
40
+ * import * as Effect from "effect/Effect";
41
+ * import * as Stream from "effect/Stream";
42
+ *
43
+ * const browser = yield* Cloudflare.Browser({ name: "BROWSER" });
44
+ * const url = "https://example.com";
45
+ *
46
+ * // HTML content — parsed payload, title lives in `meta`.
47
+ * const content = yield* browser.content({ url });
48
+ * const title = content.meta.title;
49
+ *
50
+ * // Scrape elements by CSS selector.
51
+ * yield* browser.scrape({ url, elements: [{ selector: "h1" }] });
52
+ *
53
+ * // Extract all links.
54
+ * const { result: links } = yield* browser.links({ url });
55
+ *
56
+ * // Binary actions stream bytes — collect or pipe them.
57
+ * const png = yield* browser.screenshot({ url }).pipe(Stream.runCollect);
58
+ * const pdf = yield* browser.pdf({ url }).pipe(Stream.runCollect);
59
+ *
60
+ * // AI-extracted structured data.
61
+ * yield* browser.json({ url, prompt: "Extract the page heading" });
62
+ * ```
63
+ *
64
+ * @example Call the generic `quickAction` directly
65
+ * The named methods are thin wrappers over `quickAction`, which mirrors
66
+ * `cf.BrowserRun["quickAction"]` one-to-one.
67
+ * ```typescript
68
+ * const browser = yield* Cloudflare.Browser({ name: "BROWSER" });
69
+ *
70
+ * const res = yield* browser.quickAction("snapshot", {
71
+ * url: "https://example.com",
72
+ * });
73
+ * ```
74
+ *
75
+ * @section Driving Puppeteer
76
+ * @example Use the raw `cf.BrowserRun` binding with `@cloudflare/puppeteer`
77
+ * `raw` hands you the underlying runtime binding. Puppeteer is promise-based,
78
+ * so this is the one place you reach for `Effect.tryPromise`.
13
79
  * ```typescript
14
80
  * import puppeteer from "@cloudflare/puppeteer";
15
81
  * import * as Effect from "effect/Effect";
@@ -18,25 +84,30 @@ export const isBrowser = (value) => typeof value === "object" && value?.kind ===
18
84
  * "BrowserWorker",
19
85
  * { main: import.meta.filename },
20
86
  * Effect.gen(function* () {
21
- * // Attaches the binding to this Worker AND returns the runtime client.
22
87
  * const browser = yield* Cloudflare.Browser({ name: "BROWSER" });
23
88
  *
24
89
  * return {
25
- * fetch: browser.withBrowser(puppeteer, (browser) =>
26
- * Effect.gen(function* () {
27
- * const page = yield* Effect.tryPromise(() => browser.newPage());
90
+ * fetch: Effect.gen(function* () {
91
+ * const binding = yield* browser.raw;
92
+ * const session = yield* Effect.tryPromise(() =>
93
+ * puppeteer.launch(binding),
94
+ * );
95
+ * try {
96
+ * const page = yield* Effect.tryPromise(() => session.newPage());
28
97
  * yield* Effect.tryPromise(() => page.goto("https://example.com"));
29
98
  * const title = yield* Effect.tryPromise(() => page.title());
30
99
  * return Response.json({ title });
31
- * }),
32
- * ),
100
+ * } finally {
101
+ * yield* Effect.promise(() => session.close());
102
+ * }
103
+ * }),
33
104
  * };
34
105
  * }).pipe(Effect.provide(Cloudflare.BrowserBindingLive)),
35
106
  * );
36
107
  * ```
37
108
  *
38
109
  * @section Worker binding metadata
39
- * @example
110
+ * @example Declare the binding on `env`
40
111
  * ```typescript
41
112
  * export const Worker = Cloudflare.Worker("Worker", {
42
113
  * main: "./src/worker.ts",
@@ -46,7 +117,7 @@ export const isBrowser = (value) => typeof value === "object" && value?.kind ===
46
117
  * });
47
118
  *
48
119
  * export type WorkerEnv = Cloudflare.InferEnv<typeof Worker>;
49
- * // { BROWSER: Fetcher }
120
+ * // { BROWSER: BrowserRun }
50
121
  * ```
51
122
  *
52
123
  * @example Async-style worker with the raw runtime binding
@@ -1 +1 @@
1
- {"version":3,"file":"Browser.js","sourceRoot":"","sources":["../../../src/Cloudflare/Browser/Browser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAsB,MAAM,qBAAqB,CAAC;AAGzE,MAAM,aAAa,GAAG,oBAA6B,CAAC;AAwCpD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAc,EAAoB,EAAE,CAC5D,OAAO,KAAK,KAAK,QAAQ,IAAK,KAAiB,EAAE,IAAI,KAAK,aAAa,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AACH,MAAM,CAAC,MAAM,OAAO,GAQhB,MAAM,CAAC,MAAM,CACf,CAAC,KAAoB,EAAW,EAAE;IAChC,MAAM,IAAI,GAAY;QACpB,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,SAAS;QAC9B,QAAQ,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QACzC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACtE,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC,EACD;IACE,IAAI,EAAE,CAAC,GAAG,IAA4C,EAAE,EAAE,CACxD,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC/B,CACF,CAAC"}
1
+ {"version":3,"file":"Browser.js","sourceRoot":"","sources":["../../../src/Cloudflare/Browser/Browser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAsB,MAAM,qBAAqB,CAAC;AAGzE,MAAM,aAAa,GAAG,oBAA6B,CAAC;AAyCpD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAc,EAAoB,EAAE,CAC5D,OAAO,KAAK,KAAK,QAAQ,IAAK,KAAiB,EAAE,IAAI,KAAK,aAAa,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2IG;AACH,MAAM,CAAC,MAAM,OAAO,GAQhB,MAAM,CAAC,MAAM,CACf,CAAC,KAAoB,EAAW,EAAE;IAChC,MAAM,IAAI,GAAY;QACpB,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,SAAS;QAC9B,QAAQ,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QACzC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACtE,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC,EACD;IACE,IAAI,EAAE,CAAC,GAAG,IAA4C,EAAE,EAAE,CACxD,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC/B,CACF,CAAC"}
@@ -1,7 +1,9 @@
1
1
  import type * as cf from "@cloudflare/workers-types";
2
2
  import * as Effect from "effect/Effect";
3
3
  import * as Layer from "effect/Layer";
4
+ import * as Stream from "effect/Stream";
4
5
  import * as Binding from "../../Binding.ts";
6
+ import type { RuntimeContext } from "../../RuntimeContext.ts";
5
7
  import { WorkerEnvironment } from "../Workers/Worker.ts";
6
8
  import type { Browser as BrowserLike } from "./Browser.ts";
7
9
  declare const BrowserError_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 & {
@@ -12,44 +14,116 @@ export declare class BrowserError extends BrowserError_base<{
12
14
  cause: unknown;
13
15
  }> {
14
16
  }
15
- export interface BrowserHandle {
16
- close(): Promise<void>;
17
- }
18
- export interface BrowserPuppeteer<Browser extends BrowserHandle> {
19
- launch(binding: cf.Fetcher): Promise<Browser>;
20
- }
17
+ /** The `Response` type returned by the Cloudflare Browser Rendering binding. */
18
+ type BrowserResponse = Awaited<ReturnType<cf.BrowserRun["fetch"]>>;
19
+ /** An Effect produced by a {@link BrowserClient} operation. */
20
+ type BrowserEffect<A> = Effect.Effect<A, BrowserError, RuntimeContext>;
21
+ /** A byte stream produced by a binary {@link BrowserClient} action. */
22
+ type BrowserByteStream = Stream.Stream<Uint8Array, BrowserError, RuntimeContext>;
23
+ export type BrowserScreenshotOptions = cf.BrowserRunScreenshotOptions;
24
+ export type BrowserPDFOptions = cf.BrowserRunPDFOptions;
25
+ export type BrowserContentOptions = cf.BrowserRunContentOptions;
26
+ export type BrowserScrapeOptions = cf.BrowserRunScrapeOptions;
27
+ export type BrowserLinksOptions = cf.BrowserRunLinksOptions;
28
+ export type BrowserSnapshotOptions = cf.BrowserRunSnapshotOptions;
29
+ export type BrowserJsonOptions = cf.BrowserRunJsonOptions;
30
+ export type BrowserMarkdownOptions = cf.BrowserRunMarkdownOptions;
31
+ export type BrowserContentResult = cf.BrowserRunContentSuccessResponse;
32
+ export type BrowserScrapeResult = cf.BrowserRunScrapeSuccessResponse;
33
+ export type BrowserLinksResult = cf.BrowserRunLinksSuccessResponse;
34
+ export type BrowserSnapshotResult = cf.BrowserRunSnapshotSuccessResponse;
35
+ export type BrowserJsonResult = cf.BrowserRunJsonSuccessResponse;
36
+ export type BrowserMarkdownResult = cf.BrowserRunMarkdownSuccessResponse;
37
+ export type BrowserErrorResponse = cf.BrowserRunErrorResponse;
21
38
  /**
22
39
  * Effect-native client for a Cloudflare Browser Rendering binding.
23
40
  *
24
- * Browser Rendering's Workers binding is consumed by `@cloudflare/puppeteer`.
25
- * Alchemy keeps Puppeteer as a caller-provided dependency while wrapping
26
- * launch and cleanup in Effects.
41
+ * Mirrors the runtime {@link cf.BrowserRun} binding, translating its shapes
42
+ * into Effect-native ones: JSON quick actions resolve to their parsed success
43
+ * payload, and binary actions (`screenshot`, `pdf`) resolve to a `Stream` of
44
+ * the response bytes. Non-success responses fail with {@link BrowserError}, so
45
+ * callers never touch a `Promise` or `Response.json()` themselves. Use
46
+ * `Cloudflare.Browser.bind(browser)` (or `yield* Cloudflare.Browser(...)`)
47
+ * inside a Worker's init phase to obtain it.
48
+ *
49
+ * The {@link raw} accessor and {@link fetch} are the only promise-shaped
50
+ * escape hatches — they exist for libraries like `@cloudflare/puppeteer` that
51
+ * consume the binding directly.
27
52
  */
28
53
  export interface BrowserClient {
29
54
  /**
30
55
  * Effect resolving to the raw Cloudflare Browser Rendering runtime binding.
56
+ *
57
+ * Pass it to `@cloudflare/puppeteer`'s `puppeteer.launch(binding)` to drive a
58
+ * full browser session.
59
+ */
60
+ raw: Effect.Effect<cf.BrowserRun, never, RuntimeContext>;
61
+ /**
62
+ * Send a raw HTTP request to the Browser Run API and resolve to the raw
63
+ * `Response`. Used by libraries like `@cloudflare/puppeteer` to acquire and
64
+ * connect to a browser instance.
65
+ */
66
+ fetch(...args: Parameters<cf.BrowserRun["fetch"]>): BrowserEffect<BrowserResponse>;
67
+ /**
68
+ * Run a Browser Run quick action, resolving to the parsed success payload
69
+ * (or a byte `Stream` for binary actions). Mirrors
70
+ * `cf.BrowserRun["quickAction"]`; the {@link screenshot}, {@link pdf},
71
+ * {@link content}, {@link scrape}, {@link links}, {@link snapshot},
72
+ * {@link json}, and {@link markdown} methods are thin wrappers over the
73
+ * corresponding action.
74
+ */
75
+ quickAction(action: "screenshot", options: BrowserScreenshotOptions): BrowserByteStream;
76
+ quickAction(action: "pdf", options: BrowserPDFOptions): BrowserByteStream;
77
+ quickAction(action: "content", options: BrowserContentOptions): BrowserEffect<BrowserContentResult>;
78
+ quickAction(action: "scrape", options: BrowserScrapeOptions): BrowserEffect<BrowserScrapeResult>;
79
+ quickAction(action: "links", options: BrowserLinksOptions): BrowserEffect<BrowserLinksResult>;
80
+ quickAction(action: "snapshot", options: BrowserSnapshotOptions): BrowserEffect<BrowserSnapshotResult>;
81
+ quickAction(action: "json", options: BrowserJsonOptions): BrowserEffect<BrowserJsonResult>;
82
+ quickAction(action: "markdown", options: BrowserMarkdownOptions): BrowserEffect<BrowserMarkdownResult>;
83
+ /**
84
+ * Take a screenshot of a web page, streaming the raw image bytes.
85
+ */
86
+ screenshot(options: BrowserScreenshotOptions): BrowserByteStream;
87
+ /**
88
+ * Generate a PDF of a web page, streaming the raw PDF bytes.
89
+ */
90
+ pdf(options: BrowserPDFOptions): BrowserByteStream;
91
+ /**
92
+ * Get the HTML content of a web page.
93
+ */
94
+ content(options: BrowserContentOptions): BrowserEffect<BrowserContentResult>;
95
+ /**
96
+ * Scrape elements from a web page by CSS selector.
97
+ */
98
+ scrape(options: BrowserScrapeOptions): BrowserEffect<BrowserScrapeResult>;
99
+ /**
100
+ * Extract all links from a web page.
101
+ */
102
+ links(options: BrowserLinksOptions): BrowserEffect<BrowserLinksResult>;
103
+ /**
104
+ * Get both the HTML content and a base64-encoded screenshot of a web page.
31
105
  */
32
- raw: Effect.Effect<cf.Fetcher, never, WorkerEnvironment>;
106
+ snapshot(options: BrowserSnapshotOptions): BrowserEffect<BrowserSnapshotResult>;
33
107
  /**
34
- * Launch a Browser Rendering session through `@cloudflare/puppeteer`.
108
+ * Extract structured JSON data from a web page using AI.
35
109
  */
36
- launch<Browser extends BrowserHandle>(puppeteer: BrowserPuppeteer<Browser>): Effect.Effect<Browser, BrowserError, WorkerEnvironment>;
110
+ json(options: BrowserJsonOptions): BrowserEffect<BrowserJsonResult>;
37
111
  /**
38
- * Launch a browser, run an Effect with it, and close it afterward.
112
+ * Convert a web page to Markdown.
39
113
  */
40
- withBrowser<Browser extends BrowserHandle, A, E, R>(puppeteer: BrowserPuppeteer<Browser>, use: (browser: Browser) => Effect.Effect<A, E, R>): Effect.Effect<A, BrowserError | E, WorkerEnvironment | R>;
114
+ markdown(options: BrowserMarkdownOptions): BrowserEffect<BrowserMarkdownResult>;
41
115
  }
42
116
  declare const BrowserBinding_base: Binding.Service<BrowserBinding, "Cloudflare.Browser.Binding", (browser: BrowserLike) => Effect.Effect<BrowserClient>> & {
43
117
  bind: (browser: BrowserLike) => Effect.Effect<any, any, any>;
44
118
  };
45
119
  export declare class BrowserBinding extends BrowserBinding_base {
46
120
  }
47
- export declare const BrowserBindingLive: Layer.Layer<BrowserBinding, never, BrowserBindingPolicy>;
121
+ export declare const BrowserBindingLive: Layer.Layer<BrowserBinding, never, WorkerEnvironment | BrowserBindingPolicy>;
48
122
  declare const BrowserBindingPolicy_base: Binding.Policy<BrowserBindingPolicy, "Policy<Cloudflare.Browser.Binding>", (browser: BrowserLike) => Effect.Effect<void>>;
49
123
  export declare class BrowserBindingPolicy extends BrowserBindingPolicy_base {
50
124
  }
51
125
  export declare const BrowserBindingPolicyLive: Layer.Layer<BrowserBindingPolicy, never, never>;
52
126
  /** @internal */
53
- export declare const makeBrowserClient: (raw: Effect.Effect<cf.Fetcher, never, WorkerEnvironment>) => BrowserClient;
127
+ export declare const makeBrowserClient: (raw: Effect.Effect<cf.BrowserRun, never, RuntimeContext>) => BrowserClient;
54
128
  export {};
55
129
  //# sourceMappingURL=BrowserBinding.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserBinding.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Browser/BrowserBinding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAY,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;;;;AAE3D,qBAAa,YAAa,SAAQ,kBAAiC;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;CAAG;AAEL,MAAM,WAAW,aAAa;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB,CAAC,OAAO,SAAS,aAAa;IAC7D,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;IACzD;;OAEG;IACH,MAAM,CAAC,OAAO,SAAS,aAAa,EAClC,SAAS,EAAE,gBAAgB,CAAC,OAAO,CAAC,GACnC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAC3D;;OAEG;IACH,WAAW,CAAC,OAAO,SAAS,aAAa,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAChD,SAAS,EAAE,gBAAgB,CAAC,OAAO,CAAC,EACpC,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAChD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,EAAE,iBAAiB,GAAG,CAAC,CAAC,CAAC;CAC9D;2GAIW,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;;;AAFxD,qBAAa,cAAe,SAAQ,mBAGH;CAAG;AAEpC,eAAO,MAAM,kBAAkB,0DAe9B,CAAC;8HAIU,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAF/C,qBAAa,oBAAqB,SAAQ,yBAGT;CAAG;AAEpC,eAAO,MAAM,wBAAwB,iDAiBpC,CAAC;AAeF,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,GAC5B,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC,KACvD,aAgBF,CAAC"}
1
+ {"version":3,"file":"BrowserBinding.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Browser/BrowserBinding.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import * as Data from "effect/Data";
2
2
  import * as Effect from "effect/Effect";
3
3
  import * as Layer from "effect/Layer";
4
+ import * as Stream from "effect/Stream";
4
5
  import * as Binding from "../../Binding.js";
5
6
  import { isWorker, WorkerEnvironment } from "../Workers/Worker.js";
6
7
  export class BrowserError extends Data.TaggedError("BrowserError") {
@@ -9,11 +10,10 @@ export class BrowserBinding extends Binding.Service()("Cloudflare.Browser.Bindin
9
10
  }
10
11
  export const BrowserBindingLive = Layer.effect(BrowserBinding, Effect.gen(function* () {
11
12
  const Policy = yield* BrowserBindingPolicy;
13
+ const env = yield* WorkerEnvironment;
12
14
  return Effect.fn(function* (browser) {
13
15
  yield* Policy(browser);
14
- // Cloudflare exposes Browser Rendering as a service-style binding for
15
- // @cloudflare/puppeteer; workers-types has no narrower interface.
16
- const raw = WorkerEnvironment.useSync((env) => env[browser.name]);
16
+ const raw = Effect.sync(() => env[browser.name]);
17
17
  return makeBrowserClient(raw);
18
18
  });
19
19
  }));
@@ -43,13 +43,48 @@ const tryPromise = (fn) => Effect.tryPromise({
43
43
  cause: error,
44
44
  }),
45
45
  });
46
+ /** Actions whose successful response is raw binary rather than JSON. */
47
+ const BINARY_ACTIONS = new Set(["screenshot", "pdf"]);
48
+ /** Build a {@link BrowserError} from a non-success Browser Run response. */
49
+ const failResponse = (action, response) => tryPromise(() => response.text()).pipe(Effect.flatMap((body) => {
50
+ let cause = body;
51
+ try {
52
+ cause = JSON.parse(body);
53
+ }
54
+ catch {
55
+ // keep the raw text as the cause
56
+ }
57
+ const message = cause?.errors?.[0]
58
+ ?.message ??
59
+ `Browser Rendering '${action}' failed with status ${response.status}`;
60
+ return Effect.fail(new BrowserError({ message, cause }));
61
+ }));
46
62
  /** @internal */
47
63
  export const makeBrowserClient = (raw) => {
48
- const launch = (puppeteer) => raw.pipe(Effect.flatMap((binding) => tryPromise(() => puppeteer.launch(binding))));
64
+ const respond = (action, options) => raw.pipe(Effect.flatMap((binding) => tryPromise(() => binding.quickAction(action, options))), Effect.flatMap((response) => response.ok ? Effect.succeed(response) : failResponse(action, response)));
65
+ const jsonAction = (action, options) => respond(action, options).pipe(Effect.flatMap((response) => tryPromise(() => response.json())));
66
+ const streamAction = (action, options) => respond(action, options).pipe(Effect.map((response) => Stream.fromReadableStream({
67
+ evaluate: () => response.body,
68
+ onError: (cause) => new BrowserError({
69
+ message: `Browser Rendering '${action}' stream failed`,
70
+ cause,
71
+ }),
72
+ })), Stream.unwrap);
73
+ const quickAction = ((action, options) => BINARY_ACTIONS.has(action)
74
+ ? streamAction(action, options)
75
+ : jsonAction(action, options));
49
76
  return {
50
77
  raw,
51
- launch,
52
- withBrowser: (puppeteer, use) => Effect.acquireUseRelease(launch(puppeteer), use, (browser) => tryPromise(() => browser.close())),
78
+ fetch: (...args) => raw.pipe(Effect.flatMap((binding) => tryPromise(() => binding.fetch(...args)))),
79
+ quickAction,
80
+ screenshot: (options) => streamAction("screenshot", options),
81
+ pdf: (options) => streamAction("pdf", options),
82
+ content: (options) => jsonAction("content", options),
83
+ scrape: (options) => jsonAction("scrape", options),
84
+ links: (options) => jsonAction("links", options),
85
+ snapshot: (options) => jsonAction("snapshot", options),
86
+ json: (options) => jsonAction("json", options),
87
+ markdown: (options) => jsonAction("markdown", options),
53
88
  };
54
89
  };
55
90
  //# sourceMappingURL=BrowserBinding.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserBinding.js","sourceRoot":"","sources":["../../../src/Cloudflare/Browser/BrowserBinding.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGnE,MAAM,OAAO,YAAa,SAAQ,IAAI,CAAC,WAAW,CAAC,cAAc,CAG/D;CAAG;AAqCL,MAAM,OAAO,cAAe,SAAQ,OAAO,CAAC,OAAO,EAGhD,CAAC,4BAA4B,CAAC;CAAG;AAEpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAC5C,cAAc,EACd,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,oBAAoB,CAAC;IAE3C,OAAO,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAoB;QAC9C,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,sEAAsE;QACtE,kEAAkE;QAClE,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,CACnC,CAAC,GAAG,EAAE,EAAE,CAAE,GAAkC,CAAC,OAAO,CAAC,IAAI,CAAE,CAC5D,CAAC;QACF,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CACH,CAAC;AAEF,MAAM,OAAO,oBAAqB,SAAQ,OAAO,CAAC,MAAM,EAGrD,CAAC,4BAA4B,CAAC;CAAG;AAEpC,MAAM,CAAC,MAAM,wBAAwB,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,CACxE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAkB,EAAE,OAAoB;IAC3D,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAC7B,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,OAAO,CAAC,IAAI;iBACnB;aACF;SACF,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CACtB,IAAI,KAAK,CAAC,4CAA4C,IAAI,CAAC,IAAI,GAAG,CAAC,CACpE,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CACH,CAAC;AAEF,MAAM,UAAU,GAAG,CAAI,EAAoB,EAAkC,EAAE,CAC7E,MAAM,CAAC,UAAU,CAAC;IAChB,GAAG,EAAE,EAAE;IACP,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,YAAY,CAAC;QACf,OAAO,EACL,KAAK,YAAY,KAAK;YACpB,CAAC,CAAC,KAAK,CAAC,OAAO;YACf,CAAC,CAAC,iCAAiC;QACvC,KAAK,EAAE,KAAK;KACb,CAAC;CACL,CAAC,CAAC;AAEL,gBAAgB;AAChB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,GAAwD,EACzC,EAAE;IACjB,MAAM,MAAM,GAAG,CACb,SAAoC,EACpC,EAAE,CACF,GAAG,CAAC,IAAI,CACN,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CACzE,CAAC;IAEJ,OAAO;QACL,GAAG;QACH,MAAM;QACN,WAAW,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,CAC9B,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,CAC3D,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAClC;KACoB,CAAC;AAC5B,CAAC,CAAC"}
1
+ {"version":3,"file":"BrowserBinding.js","sourceRoot":"","sources":["../../../src/Cloudflare/Browser/BrowserBinding.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  export * from "./Browser.ts";
2
- export { BrowserBinding, BrowserBindingLive, BrowserBindingPolicy, BrowserBindingPolicyLive, BrowserError, type BrowserClient, type BrowserHandle, type BrowserPuppeteer, } from "./BrowserBinding.ts";
2
+ export { BrowserBinding, BrowserBindingLive, BrowserBindingPolicy, BrowserBindingPolicyLive, BrowserError, type BrowserClient, type BrowserScreenshotOptions, type BrowserPDFOptions, type BrowserContentOptions, type BrowserScrapeOptions, type BrowserLinksOptions, type BrowserSnapshotOptions, type BrowserJsonOptions, type BrowserMarkdownOptions, type BrowserContentResult, type BrowserScrapeResult, type BrowserLinksResult, type BrowserSnapshotResult, type BrowserJsonResult, type BrowserMarkdownResult, type BrowserErrorResponse, } from "./BrowserBinding.ts";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Browser/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,gBAAgB,GACtB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Browser/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,GAC1B,MAAM,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Cloudflare/Browser/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,YAAY,GAIb,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Cloudflare/Browser/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,YAAY,GAiBb,MAAM,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ContainerBinding.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Container/ContainerBinding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,cAAc,CAAC;AAMxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,eAAO,MAAM,aAAa,GAAgC,KAAK,EAAE,GAAG,qQAiElE,CAAC"}
1
+ {"version":3,"file":"ContainerBinding.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Container/ContainerBinding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,cAAc,CAAC;AAMxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,eAAO,MAAM,aAAa,GAAgC,KAAK,EAAE,GAAG,qQA4DlE,CAAC"}
@@ -6,11 +6,9 @@ import { DurableObjectState } from "../Workers/DurableObjectState.js";
6
6
  import { Worker } from "../Workers/Worker.js";
7
7
  export const bindContainer = Effect.fnUntraced(function* (containerEff) {
8
8
  const namespace = yield* DurableObjectNamespace;
9
- const container = "asEffect" in containerEff
9
+ const container = Effect.isEffect(containerEff)
10
10
  ? yield* containerEff
11
- : Effect.isEffect(containerEff)
12
- ? yield* containerEff
13
- : containerEff;
11
+ : containerEff;
14
12
  yield* container.bind `${namespace}`({
15
13
  durableObjects: {
16
14
  namespaceId: namespace.namespaceId,
@@ -1 +1 @@
1
- {"version":3,"file":"ContainerBinding.js","sourceRoot":"","sources":["../../../src/Cloudflare/Container/ContainerBinding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ContainerBinding.js","sourceRoot":"","sources":["../../../src/Cloudflare/Container/ContainerBinding.ts"],"names":[],"mappings":"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"}
@@ -28,9 +28,10 @@ type BindEffect = Effect.Effect<ImagesClient, never, ImagesBinding>;
28
28
  * Worker and returns the runtime {@link ImagesClient} — no separate `.bind(...)`
29
29
  * step required.
30
30
  *
31
- * The divergence is achieved via `[Symbol.iterator]`: the object is not an
32
- * `Effect` (so `InferEnv` resolves it to the native `ImagesBinding` in the
33
- * `env` position), but it is iterable as one when `yield*`-ed.
31
+ * The divergence is achieved via `[Symbol.iterator]`: the object is
32
+ * deliberately not an `Effect` (so `InferEnv` and the Worker `env` resolver
33
+ * keep it as the native `ImagesBinding` rather than `yield*`-ing it), but it
34
+ * is iterable as one when `yield*`-ed.
34
35
  */
35
36
  export interface Images {
36
37
  kind: ImagesTypeId;
@@ -1 +1 @@
1
- {"version":3,"file":"Images.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Images/Images.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEtE,KAAK,YAAY,GAAG,OAAO,YAAY,CAAC;AACxC,QAAA,MAAM,YAAY,EAAG,mBAA4B,CAAC;AAElD,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;GAIG;AACH,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;AAEpE;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,IAAI,UAAU,CAAC;IACvB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;CAC9D;AAED,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAIV,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,eAAO,MAAM,MAAM,EAAE;IACnB,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC9B;;;;OAIG;IACH,IAAI,EAAE,OAAO,aAAa,CAAC,IAAI,CAAC;CAejC,CAAC"}
1
+ {"version":3,"file":"Images.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Images/Images.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEtE,KAAK,YAAY,GAAG,OAAO,YAAY,CAAC;AACxC,QAAA,MAAM,YAAY,EAAG,mBAA4B,CAAC;AAElD,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;GAIG;AACH,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;AAEpE;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,IAAI,UAAU,CAAC;IACvB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;CAC9D;AAED,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAIV,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,eAAO,MAAM,MAAM,EAAE;IACnB,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC9B;;;;OAIG;IACH,IAAI,EAAE,OAAO,aAAa,CAAC,IAAI,CAAC;CAejC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Images.js","sourceRoot":"","sources":["../../../src/Cloudflare/Images/Images.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAqB,MAAM,oBAAoB,CAAC;AAGtE,MAAM,YAAY,GAAG,mBAA4B,CAAC;AAwClD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAmB,EAAE,CAC1D,OAAO,KAAK,KAAK,QAAQ;IACzB,KAAK,KAAK,IAAI;IACd,MAAM,IAAI,KAAK;IACd,KAAgB,CAAC,IAAI,KAAK,YAAY,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,MAAM,CAAC,MAAM,MAAM,GAQf,MAAM,CAAC,MAAM,CACf,CAAC,KAAmB,EAAU,EAAE;IAC9B,MAAM,IAAI,GAAW;QACnB,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,QAAQ;QAC7B,QAAQ,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QACxC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrE,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC,EACD;IACE,IAAI,EAAE,CAAC,GAAG,IAA2C,EAAE,EAAE,CACvD,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC9B,CACF,CAAC"}
1
+ {"version":3,"file":"Images.js","sourceRoot":"","sources":["../../../src/Cloudflare/Images/Images.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAqB,MAAM,oBAAoB,CAAC;AAGtE,MAAM,YAAY,GAAG,mBAA4B,CAAC;AAyClD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAmB,EAAE,CAC1D,OAAO,KAAK,KAAK,QAAQ;IACzB,KAAK,KAAK,IAAI;IACd,MAAM,IAAI,KAAK;IACd,KAAgB,CAAC,IAAI,KAAK,YAAY,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,MAAM,CAAC,MAAM,MAAM,GAQf,MAAM,CAAC,MAAM,CACf,CAAC,KAAmB,EAAU,EAAE;IAC9B,MAAM,IAAI,GAAW;QACnB,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,QAAQ;QAC7B,QAAQ,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QACxC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrE,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC,EACD;IACE,IAAI,EAAE,CAAC,GAAG,IAA2C,EAAE,EAAE,CACvD,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC9B,CACF,CAAC"}
@@ -15,5 +15,5 @@ export type ProviderRequirements = Layer.Services<ReturnType<typeof providers>>;
15
15
  /**
16
16
  * Cloudflare providers, bindings, and credentials for Worker-based stacks.
17
17
  */
18
- export declare const providers: () => Layer.Layer<import("../Auth/Profile.ts").Profile | import("../Auth/Credentials.ts").CredentialsStore | Provider.Provider<KeyPair> | Provider.Provider<Random> | Provider.Provider<Command> | Access.Access | Containers.Credentials | CloudflareEnvironment.CloudflareEnvironment | Providers | Retry.Retry, never, any>;
18
+ export declare const providers: () => Layer.Layer<import("../Auth/Profile.ts").Profile | import("../Auth/Credentials.ts").CredentialsStore | Provider.Provider<KeyPair> | Provider.Provider<Random> | Provider.Provider<Command> | Access.Access | Containers.Credentials | CloudflareEnvironment.CloudflareEnvironment | Providers | Retry.Retry, never, import("effect/Scope").Scope | import("effect/unstable/process/ChildProcessSpawner").ChildProcessSpawner | import("effect/FileSystem").FileSystem | import("effect/Path").Path | import("effect/unstable/http/HttpClient").HttpClient | import("../AlchemyContext.ts").AlchemyContext | import("../index.ts").AuthProviders | import("../Stage.ts").Stage | import("../Stack.ts").Stack>;
19
19
  //# sourceMappingURL=Providers.d.ts.map