alchemy 0.68.0 → 0.69.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 (92) hide show
  1. package/bin/alchemy.js +19 -1
  2. package/lib/aws/control/properties.d.ts +64 -0
  3. package/lib/aws/control/properties.d.ts.map +1 -1
  4. package/lib/aws/control/properties.js +554 -39
  5. package/lib/aws/control/properties.js.map +1 -1
  6. package/lib/aws/control/resource.d.ts.map +1 -1
  7. package/lib/aws/control/resource.js +33 -0
  8. package/lib/aws/control/resource.js.map +1 -1
  9. package/lib/aws/control/types.d.ts +5451 -1587
  10. package/lib/aws/control/types.d.ts.map +1 -1
  11. package/lib/aws/control/types.js.map +1 -1
  12. package/lib/aws/control/update-types.d.ts +12913 -0
  13. package/lib/aws/control/update-types.d.ts.map +1 -0
  14. package/lib/aws/control/update-types.js +12916 -0
  15. package/lib/aws/control/update-types.js.map +1 -0
  16. package/lib/cloudflare/api.d.ts +1 -1
  17. package/lib/cloudflare/api.d.ts.map +1 -1
  18. package/lib/cloudflare/api.js +9 -10
  19. package/lib/cloudflare/api.js.map +1 -1
  20. package/lib/cloudflare/astro/astro.d.ts.map +1 -1
  21. package/lib/cloudflare/astro/astro.js +3 -3
  22. package/lib/cloudflare/astro/astro.js.map +1 -1
  23. package/lib/cloudflare/bucket-object.d.ts +81 -0
  24. package/lib/cloudflare/bucket-object.d.ts.map +1 -0
  25. package/lib/cloudflare/bucket-object.js +67 -0
  26. package/lib/cloudflare/bucket-object.js.map +1 -0
  27. package/lib/cloudflare/bucket.d.ts +30 -3
  28. package/lib/cloudflare/bucket.d.ts.map +1 -1
  29. package/lib/cloudflare/bucket.js +97 -13
  30. package/lib/cloudflare/bucket.js.map +1 -1
  31. package/lib/cloudflare/compatibility-date.gen.d.ts +1 -1
  32. package/lib/cloudflare/compatibility-date.gen.js +1 -1
  33. package/lib/cloudflare/container.d.ts.map +1 -1
  34. package/lib/cloudflare/container.js +1 -1
  35. package/lib/cloudflare/container.js.map +1 -1
  36. package/lib/cloudflare/index.d.ts +1 -0
  37. package/lib/cloudflare/index.d.ts.map +1 -1
  38. package/lib/cloudflare/index.js +1 -0
  39. package/lib/cloudflare/index.js.map +1 -1
  40. package/lib/cloudflare/next.js.map +1 -1
  41. package/lib/cloudflare/nuxt/nuxt.d.ts.map +1 -1
  42. package/lib/cloudflare/nuxt/nuxt.js +3 -3
  43. package/lib/cloudflare/nuxt/nuxt.js.map +1 -1
  44. package/lib/cloudflare/vite/vite.d.ts.map +1 -1
  45. package/lib/cloudflare/vite/vite.js +3 -3
  46. package/lib/cloudflare/vite/vite.js.map +1 -1
  47. package/lib/cloudflare/website.d.ts +7 -1
  48. package/lib/cloudflare/website.d.ts.map +1 -1
  49. package/lib/cloudflare/website.js +19 -1
  50. package/lib/cloudflare/website.js.map +1 -1
  51. package/lib/cloudflare/wrangler.json.d.ts +27 -8
  52. package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
  53. package/lib/cloudflare/wrangler.json.js +3 -1
  54. package/lib/cloudflare/wrangler.json.js.map +1 -1
  55. package/lib/llms.cloudflare.txt +2 -2
  56. package/lib/neon/branch.d.ts +19 -3
  57. package/lib/neon/branch.d.ts.map +1 -1
  58. package/lib/neon/branch.js +4 -4
  59. package/lib/neon/branch.js.map +1 -1
  60. package/lib/neon/project.d.ts +17 -1
  61. package/lib/neon/project.d.ts.map +1 -1
  62. package/lib/neon/project.js +4 -4
  63. package/lib/neon/project.js.map +1 -1
  64. package/lib/serde.d.ts +3 -0
  65. package/lib/serde.d.ts.map +1 -1
  66. package/lib/serde.js +40 -0
  67. package/lib/serde.js.map +1 -1
  68. package/lib/test/bun.js.map +1 -1
  69. package/package.json +1 -1
  70. package/src/aws/control/properties.ts +554 -39
  71. package/src/aws/control/resource.ts +58 -0
  72. package/src/aws/control/types.ts +85281 -84914
  73. package/src/aws/control/update-types.ts +12917 -0
  74. package/src/cloudflare/api.ts +9 -10
  75. package/src/cloudflare/astro/astro.ts +8 -3
  76. package/src/cloudflare/bucket-object.ts +117 -0
  77. package/src/cloudflare/bucket.ts +148 -14
  78. package/src/cloudflare/compatibility-date.gen.ts +1 -1
  79. package/src/cloudflare/container.ts +2 -3
  80. package/src/cloudflare/index.ts +1 -0
  81. package/src/cloudflare/next.ts +2 -2
  82. package/src/cloudflare/nuxt/nuxt.ts +8 -3
  83. package/src/cloudflare/vite/vite.ts +8 -3
  84. package/src/cloudflare/website.ts +28 -2
  85. package/src/cloudflare/wrangler.json.ts +32 -17
  86. package/src/llms.cloudflare.txt +2 -2
  87. package/src/neon/branch.ts +6 -5
  88. package/src/neon/project.ts +4 -4
  89. package/src/serde.ts +50 -0
  90. package/src/test/bun.ts +1 -1
  91. package/templates/rwsdk/.cursor/rules/alchemy_cloudflare.mdc +2 -2
  92. package/workers/tunnel-proxy.js +1 -1
