alchemy 2.0.0-beta.15 → 2.0.0-beta.17

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.
Files changed (104) hide show
  1. package/bin/alchemy.js +1661 -710
  2. package/bin/alchemy.js.map +1 -1
  3. package/bin/alchemy.ts +2 -0
  4. package/bin/cli.js +9 -7
  5. package/bin/commands/deploy.ts +11 -2
  6. package/bin/commands/login.ts +6 -3
  7. package/bin/commands/profile.ts +106 -0
  8. package/bin/commands/state.ts +91 -1
  9. package/lib/Auth/Credentials.d.ts +6 -0
  10. package/lib/Auth/Credentials.d.ts.map +1 -1
  11. package/lib/Auth/Credentials.js +12 -1
  12. package/lib/Auth/Credentials.js.map +1 -1
  13. package/lib/Auth/Profile.d.ts +5 -0
  14. package/lib/Auth/Profile.d.ts.map +1 -1
  15. package/lib/Auth/Profile.js +11 -0
  16. package/lib/Auth/Profile.js.map +1 -1
  17. package/lib/Cloudflare/ApiToken/AccountApiToken.d.ts +4 -4
  18. package/lib/Cloudflare/ApiToken/AccountApiToken.d.ts.map +1 -1
  19. package/lib/Cloudflare/ApiToken/AccountApiToken.js +16 -11
  20. package/lib/Cloudflare/ApiToken/AccountApiToken.js.map +1 -1
  21. package/lib/Cloudflare/ApiToken/Common.d.ts +11 -12
  22. package/lib/Cloudflare/ApiToken/Common.d.ts.map +1 -1
  23. package/lib/Cloudflare/ApiToken/Common.js +4 -14
  24. package/lib/Cloudflare/ApiToken/Common.js.map +1 -1
  25. package/lib/Cloudflare/ApiToken/UserApiToken.d.ts +2 -3
  26. package/lib/Cloudflare/ApiToken/UserApiToken.d.ts.map +1 -1
  27. package/lib/Cloudflare/ApiToken/UserApiToken.js +4 -4
  28. package/lib/Cloudflare/ApiToken/UserApiToken.js.map +1 -1
  29. package/lib/Cloudflare/Artifacts/Artifacts.d.ts +101 -0
  30. package/lib/Cloudflare/Artifacts/Artifacts.d.ts.map +1 -0
  31. package/lib/Cloudflare/Artifacts/Artifacts.js +92 -0
  32. package/lib/Cloudflare/Artifacts/Artifacts.js.map +1 -0
  33. package/lib/Cloudflare/Artifacts/ArtifactsBinding.d.ts +83 -0
  34. package/lib/Cloudflare/Artifacts/ArtifactsBinding.d.ts.map +1 -0
  35. package/lib/Cloudflare/Artifacts/ArtifactsBinding.js +65 -0
  36. package/lib/Cloudflare/Artifacts/ArtifactsBinding.js.map +1 -0
  37. package/lib/Cloudflare/Artifacts/index.d.ts +3 -0
  38. package/lib/Cloudflare/Artifacts/index.d.ts.map +1 -0
  39. package/lib/Cloudflare/Artifacts/index.js +3 -0
  40. package/lib/Cloudflare/Artifacts/index.js.map +1 -0
  41. package/lib/Cloudflare/Container/ContainerBinding.d.ts +1 -1
  42. package/lib/Cloudflare/Providers.d.ts.map +1 -1
  43. package/lib/Cloudflare/Providers.js +3 -1
  44. package/lib/Cloudflare/Providers.js.map +1 -1
  45. package/lib/Cloudflare/Workers/InferEnv.d.ts +1 -1
  46. package/lib/Cloudflare/Workers/InferEnv.d.ts.map +1 -1
  47. package/lib/Cloudflare/Workers/InferEnv.js +0 -1
  48. package/lib/Cloudflare/Workers/InferEnv.js.map +1 -1
  49. package/lib/Cloudflare/Workers/Worker.d.ts +2 -1
  50. package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
  51. package/lib/Cloudflare/Workers/Worker.js +25 -18
  52. package/lib/Cloudflare/Workers/Worker.js.map +1 -1
  53. package/lib/Cloudflare/index.d.ts +1 -0
  54. package/lib/Cloudflare/index.d.ts.map +1 -1
  55. package/lib/Cloudflare/index.js +1 -0
  56. package/lib/Cloudflare/index.js.map +1 -1
  57. package/lib/GitHub/AuthProvider.d.ts +37 -0
  58. package/lib/GitHub/AuthProvider.d.ts.map +1 -0
  59. package/lib/GitHub/AuthProvider.js +154 -0
  60. package/lib/GitHub/AuthProvider.js.map +1 -0
  61. package/lib/GitHub/Comment.d.ts +2 -1
  62. package/lib/GitHub/Comment.d.ts.map +1 -1
  63. package/lib/GitHub/Comment.js +1 -0
  64. package/lib/GitHub/Comment.js.map +1 -1
  65. package/lib/GitHub/Credentials.d.ts +29 -0
  66. package/lib/GitHub/Credentials.d.ts.map +1 -0
  67. package/lib/GitHub/Credentials.js +54 -0
  68. package/lib/GitHub/Credentials.js.map +1 -0
  69. package/lib/GitHub/Providers.d.ts +12 -1
  70. package/lib/GitHub/Providers.d.ts.map +1 -1
  71. package/lib/GitHub/Providers.js +14 -3
  72. package/lib/GitHub/Providers.js.map +1 -1
  73. package/lib/GitHub/Secret.d.ts +8 -10
  74. package/lib/GitHub/Secret.d.ts.map +1 -1
  75. package/lib/GitHub/Secret.js +16 -14
  76. package/lib/GitHub/Secret.js.map +1 -1
  77. package/lib/GitHub/Variable.d.ts +8 -10
  78. package/lib/GitHub/Variable.d.ts.map +1 -1
  79. package/lib/GitHub/Variable.js +12 -13
  80. package/lib/GitHub/Variable.js.map +1 -1
  81. package/lib/GitHub/index.d.ts +2 -0
  82. package/lib/GitHub/index.d.ts.map +1 -1
  83. package/lib/GitHub/index.js +2 -0
  84. package/lib/GitHub/index.js.map +1 -1
  85. package/package.json +4 -4
  86. package/src/Auth/Credentials.ts +17 -1
  87. package/src/Auth/Profile.ts +15 -0
  88. package/src/Cloudflare/ApiToken/AccountApiToken.ts +25 -14
  89. package/src/Cloudflare/ApiToken/Common.ts +12 -19
  90. package/src/Cloudflare/ApiToken/UserApiToken.ts +6 -8
  91. package/src/Cloudflare/Artifacts/Artifacts.ts +139 -0
  92. package/src/Cloudflare/Artifacts/ArtifactsBinding.ts +188 -0
  93. package/src/Cloudflare/Artifacts/index.ts +2 -0
  94. package/src/Cloudflare/Providers.ts +3 -0
  95. package/src/Cloudflare/Workers/InferEnv.ts +5 -4
  96. package/src/Cloudflare/Workers/Worker.ts +12 -1
  97. package/src/Cloudflare/index.ts +1 -0
  98. package/src/GitHub/AuthProvider.ts +309 -0
  99. package/src/GitHub/Comment.ts +4 -1
  100. package/src/GitHub/Credentials.ts +99 -0
  101. package/src/GitHub/Providers.ts +29 -3
  102. package/src/GitHub/Secret.ts +22 -24
  103. package/src/GitHub/Variable.ts +16 -23
  104. 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/cli.js CHANGED
