alchemy 0.61.0 → 0.62.1

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 (163) hide show
  1. package/README.md +1 -2
  2. package/bin/alchemy.js +1916 -1934
  3. package/bin/commands/init.ts +29 -2
  4. package/bin/services/execute-alchemy.ts +1 -2
  5. package/bin/services/github-workflow.ts +204 -142
  6. package/lib/alchemy.d.ts +2 -2
  7. package/lib/alchemy.d.ts.map +1 -1
  8. package/lib/alchemy.js.map +1 -1
  9. package/lib/aws/client-props.d.ts +149 -0
  10. package/lib/aws/client-props.d.ts.map +1 -0
  11. package/lib/aws/client-props.js +1 -0
  12. package/lib/aws/client-props.js.map +1 -0
  13. package/lib/aws/credentials.d.ts +68 -5
  14. package/lib/aws/credentials.d.ts.map +1 -1
  15. package/lib/aws/credentials.js +148 -0
  16. package/lib/aws/credentials.js.map +1 -1
  17. package/lib/aws/ec2/internet-gateway-attachment.d.ts +57 -3
  18. package/lib/aws/ec2/internet-gateway-attachment.d.ts.map +1 -1
  19. package/lib/aws/ec2/internet-gateway-attachment.js +57 -3
  20. package/lib/aws/ec2/internet-gateway-attachment.js.map +1 -1
  21. package/lib/aws/ec2/internet-gateway.d.ts +68 -40
  22. package/lib/aws/ec2/internet-gateway.d.ts.map +1 -1
  23. package/lib/aws/ec2/internet-gateway.js +68 -40
  24. package/lib/aws/ec2/internet-gateway.js.map +1 -1
  25. package/lib/aws/ec2/nat-gateway.d.ts +99 -18
  26. package/lib/aws/ec2/nat-gateway.d.ts.map +1 -1
  27. package/lib/aws/ec2/nat-gateway.js +113 -37
  28. package/lib/aws/ec2/nat-gateway.js.map +1 -1
  29. package/lib/aws/ec2/route-table-association.d.ts +1 -1
  30. package/lib/aws/ec2/route-table-association.js +1 -1
  31. package/lib/aws/ec2/route-table.d.ts +64 -1
  32. package/lib/aws/ec2/route-table.d.ts.map +1 -1
  33. package/lib/aws/ec2/route-table.js +64 -1
  34. package/lib/aws/ec2/route-table.js.map +1 -1
  35. package/lib/aws/ec2/route.d.ts +60 -1
  36. package/lib/aws/ec2/route.d.ts.map +1 -1
  37. package/lib/aws/ec2/route.js +60 -1
  38. package/lib/aws/ec2/route.js.map +1 -1
  39. package/lib/aws/ec2/security-group.d.ts +96 -3
  40. package/lib/aws/ec2/security-group.d.ts.map +1 -1
  41. package/lib/aws/ec2/security-group.js +96 -3
  42. package/lib/aws/ec2/security-group.js.map +1 -1
  43. package/lib/aws/ec2/subnet.d.ts +61 -3
  44. package/lib/aws/ec2/subnet.d.ts.map +1 -1
  45. package/lib/aws/ec2/subnet.js +61 -3
  46. package/lib/aws/ec2/subnet.js.map +1 -1
  47. package/lib/aws/ec2/utils.d.ts +10 -2
  48. package/lib/aws/ec2/utils.d.ts.map +1 -1
  49. package/lib/aws/ec2/utils.js +68 -7
  50. package/lib/aws/ec2/utils.js.map +1 -1
  51. package/lib/aws/ec2/vpc.d.ts +50 -2
  52. package/lib/aws/ec2/vpc.d.ts.map +1 -1
  53. package/lib/aws/ec2/vpc.js +50 -2
  54. package/lib/aws/ec2/vpc.js.map +1 -1
  55. package/lib/aws/index.d.ts +2 -0
  56. package/lib/aws/index.d.ts.map +1 -1
  57. package/lib/aws/index.js +2 -0
  58. package/lib/aws/index.js.map +1 -1
  59. package/lib/cloudflare/api-response.js +2 -2
  60. package/lib/cloudflare/api-response.js.map +1 -1
  61. package/lib/cloudflare/api.d.ts +19 -0
  62. package/lib/cloudflare/api.d.ts.map +1 -1
  63. package/lib/cloudflare/api.js +4 -0
  64. package/lib/cloudflare/api.js.map +1 -1
  65. package/lib/cloudflare/assets.d.ts.map +1 -1
  66. package/lib/cloudflare/assets.js +3 -4
  67. package/lib/cloudflare/assets.js.map +1 -1
  68. package/lib/cloudflare/bucket.d.ts +5 -3
  69. package/lib/cloudflare/bucket.d.ts.map +1 -1
  70. package/lib/cloudflare/bucket.js +22 -18
  71. package/lib/cloudflare/bucket.js.map +1 -1
  72. package/lib/cloudflare/bundle/plugin-compat-warning.js +7 -7
  73. package/lib/cloudflare/bundle/plugin-compat-warning.js.map +1 -1
  74. package/lib/cloudflare/cloudflare-env-proxy.js.map +1 -1
  75. package/lib/cloudflare/compatibility-date.gen.d.ts +1 -1
  76. package/lib/cloudflare/compatibility-date.gen.js +1 -1
  77. package/lib/cloudflare/kv-namespace.d.ts +2 -2
  78. package/lib/cloudflare/kv-namespace.d.ts.map +1 -1
  79. package/lib/cloudflare/kv-namespace.js.map +1 -1
  80. package/lib/cloudflare/oauth.js +3 -3
  81. package/lib/cloudflare/oauth.js.map +1 -1
  82. package/lib/cloudflare/quick-tunnel.d.ts +1 -1
  83. package/lib/cloudflare/sveltekit/plugin.d.ts +2 -1
  84. package/lib/cloudflare/sveltekit/plugin.d.ts.map +1 -1
  85. package/lib/cloudflare/sveltekit/plugin.js +9 -0
  86. package/lib/cloudflare/sveltekit/plugin.js.map +1 -1
  87. package/lib/cloudflare/website.d.ts.map +1 -1
  88. package/lib/cloudflare/website.js +26 -97
  89. package/lib/cloudflare/website.js.map +1 -1
  90. package/lib/cloudflare/worker-bundle.d.ts.map +1 -1
  91. package/lib/cloudflare/worker-bundle.js +9 -8
  92. package/lib/cloudflare/worker-bundle.js.map +1 -1
  93. package/lib/cloudflare/worker-tail.d.ts.map +1 -1
  94. package/lib/cloudflare/worker-tail.js +6 -6
  95. package/lib/cloudflare/worker-tail.js.map +1 -1
  96. package/lib/resource.d.ts +1 -0
  97. package/lib/resource.d.ts.map +1 -1
  98. package/lib/resource.js +13 -2
  99. package/lib/resource.js.map +1 -1
  100. package/lib/scope.d.ts +24 -23
  101. package/lib/scope.d.ts.map +1 -1
  102. package/lib/scope.js +28 -22
  103. package/lib/scope.js.map +1 -1
  104. package/lib/state/cloudflare-state-store.d.ts.map +1 -1
  105. package/lib/state/cloudflare-state-store.js +2 -1
  106. package/lib/state/cloudflare-state-store.js.map +1 -1
  107. package/lib/util/idempotent-spawn.d.ts +13 -8
  108. package/lib/util/idempotent-spawn.d.ts.map +1 -1
  109. package/lib/util/idempotent-spawn.js +120 -77
  110. package/lib/util/idempotent-spawn.js.map +1 -1
  111. package/lib/util/index.d.ts +2 -0
  112. package/lib/util/index.d.ts.map +1 -0
  113. package/lib/util/index.js +2 -0
  114. package/lib/util/index.js.map +1 -0
  115. package/lib/util/safe-fetch.d.ts +24 -0
  116. package/lib/util/safe-fetch.d.ts.map +1 -1
  117. package/lib/util/safe-fetch.js +72 -0
  118. package/lib/util/safe-fetch.js.map +1 -1
  119. package/package.json +8 -5
  120. package/src/alchemy.ts +2 -2
  121. package/src/aws/client-props.ts +156 -0
  122. package/src/aws/credentials.ts +165 -4
  123. package/src/aws/ec2/internet-gateway-attachment.ts +59 -4
  124. package/src/aws/ec2/internet-gateway.ts +70 -41
  125. package/src/aws/ec2/nat-gateway.ts +123 -33
  126. package/src/aws/ec2/route-table-association.ts +1 -1
  127. package/src/aws/ec2/route-table.ts +66 -2
  128. package/src/aws/ec2/route.ts +62 -2
  129. package/src/aws/ec2/security-group.ts +98 -4
  130. package/src/aws/ec2/subnet.ts +63 -4
  131. package/src/aws/ec2/utils.ts +73 -7
  132. package/src/aws/ec2/vpc.ts +52 -3
  133. package/src/aws/index.ts +2 -0
  134. package/src/cloudflare/api-response.ts +2 -2
  135. package/src/cloudflare/api.ts +23 -0
  136. package/src/cloudflare/assets.ts +3 -4
  137. package/src/cloudflare/bucket.ts +27 -25
  138. package/src/cloudflare/bundle/plugin-compat-warning.ts +7 -7
  139. package/src/cloudflare/cloudflare-env-proxy.ts +2 -2
  140. package/src/cloudflare/compatibility-date.gen.ts +1 -1
  141. package/src/cloudflare/kv-namespace.ts +26 -27
  142. package/src/cloudflare/oauth.ts +3 -3
  143. package/src/cloudflare/sveltekit/plugin.ts +14 -1
  144. package/src/cloudflare/website.ts +30 -111
  145. package/src/cloudflare/worker-bundle.ts +9 -8
  146. package/src/cloudflare/worker-tail.ts +6 -8
  147. package/src/resource.ts +19 -2
  148. package/src/scope.ts +77 -46
  149. package/src/state/cloudflare-state-store.ts +2 -1
  150. package/src/util/idempotent-spawn.ts +142 -99
  151. package/src/util/index.ts +1 -0
  152. package/src/util/safe-fetch.ts +114 -0
  153. package/templates/astro/alchemy.run.ts +4 -2
  154. package/templates/nuxt/alchemy.run.ts +4 -2
  155. package/templates/react-router/alchemy.run.ts +4 -2
  156. package/templates/rwsdk/alchemy.run.ts +3 -3
  157. package/templates/sveltekit/alchemy.run.ts +4 -2
  158. package/templates/tanstack-start/alchemy.run.ts +4 -2
  159. package/templates/typescript/alchemy.run.ts +2 -2
  160. package/templates/vite/alchemy.run.ts +3 -2
  161. package/templates/vite/src/worker.ts +13 -0
  162. package/templates/vite/tsconfig.json +0 -1
  163. package/templates/vite/worker/index.ts +0 -12
