alchemy 0.69.0 → 0.70.0

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 (314) hide show
  1. package/bin/alchemy.js +3810 -3889
  2. package/bin/commands/init.ts +41 -55
  3. package/bin/trpc.ts +4 -9
  4. package/lib/alchemy.d.ts +3 -3
  5. package/lib/alchemy.d.ts.map +1 -1
  6. package/lib/alchemy.js +2 -15
  7. package/lib/alchemy.js.map +1 -1
  8. package/lib/apply.js +24 -9
  9. package/lib/apply.js.map +1 -1
  10. package/lib/aws/utils.d.ts +2 -1
  11. package/lib/aws/utils.d.ts.map +1 -1
  12. package/lib/aws/utils.js.map +1 -1
  13. package/lib/clickhouse/api/client.gen.d.ts +13 -0
  14. package/lib/clickhouse/api/client.gen.d.ts.map +1 -0
  15. package/lib/clickhouse/api/client.gen.js +7 -0
  16. package/lib/clickhouse/api/client.gen.js.map +1 -0
  17. package/lib/clickhouse/api/sdk.gen.d.ts +322 -0
  18. package/lib/clickhouse/api/sdk.gen.d.ts.map +1 -0
  19. package/lib/clickhouse/api/sdk.gen.js +683 -0
  20. package/lib/clickhouse/api/sdk.gen.js.map +1 -0
  21. package/lib/clickhouse/api/types.gen.d.ts +5030 -0
  22. package/lib/clickhouse/api/types.gen.d.ts.map +1 -0
  23. package/lib/clickhouse/api/types.gen.js +2 -0
  24. package/lib/clickhouse/api/types.gen.js.map +1 -0
  25. package/lib/clickhouse/api-key.d.ts +29 -0
  26. package/lib/clickhouse/api-key.d.ts.map +1 -0
  27. package/lib/clickhouse/api-key.js +83 -0
  28. package/lib/clickhouse/api-key.js.map +1 -0
  29. package/lib/clickhouse/api.d.ts +36 -0
  30. package/lib/clickhouse/api.d.ts.map +1 -0
  31. package/lib/clickhouse/api.js +48 -0
  32. package/lib/clickhouse/api.js.map +1 -0
  33. package/lib/clickhouse/index.d.ts +4 -0
  34. package/lib/clickhouse/index.d.ts.map +1 -0
  35. package/lib/clickhouse/index.js +4 -0
  36. package/lib/clickhouse/index.js.map +1 -0
  37. package/lib/clickhouse/organization.d.ts +16 -0
  38. package/lib/clickhouse/organization.d.ts.map +1 -0
  39. package/lib/clickhouse/organization.js +21 -0
  40. package/lib/clickhouse/organization.js.map +1 -0
  41. package/lib/clickhouse/service.d.ts +275 -0
  42. package/lib/clickhouse/service.d.ts.map +1 -0
  43. package/lib/clickhouse/service.js +274 -0
  44. package/lib/clickhouse/service.js.map +1 -0
  45. package/lib/cloudflare/account-api-token.d.ts.map +1 -1
  46. package/lib/cloudflare/account-api-token.js +1 -1
  47. package/lib/cloudflare/account-api-token.js.map +1 -1
  48. package/lib/cloudflare/bucket-object.d.ts +5 -0
  49. package/lib/cloudflare/bucket-object.d.ts.map +1 -1
  50. package/lib/cloudflare/bucket-object.js +1 -1
  51. package/lib/cloudflare/bucket-object.js.map +1 -1
  52. package/lib/cloudflare/bucket.d.ts +6 -3
  53. package/lib/cloudflare/bucket.d.ts.map +1 -1
  54. package/lib/cloudflare/bucket.js +60 -8
  55. package/lib/cloudflare/bucket.js.map +1 -1
  56. package/lib/cloudflare/bun-spa/bun-spa.d.ts +15 -0
  57. package/lib/cloudflare/bun-spa/bun-spa.d.ts.map +1 -0
  58. package/lib/cloudflare/bun-spa/bun-spa.js +95 -0
  59. package/lib/cloudflare/bun-spa/bun-spa.js.map +1 -0
  60. package/lib/cloudflare/compatibility-date.gen.d.ts +1 -1
  61. package/lib/cloudflare/compatibility-date.gen.js +1 -1
  62. package/lib/cloudflare/container.d.ts +11 -1
  63. package/lib/cloudflare/container.d.ts.map +1 -1
  64. package/lib/cloudflare/container.js +1 -1
  65. package/lib/cloudflare/container.js.map +1 -1
  66. package/lib/cloudflare/index.d.ts +1 -0
  67. package/lib/cloudflare/index.d.ts.map +1 -1
  68. package/lib/cloudflare/index.js +1 -0
  69. package/lib/cloudflare/index.js.map +1 -1
  70. package/lib/cloudflare/miniflare/build-worker-options.d.ts.map +1 -1
  71. package/lib/cloudflare/miniflare/build-worker-options.js +3 -3
  72. package/lib/cloudflare/miniflare/build-worker-options.js.map +1 -1
  73. package/lib/cloudflare/miniflare/miniflare-controller.d.ts.map +1 -1
  74. package/lib/cloudflare/miniflare/miniflare-controller.js +2 -0
  75. package/lib/cloudflare/miniflare/miniflare-controller.js.map +1 -1
  76. package/lib/cloudflare/miniflare/miniflare-worker-proxy.d.ts +1 -1
  77. package/lib/cloudflare/miniflare/miniflare-worker-proxy.d.ts.map +1 -1
  78. package/lib/cloudflare/miniflare/miniflare-worker-proxy.js +33 -14
  79. package/lib/cloudflare/miniflare/miniflare-worker-proxy.js.map +1 -1
  80. package/lib/cloudflare/permission-groups.d.ts +2 -3
  81. package/lib/cloudflare/permission-groups.d.ts.map +1 -1
  82. package/lib/cloudflare/permission-groups.js +10 -15
  83. package/lib/cloudflare/permission-groups.js.map +1 -1
  84. package/lib/cloudflare/redwood/redwood.d.ts +1 -1
  85. package/lib/cloudflare/redwood/redwood.js +1 -1
  86. package/lib/cloudflare/tanstack-start/plugin.d.ts +2 -15
  87. package/lib/cloudflare/tanstack-start/plugin.d.ts.map +1 -1
  88. package/lib/cloudflare/tanstack-start/plugin.js +5 -25
  89. package/lib/cloudflare/tanstack-start/plugin.js.map +1 -1
  90. package/lib/cloudflare/tanstack-start/tanstack-start.d.ts.map +1 -1
  91. package/lib/cloudflare/tanstack-start/tanstack-start.js +15 -4
  92. package/lib/cloudflare/tanstack-start/tanstack-start.js.map +1 -1
  93. package/lib/cloudflare/util/filter-env-bindings.d.ts +62 -0
  94. package/lib/cloudflare/util/filter-env-bindings.d.ts.map +1 -0
  95. package/lib/cloudflare/util/filter-env-bindings.js +81 -0
  96. package/lib/cloudflare/util/filter-env-bindings.js.map +1 -0
  97. package/lib/cloudflare/website.d.ts +2 -2
  98. package/lib/cloudflare/website.d.ts.map +1 -1
  99. package/lib/cloudflare/website.js +7 -18
  100. package/lib/cloudflare/website.js.map +1 -1
  101. package/lib/cloudflare/worker-metadata.d.ts +5 -1
  102. package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
  103. package/lib/cloudflare/worker-metadata.js +3 -0
  104. package/lib/cloudflare/worker-metadata.js.map +1 -1
  105. package/lib/cloudflare/worker.d.ts +17 -1
  106. package/lib/cloudflare/worker.d.ts.map +1 -1
  107. package/lib/cloudflare/worker.js +1 -0
  108. package/lib/cloudflare/worker.js.map +1 -1
  109. package/lib/cloudflare/wrangler.json.d.ts +15 -1
  110. package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
  111. package/lib/cloudflare/wrangler.json.js +12 -4
  112. package/lib/cloudflare/wrangler.json.js.map +1 -1
  113. package/lib/coinbase/client.d.ts +54 -0
  114. package/lib/coinbase/client.d.ts.map +1 -0
  115. package/lib/coinbase/client.js +89 -0
  116. package/lib/coinbase/client.js.map +1 -0
  117. package/lib/coinbase/evm-account.d.ts +118 -0
  118. package/lib/coinbase/evm-account.d.ts.map +1 -0
  119. package/lib/coinbase/evm-account.js +198 -0
  120. package/lib/coinbase/evm-account.js.map +1 -0
  121. package/lib/coinbase/evm-smart-account.d.ts +122 -0
  122. package/lib/coinbase/evm-smart-account.d.ts.map +1 -0
  123. package/lib/coinbase/evm-smart-account.js +213 -0
  124. package/lib/coinbase/evm-smart-account.js.map +1 -0
  125. package/lib/coinbase/faucet.d.ts +11 -0
  126. package/lib/coinbase/faucet.d.ts.map +1 -0
  127. package/lib/coinbase/faucet.js +146 -0
  128. package/lib/coinbase/faucet.js.map +1 -0
  129. package/lib/coinbase/index.d.ts +4 -0
  130. package/lib/coinbase/index.d.ts.map +1 -0
  131. package/lib/coinbase/index.js +4 -0
  132. package/lib/coinbase/index.js.map +1 -0
  133. package/lib/coinbase/types.d.ts +28 -0
  134. package/lib/coinbase/types.d.ts.map +1 -0
  135. package/lib/coinbase/types.js +4 -0
  136. package/lib/{util/telemetry → coinbase}/types.js.map +1 -1
  137. package/lib/coinbase/utils.d.ts +13 -0
  138. package/lib/coinbase/utils.d.ts.map +1 -0
  139. package/lib/coinbase/utils.js +17 -0
  140. package/lib/coinbase/utils.js.map +1 -0
  141. package/lib/docker/api.d.ts +22 -1
  142. package/lib/docker/api.d.ts.map +1 -1
  143. package/lib/docker/api.js +64 -2
  144. package/lib/docker/api.js.map +1 -1
  145. package/lib/docker/container.d.ts +88 -0
  146. package/lib/docker/container.d.ts.map +1 -1
  147. package/lib/docker/container.js +36 -0
  148. package/lib/docker/container.js.map +1 -1
  149. package/lib/neon/api/types.gen.d.ts +7 -2
  150. package/lib/neon/api/types.gen.d.ts.map +1 -1
  151. package/lib/planetscale/api/types.gen.d.ts +20 -4
  152. package/lib/planetscale/api/types.gen.d.ts.map +1 -1
  153. package/lib/planetscale/api.d.ts.map +1 -1
  154. package/lib/planetscale/api.js +1 -0
  155. package/lib/planetscale/api.js.map +1 -1
  156. package/lib/planetscale/password.d.ts.map +1 -1
  157. package/lib/planetscale/password.js +1 -13
  158. package/lib/planetscale/password.js.map +1 -1
  159. package/lib/resource.d.ts.map +1 -1
  160. package/lib/resource.js +7 -3
  161. package/lib/resource.js.map +1 -1
  162. package/lib/scope.d.ts +4 -9
  163. package/lib/scope.d.ts.map +1 -1
  164. package/lib/scope.js +16 -37
  165. package/lib/scope.js.map +1 -1
  166. package/lib/state/instrumented-state-store.d.ts +1 -3
  167. package/lib/state/instrumented-state-store.d.ts.map +1 -1
  168. package/lib/state/instrumented-state-store.js +19 -21
  169. package/lib/state/instrumented-state-store.js.map +1 -1
  170. package/lib/test/bun.d.ts.map +1 -1
  171. package/lib/test/bun.js +1 -2
  172. package/lib/test/bun.js.map +1 -1
  173. package/lib/test/vitest.d.ts.map +1 -1
  174. package/lib/test/vitest.js +1 -2
  175. package/lib/test/vitest.js.map +1 -1
  176. package/lib/util/diff.d.ts +5 -0
  177. package/lib/util/diff.d.ts.map +1 -0
  178. package/lib/util/diff.js +14 -0
  179. package/lib/util/diff.js.map +1 -0
  180. package/lib/util/telemetry.d.ts +52 -0
  181. package/lib/util/telemetry.d.ts.map +1 -0
  182. package/lib/util/telemetry.js +191 -0
  183. package/lib/util/telemetry.js.map +1 -0
  184. package/package.json +19 -1
  185. package/src/alchemy.ts +5 -20
  186. package/src/apply.ts +29 -12
  187. package/src/aws/utils.ts +2 -1
  188. package/src/clickhouse/api/client.gen.ts +28 -0
  189. package/src/clickhouse/api/sdk.gen.ts +1286 -0
  190. package/src/clickhouse/api/types.gen.ts +5898 -0
  191. package/src/clickhouse/api-key.ts +136 -0
  192. package/src/clickhouse/api.ts +84 -0
  193. package/src/clickhouse/index.ts +3 -0
  194. package/src/clickhouse/organization.ts +31 -0
  195. package/src/clickhouse/service.ts +668 -0
  196. package/src/cloudflare/account-api-token.ts +1 -4
  197. package/src/cloudflare/bucket-object.ts +11 -1
  198. package/src/cloudflare/bucket.ts +72 -6
  199. package/src/cloudflare/bun-spa/bun-spa.ts +139 -0
  200. package/src/cloudflare/compatibility-date.gen.ts +1 -1
  201. package/src/cloudflare/container.ts +22 -3
  202. package/src/cloudflare/index.ts +1 -0
  203. package/src/cloudflare/miniflare/build-worker-options.ts +6 -4
  204. package/src/cloudflare/miniflare/miniflare-controller.ts +2 -0
  205. package/src/cloudflare/miniflare/miniflare-worker-proxy.ts +42 -15
  206. package/src/cloudflare/permission-groups.ts +21 -49
  207. package/src/cloudflare/redwood/redwood.ts +1 -1
  208. package/src/cloudflare/tanstack-start/plugin.ts +7 -28
  209. package/src/cloudflare/tanstack-start/tanstack-start.ts +15 -4
  210. package/src/cloudflare/util/filter-env-bindings.ts +96 -0
  211. package/src/cloudflare/website.ts +12 -24
  212. package/src/cloudflare/worker-metadata.ts +8 -1
  213. package/src/cloudflare/worker.ts +19 -1
  214. package/src/cloudflare/wrangler.json.ts +27 -9
  215. package/src/coinbase/client.ts +146 -0
  216. package/src/coinbase/evm-account.ts +317 -0
  217. package/src/coinbase/evm-smart-account.ts +339 -0
  218. package/src/coinbase/faucet.ts +173 -0
  219. package/src/coinbase/index.ts +3 -0
  220. package/src/coinbase/types.ts +33 -0
  221. package/src/coinbase/utils.ts +19 -0
  222. package/src/docker/api.ts +86 -2
  223. package/src/docker/container.ts +97 -0
  224. package/src/neon/api/types.gen.ts +13 -1
  225. package/src/planetscale/api/types.gen.ts +22 -2
  226. package/src/planetscale/api.ts +1 -0
  227. package/src/planetscale/password.ts +1 -14
  228. package/src/resource.ts +11 -4
  229. package/src/scope.ts +22 -45
  230. package/src/state/instrumented-state-store.ts +27 -26
  231. package/src/test/bun.ts +1 -2
  232. package/src/test/vitest.ts +1 -2
  233. package/src/util/diff.ts +14 -0
  234. package/src/util/telemetry.ts +297 -0
  235. package/templates/tanstack-start/.cta.json +13 -0
  236. package/templates/tanstack-start/README.md +267 -49
  237. package/templates/tanstack-start/_gitignore +9 -18
  238. package/templates/tanstack-start/alchemy.run.ts +2 -2
  239. package/templates/tanstack-start/package.json +24 -19
  240. package/templates/tanstack-start/public/favicon.ico +0 -0
  241. package/templates/tanstack-start/public/logo192.png +0 -0
  242. package/templates/tanstack-start/public/logo512.png +0 -0
  243. package/templates/tanstack-start/public/manifest.json +25 -0
  244. package/templates/tanstack-start/public/robots.txt +3 -0
  245. package/templates/tanstack-start/src/components/Header.tsx +21 -0
  246. package/templates/tanstack-start/src/logo.svg +12 -0
  247. package/templates/tanstack-start/src/router.tsx +7 -16
  248. package/templates/tanstack-start/src/routes/__root.tsx +13 -114
  249. package/templates/tanstack-start/src/routes/api.demo-names.ts +15 -0
  250. package/templates/tanstack-start/src/routes/demo.start.api-request.tsx +44 -0
  251. package/templates/tanstack-start/src/routes/demo.start.server-funcs.tsx +97 -0
  252. package/templates/tanstack-start/src/routes/index.tsx +31 -4
  253. package/templates/tanstack-start/src/styles.css +15 -0
  254. package/templates/tanstack-start/tsconfig.json +19 -22
  255. package/templates/tanstack-start/types/env.d.ts +2 -2
  256. package/templates/tanstack-start/vite.config.ts +16 -25
  257. package/workers/tunnel-proxy.js +1 -1
  258. package/lib/util/telemetry/client.d.ts +0 -31
  259. package/lib/util/telemetry/client.d.ts.map +0 -1
  260. package/lib/util/telemetry/client.js +0 -121
  261. package/lib/util/telemetry/client.js.map +0 -1
  262. package/lib/util/telemetry/constants.d.ts +0 -5
  263. package/lib/util/telemetry/constants.d.ts.map +0 -1
  264. package/lib/util/telemetry/constants.js +0 -8
  265. package/lib/util/telemetry/constants.js.map +0 -1
  266. package/lib/util/telemetry/context.d.ts +0 -15
  267. package/lib/util/telemetry/context.d.ts.map +0 -1
  268. package/lib/util/telemetry/context.js +0 -128
  269. package/lib/util/telemetry/context.js.map +0 -1
  270. package/lib/util/telemetry/index.d.ts +0 -3
  271. package/lib/util/telemetry/index.d.ts.map +0 -1
  272. package/lib/util/telemetry/index.js +0 -3
  273. package/lib/util/telemetry/index.js.map +0 -1
  274. package/lib/util/telemetry/types.d.ts +0 -68
  275. package/lib/util/telemetry/types.d.ts.map +0 -1
  276. package/lib/util/telemetry/types.js +0 -1
  277. package/src/util/telemetry/client.ts +0 -156
  278. package/src/util/telemetry/constants.ts +0 -13
  279. package/src/util/telemetry/context.ts +0 -154
  280. package/src/util/telemetry/index.ts +0 -2
  281. package/src/util/telemetry/types.ts +0 -105
  282. package/templates/tanstack-start/_prettierignore +0 -4
  283. package/templates/tanstack-start/public/android-chrome-192x192.png +0 -0
  284. package/templates/tanstack-start/public/android-chrome-512x512.png +0 -0
  285. package/templates/tanstack-start/public/apple-touch-icon.png +0 -0
  286. package/templates/tanstack-start/public/favicon-16x16.png +0 -0
  287. package/templates/tanstack-start/public/favicon-32x32.png +0 -0
  288. package/templates/tanstack-start/public/favicon.png +0 -0
  289. package/templates/tanstack-start/public/site.webmanifest +0 -19
  290. package/templates/tanstack-start/src/components/DefaultCatchBoundary.tsx +0 -53
  291. package/templates/tanstack-start/src/components/NotFound.tsx +0 -25
  292. package/templates/tanstack-start/src/components/PostError.tsx +0 -5
  293. package/templates/tanstack-start/src/components/UserError.tsx +0 -5
  294. package/templates/tanstack-start/src/routes/_pathlessLayout/_nested-layout/route-a.tsx +0 -10
  295. package/templates/tanstack-start/src/routes/_pathlessLayout/_nested-layout/route-b.tsx +0 -10
  296. package/templates/tanstack-start/src/routes/_pathlessLayout/_nested-layout.tsx +0 -34
  297. package/templates/tanstack-start/src/routes/_pathlessLayout.tsx +0 -16
  298. package/templates/tanstack-start/src/routes/api/users.$userId.ts +0 -28
  299. package/templates/tanstack-start/src/routes/api/users.ts +0 -59
  300. package/templates/tanstack-start/src/routes/customScript[.]js.ts +0 -10
  301. package/templates/tanstack-start/src/routes/deferred.tsx +0 -62
  302. package/templates/tanstack-start/src/routes/posts.$postId.tsx +0 -34
  303. package/templates/tanstack-start/src/routes/posts.index.tsx +0 -8
  304. package/templates/tanstack-start/src/routes/posts.tsx +0 -38
  305. package/templates/tanstack-start/src/routes/posts_.$postId.deep.tsx +0 -29
  306. package/templates/tanstack-start/src/routes/redirect.tsx +0 -9
  307. package/templates/tanstack-start/src/routes/users.$userId.tsx +0 -44
  308. package/templates/tanstack-start/src/routes/users.index.tsx +0 -18
  309. package/templates/tanstack-start/src/routes/users.tsx +0 -49
  310. package/templates/tanstack-start/src/styles/app.css +0 -12
  311. package/templates/tanstack-start/src/utils/loggingMiddleware.tsx +0 -41
  312. package/templates/tanstack-start/src/utils/posts.tsx +0 -40
  313. package/templates/tanstack-start/src/utils/seo.ts +0 -33
  314. package/templates/tanstack-start/src/utils/users.tsx +0 -5