@@ -21,24 +21,26 @@
21
21
  //
22
22
  // foreground-child forwards stdio + signals and exits with the child's code,
23
23
  // so the launcher is transparent to the invoking shell / npm script.
24
- import { existsSync } from "node:fs";
25
- import { createRequire } from "node:module";
24
+ import { fileURLToPath } from "node:url";
26
25
  import path from "pathe";
27
26
  import { foregroundChild } from "foreground-child";
28
27
 
29
- const require = createRequire(import.meta.url);
30
-
31
28
  const execpath = (process.env.npm_execpath ?? "").toLowerCase();
32
29
  const userAgent = (process.env.npm_config_user_agent ?? "").toLowerCase();
33
30
  const invokedByBun = execpath.includes("bun") || userAgent.startsWith("bun/");
34
31
 
35
- const jsEntry = require.resolve("alchemy/bin/alchemy.js");
36
- const binDir = path.dirname(jsEntry);
32
+ // Derive the bin dir from this launcher's own location rather than
33
+ // require.resolve("alchemy/bin/alchemy.js"). The bundled alchemy.js is a
34
+ // build artifact (tsdown output) and may not exist in a fresh checkout
35
+ // (e.g. CI before `bun run build`); resolving it would throw
36
+ // MODULE_NOT_FOUND before we get a chance to fall back to the .ts source.
37
+ const binDir = path.dirname(fileURLToPath(import.meta.url));
38
+ const jsEntry = path.join(binDir, "alchemy.js");
37
39
  const tsEntry = path.join(binDir, "alchemy.ts");
38
40
 
39
41
  // Treat any install-tree path as published; only a raw checkout uses .ts.
40
42
  const useTs = !(
41
- jsEntry.includes("/node_modules/") || jsEntry.includes("\\node_modules\\")
43
+ binDir.includes("/node_modules/") || binDir.includes("\\node_modules\\")
42
44
  );
43
45
 
44
46
  // .ts only runs under bun. Force bun in dev even if node was the invoker.
