alchemy 2.0.0-beta.15 → 2.0.0-beta.16
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 +1585 -707
- package/bin/alchemy.js.map +1 -1
- package/bin/alchemy.ts +2 -0
- package/bin/commands/login.ts +6 -3
- package/bin/commands/profile.ts +86 -0
- package/lib/Cloudflare/ApiToken/AccountApiToken.d.ts +2 -3
- package/lib/Cloudflare/ApiToken/AccountApiToken.d.ts.map +1 -1
- package/lib/Cloudflare/ApiToken/AccountApiToken.js +12 -8
- package/lib/Cloudflare/ApiToken/AccountApiToken.js.map +1 -1
- package/lib/Cloudflare/ApiToken/Common.d.ts +6 -1
- package/lib/Cloudflare/ApiToken/Common.d.ts.map +1 -1
- package/lib/Cloudflare/ApiToken/Common.js.map +1 -1
- package/lib/Cloudflare/ApiToken/UserApiToken.d.ts +2 -3
- package/lib/Cloudflare/ApiToken/UserApiToken.d.ts.map +1 -1
- package/lib/Cloudflare/ApiToken/UserApiToken.js +4 -4
- package/lib/Cloudflare/ApiToken/UserApiToken.js.map +1 -1
- package/lib/Cloudflare/Artifacts/Artifacts.d.ts +101 -0
- package/lib/Cloudflare/Artifacts/Artifacts.d.ts.map +1 -0
- package/lib/Cloudflare/Artifacts/Artifacts.js +92 -0
- package/lib/Cloudflare/Artifacts/Artifacts.js.map +1 -0
- package/lib/Cloudflare/Artifacts/ArtifactsBinding.d.ts +83 -0
- package/lib/Cloudflare/Artifacts/ArtifactsBinding.d.ts.map +1 -0
- package/lib/Cloudflare/Artifacts/ArtifactsBinding.js +65 -0
- package/lib/Cloudflare/Artifacts/ArtifactsBinding.js.map +1 -0
- package/lib/Cloudflare/Artifacts/index.d.ts +3 -0
- package/lib/Cloudflare/Artifacts/index.d.ts.map +1 -0
- package/lib/Cloudflare/Artifacts/index.js +3 -0
- package/lib/Cloudflare/Artifacts/index.js.map +1 -0
- package/lib/Cloudflare/Container/ContainerBinding.d.ts +1 -1
- package/lib/Cloudflare/Providers.d.ts.map +1 -1
- package/lib/Cloudflare/Providers.js +3 -1
- package/lib/Cloudflare/Providers.js.map +1 -1
- package/lib/Cloudflare/Workers/InferEnv.d.ts +1 -1
- package/lib/Cloudflare/Workers/InferEnv.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/InferEnv.js +0 -1
- package/lib/Cloudflare/Workers/InferEnv.js.map +1 -1
- package/lib/Cloudflare/Workers/Worker.d.ts +2 -1
- package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Worker.js +25 -18
- package/lib/Cloudflare/Workers/Worker.js.map +1 -1
- package/lib/Cloudflare/index.d.ts +1 -0
- package/lib/Cloudflare/index.d.ts.map +1 -1
- package/lib/Cloudflare/index.js +1 -0
- package/lib/Cloudflare/index.js.map +1 -1
- package/lib/GitHub/AuthProvider.d.ts +37 -0
- package/lib/GitHub/AuthProvider.d.ts.map +1 -0
- package/lib/GitHub/AuthProvider.js +154 -0
- package/lib/GitHub/AuthProvider.js.map +1 -0
- package/lib/GitHub/Credentials.d.ts +29 -0
- package/lib/GitHub/Credentials.d.ts.map +1 -0
- package/lib/GitHub/Credentials.js +54 -0
- package/lib/GitHub/Credentials.js.map +1 -0
- package/lib/GitHub/Providers.d.ts +12 -1
- package/lib/GitHub/Providers.d.ts.map +1 -1
- package/lib/GitHub/Providers.js +13 -3
- package/lib/GitHub/Providers.js.map +1 -1
- package/lib/GitHub/Secret.d.ts +8 -10
- package/lib/GitHub/Secret.d.ts.map +1 -1
- package/lib/GitHub/Secret.js +16 -14
- package/lib/GitHub/Secret.js.map +1 -1
- package/lib/GitHub/Variable.d.ts +8 -10
- package/lib/GitHub/Variable.d.ts.map +1 -1
- package/lib/GitHub/Variable.js +12 -13
- package/lib/GitHub/Variable.js.map +1 -1
- package/lib/GitHub/index.d.ts +2 -0
- package/lib/GitHub/index.d.ts.map +1 -1
- package/lib/GitHub/index.js +2 -0
- package/lib/GitHub/index.js.map +1 -1
- package/package.json +4 -4
- package/src/Cloudflare/ApiToken/AccountApiToken.ts +21 -11
- package/src/Cloudflare/ApiToken/Common.ts +6 -1
- package/src/Cloudflare/ApiToken/UserApiToken.ts +6 -8
- package/src/Cloudflare/Artifacts/Artifacts.ts +139 -0
- package/src/Cloudflare/Artifacts/ArtifactsBinding.ts +188 -0
- package/src/Cloudflare/Artifacts/index.ts +2 -0
- package/src/Cloudflare/Providers.ts +3 -0
- package/src/Cloudflare/Workers/InferEnv.ts +5 -4
- package/src/Cloudflare/Workers/Worker.ts +12 -1
- package/src/Cloudflare/index.ts +1 -0
- package/src/GitHub/AuthProvider.ts +309 -0
- package/src/GitHub/Credentials.ts +99 -0
- package/src/GitHub/Providers.ts +23 -3
- package/src/GitHub/Secret.ts +22 -24
- package/src/GitHub/Variable.ts +16 -23
- package/src/GitHub/index.ts +2 -0
package/bin/alchemy.ts
CHANGED
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
} from "./commands/deploy.ts";
|
|
19
19
|
import { loginCommand } from "./commands/login.ts";
|
|
20
20
|
import { logsCommand } from "./commands/logs.ts";
|
|
21
|
+
import { profileCommand } from "./commands/profile.ts";
|
|
21
22
|
import { stateCommand } from "./commands/state.ts";
|
|
22
23
|
import { tailCommand } from "./commands/tail.ts";
|
|
23
24
|
|
|
@@ -30,6 +31,7 @@ const root = Command.make("alchemy", {}).pipe(
|
|
|
30
31
|
tailCommand,
|
|
31
32
|
logsCommand,
|
|
32
33
|
loginCommand,
|
|
34
|
+
profileCommand,
|
|
33
35
|
stateCommand,
|
|
34
36
|
]),
|
|
35
37
|
);
|
package/bin/commands/login.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as Cause from "effect/Cause";
|
|
1
2
|
import * as Config from "effect/Config";
|
|
2
3
|
import * as ConfigProvider from "effect/ConfigProvider";
|
|
3
4
|
import * as Console from "effect/Console";
|
|
@@ -51,9 +52,11 @@ export const loginCommand = Command.make(
|
|
|
51
52
|
);
|
|
52
53
|
|
|
53
54
|
yield* Effect.gen(function* () {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
yield* Effect.catchCause(stackEffect, (cause) =>
|
|
56
|
+
Console.warn(
|
|
57
|
+
`Ignoring error while building stack for login (likely due to missing or broken credentials):\n${Cause.pretty(cause)}`,
|
|
58
|
+
),
|
|
59
|
+
);
|
|
57
60
|
|
|
58
61
|
const ci = yield* Config.boolean("CI").pipe(Config.withDefault(false));
|
|
59
62
|
const providers = Object.values(authProviders);
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import * as ConfigProvider from "effect/ConfigProvider";
|
|
2
|
+
import * as Console from "effect/Console";
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
import * as Layer from "effect/Layer";
|
|
5
|
+
import * as Logger from "effect/Logger";
|
|
6
|
+
import { Command } from "effect/unstable/cli";
|
|
7
|
+
|
|
8
|
+
import { AuthProviders } from "../../src/Auth/AuthProvider.ts";
|
|
9
|
+
import {
|
|
10
|
+
getProfile,
|
|
11
|
+
readConfig,
|
|
12
|
+
withProfileOverride,
|
|
13
|
+
} from "../../src/Auth/Profile.ts";
|
|
14
|
+
import { AwsAuth } from "../../src/AWS/AuthProvider.ts";
|
|
15
|
+
import { CloudflareAuth } from "../../src/Cloudflare/Auth/AuthProvider.ts";
|
|
16
|
+
import { loadConfigProvider } from "../../src/Util/ConfigProvider.ts";
|
|
17
|
+
import { fileLogger } from "../../src/Util/FileLogger.ts";
|
|
18
|
+
|
|
19
|
+
import { envFile, profile } from "./_shared.ts";
|
|
20
|
+
|
|
21
|
+
const showCommand = Command.make(
|
|
22
|
+
"show",
|
|
23
|
+
{ profile, envFile },
|
|
24
|
+
Effect.fnUntraced(function* ({ profile, envFile }) {
|
|
25
|
+
const stored = yield* getProfile(profile);
|
|
26
|
+
if (stored == null) {
|
|
27
|
+
const config = yield* readConfig;
|
|
28
|
+
const names = Object.keys(config.profiles);
|
|
29
|
+
yield* Console.log(`Profile '${profile}' not found.`);
|
|
30
|
+
if (names.length > 0) {
|
|
31
|
+
yield* Console.log(`Available profiles: ${names.sort().join(", ")}`);
|
|
32
|
+
} else {
|
|
33
|
+
yield* Console.log("No profiles configured. Run `alchemy login`.");
|
|
34
|
+
}
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
yield* Console.log(`Profile: ${profile}`);
|
|
39
|
+
|
|
40
|
+
const providerNames = Object.keys(stored).sort();
|
|
41
|
+
if (providerNames.length === 0) {
|
|
42
|
+
yield* Console.log("(no providers configured)");
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const authProviders: AuthProviders["Service"] = {};
|
|
47
|
+
const authRegistry = Layer.succeed(AuthProviders, authProviders);
|
|
48
|
+
const services = Layer.mergeAll(
|
|
49
|
+
authRegistry,
|
|
50
|
+
ConfigProvider.layer(
|
|
51
|
+
withProfileOverride(yield* loadConfigProvider(envFile), profile),
|
|
52
|
+
),
|
|
53
|
+
Logger.layer([fileLogger("out")]),
|
|
54
|
+
// Building these layers triggers their AuthProviderLayer effect, which
|
|
55
|
+
// registers the provider into the shared `authProviders` registry.
|
|
56
|
+
Layer.provide(Layer.mergeAll(CloudflareAuth, AwsAuth), authRegistry),
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
yield* Effect.gen(function* () {
|
|
60
|
+
for (const name of providerNames) {
|
|
61
|
+
const cfg = stored[name]!;
|
|
62
|
+
yield* Console.log("");
|
|
63
|
+
yield* Console.log(`── ${name} ──`);
|
|
64
|
+
const provider = authProviders[name];
|
|
65
|
+
if (provider == null) {
|
|
66
|
+
// Unknown provider — fall back to a JSON dump so the user can still
|
|
67
|
+
// see what's stored even if its module isn't bundled into the CLI.
|
|
68
|
+
yield* Console.log(`method: ${cfg.method}`);
|
|
69
|
+
const { method: _method, ...rest } = cfg as Record<string, unknown> &
|
|
70
|
+
{ method: string };
|
|
71
|
+
for (const [k, v] of Object.entries(rest)) {
|
|
72
|
+
yield* Console.log(
|
|
73
|
+
`${k}: ${typeof v === "string" ? v : JSON.stringify(v)}`,
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
yield* provider.prettyPrint(profile, cfg);
|
|
79
|
+
}
|
|
80
|
+
}).pipe(Effect.provide(services));
|
|
81
|
+
}),
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
export const profileCommand = Command.make("profile", {}).pipe(
|
|
85
|
+
Command.withSubcommands([showCommand]),
|
|
86
|
+
);
|
|
@@ -3,9 +3,8 @@ import * as Provider from "../../Provider.ts";
|
|
|
3
3
|
import { Resource } from "../../Resource.ts";
|
|
4
4
|
import { CloudflareEnvironment } from "../CloudflareEnvironment.ts";
|
|
5
5
|
import type { Providers } from "../Providers.ts";
|
|
6
|
-
import { type
|
|
7
|
-
export type
|
|
8
|
-
export type AccountApiToken = Resource<"Cloudflare.AccountApiToken", AccountApiTokenProps, {
|
|
6
|
+
import { type ApiTokenProps } from "./Common.ts";
|
|
7
|
+
export type AccountApiToken = Resource<"Cloudflare.AccountApiToken", ApiTokenProps, {
|
|
9
8
|
tokenId: string;
|
|
10
9
|
name: string;
|
|
11
10
|
status: "active" | "disabled" | "expired";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountApiToken.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/ApiToken/AccountApiToken.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAG5C,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,EAKL,KAAK,
|
|
1
|
+
{"version":3,"file":"AccountApiToken.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/ApiToken/AccountApiToken.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAG5C,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,EAKL,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,eAAe,GAAG,QAAQ,CACpC,4BAA4B,EAC5B,aAAa,EACb;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1C;;;;OAIG;IACH,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB,EACD,KAAK,EACL,SAAS,CACV,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,eAAe,4DAE3B,CAAC;AASF,eAAO,MAAM,uBAAuB,mRA2HjC,CAAC"}
|
|
@@ -48,12 +48,12 @@ const resolveName = (id, name) => Effect.gen(function* () {
|
|
|
48
48
|
return name ?? (yield* createPhysicalName({ id }));
|
|
49
49
|
});
|
|
50
50
|
export const AccountApiTokenProvider = () => Provider.effect(AccountApiToken, Effect.gen(function* () {
|
|
51
|
-
const { accountId } = yield* CloudflareEnvironment;
|
|
51
|
+
const { accountId: defaultAccountId } = yield* CloudflareEnvironment;
|
|
52
52
|
const createToken = yield* accounts.createToken;
|
|
53
53
|
const updateToken = yield* accounts.updateToken;
|
|
54
54
|
const deleteToken = yield* accounts.deleteToken;
|
|
55
55
|
const getToken = yield* accounts.getToken;
|
|
56
|
-
const buildAttributes = (tokenData, value) => ({
|
|
56
|
+
const buildAttributes = (tokenData, value, accountId) => ({
|
|
57
57
|
tokenId: tokenData.id ?? "",
|
|
58
58
|
name: tokenData.name ?? "",
|
|
59
59
|
status: tokenData.status ?? "active",
|
|
@@ -65,13 +65,15 @@ export const AccountApiTokenProvider = () => Provider.effect(AccountApiToken, Ef
|
|
|
65
65
|
diff: Effect.fn(function* ({ id, olds, news, output }) {
|
|
66
66
|
if (!isResolved(news))
|
|
67
67
|
return undefined;
|
|
68
|
-
|
|
68
|
+
const newAccountId = news.accountId ?? defaultAccountId;
|
|
69
|
+
const oldAccountId = output?.accountId ?? olds?.accountId ?? defaultAccountId;
|
|
70
|
+
if (oldAccountId !== newAccountId) {
|
|
69
71
|
return { action: "replace" };
|
|
70
72
|
}
|
|
71
73
|
const oldName = output?.name ?? (yield* resolveName(id, olds?.name));
|
|
72
74
|
const newName = yield* resolveName(id, news.name);
|
|
73
|
-
const oldPolicyFp = policyFingerprint(resolvePolicies(olds?.policies ?? [],
|
|
74
|
-
const newPolicyFp = policyFingerprint(resolvePolicies(news.policies,
|
|
75
|
+
const oldPolicyFp = policyFingerprint(resolvePolicies(olds?.policies ?? [], oldAccountId));
|
|
76
|
+
const newPolicyFp = policyFingerprint(resolvePolicies(news.policies, newAccountId));
|
|
75
77
|
const oldCondFp = conditionFingerprint(olds?.condition);
|
|
76
78
|
const newCondFp = conditionFingerprint(news.condition);
|
|
77
79
|
if (oldName !== newName ||
|
|
@@ -83,6 +85,7 @@ export const AccountApiTokenProvider = () => Provider.effect(AccountApiToken, Ef
|
|
|
83
85
|
}
|
|
84
86
|
}),
|
|
85
87
|
create: Effect.fn(function* ({ id, news }) {
|
|
88
|
+
const accountId = news.accountId ?? defaultAccountId;
|
|
86
89
|
const name = yield* resolveName(id, news.name);
|
|
87
90
|
const policies = resolvePolicies(news.policies, accountId);
|
|
88
91
|
const result = yield* createToken({
|
|
@@ -96,9 +99,10 @@ export const AccountApiTokenProvider = () => Provider.effect(AccountApiToken, Ef
|
|
|
96
99
|
if (!result.value) {
|
|
97
100
|
return yield* Effect.die(`Cloudflare did not return a value for token "${name}".`);
|
|
98
101
|
}
|
|
99
|
-
return buildAttributes(result, Redacted.make(result.value));
|
|
102
|
+
return buildAttributes(result, Redacted.make(result.value), accountId);
|
|
100
103
|
}),
|
|
101
104
|
update: Effect.fn(function* ({ id, news, output }) {
|
|
105
|
+
const accountId = news.accountId ?? defaultAccountId;
|
|
102
106
|
const name = yield* resolveName(id, news.name);
|
|
103
107
|
const policies = resolvePolicies(news.policies, accountId);
|
|
104
108
|
const result = yield* updateToken({
|
|
@@ -112,7 +116,7 @@ export const AccountApiTokenProvider = () => Provider.effect(AccountApiToken, Ef
|
|
|
112
116
|
});
|
|
113
117
|
// Cloudflare doesn't return the value on update; preserve the
|
|
114
118
|
// value captured at creation.
|
|
115
|
-
return buildAttributes(result, output.value);
|
|
119
|
+
return buildAttributes(result, output.value, accountId);
|
|
116
120
|
}),
|
|
117
121
|
delete: Effect.fn(function* ({ output }) {
|
|
118
122
|
yield* deleteToken({
|
|
@@ -130,7 +134,7 @@ export const AccountApiTokenProvider = () => Provider.effect(AccountApiToken, Ef
|
|
|
130
134
|
return yield* getToken({
|
|
131
135
|
accountId: output.accountId,
|
|
132
136
|
tokenId: output.tokenId,
|
|
133
|
-
}).pipe(Effect.map((token) => buildAttributes(token, output.value)), Effect.catchTag("InvalidRoute", () => Effect.succeed(undefined)), Effect.catchTag("TokenNotFound", () => Effect.succeed(undefined)));
|
|
137
|
+
}).pipe(Effect.map((token) => buildAttributes(token, output.value, output.accountId)), Effect.catchTag("InvalidRoute", () => Effect.succeed(undefined)), Effect.catchTag("TokenNotFound", () => Effect.succeed(undefined)));
|
|
134
138
|
}),
|
|
135
139
|
};
|
|
136
140
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountApiToken.js","sourceRoot":"","sources":["../../../src/Cloudflare/ApiToken/AccountApiToken.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,sCAAsC,CAAC;AACjE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,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;AAEpE,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,GAEhB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"AccountApiToken.js","sourceRoot":"","sources":["../../../src/Cloudflare/ApiToken/AccountApiToken.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,12 +34,17 @@ export interface ApiTokenCondition {
|
|
|
34
34
|
notIn?: string[];
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
|
-
export type
|
|
37
|
+
export type ApiTokenProps = {
|
|
38
38
|
/**
|
|
39
39
|
* Token name. Defaults to a generated physical name based on the
|
|
40
40
|
* resource's logical id, app name, and stage.
|
|
41
41
|
*/
|
|
42
42
|
name?: string;
|
|
43
|
+
/**
|
|
44
|
+
* The Cloudflare account ID that owns this token. Defaults to the
|
|
45
|
+
* account ID resolved from the ambient {@link CloudflareEnvironment}.
|
|
46
|
+
*/
|
|
47
|
+
accountId?: string;
|
|
43
48
|
/**
|
|
44
49
|
* Access policies attached to the token. At least one policy is required
|
|
45
50
|
* by Cloudflare.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Common.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/ApiToken/Common.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;GAQG;AACH,MAAM,MAAM,mBAAmB,GAC3B,4BAA4B,GAC5B,8BAA8B,MAAM,EAAE,GACtC,mCAAmC,MAAM,EAAE,GAC3C,iCAAiC,MAAM,EAAE,GACzC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB;;;;GAIG;AACH,MAAM,MAAM,0BAA0B,GAClC,mBAAmB,GACnB;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,gBAAgB,EAAE,0BAA0B,EAAE,CAAC;IAC/C,SAAS,EAAE;SAAG,CAAC,IAAI,mBAAmB,CAAC,CAAC,EAAE,MAAM;KAAE,CAAC;CACpD;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE;QACV,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;CACH;AAED,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"Common.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/ApiToken/Common.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;GAQG;AACH,MAAM,MAAM,mBAAmB,GAC3B,4BAA4B,GAC5B,8BAA8B,MAAM,EAAE,GACtC,mCAAmC,MAAM,EAAE,GAC3C,iCAAiC,MAAM,EAAE,GACzC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB;;;;GAIG;AACH,MAAM,MAAM,0BAA0B,GAClC,mBAAmB,GACnB;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,gBAAgB,EAAE,0BAA0B,EAAE,CAAC;IAC/C,SAAS,EAAE;SAAG,CAAC,IAAI,mBAAmB,CAAC,CAAC,EAAE,MAAM;KAAE,CAAC;CACpD;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE;QACV,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;CACH;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,gBAAgB,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,EAAE,CAAC;IAC5E,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,KAAK,0BAA0B;;;;;;cA7CrC,MAAM;gBAAU,MAAM;;CA0DtD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAC3B,WAAW,cAAc,CAAC,WAAW,CAAC,EACtC,WAAW,MAAM,GAAG,SAAS,KAC5B,MAAM,CAAC,MAAM,EAAE,MAAM,CAWvB,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,UAAU,cAAc,EAAE,EAC1B,WAAW,MAAM,GAAG,SAAS,KAC5B,cAAc,EAKZ,CAAC;AAEN,eAAO,MAAM,iBAAiB,GAAI,UAAU,cAAc,EAAE,KAAG,MAW5D,CAAC;AAEJ,eAAO,MAAM,oBAAoB,GAC/B,WAAW,iBAAiB,GAAG,SAAS,KACvC,MAIC,CAAC;AAEL,eAAO,MAAM,qBAAqB,GAChC,WAAW,iBAAiB,GAAG,SAAS;;;;;aAW3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Common.js","sourceRoot":"","sources":["../../../src/Cloudflare/ApiToken/Common.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,GAE1B,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"Common.js","sourceRoot":"","sources":["../../../src/Cloudflare/ApiToken/Common.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,8 @@ import * as Redacted from "effect/Redacted";
|
|
|
2
2
|
import * as Provider from "../../Provider.ts";
|
|
3
3
|
import { Resource } from "../../Resource.ts";
|
|
4
4
|
import type { Providers } from "../Providers.ts";
|
|
5
|
-
import { type
|
|
6
|
-
export type
|
|
7
|
-
export type UserApiToken = Resource<"Cloudflare.UserApiToken", UserApiTokenProps, {
|
|
5
|
+
import { type ApiTokenProps } from "./Common.ts";
|
|
6
|
+
export type UserApiToken = Resource<"Cloudflare.UserApiToken", ApiTokenProps, {
|
|
8
7
|
tokenId: string;
|
|
9
8
|
name: string;
|
|
10
9
|
status: "active" | "disabled" | "expired";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserApiToken.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/ApiToken/UserApiToken.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAG5C,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAKL,KAAK,
|
|
1
|
+
{"version":3,"file":"UserApiToken.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/ApiToken/UserApiToken.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAG5C,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,YAAY,GAAG,QAAQ,CACjC,yBAAyB,EACzB,aAAa,EACb;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1C;;;OAGG;IACH,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAClC,EACD,KAAK,EACL,SAAS,CACV,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,YAAY,yDAAoD,CAAC;AAS9E,eAAO,MAAM,oBAAoB,wPA6F9B,CAAC"}
|
|
@@ -58,8 +58,8 @@ export const UserApiTokenProvider = () => Provider.effect(UserApiToken, Effect.g
|
|
|
58
58
|
return undefined;
|
|
59
59
|
const oldName = output?.name ?? (yield* resolveName(id, olds?.name));
|
|
60
60
|
const newName = yield* resolveName(id, news.name);
|
|
61
|
-
const oldPolicyFp = policyFingerprint(resolvePolicies(olds?.policies ?? [],
|
|
62
|
-
const newPolicyFp = policyFingerprint(resolvePolicies(news.policies,
|
|
61
|
+
const oldPolicyFp = policyFingerprint(resolvePolicies(olds?.policies ?? [], olds?.accountId));
|
|
62
|
+
const newPolicyFp = policyFingerprint(resolvePolicies(news.policies, news.accountId));
|
|
63
63
|
const oldCondFp = conditionFingerprint(olds?.condition);
|
|
64
64
|
const newCondFp = conditionFingerprint(news.condition);
|
|
65
65
|
if (oldName !== newName ||
|
|
@@ -72,7 +72,7 @@ export const UserApiTokenProvider = () => Provider.effect(UserApiToken, Effect.g
|
|
|
72
72
|
}),
|
|
73
73
|
create: Effect.fn(function* ({ id, news }) {
|
|
74
74
|
const name = yield* resolveName(id, news.name);
|
|
75
|
-
const policies = resolvePolicies(news.policies,
|
|
75
|
+
const policies = resolvePolicies(news.policies, news.accountId);
|
|
76
76
|
const result = yield* createToken({
|
|
77
77
|
name,
|
|
78
78
|
policies,
|
|
@@ -87,7 +87,7 @@ export const UserApiTokenProvider = () => Provider.effect(UserApiToken, Effect.g
|
|
|
87
87
|
}),
|
|
88
88
|
update: Effect.fn(function* ({ id, news, output }) {
|
|
89
89
|
const name = yield* resolveName(id, news.name);
|
|
90
|
-
const policies = resolvePolicies(news.policies,
|
|
90
|
+
const policies = resolvePolicies(news.policies, news.accountId);
|
|
91
91
|
const result = yield* updateToken({
|
|
92
92
|
tokenId: output.tokenId,
|
|
93
93
|
name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserApiToken.js","sourceRoot":"","sources":["../../../src/Cloudflare/ApiToken/UserApiToken.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,kCAAkC,CAAC;AACzD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,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;AAE7C,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,GAEhB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"UserApiToken.js","sourceRoot":"","sources":["../../../src/Cloudflare/ApiToken/UserApiToken.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import { Stack } from "../../Stack.ts";
|
|
3
|
+
import { Stage } from "../../Stage.ts";
|
|
4
|
+
import { ArtifactsBinding } from "./ArtifactsBinding.ts";
|
|
5
|
+
type ArtifactsTypeId = typeof ArtifactsTypeId;
|
|
6
|
+
declare const ArtifactsTypeId: "Cloudflare.Artifacts";
|
|
7
|
+
export declare class InvalidArtifactsNamespaceError extends Error {
|
|
8
|
+
readonly namespace: string;
|
|
9
|
+
readonly _tag: "InvalidArtifactsNamespaceError";
|
|
10
|
+
constructor(namespace: string);
|
|
11
|
+
}
|
|
12
|
+
export type ArtifactsProps = {
|
|
13
|
+
/**
|
|
14
|
+
* Cloudflare namespace name. Namespaces are implicit on Cloudflare — the
|
|
15
|
+
* first repo created against this name conjures the namespace.
|
|
16
|
+
*
|
|
17
|
+
* Must be 3–63 lowercase alphanumeric characters or hyphens, and must start
|
|
18
|
+
* and end with a lowercase alphanumeric character. If omitted, a unique
|
|
19
|
+
* physical name is generated from the resource's logical id, app, and stage.
|
|
20
|
+
*/
|
|
21
|
+
namespace?: string;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Marker for a Cloudflare Artifacts namespace binding.
|
|
25
|
+
*
|
|
26
|
+
* Artifacts namespaces are implicit (created on first repo write) and require
|
|
27
|
+
* no deploy-time provisioning, so this is a pure binding marker rather than
|
|
28
|
+
* a full Resource. The Worker provider sees this object in `bindings: { ... }`
|
|
29
|
+
* and emits the corresponding `{ type: "artifacts", name, namespace }` binding
|
|
30
|
+
* to the script.
|
|
31
|
+
*/
|
|
32
|
+
export type Artifacts = {
|
|
33
|
+
kind: ArtifactsTypeId;
|
|
34
|
+
name: string;
|
|
35
|
+
namespace: string;
|
|
36
|
+
};
|
|
37
|
+
export declare const isArtifacts: (value: unknown) => value is Artifacts;
|
|
38
|
+
/**
|
|
39
|
+
* A Cloudflare Artifacts namespace — the top-level container for Git-compatible
|
|
40
|
+
* versioned repositories. See the
|
|
41
|
+
* {@link https://blog.cloudflare.com/artifacts-git-for-agents-beta/ | Artifacts launch post}
|
|
42
|
+
* and {@link https://developers.cloudflare.com/artifacts/concepts/namespaces/ | Namespaces docs}.
|
|
43
|
+
*
|
|
44
|
+
* Namespaces on Cloudflare are **implicit**: there is no `POST /namespaces`
|
|
45
|
+
* endpoint. The namespace is conjured the first time a repo is created against
|
|
46
|
+
* it (either via the REST API or the Worker binding). Because of that, the
|
|
47
|
+
* Alchemy "resource" is a thin binding marker — there is nothing to provision
|
|
48
|
+
* at deploy time. Repos themselves are typically created at runtime through
|
|
49
|
+
* the bound `Artifacts` API.
|
|
50
|
+
*
|
|
51
|
+
* @section Declaring a Namespace
|
|
52
|
+
* @example Default namespace (a unique physical name is generated)
|
|
53
|
+
* ```typescript
|
|
54
|
+
* const Repos = Cloudflare.Artifacts("Repos");
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* @example Override the namespace name (must be lowercase, 3–63 chars)
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const Repos = Cloudflare.Artifacts("Repos", { namespace: "starter-repos" });
|
|
60
|
+
* ```
|
|
61
|
+
*
|
|
62
|
+
* @section Binding to a Worker
|
|
63
|
+
* @example Wiring it into a Worker
|
|
64
|
+
* ```typescript
|
|
65
|
+
* export const Worker = Cloudflare.Worker("Worker", {
|
|
66
|
+
* main: "./src/worker.ts",
|
|
67
|
+
* bindings: { Repos },
|
|
68
|
+
* });
|
|
69
|
+
*
|
|
70
|
+
* export type WorkerEnv = Cloudflare.InferEnv<typeof Worker>;
|
|
71
|
+
* // { Repos: Artifacts }
|
|
72
|
+
* ```
|
|
73
|
+
*
|
|
74
|
+
* @example Async-style worker
|
|
75
|
+
* ```typescript
|
|
76
|
+
* export default {
|
|
77
|
+
* async fetch(request: Request, env: WorkerEnv) {
|
|
78
|
+
* const repo = await env.Repos.create("starter-repo");
|
|
79
|
+
* return Response.json({ remote: repo.remote, token: repo.token });
|
|
80
|
+
* },
|
|
81
|
+
* };
|
|
82
|
+
* ```
|
|
83
|
+
*
|
|
84
|
+
* @example Effect-style worker
|
|
85
|
+
* ```typescript
|
|
86
|
+
* const artifacts = yield* Cloudflare.Artifacts.bind(Repos);
|
|
87
|
+
* const repo = yield* artifacts.create("starter-repo", {
|
|
88
|
+
* setDefaultBranch: "main",
|
|
89
|
+
* });
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export declare const Artifacts: {
|
|
93
|
+
(name: string, props?: ArtifactsProps): Effect.Effect<Artifacts, never, Stack | Stage>;
|
|
94
|
+
/**
|
|
95
|
+
* Bind a Cloudflare Artifacts namespace to the surrounding Worker, returning
|
|
96
|
+
* an Effect-native client. See {@link ArtifactsBinding}.
|
|
97
|
+
*/
|
|
98
|
+
bind: typeof ArtifactsBinding.bind;
|
|
99
|
+
};
|
|
100
|
+
export {};
|
|
101
|
+
//# sourceMappingURL=Artifacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Artifacts.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Artifacts/Artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,KAAK,eAAe,GAAG,OAAO,eAAe,CAAC;AAC9C,QAAA,MAAM,eAAe,EAAG,sBAA+B,CAAC;AAQxD,qBAAa,8BAA+B,SAAQ,KAAK;aAE3B,SAAS,EAAE,MAAM;IAD7C,QAAQ,CAAC,IAAI,EAAG,gCAAgC,CAAU;gBAC9B,SAAS,EAAE,MAAM;CAK9C;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,SAIP,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,eAAO,MAAM,SAAS,EAAE;IACtB,CACE,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,cAAc,GACrB,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC;IAClD;;;OAGG;IACH,IAAI,EAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC;CAmBpC,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import { Stack } from "../../Stack.js";
|
|
3
|
+
import { Stage } from "../../Stage.js";
|
|
4
|
+
import { ArtifactsBinding } from "./ArtifactsBinding.js";
|
|
5
|
+
const ArtifactsTypeId = "Cloudflare.Artifacts";
|
|
6
|
+
/**
|
|
7
|
+
* Cloudflare validation: 3–63 chars, lowercase alphanumeric and hyphens, must
|
|
8
|
+
* start and end with a lowercase alphanumeric character.
|
|
9
|
+
*/
|
|
10
|
+
const ARTIFACTS_NAMESPACE_REGEX = /^[a-z0-9](?:[a-z0-9-]{1,61}[a-z0-9])?$/;
|
|
11
|
+
export class InvalidArtifactsNamespaceError extends Error {
|
|
12
|
+
namespace;
|
|
13
|
+
_tag = "InvalidArtifactsNamespaceError";
|
|
14
|
+
constructor(namespace) {
|
|
15
|
+
super(`Invalid artifacts namespace name '${namespace}'. Must be 3-63 characters, start and end with a lowercase alphanumeric character, and contain only lowercase alphanumeric characters and hyphens.`);
|
|
16
|
+
this.namespace = namespace;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export const isArtifacts = (value) => typeof value === "object" &&
|
|
20
|
+
value !== null &&
|
|
21
|
+
"kind" in value &&
|
|
22
|
+
value.kind === ArtifactsTypeId;
|
|
23
|
+
/**
|
|
24
|
+
* A Cloudflare Artifacts namespace — the top-level container for Git-compatible
|
|
25
|
+
* versioned repositories. See the
|
|
26
|
+
* {@link https://blog.cloudflare.com/artifacts-git-for-agents-beta/ | Artifacts launch post}
|
|
27
|
+
* and {@link https://developers.cloudflare.com/artifacts/concepts/namespaces/ | Namespaces docs}.
|
|
28
|
+
*
|
|
29
|
+
* Namespaces on Cloudflare are **implicit**: there is no `POST /namespaces`
|
|
30
|
+
* endpoint. The namespace is conjured the first time a repo is created against
|
|
31
|
+
* it (either via the REST API or the Worker binding). Because of that, the
|
|
32
|
+
* Alchemy "resource" is a thin binding marker — there is nothing to provision
|
|
33
|
+
* at deploy time. Repos themselves are typically created at runtime through
|
|
34
|
+
* the bound `Artifacts` API.
|
|
35
|
+
*
|
|
36
|
+
* @section Declaring a Namespace
|
|
37
|
+
* @example Default namespace (a unique physical name is generated)
|
|
38
|
+
* ```typescript
|
|
39
|
+
* const Repos = Cloudflare.Artifacts("Repos");
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @example Override the namespace name (must be lowercase, 3–63 chars)
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const Repos = Cloudflare.Artifacts("Repos", { namespace: "starter-repos" });
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @section Binding to a Worker
|
|
48
|
+
* @example Wiring it into a Worker
|
|
49
|
+
* ```typescript
|
|
50
|
+
* export const Worker = Cloudflare.Worker("Worker", {
|
|
51
|
+
* main: "./src/worker.ts",
|
|
52
|
+
* bindings: { Repos },
|
|
53
|
+
* });
|
|
54
|
+
*
|
|
55
|
+
* export type WorkerEnv = Cloudflare.InferEnv<typeof Worker>;
|
|
56
|
+
* // { Repos: Artifacts }
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* @example Async-style worker
|
|
60
|
+
* ```typescript
|
|
61
|
+
* export default {
|
|
62
|
+
* async fetch(request: Request, env: WorkerEnv) {
|
|
63
|
+
* const repo = await env.Repos.create("starter-repo");
|
|
64
|
+
* return Response.json({ remote: repo.remote, token: repo.token });
|
|
65
|
+
* },
|
|
66
|
+
* };
|
|
67
|
+
* ```
|
|
68
|
+
*
|
|
69
|
+
* @example Effect-style worker
|
|
70
|
+
* ```typescript
|
|
71
|
+
* const artifacts = yield* Cloudflare.Artifacts.bind(Repos);
|
|
72
|
+
* const repo = yield* artifacts.create("starter-repo", {
|
|
73
|
+
* setDefaultBranch: "main",
|
|
74
|
+
* });
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export const Artifacts = Object.assign(Effect.fn(function* (name, props) {
|
|
78
|
+
const namespace = props?.namespace
|
|
79
|
+
? props.namespace
|
|
80
|
+
: name.toLocaleLowerCase();
|
|
81
|
+
if (!ARTIFACTS_NAMESPACE_REGEX.test(namespace)) {
|
|
82
|
+
return yield* Effect.die(new InvalidArtifactsNamespaceError(namespace));
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
kind: ArtifactsTypeId,
|
|
86
|
+
name,
|
|
87
|
+
namespace,
|
|
88
|
+
};
|
|
89
|
+
}), {
|
|
90
|
+
bind: (...args) => ArtifactsBinding.bind(...args),
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=Artifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Artifacts.js","sourceRoot":"","sources":["../../../src/Cloudflare/Artifacts/Artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,MAAM,eAAe,GAAG,sBAA+B,CAAC;AAExD;;;GAGG;AACH,MAAM,yBAAyB,GAAG,wCAAwC,CAAC;AAE3E,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IAE3B;IADnB,IAAI,GAAG,gCAAyC,CAAC;IAC1D,YAA4B,SAAiB;QAC3C,KAAK,CACH,qCAAqC,SAAS,oJAAoJ,CACnM,CAAC;QAHwB,cAAS,GAAT,SAAS,CAAQ;IAI7C,CAAC;CACF;AA6BD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAc,EAAsB,EAAE,CAChE,OAAO,KAAK,KAAK,QAAQ;IACzB,KAAK,KAAK,IAAI;IACd,MAAM,IAAI,KAAK;IACd,KAAmB,CAAC,IAAI,KAAK,eAAe,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,MAAM,CAAC,MAAM,SAAS,GAUlB,MAAM,CAAC,MAAM,CACf,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAY,EAAE,KAAsB;IACvD,MAAM,SAAS,GAAG,KAAK,EAAE,SAAS;QAChC,CAAC,CAAC,KAAK,CAAC,SAAS;QACjB,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC7B,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,8BAA8B,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,IAAI;QACJ,SAAS;KACU,CAAC;AACxB,CAAC,CAAC,EACF;IACE,IAAI,EAAE,CAAC,GAAG,IAA8C,EAAE,EAAE,CAC1D,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACjC,CACF,CAAC"}
|