alchemy 0.1.14 → 0.1.16

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 (222) hide show
  1. package/lib/apply.js +1 -1
  2. package/lib/apply.js.map +1 -1
  3. package/lib/destroy.js +9 -3
  4. package/lib/destroy.js.map +1 -1
  5. package/package.json +1 -2
  6. package/src/apply.ts +1 -1
  7. package/src/aws/table.ts +30 -8
  8. package/src/cloudflare/kv-namespace.ts +34 -15
  9. package/src/cloudflare/worker.ts +66 -41
  10. package/src/destroy.ts +15 -10
  11. package/src/utils/retry.ts +1 -0
  12. package/README.md +0 -334
  13. package/lib/$.d.ts +0 -12
  14. package/lib/$.d.ts.map +0 -1
  15. package/lib/$.js +0 -42
  16. package/lib/$.js.map +0 -1
  17. package/lib/alchemize.d.ts +0 -43
  18. package/lib/alchemize.d.ts.map +0 -1
  19. package/lib/alchemize.js +0 -112
  20. package/lib/alchemize.js.map +0 -1
  21. package/lib/apply.d.ts +0 -23
  22. package/lib/aws/account-id.d.ts +0 -5
  23. package/lib/aws/account-id.d.ts.map +0 -1
  24. package/lib/aws/account-id.js +0 -10
  25. package/lib/aws/account-id.js.map +0 -1
  26. package/lib/aws/bucket.d.ts +0 -21
  27. package/lib/aws/bucket.d.ts.map +0 -1
  28. package/lib/aws/bucket.js +0 -114
  29. package/lib/aws/bucket.js.map +0 -1
  30. package/lib/aws/function.d.ts +0 -53
  31. package/lib/aws/function.d.ts.map +0 -1
  32. package/lib/aws/function.js +0 -195
  33. package/lib/aws/function.js.map +0 -1
  34. package/lib/aws/index.d.ts +0 -9
  35. package/lib/aws/index.d.ts.map +0 -1
  36. package/lib/aws/index.js +0 -9
  37. package/lib/aws/index.js.map +0 -1
  38. package/lib/aws/oidc/github-oidc-provider.d.ts +0 -11
  39. package/lib/aws/oidc/github-oidc-provider.d.ts.map +0 -1
  40. package/lib/aws/oidc/github-oidc-provider.js +0 -22
  41. package/lib/aws/oidc/github-oidc-provider.js.map +0 -1
  42. package/lib/aws/oidc/index.d.ts +0 -3
  43. package/lib/aws/oidc/index.d.ts.map +0 -1
  44. package/lib/aws/oidc/index.js +0 -3
  45. package/lib/aws/oidc/index.js.map +0 -1
  46. package/lib/aws/oidc/oidc-provider.d.ts +0 -60
  47. package/lib/aws/oidc/oidc-provider.d.ts.map +0 -1
  48. package/lib/aws/oidc/oidc-provider.js +0 -140
  49. package/lib/aws/oidc/oidc-provider.js.map +0 -1
  50. package/lib/aws/policy.d.ts +0 -46
  51. package/lib/aws/policy.d.ts.map +0 -1
  52. package/lib/aws/policy.js +0 -139
  53. package/lib/aws/policy.js.map +0 -1
  54. package/lib/aws/queue.d.ts +0 -62
  55. package/lib/aws/queue.d.ts.map +0 -1
  56. package/lib/aws/queue.js +0 -167
  57. package/lib/aws/queue.js.map +0 -1
  58. package/lib/aws/role.d.ts +0 -27
  59. package/lib/aws/role.d.ts.map +0 -1
  60. package/lib/aws/role.js +0 -197
  61. package/lib/aws/role.js.map +0 -1
  62. package/lib/aws/ses.d.ts +0 -75
  63. package/lib/aws/ses.d.ts.map +0 -1
  64. package/lib/aws/ses.js +0 -189
  65. package/lib/aws/ses.js.map +0 -1
  66. package/lib/aws/table.d.ts +0 -26
  67. package/lib/aws/table.d.ts.map +0 -1
  68. package/lib/aws/table.js +0 -142
  69. package/lib/aws/table.js.map +0 -1
  70. package/lib/cloudflare/api.d.ts +0 -88
  71. package/lib/cloudflare/api.d.ts.map +0 -1
  72. package/lib/cloudflare/api.js +0 -184
  73. package/lib/cloudflare/api.js.map +0 -1
  74. package/lib/cloudflare/asset-manifest.d.ts +0 -15
  75. package/lib/cloudflare/asset-manifest.d.ts.map +0 -1
  76. package/lib/cloudflare/asset-manifest.js +0 -2
  77. package/lib/cloudflare/asset-manifest.js.map +0 -1
  78. package/lib/cloudflare/auth.d.ts +0 -52
  79. package/lib/cloudflare/auth.d.ts.map +0 -1
  80. package/lib/cloudflare/auth.js +0 -114
  81. package/lib/cloudflare/auth.js.map +0 -1
  82. package/lib/cloudflare/bindings.d.ts +0 -259
  83. package/lib/cloudflare/bindings.d.ts.map +0 -1
  84. package/lib/cloudflare/bindings.js +0 -2
  85. package/lib/cloudflare/bindings.js.map +0 -1
  86. package/lib/cloudflare/durable-object-namespace.d.ts +0 -20
  87. package/lib/cloudflare/durable-object-namespace.d.ts.map +0 -1
  88. package/lib/cloudflare/durable-object-namespace.js +0 -21
  89. package/lib/cloudflare/durable-object-namespace.js.map +0 -1
  90. package/lib/cloudflare/generate-asset-manifest.d.ts +0 -3
  91. package/lib/cloudflare/generate-asset-manifest.d.ts.map +0 -1
  92. package/lib/cloudflare/generate-asset-manifest.js +0 -69
  93. package/lib/cloudflare/generate-asset-manifest.js.map +0 -1
  94. package/lib/cloudflare/index.d.ts +0 -7
  95. package/lib/cloudflare/index.d.ts.map +0 -1
  96. package/lib/cloudflare/index.js +0 -7
  97. package/lib/cloudflare/index.js.map +0 -1
  98. package/lib/cloudflare/kv-namespace.d.ts +0 -64
  99. package/lib/cloudflare/kv-namespace.d.ts.map +0 -1
  100. package/lib/cloudflare/kv-namespace.js +0 -97
  101. package/lib/cloudflare/kv-namespace.js.map +0 -1
  102. package/lib/cloudflare/state.d.ts +0 -83
  103. package/lib/cloudflare/state.d.ts.map +0 -1
  104. package/lib/cloudflare/state.js +0 -109
  105. package/lib/cloudflare/state.js.map +0 -1
  106. package/lib/cloudflare/static-site-router.d.ts +0 -19
  107. package/lib/cloudflare/static-site-router.d.ts.map +0 -1
  108. package/lib/cloudflare/static-site-router.js +0 -110
  109. package/lib/cloudflare/static-site-router.js.map +0 -1
  110. package/lib/cloudflare/static-site.d.ts +0 -166
  111. package/lib/cloudflare/static-site.d.ts.map +0 -1
  112. package/lib/cloudflare/static-site.js +0 -150
  113. package/lib/cloudflare/static-site.js.map +0 -1
  114. package/lib/cloudflare/types.d.ts +0 -52
  115. package/lib/cloudflare/types.d.ts.map +0 -1
  116. package/lib/cloudflare/types.js +0 -21
  117. package/lib/cloudflare/types.js.map +0 -1
  118. package/lib/cloudflare/upload-asset-manifest.d.ts +0 -12
  119. package/lib/cloudflare/upload-asset-manifest.d.ts.map +0 -1
  120. package/lib/cloudflare/upload-asset-manifest.js +0 -55
  121. package/lib/cloudflare/upload-asset-manifest.js.map +0 -1
  122. package/lib/cloudflare/worker-metadata.d.ts +0 -130
  123. package/lib/cloudflare/worker-metadata.d.ts.map +0 -1
  124. package/lib/cloudflare/worker-metadata.js +0 -2
  125. package/lib/cloudflare/worker-metadata.js.map +0 -1
  126. package/lib/cloudflare/worker-migration.d.ts +0 -110
  127. package/lib/cloudflare/worker-migration.d.ts.map +0 -1
  128. package/lib/cloudflare/worker-migration.js +0 -11
  129. package/lib/cloudflare/worker-migration.js.map +0 -1
  130. package/lib/cloudflare/worker.d.ts +0 -108
  131. package/lib/cloudflare/worker.d.ts.map +0 -1
  132. package/lib/cloudflare/worker.js +0 -384
  133. package/lib/cloudflare/worker.js.map +0 -1
  134. package/lib/destroy.d.ts +0 -19
  135. package/lib/error.d.ts +0 -2
  136. package/lib/error.d.ts.map +0 -1
  137. package/lib/error.js +0 -13
  138. package/lib/error.js.map +0 -1
  139. package/lib/esbuild.d.ts +0 -152
  140. package/lib/esbuild.d.ts.map +0 -1
  141. package/lib/esbuild.js +0 -67
  142. package/lib/esbuild.js.map +0 -1
  143. package/lib/fs.d.ts +0 -12
  144. package/lib/fs.d.ts.map +0 -1
  145. package/lib/fs.js +0 -41
  146. package/lib/fs.js.map +0 -1
  147. package/lib/github/client.d.ts +0 -34
  148. package/lib/github/client.d.ts.map +0 -1
  149. package/lib/github/client.js +0 -91
  150. package/lib/github/client.js.map +0 -1
  151. package/lib/github/index.d.ts +0 -2
  152. package/lib/github/index.d.ts.map +0 -1
  153. package/lib/github/index.js +0 -2
  154. package/lib/github/index.js.map +0 -1
  155. package/lib/github/secret.d.ts +0 -46
  156. package/lib/github/secret.d.ts.map +0 -1
  157. package/lib/github/secret.js +0 -103
  158. package/lib/github/secret.js.map +0 -1
  159. package/lib/global.d.ts +0 -16
  160. package/lib/global.d.ts.map +0 -1
  161. package/lib/global.js +0 -42
  162. package/lib/global.js.map +0 -1
  163. package/lib/index.d.ts +0 -10
  164. package/lib/index.d.ts.map +0 -1
  165. package/lib/index.js +0 -9
  166. package/lib/index.js.map +0 -1
  167. package/lib/input.d.ts +0 -6
  168. package/lib/input.d.ts.map +0 -1
  169. package/lib/input.js +0 -2
  170. package/lib/input.js.map +0 -1
  171. package/lib/main.d.ts +0 -3
  172. package/lib/main.d.ts.map +0 -1
  173. package/lib/main.js +0 -32
  174. package/lib/main.js.map +0 -1
  175. package/lib/output.d.ts +0 -24
  176. package/lib/output.d.ts.map +0 -1
  177. package/lib/output.js +0 -23
  178. package/lib/output.js.map +0 -1
  179. package/lib/print.d.ts +0 -7
  180. package/lib/print.d.ts.map +0 -1
  181. package/lib/print.js +0 -10
  182. package/lib/print.js.map +0 -1
  183. package/lib/resource.d.ts +0 -71
  184. package/lib/resource.d.ts.map +0 -1
  185. package/lib/resource.js +0 -276
  186. package/lib/resource.js.map +0 -1
  187. package/lib/scope.d.ts +0 -18
  188. package/lib/scope.d.ts.map +0 -1
  189. package/lib/scope.js +0 -30
  190. package/lib/scope.js.map +0 -1
  191. package/lib/slug.d.ts +0 -2
  192. package/lib/slug.d.ts.map +0 -1
  193. package/lib/slug.js +0 -4
  194. package/lib/slug.js.map +0 -1
  195. package/lib/state.d.ts +0 -40
  196. package/lib/state.d.ts.map +0 -1
  197. package/lib/state.js +0 -73
  198. package/lib/state.js.map +0 -1
  199. package/lib/stripe/index.d.ts +0 -4
  200. package/lib/stripe/index.d.ts.map +0 -1
  201. package/lib/stripe/index.js +0 -4
  202. package/lib/stripe/index.js.map +0 -1
  203. package/lib/stripe/price.d.ts +0 -109
  204. package/lib/stripe/price.d.ts.map +0 -1
  205. package/lib/stripe/price.js +0 -112
  206. package/lib/stripe/price.js.map +0 -1
  207. package/lib/stripe/product.d.ts +0 -86
  208. package/lib/stripe/product.d.ts.map +0 -1
  209. package/lib/stripe/product.js +0 -90
  210. package/lib/stripe/product.js.map +0 -1
  211. package/lib/stripe/webhook.d.ts +0 -73
  212. package/lib/stripe/webhook.d.ts.map +0 -1
  213. package/lib/stripe/webhook.js +0 -94
  214. package/lib/stripe/webhook.js.map +0 -1
  215. package/lib/utils/content-type.d.ts +0 -8
  216. package/lib/utils/content-type.d.ts.map +0 -1
  217. package/lib/utils/content-type.js +0 -41
  218. package/lib/utils/content-type.js.map +0 -1
  219. package/lib/utils/retry.d.ts +0 -13
  220. package/lib/utils/retry.d.ts.map +0 -1
  221. package/lib/utils/retry.js +0 -31
  222. package/lib/utils/retry.js.map +0 -1
