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.
- package/bin/exec.js +27 -0
- package/bin/exec.js.map +1 -1
- package/lib/Cli/main.d.ts.map +1 -1
- package/lib/Cli/main.js +2 -0
- package/lib/Cli/main.js.map +1 -1
- package/lib/Cloudflare/Images/Images.d.ts +103 -0
- package/lib/Cloudflare/Images/Images.d.ts.map +1 -0
- package/lib/Cloudflare/Images/Images.js +82 -0
- package/lib/Cloudflare/Images/Images.js.map +1 -0
- package/lib/Cloudflare/Images/ImagesBinding.d.ts +73 -0
- package/lib/Cloudflare/Images/ImagesBinding.d.ts.map +1 -0
- package/lib/Cloudflare/Images/ImagesBinding.js +83 -0
- package/lib/Cloudflare/Images/ImagesBinding.js.map +1 -0
- package/lib/Cloudflare/Images/index.d.ts +3 -0
- package/lib/Cloudflare/Images/index.d.ts.map +1 -0
- package/lib/Cloudflare/Images/index.js +3 -0
- package/lib/Cloudflare/Images/index.js.map +1 -0
- package/lib/Cloudflare/Providers.d.ts.map +1 -1
- package/lib/Cloudflare/Providers.js +3 -1
- package/lib/Cloudflare/Providers.js.map +1 -1
- package/lib/Cloudflare/R2/R2Bucket.d.ts +135 -0
- package/lib/Cloudflare/R2/R2Bucket.d.ts.map +1 -1
- package/lib/Cloudflare/R2/R2Bucket.js +130 -7
- package/lib/Cloudflare/R2/R2Bucket.js.map +1 -1
- package/lib/Cloudflare/Workers/InferEnv.d.ts +1 -1
- package/lib/Cloudflare/Workers/InferEnv.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Worker.d.ts +5 -5
- package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Worker.js +34 -23
- package/lib/Cloudflare/Workers/Worker.js.map +1 -1
- package/lib/Cloudflare/index.d.ts +1 -0
- package/lib/Cloudflare/index.d.ts.map +1 -1
- package/lib/Cloudflare/index.js +1 -0
- package/lib/Cloudflare/index.js.map +1 -1
- package/lib/Test/Vitest.d.ts.map +1 -1
- package/lib/Test/Vitest.js +2 -0
- package/lib/Test/Vitest.js.map +1 -1
- package/lib/Util/LocalhostDns.d.ts +19 -0
- package/lib/Util/LocalhostDns.d.ts.map +1 -0
- package/lib/Util/LocalhostDns.js +55 -0
- package/lib/Util/LocalhostDns.js.map +1 -0
- package/lib/Util/PlatformServices.d.ts.map +1 -1
- package/lib/Util/PlatformServices.js +2 -0
- package/lib/Util/PlatformServices.js.map +1 -1
- package/lib/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +2 -1
- package/src/Cli/main.ts +3 -0
- package/src/Cloudflare/Images/Images.ts +121 -0
- package/src/Cloudflare/Images/ImagesBinding.ts +192 -0
- package/src/Cloudflare/Images/index.ts +2 -0
- package/src/Cloudflare/Providers.ts +3 -0
- package/src/Cloudflare/R2/R2Bucket.ts +240 -7
- package/src/Cloudflare/Workers/InferEnv.ts +7 -3
- package/src/Cloudflare/Workers/Worker.ts +47 -28
- package/src/Cloudflare/index.ts +1 -0
- package/src/Test/Vitest.ts +3 -0
- package/src/Util/LocalhostDns.ts +58 -0
- package/src/Util/PlatformServices.ts +2 -0
package/lib/Cli/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/Cli/main.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,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";
|
package/lib/Cli/main.js.map
CHANGED
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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;
|
|
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":"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"}
|
|
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;
|