alchemy 0.12.20 → 0.13.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 (269) hide show
  1. package/lib/ai/client.d.ts.map +1 -1
  2. package/lib/ai/client.js +3 -5
  3. package/lib/ai/client.js.map +1 -1
  4. package/lib/alchemy.d.ts +2 -1
  5. package/lib/alchemy.d.ts.map +1 -1
  6. package/lib/alchemy.js +87 -92
  7. package/lib/alchemy.js.map +1 -1
  8. package/lib/apply.d.ts.map +1 -1
  9. package/lib/apply.js +6 -0
  10. package/lib/apply.js.map +1 -1
  11. package/lib/aws/bucket.d.ts.map +1 -1
  12. package/lib/aws/bucket.js +55 -57
  13. package/lib/aws/bucket.js.map +1 -1
  14. package/lib/aws/function.d.ts.map +1 -1
  15. package/lib/aws/function.js +250 -252
  16. package/lib/aws/function.js.map +1 -1
  17. package/lib/aws/policy-attachment.d.ts.map +1 -1
  18. package/lib/aws/policy-attachment.js +4 -6
  19. package/lib/aws/policy-attachment.js.map +1 -1
  20. package/lib/aws/policy.d.ts.map +1 -1
  21. package/lib/aws/policy.js +63 -65
  22. package/lib/aws/policy.js.map +1 -1
  23. package/lib/aws/queue.js +88 -90
  24. package/lib/aws/queue.js.map +1 -1
  25. package/lib/aws/table.d.ts.map +1 -1
  26. package/lib/aws/table.js +95 -99
  27. package/lib/aws/table.js.map +1 -1
  28. package/lib/cloudflare/account-api-token.d.ts +1 -1
  29. package/lib/cloudflare/account-api-token.d.ts.map +1 -1
  30. package/lib/cloudflare/account-api-token.js +0 -1
  31. package/lib/cloudflare/account-api-token.js.map +1 -1
  32. package/lib/cloudflare/ai-gateway.js.map +1 -1
  33. package/lib/cloudflare/ai.d.ts +1 -1
  34. package/lib/cloudflare/ai.d.ts.map +1 -1
  35. package/lib/cloudflare/ai.js.map +1 -1
  36. package/lib/cloudflare/api.js +1 -5
  37. package/lib/cloudflare/api.js.map +1 -1
  38. package/lib/cloudflare/bucket.d.ts +2 -2
  39. package/lib/cloudflare/bucket.d.ts.map +1 -1
  40. package/lib/cloudflare/bucket.js +22 -24
  41. package/lib/cloudflare/bucket.js.map +1 -1
  42. package/lib/cloudflare/bundle/hybrid-nodejs-compat.d.ts +0 -3
  43. package/lib/cloudflare/bundle/hybrid-nodejs-compat.d.ts.map +1 -1
  44. package/lib/cloudflare/bundle/hybrid-nodejs-compat.js +4 -7
  45. package/lib/cloudflare/bundle/hybrid-nodejs-compat.js.map +1 -1
  46. package/lib/cloudflare/custom-domain.d.ts.map +1 -1
  47. package/lib/cloudflare/custom-domain.js +3 -5
  48. package/lib/cloudflare/custom-domain.js.map +1 -1
  49. package/lib/cloudflare/d1-database.d.ts +1 -1
  50. package/lib/cloudflare/d1-database.d.ts.map +1 -1
  51. package/lib/cloudflare/d1-database.js +70 -72
  52. package/lib/cloudflare/d1-database.js.map +1 -1
  53. package/lib/cloudflare/d1-migrations.d.ts +1 -1
  54. package/lib/cloudflare/d1-migrations.d.ts.map +1 -1
  55. package/lib/cloudflare/d1-migrations.js +2 -3
  56. package/lib/cloudflare/d1-migrations.js.map +1 -1
  57. package/lib/cloudflare/dns-records.d.ts.map +1 -1
  58. package/lib/cloudflare/dns-records.js +2 -4
  59. package/lib/cloudflare/dns-records.js.map +1 -1
  60. package/lib/cloudflare/kv-namespace.d.ts +1 -1
  61. package/lib/cloudflare/kv-namespace.d.ts.map +1 -1
  62. package/lib/cloudflare/kv-namespace.js +24 -27
  63. package/lib/cloudflare/kv-namespace.js.map +1 -1
  64. package/lib/cloudflare/pipeline.d.ts +1 -1
  65. package/lib/cloudflare/pipeline.d.ts.map +1 -1
  66. package/lib/cloudflare/pipeline.js +32 -34
  67. package/lib/cloudflare/pipeline.js.map +1 -1
  68. package/lib/cloudflare/queue-consumer.d.ts +1 -1
  69. package/lib/cloudflare/queue-consumer.d.ts.map +1 -1
  70. package/lib/cloudflare/queue-consumer.js +31 -33
  71. package/lib/cloudflare/queue-consumer.js.map +1 -1
  72. package/lib/cloudflare/queue.d.ts +1 -1
  73. package/lib/cloudflare/queue.d.ts.map +1 -1
  74. package/lib/cloudflare/queue.js +36 -38
  75. package/lib/cloudflare/queue.js.map +1 -1
  76. package/lib/cloudflare/r2-rest-state-store.js +4 -8
  77. package/lib/cloudflare/r2-rest-state-store.js.map +1 -1
  78. package/lib/cloudflare/types.d.ts.map +1 -1
  79. package/lib/cloudflare/types.js +1 -3
  80. package/lib/cloudflare/types.js.map +1 -1
  81. package/lib/cloudflare/vectorize-index.d.ts.map +1 -1
  82. package/lib/cloudflare/vectorize-index.js +37 -39
  83. package/lib/cloudflare/vectorize-index.js.map +1 -1
  84. package/lib/cloudflare/vectorize-metadata-index.d.ts +1 -1
  85. package/lib/cloudflare/vectorize-metadata-index.d.ts.map +1 -1
  86. package/lib/cloudflare/vectorize-metadata-index.js +10 -13
  87. package/lib/cloudflare/vectorize-metadata-index.js.map +1 -1
  88. package/lib/cloudflare/worker.js +6 -12
  89. package/lib/cloudflare/worker.js.map +1 -1
  90. package/lib/cloudflare/workflow.d.ts +1 -1
  91. package/lib/cloudflare/workflow.d.ts.map +1 -1
  92. package/lib/cloudflare/workflow.js.map +1 -1
  93. package/lib/cloudflare/zone.d.ts.map +1 -1
  94. package/lib/cloudflare/zone.js +48 -50
  95. package/lib/cloudflare/zone.js.map +1 -1
  96. package/lib/dns/godaddy.js +1 -1
  97. package/lib/dns/import-dns.js +1 -1
  98. package/lib/dns/import-dns.js.map +1 -1
  99. package/lib/env.js +7 -9
  100. package/lib/env.js.map +1 -1
  101. package/lib/esbuild/bundle.js +8 -10
  102. package/lib/esbuild/bundle.js.map +1 -1
  103. package/lib/fs/copy-file.d.ts.map +1 -1
  104. package/lib/fs/copy-file.js +27 -29
  105. package/lib/fs/copy-file.js.map +1 -1
  106. package/lib/fs/file.d.ts +1 -1
  107. package/lib/fs/file.d.ts.map +1 -1
  108. package/lib/fs/file.js +1 -1
  109. package/lib/fs/file.js.map +1 -1
  110. package/lib/fs/folder.d.ts.map +1 -1
  111. package/lib/fs/folder.js +1 -3
  112. package/lib/fs/folder.js.map +1 -1
  113. package/lib/github/client.d.ts.map +1 -1
  114. package/lib/github/client.js +3 -5
  115. package/lib/github/client.js.map +1 -1
  116. package/lib/github/repository-environment.d.ts.map +1 -1
  117. package/lib/github/repository-environment.js +173 -176
  118. package/lib/github/repository-environment.js.map +1 -1
  119. package/lib/github/secret.d.ts.map +1 -1
  120. package/lib/github/secret.js +97 -99
  121. package/lib/github/secret.js.map +1 -1
  122. package/lib/internal/docs/providers.d.ts.map +1 -1
  123. package/lib/internal/docs/providers.js +5 -7
  124. package/lib/internal/docs/providers.js.map +1 -1
  125. package/lib/neon/api.js +1 -2
  126. package/lib/neon/api.js.map +1 -1
  127. package/lib/neon/project.js +2 -2
  128. package/lib/neon/project.js.map +1 -1
  129. package/lib/os/exec.d.ts +5 -0
  130. package/lib/os/exec.d.ts.map +1 -1
  131. package/lib/os/exec.js +88 -56
  132. package/lib/os/exec.js.map +1 -1
  133. package/lib/scope.d.ts +3 -0
  134. package/lib/scope.d.ts.map +1 -1
  135. package/lib/scope.js +10 -3
  136. package/lib/scope.js.map +1 -1
  137. package/lib/secret.d.ts.map +1 -1
  138. package/lib/secret.js +1 -3
  139. package/lib/secret.js.map +1 -1
  140. package/lib/serde.d.ts.map +1 -1
  141. package/lib/serde.js +13 -15
  142. package/lib/serde.js.map +1 -1
  143. package/lib/stripe/price.d.ts.map +1 -1
  144. package/lib/stripe/price.js +69 -73
  145. package/lib/stripe/price.js.map +1 -1
  146. package/lib/stripe/product.d.ts.map +1 -1
  147. package/lib/stripe/product.js +50 -52
  148. package/lib/stripe/product.js.map +1 -1
  149. package/lib/stripe/webhook.d.ts.map +1 -1
  150. package/lib/stripe/webhook.js +51 -53
  151. package/lib/stripe/webhook.js.map +1 -1
  152. package/lib/test/bun.d.ts +1 -1
  153. package/lib/test/bun.d.ts.map +1 -1
  154. package/lib/test/bun.js +1 -0
  155. package/lib/test/bun.js.map +1 -1
  156. package/lib/test/prune.d.ts.map +1 -1
  157. package/lib/test/prune.js.map +1 -1
  158. package/lib/util/dedent.js +4 -4
  159. package/lib/util/dedent.js.map +1 -1
  160. package/lib/web/astro.js +1 -1
  161. package/lib/web/shadcn.js +4 -4
  162. package/lib/web/shadcn.js.map +1 -1
  163. package/lib/web/tailwind.d.ts.map +1 -1
  164. package/lib/web/tailwind.js +0 -1
  165. package/lib/web/tailwind.js.map +1 -1
  166. package/lib/web/vite.js +3 -3
  167. package/lib/web/vitepress/home-page.d.ts.map +1 -1
  168. package/lib/web/vitepress/home-page.js +6 -8
  169. package/lib/web/vitepress/home-page.js.map +1 -1
  170. package/lib/web/vitepress/process-front-matter-files.js +1 -1
  171. package/lib/web/vitepress/process-front-matter-files.js.map +1 -1
  172. package/lib/web/vitepress/vitepress.js +2 -2
  173. package/lib/web/vitepress/vitepress.js.map +1 -1
  174. package/package.json +1 -1
  175. package/src/ai/astro-file.ts +4 -4
  176. package/src/ai/client.ts +4 -5
  177. package/src/ai/css-file.ts +4 -4
  178. package/src/ai/document.ts +3 -3
  179. package/src/ai/html-file.ts +4 -4
  180. package/src/ai/json-file.ts +1 -1
  181. package/src/ai/typescript-file.ts +4 -4
  182. package/src/ai/vue-file.ts +4 -4
  183. package/src/ai/yaml-file.ts +1 -1
  184. package/src/alchemy.ts +111 -104
  185. package/src/apply.ts +13 -5
  186. package/src/aws/bucket.ts +72 -75
  187. package/src/aws/function.ts +296 -297
  188. package/src/aws/oidc/github-oidc-provider.ts +1 -1
  189. package/src/aws/oidc/oidc-provider.ts +15 -15
  190. package/src/aws/policy-attachment.ts +10 -11
  191. package/src/aws/policy.ts +91 -94
  192. package/src/aws/queue.ts +111 -111
  193. package/src/aws/role.ts +24 -24
  194. package/src/aws/ses.ts +17 -17
  195. package/src/aws/table.ts +114 -115
  196. package/src/cloudflare/account-api-token.ts +11 -11
  197. package/src/cloudflare/account-id.ts +1 -1
  198. package/src/cloudflare/ai-gateway.ts +4 -4
  199. package/src/cloudflare/ai.ts +1 -1
  200. package/src/cloudflare/api-error.ts +1 -1
  201. package/src/cloudflare/api.ts +7 -11
  202. package/src/cloudflare/assets.ts +4 -4
  203. package/src/cloudflare/auth.ts +13 -13
  204. package/src/cloudflare/bucket.ts +62 -63
  205. package/src/cloudflare/bundle/hybrid-nodejs-compat.ts +14 -17
  206. package/src/cloudflare/custom-domain.ts +27 -28
  207. package/src/cloudflare/d1-database.ts +101 -102
  208. package/src/cloudflare/d1-migrations.ts +10 -10
  209. package/src/cloudflare/dns-records.ts +23 -24
  210. package/src/cloudflare/durable-object-namespace.ts +1 -1
  211. package/src/cloudflare/event-source.ts +1 -1
  212. package/src/cloudflare/hyperdrive.ts +3 -3
  213. package/src/cloudflare/kv-namespace.ts +36 -37
  214. package/src/cloudflare/nuxt.ts +1 -1
  215. package/src/cloudflare/permission-groups.ts +7 -7
  216. package/src/cloudflare/pipeline.ts +55 -56
  217. package/src/cloudflare/queue-consumer.ts +53 -54
  218. package/src/cloudflare/queue.ts +56 -57
  219. package/src/cloudflare/r2-rest-state-store.ts +11 -11
  220. package/src/cloudflare/redwood.ts +1 -1
  221. package/src/cloudflare/tanstack-start.ts +1 -1
  222. package/src/cloudflare/types.ts +1 -2
  223. package/src/cloudflare/vectorize-index.ts +60 -61
  224. package/src/cloudflare/vectorize-metadata-index.ts +25 -25
  225. package/src/cloudflare/vite.ts +1 -1
  226. package/src/cloudflare/website.ts +3 -3
  227. package/src/cloudflare/worker.ts +61 -61
  228. package/src/cloudflare/workflow.ts +4 -4
  229. package/src/cloudflare/wrangler.json.ts +4 -4
  230. package/src/cloudflare/zone.ts +69 -70
  231. package/src/destroy.ts +4 -4
  232. package/src/dns/godaddy.ts +1 -1
  233. package/src/dns/import-dns.ts +5 -5
  234. package/src/encrypt.ts +6 -6
  235. package/src/env.ts +10 -10
  236. package/src/esbuild/bundle.ts +14 -14
  237. package/src/fs/copy-file.ts +35 -36
  238. package/src/fs/file-system-state-store.ts +4 -4
  239. package/src/fs/file.ts +9 -8
  240. package/src/fs/folder.ts +6 -7
  241. package/src/github/client.ts +15 -14
  242. package/src/github/repository-environment.ts +206 -210
  243. package/src/github/secret.ts +111 -116
  244. package/src/internal/docs/providers.ts +16 -17
  245. package/src/neon/api-error.ts +1 -1
  246. package/src/neon/api.ts +6 -6
  247. package/src/neon/project.ts +18 -17
  248. package/src/os/exec.ts +107 -66
  249. package/src/resource.ts +3 -3
  250. package/src/scope.ts +14 -4
  251. package/src/secret.ts +2 -3
  252. package/src/serde.ts +30 -22
  253. package/src/stripe/price.ts +74 -77
  254. package/src/stripe/product.ts +55 -56
  255. package/src/stripe/webhook.ts +56 -57
  256. package/src/test/bun.ts +7 -6
  257. package/src/test/prune.ts +4 -4
  258. package/src/util/dedent.ts +4 -4
  259. package/src/web/astro.ts +10 -10
  260. package/src/web/shadcn-component.ts +4 -4
  261. package/src/web/shadcn.ts +10 -10
  262. package/src/web/tailwind.ts +2 -3
  263. package/src/web/vite.ts +11 -11
  264. package/src/web/vitepress/config.ts +2 -2
  265. package/src/web/vitepress/custom-theme.ts +7 -7
  266. package/src/web/vitepress/dependencies.ts +4 -4
  267. package/src/web/vitepress/home-page.ts +8 -9
  268. package/src/web/vitepress/process-front-matter-files.ts +5 -5
  269. package/src/web/vitepress/vitepress.ts +7 -7
