alchemy 0.93.6 → 0.93.9
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/alchemy.js +1966 -1825
- package/bin/alchemy.ts +2 -0
- package/bin/commands/state.ts +58 -0
- package/bin/services/execute-alchemy.ts +9 -1
- package/lib/alchemy.d.ts.map +1 -1
- package/lib/alchemy.js +7 -0
- package/lib/alchemy.js.map +1 -1
- package/lib/cloudflare/access-application.d.ts +204 -0
- package/lib/cloudflare/access-application.d.ts.map +1 -0
- package/lib/cloudflare/access-application.js +205 -0
- package/lib/cloudflare/access-application.js.map +1 -0
- package/lib/cloudflare/access-group.d.ts +115 -0
- package/lib/cloudflare/access-group.d.ts.map +1 -0
- package/lib/cloudflare/access-group.js +147 -0
- package/lib/cloudflare/access-group.js.map +1 -0
- package/lib/cloudflare/access-identity-provider.d.ts +261 -0
- package/lib/cloudflare/access-identity-provider.d.ts.map +1 -0
- package/lib/cloudflare/access-identity-provider.js +229 -0
- package/lib/cloudflare/access-identity-provider.js.map +1 -0
- package/lib/cloudflare/access-policy.d.ts +168 -0
- package/lib/cloudflare/access-policy.d.ts.map +1 -0
- package/lib/cloudflare/access-policy.js +176 -0
- package/lib/cloudflare/access-policy.js.map +1 -0
- package/lib/cloudflare/access-rule.d.ts +248 -0
- package/lib/cloudflare/access-rule.d.ts.map +1 -0
- package/lib/cloudflare/access-rule.js +37 -0
- package/lib/cloudflare/access-rule.js.map +1 -0
- package/lib/cloudflare/access-service-token.d.ts +86 -0
- package/lib/cloudflare/access-service-token.d.ts.map +1 -0
- package/lib/cloudflare/access-service-token.js +127 -0
- package/lib/cloudflare/access-service-token.js.map +1 -0
- package/lib/cloudflare/index.d.ts +6 -0
- package/lib/cloudflare/index.d.ts.map +1 -1
- package/lib/cloudflare/index.js +6 -0
- package/lib/cloudflare/index.js.map +1 -1
- package/lib/cloudflare/miniflare/tunnel.d.ts.map +1 -1
- package/lib/cloudflare/miniflare/tunnel.js +10 -5
- package/lib/cloudflare/miniflare/tunnel.js.map +1 -1
- package/lib/state/file-system-state-store.d.ts +1 -0
- package/lib/state/file-system-state-store.d.ts.map +1 -1
- package/lib/state/file-system-state-store.js +16 -0
- package/lib/state/file-system-state-store.js.map +1 -1
- package/lib/state/operations.d.ts +1 -0
- package/lib/state/operations.d.ts.map +1 -1
- package/lib/state/operations.js +24 -0
- package/lib/state/operations.js.map +1 -1
- package/lib/state/proxy.d.ts +1 -0
- package/lib/state/proxy.d.ts.map +1 -1
- package/lib/state/proxy.js +3 -0
- package/lib/state/proxy.js.map +1 -1
- package/lib/state-cli.d.ts +9 -0
- package/lib/state-cli.d.ts.map +1 -0
- package/lib/state-cli.js +110 -0
- package/lib/state-cli.js.map +1 -0
- package/lib/state.d.ts +2 -0
- package/lib/state.d.ts.map +1 -1
- package/lib/stripe/price.d.ts.map +1 -1
- package/lib/stripe/price.js +13 -3
- package/lib/stripe/price.js.map +1 -1
- package/package.json +1 -1
- package/src/alchemy.ts +9 -0
- package/src/cloudflare/access-application.ts +489 -0
- package/src/cloudflare/access-group.ts +271 -0
- package/src/cloudflare/access-identity-provider.ts +584 -0
- package/src/cloudflare/access-policy.ts +392 -0
- package/src/cloudflare/access-rule.ts +307 -0
- package/src/cloudflare/access-service-token.ts +255 -0
- package/src/cloudflare/index.ts +6 -0
- package/src/cloudflare/miniflare/tunnel.ts +10 -5
- package/src/state/file-system-state-store.ts +16 -0
- package/src/state/operations.ts +22 -0
- package/src/state/proxy.ts +4 -0
- package/src/state-cli.ts +134 -0
- package/src/state.ts +2 -0
- package/src/stripe/price.ts +13 -3
- package/workers/cloudflare-state-store.js +17 -0
- package/workers/tunnel-proxy.js +3 -1
- package/workers/tunnel-proxy.ts +2 -0
package/bin/alchemy.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { init } from "./commands/init.ts";
|
|
|
8
8
|
import { login } from "./commands/login.ts";
|
|
9
9
|
import { logout } from "./commands/logout.ts";
|
|
10
10
|
import { run } from "./commands/run.ts";
|
|
11
|
+
import { state } from "./commands/state.ts";
|
|
11
12
|
import { telemetry } from "./commands/telemetry.ts";
|
|
12
13
|
import { util } from "./commands/util.ts";
|
|
13
14
|
import { getPackageVersion } from "./services/get-package-version.ts";
|
|
@@ -23,6 +24,7 @@ const router = t.router({
|
|
|
23
24
|
logout,
|
|
24
25
|
configure,
|
|
25
26
|
run,
|
|
27
|
+
state,
|
|
26
28
|
telemetry,
|
|
27
29
|
util,
|
|
28
30
|
});
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import z from "zod";
|
|
2
|
+
import {
|
|
3
|
+
entrypoint,
|
|
4
|
+
execAlchemy,
|
|
5
|
+
execArgs,
|
|
6
|
+
} from "../services/execute-alchemy.ts";
|
|
7
|
+
import { loggedProcedure, t } from "../trpc.ts";
|
|
8
|
+
|
|
9
|
+
const tree = loggedProcedure
|
|
10
|
+
.meta({
|
|
11
|
+
description:
|
|
12
|
+
"Print a tree of all stages, scopes, and resources in the configured state store",
|
|
13
|
+
})
|
|
14
|
+
.input(z.tuple([entrypoint, z.object(execArgs)]))
|
|
15
|
+
.mutation(async ({ input: [main, options] }) =>
|
|
16
|
+
execAlchemy(main, {
|
|
17
|
+
...options,
|
|
18
|
+
stateCmd: "tree",
|
|
19
|
+
}),
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
const list = loggedProcedure
|
|
23
|
+
.meta({
|
|
24
|
+
description:
|
|
25
|
+
"List the fully-qualified resource names tracked by the configured state store",
|
|
26
|
+
})
|
|
27
|
+
.input(z.tuple([entrypoint, z.object(execArgs)]))
|
|
28
|
+
.mutation(async ({ input: [main, options] }) =>
|
|
29
|
+
execAlchemy(main, {
|
|
30
|
+
...options,
|
|
31
|
+
stateCmd: "list",
|
|
32
|
+
}),
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
const get = loggedProcedure
|
|
36
|
+
.meta({
|
|
37
|
+
description: "Print the JSON-encoded state for a single resource",
|
|
38
|
+
})
|
|
39
|
+
.input(
|
|
40
|
+
z.tuple([
|
|
41
|
+
z.string().describe("Fully-qualified resource name (app/stage/.../id)"),
|
|
42
|
+
entrypoint,
|
|
43
|
+
z.object(execArgs),
|
|
44
|
+
]),
|
|
45
|
+
)
|
|
46
|
+
.mutation(async ({ input: [fqn, main, options] }) =>
|
|
47
|
+
execAlchemy(main, {
|
|
48
|
+
...options,
|
|
49
|
+
stateCmd: "get",
|
|
50
|
+
stateArg: fqn,
|
|
51
|
+
}),
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
export const state = t.router({
|
|
55
|
+
tree,
|
|
56
|
+
list,
|
|
57
|
+
get,
|
|
58
|
+
});
|
|
@@ -112,6 +112,8 @@ export async function execAlchemy(
|
|
|
112
112
|
rootDir,
|
|
113
113
|
profile,
|
|
114
114
|
eraseSecrets,
|
|
115
|
+
stateCmd,
|
|
116
|
+
stateArg,
|
|
115
117
|
}: {
|
|
116
118
|
cwd?: string;
|
|
117
119
|
quiet?: boolean;
|
|
@@ -130,6 +132,8 @@ export async function execAlchemy(
|
|
|
130
132
|
rootDir?: string;
|
|
131
133
|
profile?: string;
|
|
132
134
|
eraseSecrets?: boolean;
|
|
135
|
+
stateCmd?: "tree" | "list" | "get";
|
|
136
|
+
stateArg?: string;
|
|
133
137
|
},
|
|
134
138
|
) {
|
|
135
139
|
const args: string[] = [];
|
|
@@ -146,7 +150,7 @@ export async function execAlchemy(
|
|
|
146
150
|
}`,
|
|
147
151
|
);
|
|
148
152
|
|
|
149
|
-
if (quiet) args.push("--quiet");
|
|
153
|
+
if (quiet || stateCmd) args.push("--quiet");
|
|
150
154
|
if (read) args.push("--read");
|
|
151
155
|
if (force) args.push("--force");
|
|
152
156
|
if (stage) args.push(`--stage ${stage}`);
|
|
@@ -175,6 +179,10 @@ export async function execAlchemy(
|
|
|
175
179
|
if (eraseSecrets) args.push("--erase-secrets");
|
|
176
180
|
if (profile) args.push(`--profile ${profile}`);
|
|
177
181
|
if (app) args.push(`--app ${app}`);
|
|
182
|
+
if (stateCmd) {
|
|
183
|
+
args.push(`--state-cmd ${stateCmd}`);
|
|
184
|
+
if (stateArg) args.push(`--state-arg ${stateArg}`);
|
|
185
|
+
}
|
|
178
186
|
if (rootDir) {
|
|
179
187
|
args.push(`--root-dir ${rootDir}`);
|
|
180
188
|
} else if (app) {
|
package/lib/alchemy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alchemy.d.ts","sourceRoot":"","sources":["../src/alchemy.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,OAAO,EAAqB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"alchemy.d.ts","sourceRoot":"","sources":["../src/alchemy.ts"],"names":[],"mappings":"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"}
|
package/lib/alchemy.js
CHANGED
|
@@ -3,6 +3,7 @@ import path from "pathe";
|
|
|
3
3
|
import { onExit } from "signal-exit";
|
|
4
4
|
import { isReplacedSignal } from "./apply.js";
|
|
5
5
|
import { DestroyStrategy, destroy, isDestroyedSignal } from "./destroy.js";
|
|
6
|
+
import { runStateCommand } from "./state-cli.js";
|
|
6
7
|
import { env } from "./env.js";
|
|
7
8
|
import { ResourceFQN, ResourceID, ResourceKind, ResourceScope, ResourceSeq, } from "./resource.js";
|
|
8
9
|
import { DEFAULT_STAGE, Scope } from "./scope.js";
|
|
@@ -132,6 +133,12 @@ If this is a mistake, you can disable this check by setting the ALCHEMY_CI_STATE
|
|
|
132
133
|
});
|
|
133
134
|
Scope.storage.enterWith(root);
|
|
134
135
|
Scope.storage.enterWith(stage);
|
|
136
|
+
const stateCmd = parseOption("--state-cmd");
|
|
137
|
+
if (stateCmd) {
|
|
138
|
+
const stateArg = parseOption("--state-arg");
|
|
139
|
+
await runStateCommand(stage, stateCmd, stateArg);
|
|
140
|
+
return process.exit(0);
|
|
141
|
+
}
|
|
135
142
|
if (mergedOptions?.phase === "destroy") {
|
|
136
143
|
const err = await destroy(stage).catch((e) => e);
|
|
137
144
|
if (!options?.noTrack) {
|
package/lib/alchemy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alchemy.js","sourceRoot":"","sources":["../src/alchemy.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"alchemy.js","sourceRoot":"","sources":["../src/alchemy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import type { Context } from "../context.ts";
|
|
2
|
+
import type { Secret } from "../secret.ts";
|
|
3
|
+
import type { AccessIdentityProvider } from "./access-identity-provider.ts";
|
|
4
|
+
import type { AccessPolicy } from "./access-policy.ts";
|
|
5
|
+
import { type CloudflareApiOptions } from "./api.ts";
|
|
6
|
+
import { type Zone } from "./zone.ts";
|
|
7
|
+
/**
|
|
8
|
+
* Cloudflare Access application types. Three are strictly typed below;
|
|
9
|
+
* everything else falls back to {@link OtherAccessApplicationProps}.
|
|
10
|
+
*
|
|
11
|
+
* @see https://developers.cloudflare.com/cloudflare-one/applications/
|
|
12
|
+
*/
|
|
13
|
+
export type AccessApplicationType = "self_hosted" | "saas" | "bookmark" | "ssh" | "vnc" | "rdp" | "app_launcher" | "warp" | "biso" | "dash_sso" | "infrastructure" | "mcp" | "mcp_portal" | "proxy_endpoint" | (string & {});
|
|
14
|
+
interface BaseAccessApplicationProps extends CloudflareApiOptions {
|
|
15
|
+
/**
|
|
16
|
+
* Display name shown in the Access dashboard.
|
|
17
|
+
*
|
|
18
|
+
* @default ${app}-${stage}-${id}
|
|
19
|
+
*/
|
|
20
|
+
name?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Identity providers permitted to authenticate to this application.
|
|
23
|
+
* If unset, all account IdPs are allowed.
|
|
24
|
+
*/
|
|
25
|
+
allowedIdps?: (string | AccessIdentityProvider)[];
|
|
26
|
+
/**
|
|
27
|
+
* Reusable Access policies attached to this application, in priority order.
|
|
28
|
+
*/
|
|
29
|
+
policies?: (string | AccessPolicy)[];
|
|
30
|
+
/** Cloudflare duration string, e.g. `"24h"`. */
|
|
31
|
+
sessionDuration?: string;
|
|
32
|
+
/** Show this app in the user-facing App Launcher. */
|
|
33
|
+
appLauncherVisible?: boolean;
|
|
34
|
+
/** Skip the IdP-selection screen when only one IdP applies. */
|
|
35
|
+
autoRedirectToIdentity?: boolean;
|
|
36
|
+
/** Custom message shown to denied users. */
|
|
37
|
+
customDenyMessage?: string;
|
|
38
|
+
/** URL users are redirected to when denied. */
|
|
39
|
+
customDenyUrl?: string;
|
|
40
|
+
/** URL non-identity users (e.g. service tokens) are redirected to when denied. */
|
|
41
|
+
customNonIdentityDenyUrl?: string;
|
|
42
|
+
/** Free-form labels for grouping applications. */
|
|
43
|
+
tags?: string[];
|
|
44
|
+
/** Skip the Access interstitial page on first load. */
|
|
45
|
+
skipInterstitial?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* For service-token authenticated requests, return 401 on failure
|
|
48
|
+
* (instead of redirecting).
|
|
49
|
+
*/
|
|
50
|
+
serviceAuth401Redirect?: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Adopt an existing application with the same name instead of failing.
|
|
53
|
+
*
|
|
54
|
+
* @default false
|
|
55
|
+
*/
|
|
56
|
+
adopt?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Whether to delete the application when removed from Alchemy.
|
|
59
|
+
*
|
|
60
|
+
* @default true
|
|
61
|
+
*/
|
|
62
|
+
delete?: boolean;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* A self-hosted application protected by Access at a specific domain.
|
|
66
|
+
*/
|
|
67
|
+
export interface SelfHostedAccessApplicationProps extends BaseAccessApplicationProps {
|
|
68
|
+
type: "self_hosted";
|
|
69
|
+
/** Hostname (or hostname/path prefix) the application lives at. */
|
|
70
|
+
domain: string;
|
|
71
|
+
/**
|
|
72
|
+
* Bind the application to a specific zone. If omitted, the application
|
|
73
|
+
* is account-scoped. Moving between scopes triggers replacement.
|
|
74
|
+
*/
|
|
75
|
+
zone?: string | Zone;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* SaaS OIDC integration configuration.
|
|
79
|
+
*/
|
|
80
|
+
export interface SaasOidcConfig {
|
|
81
|
+
authType: "oidc";
|
|
82
|
+
redirectUris: string[];
|
|
83
|
+
scopes?: ("openid" | "groups" | "email" | "profile")[];
|
|
84
|
+
groupFilterRegex?: string;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* SaaS SAML 2.0 integration configuration.
|
|
88
|
+
*/
|
|
89
|
+
export interface SaasSamlConfig {
|
|
90
|
+
authType: "saml";
|
|
91
|
+
spEntityId: string;
|
|
92
|
+
consumerServiceUrl: string;
|
|
93
|
+
nameIdFormat?: string;
|
|
94
|
+
defaultRelayState?: string;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* A SaaS application — Cloudflare brokers SSO between your IdP and the SaaS
|
|
98
|
+
* vendor over either OIDC or SAML.
|
|
99
|
+
*/
|
|
100
|
+
export interface SaasAccessApplicationProps extends BaseAccessApplicationProps {
|
|
101
|
+
type: "saas";
|
|
102
|
+
saas: SaasOidcConfig | SaasSamlConfig;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* A bookmark — a vanity link in the Access launcher with no policy
|
|
106
|
+
* enforcement.
|
|
107
|
+
*/
|
|
108
|
+
export interface BookmarkAccessApplicationProps extends BaseAccessApplicationProps {
|
|
109
|
+
type: "bookmark";
|
|
110
|
+
/** URL the bookmark points to. */
|
|
111
|
+
domain: string;
|
|
112
|
+
/**
|
|
113
|
+
* Bind the bookmark to a zone. If omitted, the bookmark is account-scoped.
|
|
114
|
+
*/
|
|
115
|
+
zone?: string | Zone;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Catch-all variant for application types not covered by a strict variant
|
|
119
|
+
* (`ssh`, `vnc`, `rdp`, `app_launcher`, `warp`, `biso`, `dash_sso`,
|
|
120
|
+
* `infrastructure`, `mcp`, `mcp_portal`, `proxy_endpoint`, or future types).
|
|
121
|
+
*/
|
|
122
|
+
export interface OtherAccessApplicationProps extends BaseAccessApplicationProps {
|
|
123
|
+
type: Exclude<AccessApplicationType, "self_hosted" | "saas" | "bookmark">;
|
|
124
|
+
/** Required for `ssh`, `vnc`, `rdp`, `proxy_endpoint`. */
|
|
125
|
+
domain?: string;
|
|
126
|
+
/** Zone-scope the application where supported by the type. */
|
|
127
|
+
zone?: string | Zone;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Properties for creating or updating an {@link AccessApplication}.
|
|
131
|
+
*/
|
|
132
|
+
export type AccessApplicationProps = SelfHostedAccessApplicationProps | SaasAccessApplicationProps | BookmarkAccessApplicationProps | OtherAccessApplicationProps;
|
|
133
|
+
/**
|
|
134
|
+
* Output for an {@link AccessApplication}.
|
|
135
|
+
*/
|
|
136
|
+
export type AccessApplication = Omit<AccessApplicationProps, "adopt" | "delete" | "zone"> & {
|
|
137
|
+
/** Cloudflare-assigned application UUID. */
|
|
138
|
+
id: string;
|
|
139
|
+
/** Display name. */
|
|
140
|
+
name: string;
|
|
141
|
+
/**
|
|
142
|
+
* Audience tag (used to validate Access JWTs at your origin).
|
|
143
|
+
*/
|
|
144
|
+
aud: string;
|
|
145
|
+
/**
|
|
146
|
+
* Resolved zone ID, if the application is zone-scoped.
|
|
147
|
+
*/
|
|
148
|
+
zoneId?: string;
|
|
149
|
+
/**
|
|
150
|
+
* SaaS OIDC client identifier (only set for SaaS OIDC apps).
|
|
151
|
+
*/
|
|
152
|
+
clientId?: string;
|
|
153
|
+
/**
|
|
154
|
+
* SaaS OIDC client secret (only returned on creation; retained on update).
|
|
155
|
+
*/
|
|
156
|
+
clientSecret?: Secret;
|
|
157
|
+
/** ISO 8601 creation timestamp. */
|
|
158
|
+
createdAt: string;
|
|
159
|
+
/** ISO 8601 last-update timestamp. */
|
|
160
|
+
updatedAt: string;
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* Type guard for {@link AccessApplication}.
|
|
164
|
+
*/
|
|
165
|
+
export declare function isAccessApplication(resource: any): resource is AccessApplication;
|
|
166
|
+
/**
|
|
167
|
+
* Creates a Cloudflare Zero Trust [Access application](https://developers.cloudflare.com/cloudflare-one/applications/)
|
|
168
|
+
* — a protected resource users authenticate to via Access.
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* // Self-hosted application protected by an Access policy.
|
|
172
|
+
* const app = await AccessApplication("admin", {
|
|
173
|
+
* type: "self_hosted",
|
|
174
|
+
* name: "Internal Admin",
|
|
175
|
+
* domain: "admin.acme.com",
|
|
176
|
+
* policies: [employeesPolicy],
|
|
177
|
+
* sessionDuration: "8h",
|
|
178
|
+
* });
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* // Bookmark in the Access launcher.
|
|
182
|
+
* const wiki = await AccessApplication("wiki", {
|
|
183
|
+
* type: "bookmark",
|
|
184
|
+
* name: "Internal Wiki",
|
|
185
|
+
* domain: "https://wiki.acme.com",
|
|
186
|
+
* appLauncherVisible: true,
|
|
187
|
+
* });
|
|
188
|
+
*
|
|
189
|
+
* @example
|
|
190
|
+
* // SaaS OIDC integration.
|
|
191
|
+
* const slack = await AccessApplication("slack-saas", {
|
|
192
|
+
* type: "saas",
|
|
193
|
+
* name: "Slack",
|
|
194
|
+
* saas: {
|
|
195
|
+
* authType: "oidc",
|
|
196
|
+
* redirectUris: ["https://acme.slack.com/oidc/callback"],
|
|
197
|
+
* scopes: ["openid", "email", "profile"],
|
|
198
|
+
* },
|
|
199
|
+
* policies: [employeesPolicy],
|
|
200
|
+
* });
|
|
201
|
+
*/
|
|
202
|
+
export declare const AccessApplication: (((this: any, id: string, props?: {}) => never) & (new (_: never) => never)) | ((this: Context<AccessApplication>, id: string, props: AccessApplicationProps) => Promise<AccessApplication>);
|
|
203
|
+
export {};
|
|
204
|
+
//# sourceMappingURL=access-application.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-application.d.ts","sourceRoot":"","sources":["../../src/cloudflare/access-application.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { alchemy } from "../alchemy.js";
|
|
2
|
+
import { Resource, ResourceKind } from "../resource.js";
|
|
3
|
+
import { logger } from "../util/logger.js";
|
|
4
|
+
import { isCloudflareApiError } from "./api-error.js";
|
|
5
|
+
import { extractCloudflareResult, } from "./api-response.js";
|
|
6
|
+
import { createCloudflareApi, } from "./api.js";
|
|
7
|
+
import { findZoneForHostname } from "./zone.js";
|
|
8
|
+
/**
|
|
9
|
+
* Type guard for {@link AccessApplication}.
|
|
10
|
+
*/
|
|
11
|
+
export function isAccessApplication(resource) {
|
|
12
|
+
return resource?.[ResourceKind] === "cloudflare::AccessApplication";
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Creates a Cloudflare Zero Trust [Access application](https://developers.cloudflare.com/cloudflare-one/applications/)
|
|
16
|
+
* — a protected resource users authenticate to via Access.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* // Self-hosted application protected by an Access policy.
|
|
20
|
+
* const app = await AccessApplication("admin", {
|
|
21
|
+
* type: "self_hosted",
|
|
22
|
+
* name: "Internal Admin",
|
|
23
|
+
* domain: "admin.acme.com",
|
|
24
|
+
* policies: [employeesPolicy],
|
|
25
|
+
* sessionDuration: "8h",
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* // Bookmark in the Access launcher.
|
|
30
|
+
* const wiki = await AccessApplication("wiki", {
|
|
31
|
+
* type: "bookmark",
|
|
32
|
+
* name: "Internal Wiki",
|
|
33
|
+
* domain: "https://wiki.acme.com",
|
|
34
|
+
* appLauncherVisible: true,
|
|
35
|
+
* });
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* // SaaS OIDC integration.
|
|
39
|
+
* const slack = await AccessApplication("slack-saas", {
|
|
40
|
+
* type: "saas",
|
|
41
|
+
* name: "Slack",
|
|
42
|
+
* saas: {
|
|
43
|
+
* authType: "oidc",
|
|
44
|
+
* redirectUris: ["https://acme.slack.com/oidc/callback"],
|
|
45
|
+
* scopes: ["openid", "email", "profile"],
|
|
46
|
+
* },
|
|
47
|
+
* policies: [employeesPolicy],
|
|
48
|
+
* });
|
|
49
|
+
*/
|
|
50
|
+
export const AccessApplication = Resource("cloudflare::AccessApplication", async function (id, props) {
|
|
51
|
+
const api = await createCloudflareApi(props);
|
|
52
|
+
const name = props.name ?? this.scope.createPhysicalName(id);
|
|
53
|
+
const zoneId = "zone" in props && props.zone
|
|
54
|
+
? typeof props.zone === "string"
|
|
55
|
+
? (await findZoneForHostname(api, props.zone)).zoneId
|
|
56
|
+
: props.zone.id
|
|
57
|
+
: undefined;
|
|
58
|
+
const basePath = zoneId
|
|
59
|
+
? `/zones/${zoneId}/access/apps`
|
|
60
|
+
: `/accounts/${api.accountId}/access/apps`;
|
|
61
|
+
if (this.phase === "delete") {
|
|
62
|
+
if (this.output?.id && props.delete !== false) {
|
|
63
|
+
const deletePath = this.output.zoneId
|
|
64
|
+
? `/zones/${this.output.zoneId}/access/apps/${this.output.id}`
|
|
65
|
+
: `/accounts/${api.accountId}/access/apps/${this.output.id}`;
|
|
66
|
+
await deleteAccessApplication(api, deletePath);
|
|
67
|
+
}
|
|
68
|
+
return this.destroy();
|
|
69
|
+
}
|
|
70
|
+
// type and zone are immutable — recreate if either changed.
|
|
71
|
+
if (this.phase === "update" && this.output) {
|
|
72
|
+
if (this.output.type !== props.type ||
|
|
73
|
+
(this.output.zoneId ?? undefined) !== (zoneId ?? undefined)) {
|
|
74
|
+
this.replace(true);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (props.type === "self_hosted" &&
|
|
78
|
+
!props.domain) {
|
|
79
|
+
throw new Error(`AccessApplication "${name}": 'domain' is required for self_hosted applications.`);
|
|
80
|
+
}
|
|
81
|
+
const body = {
|
|
82
|
+
name,
|
|
83
|
+
type: props.type,
|
|
84
|
+
};
|
|
85
|
+
if ("domain" in props && props.domain)
|
|
86
|
+
body.domain = props.domain;
|
|
87
|
+
if (props.allowedIdps)
|
|
88
|
+
body.allowed_idps = props.allowedIdps.map((idp) => typeof idp === "string" ? idp : idp.id);
|
|
89
|
+
if (props.policies)
|
|
90
|
+
body.policies = props.policies.map((p) => typeof p === "string" ? p : p.id);
|
|
91
|
+
if (props.sessionDuration !== undefined)
|
|
92
|
+
body.session_duration = props.sessionDuration;
|
|
93
|
+
if (props.appLauncherVisible !== undefined)
|
|
94
|
+
body.app_launcher_visible = props.appLauncherVisible;
|
|
95
|
+
if (props.autoRedirectToIdentity !== undefined)
|
|
96
|
+
body.auto_redirect_to_identity = props.autoRedirectToIdentity;
|
|
97
|
+
if (props.customDenyMessage !== undefined)
|
|
98
|
+
body.custom_deny_message = props.customDenyMessage;
|
|
99
|
+
if (props.customDenyUrl !== undefined)
|
|
100
|
+
body.custom_deny_url = props.customDenyUrl;
|
|
101
|
+
if (props.customNonIdentityDenyUrl !== undefined)
|
|
102
|
+
body.custom_non_identity_deny_url = props.customNonIdentityDenyUrl;
|
|
103
|
+
if (props.tags)
|
|
104
|
+
body.tags = props.tags;
|
|
105
|
+
if (props.skipInterstitial !== undefined)
|
|
106
|
+
body.skip_interstitial = props.skipInterstitial;
|
|
107
|
+
if (props.serviceAuth401Redirect !== undefined)
|
|
108
|
+
body.service_auth_401_redirect = props.serviceAuth401Redirect;
|
|
109
|
+
if (props.type === "saas" && props.saas) {
|
|
110
|
+
const saas = props.saas;
|
|
111
|
+
body.saas =
|
|
112
|
+
saas.authType === "oidc"
|
|
113
|
+
? {
|
|
114
|
+
auth_type: "oidc",
|
|
115
|
+
redirect_uris: saas.redirectUris,
|
|
116
|
+
scopes: saas.scopes,
|
|
117
|
+
group_filter_regex: saas.groupFilterRegex,
|
|
118
|
+
}
|
|
119
|
+
: {
|
|
120
|
+
auth_type: "saml",
|
|
121
|
+
sp_entity_id: saas.spEntityId,
|
|
122
|
+
consumer_service_url: saas.consumerServiceUrl,
|
|
123
|
+
name_id_format: saas.nameIdFormat,
|
|
124
|
+
default_relay_state: saas.defaultRelayState,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
let app;
|
|
128
|
+
if (this.phase === "update" && this.output?.id) {
|
|
129
|
+
const updatePath = this.output.zoneId
|
|
130
|
+
? `/zones/${this.output.zoneId}/access/apps/${this.output.id}`
|
|
131
|
+
: `/accounts/${api.accountId}/access/apps/${this.output.id}`;
|
|
132
|
+
app = await extractCloudflareResult(`update access application "${name}"`, api.put(updatePath, body));
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
const adopt = props.adopt ?? this.scope.adopt;
|
|
136
|
+
try {
|
|
137
|
+
app = await extractCloudflareResult(`create access application "${name}"`, api.post(basePath, body));
|
|
138
|
+
}
|
|
139
|
+
catch (err) {
|
|
140
|
+
if (adopt && isAccessDuplicateNameError(err)) {
|
|
141
|
+
const existing = await findAccessApplicationByName(api, basePath, name);
|
|
142
|
+
if (!existing) {
|
|
143
|
+
throw new Error(`Access application "${name}" already exists but could not be found for adoption.`, { cause: err });
|
|
144
|
+
}
|
|
145
|
+
logger.log(`Adopting existing access application "${name}" (${existing.id})`);
|
|
146
|
+
app = await extractCloudflareResult(`adopt access application "${name}"`, api.put(`${basePath}/${existing.id}`, body));
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
throw err;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// SaaS OIDC client_secret is only returned on POST — retain on update.
|
|
154
|
+
const clientSecret = app.client_secret
|
|
155
|
+
? alchemy.secret(app.client_secret)
|
|
156
|
+
: this.output?.clientSecret;
|
|
157
|
+
const rest = { ...props };
|
|
158
|
+
delete rest.adopt;
|
|
159
|
+
delete rest.delete;
|
|
160
|
+
delete rest.zone;
|
|
161
|
+
return {
|
|
162
|
+
...rest,
|
|
163
|
+
id: app.id,
|
|
164
|
+
name: app.name,
|
|
165
|
+
aud: app.aud,
|
|
166
|
+
zoneId,
|
|
167
|
+
clientId: app.client_id,
|
|
168
|
+
clientSecret,
|
|
169
|
+
createdAt: app.created_at,
|
|
170
|
+
updatedAt: app.updated_at,
|
|
171
|
+
};
|
|
172
|
+
});
|
|
173
|
+
function isAccessDuplicateNameError(err) {
|
|
174
|
+
if (isCloudflareApiError(err, { status: 409 }) ||
|
|
175
|
+
isCloudflareApiError(err, { status: 400 })) {
|
|
176
|
+
const data = err.errorData;
|
|
177
|
+
return (Array.isArray(data) &&
|
|
178
|
+
data.some((e) => "message" in e && /already exists/i.test(String(e.message))));
|
|
179
|
+
}
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
async function findAccessApplicationByName(api, basePath, name) {
|
|
183
|
+
let page = 1;
|
|
184
|
+
const perPage = 50;
|
|
185
|
+
while (true) {
|
|
186
|
+
const response = await api.get(`${basePath}?page=${page}&per_page=${perPage}`);
|
|
187
|
+
if (!response.ok)
|
|
188
|
+
return null;
|
|
189
|
+
const data = (await response.json());
|
|
190
|
+
const match = data.result.find((a) => a.name === name);
|
|
191
|
+
if (match)
|
|
192
|
+
return match;
|
|
193
|
+
const info = data.result_info;
|
|
194
|
+
if (!info || info.page * info.per_page >= info.total_count)
|
|
195
|
+
return null;
|
|
196
|
+
page++;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
async function deleteAccessApplication(api, path) {
|
|
200
|
+
const response = await api.delete(path);
|
|
201
|
+
if (!response.ok && response.status !== 404) {
|
|
202
|
+
logger.error(`Error deleting access application at ${path}: ${response.status} ${response.statusText}`);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=access-application.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-application.js","sourceRoot":"","sources":["../../src/cloudflare/access-application.ts"],"names":[],"mappings":"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"}
|