package/lib/apply.js CHANGED
@@ -48,7 +48,7 @@ export async function evaluate(output, options) {
48
48
  resolve(new Evaluated(result, [resourceID, ...deps]));
49
49
  }
50
50
  catch (error) {
51
- // console.error(error);
51
+ console.error(error);
52
52
  reject(error);
53
53
  }
54
54
  return promise;
package/lib/apply.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"apply.js","sourceRoot":"","sources":["../src/apply.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../src/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAe,WAAW,EAAiB,MAAM,UAAU,CAAC;AACnE,OAAO,EACL,KAAK,EACL,QAAQ,EAER,UAAU,EACV,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAwB,QAAQ,EAAE,MAAM,SAAS,CAAC;AAUzD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,MAAS,EACT,OAA+B;IAE/B,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,YAAY,CAAC;IAC7C,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAE3E,OAAO,CACL,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAC5E,CAAC,KAAoB,CAAC;AACzB,CAAC;AAED,MAAM,SAAS;IAEK;IACA;IAFlB,YACkB,KAAQ,EACR,OAAiB,EAAE;QADnB,UAAK,GAAL,KAAK,CAAG;QACR,SAAI,GAAJ,IAAI,CAAe;IAClC,CAAC;CACL;AAED,MAAM,KAAK,GAAG,IAAI,OAAO,EAAqC,CAAC;AAE/D,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAqB,EACrB,OAAqB;IAErB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,MAAM,CAAC;QACxB,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CACtD,CAAC;QAEF,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,OAAO,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QACpC,CAAC;QACD,IAAI,OAAwC,CAAC;QAC7C,IAAI,MAA8B,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACvD,OAAO,GAAG,GAAG,CAAC;YACd,MAAM,GAAG,GAAG,CAAC;QACf,CAAC,CAAC,CAAC;QACH,iFAAiF;QACjF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE7B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,MAAM,GAAM,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAC/C,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,MAAY,EACZ,UAAU,EACV,OAAO,CACR,CAAC;YACF,OAAQ,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,MAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;SAAM,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,MAGd,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpC,sGAAsG;QACtG,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,IAAI,SAAS,CAAI,SAAS,CAAC,KAAK,EAAE;YACvC,GAAG,MAAM,CAAC,IAAI;YACd,GAAG,SAAS,CAAC,IAAI;SAClB,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CACtC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAC9C,CAAC;QACF,OAAO,IAAI,SAAS,CAClB,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAiB,EAClD,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACtC,CAAC;IACJ,CAAC;SAAM,IAAI,MAAM,YAAY,IAAI,EAAE,CAAC;QAClC,OAAO,IAAI,SAAS,CAAC,MAAW,CAAC,CAAC;IACpC,CAAC;SAAM,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,GAAG,CACxC,OAAO,CAAC,GAAG,CACT,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAU,CACvE,CACF,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CACnD,CAAC;QAElB,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE1E,OAAO,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,6BAA6B;IAC7B,OAAO,IAAI,SAAS,CAAI,MAAW,CAAC,CAAC;AACvC,CAAC"}
package/lib/destroy.js CHANGED
@@ -40,9 +40,15 @@ export async function destroy(...args) {
40
40
  console.log(args[0]);
41
41
  throw new Error("Not implemented: must handle destroy a Output chain");
42
42
  }
