alchemy 2.0.0-beta.47 → 2.0.0-beta.48
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.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/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.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 +26 -3
- 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/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/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/Providers.d.ts.map +1 -1
- package/lib/Cloudflare/Providers.js +10 -3
- package/lib/Cloudflare/Providers.js.map +1 -1
- package/lib/Cloudflare/R2/R2Bucket.d.ts +1 -1
- 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 +2 -1
- 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/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.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 +5 -3
- 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 +3 -1
- package/lib/Cloudflare/index.d.ts.map +1 -1
- package/lib/Cloudflare/index.js +3 -1
- package/lib/Cloudflare/index.js.map +1 -1
- package/lib/Platform.d.ts +5 -5
- package/lib/Platform.d.ts.map +1 -1
- 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 +14 -1
- 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/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 +32 -3
- 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/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 +15 -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 +3 -1
- package/src/Platform.ts +8 -12
- package/src/RemovalPolicy.ts +2 -2
- package/src/Resource.ts +18 -1
- 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
|
@@ -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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"}
|
|
@@ -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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Credentials, fromApiToken, } 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 * as FetchHttpClient from "effect/unstable/http/FetchHttpClient";
|
|
6
|
+
import { RuntimeContext } from "../../RuntimeContext.js";
|
|
7
|
+
import { AccountApiToken } from "../ApiToken/AccountApiToken.js";
|
|
8
|
+
import { CloudflareEnvironment } from "../CloudflareEnvironment.js";
|
|
9
|
+
import { Worker } from "../Workers/Worker.js";
|
|
10
|
+
/**
|
|
11
|
+
* Bind an {@link AccountApiToken}'s outputs into the Worker so they can be read
|
|
12
|
+
* at runtime: `token.value` is injected as a `secret_text` binding and
|
|
13
|
+
* `token.accountId` as `plain_text`. Returns the {@link TunnelToken} accessors.
|
|
14
|
+
*/
|
|
15
|
+
export const bindTunnelToken = (token) => Effect.gen(function* () {
|
|
16
|
+
const value = yield* token.value;
|
|
17
|
+
const accountId = yield* token.accountId;
|
|
18
|
+
return { value, accountId };
|
|
19
|
+
});
|
|
20
|
+
/**
|
|
21
|
+
* Resolve credentials from a bound token and provide them (plus the
|
|
22
|
+
* fetch-based HTTP client) to a raw SDK operation.
|
|
23
|
+
*/
|
|
24
|
+
export const authorizeWith = (token) => (eff) => token.value.pipe(Effect.flatMap((value) => eff.pipe(Effect.provide(fromApiToken({ apiToken: Redacted.value(value) }).pipe(Layer.provideMerge(FetchHttpClient.layer))))));
|
|
25
|
+
/**
|
|
26
|
+
* Shared runtime body for a tunnel binding: create a scoped token, attach the
|
|
27
|
+
* (narrow) policy, bind the token's outputs into the Worker, then build the
|
|
28
|
+
* client. Pass the result to `Layer.effect(<Binding>, ...)`.
|
|
29
|
+
*/
|
|
30
|
+
export const makeTunnelClient = (Policy, makeClient) => Effect.gen(function* () {
|
|
31
|
+
const Token = yield* AccountApiToken;
|
|
32
|
+
const attach = yield* Policy;
|
|
33
|
+
return Effect.fn(function* () {
|
|
34
|
+
const ctx = yield* Worker;
|
|
35
|
+
const token = yield* Token(`${ctx.LogicalId}Token`);
|
|
36
|
+
yield* attach(token);
|
|
37
|
+
return makeClient(yield* bindTunnelToken(token));
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
/**
|
|
41
|
+
* Build the deploy-time policy layer for a tunnel binding: attach an allow
|
|
42
|
+
* policy with the given permission groups to the binding's token.
|
|
43
|
+
*/
|
|
44
|
+
export const makeTunnelPolicyLive = (Policy, sid, permissionGroups) => Policy.layer.effect(Effect.gen(function* () {
|
|
45
|
+
const { accountId } = yield* CloudflareEnvironment;
|
|
46
|
+
return (_host, token) => token.bind(sid, {
|
|
47
|
+
policies: [
|
|
48
|
+
{
|
|
49
|
+
effect: "allow",
|
|
50
|
+
permissionGroups,
|
|
51
|
+
resources: { [`com.cloudflare.api.account.${accountId}`]: "*" },
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
});
|
|
55
|
+
}));
|
|
56
|
+
//# sourceMappingURL=TunnelBinding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TunnelBinding.js","sourceRoot":"","sources":["../../../src/Cloudflare/Tunnel/TunnelBinding.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,YAAY,GACb,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,eAAe,MAAM,sCAAsC,CAAC;AAGxE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAc9C;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAsB,EAAE,EAAE,CACxD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;IACjC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;IACzC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAwB,CAAC;AACpD,CAAC,CAAC,CAAC;AAEL;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GACxB,CAAC,KAAkB,EAAE,EAAE,CACvB,CACE,GAAkD,EACb,EAAE,CACvC,KAAK,CAAC,KAAK,CAAC,IAAI,CACd,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACvB,GAAG,CAAC,IAAI,CACN,MAAM,CAAC,OAAO,CACZ,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CACpD,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAC1C,CACF,CACF,CACF,CACF,CAAC;AAEN;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,MAIC,EACD,UAAqC,EACrC,EAAE,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC;IACrC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC;IAE7B,OAAO,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC;QAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,SAAS,OAAO,CAAC,CAAC;QACpD,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,MAIC,EACD,GAAW,EACX,gBAA8C,EAC9C,EAAE,CACF,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,CAAC,qBAAqB,CAAC;IACnD,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACtB,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;QACd,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,OAAO;gBACf,gBAAgB;gBAChB,SAAS,EAAE,EAAE,CAAC,8BAA8B,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE;aAChE;SACF;KACF,CAAC,CAAC;AACP,CAAC,CAAC,CACH,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { GetTunnelCloudflaredConfigurationError, GetTunnelCloudflaredConfigurationResponse, GetTunnelCloudflaredError, GetTunnelCloudflaredResponse, GetTunnelCloudflaredTokenError, GetTunnelCloudflaredTokenResponse, ListTunnelCloudflaredsError, ListTunnelCloudflaredsRequest, ListTunnelCloudflaredsResponse } from "@distilled.cloud/cloudflare/zero-trust";
|
|
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 { Worker } from "../Workers/Worker.ts";
|
|
8
|
+
import { type TunnelToken } from "./TunnelBinding.ts";
|
|
9
|
+
/** List-tunnels request, minus the account id (supplied by the binding). */
|
|
10
|
+
export type ListTunnelsRequest = Omit<ListTunnelCloudflaredsRequest, "accountId">;
|
|
11
|
+
/**
|
|
12
|
+
* Read-only tunnel operations. Backed by the `Cloudflare Tunnel Read`
|
|
13
|
+
* permission group.
|
|
14
|
+
*/
|
|
15
|
+
export interface TunnelReadClient {
|
|
16
|
+
/** Fetch a single tunnel by id. */
|
|
17
|
+
get(tunnelId: string): Effect.Effect<GetTunnelCloudflaredResponse, GetTunnelCloudflaredError, RuntimeContext>;
|
|
18
|
+
/** List tunnels in the account. */
|
|
19
|
+
list(request?: ListTunnelsRequest): Effect.Effect<ListTunnelCloudflaredsResponse, ListTunnelCloudflaredsError, RuntimeContext>;
|
|
20
|
+
/** Fetch the connector token used to run the tunnel. */
|
|
21
|
+
getToken(tunnelId: string): Effect.Effect<GetTunnelCloudflaredTokenResponse, GetTunnelCloudflaredTokenError, RuntimeContext>;
|
|
22
|
+
/** Read the remotely-managed configuration (ingress rules) for a tunnel. */
|
|
23
|
+
getConfiguration(tunnelId: string): Effect.Effect<GetTunnelCloudflaredConfigurationResponse, GetTunnelCloudflaredConfigurationError, RuntimeContext>;
|
|
24
|
+
}
|
|
25
|
+
/** Build the read-only client over a bound token. */
|
|
26
|
+
export declare const readClient: (token: TunnelToken) => TunnelReadClient;
|
|
27
|
+
declare const TunnelRead_base: Binding.Service<TunnelRead, "Cloudflare.TunnelRead", () => Effect.Effect<TunnelReadClient, never, Worker>> & {
|
|
28
|
+
bind: () => Effect.Effect<any, any, any>;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Binding that lets a Worker read Cloudflare Tunnels at runtime.
|
|
32
|
+
*
|
|
33
|
+
* Creates a scoped {@link AccountApiToken} with only the `Cloudflare Tunnel
|
|
34
|
+
* Read` permission and binds its outputs into the Worker (the token value as a
|
|
35
|
+
* `secret_text` binding) so runtime code can authenticate.
|
|
36
|
+
*
|
|
37
|
+
* @binding
|
|
38
|
+
*
|
|
39
|
+
* @section Reading tunnels at runtime
|
|
40
|
+
* @example Bind the read client
|
|
41
|
+
* Bind once in the Init phase; every method is available on the returned client.
|
|
42
|
+
* ```typescript
|
|
43
|
+
* const tunnels = yield* Cloudflare.TunnelRead.bind();
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* @example List tunnels
|
|
47
|
+
* ```typescript
|
|
48
|
+
* const { result } = yield* tunnels.list({ isDeleted: false });
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @example Fetch a tunnel and its connector token
|
|
52
|
+
* `getToken` returns the plaintext token used to run `cloudflared`.
|
|
53
|
+
* ```typescript
|
|
54
|
+
* const tunnel = yield* tunnels.get(tunnelId);
|
|
55
|
+
* const token = yield* tunnels.getToken(tunnelId);
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* @example Read the ingress configuration
|
|
59
|
+
* ```typescript
|
|
60
|
+
* const { config } = yield* tunnels.getConfiguration(tunnelId);
|
|
61
|
+
* ```
|
|
62
|
+
*
|
|
63
|
+
* @section Runtime Layer
|
|
64
|
+
* Provide {@link TunnelReadLive} in the Worker's runtime layer.
|
|
65
|
+
* ```typescript
|
|
66
|
+
* Effect.provide(Cloudflare.TunnelReadLive)
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export declare class TunnelRead extends TunnelRead_base {
|
|
70
|
+
}
|
|
71
|
+
declare const TunnelReadPolicy_base: Binding.Policy<TunnelReadPolicy, "Policy<Cloudflare.TunnelRead>", (token: AccountApiToken) => Effect.Effect<void>>;
|
|
72
|
+
/**
|
|
73
|
+
* Deploy-time policy for {@link TunnelRead}. Attaches the `Cloudflare Tunnel
|
|
74
|
+
* Read` permission to the token via its binding contract.
|
|
75
|
+
*/
|
|
76
|
+
export declare class TunnelReadPolicy extends TunnelReadPolicy_base {
|
|
77
|
+
}
|
|
78
|
+
/** Runtime layer for {@link TunnelRead}. */
|
|
79
|
+
export declare const TunnelReadLive: Layer.Layer<TunnelRead, never, any>;
|
|
80
|
+
/** Live deploy-time policy layer for {@link TunnelReadPolicy}. */
|
|
81
|
+
export declare const TunnelReadPolicyLive: Layer.Layer<TunnelReadPolicy, never, import("../CloudflareEnvironment.ts").CloudflareEnvironment>;
|
|
82
|
+
export {};
|
|
83
|
+
//# sourceMappingURL=TunnelRead.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TunnelRead.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Tunnel/TunnelRead.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sCAAsC,EACtC,yCAAyC,EACzC,yBAAyB,EACzB,4BAA4B,EAC5B,8BAA8B,EAC9B,iCAAiC,EACjC,2BAA2B,EAC3B,6BAA6B,EAC7B,8BAA8B,EAC/B,MAAM,wCAAwC,CAAC;AAEhD,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,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,oBAAoB,CAAC;AAE5B,4EAA4E;AAC5E,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,6BAA6B,EAC7B,WAAW,CACZ,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,GAAG,CACD,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,CACd,4BAA4B,EAC5B,yBAAyB,EACzB,cAAc,CACf,CAAC;IACF,mCAAmC;IACnC,IAAI,CACF,OAAO,CAAC,EAAE,kBAAkB,GAC3B,MAAM,CAAC,MAAM,CACd,8BAA8B,EAC9B,2BAA2B,EAC3B,cAAc,CACf,CAAC;IACF,wDAAwD;IACxD,QAAQ,CACN,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,CACd,iCAAiC,EACjC,8BAA8B,EAC9B,cAAc,CACf,CAAC;IACF,4EAA4E;IAC5E,gBAAgB,CACd,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,CACd,yCAAyC,EACzC,sCAAsC,EACtC,cAAc,CACf,CAAC;CACH;AAED,qDAAqD;AACrD,eAAO,MAAM,UAAU,GAAI,OAAO,WAAW,KAAG,gBA8B/C,CAAC;0FA2CM,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,EAAE,MAAM,CAAC;;;AAzCtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qBAAa,UAAW,SAAQ,eAGJ;CAAG;+GAQrB,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AANjD;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,qBAGV;CAAG;AAE/B,4CAA4C;AAC5C,eAAO,MAAM,cAAc,qCAG1B,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,oBAAoB,mGAIhC,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import * as zeroTrust from "@distilled.cloud/cloudflare/zero-trust";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Layer from "effect/Layer";
|
|
4
|
+
import * as Binding from "../../Binding.js";
|
|
5
|
+
import { authorizeWith, makeTunnelClient, makeTunnelPolicyLive, } from "./TunnelBinding.js";
|
|
6
|
+
/** Build the read-only client over a bound token. */
|
|
7
|
+
export const readClient = (token) => {
|
|
8
|
+
const authorize = authorizeWith(token);
|
|
9
|
+
return {
|
|
10
|
+
get: Effect.fn("Cloudflare.Tunnel.get")(function* (tunnelId) {
|
|
11
|
+
const accountId = yield* token.accountId;
|
|
12
|
+
return yield* authorize(zeroTrust.getTunnelCloudflared({ accountId, tunnelId }));
|
|
13
|
+
}),
|
|
14
|
+
list: Effect.fn("Cloudflare.Tunnel.list")(function* (request) {
|
|
15
|
+
const accountId = yield* token.accountId;
|
|
16
|
+
return yield* authorize(zeroTrust.listTunnelCloudflareds({ accountId, ...request }));
|
|
17
|
+
}),
|
|
18
|
+
getToken: Effect.fn("Cloudflare.Tunnel.getToken")(function* (tunnelId) {
|
|
19
|
+
const accountId = yield* token.accountId;
|
|
20
|
+
return yield* authorize(zeroTrust.getTunnelCloudflaredToken({ accountId, tunnelId }));
|
|
21
|
+
}),
|
|
22
|
+
getConfiguration: Effect.fn("Cloudflare.Tunnel.getConfiguration")(function* (tunnelId) {
|
|
23
|
+
const accountId = yield* token.accountId;
|
|
24
|
+
return yield* authorize(zeroTrust.getTunnelCloudflaredConfiguration({ accountId, tunnelId }));
|
|
25
|
+
}),
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Binding that lets a Worker read Cloudflare Tunnels at runtime.
|
|
30
|
+
*
|
|
31
|
+
* Creates a scoped {@link AccountApiToken} with only the `Cloudflare Tunnel
|
|
32
|
+
* Read` permission and binds its outputs into the Worker (the token value as a
|
|
33
|
+
* `secret_text` binding) so runtime code can authenticate.
|
|
34
|
+
*
|
|
35
|
+
* @binding
|
|
36
|
+
*
|
|
37
|
+
* @section Reading tunnels at runtime
|
|
38
|
+
* @example Bind the read client
|
|
39
|
+
* Bind once in the Init phase; every method is available on the returned client.
|
|
40
|
+
* ```typescript
|
|
41
|
+
* const tunnels = yield* Cloudflare.TunnelRead.bind();
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* @example List tunnels
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const { result } = yield* tunnels.list({ isDeleted: false });
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @example Fetch a tunnel and its connector token
|
|
50
|
+
* `getToken` returns the plaintext token used to run `cloudflared`.
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const tunnel = yield* tunnels.get(tunnelId);
|
|
53
|
+
* const token = yield* tunnels.getToken(tunnelId);
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* @example Read the ingress configuration
|
|
57
|
+
* ```typescript
|
|
58
|
+
* const { config } = yield* tunnels.getConfiguration(tunnelId);
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* @section Runtime Layer
|
|
62
|
+
* Provide {@link TunnelReadLive} in the Worker's runtime layer.
|
|
63
|
+
* ```typescript
|
|
64
|
+
* Effect.provide(Cloudflare.TunnelReadLive)
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export class TunnelRead extends Binding.Service()("Cloudflare.TunnelRead") {
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Deploy-time policy for {@link TunnelRead}. Attaches the `Cloudflare Tunnel
|
|
71
|
+
* Read` permission to the token via its binding contract.
|
|
72
|
+
*/
|
|
73
|
+
export class TunnelReadPolicy extends Binding.Policy()("Cloudflare.TunnelRead") {
|
|
74
|
+
}
|
|
75
|
+
/** Runtime layer for {@link TunnelRead}. */
|
|
76
|
+
export const TunnelReadLive = Layer.effect(TunnelRead, makeTunnelClient(TunnelReadPolicy, readClient));
|
|
77
|
+
/** Live deploy-time policy layer for {@link TunnelReadPolicy}. */
|
|
78
|
+
export const TunnelReadPolicyLive = makeTunnelPolicyLive(TunnelReadPolicy, "Cloudflare.TunnelRead", ["Cloudflare Tunnel Read"]);
|
|
79
|
+
//# sourceMappingURL=TunnelRead.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TunnelRead.js","sourceRoot":"","sources":["../../../src/Cloudflare/Tunnel/TunnelRead.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,SAAS,MAAM,wCAAwC,CAAC;AACpE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAI5C,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,oBAAoB,GAErB,MAAM,oBAAoB,CAAC;AA+C5B,qDAAqD;AACrD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAkB,EAAoB,EAAE;IACjE,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC,EAAE,QAAQ;YACzD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;YACzC,OAAO,KAAK,CAAC,CAAC,SAAS,CACrB,SAAS,CAAC,oBAAoB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CACxD,CAAC;QACJ,CAAC,CAAC;QACF,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO;YAC1D,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;YACzC,OAAO,KAAK,CAAC,CAAC,SAAS,CACrB,SAAS,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC,CAC5D,CAAC;QACJ,CAAC,CAAC;QACF,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,4BAA4B,CAAC,CAAC,QAAQ,CAAC,EAAE,QAAQ;YACnE,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;YACzC,OAAO,KAAK,CAAC,CAAC,SAAS,CACrB,SAAS,CAAC,yBAAyB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAC7D,CAAC;QACJ,CAAC,CAAC;QACF,gBAAgB,EAAE,MAAM,CAAC,EAAE,CAAC,oCAAoC,CAAC,CAC/D,QAAQ,CAAC,EAAE,QAAQ;YACjB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;YACzC,OAAO,KAAK,CAAC,CAAC,SAAS,CACrB,SAAS,CAAC,iCAAiC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CACrE,CAAC;QACJ,CAAC,CACF;KACF,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,OAAO,UAAW,SAAQ,OAAO,CAAC,OAAO,EAG5C,CAAC,uBAAuB,CAAC;CAAG;AAE/B;;;GAGG;AACH,MAAM,OAAO,gBAAiB,SAAQ,OAAO,CAAC,MAAM,EAGjD,CAAC,uBAAuB,CAAC;CAAG;AAE/B,4CAA4C;AAC5C,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CACxC,UAAU,EACV,gBAAgB,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAC/C,CAAC;AAEF,kEAAkE;AAClE,MAAM,CAAC,MAAM,oBAAoB,GAAG,oBAAoB,CACtD,gBAAgB,EAChB,uBAAuB,EACvB,CAAC,wBAAwB,CAAC,CAC3B,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
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 { Worker } from "../Workers/Worker.ts";
|
|
6
|
+
import { type TunnelToken } from "./TunnelBinding.ts";
|
|
7
|
+
import { type TunnelReadClient } from "./TunnelRead.ts";
|
|
8
|
+
import { type TunnelWriteClient } from "./TunnelWrite.ts";
|
|
9
|
+
/** Combined read + write tunnel operations. */
|
|
10
|
+
export interface TunnelReadWriteClient extends TunnelReadClient, TunnelWriteClient {
|
|
11
|
+
}
|
|
12
|
+
/** Build the combined read + write client over a bound token. */
|
|
13
|
+
export declare const readWriteClient: (token: TunnelToken) => TunnelReadWriteClient;
|
|
14
|
+
declare const TunnelReadWrite_base: Binding.Service<TunnelReadWrite, "Cloudflare.TunnelReadWrite", () => Effect.Effect<TunnelReadWriteClient, never, Worker>> & {
|
|
15
|
+
bind: () => Effect.Effect<any, any, any>;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Binding that lets a Worker perform the full Cloudflare Tunnel CRUD surface at
|
|
19
|
+
* runtime.
|
|
20
|
+
*
|
|
21
|
+
* Creates a scoped {@link AccountApiToken} with both the `Cloudflare Tunnel
|
|
22
|
+
* Read` and `Cloudflare Tunnel Write` permissions and binds its outputs into
|
|
23
|
+
* the Worker (the token value as a `secret_text` binding) so runtime code can
|
|
24
|
+
* authenticate.
|
|
25
|
+
*
|
|
26
|
+
* @binding
|
|
27
|
+
*
|
|
28
|
+
* @section Managing tunnels at runtime
|
|
29
|
+
* @example Create, configure, and delete a tunnel from a request handler
|
|
30
|
+
* ```typescript
|
|
31
|
+
* // init
|
|
32
|
+
* const tunnels = yield* Cloudflare.TunnelReadWrite.bind();
|
|
33
|
+
*
|
|
34
|
+
* return {
|
|
35
|
+
* fetch: Effect.gen(function* () {
|
|
36
|
+
* const tunnel = yield* tunnels.create({ name: "on-demand-tunnel" });
|
|
37
|
+
* yield* tunnels.putConfiguration(tunnel.id!, {
|
|
38
|
+
* ingress: [
|
|
39
|
+
* { hostname: "app.example.com", service: "http://localhost:3000" },
|
|
40
|
+
* { service: "http_status:404" },
|
|
41
|
+
* ],
|
|
42
|
+
* });
|
|
43
|
+
* const token = yield* tunnels.getToken(tunnel.id!);
|
|
44
|
+
* return HttpServerResponse.json({ id: tunnel.id, token });
|
|
45
|
+
* }),
|
|
46
|
+
* };
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @section Runtime Layer
|
|
50
|
+
* Provide {@link TunnelReadWriteLive} in the Worker's runtime layer.
|
|
51
|
+
* ```typescript
|
|
52
|
+
* Effect.provide(Cloudflare.TunnelReadWriteLive)
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export declare class TunnelReadWrite extends TunnelReadWrite_base {
|
|
56
|
+
}
|
|
57
|
+
declare const TunnelReadWritePolicy_base: Binding.Policy<TunnelReadWritePolicy, "Policy<Cloudflare.TunnelReadWrite>", (token: AccountApiToken) => Effect.Effect<void>>;
|
|
58
|
+
/**
|
|
59
|
+
* Deploy-time policy for {@link TunnelReadWrite}. Attaches both the `Cloudflare
|
|
60
|
+
* Tunnel Read` and `Cloudflare Tunnel Write` permissions to the token via its
|
|
61
|
+
* binding contract.
|
|
62
|
+
*/
|
|
63
|
+
export declare class TunnelReadWritePolicy extends TunnelReadWritePolicy_base {
|
|
64
|
+
}
|
|
65
|
+
/** Runtime layer for {@link TunnelReadWrite}. */
|
|
66
|
+
export declare const TunnelReadWriteLive: Layer.Layer<TunnelReadWrite, never, any>;
|
|
67
|
+
/** Live deploy-time policy layer for {@link TunnelReadWritePolicy}. */
|
|
68
|
+
export declare const TunnelReadWritePolicyLive: Layer.Layer<TunnelReadWritePolicy, never, import("../CloudflareEnvironment.ts").CloudflareEnvironment>;
|
|
69
|
+
export {};
|
|
70
|
+
//# sourceMappingURL=TunnelReadWrite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TunnelReadWrite.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Tunnel/TunnelReadWrite.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,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEvE,+CAA+C;AAC/C,MAAM,WAAW,qBACf,SAAQ,gBAAgB,EAAE,iBAAiB;CAAG;AAEhD,iEAAiE;AACjE,eAAO,MAAM,eAAe,GAAI,OAAO,WAAW,KAAG,qBAGnD,CAAC;yGA0CK,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,KAAK,EAAE,MAAM,CAAC;;;AAxC3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBAAa,eAAgB,SAAQ,oBAGJ;CAAG;8HAS1B,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAPjD;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,0BAGV;CAAG;AAEpC,iDAAiD;AACjD,eAAO,MAAM,mBAAmB,0CAG/B,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,yBAAyB,wGAIrC,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Layer from "effect/Layer";
|
|
3
|
+
import * as Binding from "../../Binding.js";
|
|
4
|
+
import { makeTunnelClient, makeTunnelPolicyLive, } from "./TunnelBinding.js";
|
|
5
|
+
import { readClient } from "./TunnelRead.js";
|
|
6
|
+
import { writeClient } from "./TunnelWrite.js";
|
|
7
|
+
/** Build the combined read + write client over a bound token. */
|
|
8
|
+
export const readWriteClient = (token) => ({
|
|
9
|
+
...readClient(token),
|
|
10
|
+
...writeClient(token),
|
|
11
|
+
});
|
|
12
|
+
/**
|
|
13
|
+
* Binding that lets a Worker perform the full Cloudflare Tunnel CRUD surface at
|
|
14
|
+
* runtime.
|
|
15
|
+
*
|
|
16
|
+
* Creates a scoped {@link AccountApiToken} with both the `Cloudflare Tunnel
|
|
17
|
+
* Read` and `Cloudflare Tunnel Write` permissions and binds its outputs into
|
|
18
|
+
* the Worker (the token value as a `secret_text` binding) so runtime code can
|
|
19
|
+
* authenticate.
|
|
20
|
+
*
|
|
21
|
+
* @binding
|
|
22
|
+
*
|
|
23
|
+
* @section Managing tunnels at runtime
|
|
24
|
+
* @example Create, configure, and delete a tunnel from a request handler
|
|
25
|
+
* ```typescript
|
|
26
|
+
* // init
|
|
27
|
+
* const tunnels = yield* Cloudflare.TunnelReadWrite.bind();
|
|
28
|
+
*
|
|
29
|
+
* return {
|
|
30
|
+
* fetch: Effect.gen(function* () {
|
|
31
|
+
* const tunnel = yield* tunnels.create({ name: "on-demand-tunnel" });
|
|
32
|
+
* yield* tunnels.putConfiguration(tunnel.id!, {
|
|
33
|
+
* ingress: [
|
|
34
|
+
* { hostname: "app.example.com", service: "http://localhost:3000" },
|
|
35
|
+
* { service: "http_status:404" },
|
|
36
|
+
* ],
|
|
37
|
+
* });
|
|
38
|
+
* const token = yield* tunnels.getToken(tunnel.id!);
|
|
39
|
+
* return HttpServerResponse.json({ id: tunnel.id, token });
|
|
40
|
+
* }),
|
|
41
|
+
* };
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* @section Runtime Layer
|
|
45
|
+
* Provide {@link TunnelReadWriteLive} in the Worker's runtime layer.
|
|
46
|
+
* ```typescript
|
|
47
|
+
* Effect.provide(Cloudflare.TunnelReadWriteLive)
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export class TunnelReadWrite extends Binding.Service()("Cloudflare.TunnelReadWrite") {
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Deploy-time policy for {@link TunnelReadWrite}. Attaches both the `Cloudflare
|
|
54
|
+
* Tunnel Read` and `Cloudflare Tunnel Write` permissions to the token via its
|
|
55
|
+
* binding contract.
|
|
56
|
+
*/
|
|
57
|
+
export class TunnelReadWritePolicy extends Binding.Policy()("Cloudflare.TunnelReadWrite") {
|
|
58
|
+
}
|
|
59
|
+
/** Runtime layer for {@link TunnelReadWrite}. */
|
|
60
|
+
export const TunnelReadWriteLive = Layer.effect(TunnelReadWrite, makeTunnelClient(TunnelReadWritePolicy, readWriteClient));
|
|
61
|
+
/** Live deploy-time policy layer for {@link TunnelReadWritePolicy}. */
|
|
62
|
+
export const TunnelReadWritePolicyLive = makeTunnelPolicyLive(TunnelReadWritePolicy, "Cloudflare.TunnelReadWrite", ["Cloudflare Tunnel Read", "Cloudflare Tunnel Write"]);
|
|
63
|
+
//# sourceMappingURL=TunnelReadWrite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TunnelReadWrite.js","sourceRoot":"","sources":["../../../src/Cloudflare/Tunnel/TunnelReadWrite.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,EACL,gBAAgB,EAChB,oBAAoB,GAErB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAyB,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,WAAW,EAA0B,MAAM,kBAAkB,CAAC;AAMvE,iEAAiE;AACjE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAkB,EAAyB,EAAE,CAAC,CAAC;IAC7E,GAAG,UAAU,CAAC,KAAK,CAAC;IACpB,GAAG,WAAW,CAAC,KAAK,CAAC;CACtB,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,OAAO,eAAgB,SAAQ,OAAO,CAAC,OAAO,EAGjD,CAAC,4BAA4B,CAAC;CAAG;AAEpC;;;;GAIG;AACH,MAAM,OAAO,qBAAsB,SAAQ,OAAO,CAAC,MAAM,EAGtD,CAAC,4BAA4B,CAAC;CAAG;AAEpC,iDAAiD;AACjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAC7C,eAAe,EACf,gBAAgB,CAAC,qBAAqB,EAAE,eAAe,CAAC,CACzD,CAAC;AAEF,uEAAuE;AACvE,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAAoB,CAC3D,qBAAqB,EACrB,4BAA4B,EAC5B,CAAC,wBAAwB,EAAE,yBAAyB,CAAC,CACtD,CAAC"}
|