alchemy 2.0.0-beta.35 → 2.0.0-beta.36

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 (58) hide show
  1. package/bin/exec.js +27 -0
  2. package/bin/exec.js.map +1 -1
  3. package/lib/Cli/main.d.ts.map +1 -1
  4. package/lib/Cli/main.js +2 -0
  5. package/lib/Cli/main.js.map +1 -1
  6. package/lib/Cloudflare/Images/Images.d.ts +103 -0
  7. package/lib/Cloudflare/Images/Images.d.ts.map +1 -0
  8. package/lib/Cloudflare/Images/Images.js +82 -0
  9. package/lib/Cloudflare/Images/Images.js.map +1 -0
  10. package/lib/Cloudflare/Images/ImagesBinding.d.ts +73 -0
  11. package/lib/Cloudflare/Images/ImagesBinding.d.ts.map +1 -0
  12. package/lib/Cloudflare/Images/ImagesBinding.js +83 -0
  13. package/lib/Cloudflare/Images/ImagesBinding.js.map +1 -0
  14. package/lib/Cloudflare/Images/index.d.ts +3 -0
  15. package/lib/Cloudflare/Images/index.d.ts.map +1 -0
  16. package/lib/Cloudflare/Images/index.js +3 -0
  17. package/lib/Cloudflare/Images/index.js.map +1 -0
  18. package/lib/Cloudflare/Providers.d.ts.map +1 -1
  19. package/lib/Cloudflare/Providers.js +3 -1
  20. package/lib/Cloudflare/Providers.js.map +1 -1
  21. package/lib/Cloudflare/R2/R2Bucket.d.ts +135 -0
  22. package/lib/Cloudflare/R2/R2Bucket.d.ts.map +1 -1
  23. package/lib/Cloudflare/R2/R2Bucket.js +130 -7
  24. package/lib/Cloudflare/R2/R2Bucket.js.map +1 -1
  25. package/lib/Cloudflare/Workers/InferEnv.d.ts +1 -1
  26. package/lib/Cloudflare/Workers/InferEnv.d.ts.map +1 -1
  27. package/lib/Cloudflare/Workers/Worker.d.ts +5 -5
  28. package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
  29. package/lib/Cloudflare/Workers/Worker.js +34 -23
  30. package/lib/Cloudflare/Workers/Worker.js.map +1 -1
  31. package/lib/Cloudflare/index.d.ts +1 -0
  32. package/lib/Cloudflare/index.d.ts.map +1 -1
  33. package/lib/Cloudflare/index.js +1 -0
  34. package/lib/Cloudflare/index.js.map +1 -1
  35. package/lib/Test/Vitest.d.ts.map +1 -1
  36. package/lib/Test/Vitest.js +2 -0
  37. package/lib/Test/Vitest.js.map +1 -1
  38. package/lib/Util/LocalhostDns.d.ts +19 -0
  39. package/lib/Util/LocalhostDns.d.ts.map +1 -0
  40. package/lib/Util/LocalhostDns.js +55 -0
  41. package/lib/Util/LocalhostDns.js.map +1 -0
  42. package/lib/Util/PlatformServices.d.ts.map +1 -1
  43. package/lib/Util/PlatformServices.js +2 -0
  44. package/lib/Util/PlatformServices.js.map +1 -1
  45. package/lib/tsconfig.test.tsbuildinfo +1 -1
  46. package/package.json +2 -1
  47. package/src/Cli/main.ts +3 -0
  48. package/src/Cloudflare/Images/Images.ts +121 -0
  49. package/src/Cloudflare/Images/ImagesBinding.ts +192 -0
  50. package/src/Cloudflare/Images/index.ts +2 -0
  51. package/src/Cloudflare/Providers.ts +3 -0
  52. package/src/Cloudflare/R2/R2Bucket.ts +240 -7
  53. package/src/Cloudflare/Workers/InferEnv.ts +7 -3
  54. package/src/Cloudflare/Workers/Worker.ts +47 -28
  55. package/src/Cloudflare/index.ts +1 -0
  56. package/src/Test/Vitest.ts +3 -0
  57. package/src/Util/LocalhostDns.ts +58 -0
  58. package/src/Util/PlatformServices.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/Cli/main.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAoExC,eAAO,MAAM,IAAI,iCAKhB,CAAC"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/Cli/main.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAuExC,eAAO,MAAM,IAAI,iCAKhB,CAAC"}
package/lib/Cli/main.js CHANGED
@@ -7,8 +7,10 @@ import { AlchemyContextLive } from "alchemy/AlchemyContext";
7
7
  import { CredentialsStoreLive } from "alchemy/Auth/Credentials";
8
8
  import { ProfileLive } from "alchemy/Auth/Profile";
9
9
  import { TelemetryLive } from "alchemy/Telemetry/Layer";
10
+ import { installLocalhostDns } from "alchemy/Util/LocalhostDns";
10
11
  import { PlatformServices } from "alchemy/Util/PlatformServices";
11
12
  import packageJson from "../../package.json" with { type: "json" };
13
+ installLocalhostDns();
12
14
  import { checkLatestVersion } from "./checkVersion.js";
13
15
  import { handleCancellation } from "./commands/_shared.js";