43
- await resourceProvider.delete(stage, scope, resourceID, resourceState, resourceState.inputs, options ?? {
44
- quiet: false,
45
- });
43
+ try {
44
+ await resourceProvider.delete(stage, scope, resourceID, resourceState, resourceState.inputs, options ?? {
45
+ quiet: false,
46
+ });
47
+ }
48
+ catch (error) {
49
+ console.error(error);
50
+ throw error;
51
+ }
46
52
  await stateStore.delete(resourceID);
47
53
  }
48
54
  //# sourceMappingURL=destroy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"destroy.js","sourceRoot":"","sources":["../src/destroy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAc,SAAS,EAAE,MAAM,SAAS,CAAC;AA+BhD,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,GAAG,IAEyE;IAE5E,IAAI,UAAsB,CAAC;IAC3B,IAAI,aAAoB,CAAC;IACzB,IAAI,gBAA0B,CAAC;IAC/B,IAAI,KAAa,CAAC;IAClB,IAAI,UAAsB,CAAC;IAC3B,IAAI,KAAK,GAAsB,SAAS,CAAC;IACzC,IAAI,OAAO,GAA+B,SAAS,CAAC;IACpD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;SAAM,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,0CAA0C;QAC1C,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QAClC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,YAAY,CAAC;QACvC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,SAAS,CAAC;QACpC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC5C,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,IAAI,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACrE,iCAAiC;QACjC,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,0EAA0E;YAC1E,OAAO;QACT,CAAC;QACD,aAAa,GAAG,cAAc,CAAC;QAC/B,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,gBAAgB,CAAC,MAAM,CAC3B,KAAK,EACL,KAAK,EACL,UAAU,EACV,aAAa,EACb,aAAa,CAAC,MAAY,EAC1B,OAAO,IAAI;QACT,KAAK,EAAE,KAAK;KACb,CACF,CAAC;IACF,MAAM,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"destroy.js","sourceRoot":"","sources":["../src/destroy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAc,SAAS,EAAE,MAAM,SAAS,CAAC;AA+BhD,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,GAAG,IAEyE;IAE5E,IAAI,UAAsB,CAAC;IAC3B,IAAI,aAAoB,CAAC;IACzB,IAAI,gBAA0B,CAAC;IAC/B,IAAI,KAAa,CAAC;IAClB,IAAI,UAAsB,CAAC;IAC3B,IAAI,KAAK,GAAsB,SAAS,CAAC;IACzC,IAAI,OAAO,GAA+B,SAAS,CAAC;IACpD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;SAAM,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,0CAA0C;QAC1C,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QAClC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,YAAY,CAAC;QACvC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,SAAS,CAAC;QACpC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC5C,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,IAAI,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACrE,iCAAiC;QACjC,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,0EAA0E;YAC1E,OAAO;QACT,CAAC;QACD,aAAa,GAAG,cAAc,CAAC;QAC/B,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,CAAC;QACH,MAAM,gBAAgB,CAAC,MAAM,CAC3B,KAAK,EACL,KAAK,EACL,UAAU,EACV,aAAa,EACb,aAAa,CAAC,MAAY,EAC1B,OAAO,IAAI;YACT,KAAK,EAAE,KAAK;SACb,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,KAAK,CAAC;IACd,CAAC;IACD,MAAM,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACtC,CAAC"}
