alchemy 0.1.16 → 0.1.17

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 (220) hide show
  1. package/lib/$.d.ts +12 -0
  2. package/lib/$.d.ts.map +1 -0
  3. package/lib/$.js +42 -0
  4. package/lib/$.js.map +1 -0
  5. package/lib/alchemize.d.ts +43 -0
  6. package/lib/alchemize.d.ts.map +1 -0
  7. package/lib/alchemize.js +112 -0
  8. package/lib/alchemize.js.map +1 -0
  9. package/lib/apply.d.ts +23 -0
  10. package/lib/aws/account-id.d.ts +5 -0
  11. package/lib/aws/account-id.d.ts.map +1 -0
  12. package/lib/aws/account-id.js +10 -0
  13. package/lib/aws/account-id.js.map +1 -0
  14. package/lib/aws/bucket.d.ts +21 -0
  15. package/lib/aws/bucket.d.ts.map +1 -0
  16. package/lib/aws/bucket.js +114 -0
  17. package/lib/aws/bucket.js.map +1 -0
  18. package/lib/aws/function.d.ts +53 -0
  19. package/lib/aws/function.d.ts.map +1 -0
  20. package/lib/aws/function.js +195 -0
  21. package/lib/aws/function.js.map +1 -0
  22. package/lib/aws/index.d.ts +9 -0
  23. package/lib/aws/index.d.ts.map +1 -0
  24. package/lib/aws/index.js +9 -0
  25. package/lib/aws/index.js.map +1 -0
  26. package/lib/aws/oidc/github-oidc-provider.d.ts +11 -0
  27. package/lib/aws/oidc/github-oidc-provider.d.ts.map +1 -0
  28. package/lib/aws/oidc/github-oidc-provider.js +22 -0
  29. package/lib/aws/oidc/github-oidc-provider.js.map +1 -0
  30. package/lib/aws/oidc/index.d.ts +3 -0
  31. package/lib/aws/oidc/index.d.ts.map +1 -0
  32. package/lib/aws/oidc/index.js +3 -0
  33. package/lib/aws/oidc/index.js.map +1 -0
  34. package/lib/aws/oidc/oidc-provider.d.ts +60 -0
  35. package/lib/aws/oidc/oidc-provider.d.ts.map +1 -0
  36. package/lib/aws/oidc/oidc-provider.js +140 -0
  37. package/lib/aws/oidc/oidc-provider.js.map +1 -0
  38. package/lib/aws/policy.d.ts +46 -0
  39. package/lib/aws/policy.d.ts.map +1 -0
  40. package/lib/aws/policy.js +139 -0
  41. package/lib/aws/policy.js.map +1 -0
  42. package/lib/aws/queue.d.ts +62 -0
  43. package/lib/aws/queue.d.ts.map +1 -0
  44. package/lib/aws/queue.js +167 -0
  45. package/lib/aws/queue.js.map +1 -0
  46. package/lib/aws/role.d.ts +27 -0
  47. package/lib/aws/role.d.ts.map +1 -0
  48. package/lib/aws/role.js +197 -0
  49. package/lib/aws/role.js.map +1 -0
  50. package/lib/aws/ses.d.ts +75 -0
  51. package/lib/aws/ses.d.ts.map +1 -0
  52. package/lib/aws/ses.js +189 -0
  53. package/lib/aws/ses.js.map +1 -0
  54. package/lib/aws/table.d.ts +26 -0
  55. package/lib/aws/table.d.ts.map +1 -0
  56. package/lib/aws/table.js +154 -0
  57. package/lib/aws/table.js.map +1 -0
  58. package/lib/cloudflare/api.d.ts +88 -0
  59. package/lib/cloudflare/api.d.ts.map +1 -0
  60. package/lib/cloudflare/api.js +184 -0
  61. package/lib/cloudflare/api.js.map +1 -0
  62. package/lib/cloudflare/asset-manifest.d.ts +15 -0
  63. package/lib/cloudflare/asset-manifest.d.ts.map +1 -0
  64. package/lib/cloudflare/asset-manifest.js +2 -0
  65. package/lib/cloudflare/asset-manifest.js.map +1 -0
  66. package/lib/cloudflare/auth.d.ts +52 -0
  67. package/lib/cloudflare/auth.d.ts.map +1 -0
  68. package/lib/cloudflare/auth.js +114 -0
  69. package/lib/cloudflare/auth.js.map +1 -0
  70. package/lib/cloudflare/bindings.d.ts +260 -0
  71. package/lib/cloudflare/bindings.d.ts.map +1 -0
  72. package/lib/cloudflare/bindings.js +2 -0
  73. package/lib/cloudflare/bindings.js.map +1 -0
  74. package/lib/cloudflare/bucket.d.ts +54 -0
  75. package/lib/cloudflare/bucket.d.ts.map +1 -0
  76. package/lib/cloudflare/bucket.js +120 -0
  77. package/lib/cloudflare/bucket.js.map +1 -0
  78. package/lib/cloudflare/durable-object-namespace.d.ts +20 -0
  79. package/lib/cloudflare/durable-object-namespace.d.ts.map +1 -0
  80. package/lib/cloudflare/durable-object-namespace.js +21 -0
  81. package/lib/cloudflare/durable-object-namespace.js.map +1 -0
  82. package/lib/cloudflare/generate-asset-manifest.d.ts +3 -0
  83. package/lib/cloudflare/generate-asset-manifest.d.ts.map +1 -0
  84. package/lib/cloudflare/generate-asset-manifest.js +69 -0
  85. package/lib/cloudflare/generate-asset-manifest.js.map +1 -0
  86. package/lib/cloudflare/index.d.ts +8 -0
  87. package/lib/cloudflare/index.d.ts.map +1 -0
  88. package/lib/cloudflare/index.js +8 -0
  89. package/lib/cloudflare/index.js.map +1 -0
  90. package/lib/cloudflare/kv-namespace.d.ts +64 -0
  91. package/lib/cloudflare/kv-namespace.d.ts.map +1 -0
  92. package/lib/cloudflare/kv-namespace.js +114 -0
  93. package/lib/cloudflare/kv-namespace.js.map +1 -0
  94. package/lib/cloudflare/state.d.ts +83 -0
  95. package/lib/cloudflare/state.d.ts.map +1 -0
  96. package/lib/cloudflare/state.js +109 -0
  97. package/lib/cloudflare/state.js.map +1 -0
  98. package/lib/cloudflare/static-site-router.d.ts +19 -0
  99. package/lib/cloudflare/static-site-router.d.ts.map +1 -0
  100. package/lib/cloudflare/static-site-router.js +110 -0
  101. package/lib/cloudflare/static-site-router.js.map +1 -0
  102. package/lib/cloudflare/static-site.d.ts +166 -0
  103. package/lib/cloudflare/static-site.d.ts.map +1 -0
  104. package/lib/cloudflare/static-site.js +161 -0
  105. package/lib/cloudflare/static-site.js.map +1 -0
  106. package/lib/cloudflare/types.d.ts +52 -0
  107. package/lib/cloudflare/types.d.ts.map +1 -0
  108. package/lib/cloudflare/types.js +21 -0
  109. package/lib/cloudflare/types.js.map +1 -0
  110. package/lib/cloudflare/upload-asset-manifest.d.ts +12 -0
  111. package/lib/cloudflare/upload-asset-manifest.d.ts.map +1 -0
  112. package/lib/cloudflare/upload-asset-manifest.js +55 -0
  113. package/lib/cloudflare/upload-asset-manifest.js.map +1 -0
  114. package/lib/cloudflare/worker-metadata.d.ts +130 -0
  115. package/lib/cloudflare/worker-metadata.d.ts.map +1 -0
  116. package/lib/cloudflare/worker-metadata.js +2 -0
  117. package/lib/cloudflare/worker-metadata.js.map +1 -0
  118. package/lib/cloudflare/worker-migration.d.ts +110 -0
  119. package/lib/cloudflare/worker-migration.d.ts.map +1 -0
  120. package/lib/cloudflare/worker-migration.js +11 -0
  121. package/lib/cloudflare/worker-migration.js.map +1 -0
  122. package/lib/cloudflare/worker.d.ts +108 -0
  123. package/lib/cloudflare/worker.d.ts.map +1 -0
  124. package/lib/cloudflare/worker.js +407 -0
  125. package/lib/cloudflare/worker.js.map +1 -0
  126. package/lib/destroy.d.ts +19 -0
  127. package/lib/error.d.ts +2 -0
  128. package/lib/error.d.ts.map +1 -0
  129. package/lib/error.js +13 -0
  130. package/lib/error.js.map +1 -0
  131. package/lib/esbuild.d.ts +152 -0
  132. package/lib/esbuild.d.ts.map +1 -0
  133. package/lib/esbuild.js +67 -0
  134. package/lib/esbuild.js.map +1 -0
  135. package/lib/fs.d.ts +12 -0
  136. package/lib/fs.d.ts.map +1 -0
  137. package/lib/fs.js +41 -0
  138. package/lib/fs.js.map +1 -0
  139. package/lib/github/client.d.ts +34 -0
  140. package/lib/github/client.d.ts.map +1 -0
  141. package/lib/github/client.js +91 -0
  142. package/lib/github/client.js.map +1 -0
  143. package/lib/github/index.d.ts +2 -0
  144. package/lib/github/index.d.ts.map +1 -0
  145. package/lib/github/index.js +2 -0
  146. package/lib/github/index.js.map +1 -0
  147. package/lib/github/secret.d.ts +46 -0
  148. package/lib/github/secret.d.ts.map +1 -0
  149. package/lib/github/secret.js +103 -0
  150. package/lib/github/secret.js.map +1 -0
  151. package/lib/global.d.ts +16 -0
  152. package/lib/global.d.ts.map +1 -0
  153. package/lib/global.js +42 -0
  154. package/lib/global.js.map +1 -0
  155. package/lib/index.d.ts +10 -0
  156. package/lib/index.d.ts.map +1 -0
  157. package/lib/index.js +9 -0
  158. package/lib/index.js.map +1 -0
  159. package/lib/input.d.ts +6 -0
  160. package/lib/input.d.ts.map +1 -0
  161. package/lib/input.js +2 -0
  162. package/lib/input.js.map +1 -0
  163. package/lib/main.d.ts +3 -0
  164. package/lib/main.d.ts.map +1 -0
  165. package/lib/main.js +32 -0
  166. package/lib/main.js.map +1 -0
  167. package/lib/output.d.ts +24 -0
  168. package/lib/output.d.ts.map +1 -0
  169. package/lib/output.js +23 -0
  170. package/lib/output.js.map +1 -0
  171. package/lib/print.d.ts +7 -0
  172. package/lib/print.d.ts.map +1 -0
  173. package/lib/print.js +10 -0
  174. package/lib/print.js.map +1 -0
  175. package/lib/resource.d.ts +71 -0
  176. package/lib/resource.d.ts.map +1 -0
  177. package/lib/resource.js +276 -0
  178. package/lib/resource.js.map +1 -0
  179. package/lib/scope.d.ts +18 -0
  180. package/lib/scope.d.ts.map +1 -0
  181. package/lib/scope.js +30 -0
  182. package/lib/scope.js.map +1 -0
  183. package/lib/slug.d.ts +2 -0
  184. package/lib/slug.d.ts.map +1 -0
  185. package/lib/slug.js +4 -0
  186. package/lib/slug.js.map +1 -0
  187. package/lib/state.d.ts +40 -0
  188. package/lib/state.d.ts.map +1 -0
  189. package/lib/state.js +73 -0
  190. package/lib/state.js.map +1 -0
  191. package/lib/stripe/index.d.ts +4 -0
  192. package/lib/stripe/index.d.ts.map +1 -0
  193. package/lib/stripe/index.js +4 -0
  194. package/lib/stripe/index.js.map +1 -0
  195. package/lib/stripe/price.d.ts +109 -0
  196. package/lib/stripe/price.d.ts.map +1 -0
  197. package/lib/stripe/price.js +112 -0
  198. package/lib/stripe/price.js.map +1 -0
  199. package/lib/stripe/product.d.ts +86 -0
  200. package/lib/stripe/product.d.ts.map +1 -0
  201. package/lib/stripe/product.js +90 -0
  202. package/lib/stripe/product.js.map +1 -0
  203. package/lib/stripe/webhook.d.ts +73 -0
  204. package/lib/stripe/webhook.d.ts.map +1 -0
  205. package/lib/stripe/webhook.js +94 -0
  206. package/lib/stripe/webhook.js.map +1 -0
  207. package/lib/utils/content-type.d.ts +8 -0
  208. package/lib/utils/content-type.d.ts.map +1 -0
  209. package/lib/utils/content-type.js +41 -0
  210. package/lib/utils/content-type.js.map +1 -0
  211. package/lib/utils/retry.d.ts +13 -0
  212. package/lib/utils/retry.d.ts.map +1 -0
  213. package/lib/utils/retry.js +32 -0
  214. package/lib/utils/retry.js.map +1 -0
  215. package/package.json +1 -1
  216. package/src/cloudflare/bindings.ts +7 -1
  217. package/src/cloudflare/bucket.ts +240 -0
  218. package/src/cloudflare/index.ts +1 -0
  219. package/src/cloudflare/static-site.ts +13 -1
  220. package/src/cloudflare/worker.ts +7 -0