14
16
  import { awsCommand } from "./commands/aws.js";
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/Cli/main.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;AACvD,OAAO,KAAK,eAAe,MAAM,sCAAsC,CAAC;AAExE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,WAAW,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,aAAa,EACb,cAAc,EACd,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAC3C,OAAO,CAAC,eAAe,CAAC;IACtB,UAAU;IACV,iBAAiB;IACjB,aAAa;IACb,UAAU;IACV,cAAc;IACd,WAAW;IACX,WAAW;IACX,WAAW;IACX,YAAY;IACZ,cAAc;IACd,YAAY;CACb,CAAC,CACH,CAAC;AAEF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE;IAC5B,8BAA8B;IAC9B,OAAO,EAAE,WAAW,CAAC,OAAO;CAC7B,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAC7B,KAAK,CAAC,YAAY,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,EACxD,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,gBAAgB,CAAC,EAC5C,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,EACrD,eAAe,CAAC,KAAK,EACrB,cAAc,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,EAC9C,aAAa,EACb,SAAS,EAAE,CACZ,CAAC;AAEF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClC,wEAAwE;IACxE,kEAAkE;IAClE,mDAAmD;IACnD,KAAK,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC,CAAC,GAAG,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI;AAC9B,8CAA8C;AAC9C,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EACxB,MAAM,CAAC,MAAM,EACb,kBAAkB,CACnB,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/Cli/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ import * as Effect from "effect/Effect";
2
+ import { ImagesBinding } from "./ImagesBinding.ts";
3
+ type ImagesTypeId = typeof ImagesTypeId;
4
+ declare const ImagesTypeId: "Cloudflare.Images";
5
+ export type ImagesProps = {
6
+ /**
7
+ * Binding name used when `Cloudflare.Images.bind(images)` attaches Images
8
+ * from inside a Worker init phase. When Images is passed through
9
+ * `Worker({ bindings: { ... } })`, the object key remains the binding name.
10
+ *
11
+ * @default "IMAGES"
12
+ */
13
+ name?: string;
14
+ };
15
+ /**
16
+ * Marker for a Cloudflare Images binding.
17
+ *
18
+ * Images bindings are configured directly on Workers and do not have a
19
+ * standalone provisioning API. The Worker provider sees this object in
20
+ * `bindings: { ... }` and emits the corresponding `{ type: "images" }`
21
+ * metadata binding to the script.
22
+ */
23
+ export type Images = {
24
+ kind: ImagesTypeId;
25
+ name: string;
26
+ };
27
+ export declare const isImages: (value: unknown) => value is Images;
28
+ /**
29
+ * A Cloudflare Images binding for image transformation and manipulation inside
30
+ * Workers.
31
+ *
32
+ * The Effect-native interface (`Cloudflare.Images.bind(...)`) returns an
33
+ * `ImagesClient` whose methods take Effect `Stream.Stream<Uint8Array>`
34
+ * inputs and return `Effect`s — `info`, `input(...).transform(...)
35
+ * .draw(...).output(...)`. The runtime conversion to Cloudflare's
36
+ * `ReadableStream` is handled internally.
37
+ *
38
+ * @section Declaring Images
39
+ * @example
40
+ * ```typescript
41
+ * const Pipeline = yield* Cloudflare.Images({ name: "PIPELINE" });
42
+ * ```
43
+ *
44
+ * @section Effect-style Worker (recommended)
45
+ * @example Read image format and dimensions from the request body
46
+ * ```typescript
47
+ * import { HttpServerRequest } from "effect/unstable/http/HttpServerRequest";
48
+ *
49
+ * Cloudflare.Worker("ImageWorker", { main: import.meta.filename },
50
+ * Effect.gen(function* () {
51
+ * const pipeline = yield* Pipeline;
52
+ * const images = yield* Cloudflare.Images.bind(pipeline);
53
+ * return {
54
+ * fetch: Effect.gen(function* () {
55
+ * const request = yield* HttpServerRequest;
56
+ * // request.stream is Stream.Stream<Uint8Array>
57
+ * const info = yield* images.info(request.stream);
58
+ * return yield* HttpServerResponse.json(info);
59
+ * }),
60
+ * };
61
+ * }).pipe(Effect.provide(Cloudflare.ImagesBindingLive)),
62
+ * );
63
+ * ```
64
+ *
65
+ * @example Transform an image — chainable pipeline, single Effect at the end
66
+ * ```typescript
67
+ * const result = yield* (yield* images.input(request.stream))
68
+ * .transform({ width: 128 })
69
+ * .output({ format: "image/jpeg" });
70
+ *
71
+ * const response = yield* result.response;
72
+ * ```
73
+ *
74
+ * @section Binding to a Worker (declarative)
75
+ * @example
76
+ * ```typescript
77
+ * export const Worker = Cloudflare.Worker("Worker", {
78
+ * main: "./src/worker.ts",
79
+ * bindings: { MEDIA: Pipeline },
80
+ * });
81
+ *
82
+ * export type WorkerEnv = Cloudflare.InferEnv<typeof Worker>;
83
+ * // { MEDIA: ImagesBinding }
84
+ * ```
85
+ *
86
+ * Inside the Worker, the raw Cloudflare runtime binding is reachable via
87
+ * `client.raw` if you need to call `info()` / `input()` directly with
88
+ * `async`/`await`. The Effect-native interface is preferred — it returns
89
+ * tagged `ImagesError`s, threads `WorkerEnvironment`, and lets you stream
90
+ * Effect `Stream<Uint8Array>` sources without manual conversion.
91
+ *
92
+ * @see https://developers.cloudflare.com/images/transform-images/bindings/
93
+ */
94
+ export declare const Images: {
95
+ (props?: ImagesProps): Effect.Effect<Images>;
96
+ /**
97
+ * Bind Cloudflare Images to the surrounding Worker, returning an
98
+ * Effect-native client with access to the native Workers runtime binding.
99
+ */
100
+ bind: typeof ImagesBinding.bind;
101
+ };
102
+ export {};
103
+ //# sourceMappingURL=Images.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Images.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Images/Images.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,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;;;;;;;GAOG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAIV,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEG;AACH,eAAO,MAAM,MAAM,EAAE;IACnB,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C;;;OAGG;IACH,IAAI,EAAE,OAAO,aAAa,CAAC,IAAI,CAAC;CAYjC,CAAC"}
@@ -0,0 +1,82 @@
1
+ import * as Effect from "effect/Effect";
2
+ import { ImagesBinding } from "./ImagesBinding.js";
3
+ const ImagesTypeId = "Cloudflare.Images";
4
+ export const isImages = (value) => typeof value === "object" &&
5
+ value !== null &&
6
+ "kind" in value &&
7
+ value.kind === ImagesTypeId;
8
+ /**
9
+ * A Cloudflare Images binding for image transformation and manipulation inside
10
+ * Workers.
11
+ *
12
+ * The Effect-native interface (`Cloudflare.Images.bind(...)`) returns an
13
+ * `ImagesClient` whose methods take Effect `Stream.Stream<Uint8Array>`
14
+ * inputs and return `Effect`s — `info`, `input(...).transform(...)
15
+ * .draw(...).output(...)`. The runtime conversion to Cloudflare's
16
+ * `ReadableStream` is handled internally.
17
+ *
18
+ * @section Declaring Images
19
+ * @example
20
+ * ```typescript
21
+ * const Pipeline = yield* Cloudflare.Images({ name: "PIPELINE" });
22
+ * ```
23
+ *
24
+ * @section Effect-style Worker (recommended)
25
+ * @example Read image format and dimensions from the request body
26
+ * ```typescript
27
+ * import { HttpServerRequest } from "effect/unstable/http/HttpServerRequest";
28
+ *
29
+ * Cloudflare.Worker("ImageWorker", { main: import.meta.filename },
30
+ * Effect.gen(function* () {
31
+ * const pipeline = yield* Pipeline;
32
+ * const images = yield* Cloudflare.Images.bind(pipeline);
33
+ * return {
34
+ * fetch: Effect.gen(function* () {
35
+ * const request = yield* HttpServerRequest;
36
+ * // request.stream is Stream.Stream<Uint8Array>
37
+ * const info = yield* images.info(request.stream);
38
+ * return yield* HttpServerResponse.json(info);
39
+ * }),
40
+ * };
41
+ * }).pipe(Effect.provide(Cloudflare.ImagesBindingLive)),
42
+ * );
43
+ * ```
44
+ *
45
+ * @example Transform an image — chainable pipeline, single Effect at the end
46
+ * ```typescript
47
+ * const result = yield* (yield* images.input(request.stream))
48
+ * .transform({ width: 128 })
49
+ * .output({ format: "image/jpeg" });
50
+ *
51
+ * const response = yield* result.response;
52
+ * ```
53
+ *
54
+ * @section Binding to a Worker (declarative)
55
+ * @example
56
+ * ```typescript
57
+ * export const Worker = Cloudflare.Worker("Worker", {
58
+ * main: "./src/worker.ts",
59
+ * bindings: { MEDIA: Pipeline },
60
+ * });
61
+ *
62
+ * export type WorkerEnv = Cloudflare.InferEnv<typeof Worker>;
63
+ * // { MEDIA: ImagesBinding }
64
+ * ```
65
+ *
66
+ * Inside the Worker, the raw Cloudflare runtime binding is reachable via
67
+ * `client.raw` if you need to call `info()` / `input()` directly with
68
+ * `async`/`await`. The Effect-native interface is preferred — it returns
69
+ * tagged `ImagesError`s, threads `WorkerEnvironment`, and lets you stream
70
+ * Effect `Stream<Uint8Array>` sources without manual conversion.
71
+ *
72
+ * @see https://developers.cloudflare.com/images/transform-images/bindings/
73
+ */
74
+ export const Images = Object.assign(Effect.fn(function* (props) {
75
+ return {
76
+ kind: ImagesTypeId,
77
+ name: props?.name ?? "IMAGES",
78
+ };
79
+ }), {
80
+ bind: (...args) => ImagesBinding.bind(...args),
81
+ });
82
+ //# sourceMappingURL=Images.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Images.js","sourceRoot":"","sources":["../../../src/Cloudflare/Images/Images.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,MAAM,YAAY,GAAG,mBAA4B,CAAC;AA0BlD,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEG;AACH,MAAM,CAAC,MAAM,MAAM,GAOf,MAAM,CAAC,MAAM,CACf,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAmB;IACtC,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,QAAQ;KACb,CAAC;AACrB,CAAC,CAAC,EACF;IACE,IAAI,EAAE,CAAC,GAAG,IAA2C,EAAE,EAAE,CACvD,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC9B,CACF,CAAC"}
@@ -0,0 +1,73 @@
1
+ import type * as cf from "@cloudflare/workers-types";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Layer from "effect/Layer";
4
+ import * as Stream from "effect/Stream";
5
+ import * as Binding from "../../Binding.ts";
6
+ import { WorkerEnvironment } from "../Workers/Worker.ts";
7
+ import { type Images as ImagesLike } from "./Images.ts";
8
+ declare const ImagesError_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 & {
9
+ readonly _tag: "ImagesError";
10
+ } & Readonly<A>;
11
+ export declare class ImagesError extends ImagesError_base<{
12
+ message: string;
13
+ code?: number;
14
+ cause: unknown;
15
+ }> {
16
+ }
17
+ /**
18
+ * Effect-native handle to the result of `input(...).output(...)`.
19
+ * Mirrors the runtime `ImageTransformationResult` but exposes side
20
+ * effects (response/image/contentType reads) as plain sync effects.
21
+ */
22
+ export interface ImageTransformationResultClient {
23
+ raw: cf.ImageTransformationResult;
24
+ response: Effect.Effect<cf.Response>;
25
+ contentType: Effect.Effect<string>;
26
+ image(options?: cf.ImageTransformationOutputOptions): Effect.Effect<cf.ReadableStream<Uint8Array>>;
27
+ }
28
+ /**
29
+ * Effect-native chainable transformer. `transform`/`draw` are pure
30
+ * (return a new client wrapping the next runtime transformer);
31
+ * `output` is the only step that crosses into Cloudflare's runtime
32
+ * and therefore returns an Effect.
33
+ */
34
+ export interface ImageTransformerClient {
35
+ raw: cf.ImageTransformer;
36
+ transform(transform: cf.ImageTransform): ImageTransformerClient;
37
+ draw<E = never, R = never>(image: Stream.Stream<Uint8Array, E, R> | ImageTransformerClient, options?: cf.ImageDrawOptions): Effect.Effect<ImageTransformerClient, never, R>;
38
+ output(options: cf.ImageOutputOptions): Effect.Effect<ImageTransformationResultClient, ImagesError>;
39
+ }
40
+ /**
41
+ * Effect-native client for a Cloudflare Images binding.
42
+ *
43
+ * Wraps the runtime {@link cf.ImagesBinding} so each method returns
44
+ * an Effect tagged with {@link ImagesError}. Use
45
+ * `Cloudflare.Images.bind(images)` inside a Worker's init phase.
46
+ */
47
+ export interface ImagesClient {
48
+ /** Effect resolving to the raw Cloudflare runtime binding. */
49
+ raw: Effect.Effect<cf.ImagesBinding, never, WorkerEnvironment>;
50
+ /**
51
+ * Read image format and dimensions from a stream of bytes.
52
+ * Fails with {@link ImagesError} (code 9412) if the input is not
53
+ * a recognized image.
54
+ */
55
+ info<E = never, R = never>(stream: Stream.Stream<Uint8Array, E, R>, options?: cf.ImageInputOptions): Effect.Effect<cf.ImageInfoResponse, ImagesError, WorkerEnvironment | R>;
56
+ /**
57
+ * Begin a transformation pipeline. Subsequent `.transform()` /
58
+ * `.draw()` calls are pure; `.output(opts)` runs the pipeline.
59
+ */
60
+ input<E = never, R = never>(stream: Stream.Stream<Uint8Array, E, R>, options?: cf.ImageInputOptions): Effect.Effect<ImageTransformerClient, never, WorkerEnvironment | R>;
61
+ }
62
+ declare const ImagesBinding_base: Binding.Service<ImagesBinding, "Cloudflare.Images.Binding", (images: ImagesLike) => Effect.Effect<ImagesClient>> & {
63
+ bind: (images: ImagesLike) => Effect.Effect<any, any, any>;
64
+ };
65
+ export declare class ImagesBinding extends ImagesBinding_base {
66
+ }
67
+ export declare const ImagesBindingLive: Layer.Layer<ImagesBinding, never, import("../../RuntimeContext.ts").RuntimeContext<import("../../RuntimeContext.ts").BaseRuntimeContext> | ImagesBindingPolicy>;
68
+ declare const ImagesBindingPolicy_base: Binding.Policy<ImagesBindingPolicy, "Policy<Cloudflare.Images.Binding>", (images: ImagesLike) => Effect.Effect<void>>;
69
+ export declare class ImagesBindingPolicy extends ImagesBindingPolicy_base {
70
+ }
71
+ export declare const ImagesBindingPolicyLive: Layer.Layer<ImagesBindingPolicy, never, never>;
72
+ export {};
73
+ //# sourceMappingURL=ImagesBinding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImagesBinding.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Images/ImagesBinding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import * as Data from "effect/Data";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Layer from "effect/Layer";
4
+ import * as Stream from "effect/Stream";
5
+ import * as Binding from "../../Binding.js";
6
+ import { isWorker, WorkerEnvironment } from "../Workers/Worker.js";
7
+ import {} from "./Images.js";
8
+ export class ImagesError extends Data.TaggedError("ImagesError") {
9
+ }
10
+ export class ImagesBinding extends Binding.Service()("Cloudflare.Images.Binding") {
11
+ }
12
+ export const ImagesBindingLive = Layer.effect(ImagesBinding, Effect.gen(function* () {
13
+ const Policy = yield* ImagesBindingPolicy;
14
+ return Effect.fn(function* (images) {
15
+ yield* Policy(images);
16
+ const env = WorkerEnvironment.asEffect();
17
+ const raw = env.pipe(Effect.map((env) => env[images.name]));
18
+ return {
19
+ raw,
20
+ info: (stream, options) => Effect.gen(function* () {
21
+ const binding = yield* raw;
22
+ const readable = yield* toCfReadable(stream);
23
+ return yield* tryPromise(() => binding.info(readable, options));
24
+ }),
25
+ input: (stream, options) => Effect.gen(function* () {
26
+ const binding = yield* raw;
27
+ const readable = yield* toCfReadable(stream);
28
+ return wrapTransformer(binding.input(readable, options));
29
+ }),
30
+ };
31
+ });
32
+ }));
33
+ export class ImagesBindingPolicy extends Binding.Policy()("Cloudflare.Images.Binding") {
34
+ }
35
+ export const ImagesBindingPolicyLive = ImagesBindingPolicy.layer.succeed(Effect.fn(function* (host, images) {
36
+ if (isWorker(host)) {
37
+ yield* host.bind(images.name, {
38
+ bindings: [
39
+ {
40
+ type: "images",
41
+ name: images.name,
42
+ },
43
+ ],
44
+ });
45
+ }
46
+ else {
47
+ return yield* Effect.die(new Error(`ImagesBinding does not support runtime '${host.Type}'`));
48
+ }
49
+ }));
50
+ const tryPromise = (fn) => Effect.tryPromise({
51
+ try: fn,
52
+ catch: (error) => new ImagesError({
53
+ message: error?.message ?? "Unknown error",
54
+ code: typeof error?.code === "number" ? error.code : undefined,
55
+ cause: error,
56
+ }),
57
+ });
58
+ /**
59
+ * Convert an Effect `Stream<Uint8Array>` into the `cf.ReadableStream<Uint8Array>`
60
+ * shape that the Cloudflare Images runtime binding expects. The two
61
+ * `ReadableStream` types only differ at the type level; at runtime they
62
+ * are the same Web Streams API.
63
+ */
64
+ const toCfReadable = (stream) => Stream.toReadableStreamEffect(stream).pipe(Effect.map((s) => s));
65
+ const isTransformerClient = (image) => typeof image === "object" && image !== null && "raw" in image;
66
+ const wrapTransformer = (raw) => ({
67
+ raw,
68
+ transform: (transform) => wrapTransformer(raw.transform(transform)),
69
+ draw: (image, options) => {
70
+ if (isTransformerClient(image)) {
71
+ return Effect.succeed(wrapTransformer(raw.draw(image.raw, options)));
72
+ }
73
+ return toCfReadable(image).pipe(Effect.map((readable) => wrapTransformer(raw.draw(readable, options))));
74
+ },
75
+ output: (options) => tryPromise(() => raw.output(options)).pipe(Effect.map(wrapResult)),
76
+ });
77
+ const wrapResult = (raw) => ({
78
+ raw,
79
+ response: Effect.sync(() => raw.response()),
80
+ contentType: Effect.sync(() => raw.contentType()),
81
+ image: (options) => Effect.sync(() => raw.image(options)),
82
+ });
83
+ //# sourceMappingURL=ImagesBinding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImagesBinding.js","sourceRoot":"","sources":["../../../src/Cloudflare/Images/ImagesBinding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from "./Images.ts";
2
+ export * from "./ImagesBinding.ts";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Images/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./Images.js";
2
+ export * from "./ImagesBinding.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Cloudflare/Images/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Providers.d.ts","sourceRoot":"","sources":["../../src/Cloudflare/Providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAIpD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,MAAM,EAAkB,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAKtC,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAC;AAanD,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;;AAEtE,qBAAa,SAAU,SAAQ,cAE9B;CAAG;AAEJ,MAAM,MAAM,oBAAoB,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,SAAS,mSA8FnB,CAAC"}
1
+ {"version":3,"file":"Providers.d.ts","sourceRoot":"","sources":["../../src/Cloudflare/Providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAIpD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,MAAM,EAAkB,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAKtC,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAC;AAcnD,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;;AAEtE,qBAAa,SAAU,SAAQ,cAE9B;CAAG;AAEJ,MAAM,MAAM,oBAAoB,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,SAAS,mSAgGnB,CAAC"}
@@ -21,6 +21,7 @@ import * as Containers from "./Container/index.js";
21
21
  import * as Credentials from "./Credentials.js";
22
22
  import * as D1 from "./D1/index.js";
23
23
  import * as Hyperdrive from "./Hyperdrive/index.js";
24
+ import * as Images from "./Images/index.js";
24
25
  import * as KV from "./KV/index.js";
25
26
  import * as Queue from "./Queue/index.js";
26
27
  import * as R2 from "./R2/index.js";
@@ -47,6 +48,7 @@ export const providers = () => Layer.effect(Providers, Provider.collection([
47
48
  D1.D1Database,
48
49
  Hyperdrive.Hyperdrive,
49
50
  Hyperdrive.HyperdriveBindingPolicy,
51
+ Images.ImagesBindingPolicy,
50
52
  KV.KVNamespace,
51
53
  KV.KVNamespaceBindingPolicy,
52
54
  Queue.Queue,
@@ -65,7 +67,7 @@ export const providers = () => Layer.effect(Providers, Provider.collection([
65
67
  Workers.FetchPolicy,
66
68
  Workers.Worker,
67
69
  Workflows.WorkflowResource,
68
- ])).pipe(Layer.provide(Layer.mergeAll(ApiToken.AccountApiTokenProvider(), ApiToken.UserApiTokenProvider(), AiGateway.AiGatewayProvider(), AiGateway.AiGatewayBindingPolicyLive, Artifacts.ArtifactsBindingPolicyLive, Containers.ContainerProvider(), D1.D1ConnectionPolicyLive, D1.DatabaseProvider(), Hyperdrive.HyperdriveBindingPolicyLive, Hyperdrive.HyperdriveProvider(), KV.KVNamespaceBindingPolicyLive, KV.KVNamespaceProvider(), Queue.QueueBindingPolicyLive, Queue.QueueEventSourcePolicyLive, Queue.QueueProvider(), Queue.QueueConsumerProvider(), R2.R2BucketBindingPolicyLive, R2.R2BucketProvider(), SecretsStore.SecretBindingPolicyLive, SecretsStore.SecretsStoreProvider(), SecretsStore.StoreSecretProvider(), Tunnel.TunnelProvider(), VpcService.VpcServiceProvider(), Workers.BindWorkerPolicyLive, Workers.FetchPolicyLive, Workers.WorkerProvider(), Workflows.WorkflowProvider())), Layer.provideMerge(Layer.mergeAll(Build.CommandProvider(), RandomProvider())), Layer.provideMerge(Credentials.fromAuthProvider()), Layer.provideMerge(CloudflareEnvironment.fromProfile()), Layer.provideMerge(CloudflareAuth), Layer.provideMerge(Access.AccessLive), Layer.provideMerge(ProfileLive), Layer.provideMerge(CredentialsStoreLive),
70
+ ])).pipe(Layer.provide(Layer.mergeAll(ApiToken.AccountApiTokenProvider(), ApiToken.UserApiTokenProvider(), AiGateway.AiGatewayProvider(), AiGateway.AiGatewayBindingPolicyLive, Artifacts.ArtifactsBindingPolicyLive, Containers.ContainerProvider(), D1.D1ConnectionPolicyLive, D1.DatabaseProvider(), Hyperdrive.HyperdriveBindingPolicyLive, Hyperdrive.HyperdriveProvider(), Images.ImagesBindingPolicyLive, KV.KVNamespaceBindingPolicyLive, KV.KVNamespaceProvider(), Queue.QueueBindingPolicyLive, Queue.QueueEventSourcePolicyLive, Queue.QueueProvider(), Queue.QueueConsumerProvider(), R2.R2BucketBindingPolicyLive, R2.R2BucketProvider(), SecretsStore.SecretBindingPolicyLive, SecretsStore.SecretsStoreProvider(), SecretsStore.StoreSecretProvider(), Tunnel.TunnelProvider(), VpcService.VpcServiceProvider(), Workers.BindWorkerPolicyLive, Workers.FetchPolicyLive, Workers.WorkerProvider(), Workflows.WorkflowProvider())), Layer.provideMerge(Layer.mergeAll(Build.CommandProvider(), RandomProvider())), Layer.provideMerge(Credentials.fromAuthProvider()), Layer.provideMerge(CloudflareEnvironment.fromProfile()), Layer.provideMerge(CloudflareAuth), Layer.provideMerge(Access.AccessLive), Layer.provideMerge(ProfileLive), Layer.provideMerge(CredentialsStoreLive),
69
71
  // Apply a blanket retry policy to every Cloudflare API call. Extends
70
72
  // `Retry.makeDefault`'s transient detection (throttling / 5xx /
71
73
  // network) with one Cloudflare-specific misleadingly-tagged
@@ -1 +1 @@
1
- {"version":3,"file":"Providers.js","sourceRoot":"","sources":["../../src/Cloudflare/Providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACpD,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAC;AAClC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAC3C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAEtE,MAAM,OAAO,SAAU,SAAQ,QAAQ,CAAC,kBAAkB,EAAa,CACrE,YAAY,CACb;CAAG;AAIJ;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE,CAC5B,KAAK,CAAC,MAAM,CACV,SAAS,EACT,QAAQ,CAAC,UAAU,CAAC;IAClB,QAAQ,CAAC,eAAe;IACxB,QAAQ,CAAC,YAAY;IACrB,SAAS,CAAC,SAAS;IACnB,SAAS,CAAC,sBAAsB;IAChC,SAAS,CAAC,sBAAsB;IAChC,OAAO;IACP,UAAU,CAAC,SAAS;IACpB,EAAE,CAAC,kBAAkB;IACrB,EAAE,CAAC,UAAU;IACb,UAAU,CAAC,UAAU;IACrB,UAAU,CAAC,uBAAuB;IAClC,EAAE,CAAC,WAAW;IACd,EAAE,CAAC,wBAAwB;IAC3B,KAAK,CAAC,KAAK;IACX,KAAK,CAAC,kBAAkB;IACxB,KAAK,CAAC,aAAa;IACnB,KAAK,CAAC,sBAAsB;IAC5B,EAAE,CAAC,QAAQ;IACX,EAAE,CAAC,qBAAqB;IACxB,YAAY,CAAC,mBAAmB;IAChC,YAAY,CAAC,YAAY;IACzB,YAAY,CAAC,MAAM;IACnB,MAAM,CAAC,MAAM;IACb,UAAU,CAAC,UAAU;IACrB,MAAM;IACN,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IACd,SAAS,CAAC,gBAAgB;CAC3B,CAAC,CACH,CAAC,IAAI,CACJ,KAAK,CAAC,OAAO,CACX,KAAK,CAAC,QAAQ,CACZ,QAAQ,CAAC,uBAAuB,EAAE,EAClC,QAAQ,CAAC,oBAAoB,EAAE,EAC/B,SAAS,CAAC,iBAAiB,EAAE,EAC7B,SAAS,CAAC,0BAA0B,EACpC,SAAS,CAAC,0BAA0B,EACpC,UAAU,CAAC,iBAAiB,EAAE,EAC9B,EAAE,CAAC,sBAAsB,EACzB,EAAE,CAAC,gBAAgB,EAAE,EACrB,UAAU,CAAC,2BAA2B,EACtC,UAAU,CAAC,kBAAkB,EAAE,EAC/B,EAAE,CAAC,4BAA4B,EAC/B,EAAE,CAAC,mBAAmB,EAAE,EACxB,KAAK,CAAC,sBAAsB,EAC5B,KAAK,CAAC,0BAA0B,EAChC,KAAK,CAAC,aAAa,EAAE,EACrB,KAAK,CAAC,qBAAqB,EAAE,EAC7B,EAAE,CAAC,yBAAyB,EAC5B,EAAE,CAAC,gBAAgB,EAAE,EACrB,YAAY,CAAC,uBAAuB,EACpC,YAAY,CAAC,oBAAoB,EAAE,EACnC,YAAY,CAAC,mBAAmB,EAAE,EAClC,MAAM,CAAC,cAAc,EAAE,EACvB,UAAU,CAAC,kBAAkB,EAAE,EAC/B,OAAO,CAAC,oBAAoB,EAC5B,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,cAAc,EAAE,EACxB,SAAS,CAAC,gBAAgB,EAAE,CAC7B,CACF,EACD,KAAK,CAAC,YAAY,CAChB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,cAAc,EAAE,CAAC,CAC1D,EACD,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,EAClD,KAAK,CAAC,YAAY,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC,EACvD,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,EAClC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,EACrC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,EAC/B,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAAC;AACxC,qEAAqE;AACrE,gEAAgE;AAChE,4DAA4D;AAC5D,0DAA0D;AAC1D,mEAAmE;AACnE,gEAAgE;AAChE,SAAS;AACT,EAAE;AACF,2DAA2D;AAC3D,kEAAkE;AAClE,iEAAiE;AACjE,mEAAmE;AACnE,4BAA4B;AAC5B,EAAE;AACF,wBAAwB;AACxB,gEAAgE;AAChE,oDAAoD;AACpD,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC,EACtE,KAAK,CAAC,KAAK,CACZ,CAAC;AAEJ,MAAM,6BAA6B,GAAG,CAAC,KAAc,EAAW,EAAE;IAChE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,GAAG,GAAI,KAA4B,CAAC,IAAI,CAAC;IAC/C,MAAM,OAAO,GAAG,CAAE,KAA+B,CAAC,OAAO,IAAI,EAAE,CAAW,CAAC;IAC3E,qEAAqE;IACrE,mEAAmE;IACnE,mEAAmE;IACnE,mEAAmE;IACnE,8BAA8B;IAC9B,IAAI,GAAG,KAAK,WAAW,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACxE,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAkB,CAAC,SAAS,EAAE,EAAE;IAC1D,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC9C,OAAO;QACL,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,6BAA6B,CAAC,KAAK,CAAC;QAC1E,QAAQ,EAAE,IAAI,CACZ,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAC7C,QAAQ,CAAC,WAAW,CAClB,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,QAAQ;YACnC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACxC,4DAA4D;YAC5D,qBAAqB;YACrB,MAAM,YAAY,GACf,KAA4B,EAAE,IAAI,KAAK,iBAAiB,CAAC;YAC5D,IAAI,YAAY,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,EAAE,CAAC;gBACtD,OAAO,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC,CAAC,CACH,EACD,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EACjC,KAAK,CAAC,QAAQ,EACd,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAClC;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"Providers.js","sourceRoot":"","sources":["../../src/Cloudflare/Providers.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,59 @@ export type R2BucketCustomDomain = {
33
33
  */
34
34
  minTLS?: "1.0" | "1.1" | "1.2" | "1.3";
35
35
  };
36
+ export type R2BucketLifecycleCondition = {
37
+ type: "Age";
38
+ /**
39
+ * Maximum age of an object, in seconds, before the rule's action applies.
40
+ */
41
+ maxAge: number;
42
+ } | {
43
+ type: "Date";
44
+ /**
45
+ * Absolute date (ISO 8601) at which the rule's action applies.
46
+ */
47
+ date: string;
48
+ };
49
+ export type R2BucketLifecycleRule = {
50
+ /**
51
+ * Unique identifier for the rule within the bucket.
52
+ */
53
+ id: string;
54
+ /**
55
+ * Whether the rule is enabled.
56
+ * @default true
57
+ */
58
+ enabled?: boolean;
59
+ /**
60
+ * Object key prefix the rule applies to. Use `""` (or omit) to match all
61
+ * objects in the bucket.
62
+ * @default ""
63
+ */
64
+ prefix?: string;
65
+ /**
66
+ * Abort incomplete multipart uploads after the configured age.
67
+ */
68
+ abortMultipartUploadsTransition?: {
69
+ condition?: {
70
+ type: "Age";
71
+ maxAge: number;
72
+ };
73
+ };
74
+ /**
75
+ * Delete matching objects after the configured age or on a specific date.
76
+ */
77
+ deleteObjectsTransition?: {
78
+ condition?: R2BucketLifecycleCondition;
79
+ };
80
+ /**
81
+ * Transition matching objects to a different storage class. Cloudflare R2
82
+ * only supports transitioning to `InfrequentAccess` today.
83
+ */
84
+ storageClassTransitions?: {
85
+ condition: R2BucketLifecycleCondition;
86
+ storageClass: "InfrequentAccess";
87
+ }[];
88
+ };
36
89
  export type R2BucketProps = {
37
90
  /**
38
91
  * Name of the bucket. If omitted, a unique name will be generated.
@@ -58,6 +111,12 @@ export type R2BucketProps = {
58
111
  * to remove all custom domains.
59
112
  */
60
113
  domains?: R2BucketCustomDomain[];
114
+ /**
115
+ * Object lifecycle rules applied to the bucket. Pass an empty array (or
116
+ * omit) to clear all lifecycle rules. See the Cloudflare R2 docs for
117
+ * supported transitions.
118
+ */
119
+ lifecycleRules?: R2BucketLifecycleRule[];
61
120
  };
62
121
  export type R2Bucket = Resource<"Cloudflare.R2Bucket", R2BucketProps, {
63
122
  bucketName: R2BucketName;
@@ -66,6 +125,7 @@ export type R2Bucket = Resource<"Cloudflare.R2Bucket", R2BucketProps, {
66
125
  location: R2Bucket.Location | undefined;
67
126
  accountId: string;
68
127
  domains: R2Bucket.CustomDomain[];
128
+ lifecycleRules: R2Bucket.LifecycleRule[];
69
129
  }, never, Cloudflare.Providers>;
70
130
  /**
71
131
  * A Cloudflare R2 object storage bucket with S3-compatible API.
@@ -158,6 +218,63 @@ export type R2Bucket = Resource<"Cloudflare.R2Bucket", R2BucketProps, {
158
218
  * ],
159
219
  * });
160
220
  * ```
221
+ *
222
+ * @section Object Lifecycle Rules
223
+ *
224
+ * Configure lifecycle rules to automatically delete objects, abort
225
+ * incomplete multipart uploads, or transition objects to InfrequentAccess
226
+ * storage. Pass an empty array (or omit) to clear all rules. See the
227
+ * [Cloudflare R2 docs](https://developers.cloudflare.com/r2/buckets/object-lifecycles/)
228
+ * for details and limits (max 1000 rules per bucket).
229
+ *
230
+ * @example Delete objects 30 days after upload
231
+ * ```typescript
232
+ * const bucket = yield* Cloudflare.R2Bucket("MyBucket", {
233
+ * lifecycleRules: [
234
+ * {
235
+ * id: "expire-old-objects",
236
+ * deleteObjectsTransition: {
237
+ * condition: { type: "Age", maxAge: 60 * 60 * 24 * 30 },
238
+ * },
239
+ * },
240
+ * ],
241
+ * });
242
+ * ```
243
+ *
244
+ * @example Transition to InfrequentAccess after 60 days, delete after 365
245
+ * ```typescript
246
+ * const bucket = yield* Cloudflare.R2Bucket("MyBucket", {
247
+ * lifecycleRules: [
248
+ * {
249
+ * id: "archive-then-delete",
250
+ * prefix: "logs/",
251
+ * storageClassTransitions: [
252
+ * {
253
+ * condition: { type: "Age", maxAge: 60 * 60 * 24 * 60 },
254
+ * storageClass: "InfrequentAccess",
255
+ * },
256
+ * ],
257
+ * deleteObjectsTransition: {
258
+ * condition: { type: "Age", maxAge: 60 * 60 * 24 * 365 },
259
+ * },
260
+ * },
261
+ * ],
262
+ * });
263
+ * ```
264
+ *
265
+ * @example Abort incomplete multipart uploads after 7 days
266
+ * ```typescript
267
+ * const bucket = yield* Cloudflare.R2Bucket("MyBucket", {
268
+ * lifecycleRules: [
269
+ * {
270
+ * id: "abort-stale-uploads",
271
+ * abortMultipartUploadsTransition: {
272
+ * condition: { type: "Age", maxAge: 60 * 60 * 24 * 7 },
273
+ * },
274
+ * },
275
+ * ],
276
+ * });
277
+ * ```
161
278
  */
162
279
  export declare const R2Bucket: import("../../Resource.ts").ResourceClassWithMethods<R2Bucket, {
163
280
  readonly bind: (<Req = never>(args_0: R2Bucket | Effect.Effect<R2Bucket, never, Req>) => Effect.Effect<import("./R2BucketBinding.ts").R2BucketClient, never, R2BucketBinding | Req>) & ((bucket: R2Bucket) => Effect.Effect<any, any, any>);
@@ -166,6 +283,24 @@ export declare namespace R2Bucket {
166
283
  type StorageClass = "Standard" | "InfrequentAccess";
167
284
  type Jurisdiction = "default" | "eu" | "fedramp";
168
285
  type Location = "apac" | "eeur" | "enam" | "weur" | "wnam" | "oc";
286
+ type LifecycleRule = {
287
+ id: string;
288
+ enabled: boolean;
289
+ prefix: string;
290
+ abortMultipartUploadsTransition: {
291
+ condition: {
292
+ type: "Age";
293
+ maxAge: number;
294
+ } | undefined;
295
+ } | undefined;
296
+ deleteObjectsTransition: {
297
+ condition: R2BucketLifecycleCondition | undefined;
298
+ } | undefined;
299
+ storageClassTransitions: {
300
+ condition: R2BucketLifecycleCondition;
301
+ storageClass: "InfrequentAccess";
302
+ }[] | undefined;
303
+ };
169
304
  type CustomDomain = {
170
305
  domain: string;
171
306
  zoneId: string | undefined;