package/package.json CHANGED
@@ -1,10 +1,9 @@
1
1
  {
2
2
  "name": "alchemy",
3
- "version": "0.1.14",
3
+ "version": "0.1.16",
4
4
  "type": "module",
5
5
  "module": "./lib/index.js",
6
6
  "scripts": {
7
- "check": "tsc -b ./tsconfig.all.json",
8
7
  "publish:npm": "rm -rf ./lib && tsc -b && npm publish"
9
8
  },
10
9
  "files": ["lib", "src"],
package/src/apply.ts CHANGED
@@ -83,7 +83,7 @@ export async function evaluate<T>(
83
83
  );
84
84
  resolve!(new Evaluated(result, [resourceID, ...deps]));
85
85
  } catch (error) {
86
- // console.error(error);
86
+ console.error(error);
87
87
  reject!(error);
88
88
  }
89
89
  return promise;
package/src/aws/table.ts CHANGED
@@ -3,6 +3,7 @@ import {
3
3
  DeleteTableCommand,
4
4
  DescribeTableCommand,
5
5
  DynamoDBClient,
6
+ InternalServerError,
6
7
  type KeySchemaElement,
7
8
  ResourceInUseException,
8
9
  ResourceNotFoundException,
@@ -43,17 +44,29 @@ export class Table extends Resource(
43
44
  const client = new DynamoDBClient({});
44
45
 
45
46
  if (ctx.event === "delete") {
46
- await ignore(ResourceNotFoundException.name, () =>
47
- client.send(
48
- new DeleteTableCommand({
49
- TableName: props.tableName,
50
- }),
51
- ),
47
+ await withExponentialBackoff(
48
+ async () => {
49
+ await ignore(ResourceNotFoundException.name, () =>
50
+ client.send(
51
+ new DeleteTableCommand({
52
+ TableName: props.tableName,
53
+ }),
54
+ ),
55
+ );
56
+ },
57
+ (error) =>
58
+ error instanceof ResourceInUseException ||
59
+ error instanceof InternalServerError,
60
+ 10, // Max attempts
61
+ 200, // Initial delay in ms
52
62
  );
53
63
 
54
64
  // Wait for table to be deleted
55
65
  let tableDeleted = false;
56
- while (!tableDeleted) {
66
+ let retryCount = 0;
67
+ const maxRetries = 60; // Wait up to 60 seconds
68
+
69
+ while (!tableDeleted && retryCount < maxRetries) {
57
70
  try {
58
71
  await client.send(
59
72
  new DescribeTableCommand({
@@ -61,7 +74,10 @@ export class Table extends Resource(
61
74
  }),
62
75
  );
63
76
  // If we get here, table still exists
64
- await new Promise((resolve) => setTimeout(resolve, 1000));
77
+ retryCount++;
78
+ // Increasing delay for each retry with some jitter
79
+ const delay = Math.min(1000 * (1 + 0.1 * Math.random()), 5000);
80
+ await new Promise((resolve) => setTimeout(resolve, delay));
65
81
  } catch (error) {
66
82
  if (error instanceof ResourceNotFoundException) {
67
83
  tableDeleted = true;
@@ -71,6 +87,12 @@ export class Table extends Resource(
71
87
  }
72
88
  }
73
89
 
90
+ if (!tableDeleted) {
91
+ throw new Error(
92
+ `Timed out waiting for table ${props.tableName} to be deleted`,
93
+ );
94
+ }
95
+
74
96
  return;
75
97
  } else {
76
98
  // Setup for table creation
@@ -1,5 +1,6 @@
1
1
  import type { Resolved } from "../output";
2
2
  import { type Context, Resource } from "../resource";
3
+ import { withExponentialBackoff } from "../utils/retry";
3
4
  import { createCloudflareApi } from "./api";
4
5
 
5
6
  /**
@@ -86,7 +87,6 @@ export class KVNamespace extends Resource(
86
87
  if (ctx.event === "delete") {
87
88
  // For delete operations, we need to check if the namespace ID exists in the output
88
89
  const namespaceId = ctx.output?.id;
89
-
90
90
  if (namespaceId) {
91
91
  // Delete KV namespace
92
92
  const deleteResponse = await api.delete(
@@ -97,9 +97,8 @@ export class KVNamespace extends Resource(
97
97
  const errorData: any = await deleteResponse.json().catch(() => ({
98
98
  errors: [{ message: deleteResponse.statusText }],
99
99
  }));
100
- console.error(
101
- "Error deleting KV namespace:",
102
- errorData.errors?.[0]?.message || deleteResponse.statusText,
100
+ throw new Error(
101
+ `Error deleting KV namespace '${props.title}': ${errorData.errors?.[0]?.message || deleteResponse.statusText}`,
103
102
  );
104
103
  }
105
104
  }
@@ -172,18 +171,38 @@ export class KVNamespace extends Resource(
172
171
  return item;
173
172
  });
174
173
 
175
- const bulkResponse = await api.put(
176
- `/accounts/${api.accountId}/storage/kv/namespaces/${namespaceId}/bulk`,
177
- bulkPayload,
178
- );
179
-
180
- if (!bulkResponse.ok) {
181
- const errorData: any = await bulkResponse.json().catch(() => ({
182
- errors: [{ message: bulkResponse.statusText }],
183
- }));
184
- console.warn(
185
- `Error writing KV batch: ${errorData.errors?.[0]?.message || bulkResponse.statusText}`,
174
+ try {
175
+ await withExponentialBackoff(
176
+ async () => {
177
+ const bulkResponse = await api.put(
178
+ `/accounts/${api.accountId}/storage/kv/namespaces/${namespaceId}/bulk`,
179
+ bulkPayload,
180
+ );
181
+
182
+ if (!bulkResponse.ok) {
183
+ const errorData: any = await bulkResponse
184
+ .json()
185
+ .catch(() => ({
186
+ errors: [{ message: bulkResponse.statusText }],
187
+ }));
188
+ const errorMessage =
189
+ errorData.errors?.[0]?.message || bulkResponse.statusText;
190
+
191
+ // Throw error to trigger retry
192
+ throw new Error(`Error writing KV batch: ${errorMessage}`);
193
+ }
194
+
195
+ return bulkResponse;
196
+ },
197
+ (error) => {
198
+ // Retry on "namespace not found" errors as they're likely propagation delays
199
+ return error.message?.includes("not found");
200
+ },
201
+ 5, // 5 retry attempts
202
+ 1000, // Start with 1 second delay
186
203
  );
204
+ } catch (error: any) {
205
+ console.warn(error.message);
187
206
  }
188
207
  }
189
208
  }
@@ -3,6 +3,7 @@ import { apply } from "../apply";
3
3
  import { Bundle, type BundleProps } from "../esbuild";
4
4
  import type { Resolved } from "../output";
5
5
  import { type Context, Resource } from "../resource";
6
+ import { withExponentialBackoff } from "../utils/retry";
6
7
  import { type CloudflareApi, createCloudflareApi } from "./api";
7
8
  import type { Bindings, WorkerBindingSpec } from "./bindings";
8
9
  import type { DurableObjectNamespace } from "./durable-object-namespace";
@@ -276,54 +277,78 @@ async function putWorker(
276
277
  scriptContent: string,
277
278
  scriptMetadata: WorkerMetadata,
278
279
  ) {
279
- const scriptName = scriptMetadata.main_module ?? scriptMetadata.body_part!;
280
-
281
- // Create FormData for the upload
282
- const formData = new FormData();
283
-
284
- // Add the actual script content as a named file part
285
- formData.append(
286
- scriptName,
287
- new Blob([scriptContent], {
288
- type: scriptMetadata.main_module
289
- ? "application/javascript+module"
290
- : "application/javascript",
291
- }),
292
- scriptName,
293
- );
280
+ return withExponentialBackoff(
281
+ async () => {
282
+ const scriptName =
283
+ scriptMetadata.main_module ?? scriptMetadata.body_part!;
284
+
285
+ // Create FormData for the upload
286
+ const formData = new FormData();
287
+
288
+ // Add the actual script content as a named file part
289
+ formData.append(
290
+ scriptName,
291
+ new Blob([scriptContent], {
292
+ type: scriptMetadata.main_module
293
+ ? "application/javascript+module"
294
+ : "application/javascript",
295
+ }),
296
+ scriptName,
297
+ );
294
298
 
295
- // console.log("Script Metadata:", JSON.stringify(scriptMetadata, null, 2));
299
+ // console.log("Script Metadata:", JSON.stringify(scriptMetadata, null, 2));
296
300
 
297
- // Add metadata as JSON
298
- formData.append(
299
- "metadata",
300
- new Blob([JSON.stringify(scriptMetadata)], {
301
- type: "application/json",
302
- }),
303
- );
301
+ // Add metadata as JSON
302
+ formData.append(
303
+ "metadata",
304
+ new Blob([JSON.stringify(scriptMetadata)], {
305
+ type: "application/json",
306
+ }),
307
+ );
304
308
 
305
- // Upload worker script with bindings
306
- const uploadResponse = await api.put(
307
- `/accounts/${api.accountId}/workers/scripts/${workerName}`,
308
- formData,
309
- {
310
- headers: {
311
- "Content-Type": "multipart/form-data",
312
- },
309
+ await new Promise((resolve) => setTimeout(resolve, 1000));
310
+
311
+ // Upload worker script with bindings
312
+ const uploadResponse = await api.put(
313
+ `/accounts/${api.accountId}/workers/scripts/${workerName}`,
314
+ formData,
315
+ {
316
+ headers: {
317
+ "Content-Type": "multipart/form-data",
318
+ },
319
+ },
320
+ );
321
+
322
+ // Check if the upload was successful
323
+ if (!uploadResponse.ok) {
324
+ const errorData: any = await uploadResponse
325
+ .json()
326
+ .catch(() => ({ errors: [{ message: uploadResponse.statusText }] }));
327
+
328
+ const errorMessage = `Error (HTTP ${uploadResponse.status}) uploading worker script '${workerName}': ${errorData.errors?.[0]?.message || uploadResponse.statusText}`;
329
+
330
+ if (
331
+ uploadResponse.status === 400 &&
332
+ errorMessage.includes("not found")
333
+ ) {
334
+ throw new NotFoundError(errorMessage);
335
+ }
336
+ throw new Error(errorMessage);
337
+ }
338
+
339
+ return formData;
313
340
  },
341
+ (err) => err instanceof NotFoundError,
342
+ 10,
343
+ 100,
314
344
  );
345
+ }
315
346
 
316
- // Check if the upload was successful
317
- if (!uploadResponse.ok) {
318
- const errorData: any = await uploadResponse
319
- .json()
320
- .catch(() => ({ errors: [{ message: uploadResponse.statusText }] }));
321
- throw new Error(
322
- `Error uploading worker script '${workerName}': ${errorData.errors?.[0]?.message || uploadResponse.statusText}`,
323
- );
347
+ class NotFoundError extends Error {
348
+ constructor(message: string) {
349
+ super(message);
350
+ this.name = "NotFoundError";
324
351
  }
325
-
326
- return formData;
327
352
  }
328
353
 
329
354
  interface WorkerMetadata {
package/src/destroy.ts CHANGED
@@ -73,15 +73,20 @@ export async function destroy<T>(
73
73
  console.log(args[0]);
74
74
  throw new Error("Not implemented: must handle destroy a Output chain");
75
75
  }
76
- await resourceProvider.delete(
77
- stage,
78
- scope,
79
- resourceID,
80
- resourceState,
81
- resourceState.inputs as [],
82
- options ?? {
83
- quiet: false,
84
- },
85
- );
76
+ try {
77
+ await resourceProvider.delete(
78
+ stage,
79
+ scope,
80
+ resourceID,
81
+ resourceState,
82
+ resourceState.inputs as [],
83
+ options ?? {
84
+ quiet: false,
85
+ },
86
+ );
87
+ } catch (error) {
88
+ console.error(error);
89
+ throw error;
90
+ }
86
91
  await stateStore.delete(resourceID);
87
92
  }
@@ -24,6 +24,7 @@ export async function withExponentialBackoff<T>(
24
24
  } catch (error) {
25
25
  attempt++;
26
26
  if (attempt >= maxAttempts || !isRetryable(error)) {
27
+ console.warn("Failed after ", attempt, " attempts");
27
28
  throw error;
28
29
  }
29
30