@@ -1,4 +1,5 @@
1
1
  import { Provider } from "../auth.js";
2
+ import { isBinary } from "../serde.js";
2
3
  import { memoize } from "../util/memoize.js";
3
4
  import { withExponentialBackoff } from "../util/retry.js";
4
5
  import { safeFetch } from "../util/safe-fetch.js";
@@ -175,7 +176,7 @@ export class CloudflareApi {
175
176
  return this.fetch(path, {
176
177
  ...init,
177
178
  method: "POST",
178
- body: this.toBody(body),
179
+ body: await this.toBody(body),
179
180
  });
180
181
  }
181
182
  /**
@@ -185,17 +186,15 @@ export class CloudflareApi {
185
186
  return this.fetch(path, {
186
187
  ...init,
187
188
  method: "PUT",
188
- body: this.toBody(body),
189
+ body: await this.toBody(body),
189
190
  });
190
191
  }
191
- toBody(body) {
192
- return body instanceof FormData
192
+ async toBody(body) {
193
+ return body instanceof FormData ||
194
+ typeof body === "string" ||
195
+ isBinary(body)
193
196
  ? body
194
- : typeof body === "string"
195
- ? body
196
- : body instanceof ReadableStream
197
- ? body
198
- : JSON.stringify(body);
197
+ : JSON.stringify(body);
199
198
  }
200
199
  /**
201
200
  * Helper for PATCH requests
@@ -204,7 +203,7 @@ export class CloudflareApi {
204
203
  return this.fetch(path, {
205
204
  ...init,
206
205
  method: "PATCH",
207
- body: this.toBody(body),
206
+ body: await this.toBody(body),
208
207
  });
209
208
  }
210
209
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/cloudflare/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AA+C3E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CACxC,KAAK,EAAE,UAAgC,EAAE,EAAE,EAAE;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACnE,MAAM,MAAM,GACV,OAAO,CAAC,MAAM,EAAE,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAChE,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ,EAAE,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACpE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC5D,MAAM,SAAS,GACb,OAAO,CAAC,SAAS;QACjB,OAAO,CAAC,GAAG,CAAC,qBAAqB;QACjC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAE5B,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,WAAW,GAAuB;YACtC,IAAI,EAAE,SAAS;YACf,MAAM;YACN,KAAK,EAAE,KAAK,IAAI,CAAC,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAC;SACvD,CAAC;QACF,OAAO,IAAI,aAAa,CAAC;YACvB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,WAAW;YACX,SAAS,EAAE,SAAS,IAAI,CAAC,MAAM,sBAAsB,CAAC,WAAW,CAAC,CAAC;SACpE,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,WAAW,GAAyB;YACxC,IAAI,EAAE,WAAW;YACjB,QAAQ;SACT,CAAC;QACF,OAAO,IAAI,aAAa,CAAC;YACvB,OAAO;YACP,WAAW;YACX,SAAS,EAAE,SAAS,IAAI,CAAC,MAAM,sBAAsB,CAAC,WAAW,CAAC,CAAC;SACpE,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GACX,OAAO,CAAC,OAAO;YACf,OAAO,CAAC,GAAG,CAAC,kBAAkB;YAC9B,OAAO,CAAC,GAAG,CAAC,eAAe;YAC3B,SAAS,CAAC;QACZ,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAC7B,MAAM,QAAQ,CAAC,kBAAkB,CAA0B;YACzD,QAAQ,EAAE,YAAY;YACtB,OAAO;SACR,CAAC,CAAC;QACL,OAAO,IAAI,aAAa,CAAC;YACvB,OAAO;YACP,OAAO;YACP,WAAW;YACX,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE;SAChC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb;YACE,iIAAiI;YACjI,oDAAoD;SACrD,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;AACH,CAAC,EACD,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE,CACf;IACE,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM,EAAE,WAAW;IAC3B,OAAO,CAAC,QAAQ,EAAE,WAAW;IAC7B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,KAAK;CACd,CAAC,IAAI,CAAC,GAAG,CAAC,CACd,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,aAAa;IACR,OAAO,CAAS;IAChB,SAAS,CAAS;IAClB,WAAW,CAAc;IACzB,OAAO,CAAqB;IAE5C;;;;;;OAMG;IACH,YAAY,OAKX;QACC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,sCAAsC,CAAC;QACzE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACjC,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,OAAoB,EAAE;QACrD,IAAI,OAAO,GAA2B;YACpC,cAAc,EAAE,kBAAkB;SACnC,CAAC;QACF,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBACpC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,YAAY,OAAO,EAAE,CAAC;YAC3C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBAClC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QACzB,CAAC;QACD,OAAO,GAAG;YACR,GAAG,CAAC,MAAM,cAAc,CAAC,wBAAwB,CAAC;gBAChD,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B,CAAC,CAAC;YACH,GAAG,OAAO;SACX,CAAC;QAEF,gCAAgC;QAChC,IAAI,IAAI,CAAC,IAAI,YAAY,QAAQ,EAAE,CAAC;YAClC,OAAO,OAAO,CAAC,cAAc,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,mEAAmE;QACnE,OAAO,sBAAsB,CAC3B,KAAK,IAAI,EAAE;YACT,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;gBACzD,GAAG,IAAI;gBACP,OAAO;aACR,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC/C,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC1C,uEAAuE;gBACvE,sCAAsC;gBACtC,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM,IAAI,cAAc,EAAE,CAAC;YAC7B,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAQ,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,MAAM,IAAI,oBAAoB,CAC5B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,UAAU,CAC9C,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,kDAAkD;QAClD,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,YAAY,aAAa;YAC9B,KAAK,YAAY,oBAAoB;YACrC,KAAK,YAAY,cAAc;YAC/B,KAAK,CAAC,IAAI,KAAK,YAAY,EAC7B,EAAE,EAAE,8CAA8C;QAClD,IAAI,CACL,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,IAAY,EAAE,OAAoB,EAAE;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,OAAoB,EAAE;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,IAAI,CACR,IAAY,EACZ,IAAS,EACT,OAAoB,EAAE;QAEtB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACtB,GAAG,IAAI;YACP,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;SACxB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CACP,IAAY,EACZ,IAAS,EACT,OAAoB,EAAE;QAEtB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACtB,GAAG,IAAI;YACP,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;SACxB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAc;QACnB,OAAO,IAAI,YAAY,QAAQ;YAC7B,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ;gBACxB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,YAAY,cAAc;oBAC9B,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CACT,IAAY,EACZ,IAAS,EACT,OAAoB,EAAE;QAEtB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACtB,GAAG,IAAI;YACP,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;SACxB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,OAAoB,EAAE;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzD,CAAC;CACF;AAED,MAAM,aAAc,SAAQ,KAAK;CAAG;AAEpC,MAAM,oBAAqB,SAAQ,KAAK;IACtC,YAAY,OAAe;QACzB,KAAK,CACH,qCAAqC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAC5E,CAAC;IACJ,CAAC;CACF;AAED,MAAM,cAAe,SAAQ,KAAK;CAAG"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/cloudflare/api.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"astro.d.ts","sourceRoot":"","sources":["../../../src/cloudflare/astro/astro.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;;GAGG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,QAAQ,CAC5C,SAAQ,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IACpC,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAC,SAAS;IAAE,MAAM,EAAE,GAAG,CAAA;CAAE,GAC7D,KAAK,GACL,MAAM,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAsB,KAAK,CAAC,CAAC,SAAS,QAAQ,EAC5C,EAAE,EAAE,MAAM,EACV,KAAK,GAAE,UAAU,CAAC,CAAC,CAAM,GACxB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAenB"}
1
+ {"version":3,"file":"astro.d.ts","sourceRoot":"","sources":["../../../src/cloudflare/astro/astro.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;;GAGG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,QAAQ,CAC5C,SAAQ,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IACpC,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAC,SAAS;IAAE,MAAM,EAAE,GAAG,CAAA;CAAE,GAC7D,KAAK,GACL,MAAM,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAsB,KAAK,CAAC,CAAC,SAAS,QAAQ,EAC5C,EAAE,EAAE,MAAM,EACV,KAAK,GAAE,UAAU,CAAC,CAAC,CAAM,GACxB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAenB"}
@@ -9,7 +9,7 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
9
9
  import { join, resolve } from "node:path";
10
10
  import { getPackageManagerRunner } from "../../util/detect-package-manager.js";
11
11
  import { withSkipPathValidation } from "../miniflare/paths.js";
12
- import { Website } from "../website.js";
12
+ import { spreadBuildProps, spreadDevProps, Website, } from "../website.js";
13
13
  /**
14
14
  * Creates and deploys an Astro application using the Cloudflare adapter.
15
15
  *
@@ -58,8 +58,8 @@ export async function Astro(id, props = {}) {
58
58
  return await Website(id, {
59
59
  ...props,
60
60
  noBundle: props.noBundle ?? true,
61
- build: props.build ?? `${runner} astro build`,
62
- dev: props.dev ?? `${runner} astro dev`,
61
+ build: spreadBuildProps(props, `${runner} astro build`),
62
+ dev: spreadDevProps(props, `${runner} astro dev`),
63
63
  entrypoint: props.entrypoint ??
64
64
  (output === "server" ? "dist/_worker.js/index.js" : undefined),
65
65
  assets: props.assets ?? "dist",
@@ -1 +1 @@
1
- {"version":3,"file":"astro.js","sourceRoot":"","sources":["../../../src/cloudflare/astro/astro.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAG/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAqB,MAAM,eAAe,CAAC;AAqB3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,EAAU,EACV,QAAuB,EAAE;IAEzB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,MAAM,uBAAuB,EAAE,CAAC;IAC/C,OAAO,MAAM,OAAO,CAAC,EAAE,EAAE;QACvB,GAAG,KAAK;QACR,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;QAChC,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,GAAG,MAAM,cAAc;QAC7C,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,GAAG,MAAM,YAAY;QACvC,UAAU,EACR,KAAK,CAAC,UAAU;YAChB,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,MAAM;QAC9B,GAAG,EAAE,KAAK;KACX,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,GAAW;IAC1C,MAAM,UAAU,GAAG;QACjB,kBAAkB;QAClB,iBAAiB;QACjB,iBAAiB;QACjB,kBAAkB;KACnB,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,GAAG,EAAE,CAAC,MAAM,kCAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,EAAC,CACnC,CAAC;YACF,IACE,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;gBAClC,MAAM,CAAC,OAAO;gBACd,QAAQ,IAAI,MAAM,CAAC,OAAO;gBAC1B,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ,EACzC,CAAC;gBACD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAC/B,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"astro.js","sourceRoot":"","sources":["../../../src/cloudflare/astro/astro.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAG/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,OAAO,GAER,MAAM,eAAe,CAAC;AAqBvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,EAAU,EACV,QAAuB,EAAE;IAEzB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,MAAM,uBAAuB,EAAE,CAAC;IAC/C,OAAO,MAAM,OAAO,CAAC,EAAE,EAAE;QACvB,GAAG,KAAK;QACR,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;QAChC,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,GAAG,MAAM,cAAc,CAAC;QACvD,GAAG,EAAE,cAAc,CAAC,KAAK,EAAE,GAAG,MAAM,YAAY,CAAC;QACjD,UAAU,EACR,KAAK,CAAC,UAAU;YAChB,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,MAAM;QAC9B,GAAG,EAAE,KAAK;KACX,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,GAAW;IAC1C,MAAM,UAAU,GAAG;QACjB,kBAAkB;QAClB,iBAAiB;QACjB,iBAAiB;QACjB,kBAAkB;KACnB,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,GAAG,EAAE,CAAC,MAAM,kCAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,EAAC,CACnC,CAAC;YACF,IACE,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;gBAClC,MAAM,CAAC,OAAO;gBACd,QAAQ,IAAI,MAAM,CAAC,OAAO;gBAC1B,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ,EACzC,CAAC;gBACD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAC/B,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,81 @@
1
+ import type { Context } from "../context.ts";
2
+ import { type CloudflareApiOptions } from "./api.ts";
3
+ import { type PutObjectObject, type R2Bucket } from "./bucket.ts";
4
+ /**
5
+ * Properties for creating or updating an R2 Object
6
+ */
7
+ export interface R2ObjectProps extends CloudflareApiOptions {
8
+ /**
9
+ * The R2 bucket where the object will be stored
10
+ */
11
+ bucket: R2Bucket;
12
+ /**
13
+ * The key (path/name) of the object within the bucket
14
+ * Must be a valid object key as defined by R2 storage requirements
15
+ */
16
+ key: string;
17
+ /**
18
+ * The content to store in the object
19
+ * Supports various data types including streams, buffers, strings, and blobs
20
+ */
21
+ content: PutObjectObject;
22
+ }
23
+ /**
24
+ * Output returned after R2 Object creation/update
25
+ */
26
+ export interface R2Object {
27
+ /**
28
+ * The resource identifier
29
+ */
30
+ id: string;
31
+ /**
32
+ * The key (path/name) of the object within the bucket
33
+ */
34
+ key: string;
35
+ /**
36
+ * The etag of the object
37
+ */
38
+ etag: string;
39
+ }
40
+ /**
41
+ * Creates and manages objects within Cloudflare R2 Buckets.
42
+ *
43
+ * R2 Objects represent individual files or data stored within an R2 bucket.
44
+ * This resource provides lifecycle management for object creation, updates, and deletion.
45
+ *
46
+ * @example
47
+ * // Create a simple text object in a bucket
48
+ * const textObject = await R2Object("readme", {
49
+ * bucket: myBucket,
50
+ * key: "docs/README.txt",
51
+ * content: "Welcome to our application!"
52
+ * });
53
+ *
54
+ * @example
55
+ * // Store JSON data as an object
56
+ * const configObject = await R2Object("app-config", {
57
+ * bucket: configBucket,
58
+ * key: "config/app.json",
59
+ * content: JSON.stringify({ version: "1.0.0", debug: false })
60
+ * });
61
+ *
62
+ * @example
63
+ * // Store binary data from a buffer
64
+ * const imageObject = await R2Object("user-avatar", {
65
+ * bucket: assetsBucket,
66
+ * key: "avatars/user-123.png",
67
+ * content: imageBuffer
68
+ * });
69
+ *
70
+ * @example
71
+ * // Store data from a readable stream
72
+ * const streamObject = await R2Object("upload", {
73
+ * bucket: uploadsBucket,
74
+ * key: "uploads/file.dat",
75
+ * content: readableStream
76
+ * });
77
+ *
78
+ * @see https://developers.cloudflare.com/r2/api/workers/workers-api-reference/
79
+ */
80
+ export declare const R2Object: (((this: any, id: string, props?: {}) => never) & (new (_: never) => never)) | ((this: Context<R2Object>, id: string, props: R2ObjectProps) => Promise<R2Object>);
81
+ //# sourceMappingURL=bucket-object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bucket-object.d.ts","sourceRoot":"","sources":["../../src/cloudflare/bucket-object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAgB,KAAK,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,oBAAoB;IACzD;;OAEG;IACH,MAAM,EAAE,QAAQ,CAAC;IAEjB;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,QAAQ,yFAGX,OAAO,CAAC,QAAQ,CAAC,MACnB,MAAM,SACH,aAAa,KACnB,OAAO,CAAC,QAAQ,CAAC,CAuBrB,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { Resource } from "../resource.js";
2
+ import { createCloudflareApi } from "./api.js";
3
+ import { deleteObject } from "./bucket.js";
4
+ /**
5
+ * Creates and manages objects within Cloudflare R2 Buckets.
6
+ *
7
+ * R2 Objects represent individual files or data stored within an R2 bucket.
8
+ * This resource provides lifecycle management for object creation, updates, and deletion.
9
+ *
10
+ * @example
11
+ * // Create a simple text object in a bucket
12
+ * const textObject = await R2Object("readme", {
13
+ * bucket: myBucket,
14
+ * key: "docs/README.txt",
15
+ * content: "Welcome to our application!"
16
+ * });
17
+ *
18
+ * @example
19
+ * // Store JSON data as an object
20
+ * const configObject = await R2Object("app-config", {
21
+ * bucket: configBucket,
22
+ * key: "config/app.json",
23
+ * content: JSON.stringify({ version: "1.0.0", debug: false })
24
+ * });
25
+ *
26
+ * @example
27
+ * // Store binary data from a buffer
28
+ * const imageObject = await R2Object("user-avatar", {
29
+ * bucket: assetsBucket,
30
+ * key: "avatars/user-123.png",
31
+ * content: imageBuffer
32
+ * });
33
+ *
34
+ * @example
35
+ * // Store data from a readable stream
36
+ * const streamObject = await R2Object("upload", {
37
+ * bucket: uploadsBucket,
38
+ * key: "uploads/file.dat",
39
+ * content: readableStream
40
+ * });
41
+ *
42
+ * @see https://developers.cloudflare.com/r2/api/workers/workers-api-reference/
43
+ */
44
+ export const R2Object = Resource("cloudflare::R2Object", async function (id, props) {
45
+ if (this.phase === "delete") {
46
+ const api = await createCloudflareApi(props);
47
+ // Delete the object from the bucket
48
+ await deleteObject(api, {
49
+ bucketName: props.bucket.name,
50
+ key: props.key,
51
+ });
52
+ return this.destroy();
53
+ }
54
+ else {
55
+ if (this.phase === "update" && this.output?.key !== props.key) {
56
+ this.replace();
57
+ }
58
+ // Create or update the object in the bucket
59
+ const response = await props.bucket.put(props.key, props.content);
60
+ return {
61
+ id,
62
+ key: props.key,
63
+ etag: response.etag,
64
+ };
65
+ }
66
+ });
67
+ //# sourceMappingURL=bucket-object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bucket-object.js","sourceRoot":"","sources":["../../src/cloudflare/bucket-object.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAA6B,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAuC,MAAM,aAAa,CAAC;AA4ChF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAC9B,sBAAsB,EACtB,KAAK,WAEH,EAAU,EACV,KAAoB;IAEpB,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC7C,oCAAoC;QACpC,MAAM,YAAY,CAAC,GAAG,EAAE;YACtB,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;YAC7B,GAAG,EAAE,KAAK,CAAC,GAAG;SACf,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,KAAK,CAAC,GAAG,EAAE,CAAC;YAC9D,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;QACD,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAElE,OAAO;YACL,EAAE;YACF,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,IAAI,EAAE,QAAQ,CAAC,IAAI;SACpB,CAAC;IACJ,CAAC;AACH,CAAC,CACF,CAAC"}
@@ -61,6 +61,10 @@ export interface BucketProps extends CloudflareApiOptions {
61
61
  * Lock rules for the bucket
62
62
  */
63
63
  lock?: R2BucketLockRule[];
64
+ /**
65
+ * Enable data catalog for bucket
66
+ */
67
+ dataCatalog?: boolean;
64
68
  /**
65
69
  * Whether to emulate the bucket locally when Alchemy is running in watch mode.
66
70
  */
@@ -215,7 +219,7 @@ export type R2ObjectMetadata = {
215
219
  uploaded: Date;
216
220
  size: number;
217
221
  };
218
- export type R2Object = R2ObjectMetadata & {
222
+ export type R2ObjectContent = R2ObjectMetadata & {
219
223
  arrayBuffer(): Promise<ArrayBuffer>;
220
224
  bytes(): Promise<Uint8Array>;
221
225
  text(): Promise<string>;
@@ -240,7 +244,7 @@ export type R2Objects = {
240
244
  });
241
245
  export type R2Bucket = _R2Bucket & {
242
246
  head(key: string): Promise<R2ObjectMetadata | null>;
243
- get(key: string): Promise<R2Object | null>;
247
+ get(key: string): Promise<R2ObjectContent | null>;
244
248
  put(key: string, value: ReadableStream | ArrayBuffer | ArrayBufferView | string | null | Blob): Promise<PutR2ObjectResponse>;
245
249
  delete(key: string): Promise<Response>;
246
250
  list(options?: R2ListOptions): Promise<R2Objects>;
@@ -283,6 +287,23 @@ type _R2Bucket = Omit<BucketProps, "delete" | "dev"> & {
283
287
  */
284
288
  remote: boolean;
285
289
  };
290
+ /**
291
+ * Data catalog for the bucket
292
+ */
293
+ catalog?: {
294
+ /**
295
+ * ID of the data catalog
296
+ */
297
+ id: string;
298
+ /**
299
+ * Name of the data catalog
300
+ */
301
+ name: string;
302
+ /**
303
+ * Host of the data catalog
304
+ */
305
+ host: string;
306
+ };
286
307
  };
287
308
  export declare function isBucket(resource: any): resource is R2Bucket;
288
309
  /**
@@ -410,7 +431,7 @@ export declare function getObject(api: CloudflareApi, { bucketName, key }: {
410
431
  bucketName: string;
411
432
  key: string;
412
433
  }): Promise<Response>;
413
- type PutObjectObject = ReadableStream | ArrayBuffer | ArrayBufferView | string | Blob;
434
+ export type PutObjectObject = ReadableStream | ArrayBuffer | ArrayBufferView | Uint8Array | string | Buffer | Blob;
414
435
  export declare function putObject(api: CloudflareApi, { bucketName, key, object, }: {
415
436
  bucketName: string;
416
437
  key: string;
@@ -420,5 +441,11 @@ export declare function deleteObject(api: CloudflareApi, { bucketName, key }: {
420
441
  bucketName: string;
421
442
  key: string;
422
443
  }): Promise<Response>;
444
+ export declare function enableDataCatalog(api: CloudflareApi, bucketName: string): Promise<{
445
+ id: string;
446
+ name: string;
447
+ host: string;
448
+ }>;
449
+ export declare function disableDataCatalog(api: CloudflareApi, bucketName: string): Promise<void>;
423
450
  export {};
424
451
  //# sourceMappingURL=bucket.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bucket.d.ts","sourceRoot":"","sources":["../../src/cloudflare/bucket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bucket.d.ts","sourceRoot":"","sources":["../../src/cloudflare/bucket.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,15 @@
1
+ import * as mf from "miniflare";
1
2
  import { isDeepStrictEqual } from "node:util";
2
3
  import { Resource, ResourceKind } from "../resource.js";
3
4
  import { Scope } from "../scope.js";
5
+ import { streamToBuffer } from "../serde.js";
4
6
  import { isRetryableError } from "../state/r2-rest-state-store.js";
5
7
  import { withExponentialBackoff } from "../util/retry.js";
6
8
  import { CloudflareApiError, handleApiError } from "./api-error.js";
7
9
  import { extractCloudflareResult, } from "./api-response.js";
8
10
  import { createCloudflareApi, } from "./api.js";
9
11
  import { deleteMiniflareBinding } from "./miniflare/delete.js";
12
+ import { getDefaultPersistPath } from "./miniflare/paths.js";
10
13
  export function isBucket(resource) {
11
14
  return resource?.[ResourceKind] === "cloudflare::R2Bucket";
12
15
  }
@@ -55,6 +58,8 @@ export function isBucket(resource) {
55
58
  * @see https://developers.cloudflare.com/r2/buckets/
56
59
  */
57
60
  export async function R2Bucket(id, props = {}) {
61
+ const scope = Scope.current;
62
+ const isLocal = scope.local && props.dev?.remote !== true;
58
63
  const api = await createCloudflareApi(props);
59
64
  const bucket = await _R2Bucket(id, {
60
65
  ...props,
@@ -63,13 +68,42 @@ export async function R2Bucket(id, props = {}) {
63
68
  force: Scope.current.local,
64
69
  },
65
70
  });
71
+ let _miniflare;
72
+ const miniflare = () => {
73
+ if (_miniflare) {
74
+ return _miniflare;
75
+ }
76
+ _miniflare = new mf.Miniflare({
77
+ script: "",
78
+ modules: true,
79
+ defaultPersistRoot: getDefaultPersistPath(scope.rootDir),
80
+ r2Buckets: [bucket.dev.id],
81
+ log: process.env.DEBUG ? new mf.Log(mf.LogLevel.DEBUG) : undefined,
82
+ });
83
+ scope.onCleanup(async () => _miniflare?.dispose());
84
+ return _miniflare;
85
+ };
86
+ const localBucket = () => miniflare().getR2Bucket(bucket.dev.id);
66
87
  return {
67
88
  ...bucket,
68
- head: async (key) => headObject(api, {
69
- bucketName: bucket.name,
70
- key,
71
- }),
89
+ head: async (key) => {
90
+ if (isLocal) {
91
+ return (await localBucket()).head(key);
92
+ }
93
+ return headObject(api, {
94
+ bucketName: bucket.name,
95
+ key,
96
+ });
97
+ },
72
98
  get: async (key) => {
99
+ if (isLocal) {
100
+ const result = await (await localBucket()).get(key);
101
+ if (result) {
102
+ // cast because workers vs node built-ins
103
+ return result;
104
+ }
105
+ return null;
106
+ }
73
107
  const response = await getObject(api, {
74
108
  bucketName: bucket.name,
75
109
  key,
@@ -84,11 +118,30 @@ export async function R2Bucket(id, props = {}) {
84
118
  throw await handleApiError(response, "get", "object", key);
85
119
  }
86
120
  },
87
- list: async (options) => listObjects(api, bucket.name, {
88
- ...options,
89
- jurisdiction: bucket.jurisdiction,
90
- }),
121
+ list: async (options) => {
122
+ if (isLocal) {
123
+ return (await localBucket()).list(options);
124
+ }
125
+ return listObjects(api, bucket.name, {
126
+ ...options,
127
+ jurisdiction: bucket.jurisdiction,
128
+ });
129
+ },
91
130
  put: async (key, value) => {
131
+ if (isLocal) {
132
+ // @ts-expect-error - node built-ins vs cloudflare built-ins
133
+ return await (await localBucket()).put(key, typeof value === "string"
134
+ ? value
135
+ : Buffer.isBuffer(value) ||
136
+ value instanceof Uint8Array ||
137
+ value instanceof ArrayBuffer
138
+ ? new Uint8Array(value)
139
+ : value instanceof Blob
140
+ ? new Uint8Array(await value.arrayBuffer())
141
+ : value instanceof ReadableStream
142
+ ? new Uint8Array(await streamToBuffer(value))
143
+ : value);
144
+ }
92
145
  const response = await putObject(api, {
93
146
  bucketName: bucket.name,
94
147
  key: key,
@@ -103,10 +156,15 @@ export async function R2Bucket(id, props = {}) {
103
156
  size: Number(body.result.size),
104
157
  };
105
158
  },
106
- delete: async (key) => deleteObject(api, {
107
- bucketName: bucket.name,
108
- key: key,
109
- }),
159
+ delete: async (key) => {
160
+ if (isLocal) {
161
+ await (await localBucket()).delete(key);
162
+ }
163
+ return deleteObject(api, {
164
+ bucketName: bucket.name,
165
+ key: key,
166
+ });
167
+ },
110
168
  };
111
169
  }
112
170
  const parseR2Object = (key, response) => ({
@@ -122,7 +180,7 @@ const parseR2Object = (key, response) => ({
122
180
  });
123
181
  const parseDate = (headers) => new Date(headers.get("Last-Modified") ?? headers.get("Date"));
124
182
  const _R2Bucket = Resource("cloudflare::R2Bucket", async function (id, props = {}) {
125
- const bucketName = props.name ?? this.output?.name ?? this.scope.createPhysicalName(id);
183
+ const bucketName = props.name ?? (this.output?.name || this.scope.createPhysicalName(id));
126
184
  if (this.phase === "update" && this.output?.name !== bucketName) {
127
185
  this.replace();
128
186
  }
@@ -149,6 +207,9 @@ const _R2Bucket = Resource("cloudflare::R2Bucket", async function (id, props = {
149
207
  const api = await createCloudflareApi(props);
150
208
  if (this.phase === "delete") {
151
209
  if (props.delete !== false) {
210
+ if (this.output?.catalog) {
211
+ await disableDataCatalog(api, bucketName);
212
+ }
152
213
  if (this.output.dev?.id) {
153
214
  await deleteMiniflareBinding(this.scope, "r2", this.output.dev.id);
154
215
  }
@@ -178,6 +239,10 @@ const _R2Bucket = Resource("cloudflare::R2Bucket", async function (id, props = {
178
239
  if (props.lock?.length) {
179
240
  await putBucketLockRules(api, bucketName, props);
180
241
  }
242
+ let dataCatalog;
243
+ if (props.dataCatalog) {
244
+ dataCatalog = await enableDataCatalog(api, bucketName);
245
+ }
181
246
  return {
182
247
  name: bucketName,
183
248
  location: bucket.location,
@@ -191,12 +256,20 @@ const _R2Bucket = Resource("cloudflare::R2Bucket", async function (id, props = {
191
256
  lock: props.lock,
192
257
  cors: props.cors,
193
258
  dev,
259
+ catalog: dataCatalog,
194
260
  };
195
261
  }
196
262
  else {
197
263
  if (bucketName !== this.output.name) {
198
264
  throw new Error(`Cannot update R2Bucket name after creation. Bucket name is immutable. Before: ${this.output.name}, After: ${bucketName}`);
199
265
  }
266
+ if (this.output?.catalog && !props.dataCatalog) {
267
+ await disableDataCatalog(api, bucketName);
268
+ this.output.catalog = undefined;
269
+ }
270
+ if (!this.output.catalog && props.dataCatalog) {
271
+ this.output.catalog = await enableDataCatalog(api, bucketName);
272
+ }
200
273
  let domain = this.output.domain;
201
274
  if (!!domain !== allowPublicAccess) {
202
275
  domain = await putManagedDomain(api, bucketName, allowPublicAccess, props.jurisdiction);
@@ -516,4 +589,15 @@ export async function deleteObject(api, { bucketName, key }) {
516
589
  return response;
517
590
  });
518
591
  }
592
+ export async function enableDataCatalog(api, bucketName) {
593
+ const response = await extractCloudflareResult(`enable data catalog for bucket "${bucketName}"`, api.post(`/accounts/${api.accountId}/r2-catalog/${bucketName}/enable`, {}));
594
+ return {
595
+ id: response.id,
596
+ name: response.name,
597
+ host: `https://catalog.cloudflarestorage.com/${response.name.replace("_", "/")}`,
598
+ };
599
+ }
600
+ export async function disableDataCatalog(api, bucketName) {
601
+ await api.post(`/accounts/${api.accountId}/r2-catalog/${bucketName}/disable`, {});
602
+ }
519
603
  //# sourceMappingURL=bucket.js.map