@@ -59,6 +59,7 @@ export const init = loggedProcedure
59
59
  main: updatedConfig?.main,
60
60
  });
61
61
  await updatePackageJson(context);
62
+ await updateGitignore(context);
62
63
 
63
64
  displaySuccessMessage(context);
64
65
  } catch (_error) {
@@ -264,8 +265,7 @@ export const worker = await Vite("${context.projectName}", {
264
265
  // main: "./.output/server/index.mjs",
265
266
  // command: "vite build",
266
267
  // dev: { command: "vite dev" },
267
- assets: "dist",
268
- wrangler: false,
268
+ assets: "dist"
269
269
  });
270
270
 
271
271
  console.log({
@@ -482,6 +482,33 @@ async function updatePackageJson(context: InitContext): Promise<void> {
482
482
  }
483
483
  }
484
484
 
485
+ async function updateGitignore(context: InitContext) {
486
+ try {
487
+ const gitignorePath = resolve(context.cwd, ".gitignore");
488
+
489
+ await fs.ensureFile(gitignorePath);
490
+
491
+ let gitignoreContent = "";
492
+ if (await fs.pathExists(gitignorePath)) {
493
+ gitignoreContent = await fs.readFile(gitignorePath, "utf-8");
494
+ }
495
+
496
+ const lines = gitignoreContent.split("\n").map((line) => line.trim());
497
+ const hasAlchemy = lines.some(
498
+ (line) => line === ".alchemy" || line === ".alchemy/",
499
+ );
500
+
501
+ if (!hasAlchemy) {
502
+ if (gitignoreContent && !gitignoreContent.endsWith("\n")) {
503
+ gitignoreContent += "\n";
504
+ }
505
+ await fs.appendFile(gitignorePath, ".alchemy\n", "utf-8");
506
+ }
507
+ } catch (error) {
508
+ throwWithContext(error, "Failed to update .gitignore");
509
+ }
510
+ }
511
+
485
512
  interface TsConfigUpdate {
486
513
  include?: string[];
487
514
  exclude?: string[];
@@ -160,8 +160,7 @@ export async function execAlchemy(
160
160
  });
161
161
 
162
162
  console.log(command);
163
- const [cmd, ...cmdArgs] = command.split(" ");
164
- const child = spawn(cmd, cmdArgs, {
163
+ const child = spawn(command, {
165
164
  cwd,
166
165
  shell: true,
167
166
  stdio: "inherit",
@@ -1,8 +1,11 @@
1
+ /** biome-ignore-all lint/suspicious/noTemplateCurlyInString: we are building a github template workflow */
1
2
  import { spinner } from "@clack/prompts";
2
- import * as fs from "fs-extra";
3
+ import fs from "fs-extra";
3
4
  import path from "node:path";
5
+ import YAML from "yaml";
4
6
  import { throwWithContext } from "../errors.ts";
5
7
  import type { ProjectContext } from "../types.ts";
8
+ import { PackageManager } from "./package-manager.ts";
6
9
 
7
10
  export async function addGitHubWorkflowToAlchemy(
8
11
  context: ProjectContext,
@@ -16,128 +19,215 @@ export async function addGitHubWorkflowToAlchemy(
16
19
  const workflowDir = path.join(context.path, ".github", "workflows");
17
20
  await fs.ensureDir(workflowDir);
18
21
 
19
- const prPreviewWorkflow = `name: Preview
20
-
21
- on:
22
- pull_request:
23
- types: [opened, reopened, synchronize, closed]
24
-
25
- # Ensure only one workflow runs at a time per PR
26
- concurrency:
27
- group: "pr-preview-\${{ github.event.pull_request.number }}"
28
- cancel-in-progress: false
29
-
30
- jobs:
31
- deploy-preview:
32
- if: \${{ github.event.action != 'closed' }}
33
- runs-on: ubuntu-latest
34
- permissions:
35
- contents: read
36
- pull-requests: write
37
- steps:
38
- - uses: actions/checkout@v4
39
-
40
- - name: Setup Bun
41
- uses: oven-sh/setup-bun@v1
42
- with:
43
- bun-version: latest
44
-
45
- - name: Install dependencies
46
- shell: bash
47
- run: bun install
48
-
49
- - name: Deploy Preview
50
- run: bun run deploy
51
- env:
52
- BRANCH_PREFIX: pr-\${{ github.event.pull_request.number }}
53
- GITHUB_SHA: \${{ github.event.pull_request.head.sha }}
54
- GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }}
55
- GITHUB_REPOSITORY_OWNER: \${{ github.repository_owner }}
56
- GITHUB_REPOSITORY_NAME: \${{ github.event.repository.name }}
57
- PULL_REQUEST: \${{ github.event.pull_request.number }}
58
- CLOUDFLARE_API_TOKEN: \${{ secrets.CLOUDFLARE_API_TOKEN }}
59
- CLOUDFLARE_ACCOUNT_ID: \${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
60
-
61
- cleanup-preview:
62
- if: \${{ github.event.action == 'closed' }}
63
- runs-on: ubuntu-latest
64
- permissions:
65
- contents: read
66
- pull-requests: write
67
- steps:
68
- - uses: actions/checkout@v4
69
-
70
- - name: Setup Bun
71
- uses: oven-sh/setup-bun@v1
72
- with:
73
- bun-version: latest
74
-
75
- - name: Install dependencies
76
- shell: bash
77
- run: bun install
78
-
79
- - name: Cleanup Preview
80
- run: bun run destroy
81
- env:
82
- BRANCH_PREFIX: pr-\${{ github.event.pull_request.number }}
83
- GITHUB_SHA: \${{ github.event.pull_request.head.sha }}
84
- GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }}
85
- GITHUB_REPOSITORY_OWNER: \${{ github.repository_owner }}
86
- GITHUB_REPOSITORY_NAME: \${{ github.event.repository.name }}
87
- PULL_REQUEST: \${{ github.event.pull_request.number }}
88
- CLOUDFLARE_API_TOKEN: \${{ secrets.CLOUDFLARE_API_TOKEN }}
89
- CLOUDFLARE_ACCOUNT_ID: \${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
90
- `;
91
-
92
- const publishWorkflow = `name: Publish
93
-
94
- on:
95
- push:
96
- branches: [main]
97
-
98
- # Ensure only one workflow runs at a time
99
- concurrency:
100
- group: "publish"
101
- cancel-in-progress: false
102
-
103
- jobs:
104
- publish:
105
- runs-on: ubuntu-latest
106
- permissions:
107
- contents: read
108
- steps:
109
- - uses: actions/checkout@v4
110
-
111
- - name: Setup Bun
112
- uses: oven-sh/setup-bun@v1
113
- with:
114
- bun-version: latest
115
-
116
- - name: Install dependencies
117
- shell: bash
118
- run: bun install
119
-
120
- - name: Deploy to Production
121
- run: bun run deploy
122
- env:
123
- STAGE: prod
124
- GITHUB_SHA: \${{ github.sha }}
125
- CLOUDFLARE_API_TOKEN: \${{ secrets.CLOUDFLARE_API_TOKEN }}
126
- CLOUDFLARE_ACCOUNT_ID: \${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
127
- `;
22
+ const pmCommands =
23
+ PackageManager[context.packageManager] ?? PackageManager.bun;
24
+ const installCmd = pmCommands.install;
25
+ const runCmd = pmCommands.run;
26
+
27
+ // Get the current Node.js major version
28
+ const nodeVersion = process.version.match(/^v(\d+)/)?.[1] || "22";
29
+
30
+ const installRuntime =
31
+ context.packageManager === "bun"
32
+ ? {
33
+ name: "Setup Bun",
34
+ uses: "oven-sh/setup-bun@v1",
35
+ with: { "bun-version": "latest" },
36
+ }
37
+ : context.packageManager === "deno"
38
+ ? {
39
+ name: "Setup Deno",
40
+ uses: "denoland/setup-deno@v1",
41
+ with: { "deno-version": "v1.x" },
42
+ }
43
+ : {
44
+ name: "Setup Node.js",
45
+ uses: "actions/setup-node@v4",
46
+ with: {
47
+ "node-version": nodeVersion,
48
+ ...(context.packageManager === "pnpm" ||
49
+ context.packageManager === "yarn"
50
+ ? { cache: context.packageManager }
51
+ : {}),
52
+ },
53
+ };
54
+
55
+ const installAdditionalPackageManager =
56
+ context.packageManager === "pnpm"
57
+ ? [
58
+ {
59
+ name: "Setup pnpm",
60
+ uses: "pnpm/action-setup@v3",
61
+ with: { version: "9" },
62
+ },
63
+ ]
64
+ : [];
65
+
66
+ const installDependencies = {
67
+ name: "Install dependencies",
68
+ shell: "bash",
69
+ run: installCmd,
70
+ };
128
71
 
129
72
  await fs.writeFile(
130
73
  path.join(workflowDir, "pr-preview.yml"),
131
- prPreviewWorkflow,
74
+ YAML.stringify({
75
+ name: "Preview",
76
+ on: {
77
+ pull_request: {
78
+ types: ["opened", "reopened", "synchronize", "closed"],
79
+ },
80
+ },
81
+ concurrency: {
82
+ group: "pr-preview-\${{ github.event.pull_request.number }}",
83
+ "cancel-in-progress": false,
84
+ },
85
+ jobs: {
86
+ "deploy-preview": {
87
+ if: "\${{ github.event.action != 'closed' }}",
88
+ "runs-on": "ubuntu-latest",
89
+ permissions: {
90
+ contents: "read",
91
+ "pull-requests": "write",
92
+ },
93
+ steps: [
94
+ { uses: "actions/checkout@v4" },
95
+ installRuntime,
96
+ ...installAdditionalPackageManager,
97
+ installDependencies,
98
+ {
99
+ name: "Deploy Preview",
100
+ run: `${runCmd} deploy --stage pr-\${{ github.event.pull_request.number }}`,
101
+ env: {
102
+ GITHUB_SHA: "${{ github.event.pull_request.head.sha }}",
103
+ GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}",
104
+ GITHUB_REPOSITORY_OWNER: "${{ github.repository_owner }}",
105
+ GITHUB_REPOSITORY_NAME: "${{ github.event.repository.name }}",
106
+ PULL_REQUEST: "${{ github.event.pull_request.number }}",
107
+ CLOUDFLARE_EMAIL: "${{ secrets.CLOUDFLARE_EMAIL }}",
108
+ CLOUDFLARE_API_TOKEN: "${{ secrets.CLOUDFLARE_API_TOKEN }}",
109
+ CLOUDFLARE_ACCOUNT_ID: "${{ secrets.CLOUDFLARE_ACCOUNT_ID }}",
110
+ ALCHEMY_PASSWORD: "${{ secrets.ALCHEMY_PASSWORD }}",
111
+ ALCHEMY_STATE_TOKEN: "${{ secrets.ALCHEMY_STATE_TOKEN }}",
112
+ },
113
+ },
114
+ ],
115
+ },
116
+ "cleanup-preview": {
117
+ if: "${{ github.event.action == 'closed' }}",
118
+ "runs-on": "ubuntu-latest",
119
+ permissions: {
120
+ contents: "read",
121
+ "pull-requests": "write",
122
+ },
123
+ steps: [
124
+ { uses: "actions/checkout@v4" },
125
+ installRuntime,
126
+ ...installAdditionalPackageManager,
127
+ installDependencies,
128
+ {
129
+ name: "Cleanup Preview",
130
+ run: `${runCmd} destroy`,
131
+ env: {
132
+ GITHUB_SHA: "${{ github.event.pull_request.head.sha }}",
133
+ GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}",
134
+ GITHUB_REPOSITORY_OWNER: "${{ github.repository_owner }}",
135
+ GITHUB_REPOSITORY_NAME: "${{ github.event.repository.name }}",
136
+ PULL_REQUEST: "${{ github.event.pull_request.number }}",
137
+ CLOUDFLARE_EMAIL: "${{ secrets.CLOUDFLARE_EMAIL }}",
138
+ CLOUDFLARE_API_TOKEN: "${{ secrets.CLOUDFLARE_API_TOKEN }}",
139
+ CLOUDFLARE_ACCOUNT_ID: "${{ secrets.CLOUDFLARE_ACCOUNT_ID }}",
140
+ ALCHEMY_PASSWORD: "${{ secrets.ALCHEMY_PASSWORD }}",
141
+ ALCHEMY_STATE_TOKEN: "${{ secrets.ALCHEMY_STATE_TOKEN }}",
142
+ },
143
+ },
144
+ ],
145
+ },
146
+ },
147
+ } as const),
148
+ );
149
+ await fs.writeFile(
150
+ path.join(workflowDir, "publish.yml"),
151
+ YAML.stringify({
152
+ name: "Publish",
153
+ on: {
154
+ push: {
155
+ branches: ["main"],
156
+ },
157
+ },
158
+ concurrency: {
159
+ group: "publish",
160
+ "cancel-in-progress": false,
161
+ },
162
+ jobs: {
163
+ publish: {
164
+ "runs-on": "ubuntu-latest",
165
+ permissions: {
166
+ contents: "read",
167
+ },
168
+ steps: [
169
+ { uses: "actions/checkout@v4" },
170
+ context.packageManager === "bun"
171
+ ? {
172
+ name: "Setup Bun",
173
+ uses: "oven-sh/setup-bun@v1",
174
+ with: { "bun-version": "latest" },
175
+ }
176
+ : context.packageManager === "deno"
177
+ ? {
178
+ name: "Setup Deno",
179
+ uses: "denoland/setup-deno@v1",
180
+ with: { "deno-version": "v1.x" },
181
+ }
182
+ : {
183
+ name: "Setup Node.js",
184
+ uses: "actions/setup-node@v4",
185
+ with: {
186
+ "node-version": nodeVersion,
187
+ ...(context.packageManager === "pnpm" ||
188
+ context.packageManager === "yarn"
189
+ ? { cache: context.packageManager }
190
+ : {}),
191
+ },
192
+ },
193
+ ...(context.packageManager === "pnpm"
194
+ ? [
195
+ {
196
+ name: "Setup pnpm",
197
+ uses: "pnpm/action-setup@v3",
198
+ with: { version: "9" },
199
+ },
200
+ ]
201
+ : []),
202
+ { name: "Install dependencies", shell: "bash", run: installCmd },
203
+ {
204
+ name: "Deploy to Production",
205
+ run: `${runCmd} deploy`,
206
+ env: {
207
+ STAGE: "prod",
208
+ GITHUB_SHA: "${{ github.sha }}",
209
+ GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}",
210
+ CLOUDFLARE_EMAIL: "${{ secrets.CLOUDFLARE_EMAIL }}",
211
+ CLOUDFLARE_API_TOKEN: "${{ secrets.CLOUDFLARE_API_TOKEN }}",
212
+ CLOUDFLARE_ACCOUNT_ID: "${{ secrets.CLOUDFLARE_ACCOUNT_ID }}",
213
+ ALCHEMY_PASSWORD: "${{ secrets.ALCHEMY_PASSWORD }}",
214
+ ALCHEMY_STATE_TOKEN: "${{ secrets.ALCHEMY_STATE_TOKEN }}",
215
+ },
216
+ },
217
+ ],
218
+ },
219
+ },
220
+ } as const),
132
221
  );
133
- await fs.writeFile(path.join(workflowDir, "publish.yml"), publishWorkflow);
134
222
 
135
223
  let code = await fs.readFile(alchemyFilePath, "utf-8");
224
+ code = code.replace("{projectName}", context.name);
136
225
 
137
226
  const alchemyImportRegex = /(import alchemy from "alchemy";)/;
138
227
  const alchemyImportMatch = code.match(alchemyImportRegex);
139
228
  if (alchemyImportMatch) {
140
- const githubImport = '\nimport { GitHubComment } from "alchemy/github";';
229
+ const githubImport = `\nimport { GitHubComment } from "alchemy/github";
230
+ import { CloudflareStateStore } from "alchemy/state";`;
141
231
  code = code.replace(alchemyImportRegex, `$1${githubImport}`);
142
232
  }
143
233
 
@@ -149,16 +239,6 @@ jobs:
149
239
  lastImportEnd = lastImportMatch.index + lastImportMatch[0].length;
150
240
  }
151
241
 
152
- if (lastImportEnd > 0) {
153
- const stageVariable = `
154
- const stage = process.env.STAGE || process.env.BRANCH_PREFIX || "dev";
155
- `;
156
- code =
157
- code.slice(0, lastImportEnd) +
158
- stageVariable +
159
- code.slice(lastImportEnd);
160
- }
161
-
162
242
  const appCallRegex = /const app = await alchemy\("([^"]+)"\);/;
163
243
  const appMatch = code.match(appCallRegex);
164
244
  if (appMatch) {
@@ -166,29 +246,11 @@ const stage = process.env.STAGE || process.env.BRANCH_PREFIX || "dev";
166
246
  code = code.replace(
167
247
  appCallRegex,
168
248
  `const app = await alchemy("${appName}", {
169
- stage,
249
+ stateStore: (scope) => new CloudflareStateStore(scope),
170
250
  });`,
171
251
  );
172
252
  }
173
253
 
174
- const cloudflareResourceRegex =
175
- /(await (?:Worker|TanStackStart|Nuxt|Astro|Website|SvelteKit|Redwood|ReactRouter|Vite)\([^,]+,\s*{[^}]*)(}\);)/g;
176
- code = code.replace(
177
- cloudflareResourceRegex,
178
- (match, beforeClosing, closing) => {
179
- if (beforeClosing.includes("version:")) {
180
- return match;
181
- }
182
-
183
- const hasTrailingComma = beforeClosing.trim().endsWith(",");
184
- const versionProp = hasTrailingComma
185
- ? ` version: stage === "prod" ? undefined : stage,\n`
186
- : `,\n version: stage === "prod" ? undefined : stage,\n`;
187
-
188
- return beforeClosing + versionProp + closing;
189
- },
190
- );
191
-
192
254
  const finalizeRegex = /(await app\.finalize\(\);)/;
193
255
  const finalizeMatch = code.match(finalizeRegex);
194
256
  if (finalizeMatch) {
package/lib/alchemy.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { DestroyStrategy, destroy } from "./destroy.ts";
2
2
  import { env } from "./env.ts";
3
- import { Scope } from "./scope.ts";
3
+ import { Scope, type ProviderCredentials } from "./scope.ts";
4
4
  import { secret } from "./secret.ts";
5
5
  import type { StateStoreType } from "./state.ts";
6
6
  import type { LoggerApi } from "./util/cli.ts";
@@ -174,7 +174,7 @@ export interface AlchemyOptions {
174
174
  export interface ScopeOptions extends AlchemyOptions {
175
175
  enter: boolean;
176
176
  }
177
- export interface RunOptions extends AlchemyOptions {
177
+ export interface RunOptions extends AlchemyOptions, ProviderCredentials {
178
178
  /**
179
179
  * @default false
180
180
  */
@@ -1 +1 @@
1
- {"version":3,"file":"alchemy.d.ts","sourceRoot":"","sources":["../src/alchemy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"alchemy.d.ts","sourceRoot":"","sources":["../src/alchemy.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAmB,OAAO,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAU/B,OAAO,EAAiB,KAAK,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAI/C;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC;AAE9B,eAAO,MAAM,OAAO,EAAE,OAAyB,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,OAAO,GAAG,CAAC;IAChB,OAAO,EAAE,OAAO,OAAO,CAAC;IAExB;;OAEG;IACH,GAAG,EAAE,OAAO,GAAG,CAAC;IAEhB;;;;OAIG;IACH,MAAM,EAAE,OAAO,MAAM,CAAC;IACtB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;;;;;;;;;;;;;;;;OAiBG;IACH,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7E;;;;;;;;;;;;;;;;OAgBG;IACH,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACrE;AA6ND,MAAM,MAAM,KAAK,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC;IACf;;;;OAIG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,UAAW,SAAQ,cAAc,EAAE,mBAAmB;IACrE;;OAEG;IAEH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;GAcG;AACH,iBAAe,GAAG,CAAC,CAAC,EAClB,GAAG,IAAI,EACH,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GAC3D;IACE,EAAE,EAAE,MAAM;IACV,OAAO,EAAE,UAAU;IACnB,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC;CAC9C,GACJ,OAAO,CAAC,CAAC,CAAC,CAoEZ"}
@@ -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":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EACL,WAAW,EACX,UAAU,EACV,YAAY,EACZ,aAAa,EACb,WAAW,GAEZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,KAAK,EAA4B,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAO7D,MAAM,CAAC,MAAM,OAAO,GAAY,QAAe,CAAC;AAwFhD,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC;AACnB,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;AAE/B;;;GAGG;AACH,KAAK,UAAU,QAAQ,CACrB,GAAG,IAE6D;IAEhE,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAiC,CAAC;QAE7D,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG;YACjB,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAClC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBAC1B,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,IAAI;YACV,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC/D,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;YAClE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAClC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAClC,4FAA4F;YAC5F,KAAK,EAAE,CAAC,SAAS,UAAU;gBACzB,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACrC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM;oBACvC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;oBAChB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YACxB,CAAC,CAAC,EAAE;YACJ,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB;SACL,CAAC;QACpC,MAAM,aAAa,GAAG;YACpB,GAAG,UAAU;YACb,GAAG,OAAO;SACX,CAAC;QACF,IACE,aAAa,CAAC,UAAU,KAAK,SAAS;YACtC,OAAO,CAAC,GAAG,CAAC,EAAE;YACd,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,OAAO,EACpD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC;;;;;;;;;;CAUrB,CAAC,CAAC;QACC,CAAC;QAED,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC;QAClE,MAAM,eAAe,GACnB,aAAa,EAAE,MAAM,EAAE,eAAe;YACtC,eAAe,CAAC,MAAM,CAAC;gBACrB,KAAK;gBACL,OAAO,EAAE,aAAa,EAAE,SAAS,IAAI,IAAI;gBACzC,KAAK,EAAE,aAAa,EAAE,KAAK,IAAI,KAAK;aACrC,CAAC,CAAC;QACL,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC;YACrB,GAAG,aAAa;YAChB,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,OAAO;YAClB,KAAK;YACL,QAAQ,EAAE,aAAa,EAAE,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB;YACjE,eAAe;SAChB,CAAC,CAAC;QACH,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACd,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBACvB,IAAI,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;gBACtC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,aAAa,EAAE,KAAK,IAAI,aAAa,CAAC;QACxD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;YACtB,GAAG,aAAa;YAChB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QACH,IAAI,CAAC;YACH,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9B,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,uEAAuE;YACvE,uDAAuD;YACvD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,aAAa,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,UAAU;QAC9B,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC;QAC9C,CAAC,CAAC,CAAC,CAAC;IACN,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAEzC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9D,MAAM,CAAC,kBAAkB,CAAC;QAC1B,MAAM,CAAC,yBAAyB,CAAC;KAClC,CAAC,CAAC;IAEH,MAAM,UAAU,GAA2B,EAAE,CAAC;IAE9C,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,MAAM,CAAC,GAAG,CAAC,KAAK,UAAU,OAAO,CAAC,KAAK;QACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,MAAM,GAAG,KAAK,CAAC;QACxB,CAAC;QACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,IACE,OAAO,KAAK,KAAK,QAAQ;YACzB,OAAO,KAAK,KAAK,SAAS;YAC1B,OAAO,KAAK,KAAK,QAAQ,EACzB,CAAC;YACD,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,KAAK,YAAY,OAAO,EAAE,CAAC;YAC7B,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC,EAAE,CAAC;gBAChC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC;QACzD,CAAC;QACD,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;iBAC/B,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE;gBAC3B,UAAU,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;gBAC/B,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,QAAQ,GAAG,CAAC;YACrD,CAAC,CAAC;iBACD,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CACL,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAC/D,CACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChE,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACtC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;gBACvC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC;YACzD,CAAC;YACD,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAChE,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC;QACzD,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,CACL,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC/C,OAAO,KAAK,GAAG,KAAK,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,CAAC,CAAC,CACH,CACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;QACD,4BAA4B;QAC5B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CACH,CAAC;IAEF,mFAAmF;IACnF,MAAM,KAAK,GAAG,QAAQ;SACnB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,IAAI;SACD,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAC3D;SACA,IAAI,CAAC,IAAI,CAAC,CACd;SACA,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CACnB,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CACjE;SACA,IAAI,CAAC,EAAE,CAAC;SACR,KAAK,CAAC,IAAI,CAAC,CAAC;IAEf,2CAA2C;IAC3C,OAAO;QACL,+DAA+D;QAC/D,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC;YAC3D,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAEpB,+DAA+D;QAC/D,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;aACvB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aACtC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,OAAO,MAAM,QAAQ,WAAW,OAAO,KAAK,OAAO,UAAU,CAAC;QAChE,CAAC,CAAC;aACD,IAAI,CAAC,MAAM,CAAC;KAChB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAgGD;;;;;;;;;;;;;;GAcG;AACH,KAAK,UAAU,GAAG,CAChB,GAAG,IAME;IAEL,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,GACrB,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU;QAC3B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAE,IAIC,CAAC;IACT,MAAM,eAAe,GACnB,OAAO,EAAE,MAAM,EAAE,eAAe;QAChC,eAAe,CAAC,MAAM,CAAC;YACrB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC;YACpD,OAAO,EAAE,OAAO,EAAE,SAAS,IAAI,IAAI;YACnC,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK;SAC/B,CAAC,CAAC;IACL,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC;QACvB,GAAG,OAAO;QACV,MAAM,EAAE,OAAO,EAAE,MAAM;QACvB,SAAS,EAAE,EAAE;QACb,eAAe;KAChB,CAAC,CAAC;IACH,IAAI,CAAC;QACH,IAAI,OAAO,EAAE,UAAU,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClD,uFAAuF;YACvF,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG;gBACb,CAAC,UAAU,CAAC,EAAE,EAAE;gBAChB,CAAC,WAAW,CAAC,EAAE,EAAE;gBACjB,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,IAAI;gBAC1B,CAAC,aAAa,CAAC,EAAE,MAAM;gBACvB,CAAC,WAAW,CAAC,EAAE,GAAG;gBAClB,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,eAAe,IAAI,YAAY;aACnD,CAAC;YACX,MAAM,QAAQ,GAAG;gBACf,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,EAAE;gBACF,GAAG;gBACH,IAAI,EAAE,EAAE;gBACR,GAAG,EAAE,EAAE;gBACP,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,SAAS;gBACjB,MAAM;aACE,CAAC;YACX,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,MAAM,CAAC,MAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC/C,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CACb,2DAA2D,IAAI,CAAC,IAAI,MAAM,EAAE,EAAE,CAC/E,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,MAAO,CAAC,SAAS,CAAC,GAAG,CAC1B,EAAE,EACF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAoB,CACpE,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IACE,CAAC,CAAC,KAAK,YAAY,eAAe,IAAI,KAAK,YAAY,cAAc,CAAC,EACtE,CAAC;YACD,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC"}
@@ -0,0 +1,149 @@
1
+ import type { Secret } from "../secret.ts";
2
+ /**
3
+ * AWS client properties for credential configuration.
4
+ *
5
+ * This interface defines the properties that can be used to configure AWS credentials
6
+ * at different levels of your application. It supports the three-tier credential resolution
7
+ * system (global → scope → resource) and enables multi-account and multi-region deployments.
8
+ *
9
+ * These properties can be specified at:
10
+ * 1. Resource level - directly in resource creation parameters
11
+ * 2. Scope level - in alchemy.run() options with `aws` property
12
+ * 3. Global level - through environment variables (AWS_REGION, AWS_PROFILE, etc.)
13
+ *
14
+ * The credential resolution follows a precedence order where resource-level credentials
15
+ * override scope-level credentials, which override global environment variables.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * // Resource-level credential overrides
20
+ * const vpc = await Vpc("main-vpc", {
21
+ * cidrBlock: "10.0.0.0/16",
22
+ * region: "us-west-2", // Override region
23
+ * profile: "production", // Override profile
24
+ * tags: { Name: "main-vpc" }
25
+ * });
26
+ * ```
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * // Scope-level credential configuration
31
+ * await alchemy.run("production", {
32
+ * aws: {
33
+ * region: "us-west-2",
34
+ * profile: "production",
35
+ * }
36
+ * }, async () => {
37
+ * // Resources created here will use the scope credentials by default
38
+ * const vpc = await Vpc("main-vpc", {
39
+ * cidrBlock: "10.0.0.0/16"
40
+ * });
41
+ * });
42
+ * ```
43
+ */
44
+ export interface AwsClientProps {
45
+ /**
46
+ * AWS access key ID for authentication.
47
+ *
48
+ * This corresponds to the AWS_ACCESS_KEY_ID environment variable.
49
+ * When provided at the resource or scope level, it overrides the environment variable.
50
+ */
51
+ accessKeyId?: Secret<string>;
52
+ /**
53
+ * AWS secret access key for authentication.
54
+ *
55
+ * This corresponds to the AWS_SECRET_ACCESS_KEY environment variable.
56
+ * When provided at the resource or scope level, it overrides the environment variable.
57
+ */
58
+ secretAccessKey?: Secret<string>;
59
+ /**
60
+ * AWS session token for temporary credentials.
61
+ *
62
+ * This corresponds to the AWS_SESSION_TOKEN environment variable.
63
+ * Used with temporary credentials from STS or when assuming a role.
64
+ */
65
+ sessionToken?: Secret<string>;
66
+ /**
67
+ * AWS region to use for API calls.
68
+ *
69
+ * This corresponds to the AWS_REGION or AWS_DEFAULT_REGION environment variables.
70
+ * When provided at the resource or scope level, it overrides the environment variables.
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * // Resource in a specific region
75
+ * const euVpc = await Vpc("eu-vpc", {
76
+ * cidrBlock: "10.0.0.0/16",
77
+ * region: "eu-west-1",
78
+ * tags: { Name: "eu-vpc" }
79
+ * });
80
+ * ```
81
+ */
82
+ region?: string;
83
+ /**
84
+ * AWS profile name to use from credentials file.
85
+ *
86
+ * This corresponds to the AWS_PROFILE environment variable.
87
+ * Profiles are defined in ~/.aws/credentials or ~/.aws/config files.
88
+ *
89
+ * @example
90
+ * ```typescript
91
+ * // Resource using a specific profile
92
+ * const prodVpc = await Vpc("prod-vpc", {
93
+ * cidrBlock: "10.0.0.0/16",
94
+ * profile: "production-account",
95
+ * tags: { Name: "prod-vpc" }
96
+ * });
97
+ * ```
98
+ */
99
+ profile?: string;
100
+ /**
101
+ * AWS role ARN to assume for authentication.
102
+ *
103
+ * This corresponds to the AWS_ROLE_ARN environment variable.
104
+ * Used for cross-account access or for assuming roles with specific permissions.
105
+ *
106
+ * @example
107
+ * ```typescript
108
+ * // Resource using role assumption
109
+ * const crossAccountVpc = await Vpc("cross-account-vpc", {
110
+ * cidrBlock: "10.0.0.0/16",
111
+ * roleArn: "arn:aws:iam::123456789012:role/DeploymentRole",
112
+ * roleSessionName: "alchemy-deployment",
113
+ * tags: { Name: "cross-account-vpc" }
114
+ * });
115
+ * ```
116
+ */
117
+ roleArn?: string;
118
+ /**
119
+ * External ID to use when assuming a role.
120
+ *
121
+ * This corresponds to the AWS_EXTERNAL_ID environment variable.
122
+ * Used as an additional security measure when assuming roles across accounts.
123
+ */
124
+ externalId?: string;
125
+ /**
126
+ * Session name to use when assuming a role.
127
+ *
128
+ * This corresponds to the AWS_ROLE_SESSION_NAME environment variable.
129
+ * Helps identify who/what is using the assumed role in AWS CloudTrail logs.
130
+ */
131
+ roleSessionName?: string;
132
+ }
133
+ /**
134
+ * AWS scope extensions - adds AWS credential support to scope options.
135
+ * This uses TypeScript module augmentation to extend the ProviderCredentials interface.
136
+ * Since ScopeOptions and RunOptions both extend ProviderCredentials,
137
+ * they automatically inherit these properties.
138
+ */
139
+ declare module "../scope.ts" {
140
+ interface ProviderCredentials {
141
+ /**
142
+ * AWS credentials configuration for this scope.
143
+ * All AWS resources created within this scope will inherit these credentials
144
+ * unless overridden at the resource level.
145
+ */
146
+ aws?: AwsClientProps;
147
+ }
148
+ }
149
+ //# sourceMappingURL=client-props.d.ts.map