@@ -3,7 +3,7 @@ import { Resource } from "../resource.js";
3
3
  import type { Secret } from "../secret.js";
4
4
  import { CloudflareApiError, handleApiError } from "./api-error.js";
5
5
  import {
6
- CloudflareApi,
6
+ type CloudflareApi,
7
7
  createCloudflareApi,
8
8
  type CloudflareApiOptions,
9
9
  } from "./api.js";
@@ -332,50 +332,49 @@ export const Pipeline = Resource("cloudflare::Pipeline", async function <
332
332
 
333
333
  // Return void (a deleted pipeline has no content)
334
334
  return this.destroy();
335
- } else {
336
- let pipelineData: CloudflarePipelineResponse;
335
+ }
336
+ let pipelineData: CloudflarePipelineResponse;
337
337
 
338
- if (this.phase === "create") {
339
- pipelineData = await createPipeline(api, pipelineName, props);
340
- } else {
341
- // Update operation
342
- if (this.output?.id) {
343
- // Check if name is being changed, which is not allowed
344
- if (props.name !== this.output.name) {
345
- throw new Error(
346
- "Cannot update Pipeline name after creation. Pipeline name is immutable."
347
- );
348
- }
349
-
350
- // Update the pipeline with new settings
351
- pipelineData = await updatePipeline(api, pipelineName, props);
352
- } else {
353
- // If no ID exists, fall back to creating a new pipeline
354
- console.log(
355
- "No existing Pipeline ID found, creating new Cloudflare Pipeline:",
356
- pipelineName
338
+ if (this.phase === "create") {
339
+ pipelineData = await createPipeline(api, pipelineName, props);
340
+ } else {
341
+ // Update operation
342
+ if (this.output?.id) {
343
+ // Check if name is being changed, which is not allowed
344
+ if (props.name !== this.output.name) {
345
+ throw new Error(
346
+ "Cannot update Pipeline name after creation. Pipeline name is immutable.",
357
347
  );
358
- pipelineData = await createPipeline(api, pipelineName, props);
359
348
  }
360
- }
361
349
 
362
- return this({
363
- type: "pipeline",
364
- id: pipelineData.result.id,
365
- name: pipelineName,
366
- endpoint: pipelineData.result.endpoint,
367
- version: pipelineData.result.version,
368
- source: pipelineData.result.source!.map((s) => ({
369
- type: s.type as "http" | "binding",
370
- format: s.format as "json",
371
- authentication: s.authentication,
372
- cors: s.cors,
373
- })),
374
- destination: props.destination, // Use the input destination, not the API response
375
- compression: props.compression,
376
- accountId: api.accountId,
377
- });
350
+ // Update the pipeline with new settings
351
+ pipelineData = await updatePipeline(api, pipelineName, props);
352
+ } else {
353
+ // If no ID exists, fall back to creating a new pipeline
354
+ console.log(
355
+ "No existing Pipeline ID found, creating new Cloudflare Pipeline:",
356
+ pipelineName,
357
+ );
358
+ pipelineData = await createPipeline(api, pipelineName, props);
359
+ }
378
360
  }
361
+
362
+ return this({
363
+ type: "pipeline",
364
+ id: pipelineData.result.id,
365
+ name: pipelineName,
366
+ endpoint: pipelineData.result.endpoint,
367
+ version: pipelineData.result.version,
368
+ source: pipelineData.result.source!.map((s) => ({
369
+ type: s.type as "http" | "binding",
370
+ format: s.format as "json",
371
+ authentication: s.authentication,
372
+ cors: s.cors,
373
+ })),
374
+ destination: props.destination, // Use the input destination, not the API response
375
+ compression: props.compression,
376
+ accountId: api.accountId,
377
+ });
379
378
  });