@@ -84,7 +84,14 @@ const execStack = Effect.fn(function* ({
84
84
  if (dryRun) {
85
85
  yield* cli.displayPlan(updatePlan);
86
86
  } else {
87
- if (!yes) {
87
+ const hasChanges =
88
+ Object.keys(updatePlan.deletions).length > 0 ||
89
+ Object.values(updatePlan.resources).some(
90
+ (node) =>
91
+ node.action !== "noop" ||
92
+ node.bindings.some((b) => b.action !== "noop"),
93
+ );
94
+ if (!yes && hasChanges) {
88
95
  const approved = yield* cli.approvePlan(updatePlan);
89
96
  if (!approved) {
90
97
  return;
@@ -92,7 +99,9 @@ const execStack = Effect.fn(function* ({
92
99
  }
93
100
  const outputs = yield* apply(updatePlan);
94
101
 
95
- yield* Console.log(outputs);
102
+ if (outputs !== undefined) {
103
+ yield* Console.log(outputs);
104
+ }
96
105
  }
97
106
  }).pipe(Effect.provide(stack.services));
98
107
  }).pipe(Effect.provide(services));
@@ -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
- // Build the stack — this triggers each provider's AuthProviderLayer,
55
- // which registers itself into the shared `authProviders` registry.
56
- yield* stackEffect;
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,106 @@
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 { deleteProfileCredentials } from "../../src/Auth/Credentials.ts";
10
+ import {
11
+ deleteProfile,
12
+ getProfile,
13
+ readConfig,
14
+ withProfileOverride,
15
+ } from "../../src/Auth/Profile.ts";
16
+ import { AwsAuth } from "../../src/AWS/AuthProvider.ts";
17
+ import { CloudflareAuth } from "../../src/Cloudflare/Auth/AuthProvider.ts";
18
+ import { loadConfigProvider } from "../../src/Util/ConfigProvider.ts";
19
+ import { fileLogger } from "../../src/Util/FileLogger.ts";
20
+
21
+ import { envFile, profile } from "./_shared.ts";
22
+
23
+ const showCommand = Command.make(
24
+ "show",
25
+ { profile, envFile },
26
+ Effect.fnUntraced(function* ({ profile, envFile }) {
27
+ const stored = yield* getProfile(profile);
28
+ if (stored == null) {
29
+ const config = yield* readConfig;
30
+ const names = Object.keys(config.profiles);
31
+ yield* Console.log(`Profile '${profile}' not found.`);
32
+ if (names.length > 0) {
33
+ yield* Console.log(`Available profiles: ${names.sort().join(", ")}`);
34
+ } else {
35
+ yield* Console.log("No profiles configured. Run `alchemy login`.");
36
+ }
37
+ return;
38
+ }
39
+
40
+ yield* Console.log(`Profile: ${profile}`);
41
+
42
+ const providerNames = Object.keys(stored).sort();
43
+ if (providerNames.length === 0) {
44
+ yield* Console.log("(no providers configured)");
45
+ return;
46
+ }
47
+
48
+ const authProviders: AuthProviders["Service"] = {};
49
+ const authRegistry = Layer.succeed(AuthProviders, authProviders);
50
+ const services = Layer.mergeAll(
51
+ authRegistry,
52
+ ConfigProvider.layer(
53
+ withProfileOverride(yield* loadConfigProvider(envFile), profile),
54
+ ),
55
+ Logger.layer([fileLogger("out")]),
56
+ // Building these layers triggers their AuthProviderLayer effect, which
57
+ // registers the provider into the shared `authProviders` registry.
58
+ Layer.provide(Layer.mergeAll(CloudflareAuth, AwsAuth), authRegistry),
59
+ );
60
+
61
+ yield* Effect.gen(function* () {
62
+ for (const name of providerNames) {
63
+ const cfg = stored[name]!;
64
+ yield* Console.log("");
65
+ yield* Console.log(`── ${name} ──`);
66
+ const provider = authProviders[name];
67
+ if (provider == null) {
68
+ // Unknown provider — fall back to a JSON dump so the user can still
69
+ // see what's stored even if its module isn't bundled into the CLI.
70
+ yield* Console.log(`method: ${cfg.method}`);
71
+ const { method: _method, ...rest } = cfg as Record<string, unknown> &
72
+ { method: string };
73
+ for (const [k, v] of Object.entries(rest)) {
74
+ yield* Console.log(
75
+ `${k}: ${typeof v === "string" ? v : JSON.stringify(v)}`,
76
+ );
77
+ }
78
+ continue;
79
+ }
80
+ yield* provider.prettyPrint(profile, cfg);
81
+ }
82
+ }).pipe(Effect.provide(services));
83
+ }),
84
+ );
85
+
86
+ const clearCommand = Command.make(
87
+ "clear",
88
+ { profile },
89
+ Effect.fnUntraced(function* ({ profile }) {
90
+ const removed = yield* deleteProfile(profile);
91
+ yield* deleteProfileCredentials(profile);
92
+ if (removed) {
93
+ yield* Console.log(
94
+ `Cleared profile '${profile}' and all its credentials.`,
95
+ );
96
+ } else {
97
+ yield* Console.log(
98
+ `Profile '${profile}' not found in profiles.json; removed any stray credentials directory.`,
99
+ );
100
+ }
101
+ }),
102
+ );
103
+
104
+ export const profileCommand = Command.make("profile", {}).pipe(
105
+ Command.withSubcommands([showCommand, clearCommand]),
106
+ );
@@ -3,6 +3,7 @@ import * as Console from "effect/Console";
3
3
  import * as Effect from "effect/Effect";
4
4
  import * as Layer from "effect/Layer";
5
5
  import * as Logger from "effect/Logger";
6
+ import * as Option from "effect/Option";
6
7
  import { Argument, Command, Flag } from "effect/unstable/cli";
7
8
 
8
9
  import { AuthProviders } from "../../src/Auth/AuthProvider.ts";
@@ -10,10 +11,11 @@ import { withProfileOverride } from "../../src/Auth/Profile.ts";
10
11
  import { Stage } from "../../src/Stage.ts";
11
12
  import * as State from "../../src/State/index.ts";
12
13
  import { encodeState } from "../../src/State/StateEncoding.ts";
14
+ import * as Clank from "../../src/Util/Clank.ts";
13
15
  import { loadConfigProvider } from "../../src/Util/ConfigProvider.ts";
14
16
  import { fileLogger } from "../../src/Util/FileLogger.ts";
15
17
 
16
- import { envFile, importStack, main, profile, stage } from "./_shared.ts";
18
+ import { envFile, importStack, main, profile, stage, yes } from "./_shared.ts";
17
19
 
18
20
  /**
19
21
  * When set, the State service is replaced with the on-disk
@@ -222,6 +224,93 @@ const treeCommand = Command.make(
222
224
  }),
223
225
  );
224
226
 
227
+ const clearStackArg = Argument.string("stack").pipe(
228
+ Argument.withDescription(
229
+ "Stack name to clear. Omit to clear ALL stacks in the store.",
230
+ ),
231
+ Argument.optional,
232
+ );
233
+
234
+ const clearStageArg = Argument.string("stage").pipe(
235
+ Argument.withDescription(
236
+ "Stage to clear within the stack. Omit to clear all stages in the stack.",
237
+ ),
238
+ Argument.optional,
239
+ );
240
+
241
+ /**
242
+ * Destructive: removes resource state from the store. The actual cloud
243
+ * resources are NOT touched — this only affects what alchemy thinks
244
+ * exists. Always confirms before deleting unless `--yes` is passed.
245
+ */
246
+ const clearCommand = Command.make(
247
+ "clear",
248
+ {
249
+ stack: clearStackArg,
250
+ stageName: clearStageArg,
251
+ main,
252
+ envFile,
253
+ stage,
254
+ profile,
255
+ local: localFlag,
256
+ yes,
257
+ },
258
+ Effect.fnUntraced(function* ({ stack: stackOpt, stageName: stageOpt, yes: yesFlag, ...rest }) {
259
+ const stackName = Option.getOrUndefined(stackOpt);
260
+ const stageName = Option.getOrUndefined(stageOpt);
261
+
262
+ if (stageName !== undefined && stackName === undefined) {
263
+ yield* Console.log(
264
+ "Error: cannot specify <stage> without <stack>. Pass the stack name as the first argument.",
265
+ );
266
+ return yield* Effect.fail(new Error("missing stack"));
267
+ }
268
+
269
+ yield* withStateService(rest, (state) =>
270
+ Effect.gen(function* () {
271
+ const targets: ReadonlyArray<{ stack: string; stage?: string }> =
272
+ stackName === undefined
273
+ ? [...(yield* state.listStacks())]
274
+ .sort()
275
+ .map((s) => ({ stack: s }))
276
+ : stageName === undefined
277
+ ? [{ stack: stackName }]
278
+ : [{ stack: stackName, stage: stageName }];
279
+
280
+ if (targets.length === 0) {
281
+ yield* Console.log("(nothing to clear)");
282
+ return;
283
+ }
284
+
285
+ const scope =
286
+ stackName === undefined
287
+ ? `ALL stacks (${targets.length}): ${targets.map((t) => t.stack).join(", ")}`
288
+ : stageName === undefined
289
+ ? `stack '${stackName}' (all stages)`
290
+ : `stage '${stageName}' in stack '${stackName}'`;
291
+
292
+ if (!yesFlag) {
293
+ const ok = yield* Clank.confirm({
294
+ message: `About to delete ${scope} from the state store. This cannot be undone. Continue?`,
295
+ initialValue: false,
296
+ });
297
+ if (!ok) {
298
+ yield* Console.log("Cancelled.");
299
+ return;
300
+ }
301
+ }
302
+
303
+ for (const target of targets) {
304
+ yield* state.deleteStack(target);
305
+ yield* Console.log(
306
+ `cleared ${target.stack}${target.stage ? `/${target.stage}` : ""}`,
307
+ );
308
+ }
309
+ }),
310
+ );
311
+ }),
312
+ );
313
+
225
314
  export const stateCommand = Command.make("state", {}).pipe(
226
315
  Command.withSubcommands([
227
316
  stacksCommand,
@@ -229,5 +318,6 @@ export const stateCommand = Command.make("state", {}).pipe(
229
318
  resourcesCommand,
230
319
  getCommand,
231
320
  treeCommand,
321
+ clearCommand,
232
322
  ]),
233
323
  );
@@ -1,9 +1,15 @@
1
1
  import * as Effect from "effect/Effect";
2
2
  import * as FileSystem from "effect/FileSystem";
3
3
  import * as Redacted from "effect/Redacted";
4
+ export declare const profileCredentialsDirPath: (profile: string) => string;
4
5
  export declare const credentialsFilePath: (profile: string, provider: string) => string;
5
6
  export declare const readCredentials: <T>(profile: string, provider: string) => Effect.Effect<T | undefined, never, FileSystem.FileSystem>;
6
7
  export declare const writeCredentials: <T>(profile: string, provider: string, credentials: T) => Effect.Effect<void, import("effect/PlatformError").PlatformError, FileSystem.FileSystem>;
7
8
  export declare const deleteCredentials: (profile: string, provider: string) => Effect.Effect<void, never, FileSystem.FileSystem>;
9
+ /**
10
+ * Recursively remove the `~/.alchemy/credentials/{profile}` directory
11
+ * containing all per-provider secrets for `profile`. No-op if it doesn't exist.
12
+ */
13
+ export declare const deleteProfileCredentials: (profile: string) => Effect.Effect<void, never, FileSystem.FileSystem>;
8
14
  export declare function displayRedacted(r: Redacted.Redacted<string>, visibleChars?: number): string;
9
15
  //# sourceMappingURL=Credentials.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Credentials.d.ts","sourceRoot":"","sources":["../../src/Auth/Credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAM5C,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,EAAE,UAAU,MAAM,WACT,CAAC;AAE7D,eAAO,MAAM,eAAe,GAAgC,CAAC,kGAc3D,CAAC;AAEH,eAAO,MAAM,gBAAgB,GAAgC,CAAC,gJAS5D,CAAC;AAEH,eAAO,MAAM,iBAAiB,0FAQ5B,CAAC;AAEH,wBAAgB,eAAe,CAC7B,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC5B,YAAY,SAAI,GACf,MAAM,CAIR"}
1
+ {"version":3,"file":"Credentials.d.ts","sourceRoot":"","sources":["../../src/Auth/Credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAM5C,eAAO,MAAM,yBAAyB,GAAI,SAAS,MAAM,WACjB,CAAC;AAEzC,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,EAAE,UAAU,MAAM,WACF,CAAC;AAEpE,eAAO,MAAM,eAAe,GAAgC,CAAC,kGAc3D,CAAC;AAEH,eAAO,MAAM,gBAAgB,GAAgC,CAAC,gJAS5D,CAAC;AAEH,eAAO,MAAM,iBAAiB,0FAQ5B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,wBAAwB,wEAOnC,CAAC;AAEH,wBAAgB,eAAe,CAC7B,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC5B,YAAY,SAAI,GACf,MAAM,CAIR"}
@@ -4,7 +4,8 @@ import * as Redacted from "effect/Redacted";
4
4
  import path from "pathe";
5
5
  import { rootDir } from "./Profile.js";
6
6
  const credentialsDirPath = path.join(rootDir, "credentials");
7
- export const credentialsFilePath = (profile, provider) => path.join(credentialsDirPath, profile, `${provider}.json`);
7
+ export const profileCredentialsDirPath = (profile) => path.join(credentialsDirPath, profile);
8
+ export const credentialsFilePath = (profile, provider) => path.join(profileCredentialsDirPath(profile), `${provider}.json`);
8
9
  export const readCredentials = Effect.fnUntraced(function* (profile, provider) {
9
10
  const fs = yield* FileSystem.FileSystem;
10
11
  const data = yield* fs
@@ -31,6 +32,16 @@ export const deleteCredentials = Effect.fnUntraced(function* (profile, provider)
31
32
  .remove(credentialsFilePath(profile, provider))
32
33
  .pipe(Effect.catch(() => Effect.void));
33
34
  });
35
+ /**
36
+ * Recursively remove the `~/.alchemy/credentials/{profile}` directory
37
+ * containing all per-provider secrets for `profile`. No-op if it doesn't exist.
38
+ */
39
+ export const deleteProfileCredentials = Effect.fnUntraced(function* (profile) {
40
+ const fs = yield* FileSystem.FileSystem;
41
+ yield* fs
42
+ .remove(profileCredentialsDirPath(profile), { recursive: true })
43
+ .pipe(Effect.catch(() => Effect.void));
44
+ });
34
45
  export function displayRedacted(r, visibleChars = 4) {
35
46
  const raw = Redacted.value(r);
36
47
  if (raw.length <= visibleChars)
@@ -1 +1 @@
1
- {"version":3,"file":"Credentials.js","sourceRoot":"","sources":["../../src/Auth/Credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,IAAI,MAAM,OAAO,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAE7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAe,EAAE,QAAgB,EAAE,EAAE,CACvE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;AAE7D,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EACxD,OAAe,EACf,QAAgB;IAEhB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;IACxC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;SACnB,cAAc,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;SACtD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACvD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAA0B,CAAC;IAC1D,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAA0B,CAAC;IACpC,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EACzD,OAAe,EACf,QAAgB,EAChB,WAAc;IAEd,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;IACxC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxD,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,KAAK,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAC1D,OAAe,EACf,QAAgB;IAEhB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;IACxC,KAAK,CAAC,CAAC,EAAE;SACN,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;SAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEH,MAAM,UAAU,eAAe,CAC7B,CAA4B,EAC5B,YAAY,GAAG,CAAC;IAEhB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,GAAG,CAAC,MAAM,IAAI,YAAY;QAAE,OAAO,MAAM,CAAC;IAC9C,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"Credentials.js","sourceRoot":"","sources":["../../src/Auth/Credentials.ts"],"names":[],"mappings":"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"}
@@ -45,6 +45,11 @@ export declare const readConfig: Effect.Effect<{
45
45
  export declare const writeConfig: (config: AlchemyConfig["Service"]) => Effect.Effect<void, import("effect/PlatformError").PlatformError, FileSystem.FileSystem>;
46
46
  export declare const getProfile: (name: string) => Effect.Effect<AlchemyProfile, never, FileSystem.FileSystem>;
47
47
  export declare const setProfile: (name: string, profile: AlchemyProfile) => Effect.Effect<void, import("effect/PlatformError").PlatformError, FileSystem.FileSystem>;
48
+ /**
49
+ * Remove `name` and all its provider credentials from the on-disk config.
50
+ * Returns `true` if the profile existed and was removed, `false` otherwise.
51
+ */
52
+ export declare const deleteProfile: (name: string) => Effect.Effect<boolean, import("effect/PlatformError").PlatformError, FileSystem.FileSystem>;
48
53
  /**
49
54
  * Returns a `ConfigProvider` that overrides `ALCHEMY_PROFILE` with the
50
55
  * given `profile` (when explicitly passed via the CLI `--profile` flag),
@@ -1 +1 @@
1
- {"version":3,"file":"Profile.d.ts","sourceRoot":"","sources":["../../src/Auth/Profile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAExE,eAAO,MAAM,OAAO,QAAsC,CAAC;AAC3D,eAAO,MAAM,cAAc,QAAsC,CAAC;AAElE;;;;GAIG;AACH,eAAO,MAAM,eAAe,uBAE3B,CAAC;AAEF,eAAO,MAAM,cAAc,IAAI,CAAC;;aAKnB,OAAO,cAAc;cACpB;QACR,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAAC;KACvC;;AANL,qBAAa,aAAc,SAAQ,kBAQX;CAAG;AAE3B,MAAM,WAAW,cAAc;IAC7B,CAAC,YAAY,EAAE,MAAM,GAAG;QACtB;;;;;;;;;WASG;QACH,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAOD,eAAO,MAAM,UAAU;aA5BV,OAAO,cAAc;cACpB;QACR,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAAC;KACvC;gCAyCJ,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,QAAQ,aAAa,CAAC,SAAS,CAAC,6FAQzD,CAAC;AAEJ,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,gEACyB,CAAC;AAEjE,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,SAAS,cAAc,6FAM7D,CAAC;AAEJ;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,cAAc,CAAC,cAAc,EACnC,SAAS,MAAM,GAAG,SAAS,KAC1B,cAAc,CAAC,cAWjB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,SAAS;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAC/D,MAAM,YAAY,CAAC,MAAM,CAAC,EAC1B,aAAa,MAAM,EACnB,KAAK,gBAAgB;IA3FnB;;;;;;;;;OASG;YACK,MAAM;+GAyFf,CAAC"}
1
+ {"version":3,"file":"Profile.d.ts","sourceRoot":"","sources":["../../src/Auth/Profile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAExE,eAAO,MAAM,OAAO,QAAsC,CAAC;AAC3D,eAAO,MAAM,cAAc,QAAsC,CAAC;AAElE;;;;GAIG;AACH,eAAO,MAAM,eAAe,uBAE3B,CAAC;AAEF,eAAO,MAAM,cAAc,IAAI,CAAC;;aAKnB,OAAO,cAAc;cACpB;QACR,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAAC;KACvC;;AANL,qBAAa,aAAc,SAAQ,kBAQX;CAAG;AAE3B,MAAM,WAAW,cAAc;IAC7B,CAAC,YAAY,EAAE,MAAM,GAAG;QACtB;;;;;;;;;WASG;QACH,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAOD,eAAO,MAAM,UAAU;aA5BV,OAAO,cAAc;cACpB;QACR,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAAC;KACvC;gCAyCJ,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,QAAQ,aAAa,CAAC,SAAS,CAAC,6FAQzD,CAAC;AAEJ,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,gEACyB,CAAC;AAEjE,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,SAAS,cAAc,6FAM7D,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,gGASvC,CAAC;AAEJ;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,cAAc,CAAC,cAAc,EACnC,SAAS,MAAM,GAAG,SAAS,KAC1B,cAAc,CAAC,cAWjB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,SAAS;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAC/D,MAAM,YAAY,CAAC,MAAM,CAAC,EAC1B,aAAa,MAAM,EACnB,KAAK,gBAAgB;IA1GnB;;;;;;;;;OASG;YACK,MAAM;+GAwGf,CAAC"}
@@ -34,6 +34,17 @@ export const readConfig = FileSystem.FileSystem.asEffect().pipe(Effect.flatMap((
34
34
  export const writeConfig = (config) => FileSystem.FileSystem.asEffect().pipe(Effect.tap((fs) => fs.makeDirectory(path.dirname(configFilePath), { recursive: true })), Effect.flatMap((fs) => fs.writeFileString(configFilePath, JSON.stringify(config, null, 2))));
35
35
  export const getProfile = (name) => readConfig.pipe(Effect.map((config) => config.profiles[name]));
36
36
  export const setProfile = (name, profile) => readConfig.pipe(Effect.tap((config) => Effect.sync(() => (config.profiles[name] = profile))), Effect.flatMap(writeConfig));
37
+ /**
38
+ * Remove `name` and all its provider credentials from the on-disk config.
39
+ * Returns `true` if the profile existed and was removed, `false` otherwise.
40
+ */
41
+ export const deleteProfile = (name) => readConfig.pipe(Effect.flatMap((config) => {
42
+ if (!(name in config.profiles)) {
43
+ return Effect.succeed(false);
44
+ }
45
+ delete config.profiles[name];
46
+ return writeConfig(config).pipe(Effect.as(true));
47
+ }));
37
48
  /**
38
49
  * Returns a `ConfigProvider` that overrides `ALCHEMY_PROFILE` with the
39
50
  * given `profile` (when explicitly passed via the CLI `--profile` flag),
@@ -1 +1 @@
1
- {"version":3,"file":"Profile.js","sourceRoot":"","sources":["../../src/Auth/Profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Profile.js","sourceRoot":"","sources":["../../src/Auth/Profile.ts"],"names":[],"mappings":"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"}
@@ -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 BaseApiTokenProps } from "./Common.ts";
7
- export type AccountApiTokenProps = BaseApiTokenProps;
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";
@@ -33,6 +32,7 @@ export type AccountApiToken = Resource<"Cloudflare.AccountApiToken", AccountApiT
33
32
  * ```typescript
34
33
  * const token = yield* Cloudflare.AccountApiToken("ci-token", {
35
34
  * name: "my-ci-token",
35
+ * accountId,
36
36
  * policies: [
37
37
  * {
38
38
  * effect: "allow",
@@ -40,7 +40,7 @@ export type AccountApiToken = Resource<"Cloudflare.AccountApiToken", AccountApiT
40
40
  * "Workers Scripts Write",
41
41
  * "Workers KV Storage Write",
42
42
  * ],
43
- * resources: { "com.cloudflare.api.account": "*" },
43
+ * resources: { [`com.cloudflare.api.account.${accountId}`]: "*" },
44
44
  * },
45
45
  * ],
46
46
  * });
@@ -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,iBAAiB,EACvB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAErD,MAAM,MAAM,eAAe,GAAG,QAAQ,CACpC,4BAA4B,EAC5B,oBAAoB,EACpB;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,mRA+GjC,CAAC"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,eAAe,4DAE3B,CAAC;AASF,eAAO,MAAM,uBAAuB,mRA2HjC,CAAC"}
@@ -23,6 +23,7 @@ import { buildConditionPayload, conditionFingerprint, policyFingerprint, resolve
23
23
  * ```typescript
24
24
  * const token = yield* Cloudflare.AccountApiToken("ci-token", {
25
25
  * name: "my-ci-token",
26
+ * accountId,
26
27
  * policies: [
27
28
  * {
28
29
  * effect: "allow",
@@ -30,7 +31,7 @@ import { buildConditionPayload, conditionFingerprint, policyFingerprint, resolve
30
31
  * "Workers Scripts Write",
31
32
  * "Workers KV Storage Write",
32
33
  * ],
33
- * resources: { "com.cloudflare.api.account": "*" },
34
+ * resources: { [`com.cloudflare.api.account.${accountId}`]: "*" },
34
35
  * },
35
36
  * ],
36
37
  * });
@@ -48,12 +49,12 @@ const resolveName = (id, name) => Effect.gen(function* () {
48
49
  return name ?? (yield* createPhysicalName({ id }));
49
50
  });
50
51
  export const AccountApiTokenProvider = () => Provider.effect(AccountApiToken, Effect.gen(function* () {
51
- const { accountId } = yield* CloudflareEnvironment;
52
+ const { accountId: defaultAccountId } = yield* CloudflareEnvironment;
52
53
  const createToken = yield* accounts.createToken;
53
54
  const updateToken = yield* accounts.updateToken;
54
55
  const deleteToken = yield* accounts.deleteToken;
55
56
  const getToken = yield* accounts.getToken;
56
- const buildAttributes = (tokenData, value) => ({
57
+ const buildAttributes = (tokenData, value, accountId) => ({
57
58
  tokenId: tokenData.id ?? "",
58
59
  name: tokenData.name ?? "",
59
60
  status: tokenData.status ?? "active",
@@ -65,13 +66,15 @@ export const AccountApiTokenProvider = () => Provider.effect(AccountApiToken, Ef
65
66
  diff: Effect.fn(function* ({ id, olds, news, output }) {
66
67
  if (!isResolved(news))
67
68
  return undefined;
68
- if ((output?.accountId ?? accountId) !== accountId) {
69
+ const newAccountId = news.accountId ?? defaultAccountId;
70
+ const oldAccountId = output?.accountId ?? olds?.accountId ?? defaultAccountId;
71
+ if (oldAccountId !== newAccountId) {
69
72
  return { action: "replace" };
70
73
  }
71
74
  const oldName = output?.name ?? (yield* resolveName(id, olds?.name));
72
75
  const newName = yield* resolveName(id, news.name);
73
- const oldPolicyFp = policyFingerprint(resolvePolicies(olds?.policies ?? [], accountId));
74
- const newPolicyFp = policyFingerprint(resolvePolicies(news.policies, accountId));
76
+ const oldPolicyFp = policyFingerprint(resolvePolicies(olds?.policies ?? []));
77
+ const newPolicyFp = policyFingerprint(resolvePolicies(news.policies));
75
78
  const oldCondFp = conditionFingerprint(olds?.condition);
76
79
  const newCondFp = conditionFingerprint(news.condition);
77
80
  if (oldName !== newName ||
@@ -83,8 +86,9 @@ export const AccountApiTokenProvider = () => Provider.effect(AccountApiToken, Ef
83
86
  }
84
87
  }),
85
88
  create: Effect.fn(function* ({ id, news }) {
89
+ const accountId = news.accountId ?? defaultAccountId;
86
90
  const name = yield* resolveName(id, news.name);
87
- const policies = resolvePolicies(news.policies, accountId);
91
+ const policies = resolvePolicies(news.policies);
88
92
  const result = yield* createToken({
89
93
  accountId,
90
94
  name,
@@ -96,11 +100,12 @@ export const AccountApiTokenProvider = () => Provider.effect(AccountApiToken, Ef
96
100
  if (!result.value) {
97
101
  return yield* Effect.die(`Cloudflare did not return a value for token "${name}".`);
98
102
  }
99
- return buildAttributes(result, Redacted.make(result.value));
103
+ return buildAttributes(result, Redacted.make(result.value), accountId);
100
104
  }),
101
105
  update: Effect.fn(function* ({ id, news, output }) {
106
+ const accountId = news.accountId ?? defaultAccountId;
102
107
  const name = yield* resolveName(id, news.name);
103
- const policies = resolvePolicies(news.policies, accountId);
108
+ const policies = resolvePolicies(news.policies);
104
109
  const result = yield* updateToken({
105
110
  accountId,
106
111
  tokenId: output.tokenId,
@@ -112,7 +117,7 @@ export const AccountApiTokenProvider = () => Provider.effect(AccountApiToken, Ef
112
117
  });
113
118
  // Cloudflare doesn't return the value on update; preserve the
114
119
  // value captured at creation.
115
- return buildAttributes(result, output.value);
120
+ return buildAttributes(result, output.value, accountId);
116
121
  }),
117
122
  delete: Effect.fn(function* ({ output }) {
118
123
  yield* deleteToken({
@@ -130,7 +135,7 @@ export const AccountApiTokenProvider = () => Provider.effect(AccountApiToken, Ef
130
135
  return yield* getToken({
131
136
  accountId: output.accountId,
132
137
  tokenId: output.tokenId,
133
- }).pipe(Effect.map((token) => buildAttributes(token, output.value)), Effect.catchTag("InvalidRoute", () => Effect.succeed(undefined)), Effect.catchTag("TokenNotFound", () => Effect.succeed(undefined)));
138
+ }).pipe(Effect.map((token) => buildAttributes(token, output.value, output.accountId)), Effect.catchTag("InvalidRoute", () => Effect.succeed(undefined)), Effect.catchTag("TokenNotFound", () => Effect.succeed(undefined)));
134
139
  }),
135
140
  };
136
141
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"AccountApiToken.js","sourceRoot":"","sources":["../../../src/Cloudflare/ApiToken/AccountApiToken.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AccountApiToken.js","sourceRoot":"","sources":["../../../src/Cloudflare/ApiToken/AccountApiToken.ts"],"names":[],"mappings":"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"}