package/lib/$.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ import type { Input } from "./input";
2
+ import { type Output } from "./output";
3
+ export type $<T> = T extends undefined | null | boolean | number | string | symbol | bigint ? Input<T> : T extends (...args: infer Args extends any[]) => infer R ? (...args: {
4
+ [i in keyof Args]: $<Args[i]>;
5
+ }) => Output<Awaited<R>> : T extends any[] ? $array<T> : $object<T>;
6
+ type $object<T> = {
7
+ [i in keyof T]: $<T[i]>;
8
+ };
9
+ type $array<T extends any[]> = T extends [infer First, ...infer Rest] ? [$<First>, ...$object<Rest>] : [];
10
+ export declare function $<T>(value: T): $<T>;
11
+ export {};
12
+ //# sourceMappingURL=$.d.ts.map
package/lib/$.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"$.d.ts","sourceRoot":"","sources":["../src/$.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,MAAM,EAAe,MAAM,UAAU,CAAC;AAGpD,MAAM,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAChB,SAAS,GACT,IAAI,GACJ,OAAO,GACP,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,KAAK,CAAC,CAAC,CAAC,GACR,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,IAAI,SAAS,GAAG,EAAE,KAAK,MAAM,CAAC,GACtD,CACE,GAAG,IAAI,EAAE;KACN,CAAC,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC9B,KACE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GACvB,CAAC,SAAS,GAAG,EAAE,GACb,MAAM,CAAC,CAAC,CAAC,GACT,OAAO,CAAC,CAAC,CAAC,CAAC;AAEnB,KAAK,OAAO,CAAC,CAAC,IAAI;KACf,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACxB,CAAC;AACF,KAAK,MAAM,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,GACjE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAC5B,EAAE,CAAC;AAEP,wBAAgB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAsCnC"}
package/lib/$.js ADDED
@@ -0,0 +1,42 @@
1
+ import { OutputChain } from "./output";
2
+ import { getScope } from "./scope";
3
+ export function $(value) {
4
+ return new Proxy(() => { }, {
5
+ apply: (_, thisArg, args) => {
6
+ const target = value;
7
+ let argsOutput;
8
+ for (const arg of args) {
9
+ if (arg instanceof OutputChain) {
10
+ if (argsOutput) {
11
+ argsOutput = arg.apply((arg) => argsOutput.apply((...args) => [...args, arg]));
12
+ }
13
+ else {
14
+ argsOutput = arg.apply((arg) => [arg]);
15
+ }
16
+ }
17
+ else {
18
+ if (argsOutput) {
19
+ argsOutput = argsOutput.apply((args) => [...args, arg]);
20
+ }
21
+ else {
22
+ argsOutput = new OutputChain({}, () => [arg]);
23
+ }
24
+ }
25
+ }
26
+ const scope = getScope();
27
+ const output = argsOutput
28
+ ? argsOutput.apply((args) => target(...args))
29
+ : new OutputChain({}, () => target());
30
+ scope.callbacks.push(output);
31
+ return $(output);
32
+ },
33
+ get: (_, prop) => {
34
+ const target = value;
35
+ if (target instanceof OutputChain) {
36
+ return $(target.apply((t) => t[prop]));
37
+ }
38
+ return $(target[prop]);
39
+ },
40
+ });
41
+ }
42
+ //# sourceMappingURL=$.js.map
package/lib/$.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"$.js","sourceRoot":"","sources":["../src/$.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,WAAW,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AA4BnC,MAAM,UAAU,CAAC,CAAI,KAAQ;IAC3B,OAAO,IAAI,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,EAAE;QACzB,KAAK,EAAE,CAAC,CAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;YAC7B,MAAM,MAAM,GAAG,KAAgC,CAAC;YAChD,IAAI,UAAqC,CAAC;YAC1C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;oBAC/B,IAAI,UAAU,EAAE,CAAC;wBACf,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAC7B,UAAW,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,CAC/C,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACzC,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,UAAU,EAAE,CAAC;wBACf,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;oBAC1D,CAAC;yBAAM,CAAC;wBACN,UAAU,GAAG,IAAI,WAAW,CAAC,EAAS,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,UAAU;gBACvB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC7C,CAAC,CAAC,IAAI,WAAW,CAAC,EAAS,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/C,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7B,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;QACD,GAAG,EAAE,CAAC,CAAM,EAAE,IAAI,EAAE,EAAE;YACpB,MAAM,MAAM,GAAG,KAAY,CAAC;YAC5B,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;gBAClC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzC,CAAC;YACD,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACzB,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { type Scope } from "./scope";
2
+ import type { StateStoreType } from "./state";
3
+ export interface AlchemizeOptions {
4
+ /**
5
+ * Determines whether the resources will be created/updated or deleted.
6
+ *
7
+ * @default "up"
8
+ */
9
+ mode?: "up" | "destroy";
10
+ /**
11
+ * Name to scope the resource state under (e.g. `.alchemy/{stage}/..`).
12
+ *
13
+ * @default - your POSIX username
14
+ */
15
+ stage?: string;
16
+ /**
17
+ * If true, will not prune resources that were dropped from the root stack.
18
+ *
19
+ * @default true
20
+ */
21
+ destroyOrphans?: boolean;
22
+ /**
23
+ * A custom state store to use instead of the default file system store.
24
+ */
25
+ stateStore?: StateStoreType;
26
+ /**
27
+ * A custom scope to use instead of the default root scope.
28
+ */
29
+ scope?: Scope;
30
+ /**
31
+ * If true, will not print any Create/Update/Delete messages.
32
+ *
33
+ * @default false
34
+ */
35
+ quiet?: boolean;
36
+ }
37
+ /**
38
+ * Explicitly finalize the program by deleting any resources that were dropped from the root stack.
39
+ *
40
+ * By default, this will be called when
41
+ */
42
+ export declare function alchemize(options?: AlchemizeOptions): Promise<void>;
43
+ //# sourceMappingURL=alchemize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alchemize.d.ts","sourceRoot":"","sources":["../src/alchemize.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,KAAK,EAAY,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACxB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,iBAsIzD"}
@@ -0,0 +1,112 @@
1
+ import { evaluate } from "./apply";
2
+ import { destroy } from "./destroy";
3
+ import { defaultStage, defaultStateStore, providers } from "./global";
4
+ import { getScope } from "./scope";
5
+ /**
6
+ * Explicitly finalize the program by deleting any resources that were dropped from the root stack.
7
+ *
8
+ * By default, this will be called when
9
+ */
10
+ export async function alchemize(options) {
11
+ const scope = options?.scope ?? getScope();
12
+ const nodes = scope.nodes;
13
+ const stage = options?.stage ?? defaultStage;
14
+ const stateStore = new (options?.stateStore ?? defaultStateStore)(scope.getScopePath(stage));
15
+ const callbacks = scope.callbacks;
16
+ if (nodes.size > 0) {
17
+ await stateStore.init?.();
18
+ }
19
+ // Track in-progress deletions to avoid duplicate work
20
+ const deletionPromises = new Map();
21
+ const priorStates = await stateStore.all();
22
+ const priorIDs = Object.keys(priorStates);
23
+ const mode = options?.mode ?? "up";
24
+ if (mode === "up") {
25
+ await Promise.allSettled(Array.from(nodes.values())
26
+ .reverse()
27
+ .map((node) => evaluate(node.resource, {
28
+ stage,
29
+ scope,
30
+ stateStore,
31
+ quiet: options?.quiet,
32
+ })));
33
+ if (options?.destroyOrphans === false) {
34
+ return;
35
+ }
36
+ await Promise.all(callbacks.map((callback) => evaluate(callback, {
37
+ stage,
38
+ scope,
39
+ stateStore,
40
+ quiet: options?.quiet,
41
+ })));
42
+ }
43
+ const aliveIDs = new Set(mode === "up"
44
+ ? nodes.keys()
45
+ : // There are no alive resources in destroy mode
46
+ []);
47
+ const orphanIDs = Array.from(priorIDs).filter((id) => !aliveIDs.has(id));
48
+ const orphanStates = Object.fromEntries(orphanIDs.map((id) => [id, priorStates[id]]));
49
+ // compute a map of resourceID -> upstream dependencies (resources that depend on it)
50
+ const orphanGraph = {};
51
+ for (const [orphanID, orphanState] of Object.entries(orphanStates)) {
52
+ orphanGraph[orphanID] ??= new Set();
53
+ for (const dep of orphanState.deps) {
54
+ (orphanGraph[dep] ??= new Set()).add(orphanID);
55
+ }
56
+ }
57
+ // Start deletion from each orphan that has no dependents (nothing depends on it)
58
+ await Promise.all(orphanIDs
59
+ .filter((id) => orphanGraph[id].size === 0)
60
+ .map((id) => deleteOrphan(id)));
61
+ const remaining = await stateStore.count();
62
+ if (remaining === 0) {
63
+ await stateStore.deinit?.();
64
+ }
65
+ // Recursively delete orphans in dependency order
66
+ async function deleteOrphan(orphanID) {
67
+ // Return existing deletion promise if this orphan is already being deleted
68
+ const existing = deletionPromises.get(orphanID);
69
+ if (existing) {
70
+ return existing;
71
+ }
72
+ // Create promise immediately to prevent race conditions
73
+ let resolve;
74
+ let reject;
75
+ const promise = new Promise((res, rej) => {
76
+ resolve = res;
77
+ reject = rej;
78
+ });
79
+ deletionPromises.set(orphanID, promise);
80
+ try {
81
+ const orphanState = orphanStates[orphanID];
82
+ // First delete this resource
83
+ const providerType = orphanState.provider;
84
+ const provider = providers.get(providerType);
85
+ if (!provider) {
86
+ throw new Error(`No provider found for ${providerType}. Did you forget to import it?`);
87
+ }
88
+ if (!options?.quiet) {
89
+ console.log("Destroy:", orphanID);
90
+ }
91
+ await destroy(stage, scope, orphanID, orphanState, provider, stateStore, {
92
+ quiet: options?.quiet,
93
+ });
94
+ // After this resource is deleted, we can delete its dependencies if they're orphans
95
+ if (orphanState.deps.length > 0) {
96
+ await Promise.all(orphanState.deps
97
+ .filter((dep) => orphanIDs.includes(dep)) // Only delete if it's an orphan
98
+ .map((dep) => deleteOrphan(dep)));
99
+ }
100
+ resolve();
101
+ }
102
+ catch (error) {
103
+ reject(error);
104
+ }
105
+ return promise;
106
+ }
107
+ }
108
+ if (process.env.ALCHEMY_NO_DEPLOY !== "true") {
109
+ // Listen for signals or events
110
+ process.on("exit", () => alchemize());
111
+ }
112
+ //# sourceMappingURL=alchemize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alchemize.js","sourceRoot":"","sources":["../src/alchemize.ts"],"names":[],"mappings":"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"}
package/lib/apply.d.ts ADDED
@@ -0,0 +1,23 @@
1
+ import { type Output, type Resolved } from "./output";
2
+ import { type Scope as IScope } from "./scope";
3
+ import type { StateStore } from "./state";
4
+ export interface ApplyOptions {
5
+ stage: string;
6
+ scope: IScope;
7
+ stateStore: StateStore;
8
+ quiet?: boolean;
9
+ }
10
+ /**
11
+ * Apply a sub-graph to produce a resource.
12
+ * @param output A sub-graph that produces a resource.
13
+ * @returns The resource properties.
14
+ */
15
+ export declare function apply<T>(output: T, options?: Partial<ApplyOptions>): Promise<Resolved<T>>;
16
+ declare class Evaluated<T> {
17
+ readonly value: T;
18
+ readonly deps: string[];
19
+ constructor(value: T, deps?: string[]);
20
+ }
21
+ export declare function evaluate<T>(output: T | Output<T>, options: ApplyOptions): Promise<Evaluated<T>>;
22
+ export {};
23
+ //# sourceMappingURL=apply.d.ts.map
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Helper to get the current AWS account ID
3
+ */
4
+ export declare function getAccountId(): Promise<string>;
5
+ //# sourceMappingURL=account-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-id.d.ts","sourceRoot":"","sources":["../../src/aws/account-id.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAGpD"}
@@ -0,0 +1,10 @@
1
+ import { GetCallerIdentityCommand, STSClient } from "@aws-sdk/client-sts";
2
+ const sts = new STSClient({});
3
+ /**
4
+ * Helper to get the current AWS account ID
5
+ */
6
+ export async function getAccountId() {
7
+ const identity = await sts.send(new GetCallerIdentityCommand({}));
8
+ return identity.Account;
9
+ }
10
+ //# sourceMappingURL=account-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-id.js","sourceRoot":"","sources":["../../src/aws/account-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE1E,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;AAE9B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,wBAAwB,CAAC,EAAE,CAAC,CAAC,CAAC;IAClE,OAAO,QAAQ,CAAC,OAAQ,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,21 @@
1
+ export interface BucketProps {
2
+ bucketName: string;
3
+ tags?: Record<string, string>;
4
+ }
5
+ export interface BucketOutput extends BucketProps {
6
+ id: string;
7
+ arn: string;
8
+ bucketDomainName: string;
9
+ bucketRegionalDomainName?: string;
10
+ hostedZoneId?: string;
11
+ region?: string;
12
+ websiteEndpoint?: string;
13
+ websiteDomain?: string;
14
+ versioningEnabled?: boolean;
15
+ acl?: string;
16
+ }
17
+ declare const Bucket_base: import("../resource").Provider<"s3::Bucket", [props: BucketProps], BucketProps>;
18
+ export declare class Bucket extends Bucket_base {
19
+ }
20
+ export {};
21
+ //# sourceMappingURL=bucket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bucket.d.ts","sourceRoot":"","sources":["../../src/aws/bucket.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,CAAC;IACzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;;AAED,qBAAa,MAAO,SAAQ,WA0G3B;CAAG"}
@@ -0,0 +1,114 @@
1
+ import { CreateBucketCommand, DeleteBucketCommand, GetBucketAclCommand, GetBucketLocationCommand, GetBucketTaggingCommand, GetBucketVersioningCommand, HeadBucketCommand, NoSuchBucket, PutBucketTaggingCommand, S3Client, } from "@aws-sdk/client-s3";
2
+ import { ignore } from "../error";
3
+ import { Resource } from "../resource";
4
+ export class Bucket extends Resource("s3::Bucket", async (ctx, props) => {
5
+ const client = new S3Client({});
6
+ if (ctx.event === "delete") {
7
+ await ignore(NoSuchBucket.name, () => client.send(new DeleteBucketCommand({
8
+ Bucket: props.bucketName,
9
+ })));
10
+ return props;
11
+ }
12
+ else {
13
+ try {
14
+ // Check if bucket exists
15
+ await client.send(new HeadBucketCommand({
16
+ Bucket: props.bucketName,
17
+ }));
18
+ // Update tags if they changed and bucket exists
19
+ if (ctx.event === "update" && props.tags) {
20
+ await client.send(new PutBucketTaggingCommand({
21
+ Bucket: props.bucketName,
22
+ Tagging: {
23
+ TagSet: Object.entries(props.tags).map(([Key, Value]) => ({
24
+ Key,
25
+ Value,
26
+ })),
27
+ },
28
+ }));
29
+ }
30
+ }
31
+ catch (error) {
32
+ if (error.name === "NotFound") {
33
+ // Create bucket if it doesn't exist
34
+ await client.send(new CreateBucketCommand({
35
+ Bucket: props.bucketName,
36
+ // Add tags during creation if specified
37
+ ...(props.tags && {
38
+ Tagging: {
39
+ TagSet: Object.entries(props.tags).map(([Key, Value]) => ({
40
+ Key,
41
+ Value,
42
+ })),
43
+ },
44
+ }),
45
+ }));
46
+ }
47
+ else {
48
+ throw error;
49
+ }
50
+ }
51
+ // Get bucket details
52
+ const [locationResponse, versioningResponse, aclResponse] = await Promise.all([
53
+ client.send(new GetBucketLocationCommand({ Bucket: props.bucketName })),
54
+ client.send(new GetBucketVersioningCommand({ Bucket: props.bucketName })),
55
+ client.send(new GetBucketAclCommand({ Bucket: props.bucketName })),
56
+ ]);
57
+ const region = locationResponse.LocationConstraint || "us-east-1";
58
+ // Get tags if they exist
59
+ let tags = props.tags;
60
+ if (!tags) {
61
+ try {
62
+ const taggingResponse = await client.send(new GetBucketTaggingCommand({ Bucket: props.bucketName }));
63
+ tags = Object.fromEntries(taggingResponse.TagSet?.map(({ Key, Value }) => [Key, Value]) || []);
64
+ }
65
+ catch (error) {
66
+ if (error.name !== "NoSuchTagSet") {
67
+ throw error;
68
+ }
69
+ }
70
+ }
71
+ const output = {
72
+ bucketName: props.bucketName,
73
+ id: props.bucketName,
74
+ arn: `arn:aws:s3:::${props.bucketName}`,
75
+ bucketDomainName: `${props.bucketName}.s3.amazonaws.com`,
76
+ bucketRegionalDomainName: `${props.bucketName}.s3.${region}.amazonaws.com`,
77
+ region,
78
+ hostedZoneId: getHostedZoneId(region),
79
+ versioningEnabled: versioningResponse.Status === "Enabled",
80
+ acl: aclResponse.Grants?.[0]?.Permission?.toLowerCase(),
81
+ ...(tags && { tags }),
82
+ };
83
+ return output;
84
+ }
85
+ }) {
86
+ }
87
+ // Helper function to get S3 hosted zone IDs by region
88
+ function getHostedZoneId(region) {
89
+ const hostedZoneIds = {
90
+ "us-east-1": "Z3AQBSTGFYJSTF",
91
+ "us-east-2": "Z2O1EMRO9K5GLX",
92
+ "us-west-1": "Z2F56UZL2M1ACD",
93
+ "us-west-2": "Z3BJ6K6RIION7M",
94
+ "af-south-1": "Z11KHD8FBVPUYU",
95
+ "ap-east-1": "ZNB98KWMFR0R6",
96
+ "ap-south-1": "Z11RGJOFQNVJUP",
97
+ "ap-northeast-1": "Z2M4EHUR26P7ZW",
98
+ "ap-northeast-2": "Z3W03O7B5YMIYP",
99
+ "ap-northeast-3": "Z2YQB5RD63NC85",
100
+ "ap-southeast-1": "Z3O0J2DXBE1FTB",
101
+ "ap-southeast-2": "Z1WCIGYICN2BYD",
102
+ "ca-central-1": "Z1QDHH18159H29",
103
+ "eu-central-1": "Z21DNDUVLTQW6Q",
104
+ "eu-west-1": "Z1BKCTXD74EZPE",
105
+ "eu-west-2": "Z3GKZC51ZF0DB4",
106
+ "eu-west-3": "Z3R1K369G5AVDG",
107
+ "eu-north-1": "Z3BAZG2TWCNX0D",
108
+ "eu-south-1": "Z30OZKI7KPW7MI",
109
+ "me-south-1": "Z1MPMWCPA7YB62",
110
+ "sa-east-1": "Z7KQH4QJS55SO",
111
+ };
112
+ return hostedZoneIds[region] || "Z3AQBSTGFYJSTF"; // Default to us-east-1 if region not found
113
+ }
114
+ //# sourceMappingURL=bucket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bucket.js","sourceRoot":"","sources":["../../src/aws/bucket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { Architecture, Runtime } from "@aws-sdk/client-lambda";
2
+ export interface FunctionProps {
3
+ functionName: string;
4
+ zipPath: string;
5
+ roleArn: string;
6
+ handler?: string;
7
+ runtime?: Runtime;
8
+ architecture?: Architecture;
9
+ description?: string;
10
+ timeout?: number;
11
+ memorySize?: number;
12
+ environment?: Record<string, string>;
13
+ tags?: Record<string, string>;
14
+ url?: {
15
+ authType?: "AWS_IAM" | "NONE";
16
+ cors?: {
17
+ allowCredentials?: boolean;
18
+ allowHeaders?: string[];
19
+ allowMethods?: string[];
20
+ allowOrigins?: string[];
21
+ exposeHeaders?: string[];
22
+ maxAge?: number;
23
+ };
24
+ };
25
+ }
26
+ export interface FunctionOutput extends FunctionProps {
27
+ id: string;
28
+ arn: string;
29
+ lastModified: string;
30
+ version: string;
31
+ qualifiedArn: string;
32
+ invokeArn: string;
33
+ sourceCodeHash: string;
34
+ sourceCodeSize: number;
35
+ ephemeralStorageSize?: number;
36
+ architectures: string[];
37
+ masterArn?: string;
38
+ revisionId: string;
39
+ state?: string;
40
+ stateReason?: string;
41
+ stateReasonCode?: string;
42
+ lastUpdateStatus?: string;
43
+ lastUpdateStatusReason?: string;
44
+ lastUpdateStatusReasonCode?: string;
45
+ packageType: string;
46
+ signingProfileVersionArn?: string;
47
+ signingJobArn?: string;
48
+ }
49
+ declare const Function_base: import("../resource").Provider<"lambda::Function", [props: FunctionProps], FunctionOutput>;
50
+ export declare class Function extends Function_base {
51
+ }
52
+ export {};
53
+ //# sourceMappingURL=function.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../../src/aws/function.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAOZ,OAAO,EAGR,MAAM,wBAAwB,CAAC;AAahC,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,GAAG,CAAC,EAAE;QACJ,QAAQ,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;QAC9B,IAAI,CAAC,EAAE;YACL,gBAAgB,CAAC,EAAE,OAAO,CAAC;YAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;YACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;YACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;YACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;YACzB,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;;AAED,qBAAa,QAAS,SAAQ,aAyL7B;CAAG"}