alchemy 2.0.0-beta.47 → 2.0.0-beta.49
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 +28 -5
- package/bin/exec.js.map +1 -1
- package/lib/AWS/Lambda/BucketEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/BucketEventSource.d.ts.map +1 -1
- package/lib/AWS/Lambda/EventBridgeEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/EventBridgeEventSource.d.ts.map +1 -1
- package/lib/AWS/Lambda/QueueEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/QueueEventSource.d.ts.map +1 -1
- package/lib/AWS/Lambda/StreamEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/StreamEventSource.d.ts.map +1 -1
- package/lib/AWS/Lambda/TableEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/TableEventSource.d.ts.map +1 -1
- package/lib/AWS/Lambda/TopicEventSource.d.ts +1 -1
- package/lib/AWS/Lambda/TopicEventSource.d.ts.map +1 -1
- package/lib/AdoptPolicy.js +1 -1
- package/lib/AdoptPolicy.js.map +1 -1
- package/lib/Binding.d.ts +5 -1
- package/lib/Binding.d.ts.map +1 -1
- package/lib/Binding.js.map +1 -1
- package/lib/Cli/commands/cloudflare.d.ts +4 -1
- package/lib/Cli/commands/cloudflare.d.ts.map +1 -1
- package/lib/Cli/commands/cloudflare.js +274 -1
- package/lib/Cli/commands/cloudflare.js.map +1 -1
- package/lib/Cloudflare/AiGateway/AiGateway.d.ts +1 -1
- package/lib/Cloudflare/AiGateway/AiGateway.d.ts.map +1 -1
- package/lib/Cloudflare/AiGateway/AiGateway.js +2 -1
- package/lib/Cloudflare/AiGateway/AiGateway.js.map +1 -1
- package/lib/Cloudflare/ApiToken/AccountApiToken.d.ts +40 -2
- package/lib/Cloudflare/ApiToken/AccountApiToken.d.ts.map +1 -1
- package/lib/Cloudflare/ApiToken/AccountApiToken.js +49 -6
- package/lib/Cloudflare/ApiToken/AccountApiToken.js.map +1 -1
- package/lib/Cloudflare/ApiToken/Common.d.ts +36 -4
- package/lib/Cloudflare/ApiToken/Common.d.ts.map +1 -1
- package/lib/Cloudflare/ApiToken/Common.js +8 -0
- package/lib/Cloudflare/ApiToken/Common.js.map +1 -1
- package/lib/Cloudflare/ApiToken/UserApiToken.d.ts +38 -2
- package/lib/Cloudflare/ApiToken/UserApiToken.d.ts.map +1 -1
- package/lib/Cloudflare/ApiToken/UserApiToken.js +47 -6
- package/lib/Cloudflare/ApiToken/UserApiToken.js.map +1 -1
- package/lib/Cloudflare/Browser/Browser.d.ts +121 -0
- package/lib/Cloudflare/Browser/Browser.d.ts.map +1 -0
- package/lib/Cloudflare/{BrowserRendering/BrowserRendering.js → Browser/Browser.js} +19 -26
- package/lib/Cloudflare/Browser/Browser.js.map +1 -0
- package/lib/Cloudflare/Browser/BrowserBinding.d.ts +55 -0
- package/lib/Cloudflare/Browser/BrowserBinding.d.ts.map +1 -0
- package/lib/Cloudflare/{BrowserRendering/BrowserRenderingBinding.js → Browser/BrowserBinding.js} +11 -11
- package/lib/Cloudflare/Browser/BrowserBinding.js.map +1 -0
- package/lib/Cloudflare/Browser/index.d.ts +3 -0
- package/lib/Cloudflare/Browser/index.d.ts.map +1 -0
- package/lib/Cloudflare/Browser/index.js +3 -0
- package/lib/Cloudflare/Browser/index.js.map +1 -0
- package/lib/Cloudflare/Container/ContainerBinding.d.ts +2 -1
- package/lib/Cloudflare/Container/ContainerBinding.d.ts.map +1 -1
- package/lib/Cloudflare/D1/D1Database.d.ts.map +1 -1
- package/lib/Cloudflare/D1/D1Database.js +2 -1
- package/lib/Cloudflare/D1/D1Database.js.map +1 -1
- package/lib/Cloudflare/Dns/DnsBinding.d.ts +52 -0
- package/lib/Cloudflare/Dns/DnsBinding.d.ts.map +1 -0
- package/lib/Cloudflare/Dns/DnsBinding.js +59 -0
- package/lib/Cloudflare/Dns/DnsBinding.js.map +1 -0
- package/lib/Cloudflare/Dns/DnsRead.d.ts +80 -0
- package/lib/Cloudflare/Dns/DnsRead.d.ts.map +1 -0
- package/lib/Cloudflare/Dns/DnsRead.js +70 -0
- package/lib/Cloudflare/Dns/DnsRead.js.map +1 -0
- package/lib/Cloudflare/Dns/DnsReadWrite.d.ts +79 -0
- package/lib/Cloudflare/Dns/DnsReadWrite.d.ts.map +1 -0
- package/lib/Cloudflare/Dns/DnsReadWrite.js +72 -0
- package/lib/Cloudflare/Dns/DnsReadWrite.js.map +1 -0
- package/lib/Cloudflare/Dns/DnsWrite.d.ts +113 -0
- package/lib/Cloudflare/Dns/DnsWrite.d.ts.map +1 -0
- package/lib/Cloudflare/Dns/DnsWrite.js +100 -0
- package/lib/Cloudflare/Dns/DnsWrite.js.map +1 -0
- package/lib/Cloudflare/Dns/index.d.ts +5 -0
- package/lib/Cloudflare/Dns/index.d.ts.map +1 -0
- package/lib/Cloudflare/Dns/index.js +5 -0
- package/lib/Cloudflare/Dns/index.js.map +1 -0
- package/lib/Cloudflare/Email/EmailRouting.d.ts +1 -1
- package/lib/Cloudflare/Email/EmailRouting.d.ts.map +1 -1
- package/lib/Cloudflare/Email/EmailRouting.js +1 -1
- package/lib/Cloudflare/Email/EmailRouting.js.map +1 -1
- package/lib/Cloudflare/Email/EmailRule.d.ts +1 -1
- package/lib/Cloudflare/Email/EmailRule.d.ts.map +1 -1
- package/lib/Cloudflare/Email/EmailRule.js +1 -1
- package/lib/Cloudflare/Email/EmailRule.js.map +1 -1
- package/lib/Cloudflare/Hyperdrive/Hyperdrive.d.ts +1 -1
- package/lib/Cloudflare/Images/Images.d.ts +32 -23
- package/lib/Cloudflare/Images/Images.d.ts.map +1 -1
- package/lib/Cloudflare/Images/Images.js +10 -13
- package/lib/Cloudflare/Images/Images.js.map +1 -1
- package/lib/Cloudflare/KV/KVNamespace.d.ts +1 -1
- package/lib/Cloudflare/Providers.d.ts.map +1 -1
- package/lib/Cloudflare/Providers.js +14 -3
- package/lib/Cloudflare/Providers.js.map +1 -1
- package/lib/Cloudflare/Queue/Queue.d.ts +1 -1
- package/lib/Cloudflare/R2/R2Bucket.d.ts +2 -2
- package/lib/Cloudflare/R2/R2Bucket.d.ts.map +1 -1
- package/lib/Cloudflare/R2/R2Bucket.js +13 -7
- package/lib/Cloudflare/R2/R2Bucket.js.map +1 -1
- package/lib/Cloudflare/RateLimit/RateLimit.d.ts +132 -0
- package/lib/Cloudflare/RateLimit/RateLimit.d.ts.map +1 -0
- package/lib/Cloudflare/RateLimit/RateLimit.js +80 -0
- package/lib/Cloudflare/RateLimit/RateLimit.js.map +1 -0
- package/lib/Cloudflare/RateLimit/RateLimitBinding.d.ts +30 -0
- package/lib/Cloudflare/RateLimit/RateLimitBinding.d.ts.map +1 -0
- package/lib/Cloudflare/RateLimit/RateLimitBinding.js +50 -0
- package/lib/Cloudflare/RateLimit/RateLimitBinding.js.map +1 -0
- package/lib/Cloudflare/RateLimit/index.d.ts +3 -0
- package/lib/Cloudflare/RateLimit/index.d.ts.map +1 -0
- package/lib/Cloudflare/RateLimit/index.js +3 -0
- package/lib/Cloudflare/RateLimit/index.js.map +1 -0
- package/lib/Cloudflare/SecretsStore/Secret.d.ts +3 -2
- package/lib/Cloudflare/SecretsStore/Secret.d.ts.map +1 -1
- package/lib/Cloudflare/SecretsStore/Secret.js +7 -4
- package/lib/Cloudflare/SecretsStore/Secret.js.map +1 -1
- package/lib/Cloudflare/StateStore/Api.d.ts +1 -1
- package/lib/Cloudflare/Tunnel/Tunnel.d.ts +27 -0
- package/lib/Cloudflare/Tunnel/Tunnel.d.ts.map +1 -1
- package/lib/Cloudflare/Tunnel/Tunnel.js +27 -0
- package/lib/Cloudflare/Tunnel/Tunnel.js.map +1 -1
- package/lib/Cloudflare/Tunnel/TunnelBinding.d.ts +48 -0
- package/lib/Cloudflare/Tunnel/TunnelBinding.d.ts.map +1 -0
- package/lib/Cloudflare/Tunnel/TunnelBinding.js +56 -0
- package/lib/Cloudflare/Tunnel/TunnelBinding.js.map +1 -0
- package/lib/Cloudflare/Tunnel/TunnelRead.d.ts +83 -0
- package/lib/Cloudflare/Tunnel/TunnelRead.d.ts.map +1 -0
- package/lib/Cloudflare/Tunnel/TunnelRead.js +79 -0
- package/lib/Cloudflare/Tunnel/TunnelRead.js.map +1 -0
- package/lib/Cloudflare/Tunnel/TunnelReadWrite.d.ts +70 -0
- package/lib/Cloudflare/Tunnel/TunnelReadWrite.d.ts.map +1 -0
- package/lib/Cloudflare/Tunnel/TunnelReadWrite.js +63 -0
- package/lib/Cloudflare/Tunnel/TunnelReadWrite.js.map +1 -0
- package/lib/Cloudflare/Tunnel/TunnelWrite.d.ts +92 -0
- package/lib/Cloudflare/Tunnel/TunnelWrite.d.ts.map +1 -0
- package/lib/Cloudflare/Tunnel/TunnelWrite.js +88 -0
- package/lib/Cloudflare/Tunnel/TunnelWrite.js.map +1 -0
- package/lib/Cloudflare/Tunnel/index.d.ts +4 -0
- package/lib/Cloudflare/Tunnel/index.d.ts.map +1 -1
- package/lib/Cloudflare/Tunnel/index.js +4 -0
- package/lib/Cloudflare/Tunnel/index.js.map +1 -1
- package/lib/Cloudflare/Vectorize/VectorizeIndex.d.ts +1 -1
- package/lib/Cloudflare/Vectorize/VectorizeIndex.js +1 -0
- package/lib/Cloudflare/Vectorize/VectorizeIndex.js.map +1 -1
- package/lib/Cloudflare/VpcService/VpcService.d.ts +1 -1
- package/lib/Cloudflare/VpcService/VpcService.d.ts.map +1 -1
- package/lib/Cloudflare/VpcService/VpcService.js.map +1 -1
- package/lib/Cloudflare/Workers/DynamicWorkerLoader.d.ts +119 -11
- package/lib/Cloudflare/Workers/DynamicWorkerLoader.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/DynamicWorkerLoader.js +88 -9
- package/lib/Cloudflare/Workers/DynamicWorkerLoader.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/LocalWorkerProvider.js +2 -0
- package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.js +18 -2
- package/lib/Cloudflare/Workers/WorkerAsyncBindings.js.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBinding.d.ts +7 -5
- package/lib/Cloudflare/Workers/WorkerBinding.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/WorkerBinding.js +1 -1
- package/lib/Cloudflare/Workers/WorkerBinding.js.map +1 -1
- package/lib/Cloudflare/Zaraz/ZarazConfig.d.ts +1 -1
- package/lib/Cloudflare/Zaraz/ZarazConfig.d.ts.map +1 -1
- package/lib/Cloudflare/Zaraz/ZarazConfig.js +1 -1
- package/lib/Cloudflare/Zaraz/ZarazConfig.js.map +1 -1
- package/lib/Cloudflare/Zone/Zone.d.ts +170 -0
- package/lib/Cloudflare/Zone/Zone.d.ts.map +1 -0
- package/lib/Cloudflare/Zone/Zone.js +180 -0
- package/lib/Cloudflare/Zone/Zone.js.map +1 -0
- package/lib/Cloudflare/Zone/index.d.ts +3 -0
- package/lib/Cloudflare/Zone/index.d.ts.map +1 -0
- package/lib/Cloudflare/Zone/index.js +3 -0
- package/lib/Cloudflare/Zone/index.js.map +1 -0
- package/lib/Cloudflare/Zone/lookup.d.ts +33 -0
- package/lib/Cloudflare/Zone/lookup.d.ts.map +1 -0
- package/lib/Cloudflare/{Zone.js → Zone/lookup.js} +2 -2
- package/lib/Cloudflare/Zone/lookup.js.map +1 -0
- package/lib/Cloudflare/index.d.ts +4 -1
- package/lib/Cloudflare/index.d.ts.map +1 -1
- package/lib/Cloudflare/index.js +4 -1
- package/lib/Cloudflare/index.js.map +1 -1
- package/lib/Output.d.ts +13 -1
- package/lib/Output.d.ts.map +1 -1
- package/lib/Output.js +43 -11
- package/lib/Output.js.map +1 -1
- package/lib/Plan.d.ts.map +1 -1
- package/lib/Plan.js +8 -0
- package/lib/Plan.js.map +1 -1
- package/lib/Platform.d.ts +5 -5
- package/lib/Platform.d.ts.map +1 -1
- package/lib/Platform.js +5 -2
- package/lib/Platform.js.map +1 -1
- package/lib/RemovalPolicy.js +2 -2
- package/lib/RemovalPolicy.js.map +1 -1
- package/lib/Resource.d.ts +15 -2
- package/lib/Resource.d.ts.map +1 -1
- package/lib/Resource.js +3 -2
- package/lib/Resource.js.map +1 -1
- package/lib/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/src/AdoptPolicy.ts +1 -1
- package/src/Binding.ts +5 -1
- package/src/Cli/commands/cloudflare.ts +394 -1
- package/src/Cloudflare/AiGateway/AiGateway.ts +2 -1
- package/src/Cloudflare/ApiToken/AccountApiToken.ts +60 -7
- package/src/Cloudflare/ApiToken/Common.ts +45 -6
- package/src/Cloudflare/ApiToken/UserApiToken.ts +58 -7
- package/src/Cloudflare/Browser/Browser.ts +140 -0
- package/src/Cloudflare/Browser/BrowserBinding.ts +128 -0
- package/src/Cloudflare/Browser/index.ts +11 -0
- package/src/Cloudflare/D1/D1Database.ts +6 -2
- package/src/Cloudflare/Dns/DnsBinding.ts +123 -0
- package/src/Cloudflare/Dns/DnsRead.ts +129 -0
- package/src/Cloudflare/Dns/DnsReadWrite.ts +99 -0
- package/src/Cloudflare/Dns/DnsWrite.ts +209 -0
- package/src/Cloudflare/Dns/index.ts +4 -0
- package/src/Cloudflare/Email/EmailRouting.ts +1 -1
- package/src/Cloudflare/Email/EmailRule.ts +6 -6
- package/src/Cloudflare/Images/Images.ts +40 -27
- package/src/Cloudflare/Providers.ts +22 -3
- package/src/Cloudflare/R2/R2Bucket.ts +17 -9
- package/src/Cloudflare/RateLimit/RateLimit.ts +160 -0
- package/src/Cloudflare/RateLimit/RateLimitBinding.ts +90 -0
- package/src/Cloudflare/RateLimit/index.ts +2 -0
- package/src/Cloudflare/SecretsStore/Secret.ts +12 -6
- package/src/Cloudflare/Tunnel/Tunnel.ts +27 -0
- package/src/Cloudflare/Tunnel/TunnelBinding.ts +114 -0
- package/src/Cloudflare/Tunnel/TunnelRead.ts +168 -0
- package/src/Cloudflare/Tunnel/TunnelReadWrite.ts +88 -0
- package/src/Cloudflare/Tunnel/TunnelWrite.ts +194 -0
- package/src/Cloudflare/Tunnel/index.ts +4 -0
- package/src/Cloudflare/Vectorize/VectorizeIndex.ts +2 -1
- package/src/Cloudflare/VpcService/VpcService.ts +4 -2
- package/src/Cloudflare/Workers/DynamicWorkerLoader.ts +139 -13
- package/src/Cloudflare/Workers/InferEnv.ts +19 -15
- package/src/Cloudflare/Workers/LocalWorkerProvider.ts +13 -2
- package/src/Cloudflare/Workers/WorkerAsyncBindings.ts +16 -2
- package/src/Cloudflare/Workers/WorkerBinding.ts +6 -2
- package/src/Cloudflare/Zaraz/ZarazConfig.ts +1 -1
- package/src/Cloudflare/Zone/Zone.ts +349 -0
- package/src/Cloudflare/Zone/index.ts +2 -0
- package/src/Cloudflare/{Zone.ts → Zone/lookup.ts} +16 -3
- package/src/Cloudflare/index.ts +4 -1
- package/src/Output.ts +67 -11
- package/src/Plan.ts +9 -0
- package/src/Platform.ts +19 -15
- package/src/RemovalPolicy.ts +2 -2
- package/src/Resource.ts +19 -2
- package/lib/Cloudflare/BrowserRendering/BrowserRendering.d.ts +0 -116
- package/lib/Cloudflare/BrowserRendering/BrowserRendering.d.ts.map +0 -1
- package/lib/Cloudflare/BrowserRendering/BrowserRendering.js.map +0 -1
- package/lib/Cloudflare/BrowserRendering/BrowserRenderingBinding.d.ts +0 -55
- package/lib/Cloudflare/BrowserRendering/BrowserRenderingBinding.d.ts.map +0 -1
- package/lib/Cloudflare/BrowserRendering/BrowserRenderingBinding.js.map +0 -1
- package/lib/Cloudflare/BrowserRendering/index.d.ts +0 -3
- package/lib/Cloudflare/BrowserRendering/index.d.ts.map +0 -1
- package/lib/Cloudflare/BrowserRendering/index.js +0 -3
- package/lib/Cloudflare/BrowserRendering/index.js.map +0 -1
- package/lib/Cloudflare/Zone.d.ts +0 -14
- package/lib/Cloudflare/Zone.d.ts.map +0 -1
- package/lib/Cloudflare/Zone.js.map +0 -1
- package/src/Cloudflare/BrowserRendering/BrowserRendering.ts +0 -132
- package/src/Cloudflare/BrowserRendering/BrowserRenderingBinding.ts +0 -137
- package/src/Cloudflare/BrowserRendering/index.ts +0 -11
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import type * as Effect from "effect/Effect";
|
|
2
|
+
import { SingleShotGen } from "effect/Utils";
|
|
3
|
+
import { RateLimitBinding, type RateLimitClient } from "./RateLimitBinding.ts";
|
|
4
|
+
type RateLimitTypeId = typeof RateLimitTypeId;
|
|
5
|
+
declare const RateLimitTypeId: "Cloudflare.RateLimit";
|
|
6
|
+
export type RateLimitPeriod = 10 | 60;
|
|
7
|
+
export type RateLimitProps = {
|
|
8
|
+
/**
|
|
9
|
+
* Binding name used when `RateLimit` is bound from inside a Worker init
|
|
10
|
+
* phase (`yield* Cloudflare.RateLimit(...)`). When passed through
|
|
11
|
+
* `Worker({ env: { ... } })`, the object key remains the binding name.
|
|
12
|
+
*
|
|
13
|
+
* @default "RATE_LIMIT"
|
|
14
|
+
*/
|
|
15
|
+
name?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Positive integer or string that uniquely identifies this rate limit
|
|
18
|
+
* configuration.
|
|
19
|
+
*/
|
|
20
|
+
namespaceId: number | string;
|
|
21
|
+
/**
|
|
22
|
+
* Simple rate limiting configuration.
|
|
23
|
+
*/
|
|
24
|
+
simple: {
|
|
25
|
+
/**
|
|
26
|
+
* The number of requests allowed within the period.
|
|
27
|
+
*/
|
|
28
|
+
limit: number;
|
|
29
|
+
/**
|
|
30
|
+
* The period, in seconds, over which requests are counted.
|
|
31
|
+
*/
|
|
32
|
+
period: RateLimitPeriod;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* The Effect yielded when a `RateLimit` is used inside a Worker init phase:
|
|
37
|
+
* it attaches the `ratelimit` binding to the surrounding Worker and resolves
|
|
38
|
+
* to the runtime {@link RateLimitClient}.
|
|
39
|
+
*/
|
|
40
|
+
type BindEffect = Effect.Effect<RateLimitClient, never, RateLimitBinding>;
|
|
41
|
+
/**
|
|
42
|
+
* A Cloudflare Rate Limit binding marker.
|
|
43
|
+
*
|
|
44
|
+
* It is a plain data structure (so it can be declared directly on a Worker's
|
|
45
|
+
* `env`) that is **also** yieldable inside an Effect-native Worker. Yielding it
|
|
46
|
+
* (`yield* Cloudflare.RateLimit(...)`) attaches the binding to the surrounding
|
|
47
|
+
* Worker and returns the runtime {@link RateLimitClient} — no separate
|
|
48
|
+
* `.bind(...)` step required.
|
|
49
|
+
*
|
|
50
|
+
* The divergence is achieved via `[Symbol.iterator]`: the object is not an
|
|
51
|
+
* `Effect` (so `InferEnv` resolves it to the native `cf.RateLimit` in the
|
|
52
|
+
* `env` position), but it is iterable as one when `yield*`-ed.
|
|
53
|
+
*/
|
|
54
|
+
export interface RateLimit {
|
|
55
|
+
kind: RateLimitTypeId;
|
|
56
|
+
name: string;
|
|
57
|
+
namespaceId: string;
|
|
58
|
+
simple: {
|
|
59
|
+
limit: number;
|
|
60
|
+
period: RateLimitPeriod;
|
|
61
|
+
};
|
|
62
|
+
asEffect(): BindEffect;
|
|
63
|
+
[Symbol.iterator](): SingleShotGen<BindEffect, RateLimitClient>;
|
|
64
|
+
}
|
|
65
|
+
export declare const isRateLimit: (value: unknown) => value is RateLimit;
|
|
66
|
+
/**
|
|
67
|
+
* A Cloudflare Rate Limit binding for counting arbitrary keys inside Workers.
|
|
68
|
+
*
|
|
69
|
+
* Rate Limit bindings are configured directly on Workers and do not have a
|
|
70
|
+
* standalone provisioning API. The Worker provider sees this object in
|
|
71
|
+
* `env: { ... }` and emits the corresponding `{ type: "ratelimit" }` metadata
|
|
72
|
+
* binding to the script.
|
|
73
|
+
*
|
|
74
|
+
* @section Declaring on a Worker's env
|
|
75
|
+
* @example Async (non-Effect) Worker
|
|
76
|
+
* ```typescript
|
|
77
|
+
* export const Worker = Cloudflare.Worker("Worker", {
|
|
78
|
+
* main: "./src/worker.ts",
|
|
79
|
+
* env: {
|
|
80
|
+
* THROTTLE: Cloudflare.RateLimit({
|
|
81
|
+
* namespaceId: 1001,
|
|
82
|
+
* simple: { limit: 10, period: 60 },
|
|
83
|
+
* }),
|
|
84
|
+
* },
|
|
85
|
+
* });
|
|
86
|
+
*
|
|
87
|
+
* export type WorkerEnv = Cloudflare.InferEnv<typeof Worker>;
|
|
88
|
+
* // { THROTTLE: RateLimit } — the native Cloudflare binding
|
|
89
|
+
*
|
|
90
|
+
* // worker.ts
|
|
91
|
+
* export default {
|
|
92
|
+
* fetch: async (req: Request, env: WorkerEnv) => {
|
|
93
|
+
* const { success } = await env.THROTTLE.limit({ key: "ip" });
|
|
94
|
+
* return new Response(success ? "ok" : "rate limited");
|
|
95
|
+
* },
|
|
96
|
+
* };
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* @section Binding inside an Effect-native Worker
|
|
100
|
+
* @example yield* RateLimit does the binding
|
|
101
|
+
* ```typescript
|
|
102
|
+
* Cloudflare.Worker("Worker", { main: "./src/worker.ts" },
|
|
103
|
+
* Effect.gen(function* () {
|
|
104
|
+
* // Attaches the binding to this Worker AND returns the runtime client.
|
|
105
|
+
* const throttle = yield* Cloudflare.RateLimit({
|
|
106
|
+
* namespaceId: 1001,
|
|
107
|
+
* simple: { limit: 10, period: 60 },
|
|
108
|
+
* });
|
|
109
|
+
*
|
|
110
|
+
* return {
|
|
111
|
+
* fetch: Effect.gen(function* () {
|
|
112
|
+
* const { success } = yield* throttle.limit({ key: "ip" });
|
|
113
|
+
* return HttpServerResponse.text(success ? "ok" : "rate limited");
|
|
114
|
+
* }),
|
|
115
|
+
* };
|
|
116
|
+
* }).pipe(Effect.provide(Cloudflare.RateLimitBindingLive)),
|
|
117
|
+
* );
|
|
118
|
+
* ```
|
|
119
|
+
*
|
|
120
|
+
* @see https://developers.cloudflare.com/workers/runtime-apis/bindings/rate-limit/
|
|
121
|
+
*/
|
|
122
|
+
export declare const RateLimit: {
|
|
123
|
+
(props: RateLimitProps): RateLimit;
|
|
124
|
+
/**
|
|
125
|
+
* Bind an existing `RateLimit` marker to the surrounding Worker, returning
|
|
126
|
+
* the runtime client. Equivalent to `yield* rateLimit` — prefer yielding the
|
|
127
|
+
* marker directly.
|
|
128
|
+
*/
|
|
129
|
+
bind: typeof RateLimitBinding.bind;
|
|
130
|
+
};
|
|
131
|
+
export {};
|
|
132
|
+
//# sourceMappingURL=RateLimit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RateLimit.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/RateLimit/RateLimit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,KAAK,eAAe,GAAG,OAAO,eAAe,CAAC;AAC9C,QAAA,MAAM,eAAe,EAAG,sBAA+B,CAAC;AAExD,MAAM,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,CAAC;AAEtC,MAAM,MAAM,cAAc,GAAG;IAC3B;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B;;OAEG;IACH,MAAM,EAAE;QACN;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QACd;;WAEG;QACH,MAAM,EAAE,eAAe,CAAC;KACzB,CAAC;CACH,CAAC;AAEF;;;;GAIG;AACH,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAE1E;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,eAAe,CAAC;KACzB,CAAC;IACF,QAAQ,IAAI,UAAU,CAAC;IACvB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;CACjE;AAED,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,SAIP,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,eAAO,MAAM,SAAS,EAAE;IACtB,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,CAAC;IACnC;;;;OAIG;IACH,IAAI,EAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC;CAoBpC,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { SingleShotGen } from "effect/Utils";
|
|
2
|
+
import { RateLimitBinding } from "./RateLimitBinding.js";
|
|
3
|
+
const RateLimitTypeId = "Cloudflare.RateLimit";
|
|
4
|
+
export const isRateLimit = (value) => typeof value === "object" &&
|
|
5
|
+
value !== null &&
|
|
6
|
+
"kind" in value &&
|
|
7
|
+
value.kind === RateLimitTypeId;
|
|
8
|
+
/**
|
|
9
|
+
* A Cloudflare Rate Limit binding for counting arbitrary keys inside Workers.
|
|
10
|
+
*
|
|
11
|
+
* Rate Limit bindings are configured directly on Workers and do not have a
|
|
12
|
+
* standalone provisioning API. The Worker provider sees this object in
|
|
13
|
+
* `env: { ... }` and emits the corresponding `{ type: "ratelimit" }` metadata
|
|
14
|
+
* binding to the script.
|
|
15
|
+
*
|
|
16
|
+
* @section Declaring on a Worker's env
|
|
17
|
+
* @example Async (non-Effect) Worker
|
|
18
|
+
* ```typescript
|
|
19
|
+
* export const Worker = Cloudflare.Worker("Worker", {
|
|
20
|
+
* main: "./src/worker.ts",
|
|
21
|
+
* env: {
|
|
22
|
+
* THROTTLE: Cloudflare.RateLimit({
|
|
23
|
+
* namespaceId: 1001,
|
|
24
|
+
* simple: { limit: 10, period: 60 },
|
|
25
|
+
* }),
|
|
26
|
+
* },
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* export type WorkerEnv = Cloudflare.InferEnv<typeof Worker>;
|
|
30
|
+
* // { THROTTLE: RateLimit } — the native Cloudflare binding
|
|
31
|
+
*
|
|
32
|
+
* // worker.ts
|
|
33
|
+
* export default {
|
|
34
|
+
* fetch: async (req: Request, env: WorkerEnv) => {
|
|
35
|
+
* const { success } = await env.THROTTLE.limit({ key: "ip" });
|
|
36
|
+
* return new Response(success ? "ok" : "rate limited");
|
|
37
|
+
* },
|
|
38
|
+
* };
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @section Binding inside an Effect-native Worker
|
|
42
|
+
* @example yield* RateLimit does the binding
|
|
43
|
+
* ```typescript
|
|
44
|
+
* Cloudflare.Worker("Worker", { main: "./src/worker.ts" },
|
|
45
|
+
* Effect.gen(function* () {
|
|
46
|
+
* // Attaches the binding to this Worker AND returns the runtime client.
|
|
47
|
+
* const throttle = yield* Cloudflare.RateLimit({
|
|
48
|
+
* namespaceId: 1001,
|
|
49
|
+
* simple: { limit: 10, period: 60 },
|
|
50
|
+
* });
|
|
51
|
+
*
|
|
52
|
+
* return {
|
|
53
|
+
* fetch: Effect.gen(function* () {
|
|
54
|
+
* const { success } = yield* throttle.limit({ key: "ip" });
|
|
55
|
+
* return HttpServerResponse.text(success ? "ok" : "rate limited");
|
|
56
|
+
* }),
|
|
57
|
+
* };
|
|
58
|
+
* }).pipe(Effect.provide(Cloudflare.RateLimitBindingLive)),
|
|
59
|
+
* );
|
|
60
|
+
* ```
|
|
61
|
+
*
|
|
62
|
+
* @see https://developers.cloudflare.com/workers/runtime-apis/bindings/rate-limit/
|
|
63
|
+
*/
|
|
64
|
+
export const RateLimit = Object.assign((props) => {
|
|
65
|
+
const self = {
|
|
66
|
+
kind: RateLimitTypeId,
|
|
67
|
+
name: props.name ?? "RATE_LIMIT",
|
|
68
|
+
namespaceId: String(props.namespaceId),
|
|
69
|
+
simple: {
|
|
70
|
+
limit: props.simple.limit,
|
|
71
|
+
period: props.simple.period,
|
|
72
|
+
},
|
|
73
|
+
asEffect: () => RateLimitBinding.bind(self),
|
|
74
|
+
[Symbol.iterator]: () => new SingleShotGen(RateLimitBinding.bind(self)),
|
|
75
|
+
};
|
|
76
|
+
return self;
|
|
77
|
+
}, {
|
|
78
|
+
bind: (...args) => RateLimitBinding.bind(...args),
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=RateLimit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RateLimit.js","sourceRoot":"","sources":["../../../src/Cloudflare/RateLimit/RateLimit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAwB,MAAM,uBAAuB,CAAC;AAG/E,MAAM,eAAe,GAAG,sBAA+B,CAAC;AAiExD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAc,EAAsB,EAAE,CAChE,OAAO,KAAK,KAAK,QAAQ;IACzB,KAAK,KAAK,IAAI;IACd,MAAM,IAAI,KAAK;IACd,KAAmB,CAAC,IAAI,KAAK,eAAe,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,MAAM,CAAC,MAAM,SAAS,GAQlB,MAAM,CAAC,MAAM,CACf,CAAC,KAAqB,EAAa,EAAE;IACnC,MAAM,IAAI,GAAc;QACtB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,YAAY;QAChC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;QACtC,MAAM,EAAE;YACN,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK;YACzB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;SAC5B;QACD,QAAQ,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3C,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACxE,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC,EACD;IACE,IAAI,EAAE,CAAC,GAAG,IAA8C,EAAE,EAAE,CAC1D,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACjC,CACF,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
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 Binding from "../../Binding.ts";
|
|
5
|
+
import { WorkerEnvironment } from "../Workers/Worker.ts";
|
|
6
|
+
import { type RateLimit as RateLimitLike } from "./RateLimit.ts";
|
|
7
|
+
declare const RateLimitError_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 & {
|
|
8
|
+
readonly _tag: "RateLimitError";
|
|
9
|
+
} & Readonly<A>;
|
|
10
|
+
export declare class RateLimitError extends RateLimitError_base<{
|
|
11
|
+
message: string;
|
|
12
|
+
cause: unknown;
|
|
13
|
+
}> {
|
|
14
|
+
}
|
|
15
|
+
export interface RateLimitClient {
|
|
16
|
+
raw: Effect.Effect<cf.RateLimit, never, WorkerEnvironment>;
|
|
17
|
+
limit(options: Parameters<cf.RateLimit["limit"]>[0]): Effect.Effect<Awaited<ReturnType<cf.RateLimit["limit"]>>, RateLimitError, WorkerEnvironment>;
|
|
18
|
+
}
|
|
19
|
+
declare const RateLimitBinding_base: Binding.Service<RateLimitBinding, "Cloudflare.RateLimit.Binding", (rateLimit: RateLimitLike) => Effect.Effect<RateLimitClient>> & {
|
|
20
|
+
bind: (rateLimit: RateLimitLike) => Effect.Effect<any, any, any>;
|
|
21
|
+
};
|
|
22
|
+
export declare class RateLimitBinding extends RateLimitBinding_base {
|
|
23
|
+
}
|
|
24
|
+
export declare const RateLimitBindingLive: Layer.Layer<RateLimitBinding, never, RateLimitBindingPolicy>;
|
|
25
|
+
declare const RateLimitBindingPolicy_base: Binding.Policy<RateLimitBindingPolicy, "Policy<Cloudflare.RateLimit.Binding>", (rateLimit: RateLimitLike) => Effect.Effect<void>>;
|
|
26
|
+
export declare class RateLimitBindingPolicy extends RateLimitBindingPolicy_base {
|
|
27
|
+
}
|
|
28
|
+
export declare const RateLimitBindingPolicyLive: Layer.Layer<RateLimitBindingPolicy, never, never>;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=RateLimitBinding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RateLimitBinding.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/RateLimit/RateLimitBinding.ts"],"names":[],"mappings":"AAEA,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,EAAE,KAAK,SAAS,IAAI,aAAa,EAAE,MAAM,gBAAgB,CAAC;;;;AAEjE,qBAAa,cAAe,SAAQ,oBAAmC;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;CAAG;AAEL,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAC3D,KAAK,CACH,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAC5C,MAAM,CAAC,MAAM,CACd,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAC1C,cAAc,EACd,iBAAiB,CAClB,CAAC;CACH;mHAIa,aAAa,KAAK,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;;;AAF9D,qBAAa,gBAAiB,SAAQ,qBAGH;CAAG;AAEtC,eAAO,MAAM,oBAAoB,8DA+BhC,CAAC;sIAIY,aAAa,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAFnD,qBAAa,sBAAuB,SAAQ,2BAGT;CAAG;AAEtC,eAAO,MAAM,0BAA0B,mDAmBtC,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/// <reference types="@cloudflare/workers-types" />
|
|
2
|
+
import * as Data from "effect/Data";
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
import * as Layer from "effect/Layer";
|
|
5
|
+
import * as Binding from "../../Binding.js";
|
|
6
|
+
import { isWorker, WorkerEnvironment } from "../Workers/Worker.js";
|
|
7
|
+
import {} from "./RateLimit.js";
|
|
8
|
+
export class RateLimitError extends Data.TaggedError("RateLimitError") {
|
|
9
|
+
}
|
|
10
|
+
export class RateLimitBinding extends Binding.Service()("Cloudflare.RateLimit.Binding") {
|
|
11
|
+
}
|
|
12
|
+
export const RateLimitBindingLive = Layer.effect(RateLimitBinding, Effect.gen(function* () {
|
|
13
|
+
const Policy = yield* RateLimitBindingPolicy;
|
|
14
|
+
return Effect.fn(function* (rateLimit) {
|
|
15
|
+
yield* Policy(rateLimit);
|
|
16
|
+
const raw = WorkerEnvironment.useSync((env) => env[rateLimit.name]);
|
|
17
|
+
return {
|
|
18
|
+
raw,
|
|
19
|
+
limit: (options) => raw.pipe(Effect.flatMap((binding) => Effect.tryPromise({
|
|
20
|
+
try: () => binding.limit(options),
|
|
21
|
+
catch: (error) => new RateLimitError({
|
|
22
|
+
message: error instanceof Error
|
|
23
|
+
? error.message
|
|
24
|
+
: "Unknown RateLimit error",
|
|
25
|
+
cause: error,
|
|
26
|
+
}),
|
|
27
|
+
}))),
|
|
28
|
+
};
|
|
29
|
+
});
|
|
30
|
+
}));
|
|
31
|
+
export class RateLimitBindingPolicy extends Binding.Policy()("Cloudflare.RateLimit.Binding") {
|
|
32
|
+
}
|
|
33
|
+
export const RateLimitBindingPolicyLive = RateLimitBindingPolicy.layer.succeed(Effect.fn(function* (host, rateLimit) {
|
|
34
|
+
if (isWorker(host)) {
|
|
35
|
+
yield* host.bind(rateLimit.name, {
|
|
36
|
+
bindings: [
|
|
37
|
+
{
|
|
38
|
+
type: "ratelimit",
|
|
39
|
+
name: rateLimit.name,
|
|
40
|
+
namespaceId: rateLimit.namespaceId,
|
|
41
|
+
simple: rateLimit.simple,
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
return yield* Effect.die(new Error(`RateLimitBinding does not support runtime '${host.Type}'`));
|
|
48
|
+
}
|
|
49
|
+
}));
|
|
50
|
+
//# sourceMappingURL=RateLimitBinding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RateLimitBinding.js","sourceRoot":"","sources":["../../../src/Cloudflare/RateLimit/RateLimitBinding.ts"],"names":[],"mappings":"AAAA,mDAAmD;AAGnD,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;AACnE,OAAO,EAAmC,MAAM,gBAAgB,CAAC;AAEjE,MAAM,OAAO,cAAe,SAAQ,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAGnE;CAAG;AAaL,MAAM,OAAO,gBAAiB,SAAQ,OAAO,CAAC,OAAO,EAGlD,CAAC,8BAA8B,CAAC;CAAG;AAEtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,MAAM,CAC9C,gBAAgB,EAChB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,sBAAsB,CAAC;IAE7C,OAAO,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,SAAwB;QAClD,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACzB,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,CACnC,CAAC,GAAG,EAAE,EAAE,CAAE,GAAoC,CAAC,SAAS,CAAC,IAAI,CAAE,CAChE,CAAC;QACF,OAAO;YACL,GAAG;YACH,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CACjB,GAAG,CAAC,IAAI,CACN,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACzB,MAAM,CAAC,UAAU,CAAC;gBAChB,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;gBACjC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,cAAc,CAAC;oBACjB,OAAO,EACL,KAAK,YAAY,KAAK;wBACpB,CAAC,CAAC,KAAK,CAAC,OAAO;wBACf,CAAC,CAAC,yBAAyB;oBAC/B,KAAK,EAAE,KAAK;iBACb,CAAC;aACL,CAAC,CACH,CACF;SACsB,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CACH,CAAC;AAEF,MAAM,OAAO,sBAAuB,SAAQ,OAAO,CAAC,MAAM,EAGvD,CAAC,8BAA8B,CAAC;CAAG;AAEtC,MAAM,CAAC,MAAM,0BAA0B,GAAG,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAC5E,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAkB,EAAE,SAAwB;IAC/D,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;YAC/B,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,WAAW,EAAE,SAAS,CAAC,WAAW;oBAClC,MAAM,EAAE,SAAS,CAAC,MAAM;iBAClB;aACT;SACF,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CACtB,IAAI,KAAK,CAAC,8CAA8C,IAAI,CAAC,IAAI,GAAG,CAAC,CACtE,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/RateLimit/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Cloudflare/RateLimit/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC"}
|
|
@@ -36,10 +36,11 @@ export type Secret = Resource<"Cloudflare.SecretsStore.Secret", StoreSecretProps
|
|
|
36
36
|
secretName: string;
|
|
37
37
|
storeId: string;
|
|
38
38
|
accountId: string;
|
|
39
|
-
status:
|
|
39
|
+
status: SecretStatus;
|
|
40
40
|
scopes: string[];
|
|
41
41
|
comment: string | undefined;
|
|
42
42
|
}, never, Providers>;
|
|
43
|
+
export type SecretStatus = "pending" | "active" | "deleted";
|
|
43
44
|
/**
|
|
44
45
|
* A single secret stored inside a Cloudflare Secrets Store.
|
|
45
46
|
*
|
|
@@ -68,7 +69,7 @@ export type Secret = Resource<"Cloudflare.SecretsStore.Secret", StoreSecretProps
|
|
|
68
69
|
* ```
|
|
69
70
|
*/
|
|
70
71
|
export declare const Secret: import("../../Resource.ts").ResourceClassWithMethods<Secret, {
|
|
71
|
-
readonly bind: (<Req = never>(args_0: Secret | Effect.Effect<Secret, never, Req>) => Effect.Effect<import("./SecretBinding.ts").SecretClient, never, SecretBinding | Req>) & ((secret: Secret) => Effect.Effect<any, any, any>);
|
|
72
|
+
readonly bind: (<Req = never>(args_0: import("../../Input.ts").Input<Secret> | Effect.Effect<Secret, never, Req>) => Effect.Effect<import("./SecretBinding.ts").SecretClient, never, SecretBinding | Req>) & ((secret: Secret) => Effect.Effect<any, any, any>);
|
|
72
73
|
}>;
|
|
73
74
|
export declare const StoreSecretProvider: () => import("effect/Layer").Layer<Provider.Provider<Secret>, never, import("effect/unstable/http/HttpClient").HttpClient | import("@distilled.cloud/cloudflare").Credentials>;
|
|
74
75
|
//# sourceMappingURL=Secret.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Secret.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/SecretsStore/Secret.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAI5C,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,QAAQ,CAC3B,gCAAgC,EAChC,gBAAgB,EAChB;IACE,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"Secret.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/SecretsStore/Secret.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAI5C,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,QAAQ,CAC3B,gCAAgC,EAChC,gBAAgB,EAChB;IACE,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,EACD,KAAK,EACL,SAAS,CACV,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAM5D;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,MAAM;;EAEjB,CAAC;AAQH,eAAO,MAAM,mBAAmB,gLA0M7B,CAAC"}
|
|
@@ -9,6 +9,9 @@ import { isResolved } from "../../Diff.js";
|
|
|
9
9
|
import * as Provider from "../../Provider.js";
|
|
10
10
|
import { Resource } from "../../Resource.js";
|
|
11
11
|
import { SecretBinding } from "./SecretBinding.js";
|
|
12
|
+
// Distilled widened generated string enums to open unions (`string & {}`); the
|
|
13
|
+
// API only ever returns the known variants, so narrow at the boundary.
|
|
14
|
+
const asSecretStatus = (status) => status;
|
|
12
15
|
/**
|
|
13
16
|
* A single secret stored inside a Cloudflare Secrets Store.
|
|
14
17
|
*
|
|
@@ -111,7 +114,7 @@ export const StoreSecretProvider = () => Provider.effect(Secret, Effect.gen(func
|
|
|
111
114
|
secretName: secret.name,
|
|
112
115
|
storeId: secret.storeId,
|
|
113
116
|
accountId,
|
|
114
|
-
status: secret.status,
|
|
117
|
+
status: asSecretStatus(secret.status),
|
|
115
118
|
scopes,
|
|
116
119
|
comment: secret.comment ?? undefined,
|
|
117
120
|
};
|
|
@@ -137,7 +140,7 @@ export const StoreSecretProvider = () => Provider.effect(Secret, Effect.gen(func
|
|
|
137
140
|
secretName: observed.name,
|
|
138
141
|
storeId: observed.storeId,
|
|
139
142
|
accountId,
|
|
140
|
-
status: patched.status,
|
|
143
|
+
status: asSecretStatus(patched.status),
|
|
141
144
|
scopes,
|
|
142
145
|
comment: patched.comment ?? undefined,
|
|
143
146
|
};
|
|
@@ -160,7 +163,7 @@ export const StoreSecretProvider = () => Provider.effect(Secret, Effect.gen(func
|
|
|
160
163
|
secretName: secret.name,
|
|
161
164
|
storeId: secret.storeId,
|
|
162
165
|
accountId: output.accountId,
|
|
163
|
-
status: secret.status,
|
|
166
|
+
status: asSecretStatus(secret.status),
|
|
164
167
|
scopes: output.scopes,
|
|
165
168
|
comment: secret.comment ?? undefined,
|
|
166
169
|
})), Effect.catchTag("SecretNotFound", () => Effect.succeed(undefined)), Effect.catchTag("StoreNotFound", () => Effect.succeed(undefined)));
|
|
@@ -185,7 +188,7 @@ export const StoreSecretProvider = () => Provider.effect(Secret, Effect.gen(func
|
|
|
185
188
|
secretName: match.name,
|
|
186
189
|
storeId: match.storeId,
|
|
187
190
|
accountId: olds.store.accountId,
|
|
188
|
-
status: match.status,
|
|
191
|
+
status: asSecretStatus(match.status),
|
|
189
192
|
scopes: resolveScopes(olds.scopes),
|
|
190
193
|
comment: match.comment ?? undefined,
|
|
191
194
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Secret.js","sourceRoot":"","sources":["../../../src/Cloudflare/SecretsStore/Secret.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,2CAA2C,CAAC;AAC1E,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"Secret.js","sourceRoot":"","sources":["../../../src/Cloudflare/SecretsStore/Secret.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,7 +61,7 @@ declare const _default: Effect.Effect<import("effect/Pipeable").Pipeable & impor
|
|
|
61
61
|
crons?: string[];
|
|
62
62
|
hyperdrives?: Record<string, Required<import("../index.ts").HyperdriveDevOrigin>>;
|
|
63
63
|
}, import("../Providers.ts").Providers> & {
|
|
64
|
-
bind(sid: string
|
|
64
|
+
bind(sid: import("../../Input.ts").Input<string>, binding: import("../../Input.ts").Input<{
|
|
65
65
|
bindings?: import("../index.ts").WorkerBinding[];
|
|
66
66
|
containers?: {
|
|
67
67
|
className: string;
|
|
@@ -103,6 +103,33 @@ export type Tunnel = Resource<"Cloudflare.Tunnel", TunnelProps, {
|
|
|
103
103
|
* ],
|
|
104
104
|
* });
|
|
105
105
|
* ```
|
|
106
|
+
*
|
|
107
|
+
* @section Managing Tunnels at Runtime
|
|
108
|
+
* The `Tunnel` resource manages a single, statically-declared tunnel as part of
|
|
109
|
+
* a stack. To create, read, update, or delete tunnels *on the fly* from inside
|
|
110
|
+
* a deployed Worker, bind one of the runtime tunnel clients instead. Each
|
|
111
|
+
* provisions a least-privilege {@link AccountApiToken} and injects it into the
|
|
112
|
+
* Worker:
|
|
113
|
+
*
|
|
114
|
+
* - {@link TunnelRead} — read-only (`get`, `list`, `getToken`,
|
|
115
|
+
* `getConfiguration`); scoped to `Cloudflare Tunnel Read`.
|
|
116
|
+
* - {@link TunnelWrite} — mutating (`create`, `update`, `delete`,
|
|
117
|
+
* `putConfiguration`); scoped to `Cloudflare Tunnel Write`.
|
|
118
|
+
* - {@link TunnelReadWrite} — the full CRUD surface; scoped to both.
|
|
119
|
+
*
|
|
120
|
+
* @example Create a tunnel on demand from a Worker
|
|
121
|
+
* ```typescript
|
|
122
|
+
* // init
|
|
123
|
+
* const tunnels = yield* Cloudflare.TunnelReadWrite.bind();
|
|
124
|
+
*
|
|
125
|
+
* return {
|
|
126
|
+
* fetch: Effect.gen(function* () {
|
|
127
|
+
* const tunnel = yield* tunnels.create({ name: "on-demand-tunnel" });
|
|
128
|
+
* const token = yield* tunnels.getToken(tunnel.id!);
|
|
129
|
+
* return HttpServerResponse.json({ id: tunnel.id, token });
|
|
130
|
+
* }),
|
|
131
|
+
* };
|
|
132
|
+
* ```
|
|
106
133
|
*/
|
|
107
134
|
export declare const Tunnel: import("../../Resource.ts").ResourceClass<Tunnel>;
|
|
108
135
|
export declare const TunnelProvider: () => import("effect/Layer").Layer<Provider.Provider<Tunnel>, never, import("effect/unstable/http/HttpClient").HttpClient | import("../../Stage.ts").Stage | import("../../Stack.ts").Stack | import("@distilled.cloud/cloudflare").Credentials | CloudflareEnvironment>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tunnel.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Tunnel/Tunnel.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAK5C,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC;IACnC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;IAC/B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,mBAAmB,CAAC;IAC3C;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B;;OAEG;IACH,UAAiB,WAAW;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,aAAa,CAAC,EAAE,mBAAmB,CAAC;KACrC;IACD;;OAEG;IACH,UAAiB,mBAAmB;QAClC,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,sBAAsB,CAAC,EAAE,OAAO,CAAC;QACjC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B;CACF;AAED,MAAM,MAAM,MAAM,GAAG,QAAQ,CAC3B,mBAAmB,EACnB,WAAW,EACX;IACE,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC;IAClC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAClC,EACD,KAAK,EACL,SAAS,CACV,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"Tunnel.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Tunnel/Tunnel.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAK5C,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC;IACnC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;IAC/B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,mBAAmB,CAAC;IAC3C;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B;;OAEG;IACH,UAAiB,WAAW;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,aAAa,CAAC,EAAE,mBAAmB,CAAC;KACrC;IACD;;OAEG;IACH,UAAiB,mBAAmB;QAClC,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,sBAAsB,CAAC,EAAE,OAAO,CAAC;QACjC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B;CACF;AAED,MAAM,MAAM,MAAM,GAAG,QAAQ,CAC3B,mBAAmB,EACnB,WAAW,EACX;IACE,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC;IAClC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAClC,EACD,KAAK,EACL,SAAS,CACV,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,eAAO,MAAM,MAAM,mDAAwC,CAAC;AAE5D,eAAO,MAAM,cAAc,0QAwNxB,CAAC"}
|
|
@@ -28,6 +28,33 @@ import { CloudflareEnvironment } from "../CloudflareEnvironment.js";
|
|
|
28
28
|
* ],
|
|
29
29
|
* });
|
|
30
30
|
* ```
|
|
31
|
+
*
|
|
32
|
+
* @section Managing Tunnels at Runtime
|
|
33
|
+
* The `Tunnel` resource manages a single, statically-declared tunnel as part of
|
|
34
|
+
* a stack. To create, read, update, or delete tunnels *on the fly* from inside
|
|
35
|
+
* a deployed Worker, bind one of the runtime tunnel clients instead. Each
|
|
36
|
+
* provisions a least-privilege {@link AccountApiToken} and injects it into the
|
|
37
|
+
* Worker:
|
|
38
|
+
*
|
|
39
|
+
* - {@link TunnelRead} — read-only (`get`, `list`, `getToken`,
|
|
40
|
+
* `getConfiguration`); scoped to `Cloudflare Tunnel Read`.
|
|
41
|
+
* - {@link TunnelWrite} — mutating (`create`, `update`, `delete`,
|
|
42
|
+
* `putConfiguration`); scoped to `Cloudflare Tunnel Write`.
|
|
43
|
+
* - {@link TunnelReadWrite} — the full CRUD surface; scoped to both.
|
|
44
|
+
*
|
|
45
|
+
* @example Create a tunnel on demand from a Worker
|
|
46
|
+
* ```typescript
|
|
47
|
+
* // init
|
|
48
|
+
* const tunnels = yield* Cloudflare.TunnelReadWrite.bind();
|
|
49
|
+
*
|
|
50
|
+
* return {
|
|
51
|
+
* fetch: Effect.gen(function* () {
|
|
52
|
+
* const tunnel = yield* tunnels.create({ name: "on-demand-tunnel" });
|
|
53
|
+
* const token = yield* tunnels.getToken(tunnel.id!);
|
|
54
|
+
* return HttpServerResponse.json({ id: tunnel.id, token });
|
|
55
|
+
* }),
|
|
56
|
+
* };
|
|
57
|
+
* ```
|
|
31
58
|
*/
|
|
32
59
|
export const Tunnel = Resource("Cloudflare.Tunnel");
|
|
33
60
|
export const TunnelProvider = () => Provider.effect(Tunnel, Effect.gen(function* () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tunnel.js","sourceRoot":"","sources":["../../../src/Cloudflare/Tunnel/Tunnel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,wCAAwC,CAAC;AACpE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AA4FpE
|
|
1
|
+
{"version":3,"file":"Tunnel.js","sourceRoot":"","sources":["../../../src/Cloudflare/Tunnel/Tunnel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Credentials } from "@distilled.cloud/cloudflare/Credentials";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Layer from "effect/Layer";
|
|
4
|
+
import * as Redacted from "effect/Redacted";
|
|
5
|
+
import type { HttpClient } from "effect/unstable/http/HttpClient";
|
|
6
|
+
import type * as Binding from "../../Binding.ts";
|
|
7
|
+
import { RuntimeContext } from "../../RuntimeContext.ts";
|
|
8
|
+
import { AccountApiToken } from "../ApiToken/AccountApiToken.ts";
|
|
9
|
+
import type { ApiTokenPermissionGroupRef } from "../ApiToken/Common.ts";
|
|
10
|
+
import { CloudflareEnvironment } from "../CloudflareEnvironment.ts";
|
|
11
|
+
import { Worker } from "../Workers/Worker.ts";
|
|
12
|
+
/**
|
|
13
|
+
* Runtime accessors for a tunnel binding's token, obtained by binding the
|
|
14
|
+
* {@link AccountApiToken}'s outputs in the Worker's Init phase. Each accessor
|
|
15
|
+
* reads the value back from the Worker's environment at runtime.
|
|
16
|
+
*/
|
|
17
|
+
export interface TunnelToken {
|
|
18
|
+
/** The token's plaintext value (injected as a `secret_text` binding). */
|
|
19
|
+
value: Effect.Effect<Redacted.Redacted<string>>;
|
|
20
|
+
/** The account id the token is scoped to. */
|
|
21
|
+
accountId: Effect.Effect<string>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Bind an {@link AccountApiToken}'s outputs into the Worker so they can be read
|
|
25
|
+
* at runtime: `token.value` is injected as a `secret_text` binding and
|
|
26
|
+
* `token.accountId` as `plain_text`. Returns the {@link TunnelToken} accessors.
|
|
27
|
+
*/
|
|
28
|
+
export declare const bindTunnelToken: (token: AccountApiToken) => Effect.Effect<{
|
|
29
|
+
value: import("../../Output.ts").Accessor<Redacted.Redacted<string>>;
|
|
30
|
+
accountId: import("../../Output.ts").Accessor<string>;
|
|
31
|
+
}, never, never>;
|
|
32
|
+
/**
|
|
33
|
+
* Resolve credentials from a bound token and provide them (plus the
|
|
34
|
+
* fetch-based HTTP client) to a raw SDK operation.
|
|
35
|
+
*/
|
|
36
|
+
export declare const authorizeWith: (token: TunnelToken) => <A, E>(eff: Effect.Effect<A, E, Credentials | HttpClient>) => Effect.Effect<A, E, RuntimeContext>;
|
|
37
|
+
/**
|
|
38
|
+
* Shared runtime body for a tunnel binding: create a scoped token, attach the
|
|
39
|
+
* (narrow) policy, bind the token's outputs into the Worker, then build the
|
|
40
|
+
* client. Pass the result to `Layer.effect(<Binding>, ...)`.
|
|
41
|
+
*/
|
|
42
|
+
export declare const makeTunnelClient: <C>(Policy: Binding.Policy<any, any, (token: AccountApiToken) => Effect.Effect<void>>, makeClient: (token: TunnelToken) => C) => Effect.Effect<() => Effect.Effect<C, never, Worker<any>>, never, any>;
|
|
43
|
+
/**
|
|
44
|
+
* Build the deploy-time policy layer for a tunnel binding: attach an allow
|
|
45
|
+
* policy with the given permission groups to the binding's token.
|
|
46
|
+
*/
|
|
47
|
+
export declare const makeTunnelPolicyLive: <Self, Id extends string>(Policy: Binding.Policy<Self, Id, (token: AccountApiToken) => Effect.Effect<void>>, sid: string, permissionGroups: ApiTokenPermissionGroupRef[]) => Layer.Layer<Self, never, CloudflareEnvironment>;
|
|
48
|
+
//# sourceMappingURL=TunnelBinding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TunnelBinding.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Tunnel/TunnelBinding.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEZ,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAE5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,KAAK,OAAO,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CAClC;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,eAAe;;;gBAKlD,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,aAAa,GACvB,OAAO,WAAW,MAClB,CAAC,EAAE,CAAC,EACH,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC,KACjD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CAWlC,CAAC;AAEN;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAChC,QAAQ,OAAO,CAAC,MAAM,CACpB,GAAG,EACH,GAAG,EACH,CAAC,KAAK,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAChD,EACD,YAAY,CAAC,KAAK,EAAE,WAAW,KAAK,CAAC,0EAYnC,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAI,IAAI,EAAE,EAAE,SAAS,MAAM,EAC1D,QAAQ,OAAO,CAAC,MAAM,CACpB,IAAI,EACJ,EAAE,EACF,CAAC,KAAK,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAChD,EACD,KAAK,MAAM,EACX,kBAAkB,0BAA0B,EAAE,oDAgB7C,CAAC"}
|