@@ -3,9 +3,11 @@ import path from "node:path";
3
3
  import { Resource } from "../resource.js";
4
4
  import { Scope } from "../scope.js";
5
5
  import { isSecret } from "../secret.js";
6
+ import { unencryptSecrets } from "./util/filter-env-bindings.js";
6
7
  import { assertNever } from "../util/assert-never.js";
7
8
  import { isQueueEventSource } from "./event-source.js";
8
9
  import { isQueue } from "./queue.js";
10
+ import { isWorker } from "./worker.js";
9
11
  // we are deprecating the WranglerJson resource (it is now just a funciton)
10
12
  // but, a user may still have a resource that depends on it, so we register a no-op dummy resource so that it can be cleanly delted
11
13
  Resource("cloudflare::WranglerJson", async function () {
@@ -50,6 +52,7 @@ export async function WranglerJson(props) {
50
52
  : undefined,
51
53
  placement: worker.placement,
52
54
  limits: worker.limits,
55
+ logpush: worker.logpush,
53
56
  };
54
57
  // Process bindings if they exist
55
58
  if (worker.bindings) {
@@ -59,6 +62,14 @@ export async function WranglerJson(props) {
59
62
  if (worker.env) {
60
63
  spec.vars = { ...worker.env };
61
64
  }
65
+ if (worker.tailConsumers && worker.tailConsumers.length > 0) {
66
+ spec.tail_consumers = worker.tailConsumers.map((consumer) => {
67
+ if (isWorker(consumer)) {
68
+ return { service: consumer.name };
69
+ }
70
+ return { service: consumer.service };
71
+ });
72
+ }
62
73
  if (worker.crons && worker.crons.length > 0) {
63
74
  spec.triggers = { crons: worker.crons };
64
75
  }
@@ -75,10 +86,7 @@ export async function WranglerJson(props) {
75
86
  // but do not modify `finalSpec` so that way secrets aren't written to state unencrypted.
76
87
  const withSecretsUnwrapped = {
77
88
  ...finalSpec,
78
- vars: {
79
- ...finalSpec.vars,
80
- ...Object.fromEntries(Object.entries(finalSpec.vars ?? {}).map(([key, value]) => isSecret(value) ? [key, value.unencrypted] : [key, value])),
81
- },
89
+ vars: unencryptSecrets(finalSpec.vars ?? {}),
82
90
  };
83
91
  await writeJSON(filePath, withSecretsUnwrapped);
84
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wrangler.json.js","sourceRoot":"","sources":["../../src/cloudflare/wrangler.json.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wrangler.json.js","sourceRoot":"","sources":["../../src/cloudflare/wrangler.json.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import type { CdpClient } from "@coinbase/cdp-sdk";
2
+ import type { Secret } from "../secret.ts";
3
+ export interface CoinbaseClientOptions {
4
+ /**
5
+ * CDP API Key ID. If not provided, falls back to CDP_API_KEY_ID environment variable.
6
+ */
7
+ apiKeyId?: Secret<string> | string;
8
+ /**
9
+ * CDP API Key Secret. If not provided, falls back to CDP_API_KEY_SECRET environment variable.
10
+ * Must be wrapped in alchemy.secret() for security.
11
+ */
12
+ apiKeySecret?: Secret<string>;
13
+ /**
14
+ * CDP Wallet Secret. If not provided, falls back to CDP_WALLET_SECRET environment variable.
15
+ * Must be wrapped in alchemy.secret() for security.
16
+ */
17
+ walletSecret?: Secret<string>;
18
+ }
19
+ /**
20
+ * Create an authenticated CDP client
21
+ *
22
+ * The CDP SDK automatically looks for these environment variables:
23
+ * - CDP_API_KEY_ID
24
+ * - CDP_API_KEY_SECRET
25
+ * - CDP_WALLET_SECRET
26
+ *
27
+ * You can override them by passing values in the options.
28
+ *
29
+ * @param options Options for creating the client
30
+ * @returns An authenticated CDP client
31
+ */
32
+ export declare function createCdpClient(options?: CoinbaseClientOptions): Promise<CdpClient>;
33
+ /**
34
+ * Handle CDP SDK deletion errors gracefully
35
+ *
36
+ * @param error The error from CDP SDK
37
+ * @param resourceType The type of resource being deleted
38
+ * @param resourceId The ID or name of the resource
39
+ */
40
+ export declare function handleCdpDeleteError(_error: any, resourceType: string, resourceId?: string): void;
41
+ /**
42
+ * Check if an error indicates the resource already exists
43
+ *
44
+ * @param error The error from CDP SDK
45
+ * @returns True if the error indicates a conflict/already exists
46
+ */
47
+ export declare function isCdpConflictError(error: any): boolean;
48
+ /**
49
+ * Verifies CDP authentication and provides helpful error messages
50
+ *
51
+ * @param client CDP client
52
+ */
53
+ export declare function verifyCdpAuth(client: CdpClient): Promise<void>;
54
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/coinbase/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IACnC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CACnC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,SAAS,CAAC,CAgCpB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,GAAG,EACX,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI,CAKN;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAOtD;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAoCpE"}
@@ -0,0 +1,89 @@
1
+ import { logger } from "../util/logger.js";
2
+ import { importPeer } from "../util/peer.js";
3
+ /**
4
+ * Create an authenticated CDP client
5
+ *
6
+ * The CDP SDK automatically looks for these environment variables:
7
+ * - CDP_API_KEY_ID
8
+ * - CDP_API_KEY_SECRET
9
+ * - CDP_WALLET_SECRET
10
+ *
11
+ * You can override them by passing values in the options.
12
+ *
13
+ * @param options Options for creating the client
14
+ * @returns An authenticated CDP client
15
+ */
16
+ export async function createCdpClient(options = {}) {
17
+ const { CdpClient } = await importPeer(import("@coinbase/cdp-sdk"), "Coinbase resources");
18
+ // Build options object for CdpClient constructor
19
+ const clientOptions = {};
20
+ // Only set values if explicitly provided, otherwise let CDP SDK use its defaults
21
+ if (options.apiKeyId) {
22
+ clientOptions.apiKeyId =
23
+ typeof options.apiKeyId === "string"
24
+ ? options.apiKeyId
25
+ : options.apiKeyId.unencrypted;
26
+ }
27
+ if (options.apiKeySecret) {
28
+ clientOptions.apiKeySecret = options.apiKeySecret.unencrypted;
29
+ }
30
+ if (options.walletSecret) {
31
+ clientOptions.walletSecret = options.walletSecret.unencrypted;
32
+ }
33
+ // CDP SDK will automatically use environment variables if not provided:
34
+ // CDP_API_KEY_ID, CDP_API_KEY_SECRET, CDP_WALLET_SECRET
35
+ return new CdpClient(clientOptions);
36
+ }
37
+ /**
38
+ * Handle CDP SDK deletion errors gracefully
39
+ *
40
+ * @param error The error from CDP SDK
41
+ * @param resourceType The type of resource being deleted
42
+ * @param resourceId The ID or name of the resource
43
+ */
44
+ export function handleCdpDeleteError(_error, resourceType, resourceId) {
45
+ // CDP SDK doesn't support deleting accounts, so we just log
46
+ logger.log(`${resourceType} ${resourceId || "unknown"} cannot be deleted from CDP (CDP limitation)`);
47
+ }
48
+ /**
49
+ * Check if an error indicates the resource already exists
50
+ *
51
+ * @param error The error from CDP SDK
52
+ * @returns True if the error indicates a conflict/already exists
53
+ */
54
+ export function isCdpConflictError(error) {
55
+ return (error?.message?.toLowerCase()?.includes("already exists") ||
56
+ error?.message?.toLowerCase()?.includes("duplicate") ||
57
+ error?.code === "ALREADY_EXISTS" ||
58
+ error?.code === "CONFLICT");
59
+ }
60
+ /**
61
+ * Verifies CDP authentication and provides helpful error messages
62
+ *
63
+ * @param client CDP client
64
+ */
65
+ export async function verifyCdpAuth(client) {
66
+ try {
67
+ // Make a test request to check authentication
68
+ // List accounts is a good test as it requires valid credentials
69
+ await client.evm.listAccounts();
70
+ }
71
+ catch (error) {
72
+ if (error.errorType === "unauthorized") {
73
+ logger.error("\n⚠️ Coinbase CDP authentication failed. Please check your credentials:");
74
+ logger.error("1. Ensure CDP_API_KEY_ID is set with your API Key ID");
75
+ logger.error("2. Ensure CDP_API_KEY_SECRET is set with your API Key Secret");
76
+ logger.error("3. Ensure CDP_WALLET_SECRET is set with your Wallet Secret");
77
+ logger.error("\nTo create API credentials, visit: https://portal.cdp.coinbase.com/");
78
+ logger.error("Required permissions: Account management and transaction signing\n");
79
+ throw new Error("CDP authentication failed");
80
+ }
81
+ if (error.errorType === "unauthorized") {
82
+ logger.error("\n⚠️ Insufficient permissions. Your API key needs account management permissions.");
83
+ logger.error("Make sure your API key has the required scopes for creating and managing accounts\n");
84
+ throw new Error("Insufficient CDP permissions");
85
+ }
86
+ throw error;
87
+ }
88
+ }
89
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/coinbase/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAmB7C;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAAiC,EAAE;IAEnC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,CACpC,MAAM,CAAC,mBAAmB,CAAC,EAC3B,oBAAoB,CACrB,CAAC;IAEF,iDAAiD;IACjD,MAAM,aAAa,GAIf,EAAE,CAAC;IAEP,iFAAiF;IACjF,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,aAAa,CAAC,QAAQ;YACpB,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;gBAClC,CAAC,CAAC,OAAO,CAAC,QAAQ;gBAClB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IACrC,CAAC;IAED,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,aAAa,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC;IAChE,CAAC;IAED,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,aAAa,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC;IAChE,CAAC;IAED,wEAAwE;IACxE,wDAAwD;IACxD,OAAO,IAAI,SAAS,CAAC,aAAa,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAW,EACX,YAAoB,EACpB,UAAmB;IAEnB,4DAA4D;IAC5D,MAAM,CAAC,GAAG,CACR,GAAG,YAAY,IAAI,UAAU,IAAI,SAAS,8CAA8C,CACzF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAU;IAC3C,OAAO,CACL,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,gBAAgB,CAAC;QACzD,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,WAAW,CAAC;QACpD,KAAK,EAAE,IAAI,KAAK,gBAAgB;QAChC,KAAK,EAAE,IAAI,KAAK,UAAU,CAC3B,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAiB;IACnD,IAAI,CAAC;QACH,8CAA8C;QAC9C,gEAAgE;QAChE,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAClC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,SAAS,KAAK,cAAc,EAAE,CAAC;YACvC,MAAM,CAAC,KAAK,CACV,yEAAyE,CAC1E,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;YACrE,MAAM,CAAC,KAAK,CACV,8DAA8D,CAC/D,CAAC;YACF,MAAM,CAAC,KAAK,CACV,4DAA4D,CAC7D,CAAC;YACF,MAAM,CAAC,KAAK,CACV,sEAAsE,CACvE,CAAC;YACF,MAAM,CAAC,KAAK,CACV,oEAAoE,CACrE,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,KAAK,CAAC,SAAS,KAAK,cAAc,EAAE,CAAC;YACvC,MAAM,CAAC,KAAK,CACV,mFAAmF,CACpF,CAAC;YACF,MAAM,CAAC,KAAK,CACV,qFAAqF,CACtF,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,118 @@
1
+ import type { Context } from "../context.ts";
2
+ import type { Secret } from "../index.ts";
3
+ import { Resource } from "../resource.ts";
4
+ import { type CoinbaseClientOptions } from "./client.ts";
5
+ import type { Address, FaucetConfig, PrivateKey } from "./types.ts";
6
+ export type { FaucetConfig, FaucetNetwork, FaucetToken } from "./types.ts";
7
+ export interface EvmAccountProps extends CoinbaseClientOptions {
8
+ /**
9
+ * Name for the account.
10
+ * Used for identification in CDP.
11
+ * Must contain only letters, numbers, and hyphens.
12
+ */
13
+ name: string;
14
+ /**
15
+ * Optional private key to import an existing account.
16
+ * Must be a hex string (starting with 0x) encrypted using alchemy.secret().
17
+ * If not provided, a new account will be created or existing one will be used.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * privateKey: alchemy.secret(process.env.PRIVATE_KEY)
22
+ * ```
23
+ */
24
+ privateKey?: Secret<PrivateKey>;
25
+ /**
26
+ * Whether to adopt an existing account with the same name if it already exists.
27
+ * Without adoption, creation will fail if an account with the same name exists.
28
+ * With adoption, the existing account will be used.
29
+ * @default false
30
+ */
31
+ adopt?: boolean;
32
+ /**
33
+ * Faucet configuration for development funding.
34
+ * Declares which tokens this account should have.
35
+ * Used by external funding scripts - not processed by the resource.
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * faucet: {
40
+ * "base-sepolia": ["eth", "usdc"],
41
+ * "ethereum-sepolia": ["eth"]
42
+ * }
43
+ * ```
44
+ */
45
+ faucet?: FaucetConfig;
46
+ }
47
+ export interface EvmAccount extends Resource<"coinbase::evm-account"> {
48
+ /**
49
+ * The account name in CDP
50
+ */
51
+ name: string;
52
+ /**
53
+ * The EVM address (same across all EVM networks)
54
+ */
55
+ address: Address;
56
+ /**
57
+ * Faucet configuration (passed through from props)
58
+ */
59
+ faucet?: FaucetConfig;
60
+ }
61
+ /**
62
+ * Manages EVM EOA (Externally Owned Accounts) on Coinbase Developer Platform.
63
+ *
64
+ * @example
65
+ * ## Create a new EVM account
66
+ *
67
+ * ```ts
68
+ * const account = await EvmAccount("my-account", {
69
+ * name: "my-account"
70
+ * });
71
+ *
72
+ * console.log("Account address:", account.address);
73
+ * ```
74
+ *
75
+ * @example
76
+ * ## Create account with funding metadata
77
+ *
78
+ * Declare what tokens this account needs for development
79
+ *
80
+ * ```ts
81
+ * const account = await EvmAccount("test-account", {
82
+ * name: "test-account",
83
+ * faucet: {
84
+ * "base-sepolia": ["eth", "usdc"],
85
+ * "ethereum-sepolia": ["eth"]
86
+ * }
87
+ * });
88
+ *
89
+ * // Account automatically requests tokens on creation
90
+ * // The faucet script can be used for bulk funding operations
91
+ * ```
92
+ *
93
+ * @example
94
+ * ## Import an existing account
95
+ *
96
+ * Import an existing EVM account using a private key
97
+ *
98
+ * ```ts
99
+ * const account = await EvmAccount("imported-account", {
100
+ * name: "imported-account",
101
+ * privateKey: alchemy.secret(process.env.COINBASE_PRIVATE_KEY)
102
+ * });
103
+ * ```
104
+ *
105
+ * @example
106
+ * ## Adopt an existing account
107
+ *
108
+ * Use an existing account with the same name if it exists
109
+ *
110
+ * ```ts
111
+ * const account = await EvmAccount("my-account", {
112
+ * name: "existing-account",
113
+ * adopt: true // Uses existing account if it exists
114
+ * });
115
+ * ```
116
+ */
117
+ export declare const EvmAccount: (((this: any, id: string, props?: {}) => never) & (new (_: never) => never)) | ((this: Context<EvmAccount>, _id: string, props: EvmAccountProps) => Promise<EvmAccount>);
118
+ //# sourceMappingURL=evm-account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evm-account.d.ts","sourceRoot":"","sources":["../../src/coinbase/evm-account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAmB,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EAGZ,UAAU,EACX,MAAM,YAAY,CAAC;AAIpB,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE3E,MAAM,WAAW,eAAgB,SAAQ,qBAAqB;IAC5D;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAChC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,UAAW,SAAQ,QAAQ,CAAC,uBAAuB,CAAC;IACnE;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,eAAO,MAAM,UAAU,yFAGb,OAAO,CAAC,UAAU,CAAC,OACpB,MAAM,SACJ,eAAe,KACrB,OAAO,CAAC,UAAU,CAAC,CAsLvB,CAAC"}
@@ -0,0 +1,198 @@
1
+ import { Resource } from "../resource.js";
2
+ import { createCdpClient } from "./client.js";
3
+ import { validateAccountName } from "./utils.js";
4
+ /**
5
+ * Manages EVM EOA (Externally Owned Accounts) on Coinbase Developer Platform.
6
+ *
7
+ * @example
8
+ * ## Create a new EVM account
9
+ *
10
+ * ```ts
11
+ * const account = await EvmAccount("my-account", {
12
+ * name: "my-account"
13
+ * });
14
+ *
15
+ * console.log("Account address:", account.address);
16
+ * ```
17
+ *
18
+ * @example
19
+ * ## Create account with funding metadata
20
+ *
21
+ * Declare what tokens this account needs for development
22
+ *
23
+ * ```ts
24
+ * const account = await EvmAccount("test-account", {
25
+ * name: "test-account",
26
+ * faucet: {
27
+ * "base-sepolia": ["eth", "usdc"],
28
+ * "ethereum-sepolia": ["eth"]
29
+ * }
30
+ * });
31
+ *
32
+ * // Account automatically requests tokens on creation
33
+ * // The faucet script can be used for bulk funding operations
34
+ * ```
35
+ *
36
+ * @example
37
+ * ## Import an existing account
38
+ *
39
+ * Import an existing EVM account using a private key
40
+ *
41
+ * ```ts
42
+ * const account = await EvmAccount("imported-account", {
43
+ * name: "imported-account",
44
+ * privateKey: alchemy.secret(process.env.COINBASE_PRIVATE_KEY)
45
+ * });
46
+ * ```
47
+ *
48
+ * @example
49
+ * ## Adopt an existing account
50
+ *
51
+ * Use an existing account with the same name if it exists
52
+ *
53
+ * ```ts
54
+ * const account = await EvmAccount("my-account", {
55
+ * name: "existing-account",
56
+ * adopt: true // Uses existing account if it exists
57
+ * });
58
+ * ```
59
+ */
60
+ export const EvmAccount = Resource("coinbase::evm-account", async function (_id, props) {
61
+ // Validate account name format
62
+ validateAccountName(props.name);
63
+ // Initialize CDP client with credentials from props or environment
64
+ const cdp = await createCdpClient({
65
+ apiKeyId: props.apiKeyId,
66
+ apiKeySecret: props.apiKeySecret,
67
+ walletSecret: props.walletSecret,
68
+ });
69
+ // Handle update phase
70
+ if (this.phase === "update" && this.output) {
71
+ // Only name can be updated
72
+ if (props.name !== this.output.name) {
73
+ // CDP SDK supports updating account names via updateAccount
74
+ await cdp.evm.updateAccount({
75
+ address: this.output.address,
76
+ update: {
77
+ name: props.name,
78
+ },
79
+ });
80
+ return {
81
+ ...this.output,
82
+ name: props.name, // Use the requested name
83
+ faucet: props.faucet,
84
+ };
85
+ }
86
+ // Update faucet configuration if changed
87
+ if (JSON.stringify(props.faucet) !== JSON.stringify(this.output.faucet)) {
88
+ // Only fund NEW combinations that weren't in the previous config
89
+ try {
90
+ // Get all old combinations
91
+ const oldCombinations = new Set(Object.entries(this.output.faucet ?? {}).flatMap(([network, tokens]) => tokens.map((token) => `${network}:${token}`)));
92
+ // Get all new combinations
93
+ const newCombinations = Object.entries(props.faucet ?? {}).flatMap(([network, tokens]) => tokens.map((token) => ({
94
+ network: network,
95
+ token: token,
96
+ key: `${network}:${token}`,
97
+ })));
98
+ // Filter to only combinations that are actually new
99
+ const toFund = newCombinations.filter(({ key }) => !oldCombinations.has(key));
100
+ if (toFund.length > 0) {
101
+ await Promise.all(toFund.map(({ network, token }) => cdp.evm
102
+ .requestFaucet({
103
+ address: this.output.address,
104
+ network,
105
+ token,
106
+ })
107
+ .catch((err) => {
108
+ console.warn(`⚠️ Failed to request ${token} on ${network} for ${this.output.address}: ${err.message}`);
109
+ return null;
110
+ })));
111
+ console.log(`💧 Requested ${toFund.length} new faucet fund${toFund.length === 1 ? "" : "s"} for ${this.output.address}`);
112
+ }
113
+ }
114
+ catch (error) {
115
+ console.warn(`⚠️ Failed to request additional faucet funds for ${this.output.address}: ${error.message}`);
116
+ // Continue - don't break the update
117
+ }
118
+ return {
119
+ ...this.output,
120
+ faucet: props.faucet,
121
+ };
122
+ }
123
+ return this.output;
124
+ }
125
+ // Handle delete phase
126
+ if (this.phase === "delete") {
127
+ // CDP SDK doesn't support deleting accounts
128
+ // Accounts remain in CDP but are no longer tracked by Alchemy
129
+ console.log(`🗑️ Untracking EVM Account: ${this.output.address}`);
130
+ return this.destroy();
131
+ }
132
+ let account;
133
+ // Handle account creation/retrieval
134
+ if (props.privateKey) {
135
+ // Import account with private key
136
+ // This is idempotent in CDP
137
+ account = await cdp.evm.importAccount({
138
+ privateKey: props.privateKey.unencrypted,
139
+ name: props.name,
140
+ });
141
+ }
142
+ else {
143
+ // Check for adoption or use getOrCreate pattern
144
+ const adopt = props.adopt ?? this.scope.adopt;
145
+ if (adopt) {
146
+ // With adoption, use getOrCreate which returns existing if it exists
147
+ account = await cdp.evm.getOrCreateAccount({
148
+ name: props.name,
149
+ });
150
+ }
151
+ else {
152
+ // Without adoption, we can attempt to create it.
153
+ // It will throw if already exist
154
+ try {
155
+ account = await cdp.evm.createAccount({ name: props.name });
156
+ }
157
+ catch (error) {
158
+ // Provide helpful error message if account already exists
159
+ if (error.errorType === "already_exists") {
160
+ throw new Error(`Account with name '${props.name}' already exists. Use adopt: true to use the existing account.`);
161
+ }
162
+ // Rethrow other errors unchanged
163
+ throw error;
164
+ }
165
+ }
166
+ }
167
+ // Fund the account if faucet configuration is provided
168
+ if (props.faucet) {
169
+ try {
170
+ const combinations = Object.entries(props.faucet).flatMap(([network, tokens]) => tokens.map((token) => ({
171
+ network: network,
172
+ token: token,
173
+ })));
174
+ await Promise.all(combinations.map(({ network, token }) => cdp.evm
175
+ .requestFaucet({
176
+ address: account.address,
177
+ network,
178
+ token,
179
+ })
180
+ .catch((err) => {
181
+ console.warn(`⚠️ Failed to request ${token} on ${network} for ${account.address}: ${err.message}`);
182
+ return null;
183
+ })));
184
+ console.log(`💧 Requested faucet funds for ${account.address}`);
185
+ }
186
+ catch (error) {
187
+ console.warn(`⚠️ Failed to request faucet funds for ${account.address}: ${error.message}`);
188
+ // Continue - don't break account creation
189
+ }
190
+ }
191
+ // Return account details
192
+ return {
193
+ name: props.name, // Always use the name from props for consistency
194
+ address: account.address,
195
+ faucet: props.faucet,
196
+ };
197
+ });
198
+ //# sourceMappingURL=evm-account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evm-account.js","sourceRoot":"","sources":["../../src/coinbase/evm-account.ts"],"names":[],"mappings":"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"}