380
379
 
381
380
  interface CloudflarePipelineResponse {
@@ -421,10 +420,10 @@ interface CloudflarePipelineResponse {
421
420
  */
422
421
  export async function getPipeline(
423
422
  api: CloudflareApi,
424
- pipelineName: string
423
+ pipelineName: string,
425
424
  ): Promise<CloudflarePipelineResponse> {
426
425
  const response = await api.get(
427
- `/accounts/${api.accountId}/pipelines/${pipelineName}`
426
+ `/accounts/${api.accountId}/pipelines/${pipelineName}`,
428
427
  );
429
428
 
430
429
  if (!response.ok) {
@@ -439,11 +438,11 @@ export async function getPipeline(
439
438
  */
440
439
  export async function deletePipeline(
441
440
  api: CloudflareApi,
442
- pipelineName: string
441
+ pipelineName: string,
443
442
  ): Promise<void> {
444
443
  // Delete Pipeline
445
444
  const deleteResponse = await api.delete(
446
- `/accounts/${api.accountId}/pipelines/${pipelineName}`
445
+ `/accounts/${api.accountId}/pipelines/${pipelineName}`,
447
446
  );
448
447
 
449
448
  if (!deleteResponse.ok && deleteResponse.status !== 404) {
@@ -452,7 +451,7 @@ export async function deletePipeline(
452
451
  }));
453
452
  throw new CloudflareApiError(
454
453
  `Error deleting Cloudflare Pipeline '${pipelineName}': ${errorData.errors?.[0]?.message || deleteResponse.statusText}`,
455
- deleteResponse
454
+ deleteResponse,
456
455
  );
457
456
  }
458
457
  }
@@ -463,14 +462,14 @@ export async function deletePipeline(
463
462
  export async function createPipeline(
464
463
  api: CloudflareApi,
465
464
  pipelineName: string,
466
- props: PipelineProps
465
+ props: PipelineProps,
467
466
  ): Promise<CloudflarePipelineResponse> {
468
467
  // Prepare the create payload
469
468
  const createPayload = preparePipelinePayload(api, pipelineName, props);
470
469
 
471
470
  const createResponse = await api.post(
472
471
  `/accounts/${api.accountId}/pipelines`,
473
- createPayload
472
+ createPayload,
474
473
  );
475
474
 
476
475
  if (!createResponse.ok) {
@@ -478,7 +477,7 @@ export async function createPipeline(
478
477
  createResponse,
479
478
  "creating",
480
479
  "Pipeline",
481
- pipelineName
480
+ pipelineName,
482
481
  );
483
482
  }
484
483
 
@@ -491,7 +490,7 @@ export async function createPipeline(
491
490
  export async function updatePipeline(
492
491
  api: CloudflareApi,
493
492
  pipelineName: string,
494
- props: PipelineProps
493
+ props: PipelineProps,
495
494
  ): Promise<CloudflarePipelineResponse> {
496
495
  // Get current pipeline to build update payload
497
496
  const currentPipeline = await getPipeline(api, pipelineName);
@@ -501,12 +500,12 @@ export async function updatePipeline(
501
500
  api,
502
501
  pipelineName,
503
502
  props,
504
- currentPipeline
503
+ currentPipeline,
505
504
  );
506
505
 
507
506
  const updateResponse = await api.put(
508
507
  `/accounts/${api.accountId}/pipelines/${pipelineName}`,
509
- updatePayload
508
+ updatePayload,
510
509
  );
511
510
 
512
511
  if (!updateResponse.ok) {
@@ -514,7 +513,7 @@ export async function updatePipeline(
514
513
  updateResponse,
515
514
  "updating",
516
515
  "Pipeline",
517
- pipelineName
516
+ pipelineName,
518
517
  );
519
518
  }
520
519
 
@@ -528,7 +527,7 @@ function preparePipelinePayload(
528
527
  api: CloudflareApi,
529
528
  pipelineName: string,
530
529
  props: PipelineProps,
531
- currentPipeline?: CloudflarePipelineResponse
530
+ currentPipeline?: CloudflarePipelineResponse,
532
531
  ): any {
533
532
  // Prepare the payload with name and source
534
533
  const payload: any = {
@@ -568,7 +567,7 @@ function preparePipelinePayload(
568
567
  payload.destination = currentPipeline.result.destination;
569
568
  } else if (!props.destination && !currentPipeline) {
570
569
  throw new Error(
571
- "An R2 destination is required for creating/updating a pipeline"
570
+ "An R2 destination is required for creating/updating a pipeline",
572
571
  );
573
572
  }
574
573
 
@@ -584,14 +583,14 @@ function preparePipelinePayload(
584
583
  * List all pipelines in an account
585
584
  */
586
585
  export async function listPipelines(
587
- api: CloudflareApi
586
+ api: CloudflareApi,
588
587
  ): Promise<{ name: string; id: string }[]> {
589
588
  const response = await api.get(`/accounts/${api.accountId}/pipelines`);
590
589
 
591
590
  if (!response.ok) {
592
591
  throw new CloudflareApiError(
593
592
  `Failed to list pipelines: ${response.statusText}`,
594
- response
593
+ response,
595
594
  );
596
595
  }
597
596
 
@@ -2,7 +2,7 @@ import type { Context } from "../context.js";
2
2
  import { Resource } from "../resource.js";
3
3
  import { CloudflareApiError, handleApiError } from "./api-error.js";
4
4
  import {
5
- CloudflareApi,
5
+ type CloudflareApi,
6
6
  createCloudflareApi,
7
7
  type CloudflareApiOptions,
8
8
  } from "./api.js";
@@ -139,7 +139,7 @@ export const QueueConsumer = Resource(
139
139
  async function (
140
140
  this: Context<QueueConsumer>,
141
141
  id: string,
142
- props: QueueConsumerProps
142
+ props: QueueConsumerProps,
143
143
  ): Promise<QueueConsumer> {
144
144
  const api = await createCloudflareApi(props);
145
145
 
@@ -159,48 +159,47 @@ export const QueueConsumer = Resource(
159
159
 
160
160
  // Return void (a deleted consumer has no content)
161
161
  return this.destroy();
162
- } else {
163
- let consumerData: CloudflareQueueConsumerResponse;
164
-
165
- if (this.phase === "create") {
166
- console.log(`Creating Queue Consumer for queue ${queueId}`);
167
- consumerData = await createQueueConsumer(api, queueId, props);
168
- } else if (this.output?.id) {
169
- console.log(`Updating Queue Consumer ${this.output.id}`);
170
- consumerData = await updateQueueConsumer(
171
- api,
172
- queueId,
173
- this.output.id,
174
- props
175
- );
176
- } else {
177
- // If no ID exists, fall back to creating a new consumer
178
- console.log(
179
- `No existing Consumer ID found, creating new Queue Consumer for queue ${queueId}`
180
- );
181
- consumerData = await createQueueConsumer(api, queueId, props);
182
- }
183
-
184
- return this({
185
- id: consumerData.result.consumer_id,
162
+ }
163
+ let consumerData: CloudflareQueueConsumerResponse;
164
+
165
+ if (this.phase === "create") {
166
+ console.log(`Creating Queue Consumer for queue ${queueId}`);
167
+ consumerData = await createQueueConsumer(api, queueId, props);
168
+ } else if (this.output?.id) {
169
+ console.log(`Updating Queue Consumer ${this.output.id}`);
170
+ consumerData = await updateQueueConsumer(
171
+ api,
186
172
  queueId,
187
- queue: props.queue,
188
- type: "worker",
189
- scriptName: props.scriptName,
190
- settings: consumerData.result.settings
191
- ? {
192
- batchSize: consumerData.result.settings.batch_size,
193
- maxConcurrency: consumerData.result.settings.max_concurrency,
194
- maxRetries: consumerData.result.settings.max_retries,
195
- maxWaitTimeMs: consumerData.result.settings.max_wait_time_ms,
196
- retryDelay: consumerData.result.settings.retry_delay,
197
- }
198
- : undefined,
199
- createdOn: consumerData.result.created_on,
200
- accountId: api.accountId,
201
- });
173
+ this.output.id,
174
+ props,
175
+ );
176
+ } else {
177
+ // If no ID exists, fall back to creating a new consumer
178
+ console.log(
179
+ `No existing Consumer ID found, creating new Queue Consumer for queue ${queueId}`,
180
+ );
181
+ consumerData = await createQueueConsumer(api, queueId, props);
202
182
  }
203
- }
183
+
184
+ return this({
185
+ id: consumerData.result.consumer_id,
186
+ queueId,
187
+ queue: props.queue,
188
+ type: "worker",
189
+ scriptName: props.scriptName,
190
+ settings: consumerData.result.settings
191
+ ? {
192
+ batchSize: consumerData.result.settings.batch_size,
193
+ maxConcurrency: consumerData.result.settings.max_concurrency,
194
+ maxRetries: consumerData.result.settings.max_retries,
195
+ maxWaitTimeMs: consumerData.result.settings.max_wait_time_ms,
196
+ retryDelay: consumerData.result.settings.retry_delay,
197
+ }
198
+ : undefined,
199
+ createdOn: consumerData.result.created_on,
200
+ accountId: api.accountId,
201
+ });
202
+ },
204
203
  );
205
204
 
206
205
  /**
@@ -232,7 +231,7 @@ interface CloudflareQueueConsumerResponse {
232
231
  export async function createQueueConsumer(
233
232
  api: CloudflareApi,
234
233
  queueId: string,
235
- props: QueueConsumerProps
234
+ props: QueueConsumerProps,
236
235
  ): Promise<CloudflareQueueConsumerResponse> {
237
236
  // Prepare the create payload
238
237
  const createPayload: any = {
@@ -267,7 +266,7 @@ export async function createQueueConsumer(
267
266
 
268
267
  const createResponse = await api.post(
269
268
  `/accounts/${api.accountId}/queues/${queueId}/consumers`,
270
- createPayload
269
+ createPayload,
271
270
  );
272
271
 
273
272
  if (!createResponse.ok) {
@@ -275,7 +274,7 @@ export async function createQueueConsumer(
275
274
  createResponse,
276
275
  "creating",
277
276
  "Queue Consumer",
278
- `for queue ${queueId}`
277
+ `for queue ${queueId}`,
279
278
  );
280
279
  }
281
280
 
@@ -288,10 +287,10 @@ export async function createQueueConsumer(
288
287
  export async function deleteQueueConsumer(
289
288
  api: CloudflareApi,
290
289
  queueId: string,
291
- consumerId: string
290
+ consumerId: string,
292
291
  ): Promise<void> {
293
292
  const deleteResponse = await api.delete(
294
- `/accounts/${api.accountId}/queues/${queueId}/consumers/${consumerId}`
293
+ `/accounts/${api.accountId}/queues/${queueId}/consumers/${consumerId}`,
295
294
  );
296
295
 
297
296
  if (!deleteResponse.ok && deleteResponse.status !== 404) {
@@ -300,7 +299,7 @@ export async function deleteQueueConsumer(
300
299
  }));
301
300
  throw new CloudflareApiError(
302
301
  `Error deleting Queue Consumer '${consumerId}': ${errorData.errors?.[0]?.message || deleteResponse.statusText}`,
303
- deleteResponse
302
+ deleteResponse,
304
303
  );
305
304
  }
306
305
  }
@@ -312,7 +311,7 @@ async function updateQueueConsumer(
312
311
  api: CloudflareApi,
313
312
  queueId: string,
314
313
  consumerId: string,
315
- props: QueueConsumerProps
314
+ props: QueueConsumerProps,
316
315
  ): Promise<CloudflareQueueConsumerResponse> {
317
316
  // Prepare the update payload
318
317
  const updatePayload: any = {
@@ -348,7 +347,7 @@ async function updateQueueConsumer(
348
347
  // Use PUT to update the consumer
349
348
  const updateResponse = await api.put(
350
349
  `/accounts/${api.accountId}/queues/${queueId}/consumers/${consumerId}`,
351
- updatePayload
350
+ updatePayload,
352
351
  );
353
352
 
354
353
  if (!updateResponse.ok) {
@@ -356,7 +355,7 @@ async function updateQueueConsumer(
356
355
  updateResponse,
357
356
  "updating",
358
357
  "Queue Consumer",
359
- consumerId
358
+ consumerId,
360
359
  );
361
360
  }
362
361
 
@@ -376,16 +375,16 @@ export interface ListQueueConsumersResponse {
376
375
  */
377
376
  export async function listQueueConsumers(
378
377
  api: CloudflareApi,
379
- queueId: string
378
+ queueId: string,
380
379
  ): Promise<ListQueueConsumersResponse[]> {
381
380
  const response = await api.get(
382
- `/accounts/${api.accountId}/queues/${queueId}/consumers`
381
+ `/accounts/${api.accountId}/queues/${queueId}/consumers`,
383
382
  );
384
383
 
385
384
  if (!response.ok) {
386
385
  throw new CloudflareApiError(
387
386
  `Failed to list queue consumers: ${response.statusText}`,
388
- response
387
+ response,
389
388
  );
390
389
  }
391
390
 
@@ -2,7 +2,7 @@ import type { Context } from "../context.js";
2
2
  import { Resource } from "../resource.js";
3
3
  import { CloudflareApiError, handleApiError } from "./api-error.js";
4
4
  import {
5
- CloudflareApi,
5
+ type CloudflareApi,
6
6
  createCloudflareApi,
7
7
  type CloudflareApiOptions,
8
8
  } from "./api.js";
@@ -168,56 +168,55 @@ export const Queue = Resource("cloudflare::Queue", async function <
168
168
 
169
169
  // Return void (a deleted queue has no content)
170
170
  return this.destroy();
171
- } else {
172
- let queueData: CloudflareQueueResponse;
173
-
174
- if (this.phase === "create") {
175
- console.log("Creating Cloudflare Queue:", queueName);
176
- queueData = await createQueue(api, queueName, props);
177
- } else {
178
- // Update operation
179
- if (this.output?.id) {
180
- console.log("Updating Cloudflare Queue:", queueName);
181
-
182
- // Check if name is being changed, which is not allowed
183
- if (props.name !== this.output.name) {
184
- throw new Error(
185
- "Cannot update Queue name after creation. Queue name is immutable."
186
- );
187
- }
171
+ }
172
+ let queueData: CloudflareQueueResponse;
188
173
 
189
- // Update the queue with new settings
190
- queueData = await updateQueue(api, this.output.id, props);
191
- } else {
192
- // If no ID exists, fall back to creating a new queue
193
- console.log(
194
- "No existing Queue ID found, creating new Cloudflare Queue:",
195
- queueName
174
+ if (this.phase === "create") {
175
+ console.log("Creating Cloudflare Queue:", queueName);
176
+ queueData = await createQueue(api, queueName, props);
177
+ } else {
178
+ // Update operation
179
+ if (this.output?.id) {
180
+ console.log("Updating Cloudflare Queue:", queueName);
181
+
182
+ // Check if name is being changed, which is not allowed
183
+ if (props.name !== this.output.name) {
184
+ throw new Error(
185
+ "Cannot update Queue name after creation. Queue name is immutable.",
196
186
  );
197
- queueData = await createQueue(api, queueName, props);
198
187
  }
199
- }
200
188
 
201
- return this({
202
- type: "queue",
203
- id: queueData.result.queue_id || "",
204
- name: queueName,
205
- settings: queueData.result.settings
206
- ? {
207
- deliveryDelay: queueData.result.settings.delivery_delay,
208
- deliveryPaused: queueData.result.settings.delivery_paused,
209
- messageRetentionPeriod:
210
- queueData.result.settings.message_retention_period,
211
- }
212
- : undefined,
213
- createdOn: queueData.result.created_on || new Date().toISOString(),
214
- modifiedOn: queueData.result.modified_on || new Date().toISOString(),
215
- accountId: api.accountId,
216
- // phantom properties
217
- Body: undefined as T,
218
- Batch: undefined! as MessageBatch<T>,
219
- });
189
+ // Update the queue with new settings
190
+ queueData = await updateQueue(api, this.output.id, props);
191
+ } else {
192
+ // If no ID exists, fall back to creating a new queue
193
+ console.log(
194
+ "No existing Queue ID found, creating new Cloudflare Queue:",
195
+ queueName,
196
+ );
197
+ queueData = await createQueue(api, queueName, props);
198
+ }
220
199
  }
200
+
201
+ return this({
202
+ type: "queue",
203
+ id: queueData.result.queue_id || "",
204
+ name: queueName,
205
+ settings: queueData.result.settings
206
+ ? {
207
+ deliveryDelay: queueData.result.settings.delivery_delay,
208
+ deliveryPaused: queueData.result.settings.delivery_paused,
209
+ messageRetentionPeriod:
210
+ queueData.result.settings.message_retention_period,
211
+ }
212
+ : undefined,
213
+ createdOn: queueData.result.created_on || new Date().toISOString(),
214
+ modifiedOn: queueData.result.modified_on || new Date().toISOString(),
215
+ accountId: api.accountId,
216
+ // phantom properties
217
+ Body: undefined as T,
218
+ Batch: undefined! as MessageBatch<T>,
219
+ });
221
220
  });
222
221
 
223
222
  /**
@@ -226,7 +225,7 @@ export const Queue = Resource("cloudflare::Queue", async function <
226
225
  export async function createQueue(
227
226
  api: CloudflareApi,
228
227
  queueName: string,
229
- props: QueueProps
228
+ props: QueueProps,
230
229
  ): Promise<CloudflareQueueResponse> {
231
230
  // Prepare the create payload
232
231
  const createPayload: any = {
@@ -253,7 +252,7 @@ export async function createQueue(
253
252
 
254
253
  const createResponse = await api.post(
255
254
  `/accounts/${api.accountId}/queues`,
256
- createPayload
255
+ createPayload,
257
256
  );
258
257
 
259
258
  if (!createResponse.ok) {
@@ -268,10 +267,10 @@ export async function createQueue(
268
267
  */
269
268
  export async function getQueue(
270
269
  api: CloudflareApi,
271
- queueId: string
270
+ queueId: string,
272
271
  ): Promise<CloudflareQueueResponse> {
273
272
  const response = await api.get(
274
- `/accounts/${api.accountId}/queues/${queueId}`
273
+ `/accounts/${api.accountId}/queues/${queueId}`,
275
274
  );
276
275
 
277
276
  if (!response.ok) {
@@ -286,7 +285,7 @@ export async function getQueue(
286
285
  */
287
286
  export async function deleteQueue(
288
287
  api: CloudflareApi,
289
- queueId?: string
288
+ queueId?: string,
290
289
  ): Promise<void> {
291
290
  if (!queueId) {
292
291
  console.log("No Queue ID provided, skipping delete");
@@ -295,7 +294,7 @@ export async function deleteQueue(
295
294
 
296
295
  // Delete Queue
297
296
  const deleteResponse = await api.delete(
298
- `/accounts/${api.accountId}/queues/${queueId}`
297
+ `/accounts/${api.accountId}/queues/${queueId}`,
299
298
  );
300
299
 
301
300
  if (!deleteResponse.ok && deleteResponse.status !== 404) {
@@ -304,7 +303,7 @@ export async function deleteQueue(
304
303
  }));
305
304
  throw new CloudflareApiError(
306
305
  `Error deleting Cloudflare Queue '${queueId}': ${errorData.errors?.[0]?.message || deleteResponse.statusText}`,
307
- deleteResponse
306
+ deleteResponse,
308
307
  );
309
308
  }
310
309
  }
@@ -318,7 +317,7 @@ export async function deleteQueue(
318
317
  export async function updateQueue(
319
318
  api: CloudflareApi,
320
319
  queueId: string,
321
- props: QueueProps
320
+ props: QueueProps,
322
321
  ): Promise<CloudflareQueueResponse> {
323
322
  // Prepare the update payload - only include settings
324
323
  const updatePayload: any = {};
@@ -344,7 +343,7 @@ export async function updateQueue(
344
343
  // Use PATCH for partial updates (only settings can be updated)
345
344
  const updateResponse = await api.patch(
346
345
  `/accounts/${api.accountId}/queues/${queueId}`,
347
- updatePayload
346
+ updatePayload,
348
347
  );
349
348
 
350
349
  if (!updateResponse.ok) {
@@ -358,14 +357,14 @@ export async function updateQueue(
358
357
  * List all Cloudflare Queues in an account
359
358
  */
360
359
  export async function listQueues(
361
- api: CloudflareApi
360
+ api: CloudflareApi,
362
361
  ): Promise<{ name: string; id: string }[]> {
363
362
  const response = await api.get(`/accounts/${api.accountId}/queues`);
364
363
 
365
364
  if (!response.ok) {
366
365
  throw new CloudflareApiError(
367
366
  `Failed to list queues: ${response.statusText}`,
368
- response
367
+ response,
369
368
  );
370
369
  }
371
370