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,80 @@
|
|
|
1
|
+
import type { GetRecordError, GetRecordResponse, ListRecordsError, ListRecordsRequest, ListRecordsResponse } from "@distilled.cloud/cloudflare/dns";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Layer from "effect/Layer";
|
|
4
|
+
import * as Binding from "../../Binding.ts";
|
|
5
|
+
import type { RuntimeContext } from "../../RuntimeContext.ts";
|
|
6
|
+
import type { AccountApiToken } from "../ApiToken/AccountApiToken.ts";
|
|
7
|
+
import type { Zone } from "../Zone/Zone.ts";
|
|
8
|
+
import { type DnsToken } from "./DnsBinding.ts";
|
|
9
|
+
/** List-records request, minus the zone id (bound at `.bind(zone)` time). */
|
|
10
|
+
export type ListRecordsRequestInput = Omit<ListRecordsRequest, "zoneId">;
|
|
11
|
+
/**
|
|
12
|
+
* Read-only DNS record operations. Backed by the `DNS Read` permission group.
|
|
13
|
+
* The zone is fixed when the client is bound, so no `zoneId` is passed per call.
|
|
14
|
+
*/
|
|
15
|
+
export interface DnsReadClient {
|
|
16
|
+
/** Fetch a single DNS record by id. */
|
|
17
|
+
getDnsRecord(dnsRecordId: string): Effect.Effect<GetRecordResponse, GetRecordError, RuntimeContext>;
|
|
18
|
+
/** List the DNS records in the bound zone. */
|
|
19
|
+
listDnsRecords(request?: ListRecordsRequestInput): Effect.Effect<ListRecordsResponse, ListRecordsError, RuntimeContext>;
|
|
20
|
+
}
|
|
21
|
+
/** Build the read-only client over a bound token and zone id. */
|
|
22
|
+
export declare const dnsReadClient: (token: DnsToken, zoneId: Effect.Effect<string>) => DnsReadClient;
|
|
23
|
+
declare const DnsRead_base: Binding.Service<DnsRead, "Cloudflare.DnsRead", (zone: Zone) => Effect.Effect<DnsReadClient>> & {
|
|
24
|
+
bind: (zone: Zone) => Effect.Effect<any, any, any>;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Binding that lets a Worker read Cloudflare DNS records at runtime.
|
|
28
|
+
*
|
|
29
|
+
* Creates a least-privilege {@link AccountApiToken} with only the `DNS Read`
|
|
30
|
+
* permission, scoped to the single zone passed to `bind`, and binds its value
|
|
31
|
+
* into the Worker so runtime code can authenticate.
|
|
32
|
+
*
|
|
33
|
+
* @binding
|
|
34
|
+
*
|
|
35
|
+
* @section Reading DNS records at runtime
|
|
36
|
+
* @example Read records from inside a Worker
|
|
37
|
+
* Bind the client in the Worker's Init phase and provide {@link DnsReadLive}.
|
|
38
|
+
* The zone is fixed by `.bind(zone)` — the provisioned token only grants
|
|
39
|
+
* access to that zone, so calls take no `zoneId`. Pass the {@link Zone}
|
|
40
|
+
* resource directly (it's an `Effect`), or `yield* Zone` for a resolved value.
|
|
41
|
+
* ```typescript
|
|
42
|
+
* import * as Cloudflare from "alchemy/Cloudflare";
|
|
43
|
+
* import * as Effect from "effect/Effect";
|
|
44
|
+
* import * as HttpServerResponse from "effect/unstable/http/HttpServerResponse";
|
|
45
|
+
*
|
|
46
|
+
* const Zone = Cloudflare.Zone("MyZone", { name: "example.com" });
|
|
47
|
+
*
|
|
48
|
+
* export class DnsReaderWorker extends Cloudflare.Worker<DnsReaderWorker>()(
|
|
49
|
+
* "DnsReaderWorker",
|
|
50
|
+
* { main: import.meta.filename },
|
|
51
|
+
* Effect.gen(function* () {
|
|
52
|
+
* // Init phase — bind the read client scoped to the zone.
|
|
53
|
+
* const dns = yield* Cloudflare.DnsRead.bind(Zone);
|
|
54
|
+
*
|
|
55
|
+
* return {
|
|
56
|
+
* fetch: Effect.gen(function* () {
|
|
57
|
+
* const { result } = yield* dns.listDnsRecords({ type: "A" });
|
|
58
|
+
* const record = yield* dns.getDnsRecord(result[0].id);
|
|
59
|
+
* return yield* HttpServerResponse.json({ id: record.id });
|
|
60
|
+
* }),
|
|
61
|
+
* };
|
|
62
|
+
* }).pipe(Effect.provide(Cloudflare.DnsReadLive)),
|
|
63
|
+
* ) {}
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export declare class DnsRead extends DnsRead_base {
|
|
67
|
+
}
|
|
68
|
+
declare const DnsReadPolicy_base: Binding.Policy<DnsReadPolicy, "Policy<Cloudflare.DnsRead>", (token: AccountApiToken, zone: Zone) => Effect.Effect<void>>;
|
|
69
|
+
/**
|
|
70
|
+
* Deploy-time policy for {@link DnsRead}. Attaches the `DNS Read` permission to
|
|
71
|
+
* the token via its binding contract.
|
|
72
|
+
*/
|
|
73
|
+
export declare class DnsReadPolicy extends DnsReadPolicy_base {
|
|
74
|
+
}
|
|
75
|
+
/** Runtime layer for {@link DnsRead}. */
|
|
76
|
+
export declare const DnsReadLive: Layer.Layer<DnsRead, never, any>;
|
|
77
|
+
/** Live deploy-time policy layer for {@link DnsReadPolicy}. */
|
|
78
|
+
export declare const DnsReadPolicyLive: Layer.Layer<DnsReadPolicy, never, never>;
|
|
79
|
+
export {};
|
|
80
|
+
//# sourceMappingURL=DnsRead.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DnsRead.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Dns/DnsRead.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAEL,KAAK,QAAQ,EAGd,MAAM,iBAAiB,CAAC;AAEzB,6EAA6E;AAC7E,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AAEzE;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,uCAAuC;IACvC,YAAY,CACV,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;IACpE,8CAA8C;IAC9C,cAAc,CACZ,OAAO,CAAC,EAAE,uBAAuB,GAChC,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;CACzE;AAED,iEAAiE;AACjE,eAAO,MAAM,aAAa,GACxB,OAAO,QAAQ,EACf,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAC5B,aAkBF,CAAC;kFA4CO,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;;;AA1C9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,qBAAa,OAAQ,SAAQ,YAGJ;CAAG;sGAQlB,eAAe,QAAQ,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAN7D;;;GAGG;AACH,qBAAa,aAAc,SAAQ,kBAGV;CAAG;AAE5B,yCAAyC;AACzC,eAAO,MAAM,WAAW,kCAGvB,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,0CAI7B,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import * as dns from "@distilled.cloud/cloudflare/dns";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Layer from "effect/Layer";
|
|
4
|
+
import * as Binding from "../../Binding.js";
|
|
5
|
+
import { authorizeDns, makeDnsClient, makeDnsPolicyLive, } from "./DnsBinding.js";
|
|
6
|
+
/** Build the read-only client over a bound token and zone id. */
|
|
7
|
+
export const dnsReadClient = (token, zoneId) => {
|
|
8
|
+
const authorize = authorizeDns(token);
|
|
9
|
+
return {
|
|
10
|
+
getDnsRecord: Effect.fn("Cloudflare.Dns.getDnsRecord")(function* (dnsRecordId) {
|
|
11
|
+
return yield* authorize(dns.getRecord({ zoneId: yield* zoneId, dnsRecordId }));
|
|
12
|
+
}),
|
|
13
|
+
listDnsRecords: Effect.fn("Cloudflare.Dns.listDnsRecords")(function* (request) {
|
|
14
|
+
return yield* authorize(dns.listRecords({ zoneId: yield* zoneId, ...request }));
|
|
15
|
+
}),
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Binding that lets a Worker read Cloudflare DNS records at runtime.
|
|
20
|
+
*
|
|
21
|
+
* Creates a least-privilege {@link AccountApiToken} with only the `DNS Read`
|
|
22
|
+
* permission, scoped to the single zone passed to `bind`, and binds its value
|
|
23
|
+
* into the Worker so runtime code can authenticate.
|
|
24
|
+
*
|
|
25
|
+
* @binding
|
|
26
|
+
*
|
|
27
|
+
* @section Reading DNS records at runtime
|
|
28
|
+
* @example Read records from inside a Worker
|
|
29
|
+
* Bind the client in the Worker's Init phase and provide {@link DnsReadLive}.
|
|
30
|
+
* The zone is fixed by `.bind(zone)` — the provisioned token only grants
|
|
31
|
+
* access to that zone, so calls take no `zoneId`. Pass the {@link Zone}
|
|
32
|
+
* resource directly (it's an `Effect`), or `yield* Zone` for a resolved value.
|
|
33
|
+
* ```typescript
|
|
34
|
+
* import * as Cloudflare from "alchemy/Cloudflare";
|
|
35
|
+
* import * as Effect from "effect/Effect";
|
|
36
|
+
* import * as HttpServerResponse from "effect/unstable/http/HttpServerResponse";
|
|
37
|
+
*
|
|
38
|
+
* const Zone = Cloudflare.Zone("MyZone", { name: "example.com" });
|
|
39
|
+
*
|
|
40
|
+
* export class DnsReaderWorker extends Cloudflare.Worker<DnsReaderWorker>()(
|
|
41
|
+
* "DnsReaderWorker",
|
|
42
|
+
* { main: import.meta.filename },
|
|
43
|
+
* Effect.gen(function* () {
|
|
44
|
+
* // Init phase — bind the read client scoped to the zone.
|
|
45
|
+
* const dns = yield* Cloudflare.DnsRead.bind(Zone);
|
|
46
|
+
*
|
|
47
|
+
* return {
|
|
48
|
+
* fetch: Effect.gen(function* () {
|
|
49
|
+
* const { result } = yield* dns.listDnsRecords({ type: "A" });
|
|
50
|
+
* const record = yield* dns.getDnsRecord(result[0].id);
|
|
51
|
+
* return yield* HttpServerResponse.json({ id: record.id });
|
|
52
|
+
* }),
|
|
53
|
+
* };
|
|
54
|
+
* }).pipe(Effect.provide(Cloudflare.DnsReadLive)),
|
|
55
|
+
* ) {}
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export class DnsRead extends Binding.Service()("Cloudflare.DnsRead") {
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Deploy-time policy for {@link DnsRead}. Attaches the `DNS Read` permission to
|
|
62
|
+
* the token via its binding contract.
|
|
63
|
+
*/
|
|
64
|
+
export class DnsReadPolicy extends Binding.Policy()("Cloudflare.DnsRead") {
|
|
65
|
+
}
|
|
66
|
+
/** Runtime layer for {@link DnsRead}. */
|
|
67
|
+
export const DnsReadLive = Layer.effect(DnsRead, makeDnsClient(DnsReadPolicy, "DnsReadToken", dnsReadClient));
|
|
68
|
+
/** Live deploy-time policy layer for {@link DnsReadPolicy}. */
|
|
69
|
+
export const DnsReadPolicyLive = makeDnsPolicyLive(DnsReadPolicy, "Cloudflare.DnsRead", ["DNS Read"]);
|
|
70
|
+
//# sourceMappingURL=DnsRead.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DnsRead.js","sourceRoot":"","sources":["../../../src/Cloudflare/Dns/DnsRead.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,GAAG,MAAM,iCAAiC,CAAC;AACvD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAI5C,OAAO,EACL,YAAY,EAEZ,aAAa,EACb,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAoBzB,iEAAiE;AACjE,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,KAAe,EACf,MAA6B,EACd,EAAE;IACjB,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,OAAO;QACL,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,6BAA6B,CAAC,CACpD,QAAQ,CAAC,EAAE,WAAW;YACpB,OAAO,KAAK,CAAC,CAAC,SAAS,CACrB,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CACtD,CAAC;QACJ,CAAC,CACF;QACD,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,+BAA+B,CAAC,CACxD,QAAQ,CAAC,EAAE,OAAO;YAChB,OAAO,KAAK,CAAC,CAAC,SAAS,CACrB,GAAG,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CACvD,CAAC;QACJ,CAAC,CACF;KACF,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,OAAO,OAAQ,SAAQ,OAAO,CAAC,OAAO,EAGzC,CAAC,oBAAoB,CAAC;CAAG;AAE5B;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,OAAO,CAAC,MAAM,EAG9C,CAAC,oBAAoB,CAAC;CAAG;AAE5B,yCAAyC;AACzC,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CACrC,OAAO,EACP,aAAa,CAAC,aAAa,EAAE,cAAc,EAAE,aAAa,CAAC,CAC5D,CAAC;AAEF,+DAA+D;AAC/D,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAChD,aAAa,EACb,oBAAoB,EACpB,CAAC,UAAU,CAAC,CACb,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Layer from "effect/Layer";
|
|
3
|
+
import * as Binding from "../../Binding.ts";
|
|
4
|
+
import type { AccountApiToken } from "../ApiToken/AccountApiToken.ts";
|
|
5
|
+
import type { Zone } from "../Zone/Zone.ts";
|
|
6
|
+
import { type DnsToken } from "./DnsBinding.ts";
|
|
7
|
+
import { type DnsReadClient } from "./DnsRead.ts";
|
|
8
|
+
import { type DnsWriteClient } from "./DnsWrite.ts";
|
|
9
|
+
/** Combined read + write DNS record operations. */
|
|
10
|
+
export interface DnsReadWriteClient extends DnsReadClient, DnsWriteClient {
|
|
11
|
+
}
|
|
12
|
+
/** Build the combined read + write client over a bound token and zone id. */
|
|
13
|
+
export declare const dnsReadWriteClient: (token: DnsToken, zoneId: Effect.Effect<string>) => DnsReadWriteClient;
|
|
14
|
+
declare const DnsReadWrite_base: Binding.Service<DnsReadWrite, "Cloudflare.DnsReadWrite", (zone: Zone) => Effect.Effect<DnsReadWriteClient>> & {
|
|
15
|
+
bind: (zone: Zone) => Effect.Effect<any, any, any>;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Binding that lets a Worker perform the full Cloudflare DNS record CRUD
|
|
19
|
+
* surface at runtime.
|
|
20
|
+
*
|
|
21
|
+
* Creates a least-privilege {@link AccountApiToken} with both the `DNS Read`
|
|
22
|
+
* and `DNS Write` permissions, scoped to the single zone passed to `bind`, and
|
|
23
|
+
* binds its value into the Worker so runtime code can authenticate.
|
|
24
|
+
*
|
|
25
|
+
* @binding
|
|
26
|
+
*
|
|
27
|
+
* @section Managing DNS records at runtime
|
|
28
|
+
* @example Full CRUD from inside a Worker
|
|
29
|
+
* Bind the client in the Worker's Init phase and provide
|
|
30
|
+
* {@link DnsReadWriteLive}. The zone is fixed by `.bind(zone)` — the
|
|
31
|
+
* provisioned token only grants access to that zone, so calls take no
|
|
32
|
+
* `zoneId`. Pass the {@link Zone} resource directly (it's an `Effect`), or
|
|
33
|
+
* `yield* Zone` for a resolved value.
|
|
34
|
+
* ```typescript
|
|
35
|
+
* import * as Cloudflare from "alchemy/Cloudflare";
|
|
36
|
+
* import * as Effect from "effect/Effect";
|
|
37
|
+
* import * as HttpServerResponse from "effect/unstable/http/HttpServerResponse";
|
|
38
|
+
*
|
|
39
|
+
* const Zone = Cloudflare.Zone("MyZone", { name: "example.com" });
|
|
40
|
+
*
|
|
41
|
+
* export class DnsWorker extends Cloudflare.Worker<DnsWorker>()(
|
|
42
|
+
* "DnsWorker",
|
|
43
|
+
* { main: import.meta.filename },
|
|
44
|
+
* Effect.gen(function* () {
|
|
45
|
+
* // Init phase — bind the full CRUD client scoped to the zone.
|
|
46
|
+
* const dns = yield* Cloudflare.DnsReadWrite.bind(Zone);
|
|
47
|
+
*
|
|
48
|
+
* return {
|
|
49
|
+
* fetch: Effect.gen(function* () {
|
|
50
|
+
* const { result } = yield* dns.createDnsRecord({
|
|
51
|
+
* type: "A",
|
|
52
|
+
* name: "app.example.com",
|
|
53
|
+
* content: "192.0.2.1",
|
|
54
|
+
* ttl: 1,
|
|
55
|
+
* });
|
|
56
|
+
* const record = yield* dns.getDnsRecord(result.id);
|
|
57
|
+
* yield* dns.deleteDnsRecord(result.id);
|
|
58
|
+
* return yield* HttpServerResponse.json({ id: record.id });
|
|
59
|
+
* }),
|
|
60
|
+
* };
|
|
61
|
+
* }).pipe(Effect.provide(Cloudflare.DnsReadWriteLive)),
|
|
62
|
+
* ) {}
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export declare class DnsReadWrite extends DnsReadWrite_base {
|
|
66
|
+
}
|
|
67
|
+
declare const DnsReadWritePolicy_base: Binding.Policy<DnsReadWritePolicy, "Policy<Cloudflare.DnsReadWrite>", (token: AccountApiToken, zone: Zone) => Effect.Effect<void>>;
|
|
68
|
+
/**
|
|
69
|
+
* Deploy-time policy for {@link DnsReadWrite}. Attaches both the `DNS Read` and
|
|
70
|
+
* `DNS Write` permissions to the token via its binding contract.
|
|
71
|
+
*/
|
|
72
|
+
export declare class DnsReadWritePolicy extends DnsReadWritePolicy_base {
|
|
73
|
+
}
|
|
74
|
+
/** Runtime layer for {@link DnsReadWrite}. */
|
|
75
|
+
export declare const DnsReadWriteLive: Layer.Layer<DnsReadWrite, never, any>;
|
|
76
|
+
/** Live deploy-time policy layer for {@link DnsReadWritePolicy}. */
|
|
77
|
+
export declare const DnsReadWritePolicyLive: Layer.Layer<DnsReadWritePolicy, never, never>;
|
|
78
|
+
export {};
|
|
79
|
+
//# sourceMappingURL=DnsReadWrite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DnsReadWrite.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Dns/DnsReadWrite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,KAAK,QAAQ,EAGd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpE,mDAAmD;AACnD,MAAM,WAAW,kBAAmB,SAAQ,aAAa,EAAE,cAAc;CAAG;AAE5E,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,GAC7B,OAAO,QAAQ,EACf,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAC5B,kBAGD,CAAC;iGAoDM,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC;;;AAlDnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,qBAAa,YAAa,SAAQ,iBAGJ;CAAG;qHAQvB,eAAe,QAAQ,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAN7D;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,uBAGV;CAAG;AAEjC,8CAA8C;AAC9C,eAAO,MAAM,gBAAgB,uCAG5B,CAAC;AAEF,oEAAoE;AACpE,eAAO,MAAM,sBAAsB,+CAIlC,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Layer from "effect/Layer";
|
|
3
|
+
import * as Binding from "../../Binding.js";
|
|
4
|
+
import { makeDnsClient, makeDnsPolicyLive, } from "./DnsBinding.js";
|
|
5
|
+
import { dnsReadClient } from "./DnsRead.js";
|
|
6
|
+
import { dnsWriteClient } from "./DnsWrite.js";
|
|
7
|
+
/** Build the combined read + write client over a bound token and zone id. */
|
|
8
|
+
export const dnsReadWriteClient = (token, zoneId) => ({
|
|
9
|
+
...dnsReadClient(token, zoneId),
|
|
10
|
+
...dnsWriteClient(token, zoneId),
|
|
11
|
+
});
|
|
12
|
+
/**
|
|
13
|
+
* Binding that lets a Worker perform the full Cloudflare DNS record CRUD
|
|
14
|
+
* surface at runtime.
|
|
15
|
+
*
|
|
16
|
+
* Creates a least-privilege {@link AccountApiToken} with both the `DNS Read`
|
|
17
|
+
* and `DNS Write` permissions, scoped to the single zone passed to `bind`, and
|
|
18
|
+
* binds its value into the Worker so runtime code can authenticate.
|
|
19
|
+
*
|
|
20
|
+
* @binding
|
|
21
|
+
*
|
|
22
|
+
* @section Managing DNS records at runtime
|
|
23
|
+
* @example Full CRUD from inside a Worker
|
|
24
|
+
* Bind the client in the Worker's Init phase and provide
|
|
25
|
+
* {@link DnsReadWriteLive}. The zone is fixed by `.bind(zone)` — the
|
|
26
|
+
* provisioned token only grants access to that zone, so calls take no
|
|
27
|
+
* `zoneId`. Pass the {@link Zone} resource directly (it's an `Effect`), or
|
|
28
|
+
* `yield* Zone` for a resolved value.
|
|
29
|
+
* ```typescript
|
|
30
|
+
* import * as Cloudflare from "alchemy/Cloudflare";
|
|
31
|
+
* import * as Effect from "effect/Effect";
|
|
32
|
+
* import * as HttpServerResponse from "effect/unstable/http/HttpServerResponse";
|
|
33
|
+
*
|
|
34
|
+
* const Zone = Cloudflare.Zone("MyZone", { name: "example.com" });
|
|
35
|
+
*
|
|
36
|
+
* export class DnsWorker extends Cloudflare.Worker<DnsWorker>()(
|
|
37
|
+
* "DnsWorker",
|
|
38
|
+
* { main: import.meta.filename },
|
|
39
|
+
* Effect.gen(function* () {
|
|
40
|
+
* // Init phase — bind the full CRUD client scoped to the zone.
|
|
41
|
+
* const dns = yield* Cloudflare.DnsReadWrite.bind(Zone);
|
|
42
|
+
*
|
|
43
|
+
* return {
|
|
44
|
+
* fetch: Effect.gen(function* () {
|
|
45
|
+
* const { result } = yield* dns.createDnsRecord({
|
|
46
|
+
* type: "A",
|
|
47
|
+
* name: "app.example.com",
|
|
48
|
+
* content: "192.0.2.1",
|
|
49
|
+
* ttl: 1,
|
|
50
|
+
* });
|
|
51
|
+
* const record = yield* dns.getDnsRecord(result.id);
|
|
52
|
+
* yield* dns.deleteDnsRecord(result.id);
|
|
53
|
+
* return yield* HttpServerResponse.json({ id: record.id });
|
|
54
|
+
* }),
|
|
55
|
+
* };
|
|
56
|
+
* }).pipe(Effect.provide(Cloudflare.DnsReadWriteLive)),
|
|
57
|
+
* ) {}
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export class DnsReadWrite extends Binding.Service()("Cloudflare.DnsReadWrite") {
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Deploy-time policy for {@link DnsReadWrite}. Attaches both the `DNS Read` and
|
|
64
|
+
* `DNS Write` permissions to the token via its binding contract.
|
|
65
|
+
*/
|
|
66
|
+
export class DnsReadWritePolicy extends Binding.Policy()("Cloudflare.DnsReadWrite") {
|
|
67
|
+
}
|
|
68
|
+
/** Runtime layer for {@link DnsReadWrite}. */
|
|
69
|
+
export const DnsReadWriteLive = Layer.effect(DnsReadWrite, makeDnsClient(DnsReadWritePolicy, "DnsReadWriteToken", dnsReadWriteClient));
|
|
70
|
+
/** Live deploy-time policy layer for {@link DnsReadWritePolicy}. */
|
|
71
|
+
export const DnsReadWritePolicyLive = makeDnsPolicyLive(DnsReadWritePolicy, "Cloudflare.DnsReadWrite", ["DNS Read", "DNS Write"]);
|
|
72
|
+
//# sourceMappingURL=DnsReadWrite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DnsReadWrite.js","sourceRoot":"","sources":["../../../src/Cloudflare/Dns/DnsReadWrite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAEL,aAAa,EACb,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,cAAc,EAAuB,MAAM,eAAe,CAAC;AAKpE,6EAA6E;AAC7E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,KAAe,EACf,MAA6B,EACT,EAAE,CAAC,CAAC;IACxB,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;IAC/B,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;CACjC,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,OAAO,YAAa,SAAQ,OAAO,CAAC,OAAO,EAG9C,CAAC,yBAAyB,CAAC;CAAG;AAEjC;;;GAGG;AACH,MAAM,OAAO,kBAAmB,SAAQ,OAAO,CAAC,MAAM,EAGnD,CAAC,yBAAyB,CAAC;CAAG;AAEjC,8CAA8C;AAC9C,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAC1C,YAAY,EACZ,aAAa,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,CAC3E,CAAC;AAEF,oEAAoE;AACpE,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CACrD,kBAAkB,EAClB,yBAAyB,EACzB,CAAC,UAAU,EAAE,WAAW,CAAC,CAC1B,CAAC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import type { BatchRecordError, BatchRecordRequest, BatchRecordResponse, CreateRecordError, CreateRecordRequest, CreateRecordResponse, DeleteRecordError, DeleteRecordResponse, PatchRecordError, PatchRecordRequest, PatchRecordResponse, UpdateRecordError, UpdateRecordRequest, UpdateRecordResponse } from "@distilled.cloud/cloudflare/dns";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Layer from "effect/Layer";
|
|
4
|
+
import * as Binding from "../../Binding.ts";
|
|
5
|
+
import type { RuntimeContext } from "../../RuntimeContext.ts";
|
|
6
|
+
import type { AccountApiToken } from "../ApiToken/AccountApiToken.ts";
|
|
7
|
+
import type { Zone } from "../Zone/Zone.ts";
|
|
8
|
+
import { type DnsToken } from "./DnsBinding.ts";
|
|
9
|
+
/** Create-record request, minus the zone id (bound at `.bind(zone)` time). */
|
|
10
|
+
export type CreateRecordRequestInput = Omit<CreateRecordRequest, "zoneId">;
|
|
11
|
+
/** Update-record request, minus the zone id and record id. */
|
|
12
|
+
export type UpdateRecordRequestInput = Omit<UpdateRecordRequest, "zoneId" | "dnsRecordId">;
|
|
13
|
+
/** Patch-record request, minus the zone id and record id. */
|
|
14
|
+
export type PatchRecordRequestInput = Omit<PatchRecordRequest, "zoneId" | "dnsRecordId">;
|
|
15
|
+
/** Batch-records request, minus the zone id (bound at `.bind(zone)` time). */
|
|
16
|
+
export type BatchRecordRequestInput = Omit<BatchRecordRequest, "zoneId">;
|
|
17
|
+
/**
|
|
18
|
+
* Mutating DNS record operations. Backed by the `DNS Write` permission group.
|
|
19
|
+
* The zone is fixed when the client is bound, so no `zoneId` is passed per call.
|
|
20
|
+
*/
|
|
21
|
+
export interface DnsWriteClient {
|
|
22
|
+
/** Create a DNS record. */
|
|
23
|
+
createDnsRecord(request: CreateRecordRequestInput): Effect.Effect<CreateRecordResponse, CreateRecordError, RuntimeContext>;
|
|
24
|
+
/** Overwrite (PUT) a DNS record. */
|
|
25
|
+
updateDnsRecord(dnsRecordId: string, request: UpdateRecordRequestInput): Effect.Effect<UpdateRecordResponse, UpdateRecordError, RuntimeContext>;
|
|
26
|
+
/** Partially update (PATCH) a DNS record. */
|
|
27
|
+
patchDnsRecord(dnsRecordId: string, request: PatchRecordRequestInput): Effect.Effect<PatchRecordResponse, PatchRecordError, RuntimeContext>;
|
|
28
|
+
/** Delete a DNS record by id. */
|
|
29
|
+
deleteDnsRecord(dnsRecordId: string): Effect.Effect<DeleteRecordResponse, DeleteRecordError, RuntimeContext>;
|
|
30
|
+
/** Apply a batch of create / update / patch / delete operations atomically. */
|
|
31
|
+
batchDnsRecords(request: BatchRecordRequestInput): Effect.Effect<BatchRecordResponse, BatchRecordError, RuntimeContext>;
|
|
32
|
+
}
|
|
33
|
+
/** Build the write client over a bound token and zone id. */
|
|
34
|
+
export declare const dnsWriteClient: (token: DnsToken, zoneId: Effect.Effect<string>) => DnsWriteClient;
|
|
35
|
+
declare const DnsWrite_base: Binding.Service<DnsWrite, "Cloudflare.DnsWrite", (zone: Zone) => Effect.Effect<DnsWriteClient>> & {
|
|
36
|
+
bind: (zone: Zone) => Effect.Effect<any, any, any>;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Binding that lets a Worker create, update, and delete Cloudflare DNS records
|
|
40
|
+
* at runtime.
|
|
41
|
+
*
|
|
42
|
+
* Creates a least-privilege {@link AccountApiToken} with only the `DNS Write`
|
|
43
|
+
* permission, scoped to the single zone passed to `bind`, and binds its value
|
|
44
|
+
* into the Worker so runtime code can authenticate.
|
|
45
|
+
*
|
|
46
|
+
* @binding
|
|
47
|
+
*
|
|
48
|
+
* @section Mutating DNS records at runtime
|
|
49
|
+
* @example Create, update, and delete records from inside a Worker
|
|
50
|
+
* Bind the client in the Worker's Init phase and provide {@link DnsWriteLive}.
|
|
51
|
+
* The zone is fixed by `.bind(zone)` — the provisioned token only grants
|
|
52
|
+
* access to that zone, so calls take no `zoneId`. Pass the {@link Zone}
|
|
53
|
+
* resource directly (it's an `Effect`), or `yield* Zone` for a resolved value.
|
|
54
|
+
* ```typescript
|
|
55
|
+
* import * as Cloudflare from "alchemy/Cloudflare";
|
|
56
|
+
* import * as Effect from "effect/Effect";
|
|
57
|
+
* import * as HttpServerResponse from "effect/unstable/http/HttpServerResponse";
|
|
58
|
+
*
|
|
59
|
+
* const Zone = Cloudflare.Zone("MyZone", { name: "example.com" });
|
|
60
|
+
*
|
|
61
|
+
* export class DnsWriterWorker extends Cloudflare.Worker<DnsWriterWorker>()(
|
|
62
|
+
* "DnsWriterWorker",
|
|
63
|
+
* { main: import.meta.filename },
|
|
64
|
+
* Effect.gen(function* () {
|
|
65
|
+
* // Init phase — bind the write client scoped to the zone.
|
|
66
|
+
* const dns = yield* Cloudflare.DnsWrite.bind(Zone);
|
|
67
|
+
*
|
|
68
|
+
* return {
|
|
69
|
+
* fetch: Effect.gen(function* () {
|
|
70
|
+
* const { result } = yield* dns.createDnsRecord({
|
|
71
|
+
* type: "A",
|
|
72
|
+
* name: "app.example.com",
|
|
73
|
+
* content: "192.0.2.1",
|
|
74
|
+
* ttl: 1,
|
|
75
|
+
* proxied: true,
|
|
76
|
+
* });
|
|
77
|
+
* yield* dns.updateDnsRecord(result.id, {
|
|
78
|
+
* type: "A",
|
|
79
|
+
* name: "app.example.com",
|
|
80
|
+
* content: "192.0.2.2",
|
|
81
|
+
* ttl: 1,
|
|
82
|
+
* });
|
|
83
|
+
* yield* dns.deleteDnsRecord(result.id);
|
|
84
|
+
* return yield* HttpServerResponse.json({ id: result.id });
|
|
85
|
+
* }),
|
|
86
|
+
* };
|
|
87
|
+
* }).pipe(Effect.provide(Cloudflare.DnsWriteLive)),
|
|
88
|
+
* ) {}
|
|
89
|
+
* ```
|
|
90
|
+
*
|
|
91
|
+
* @example Apply a batch of changes atomically
|
|
92
|
+
* ```typescript
|
|
93
|
+
* yield* dns.batchDnsRecords({
|
|
94
|
+
* posts: [{ type: "A", name: "a.example.com", content: "192.0.2.1", ttl: 1 }],
|
|
95
|
+
* deletes: [{ id: oldRecordId }],
|
|
96
|
+
* });
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
export declare class DnsWrite extends DnsWrite_base {
|
|
100
|
+
}
|
|
101
|
+
declare const DnsWritePolicy_base: Binding.Policy<DnsWritePolicy, "Policy<Cloudflare.DnsWrite>", (token: AccountApiToken, zone: Zone) => Effect.Effect<void>>;
|
|
102
|
+
/**
|
|
103
|
+
* Deploy-time policy for {@link DnsWrite}. Attaches the `DNS Write` permission
|
|
104
|
+
* to the token via its binding contract.
|
|
105
|
+
*/
|
|
106
|
+
export declare class DnsWritePolicy extends DnsWritePolicy_base {
|
|
107
|
+
}
|
|
108
|
+
/** Runtime layer for {@link DnsWrite}. */
|
|
109
|
+
export declare const DnsWriteLive: Layer.Layer<DnsWrite, never, any>;
|
|
110
|
+
/** Live deploy-time policy layer for {@link DnsWritePolicy}. */
|
|
111
|
+
export declare const DnsWritePolicyLive: Layer.Layer<DnsWritePolicy, never, never>;
|
|
112
|
+
export {};
|
|
113
|
+
//# sourceMappingURL=DnsWrite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DnsWrite.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Dns/DnsWrite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAEL,KAAK,QAAQ,EAGd,MAAM,iBAAiB,CAAC;AAEzB,8EAA8E;AAC9E,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;AAE3E,8DAA8D;AAC9D,MAAM,MAAM,wBAAwB,GAAG,IAAI,CACzC,mBAAmB,EACnB,QAAQ,GAAG,aAAa,CACzB,CAAC;AAEF,6DAA6D;AAC7D,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,kBAAkB,EAClB,QAAQ,GAAG,aAAa,CACzB,CAAC;AAEF,8EAA8E;AAC9E,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AAEzE;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,2BAA2B;IAC3B,eAAe,CACb,OAAO,EAAE,wBAAwB,GAChC,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;IAC1E,oCAAoC;IACpC,eAAe,CACb,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,wBAAwB,GAChC,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;IAC1E,6CAA6C;IAC7C,cAAc,CACZ,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,uBAAuB,GAC/B,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;IACxE,iCAAiC;IACjC,eAAe,CACb,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;IAC1E,+EAA+E;IAC/E,eAAe,CACb,OAAO,EAAE,uBAAuB,GAC/B,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;CACzE;AAED,6DAA6D;AAC7D,eAAO,MAAM,cAAc,GACzB,OAAO,QAAQ,EACf,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAC5B,cAuCF,CAAC;qFAiEO,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;;;AA/D/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,qBAAa,QAAS,SAAQ,aAGJ;CAAG;yGAQnB,eAAe,QAAQ,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAN7D;;;GAGG;AACH,qBAAa,cAAe,SAAQ,mBAGV;CAAG;AAE7B,0CAA0C;AAC1C,eAAO,MAAM,YAAY,mCAGxB,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,kBAAkB,2CAI9B,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import * as dns from "@distilled.cloud/cloudflare/dns";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Layer from "effect/Layer";
|
|
4
|
+
import * as Binding from "../../Binding.js";
|
|
5
|
+
import { authorizeDns, makeDnsClient, makeDnsPolicyLive, } from "./DnsBinding.js";
|
|
6
|
+
/** Build the write client over a bound token and zone id. */
|
|
7
|
+
export const dnsWriteClient = (token, zoneId) => {
|
|
8
|
+
const authorize = authorizeDns(token);
|
|
9
|
+
return {
|
|
10
|
+
createDnsRecord: Effect.fn("Cloudflare.Dns.createDnsRecord")(function* (request) {
|
|
11
|
+
return yield* authorize(dns.createRecord({ zoneId: yield* zoneId, ...request }));
|
|
12
|
+
}),
|
|
13
|
+
updateDnsRecord: Effect.fn("Cloudflare.Dns.updateDnsRecord")(function* (dnsRecordId, request) {
|
|
14
|
+
return yield* authorize(dns.updateRecord({ zoneId: yield* zoneId, dnsRecordId, ...request }));
|
|
15
|
+
}),
|
|
16
|
+
patchDnsRecord: Effect.fn("Cloudflare.Dns.patchDnsRecord")(function* (dnsRecordId, request) {
|
|
17
|
+
return yield* authorize(dns.patchRecord({ zoneId: yield* zoneId, dnsRecordId, ...request }));
|
|
18
|
+
}),
|
|
19
|
+
deleteDnsRecord: Effect.fn("Cloudflare.Dns.deleteDnsRecord")(function* (dnsRecordId) {
|
|
20
|
+
return yield* authorize(dns.deleteRecord({ zoneId: yield* zoneId, dnsRecordId }));
|
|
21
|
+
}),
|
|
22
|
+
batchDnsRecords: Effect.fn("Cloudflare.Dns.batchDnsRecords")(function* (request) {
|
|
23
|
+
return yield* authorize(dns.batchRecord({ zoneId: yield* zoneId, ...request }));
|
|
24
|
+
}),
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Binding that lets a Worker create, update, and delete Cloudflare DNS records
|
|
29
|
+
* at runtime.
|
|
30
|
+
*
|
|
31
|
+
* Creates a least-privilege {@link AccountApiToken} with only the `DNS Write`
|
|
32
|
+
* permission, scoped to the single zone passed to `bind`, and binds its value
|
|
33
|
+
* into the Worker so runtime code can authenticate.
|
|
34
|
+
*
|
|
35
|
+
* @binding
|
|
36
|
+
*
|
|
37
|
+
* @section Mutating DNS records at runtime
|
|
38
|
+
* @example Create, update, and delete records from inside a Worker
|
|
39
|
+
* Bind the client in the Worker's Init phase and provide {@link DnsWriteLive}.
|
|
40
|
+
* The zone is fixed by `.bind(zone)` — the provisioned token only grants
|
|
41
|
+
* access to that zone, so calls take no `zoneId`. Pass the {@link Zone}
|
|
42
|
+
* resource directly (it's an `Effect`), or `yield* Zone` for a resolved value.
|
|
43
|
+
* ```typescript
|
|
44
|
+
* import * as Cloudflare from "alchemy/Cloudflare";
|
|
45
|
+
* import * as Effect from "effect/Effect";
|
|
46
|
+
* import * as HttpServerResponse from "effect/unstable/http/HttpServerResponse";
|
|
47
|
+
*
|
|
48
|
+
* const Zone = Cloudflare.Zone("MyZone", { name: "example.com" });
|
|
49
|
+
*
|
|
50
|
+
* export class DnsWriterWorker extends Cloudflare.Worker<DnsWriterWorker>()(
|
|
51
|
+
* "DnsWriterWorker",
|
|
52
|
+
* { main: import.meta.filename },
|
|
53
|
+
* Effect.gen(function* () {
|
|
54
|
+
* // Init phase — bind the write client scoped to the zone.
|
|
55
|
+
* const dns = yield* Cloudflare.DnsWrite.bind(Zone);
|
|
56
|
+
*
|
|
57
|
+
* return {
|
|
58
|
+
* fetch: Effect.gen(function* () {
|
|
59
|
+
* const { result } = yield* dns.createDnsRecord({
|
|
60
|
+
* type: "A",
|
|
61
|
+
* name: "app.example.com",
|
|
62
|
+
* content: "192.0.2.1",
|
|
63
|
+
* ttl: 1,
|
|
64
|
+
* proxied: true,
|
|
65
|
+
* });
|
|
66
|
+
* yield* dns.updateDnsRecord(result.id, {
|
|
67
|
+
* type: "A",
|
|
68
|
+
* name: "app.example.com",
|
|
69
|
+
* content: "192.0.2.2",
|
|
70
|
+
* ttl: 1,
|
|
71
|
+
* });
|
|
72
|
+
* yield* dns.deleteDnsRecord(result.id);
|
|
73
|
+
* return yield* HttpServerResponse.json({ id: result.id });
|
|
74
|
+
* }),
|
|
75
|
+
* };
|
|
76
|
+
* }).pipe(Effect.provide(Cloudflare.DnsWriteLive)),
|
|
77
|
+
* ) {}
|
|
78
|
+
* ```
|
|
79
|
+
*
|
|
80
|
+
* @example Apply a batch of changes atomically
|
|
81
|
+
* ```typescript
|
|
82
|
+
* yield* dns.batchDnsRecords({
|
|
83
|
+
* posts: [{ type: "A", name: "a.example.com", content: "192.0.2.1", ttl: 1 }],
|
|
84
|
+
* deletes: [{ id: oldRecordId }],
|
|
85
|
+
* });
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
export class DnsWrite extends Binding.Service()("Cloudflare.DnsWrite") {
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Deploy-time policy for {@link DnsWrite}. Attaches the `DNS Write` permission
|
|
92
|
+
* to the token via its binding contract.
|
|
93
|
+
*/
|
|
94
|
+
export class DnsWritePolicy extends Binding.Policy()("Cloudflare.DnsWrite") {
|
|
95
|
+
}
|
|
96
|
+
/** Runtime layer for {@link DnsWrite}. */
|
|
97
|
+
export const DnsWriteLive = Layer.effect(DnsWrite, makeDnsClient(DnsWritePolicy, "DnsWriteToken", dnsWriteClient));
|
|
98
|
+
/** Live deploy-time policy layer for {@link DnsWritePolicy}. */
|
|
99
|
+
export const DnsWritePolicyLive = makeDnsPolicyLive(DnsWritePolicy, "Cloudflare.DnsWrite", ["DNS Write"]);
|
|
100
|
+
//# sourceMappingURL=DnsWrite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DnsWrite.js","sourceRoot":"","sources":["../../../src/Cloudflare/Dns/DnsWrite.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,GAAG,MAAM,iCAAiC,CAAC;AACvD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAI5C,OAAO,EACL,YAAY,EAEZ,aAAa,EACb,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAiDzB,6DAA6D;AAC7D,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,KAAe,EACf,MAA6B,EACb,EAAE;IAClB,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,OAAO;QACL,eAAe,EAAE,MAAM,CAAC,EAAE,CAAC,gCAAgC,CAAC,CAC1D,QAAQ,CAAC,EAAE,OAAO;YAChB,OAAO,KAAK,CAAC,CAAC,SAAS,CACrB,GAAG,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CACxD,CAAC;QACJ,CAAC,CACF;QACD,eAAe,EAAE,MAAM,CAAC,EAAE,CAAC,gCAAgC,CAAC,CAC1D,QAAQ,CAAC,EAAE,WAAW,EAAE,OAAO;YAC7B,OAAO,KAAK,CAAC,CAAC,SAAS,CACrB,GAAG,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,CAAC,CACrE,CAAC;QACJ,CAAC,CACF;QACD,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,+BAA+B,CAAC,CACxD,QAAQ,CAAC,EAAE,WAAW,EAAE,OAAO;YAC7B,OAAO,KAAK,CAAC,CAAC,SAAS,CACrB,GAAG,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,CAAC,CACpE,CAAC;QACJ,CAAC,CACF;QACD,eAAe,EAAE,MAAM,CAAC,EAAE,CAAC,gCAAgC,CAAC,CAC1D,QAAQ,CAAC,EAAE,WAAW;YACpB,OAAO,KAAK,CAAC,CAAC,SAAS,CACrB,GAAG,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CACzD,CAAC;QACJ,CAAC,CACF;QACD,eAAe,EAAE,MAAM,CAAC,EAAE,CAAC,gCAAgC,CAAC,CAC1D,QAAQ,CAAC,EAAE,OAAO;YAChB,OAAO,KAAK,CAAC,CAAC,SAAS,CACrB,GAAG,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CACvD,CAAC;QACJ,CAAC,CACF;KACF,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,MAAM,OAAO,QAAS,SAAQ,OAAO,CAAC,OAAO,EAG1C,CAAC,qBAAqB,CAAC;CAAG;AAE7B;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,OAAO,CAAC,MAAM,EAG/C,CAAC,qBAAqB,CAAC;CAAG;AAE7B,0CAA0C;AAC1C,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CACtC,QAAQ,EACR,aAAa,CAAC,cAAc,EAAE,eAAe,EAAE,cAAc,CAAC,CAC/D,CAAC;AAEF,gEAAgE;AAChE,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAAiB,CACjD,cAAc,EACd,qBAAqB,EACrB,CAAC,WAAW,CAAC,CACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Dns/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Cloudflare/Dns/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC"}
|
|
@@ -2,7 +2,7 @@ import * as Provider from "../../Provider.ts";
|
|
|
2
2
|
import { Resource } from "../../Resource.ts";
|
|
3
3
|
import { CloudflareEnvironment } from "../CloudflareEnvironment.ts";
|
|
4
4
|
import type { Providers } from "../Providers.ts";
|
|
5
|
-
import { type ZoneReference } from "../Zone.ts";
|
|
5
|
+
import { type ZoneReference } from "../Zone/index.ts";
|
|
6
6
|
export type EmailRoutingStatus = "ready" | "unconfigured" | "misconfigured" | "misconfigured/locked" | "unlocked";
|
|
7
7
|
export type EmailRoutingProps = {
|
|
8
8
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmailRouting.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Email/EmailRouting.ts"],"names":[],"mappings":"AAGA,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;AACjD,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"EmailRouting.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Email/EmailRouting.ts"],"names":[],"mappings":"AAGA,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;AACjD,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAErE,MAAM,MAAM,kBAAkB,GAC1B,OAAO,GACP,cAAc,GACd,eAAe,GACf,sBAAsB,GACtB,UAAU,CAAC;AAEf,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;OAGG;IACH,IAAI,EAAE,aAAa,CAAC;IACpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,QAAQ,CACjC,yBAAyB,EACzB,iBAAiB,EACjB;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,kBAAkB,GAAG,SAAS,CAAC;CACxC,EACD,KAAK,EACL,SAAS,CACV,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,yDAAoD,CAAC;AAE9E,eAAO,MAAM,oBAAoB,8MA8E9B,CAAC"}
|
|
@@ -4,7 +4,7 @@ import { isResolved } from "../../Diff.js";
|
|
|
4
4
|
import * as Provider from "../../Provider.js";
|
|
5
5
|
import { Resource } from "../../Resource.js";
|
|
6
6
|
import { CloudflareEnvironment } from "../CloudflareEnvironment.js";
|
|
7
|
-
import { resolveZoneId } from "../Zone.js";
|
|
7
|
+
import { resolveZoneId } from "../Zone/index.js";
|
|
8
8
|
/**
|
|
9
9
|
* Enables Cloudflare Email Routing on a zone. This is the prerequisite for
|
|
10
10
|
* receiving mail at any address on the domain and for sending email from a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmailRouting.js","sourceRoot":"","sources":["../../../src/Cloudflare/Email/EmailRouting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,2CAA2C,CAAC;AAC1E,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAsB,MAAM,
|
|
1
|
+
{"version":3,"file":"EmailRouting.js","sourceRoot":"","sources":["../../../src/Cloudflare/Email/EmailRouting.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import * as Provider from "../../Provider.ts";
|
|
|
2
2
|
import { Resource } from "../../Resource.ts";
|
|
3
3
|
import { CloudflareEnvironment } from "../CloudflareEnvironment.ts";
|
|
4
4
|
import type { Providers } from "../Providers.ts";
|
|
5
|
-
import { type ZoneReference } from "../Zone.ts";
|
|
5
|
+
import { type ZoneReference } from "../Zone/index.ts";
|
|
6
6
|
export type EmailMatcher = {
|
|
7
7
|
type: "all";
|
|
8
8
|
} | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmailRule.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Email/EmailRule.ts"],"names":[],"mappings":"AAGA,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;AACjD,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"EmailRule.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Email/EmailRule.ts"],"names":[],"mappings":"AAGA,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;AACjD,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAErE,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAExC,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,IAAI,EAAE,aAAa,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB;;OAEG;IACH,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,QAAQ,CAC9B,sBAAsB,EACtB,cAAc,EACd;IACE,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB,EACD,KAAK,EACL,SAAS,CACV,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,SAAS,sDAA8C,CAAC;AA0CrE,eAAO,MAAM,iBAAiB,2MAqF3B,CAAC"}
|