@sst-community/sst 4.19.0 → 5.0.0-alpha.1

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 (832) hide show
  1. package/README.md +92 -52
  2. package/package.json +35 -11
  3. package/platform/js/chunks/chunk-HIZZCEDS.js +328 -0
  4. package/platform/js/chunks/chunk-HIZZCEDS.js.map +6 -0
  5. package/platform/js/chunks/chunk-KOKHGKJ2.js +639 -0
  6. package/platform/js/chunks/chunk-KOKHGKJ2.js.map +6 -0
  7. package/platform/js/chunks/chunk-ONNI4XNK.js +367 -0
  8. package/platform/js/chunks/chunk-ONNI4XNK.js.map +6 -0
  9. package/platform/js/chunks/chunk-VIFHC73J.js +108 -0
  10. package/platform/js/chunks/chunk-VIFHC73J.js.map +6 -0
  11. package/platform/js/chunks/chunk-WJ6BVA46.js +10 -0
  12. package/platform/js/chunks/chunk-WJ6BVA46.js.map +6 -0
  13. package/platform/js/chunks/chunk-ZOXXXME5.js +472 -0
  14. package/platform/js/chunks/chunk-ZOXXXME5.js.map +6 -0
  15. package/platform/js/chunks/component-32FCLIRK.js +26 -0
  16. package/platform/js/chunks/component-32FCLIRK.js.map +6 -0
  17. package/platform/js/chunks/config-DMGMTLNB.js +10 -0
  18. package/platform/js/chunks/config-DMGMTLNB.js.map +6 -0
  19. package/platform/js/chunks/link-OJ3RNGQ3.js +9 -0
  20. package/platform/js/chunks/link-OJ3RNGQ3.js.map +6 -0
  21. package/platform/js/components/aws/index.js +35362 -0
  22. package/platform/js/components/aws/index.js.map +6 -0
  23. package/platform/js/components/cloudflare/index.js +3246 -0
  24. package/platform/js/components/cloudflare/index.js.map +6 -0
  25. package/platform/js/components/core.js +114 -0
  26. package/platform/js/components/core.js.map +6 -0
  27. package/platform/js/components/vercel/index.js +120 -0
  28. package/platform/js/components/vercel/index.js.map +6 -0
  29. package/platform/js/testing/index.js +569 -0
  30. package/platform/js/testing/index.js.map +6 -0
  31. package/platform/package.json +25 -0
  32. package/platform/src/ast/add.mjs +190 -0
  33. package/platform/src/auto/run.ts +109 -0
  34. package/platform/src/components/README.md +652 -0
  35. package/platform/src/components/args.ts +133 -0
  36. package/platform/src/components/aws/alb.ts +577 -0
  37. package/platform/src/components/aws/analog.ts +462 -0
  38. package/platform/src/components/aws/apigateway-websocket-route.ts +206 -0
  39. package/platform/src/components/aws/apigateway-websocket.ts +894 -0
  40. package/platform/src/components/aws/apigatewayv1-api-key.ts +90 -0
  41. package/platform/src/components/aws/apigatewayv1-authorizer.ts +178 -0
  42. package/platform/src/components/aws/apigatewayv1-base-route.ts +78 -0
  43. package/platform/src/components/aws/apigatewayv1-integration-route.ts +92 -0
  44. package/platform/src/components/aws/apigatewayv1-lambda-route.ts +152 -0
  45. package/platform/src/components/aws/apigatewayv1-usage-plan.ts +109 -0
  46. package/platform/src/components/aws/apigatewayv1.ts +1691 -0
  47. package/platform/src/components/aws/apigatewayv2-authorizer.ts +199 -0
  48. package/platform/src/components/aws/apigatewayv2-base-route.ts +69 -0
  49. package/platform/src/components/aws/apigatewayv2-lambda-route.ts +141 -0
  50. package/platform/src/components/aws/apigatewayv2-private-route.ts +101 -0
  51. package/platform/src/components/aws/apigatewayv2-url-route.ts +90 -0
  52. package/platform/src/components/aws/apigatewayv2.ts +1439 -0
  53. package/platform/src/components/aws/app-sync-data-source.ts +264 -0
  54. package/platform/src/components/aws/app-sync-function.ts +79 -0
  55. package/platform/src/components/aws/app-sync-resolver.ts +110 -0
  56. package/platform/src/components/aws/app-sync.ts +849 -0
  57. package/platform/src/components/aws/astro.ts +580 -0
  58. package/platform/src/components/aws/aurora.ts +1356 -0
  59. package/platform/src/components/aws/auth-v1.ts +69 -0
  60. package/platform/src/components/aws/auth.ts +417 -0
  61. package/platform/src/components/aws/bucket-lambda-subscriber.ts +162 -0
  62. package/platform/src/components/aws/bucket-notification.ts +254 -0
  63. package/platform/src/components/aws/bucket-queue-subscriber.ts +122 -0
  64. package/platform/src/components/aws/bucket-topic-subscriber.ts +144 -0
  65. package/platform/src/components/aws/bucket.ts +2046 -0
  66. package/platform/src/components/aws/bus-base-subscriber.ts +52 -0
  67. package/platform/src/components/aws/bus-lambda-subscriber.ts +125 -0
  68. package/platform/src/components/aws/bus-queue-subscriber.ts +88 -0
  69. package/platform/src/components/aws/bus.ts +630 -0
  70. package/platform/src/components/aws/cdn.ts +561 -0
  71. package/platform/src/components/aws/cluster-v1.ts +932 -0
  72. package/platform/src/components/aws/cluster.ts +584 -0
  73. package/platform/src/components/aws/cognito-identity-pool.ts +433 -0
  74. package/platform/src/components/aws/cognito-identity-provider.ts +96 -0
  75. package/platform/src/components/aws/cognito-user-pool-client.ts +114 -0
  76. package/platform/src/components/aws/cognito-user-pool.ts +1089 -0
  77. package/platform/src/components/aws/cron-v2.ts +555 -0
  78. package/platform/src/components/aws/cron.ts +435 -0
  79. package/platform/src/components/aws/dns-validated-certificate.ts +108 -0
  80. package/platform/src/components/aws/dns.ts +221 -0
  81. package/platform/src/components/aws/dsql.ts +741 -0
  82. package/platform/src/components/aws/dynamo-lambda-subscriber.ts +124 -0
  83. package/platform/src/components/aws/dynamo.ts +929 -0
  84. package/platform/src/components/aws/efs.ts +410 -0
  85. package/platform/src/components/aws/email.ts +673 -0
  86. package/platform/src/components/aws/fargate.ts +1279 -0
  87. package/platform/src/components/aws/function.ts +3227 -0
  88. package/platform/src/components/aws/helpers/apigateway-account.ts +78 -0
  89. package/platform/src/components/aws/helpers/apigatewayv2-domain.ts +144 -0
  90. package/platform/src/components/aws/helpers/arn.ts +182 -0
  91. package/platform/src/components/aws/helpers/bootstrap.ts +16 -0
  92. package/platform/src/components/aws/helpers/client.ts +76 -0
  93. package/platform/src/components/aws/helpers/container-builder.ts +33 -0
  94. package/platform/src/components/aws/helpers/custom-domain.ts +128 -0
  95. package/platform/src/components/aws/helpers/event-source.ts +41 -0
  96. package/platform/src/components/aws/helpers/fargate.ts +727 -0
  97. package/platform/src/components/aws/helpers/function-builder.ts +133 -0
  98. package/platform/src/components/aws/helpers/function-code.ts +224 -0
  99. package/platform/src/components/aws/helpers/function-part.ts +202 -0
  100. package/platform/src/components/aws/helpers/function-permission.ts +29 -0
  101. package/platform/src/components/aws/helpers/load-balancer-args.ts +88 -0
  102. package/platform/src/components/aws/helpers/load-balancer.ts +17 -0
  103. package/platform/src/components/aws/helpers/provider.ts +36 -0
  104. package/platform/src/components/aws/helpers/queue-policy.ts +33 -0
  105. package/platform/src/components/aws/helpers/rds.ts +212 -0
  106. package/platform/src/components/aws/helpers/site-builder.ts +41 -0
  107. package/platform/src/components/aws/helpers/subscriber.ts +23 -0
  108. package/platform/src/components/aws/helpers/vpc.ts +27 -0
  109. package/platform/src/components/aws/https-redirect.ts +216 -0
  110. package/platform/src/components/aws/iam-edit.ts +50 -0
  111. package/platform/src/components/aws/index.ts +61 -0
  112. package/platform/src/components/aws/kinesis-stream-lambda-subscriber.ts +122 -0
  113. package/platform/src/components/aws/kinesis-stream.ts +416 -0
  114. package/platform/src/components/aws/linkable.ts +32 -0
  115. package/platform/src/components/aws/logging.ts +25 -0
  116. package/platform/src/components/aws/microvm.ts +988 -0
  117. package/platform/src/components/aws/mysql.ts +1047 -0
  118. package/platform/src/components/aws/nextjs.ts +1052 -0
  119. package/platform/src/components/aws/nuxt.ts +527 -0
  120. package/platform/src/components/aws/open-search.ts +603 -0
  121. package/platform/src/components/aws/opencontrol.ts +235 -0
  122. package/platform/src/components/aws/permission.ts +80 -0
  123. package/platform/src/components/aws/postgres-v1.ts +537 -0
  124. package/platform/src/components/aws/postgres.ts +1074 -0
  125. package/platform/src/components/aws/providers/bucket-files.ts +32 -0
  126. package/platform/src/components/aws/providers/distribution-deployment-waiter.ts +27 -0
  127. package/platform/src/components/aws/providers/distribution-invalidation.ts +24 -0
  128. package/platform/src/components/aws/providers/function-environment-update.ts +46 -0
  129. package/platform/src/components/aws/providers/hosted-zone-lookup.ts +25 -0
  130. package/platform/src/components/aws/providers/kv-keys.ts +15 -0
  131. package/platform/src/components/aws/providers/kv-routes-update.ts +24 -0
  132. package/platform/src/components/aws/providers/microvm-image-prune.ts +48 -0
  133. package/platform/src/components/aws/providers/origin-access-control.ts +21 -0
  134. package/platform/src/components/aws/providers/rds-role-lookup.ts +21 -0
  135. package/platform/src/components/aws/providers/vector-table.ts +25 -0
  136. package/platform/src/components/aws/queue-lambda-subscriber.ts +135 -0
  137. package/platform/src/components/aws/queue.ts +712 -0
  138. package/platform/src/components/aws/react.ts +510 -0
  139. package/platform/src/components/aws/realtime-lambda-subscriber.ts +129 -0
  140. package/platform/src/components/aws/realtime.ts +345 -0
  141. package/platform/src/components/aws/redis-v1.ts +595 -0
  142. package/platform/src/components/aws/redis.ts +1078 -0
  143. package/platform/src/components/aws/remix.ts +576 -0
  144. package/platform/src/components/aws/router-base-route.ts +83 -0
  145. package/platform/src/components/aws/router-bucket-route.ts +63 -0
  146. package/platform/src/components/aws/router-url-route.ts +75 -0
  147. package/platform/src/components/aws/router.ts +3281 -0
  148. package/platform/src/components/aws/service-v1.ts +876 -0
  149. package/platform/src/components/aws/service.ts +2994 -0
  150. package/platform/src/components/aws/sns-topic-lambda-subscriber.ts +127 -0
  151. package/platform/src/components/aws/sns-topic-queue-subscriber.ts +105 -0
  152. package/platform/src/components/aws/sns-topic.ts +700 -0
  153. package/platform/src/components/aws/solid-start.ts +467 -0
  154. package/platform/src/components/aws/ssr-site.ts +2204 -0
  155. package/platform/src/components/aws/static-site.ts +1389 -0
  156. package/platform/src/components/aws/step-functions/choice.ts +123 -0
  157. package/platform/src/components/aws/step-functions/fail.ts +69 -0
  158. package/platform/src/components/aws/step-functions/map.ts +264 -0
  159. package/platform/src/components/aws/step-functions/parallel.ts +170 -0
  160. package/platform/src/components/aws/step-functions/pass.ts +48 -0
  161. package/platform/src/components/aws/step-functions/state.ts +376 -0
  162. package/platform/src/components/aws/step-functions/succeed.ts +31 -0
  163. package/platform/src/components/aws/step-functions/task.ts +538 -0
  164. package/platform/src/components/aws/step-functions/wait.ts +105 -0
  165. package/platform/src/components/aws/step-functions.ts +804 -0
  166. package/platform/src/components/aws/svelte-kit.ts +563 -0
  167. package/platform/src/components/aws/takeover/alb.ts +9 -0
  168. package/platform/src/components/aws/takeover/apigatewayv2.ts +43 -0
  169. package/platform/src/components/aws/takeover/app-sync.ts +45 -0
  170. package/platform/src/components/aws/takeover/aurora.ts +19 -0
  171. package/platform/src/components/aws/takeover/bucket.ts +94 -0
  172. package/platform/src/components/aws/takeover/bus.ts +43 -0
  173. package/platform/src/components/aws/takeover/cognito-user-pool.ts +21 -0
  174. package/platform/src/components/aws/takeover/cron-v2.ts +9 -0
  175. package/platform/src/components/aws/takeover/dsql.ts +12 -0
  176. package/platform/src/components/aws/takeover/dynamo.ts +31 -0
  177. package/platform/src/components/aws/takeover/efs.ts +9 -0
  178. package/platform/src/components/aws/takeover/function.ts +21 -0
  179. package/platform/src/components/aws/takeover/helpers.ts +26 -0
  180. package/platform/src/components/aws/takeover/index.ts +27 -0
  181. package/platform/src/components/aws/takeover/mysql.ts +17 -0
  182. package/platform/src/components/aws/takeover/postgres.ts +17 -0
  183. package/platform/src/components/aws/takeover/queue.ts +21 -0
  184. package/platform/src/components/aws/takeover/redis.ts +10 -0
  185. package/platform/src/components/aws/takeover/service.ts +22 -0
  186. package/platform/src/components/aws/takeover/sns-topic.ts +27 -0
  187. package/platform/src/components/aws/takeover/task.ts +13 -0
  188. package/platform/src/components/aws/tan-stack-start.ts +479 -0
  189. package/platform/src/components/aws/task.ts +571 -0
  190. package/platform/src/components/aws/v5/alb.ts +310 -0
  191. package/platform/src/components/aws/v5/apigatewayv2.ts +845 -0
  192. package/platform/src/components/aws/v5/app-sync.ts +673 -0
  193. package/platform/src/components/aws/v5/aurora.ts +855 -0
  194. package/platform/src/components/aws/v5/bucket.ts +1001 -0
  195. package/platform/src/components/aws/v5/bus.ts +321 -0
  196. package/platform/src/components/aws/v5/cluster.ts +230 -0
  197. package/platform/src/components/aws/v5/cognito-user-pool-client.ts +100 -0
  198. package/platform/src/components/aws/v5/cognito-user-pool.ts +693 -0
  199. package/platform/src/components/aws/v5/cron-v2.ts +316 -0
  200. package/platform/src/components/aws/v5/dsql.ts +665 -0
  201. package/platform/src/components/aws/v5/dynamo.ts +477 -0
  202. package/platform/src/components/aws/v5/efs.ts +311 -0
  203. package/platform/src/components/aws/v5/function.ts +1527 -0
  204. package/platform/src/components/aws/v5/index.ts +26 -0
  205. package/platform/src/components/aws/v5/mysql.ts +604 -0
  206. package/platform/src/components/aws/v5/postgres.ts +612 -0
  207. package/platform/src/components/aws/v5/queue.ts +271 -0
  208. package/platform/src/components/aws/v5/redis.ts +550 -0
  209. package/platform/src/components/aws/v5/service.ts +2209 -0
  210. package/platform/src/components/aws/v5/sns-topic.ts +284 -0
  211. package/platform/src/components/aws/v5/task.ts +549 -0
  212. package/platform/src/components/aws/vector.ts +316 -0
  213. package/platform/src/components/aws/vpc-v1.ts +580 -0
  214. package/platform/src/components/aws/vpc.ts +1641 -0
  215. package/platform/src/components/aws/workflow.ts +421 -0
  216. package/platform/src/components/base/base-site.ts +101 -0
  217. package/platform/src/components/base/base-ssr-site.ts +120 -0
  218. package/platform/src/components/base/base-static-site.ts +314 -0
  219. package/platform/src/components/cloudflare/account-id.ts +1 -0
  220. package/platform/src/components/cloudflare/ai.ts +77 -0
  221. package/platform/src/components/cloudflare/astro.ts +355 -0
  222. package/platform/src/components/cloudflare/auth.ts +69 -0
  223. package/platform/src/components/cloudflare/binding.ts +132 -0
  224. package/platform/src/components/cloudflare/bucket.ts +142 -0
  225. package/platform/src/components/cloudflare/cron.ts +207 -0
  226. package/platform/src/components/cloudflare/d1.ts +230 -0
  227. package/platform/src/components/cloudflare/dns.ts +253 -0
  228. package/platform/src/components/cloudflare/durable-object.ts +144 -0
  229. package/platform/src/components/cloudflare/experimental/index.ts +3 -0
  230. package/platform/src/components/cloudflare/experimental/solid-start.ts +288 -0
  231. package/platform/src/components/cloudflare/experimental/static-site.ts +4 -0
  232. package/platform/src/components/cloudflare/helpers/compatibility.ts +44 -0
  233. package/platform/src/components/cloudflare/helpers/fetch.ts +81 -0
  234. package/platform/src/components/cloudflare/helpers/validation.ts +74 -0
  235. package/platform/src/components/cloudflare/helpers/worker-builder.ts +57 -0
  236. package/platform/src/components/cloudflare/helpers/wrangler.ts +222 -0
  237. package/platform/src/components/cloudflare/hyperdrive.ts +402 -0
  238. package/platform/src/components/cloudflare/index.ts +25 -0
  239. package/platform/src/components/cloudflare/kv.ts +218 -0
  240. package/platform/src/components/cloudflare/providers/dns-record.ts +43 -0
  241. package/platform/src/components/cloudflare/providers/kv-data.ts +107 -0
  242. package/platform/src/components/cloudflare/providers/worker-assets.ts +41 -0
  243. package/platform/src/components/cloudflare/providers/worker-placement.ts +93 -0
  244. package/platform/src/components/cloudflare/providers/worker-script.ts +47 -0
  245. package/platform/src/components/cloudflare/providers/worker-url.ts +109 -0
  246. package/platform/src/components/cloudflare/providers/zone-lookup.ts +85 -0
  247. package/platform/src/components/cloudflare/queue-worker-subscriber.ts +192 -0
  248. package/platform/src/components/cloudflare/queue.ts +310 -0
  249. package/platform/src/components/cloudflare/rate-limit.ts +178 -0
  250. package/platform/src/components/cloudflare/react-router.ts +322 -0
  251. package/platform/src/components/cloudflare/ssr-site.ts +293 -0
  252. package/platform/src/components/cloudflare/static-site-v2.ts +428 -0
  253. package/platform/src/components/cloudflare/static-site.ts +470 -0
  254. package/platform/src/components/cloudflare/tan-stack-start.ts +408 -0
  255. package/platform/src/components/cloudflare/worker.ts +1080 -0
  256. package/platform/src/components/cloudflare/workflow.ts +319 -0
  257. package/platform/src/components/component.ts +242 -0
  258. package/platform/src/components/core.ts +43 -0
  259. package/platform/src/components/cpu.ts +10 -0
  260. package/platform/src/components/dns.ts +82 -0
  261. package/platform/src/components/duration.ts +67 -0
  262. package/platform/src/components/error.ts +5 -0
  263. package/platform/src/components/esbuild.ts +15 -0
  264. package/platform/src/components/experimental/dev-command.ts +127 -0
  265. package/platform/src/components/experimental/index.ts +1 -0
  266. package/platform/src/components/groups.ts +9 -0
  267. package/platform/src/components/index.ts +9 -0
  268. package/platform/src/components/input.ts +2 -0
  269. package/platform/src/components/link.ts +201 -0
  270. package/platform/src/components/linkable.ts +360 -0
  271. package/platform/src/components/naming-rules.ts +299 -0
  272. package/platform/src/components/naming.ts +189 -0
  273. package/platform/src/components/parts-component.ts +662 -0
  274. package/platform/src/components/parts.ts +299 -0
  275. package/platform/src/components/path.ts +5 -0
  276. package/platform/src/components/rpc/rpc.ts +110 -0
  277. package/platform/src/components/secret.ts +159 -0
  278. package/platform/src/components/size.ts +28 -0
  279. package/platform/src/components/takeover.ts +131 -0
  280. package/platform/src/components/transform.ts +107 -0
  281. package/platform/src/components/vercel/account-id.ts +1 -0
  282. package/platform/src/components/vercel/dns.ts +171 -0
  283. package/platform/src/components/vercel/index.ts +2 -0
  284. package/platform/src/components/vercel/providers/dns-record.ts +34 -0
  285. package/platform/src/config.ts +1460 -0
  286. package/platform/src/global-aliases.d.ts +37 -0
  287. package/platform/src/global.d.ts +374 -0
  288. package/platform/src/internal.d.ts +18 -0
  289. package/platform/src/runtime/worker/unenv.d.ts +14 -0
  290. package/platform/src/runtime/worker/unenv.mjs +26 -0
  291. package/platform/src/shim/run.js +25 -0
  292. package/platform/src/testing/global.ts +83 -0
  293. package/platform/src/testing/index.ts +103 -0
  294. package/platform/src/testing/mock.ts +646 -0
  295. package/platform/src/testing/vitest.ts +36 -0
  296. package/platform/src/util/compare-semver.ts +23 -0
  297. package/platform/src/util/fs.ts +49 -0
  298. package/platform/src/util/lazy.ts +12 -0
  299. package/platform/src/util/minify.ts +10 -0
  300. package/platform/src/util/package.ts +29 -0
  301. package/platform/src/util/semaphore.ts +29 -0
  302. package/platform/src/util/warn.ts +7 -0
  303. package/platform/types/auto/run.d.ts +9 -0
  304. package/platform/types/auto/run.d.ts.map +1 -0
  305. package/platform/types/components/args.d.ts +77 -0
  306. package/platform/types/components/args.d.ts.map +1 -0
  307. package/platform/types/components/aws/alb.d.ts +283 -0
  308. package/platform/types/components/aws/alb.d.ts.map +1 -0
  309. package/platform/types/components/aws/analog.d.ts +408 -0
  310. package/platform/types/components/aws/analog.d.ts.map +1 -0
  311. package/platform/types/components/aws/apigateway-websocket-route.d.ts +74 -0
  312. package/platform/types/components/aws/apigateway-websocket-route.d.ts.map +1 -0
  313. package/platform/types/components/aws/apigateway-websocket.d.ts +560 -0
  314. package/platform/types/components/aws/apigateway-websocket.d.ts.map +1 -0
  315. package/platform/types/components/aws/apigatewayv1-api-key.d.ts +48 -0
  316. package/platform/types/components/aws/apigatewayv1-api-key.d.ts.map +1 -0
  317. package/platform/types/components/aws/apigatewayv1-authorizer.d.ts +55 -0
  318. package/platform/types/components/aws/apigatewayv1-authorizer.d.ts.map +1 -0
  319. package/platform/types/components/aws/apigatewayv1-base-route.d.ts +36 -0
  320. package/platform/types/components/aws/apigatewayv1-base-route.d.ts.map +1 -0
  321. package/platform/types/components/aws/apigatewayv1-integration-route.d.ts +39 -0
  322. package/platform/types/components/aws/apigatewayv1-integration-route.d.ts.map +1 -0
  323. package/platform/types/components/aws/apigatewayv1-lambda-route.d.ts +53 -0
  324. package/platform/types/components/aws/apigatewayv1-lambda-route.d.ts.map +1 -0
  325. package/platform/types/components/aws/apigatewayv1-usage-plan.d.ts +53 -0
  326. package/platform/types/components/aws/apigatewayv1-usage-plan.d.ts.map +1 -0
  327. package/platform/types/components/aws/apigatewayv1.d.ts +1028 -0
  328. package/platform/types/components/aws/apigatewayv1.d.ts.map +1 -0
  329. package/platform/types/components/aws/apigatewayv2-authorizer.d.ts +54 -0
  330. package/platform/types/components/aws/apigatewayv2-authorizer.d.ts.map +1 -0
  331. package/platform/types/components/aws/apigatewayv2-base-route.d.ts +28 -0
  332. package/platform/types/components/aws/apigatewayv2-base-route.d.ts.map +1 -0
  333. package/platform/types/components/aws/apigatewayv2-lambda-route.d.ts +59 -0
  334. package/platform/types/components/aws/apigatewayv2-lambda-route.d.ts.map +1 -0
  335. package/platform/types/components/aws/apigatewayv2-private-route.d.ts +54 -0
  336. package/platform/types/components/aws/apigatewayv2-private-route.d.ts.map +1 -0
  337. package/platform/types/components/aws/apigatewayv2-url-route.d.ts +44 -0
  338. package/platform/types/components/aws/apigatewayv2-url-route.d.ts.map +1 -0
  339. package/platform/types/components/aws/apigatewayv2.d.ts +955 -0
  340. package/platform/types/components/aws/apigatewayv2.d.ts.map +1 -0
  341. package/platform/types/components/aws/app-sync-data-source.d.ts +52 -0
  342. package/platform/types/components/aws/app-sync-data-source.d.ts.map +1 -0
  343. package/platform/types/components/aws/app-sync-function.d.ts +33 -0
  344. package/platform/types/components/aws/app-sync-function.d.ts.map +1 -0
  345. package/platform/types/components/aws/app-sync-resolver.d.ts +41 -0
  346. package/platform/types/components/aws/app-sync-resolver.d.ts.map +1 -0
  347. package/platform/types/components/aws/app-sync.d.ts +638 -0
  348. package/platform/types/components/aws/app-sync.d.ts.map +1 -0
  349. package/platform/types/components/aws/astro.d.ts +409 -0
  350. package/platform/types/components/aws/astro.d.ts.map +1 -0
  351. package/platform/types/components/aws/aurora.d.ts +720 -0
  352. package/platform/types/components/aws/aurora.d.ts.map +1 -0
  353. package/platform/types/components/aws/auth-v1.d.ts +26 -0
  354. package/platform/types/components/aws/auth-v1.d.ts.map +1 -0
  355. package/platform/types/components/aws/auth.d.ts +295 -0
  356. package/platform/types/components/aws/auth.d.ts.map +1 -0
  357. package/platform/types/components/aws/bucket-lambda-subscriber.d.ts +61 -0
  358. package/platform/types/components/aws/bucket-lambda-subscriber.d.ts.map +1 -0
  359. package/platform/types/components/aws/bucket-notification.d.ts +47 -0
  360. package/platform/types/components/aws/bucket-notification.d.ts.map +1 -0
  361. package/platform/types/components/aws/bucket-queue-subscriber.d.ts +55 -0
  362. package/platform/types/components/aws/bucket-queue-subscriber.d.ts.map +1 -0
  363. package/platform/types/components/aws/bucket-topic-subscriber.d.ts +55 -0
  364. package/platform/types/components/aws/bucket-topic-subscriber.d.ts.map +1 -0
  365. package/platform/types/components/aws/bucket.d.ts +1356 -0
  366. package/platform/types/components/aws/bucket.d.ts.map +1 -0
  367. package/platform/types/components/aws/bus-base-subscriber.d.ts +20 -0
  368. package/platform/types/components/aws/bus-base-subscriber.d.ts.map +1 -0
  369. package/platform/types/components/aws/bus-lambda-subscriber.d.ts +50 -0
  370. package/platform/types/components/aws/bus-lambda-subscriber.d.ts.map +1 -0
  371. package/platform/types/components/aws/bus-queue-subscriber.d.ts +44 -0
  372. package/platform/types/components/aws/bus-queue-subscriber.d.ts.map +1 -0
  373. package/platform/types/components/aws/bus.d.ts +447 -0
  374. package/platform/types/components/aws/bus.d.ts.map +1 -0
  375. package/platform/types/components/aws/cdn.d.ts +310 -0
  376. package/platform/types/components/aws/cdn.d.ts.map +1 -0
  377. package/platform/types/components/aws/cluster-v1.d.ts +885 -0
  378. package/platform/types/components/aws/cluster-v1.d.ts.map +1 -0
  379. package/platform/types/components/aws/cluster.d.ts +364 -0
  380. package/platform/types/components/aws/cluster.d.ts.map +1 -0
  381. package/platform/types/components/aws/cognito-identity-pool.d.ts +199 -0
  382. package/platform/types/components/aws/cognito-identity-pool.d.ts.map +1 -0
  383. package/platform/types/components/aws/cognito-identity-provider.d.ts +38 -0
  384. package/platform/types/components/aws/cognito-identity-provider.d.ts.map +1 -0
  385. package/platform/types/components/aws/cognito-user-pool-client.d.ts +50 -0
  386. package/platform/types/components/aws/cognito-user-pool-client.d.ts.map +1 -0
  387. package/platform/types/components/aws/cognito-user-pool.d.ts +703 -0
  388. package/platform/types/components/aws/cognito-user-pool.d.ts.map +1 -0
  389. package/platform/types/components/aws/cron-v2.d.ts +325 -0
  390. package/platform/types/components/aws/cron-v2.d.ts.map +1 -0
  391. package/platform/types/components/aws/cron.d.ts +259 -0
  392. package/platform/types/components/aws/cron.d.ts.map +1 -0
  393. package/platform/types/components/aws/dns-validated-certificate.d.ts +27 -0
  394. package/platform/types/components/aws/dns-validated-certificate.d.ts.map +1 -0
  395. package/platform/types/components/aws/dns.d.ts +94 -0
  396. package/platform/types/components/aws/dns.d.ts.map +1 -0
  397. package/platform/types/components/aws/dsql.d.ts +369 -0
  398. package/platform/types/components/aws/dsql.d.ts.map +1 -0
  399. package/platform/types/components/aws/dynamo-lambda-subscriber.d.ts +55 -0
  400. package/platform/types/components/aws/dynamo-lambda-subscriber.d.ts.map +1 -0
  401. package/platform/types/components/aws/dynamo.d.ts +628 -0
  402. package/platform/types/components/aws/dynamo.d.ts.map +1 -0
  403. package/platform/types/components/aws/efs.d.ts +217 -0
  404. package/platform/types/components/aws/efs.d.ts.map +1 -0
  405. package/platform/types/components/aws/email.d.ts +370 -0
  406. package/platform/types/components/aws/email.d.ts.map +1 -0
  407. package/platform/types/components/aws/fargate.d.ts +894 -0
  408. package/platform/types/components/aws/fargate.d.ts.map +1 -0
  409. package/platform/types/components/aws/function.d.ts +1755 -0
  410. package/platform/types/components/aws/function.d.ts.map +1 -0
  411. package/platform/types/components/aws/helpers/apigateway-account.d.ts +3 -0
  412. package/platform/types/components/aws/helpers/apigateway-account.d.ts.map +1 -0
  413. package/platform/types/components/aws/helpers/apigatewayv2-domain.d.ts +144 -0
  414. package/platform/types/components/aws/helpers/apigatewayv2-domain.d.ts.map +1 -0
  415. package/platform/types/components/aws/helpers/arn.d.ts +51 -0
  416. package/platform/types/components/aws/helpers/arn.d.ts.map +1 -0
  417. package/platform/types/components/aws/helpers/bootstrap.d.ts +13 -0
  418. package/platform/types/components/aws/helpers/bootstrap.d.ts.map +1 -0
  419. package/platform/types/components/aws/helpers/client.d.ts +7 -0
  420. package/platform/types/components/aws/helpers/client.d.ts.map +1 -0
  421. package/platform/types/components/aws/helpers/container-builder.d.ts +4 -0
  422. package/platform/types/components/aws/helpers/container-builder.d.ts.map +1 -0
  423. package/platform/types/components/aws/helpers/custom-domain.d.ts +111 -0
  424. package/platform/types/components/aws/helpers/custom-domain.d.ts.map +1 -0
  425. package/platform/types/components/aws/helpers/event-source.d.ts +26 -0
  426. package/platform/types/components/aws/helpers/event-source.d.ts.map +1 -0
  427. package/platform/types/components/aws/helpers/fargate.d.ts +225 -0
  428. package/platform/types/components/aws/helpers/fargate.d.ts.map +1 -0
  429. package/platform/types/components/aws/helpers/function-builder.d.ts +14 -0
  430. package/platform/types/components/aws/helpers/function-builder.d.ts.map +1 -0
  431. package/platform/types/components/aws/helpers/function-code.d.ts +80 -0
  432. package/platform/types/components/aws/helpers/function-code.d.ts.map +1 -0
  433. package/platform/types/components/aws/helpers/function-part.d.ts +61 -0
  434. package/platform/types/components/aws/helpers/function-part.d.ts.map +1 -0
  435. package/platform/types/components/aws/helpers/function-permission.d.ts +17 -0
  436. package/platform/types/components/aws/helpers/function-permission.d.ts.map +1 -0
  437. package/platform/types/components/aws/helpers/load-balancer-args.d.ts +40 -0
  438. package/platform/types/components/aws/helpers/load-balancer-args.d.ts.map +1 -0
  439. package/platform/types/components/aws/helpers/load-balancer.d.ts +9 -0
  440. package/platform/types/components/aws/helpers/load-balancer.d.ts.map +1 -0
  441. package/platform/types/components/aws/helpers/provider.d.ts +3 -0
  442. package/platform/types/components/aws/helpers/provider.d.ts.map +1 -0
  443. package/platform/types/components/aws/helpers/queue-policy.d.ts +11 -0
  444. package/platform/types/components/aws/helpers/queue-policy.d.ts.map +1 -0
  445. package/platform/types/components/aws/helpers/rds.d.ts +98 -0
  446. package/platform/types/components/aws/helpers/rds.d.ts.map +1 -0
  447. package/platform/types/components/aws/helpers/site-builder.d.ts +4 -0
  448. package/platform/types/components/aws/helpers/site-builder.d.ts.map +1 -0
  449. package/platform/types/components/aws/helpers/subscriber.d.ts +6 -0
  450. package/platform/types/components/aws/helpers/subscriber.d.ts.map +1 -0
  451. package/platform/types/components/aws/helpers/vpc.d.ts +14 -0
  452. package/platform/types/components/aws/helpers/vpc.d.ts.map +1 -0
  453. package/platform/types/components/aws/https-redirect.d.ts +38 -0
  454. package/platform/types/components/aws/https-redirect.d.ts.map +1 -0
  455. package/platform/types/components/aws/iam-edit.d.ts +39 -0
  456. package/platform/types/components/aws/iam-edit.d.ts.map +1 -0
  457. package/platform/types/components/aws/index.d.ts +56 -0
  458. package/platform/types/components/aws/index.d.ts.map +1 -0
  459. package/platform/types/components/aws/kinesis-stream-lambda-subscriber.d.ts +49 -0
  460. package/platform/types/components/aws/kinesis-stream-lambda-subscriber.d.ts.map +1 -0
  461. package/platform/types/components/aws/kinesis-stream.d.ts +254 -0
  462. package/platform/types/components/aws/kinesis-stream.d.ts.map +1 -0
  463. package/platform/types/components/aws/linkable.d.ts +17 -0
  464. package/platform/types/components/aws/linkable.d.ts.map +1 -0
  465. package/platform/types/components/aws/logging.d.ts +26 -0
  466. package/platform/types/components/aws/logging.d.ts.map +1 -0
  467. package/platform/types/components/aws/microvm.d.ts +439 -0
  468. package/platform/types/components/aws/microvm.d.ts.map +1 -0
  469. package/platform/types/components/aws/mysql.d.ts +525 -0
  470. package/platform/types/components/aws/mysql.d.ts.map +1 -0
  471. package/platform/types/components/aws/nextjs.d.ts +534 -0
  472. package/platform/types/components/aws/nextjs.d.ts.map +1 -0
  473. package/platform/types/components/aws/nuxt.d.ts +480 -0
  474. package/platform/types/components/aws/nuxt.d.ts.map +1 -0
  475. package/platform/types/components/aws/open-search.d.ts +306 -0
  476. package/platform/types/components/aws/open-search.d.ts.map +1 -0
  477. package/platform/types/components/aws/opencontrol.d.ts +169 -0
  478. package/platform/types/components/aws/opencontrol.d.ts.map +1 -0
  479. package/platform/types/components/aws/permission.d.ts +80 -0
  480. package/platform/types/components/aws/permission.d.ts.map +1 -0
  481. package/platform/types/components/aws/postgres-v1.d.ts +328 -0
  482. package/platform/types/components/aws/postgres-v1.d.ts.map +1 -0
  483. package/platform/types/components/aws/postgres.d.ts +529 -0
  484. package/platform/types/components/aws/postgres.d.ts.map +1 -0
  485. package/platform/types/components/aws/providers/bucket-files.d.ts +18 -0
  486. package/platform/types/components/aws/providers/bucket-files.d.ts.map +1 -0
  487. package/platform/types/components/aws/providers/distribution-deployment-waiter.d.ts +13 -0
  488. package/platform/types/components/aws/providers/distribution-deployment-waiter.d.ts.map +1 -0
  489. package/platform/types/components/aws/providers/distribution-invalidation.d.ts +11 -0
  490. package/platform/types/components/aws/providers/distribution-invalidation.d.ts.map +1 -0
  491. package/platform/types/components/aws/providers/function-environment-update.d.ts +33 -0
  492. package/platform/types/components/aws/providers/function-environment-update.d.ts.map +1 -0
  493. package/platform/types/components/aws/providers/hosted-zone-lookup.d.ts +11 -0
  494. package/platform/types/components/aws/providers/hosted-zone-lookup.d.ts.map +1 -0
  495. package/platform/types/components/aws/providers/kv-keys.d.ts +11 -0
  496. package/platform/types/components/aws/providers/kv-keys.d.ts.map +1 -0
  497. package/platform/types/components/aws/providers/kv-routes-update.d.ts +11 -0
  498. package/platform/types/components/aws/providers/kv-routes-update.d.ts.map +1 -0
  499. package/platform/types/components/aws/providers/microvm-image-prune.d.ts +35 -0
  500. package/platform/types/components/aws/providers/microvm-image-prune.d.ts.map +1 -0
  501. package/platform/types/components/aws/providers/origin-access-control.d.ts +8 -0
  502. package/platform/types/components/aws/providers/origin-access-control.d.ts.map +1 -0
  503. package/platform/types/components/aws/providers/rds-role-lookup.d.ts +8 -0
  504. package/platform/types/components/aws/providers/rds-role-lookup.d.ts.map +1 -0
  505. package/platform/types/components/aws/providers/vector-table.d.ts +12 -0
  506. package/platform/types/components/aws/providers/vector-table.d.ts.map +1 -0
  507. package/platform/types/components/aws/queue-lambda-subscriber.d.ts +53 -0
  508. package/platform/types/components/aws/queue-lambda-subscriber.d.ts.map +1 -0
  509. package/platform/types/components/aws/queue.d.ts +494 -0
  510. package/platform/types/components/aws/queue.d.ts.map +1 -0
  511. package/platform/types/components/aws/react.d.ts +407 -0
  512. package/platform/types/components/aws/react.d.ts.map +1 -0
  513. package/platform/types/components/aws/realtime-lambda-subscriber.d.ts +53 -0
  514. package/platform/types/components/aws/realtime-lambda-subscriber.d.ts.map +1 -0
  515. package/platform/types/components/aws/realtime.d.ts +237 -0
  516. package/platform/types/components/aws/realtime.d.ts.map +1 -0
  517. package/platform/types/components/aws/redis-v1.d.ts +348 -0
  518. package/platform/types/components/aws/redis-v1.d.ts.map +1 -0
  519. package/platform/types/components/aws/redis.d.ts +545 -0
  520. package/platform/types/components/aws/redis.d.ts.map +1 -0
  521. package/platform/types/components/aws/remix.d.ts +408 -0
  522. package/platform/types/components/aws/remix.d.ts.map +1 -0
  523. package/platform/types/components/aws/router-base-route.d.ts +28 -0
  524. package/platform/types/components/aws/router-base-route.d.ts.map +1 -0
  525. package/platform/types/components/aws/router-bucket-route.d.ts +29 -0
  526. package/platform/types/components/aws/router-bucket-route.d.ts.map +1 -0
  527. package/platform/types/components/aws/router-url-route.d.ts +28 -0
  528. package/platform/types/components/aws/router-url-route.d.ts.map +1 -0
  529. package/platform/types/components/aws/router.d.ts +1754 -0
  530. package/platform/types/components/aws/router.d.ts.map +1 -0
  531. package/platform/types/components/aws/service-v1.d.ts +78 -0
  532. package/platform/types/components/aws/service-v1.d.ts.map +1 -0
  533. package/platform/types/components/aws/service.d.ts +1756 -0
  534. package/platform/types/components/aws/service.d.ts.map +1 -0
  535. package/platform/types/components/aws/sns-topic-lambda-subscriber.d.ts +53 -0
  536. package/platform/types/components/aws/sns-topic-lambda-subscriber.d.ts.map +1 -0
  537. package/platform/types/components/aws/sns-topic-queue-subscriber.d.ts +55 -0
  538. package/platform/types/components/aws/sns-topic-queue-subscriber.d.ts.map +1 -0
  539. package/platform/types/components/aws/sns-topic.d.ts +394 -0
  540. package/platform/types/components/aws/sns-topic.d.ts.map +1 -0
  541. package/platform/types/components/aws/solid-start.d.ts +399 -0
  542. package/platform/types/components/aws/solid-start.d.ts.map +1 -0
  543. package/platform/types/components/aws/ssr-site.d.ts +895 -0
  544. package/platform/types/components/aws/ssr-site.d.ts.map +1 -0
  545. package/platform/types/components/aws/static-site.d.ts +744 -0
  546. package/platform/types/components/aws/static-site.d.ts.map +1 -0
  547. package/platform/types/components/aws/step-functions/choice.d.ts +73 -0
  548. package/platform/types/components/aws/step-functions/choice.d.ts.map +1 -0
  549. package/platform/types/components/aws/step-functions/fail.d.ts +63 -0
  550. package/platform/types/components/aws/step-functions/fail.d.ts.map +1 -0
  551. package/platform/types/components/aws/step-functions/map.d.ts +236 -0
  552. package/platform/types/components/aws/step-functions/map.d.ts.map +1 -0
  553. package/platform/types/components/aws/step-functions/parallel.d.ts +127 -0
  554. package/platform/types/components/aws/step-functions/parallel.d.ts.map +1 -0
  555. package/platform/types/components/aws/step-functions/pass.d.ts +39 -0
  556. package/platform/types/components/aws/step-functions/pass.d.ts.map +1 -0
  557. package/platform/types/components/aws/step-functions/state.d.ts +231 -0
  558. package/platform/types/components/aws/step-functions/state.d.ts.map +1 -0
  559. package/platform/types/components/aws/step-functions/succeed.d.ts +26 -0
  560. package/platform/types/components/aws/step-functions/succeed.d.ts.map +1 -0
  561. package/platform/types/components/aws/step-functions/task.d.ts +485 -0
  562. package/platform/types/components/aws/step-functions/task.d.ts.map +1 -0
  563. package/platform/types/components/aws/step-functions/wait.d.ts +91 -0
  564. package/platform/types/components/aws/step-functions/wait.d.ts.map +1 -0
  565. package/platform/types/components/aws/step-functions.d.ts +478 -0
  566. package/platform/types/components/aws/step-functions.d.ts.map +1 -0
  567. package/platform/types/components/aws/svelte-kit.d.ts +456 -0
  568. package/platform/types/components/aws/svelte-kit.d.ts.map +1 -0
  569. package/platform/types/components/aws/takeover/alb.d.ts +2 -0
  570. package/platform/types/components/aws/takeover/alb.d.ts.map +1 -0
  571. package/platform/types/components/aws/takeover/apigatewayv2.d.ts +2 -0
  572. package/platform/types/components/aws/takeover/apigatewayv2.d.ts.map +1 -0
  573. package/platform/types/components/aws/takeover/app-sync.d.ts +2 -0
  574. package/platform/types/components/aws/takeover/app-sync.d.ts.map +1 -0
  575. package/platform/types/components/aws/takeover/aurora.d.ts +2 -0
  576. package/platform/types/components/aws/takeover/aurora.d.ts.map +1 -0
  577. package/platform/types/components/aws/takeover/bucket.d.ts +2 -0
  578. package/platform/types/components/aws/takeover/bucket.d.ts.map +1 -0
  579. package/platform/types/components/aws/takeover/bus.d.ts +2 -0
  580. package/platform/types/components/aws/takeover/bus.d.ts.map +1 -0
  581. package/platform/types/components/aws/takeover/cognito-user-pool.d.ts +2 -0
  582. package/platform/types/components/aws/takeover/cognito-user-pool.d.ts.map +1 -0
  583. package/platform/types/components/aws/takeover/cron-v2.d.ts +2 -0
  584. package/platform/types/components/aws/takeover/cron-v2.d.ts.map +1 -0
  585. package/platform/types/components/aws/takeover/dsql.d.ts +2 -0
  586. package/platform/types/components/aws/takeover/dsql.d.ts.map +1 -0
  587. package/platform/types/components/aws/takeover/dynamo.d.ts +2 -0
  588. package/platform/types/components/aws/takeover/dynamo.d.ts.map +1 -0
  589. package/platform/types/components/aws/takeover/efs.d.ts +2 -0
  590. package/platform/types/components/aws/takeover/efs.d.ts.map +1 -0
  591. package/platform/types/components/aws/takeover/function.d.ts +2 -0
  592. package/platform/types/components/aws/takeover/function.d.ts.map +1 -0
  593. package/platform/types/components/aws/takeover/helpers.d.ts +16 -0
  594. package/platform/types/components/aws/takeover/helpers.d.ts.map +1 -0
  595. package/platform/types/components/aws/takeover/index.d.ts +28 -0
  596. package/platform/types/components/aws/takeover/index.d.ts.map +1 -0
  597. package/platform/types/components/aws/takeover/mysql.d.ts +2 -0
  598. package/platform/types/components/aws/takeover/mysql.d.ts.map +1 -0
  599. package/platform/types/components/aws/takeover/postgres.d.ts +2 -0
  600. package/platform/types/components/aws/takeover/postgres.d.ts.map +1 -0
  601. package/platform/types/components/aws/takeover/queue.d.ts +2 -0
  602. package/platform/types/components/aws/takeover/queue.d.ts.map +1 -0
  603. package/platform/types/components/aws/takeover/redis.d.ts +2 -0
  604. package/platform/types/components/aws/takeover/redis.d.ts.map +1 -0
  605. package/platform/types/components/aws/takeover/service.d.ts +2 -0
  606. package/platform/types/components/aws/takeover/service.d.ts.map +1 -0
  607. package/platform/types/components/aws/takeover/sns-topic.d.ts +2 -0
  608. package/platform/types/components/aws/takeover/sns-topic.d.ts.map +1 -0
  609. package/platform/types/components/aws/takeover/task.d.ts +2 -0
  610. package/platform/types/components/aws/takeover/task.d.ts.map +1 -0
  611. package/platform/types/components/aws/tan-stack-start.d.ts +359 -0
  612. package/platform/types/components/aws/tan-stack-start.d.ts.map +1 -0
  613. package/platform/types/components/aws/task.d.ts +342 -0
  614. package/platform/types/components/aws/task.d.ts.map +1 -0
  615. package/platform/types/components/aws/v5/alb.d.ts +177 -0
  616. package/platform/types/components/aws/v5/alb.d.ts.map +1 -0
  617. package/platform/types/components/aws/v5/apigatewayv2.d.ts +482 -0
  618. package/platform/types/components/aws/v5/apigatewayv2.d.ts.map +1 -0
  619. package/platform/types/components/aws/v5/app-sync.d.ts +424 -0
  620. package/platform/types/components/aws/v5/app-sync.d.ts.map +1 -0
  621. package/platform/types/components/aws/v5/aurora.d.ts +459 -0
  622. package/platform/types/components/aws/v5/aurora.d.ts.map +1 -0
  623. package/platform/types/components/aws/v5/bucket.d.ts +578 -0
  624. package/platform/types/components/aws/v5/bucket.d.ts.map +1 -0
  625. package/platform/types/components/aws/v5/bus.d.ts +255 -0
  626. package/platform/types/components/aws/v5/bus.d.ts.map +1 -0
  627. package/platform/types/components/aws/v5/cluster.d.ts +167 -0
  628. package/platform/types/components/aws/v5/cluster.d.ts.map +1 -0
  629. package/platform/types/components/aws/v5/cognito-user-pool-client.d.ts +69 -0
  630. package/platform/types/components/aws/v5/cognito-user-pool-client.d.ts.map +1 -0
  631. package/platform/types/components/aws/v5/cognito-user-pool.d.ts +396 -0
  632. package/platform/types/components/aws/v5/cognito-user-pool.d.ts.map +1 -0
  633. package/platform/types/components/aws/v5/cron-v2.d.ts +206 -0
  634. package/platform/types/components/aws/v5/cron-v2.d.ts.map +1 -0
  635. package/platform/types/components/aws/v5/dsql.d.ts +453 -0
  636. package/platform/types/components/aws/v5/dsql.d.ts.map +1 -0
  637. package/platform/types/components/aws/v5/dynamo.d.ts +328 -0
  638. package/platform/types/components/aws/v5/dynamo.d.ts.map +1 -0
  639. package/platform/types/components/aws/v5/efs.d.ts +178 -0
  640. package/platform/types/components/aws/v5/efs.d.ts.map +1 -0
  641. package/platform/types/components/aws/v5/function.d.ts +582 -0
  642. package/platform/types/components/aws/v5/function.d.ts.map +1 -0
  643. package/platform/types/components/aws/v5/index.d.ts +27 -0
  644. package/platform/types/components/aws/v5/index.d.ts.map +1 -0
  645. package/platform/types/components/aws/v5/mysql.d.ts +347 -0
  646. package/platform/types/components/aws/v5/mysql.d.ts.map +1 -0
  647. package/platform/types/components/aws/v5/postgres.d.ts +348 -0
  648. package/platform/types/components/aws/v5/postgres.d.ts.map +1 -0
  649. package/platform/types/components/aws/v5/queue.d.ts +190 -0
  650. package/platform/types/components/aws/v5/queue.d.ts.map +1 -0
  651. package/platform/types/components/aws/v5/redis.d.ts +214 -0
  652. package/platform/types/components/aws/v5/redis.d.ts.map +1 -0
  653. package/platform/types/components/aws/v5/service.d.ts +1347 -0
  654. package/platform/types/components/aws/v5/service.d.ts.map +1 -0
  655. package/platform/types/components/aws/v5/sns-topic.d.ts +226 -0
  656. package/platform/types/components/aws/v5/sns-topic.d.ts.map +1 -0
  657. package/platform/types/components/aws/v5/task.d.ts +346 -0
  658. package/platform/types/components/aws/v5/task.d.ts.map +1 -0
  659. package/platform/types/components/aws/vector.d.ts +163 -0
  660. package/platform/types/components/aws/vector.d.ts.map +1 -0
  661. package/platform/types/components/aws/vpc-v1.d.ts +208 -0
  662. package/platform/types/components/aws/vpc-v1.d.ts.map +1 -0
  663. package/platform/types/components/aws/vpc.d.ts +491 -0
  664. package/platform/types/components/aws/vpc.d.ts.map +1 -0
  665. package/platform/types/components/aws/workflow.d.ts +331 -0
  666. package/platform/types/components/aws/workflow.d.ts.map +1 -0
  667. package/platform/types/components/base/base-site.d.ts +53 -0
  668. package/platform/types/components/base/base-site.d.ts.map +1 -0
  669. package/platform/types/components/base/base-ssr-site.d.ts +13 -0
  670. package/platform/types/components/base/base-ssr-site.d.ts.map +1 -0
  671. package/platform/types/components/base/base-static-site.d.ts +199 -0
  672. package/platform/types/components/base/base-static-site.d.ts.map +1 -0
  673. package/platform/types/components/cloudflare/account-id.d.ts +2 -0
  674. package/platform/types/components/cloudflare/account-id.d.ts.map +1 -0
  675. package/platform/types/components/cloudflare/ai.d.ts +68 -0
  676. package/platform/types/components/cloudflare/ai.d.ts.map +1 -0
  677. package/platform/types/components/cloudflare/astro.d.ts +249 -0
  678. package/platform/types/components/cloudflare/astro.d.ts.map +1 -0
  679. package/platform/types/components/cloudflare/auth.d.ts +22 -0
  680. package/platform/types/components/cloudflare/auth.d.ts.map +1 -0
  681. package/platform/types/components/cloudflare/binding.d.ts +109 -0
  682. package/platform/types/components/cloudflare/binding.d.ts.map +1 -0
  683. package/platform/types/components/cloudflare/bucket.d.ts +98 -0
  684. package/platform/types/components/cloudflare/bucket.d.ts.map +1 -0
  685. package/platform/types/components/cloudflare/cron.d.ts +151 -0
  686. package/platform/types/components/cloudflare/cron.d.ts.map +1 -0
  687. package/platform/types/components/cloudflare/d1.d.ts +142 -0
  688. package/platform/types/components/cloudflare/d1.d.ts.map +1 -0
  689. package/platform/types/components/cloudflare/dns.d.ts +100 -0
  690. package/platform/types/components/cloudflare/dns.d.ts.map +1 -0
  691. package/platform/types/components/cloudflare/durable-object.d.ts +125 -0
  692. package/platform/types/components/cloudflare/durable-object.d.ts.map +1 -0
  693. package/platform/types/components/cloudflare/experimental/index.d.ts +4 -0
  694. package/platform/types/components/cloudflare/experimental/index.d.ts.map +1 -0
  695. package/platform/types/components/cloudflare/experimental/solid-start.d.ts +219 -0
  696. package/platform/types/components/cloudflare/experimental/solid-start.d.ts.map +1 -0
  697. package/platform/types/components/cloudflare/experimental/static-site.d.ts +3 -0
  698. package/platform/types/components/cloudflare/experimental/static-site.d.ts.map +1 -0
  699. package/platform/types/components/cloudflare/helpers/compatibility.d.ts +21 -0
  700. package/platform/types/components/cloudflare/helpers/compatibility.d.ts.map +1 -0
  701. package/platform/types/components/cloudflare/helpers/fetch.d.ts +19 -0
  702. package/platform/types/components/cloudflare/helpers/fetch.d.ts.map +1 -0
  703. package/platform/types/components/cloudflare/helpers/validation.d.ts +15 -0
  704. package/platform/types/components/cloudflare/helpers/validation.d.ts.map +1 -0
  705. package/platform/types/components/cloudflare/helpers/worker-builder.d.ts +10 -0
  706. package/platform/types/components/cloudflare/helpers/worker-builder.d.ts.map +1 -0
  707. package/platform/types/components/cloudflare/helpers/wrangler.d.ts +31 -0
  708. package/platform/types/components/cloudflare/helpers/wrangler.d.ts.map +1 -0
  709. package/platform/types/components/cloudflare/hyperdrive.d.ts +302 -0
  710. package/platform/types/components/cloudflare/hyperdrive.d.ts.map +1 -0
  711. package/platform/types/components/cloudflare/index.d.ts +25 -0
  712. package/platform/types/components/cloudflare/index.d.ts.map +1 -0
  713. package/platform/types/components/cloudflare/kv.d.ts +140 -0
  714. package/platform/types/components/cloudflare/kv.d.ts.map +1 -0
  715. package/platform/types/components/cloudflare/providers/dns-record.d.ts +21 -0
  716. package/platform/types/components/cloudflare/providers/dns-record.d.ts.map +1 -0
  717. package/platform/types/components/cloudflare/providers/kv-data.d.ts +23 -0
  718. package/platform/types/components/cloudflare/providers/kv-data.d.ts.map +1 -0
  719. package/platform/types/components/cloudflare/providers/worker-assets.d.ts +19 -0
  720. package/platform/types/components/cloudflare/providers/worker-assets.d.ts.map +1 -0
  721. package/platform/types/components/cloudflare/providers/worker-placement.d.ts +27 -0
  722. package/platform/types/components/cloudflare/providers/worker-placement.d.ts.map +1 -0
  723. package/platform/types/components/cloudflare/providers/worker-script.d.ts +23 -0
  724. package/platform/types/components/cloudflare/providers/worker-script.d.ts.map +1 -0
  725. package/platform/types/components/cloudflare/providers/worker-url.d.ts +24 -0
  726. package/platform/types/components/cloudflare/providers/worker-url.d.ts.map +1 -0
  727. package/platform/types/components/cloudflare/providers/zone-lookup.d.ts +22 -0
  728. package/platform/types/components/cloudflare/providers/zone-lookup.d.ts.map +1 -0
  729. package/platform/types/components/cloudflare/queue-worker-subscriber.d.ts +122 -0
  730. package/platform/types/components/cloudflare/queue-worker-subscriber.d.ts.map +1 -0
  731. package/platform/types/components/cloudflare/queue.d.ts +235 -0
  732. package/platform/types/components/cloudflare/queue.d.ts.map +1 -0
  733. package/platform/types/components/cloudflare/rate-limit.d.ts +117 -0
  734. package/platform/types/components/cloudflare/rate-limit.d.ts.map +1 -0
  735. package/platform/types/components/cloudflare/react-router.d.ts +262 -0
  736. package/platform/types/components/cloudflare/react-router.d.ts.map +1 -0
  737. package/platform/types/components/cloudflare/ssr-site.d.ts +60 -0
  738. package/platform/types/components/cloudflare/ssr-site.d.ts.map +1 -0
  739. package/platform/types/components/cloudflare/static-site-v2.d.ts +302 -0
  740. package/platform/types/components/cloudflare/static-site-v2.d.ts.map +1 -0
  741. package/platform/types/components/cloudflare/static-site.d.ts +270 -0
  742. package/platform/types/components/cloudflare/static-site.d.ts.map +1 -0
  743. package/platform/types/components/cloudflare/tan-stack-start.d.ts +259 -0
  744. package/platform/types/components/cloudflare/tan-stack-start.d.ts.map +1 -0
  745. package/platform/types/components/cloudflare/worker.d.ts +483 -0
  746. package/platform/types/components/cloudflare/worker.d.ts.map +1 -0
  747. package/platform/types/components/cloudflare/workflow.d.ts +248 -0
  748. package/platform/types/components/cloudflare/workflow.d.ts.map +1 -0
  749. package/platform/types/components/component.d.ts +67 -0
  750. package/platform/types/components/component.d.ts.map +1 -0
  751. package/platform/types/components/core.d.ts +16 -0
  752. package/platform/types/components/core.d.ts.map +1 -0
  753. package/platform/types/components/cpu.d.ts +3 -0
  754. package/platform/types/components/cpu.d.ts.map +1 -0
  755. package/platform/types/components/dns.d.ts +63 -0
  756. package/platform/types/components/dns.d.ts.map +1 -0
  757. package/platform/types/components/duration.d.ts +9 -0
  758. package/platform/types/components/duration.d.ts.map +1 -0
  759. package/platform/types/components/error.d.ts +4 -0
  760. package/platform/types/components/error.d.ts.map +1 -0
  761. package/platform/types/components/esbuild.d.ts +3 -0
  762. package/platform/types/components/esbuild.d.ts.map +1 -0
  763. package/platform/types/components/experimental/dev-command.d.ts +99 -0
  764. package/platform/types/components/experimental/dev-command.d.ts.map +1 -0
  765. package/platform/types/components/experimental/index.d.ts +2 -0
  766. package/platform/types/components/experimental/index.d.ts.map +1 -0
  767. package/platform/types/components/groups.d.ts +6 -0
  768. package/platform/types/components/groups.d.ts.map +1 -0
  769. package/platform/types/components/index.d.ts +5 -0
  770. package/platform/types/components/index.d.ts.map +1 -0
  771. package/platform/types/components/input.d.ts +3 -0
  772. package/platform/types/components/input.d.ts.map +1 -0
  773. package/platform/types/components/link.d.ts +41 -0
  774. package/platform/types/components/link.d.ts.map +1 -0
  775. package/platform/types/components/linkable.d.ts +301 -0
  776. package/platform/types/components/linkable.d.ts.map +1 -0
  777. package/platform/types/components/naming-rules.d.ts +32 -0
  778. package/platform/types/components/naming-rules.d.ts.map +1 -0
  779. package/platform/types/components/naming.d.ts +21 -0
  780. package/platform/types/components/naming.d.ts.map +1 -0
  781. package/platform/types/components/parts-component.d.ts +241 -0
  782. package/platform/types/components/parts-component.d.ts.map +1 -0
  783. package/platform/types/components/parts.d.ts +194 -0
  784. package/platform/types/components/parts.d.ts.map +1 -0
  785. package/platform/types/components/path.d.ts +2 -0
  786. package/platform/types/components/path.d.ts.map +1 -0
  787. package/platform/types/components/rpc/rpc.d.ts +19 -0
  788. package/platform/types/components/rpc/rpc.d.ts.map +1 -0
  789. package/platform/types/components/secret.d.ts +123 -0
  790. package/platform/types/components/secret.d.ts.map +1 -0
  791. package/platform/types/components/size.d.ts +5 -0
  792. package/platform/types/components/size.d.ts.map +1 -0
  793. package/platform/types/components/takeover.d.ts +88 -0
  794. package/platform/types/components/takeover.d.ts.map +1 -0
  795. package/platform/types/components/transform.d.ts +34 -0
  796. package/platform/types/components/transform.d.ts.map +1 -0
  797. package/platform/types/components/vercel/account-id.d.ts +2 -0
  798. package/platform/types/components/vercel/account-id.d.ts.map +1 -0
  799. package/platform/types/components/vercel/dns.d.ts +73 -0
  800. package/platform/types/components/vercel/dns.d.ts.map +1 -0
  801. package/platform/types/components/vercel/index.d.ts +3 -0
  802. package/platform/types/components/vercel/index.d.ts.map +1 -0
  803. package/platform/types/components/vercel/providers/dns-record.d.ts +15 -0
  804. package/platform/types/components/vercel/providers/dns-record.d.ts.map +1 -0
  805. package/platform/types/config.d.ts +1437 -0
  806. package/platform/types/config.d.ts.map +1 -0
  807. package/platform/types/global-aliases.d.ts +37 -0
  808. package/platform/types/global.d.ts +374 -0
  809. package/platform/types/internal.d.ts +18 -0
  810. package/platform/types/runtime/worker/unenv.d.ts +14 -0
  811. package/platform/types/testing/global.d.ts +11 -0
  812. package/platform/types/testing/global.d.ts.map +1 -0
  813. package/platform/types/testing/index.d.ts +80 -0
  814. package/platform/types/testing/index.d.ts.map +1 -0
  815. package/platform/types/testing/mock.d.ts +136 -0
  816. package/platform/types/testing/mock.d.ts.map +1 -0
  817. package/platform/types/testing/vitest.d.ts +19 -0
  818. package/platform/types/testing/vitest.d.ts.map +1 -0
  819. package/platform/types/util/compare-semver.d.ts +4 -0
  820. package/platform/types/util/compare-semver.d.ts.map +1 -0
  821. package/platform/types/util/fs.d.ts +5 -0
  822. package/platform/types/util/fs.d.ts.map +1 -0
  823. package/platform/types/util/lazy.d.ts +2 -0
  824. package/platform/types/util/lazy.d.ts.map +1 -0
  825. package/platform/types/util/minify.d.ts +2 -0
  826. package/platform/types/util/minify.d.ts.map +1 -0
  827. package/platform/types/util/package.d.ts +10 -0
  828. package/platform/types/util/package.d.ts.map +1 -0
  829. package/platform/types/util/semaphore.d.ts +9 -0
  830. package/platform/types/util/semaphore.d.ts.map +1 -0
  831. package/platform/types/util/warn.d.ts +2 -0
  832. package/platform/types/util/warn.d.ts.map +1 -0
@@ -0,0 +1,1001 @@
1
+ import {
2
+ ComponentResourceOptions,
3
+ Output,
4
+ OutputInstance,
5
+ Resource,
6
+ all,
7
+ interpolate,
8
+ output,
9
+ } from "@pulumi/pulumi";
10
+ import {
11
+ cloudwatch,
12
+ getCallerIdentityOutput,
13
+ getPartitionOutput,
14
+ iam,
15
+ lambda,
16
+ s3,
17
+ sns,
18
+ sqs,
19
+ types,
20
+ } from "@pulumi/aws";
21
+ import {
22
+ V5Args,
23
+ component,
24
+ deferred,
25
+ many,
26
+ optional,
27
+ } from "../../parts-component";
28
+ import { notAnOption, plain, withDefault } from "../../args";
29
+ import type { Plain } from "../../args";
30
+ import type { Input } from "../../input";
31
+ import { VisibleError } from "../../error";
32
+ import { toSeconds } from "../../duration";
33
+ import { Function } from "./function";
34
+ import {
35
+ type FunctionDefinition,
36
+ functionPart,
37
+ } from "../helpers/function-part";
38
+ import { invokePermissionArgs } from "../helpers/function-permission";
39
+ import { sendPolicyArgs } from "../helpers/queue-policy";
40
+ import { permission } from "../permission";
41
+ import type {
42
+ BucketArgs as OriginalBucketArgs,
43
+ BucketEventBridgeSubscriberArgs as OriginalBucketEventBridgeSubscriberArgs,
44
+ BucketNotificationsArgs,
45
+ } from "../bucket";
46
+ import type { Queue as OriginalQueue } from "../queue";
47
+ import type { Queue } from "./queue";
48
+ import type { SnsTopic as OriginalSnsTopic } from "../sns-topic";
49
+ import type { SnsTopic } from "./sns-topic";
50
+
51
+ const parts = () => ({
52
+ /**
53
+ * The Amazon S3 bucket.
54
+ */
55
+ bucket: s3.Bucket,
56
+ /**
57
+ * The bucket's versioning configuration, created when `versioning` is on.
58
+ */
59
+ versioning: optional(s3.BucketVersioning),
60
+ /**
61
+ * The bucket's public access block. It isn't created when
62
+ * `publicAccessBlock` is `false`.
63
+ */
64
+ publicAccessBlock: optional(s3.BucketPublicAccessBlock),
65
+ /**
66
+ * The bucket's policy.
67
+ */
68
+ policy: optional(s3.BucketPolicy),
69
+ /**
70
+ * The bucket's CORS configuration. It isn't created when `cors` is `false`.
71
+ */
72
+ cors: optional(s3.BucketCorsConfiguration),
73
+ /**
74
+ * The bucket's lifecycle configuration, created when `lifecycle` has rules.
75
+ */
76
+ lifecycle: optional(s3.BucketLifecycleConfiguration),
77
+ /**
78
+ * The bucket's notification configuration, created by `notify`. A bucket has
79
+ * one, which holds all of its notifications.
80
+ */
81
+ notification: optional(s3.BucketNotification),
82
+ /**
83
+ * The functions that are notified, by notification name.
84
+ */
85
+ subscriber: many(deferred(Function)),
86
+ /**
87
+ * The permissions that let the bucket invoke each notified function, by
88
+ * notification name.
89
+ */
90
+ permission: many(lambda.Permission),
91
+ /**
92
+ * The policies that let the bucket send to each notified queue, by
93
+ * notification name.
94
+ */
95
+ queuePolicy: many(sqs.QueuePolicy),
96
+ /**
97
+ * The policies that let the bucket publish to each notified topic, by
98
+ * notification name.
99
+ */
100
+ topicPolicy: many(sns.TopicPolicy),
101
+ /**
102
+ * The functions subscribed to the bucket's events on the default
103
+ * EventBridge bus, by subscriber name.
104
+ */
105
+ eventBridgeSubscriber: many(deferred(Function)),
106
+ /**
107
+ * The permissions that let EventBridge invoke each of those functions, by
108
+ * subscriber name.
109
+ */
110
+ eventBridgePermission: many(lambda.Permission),
111
+ /**
112
+ * The rules that match the bucket's events for each subscriber, by
113
+ * subscriber name.
114
+ */
115
+ eventBridgeRule: many(cloudwatch.EventRule),
116
+ /**
117
+ * The targets that send what each rule matches to its function, by
118
+ * subscriber name.
119
+ */
120
+ eventBridgeTarget: many(cloudwatch.EventTarget),
121
+ });
122
+
123
+ /** An arg as a plain value: what's left when it can't be an output or a promise. */
124
+
125
+ type Notification = Plain<
126
+ Plain<NonNullable<BucketNotificationsArgs["notifications"]>>[number]
127
+ >;
128
+
129
+ export interface BucketArgs
130
+ extends V5Args<
131
+ Omit<OriginalBucketArgs, "public" | "cors" | "lifecycle" | "versioning">,
132
+ typeof parts
133
+ > {
134
+ /**
135
+ * The CORS configuration for the bucket. Defaults to `true`, which is the same as:
136
+ *
137
+ * ```js
138
+ * {
139
+ * cors: {
140
+ * allowHeaders: ["*"],
141
+ * allowOrigins: ["*"],
142
+ * allowMethods: ["DELETE", "GET", "HEAD", "POST", "PUT"],
143
+ * exposeHeaders: ["ETag"],
144
+ * maxAge: "0 seconds"
145
+ * }
146
+ * }
147
+ * ```
148
+ *
149
+ * Whether there is a CORS configuration has to be a plain value. Its fields
150
+ * can be outputs.
151
+ *
152
+ * @default `true`
153
+ * @example
154
+ * Turn off CORS.
155
+ *
156
+ * ```js
157
+ * {
158
+ * cors: false
159
+ * }
160
+ * ```
161
+ */
162
+ cors?: Plain<OriginalBucketArgs["cors"]>;
163
+ /**
164
+ * The lifecycle rules for the bucket. The list has to be a plain array; each
165
+ * rule can be an output.
166
+ *
167
+ * @example
168
+ * Delete objects in the `tmp/` folder after 30 days.
169
+ *
170
+ * ```js
171
+ * {
172
+ * lifecycle: [
173
+ * {
174
+ * prefix: "tmp/",
175
+ * expiresIn: "30 days"
176
+ * }
177
+ * ]
178
+ * }
179
+ * ```
180
+ */
181
+ lifecycle?: Plain<OriginalBucketArgs["lifecycle"]>;
182
+ /**
183
+ * Enable versioning for the bucket, which keeps multiple versions of an
184
+ * object. It has to be a plain value.
185
+ *
186
+ * @default `false`
187
+ * @example
188
+ * ```js
189
+ * {
190
+ * versioning: true
191
+ * }
192
+ * ```
193
+ */
194
+ versioning?: boolean;
195
+ /**
196
+ * Whether to create the bucket's public access block. Set it to `false` in
197
+ * an account that doesn't let you manage them.
198
+ *
199
+ * @default `true`
200
+ * @example
201
+ * ```js
202
+ * {
203
+ * publicAccessBlock: false
204
+ * }
205
+ * ```
206
+ */
207
+ publicAccessBlock?: boolean;
208
+ }
209
+
210
+ export interface BucketNotificationArgs
211
+ extends Omit<Notification, "name" | "queue" | "topic"> {
212
+ /**
213
+ * The name of the notification. It's the notification's id in the bucket's
214
+ * `nodes` and `transform`, and it's used in the names of the resources
215
+ * created for it.
216
+ *
217
+ * Must be unique across the bucket's notifications.
218
+ */
219
+ name: string;
220
+ /**
221
+ * The queue that'll be notified: a queue component, or the ARN of a queue.
222
+ */
223
+ queue?: Input<string | OriginalQueue | Queue>;
224
+ /**
225
+ * The topic that'll be notified: a topic component, or the ARN of a topic.
226
+ */
227
+ topic?: Input<string | OriginalSnsTopic | SnsTopic>;
228
+ }
229
+
230
+ export interface BucketEventBridgeSubscriberArgs
231
+ extends Omit<OriginalBucketEventBridgeSubscriberArgs, "transform"> {}
232
+
233
+ export interface BucketNotifyArgs {
234
+ /**
235
+ * Publish every S3 event of the bucket to the account's default EventBridge bus. It
236
+ * doesn't send them anywhere by itself: subscribe to them with
237
+ * [`subscribeEventBridge`](#subscribeeventbridge), or add your own rules on the default bus.
238
+ *
239
+ * S3 keeps one notification configuration for each bucket, so set it in the same call
240
+ * as the `notifications`.
241
+ *
242
+ * @default `false`
243
+ * @example
244
+ * ```js
245
+ * {
246
+ * eventBridge: true,
247
+ * notifications: [{ name: "MySubscriber", queue: myQueue }]
248
+ * }
249
+ * ```
250
+ */
251
+ eventBridge?: Input<boolean>;
252
+ /**
253
+ * The notifications of the bucket. Each one has a `name` and one of
254
+ * `function`, `queue` or `topic`. Leave it out if the bucket only uses
255
+ * `eventBridge`.
256
+ *
257
+ * @example
258
+ * ```js
259
+ * {
260
+ * notifications: [
261
+ * {
262
+ * name: "MySubscriber",
263
+ * function: "src/subscriber.handler",
264
+ * events: ["s3:ObjectCreated:*"],
265
+ * filterPrefix: "images/"
266
+ * }
267
+ * ]
268
+ * }
269
+ * ```
270
+ */
271
+ notifications?: BucketNotificationArgs[];
272
+ }
273
+
274
+ /**
275
+ * The `Bucket` component lets you add an [AWS S3 Bucket](https://aws.amazon.com/s3/) to your app.
276
+ *
277
+ * It takes the args of [`sst.aws.Bucket`](/docs/component/aws/bucket), a few of them written
278
+ * differently. It's built from parts, so every resource it creates can be transformed, is
279
+ * available in `nodes`, and can be swapped for one you already have. That includes the
280
+ * resources of each notification.
281
+ *
282
+ * @example
283
+ *
284
+ * #### Create a bucket
285
+ *
286
+ * ```ts title="sst.config.ts"
287
+ * const bucket = new sst.aws.v5.Bucket("MyBucket");
288
+ * ```
289
+ *
290
+ * #### Make it public
291
+ *
292
+ * ```ts title="sst.config.ts"
293
+ * new sst.aws.v5.Bucket("MyBucket", {
294
+ * access: "public"
295
+ * });
296
+ * ```
297
+ *
298
+ * #### Add notifications
299
+ *
300
+ * Each notification has a name, and sends events to a function, a queue or a topic.
301
+ *
302
+ * ```ts title="sst.config.ts"
303
+ * bucket.notify({
304
+ * notifications: [
305
+ * {
306
+ * name: "MySubscriber",
307
+ * function: "src/subscriber.handler"
308
+ * }
309
+ * ]
310
+ * });
311
+ * ```
312
+ *
313
+ * #### Subscribe to its events in EventBridge
314
+ *
315
+ * Publish the bucket's events to the default EventBridge bus, then subscribe to them.
316
+ *
317
+ * ```ts title="sst.config.ts"
318
+ * bucket
319
+ * .notify({ eventBridge: true })
320
+ * .subscribeEventBridge("Resizer", "src/resize.handler", {
321
+ * pattern: { detailType: ["Object Created"] }
322
+ * });
323
+ * ```
324
+ *
325
+ * #### Link the bucket to a resource
326
+ *
327
+ * ```ts title="sst.config.ts"
328
+ * new sst.aws.Nextjs("MyWeb", {
329
+ * link: [bucket]
330
+ * });
331
+ * ```
332
+ *
333
+ * Once linked, you can generate a pre-signed URL to upload files in your app.
334
+ *
335
+ * ```ts title="app/page.tsx" {1,7}
336
+ * import { Resource } from "sst";
337
+ * import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
338
+ * import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";
339
+ *
340
+ * const command = new PutObjectCommand({
341
+ * Key: "file.txt",
342
+ * Bucket: Resource.MyBucket.name
343
+ * });
344
+ * await getSignedUrl(new S3Client({}), command);
345
+ * ```
346
+ *
347
+ * #### Switch from `sst.aws.Bucket`
348
+ *
349
+ * Change `sst.aws.Bucket` to `sst.aws.v5.Bucket` and keep the name. The bucket, what
350
+ * configures it, and the resources `notify` created are kept. A few things are written
351
+ * differently:
352
+ *
353
+ * - `versioning`, `cors` and `lifecycle` have to be plain values, not outputs.
354
+ * - `transform: { publicAccessBlock: false }` becomes `publicAccessBlock: false`.
355
+ * - `public: true` becomes `access: "public"`.
356
+ * - The `transform` of `notify` becomes the bucket's `transform.notification`.
357
+ * - `subscribe`, `subscribeQueue` and `subscribeTopic` are gone. Use `notify`, which keeps
358
+ * the subscriber you had.
359
+ * - `sst.aws.Bucket.subscribeEventBridge(name, bucketName, ...)` is `subscribeEventBridge`
360
+ * on the bucket, or on `get` for a bucket that isn't in your app. What it created is
361
+ * kept. It's created with the bucket's `provider`, where `sst.aws.Bucket` used your app's:
362
+ * if your bucket has a `provider`, its rule, target and permission are replaced on
363
+ * switch.
364
+ * - `get` gives its options to the component, so a `provider` or `parent` you pass it
365
+ * applies to the bucket's notifications too. `sst.aws.Bucket.get` gave them to the bucket it
366
+ * looked up and to nothing else. If you pass `get` a `provider` and call `notify` on that
367
+ * bucket, its notifications are replaced on switch, to be created with that provider:
368
+ * remove them and deploy before you switch, then add them back.
369
+ *
370
+ * ```ts title="sst.config.ts" del={1} ins={2}
371
+ * const bucket = new sst.aws.Bucket("MyBucket");
372
+ * const bucket = new sst.aws.v5.Bucket("MyBucket");
373
+ * ```
374
+ *
375
+ * #### Use a bucket you already have
376
+ *
377
+ * Pass the bucket, or its name. The bucket is used the way it is: the component doesn't
378
+ * configure it.
379
+ *
380
+ * ```ts title="sst.config.ts"
381
+ * new sst.aws.v5.Bucket("MyBucket", {
382
+ * existing: {
383
+ * bucket: "app-dev-mybucket-12345678"
384
+ * }
385
+ * });
386
+ * ```
387
+ */
388
+ export class Bucket extends component("sst:aws:Bucket", parts) {
389
+ constructor(
390
+ name: string,
391
+ args: BucketArgs = {},
392
+ opts?: ComponentResourceOptions,
393
+ ) {
394
+ super(name, args, opts);
395
+
396
+ notAnOption(args, "public", `Use "access" instead: access: "public".`);
397
+ const noBlock: unknown = args.transform?.publicAccessBlock;
398
+ if (noBlock === false)
399
+ throw new VisibleError(
400
+ `In the "${name}" bucket, "transform.publicAccessBlock" changes the public access block, so it can't be false. To not create one, set "publicAccessBlock" to false.`,
401
+ );
402
+
403
+ const bucket = this.part("bucket", { forceDestroy: true });
404
+
405
+ // A bucket that's already there is used the way it is
406
+ if (this.existingPart("bucket")) {
407
+ const set = CONFIGURES.filter((arg) => args[arg] !== undefined);
408
+ if (set.length > 0)
409
+ throw new VisibleError(
410
+ `The "${name}" bucket is given an existing "bucket", which it uses the way it is. Remove ${set.map((arg) => `"${arg}"`).join(", ")} from its args.`,
411
+ );
412
+ return;
413
+ }
414
+
415
+ if (plain(args.versioning, `The "versioning" of the "${name}" bucket`))
416
+ this.part("versioning", {
417
+ bucket: bucket.bucket,
418
+ versioningConfiguration: { status: "Enabled" },
419
+ });
420
+
421
+ const isPrivate = output(args.access).apply((v) => v !== "public");
422
+ const publicAccessBlock =
423
+ plain(
424
+ args.publicAccessBlock,
425
+ `The "publicAccessBlock" of the "${name}" bucket`,
426
+ ) === false
427
+ ? undefined
428
+ : this.part("publicAccessBlock", {
429
+ bucket: bucket.bucket,
430
+ blockPublicAcls: true,
431
+ blockPublicPolicy: isPrivate,
432
+ ignorePublicAcls: true,
433
+ restrictPublicBuckets: isPrivate,
434
+ });
435
+
436
+ this.part(
437
+ "policy",
438
+ { bucket: bucket.bucket, policy: policyDocument(bucket.arn, args, opts) },
439
+ { dependsOn: publicAccessBlock },
440
+ );
441
+
442
+ const cors = plain(args.cors, `The "cors" of the "${name}" bucket`);
443
+ if (cors !== false)
444
+ this.part("cors", {
445
+ bucket: bucket.bucket,
446
+ corsRules: [
447
+ {
448
+ allowedHeaders: withDefault(cors?.allowHeaders, ["*"]),
449
+ allowedMethods: withDefault(cors?.allowMethods, [
450
+ "DELETE",
451
+ "GET",
452
+ "HEAD",
453
+ "POST",
454
+ "PUT",
455
+ ]),
456
+ allowedOrigins: withDefault(cors?.allowOrigins, ["*"]),
457
+ exposeHeaders: withDefault(cors?.exposeHeaders, ["ETag"]),
458
+ maxAgeSeconds: withDefault(cors?.maxAge, "0 seconds", toSeconds),
459
+ },
460
+ ],
461
+ });
462
+
463
+ const lifecycle = plain(
464
+ args.lifecycle,
465
+ `The "lifecycle" of the "${name}" bucket`,
466
+ );
467
+ if (lifecycle && lifecycle.length > 0)
468
+ this.part("lifecycle", {
469
+ bucket: bucket.bucket,
470
+ rules: output(lifecycle).apply((rules) => {
471
+ const ids = lifecycleIds(name, rules);
472
+ return rules.map((rule, index) => ({
473
+ id: ids[index],
474
+ status: rule.enabled !== false ? "Enabled" : "Disabled",
475
+ expiration:
476
+ rule.expiresIn || rule.expiresAt
477
+ ? {
478
+ days: rule.expiresIn
479
+ ? toSeconds(rule.expiresIn) / 86400
480
+ : undefined,
481
+ date: rule.expiresAt
482
+ ? `${rule.expiresAt}T00:00:00Z`
483
+ : undefined,
484
+ }
485
+ : undefined,
486
+ filter: rule.prefix ? { prefix: rule.prefix } : undefined,
487
+ }));
488
+ }),
489
+ });
490
+ }
491
+
492
+ /**
493
+ * The generated name of the S3 Bucket.
494
+ */
495
+ public get name() {
496
+ return this.afterPolicy(this.nodes.bucket.bucket);
497
+ }
498
+
499
+ /**
500
+ * The domain name of the bucket. Has the format `${bucketName}.s3.amazonaws.com`.
501
+ */
502
+ public get domain() {
503
+ return this.afterPolicy(this.nodes.bucket.bucketDomainName);
504
+ }
505
+
506
+ /**
507
+ * The ARN of the S3 Bucket.
508
+ */
509
+ public get arn() {
510
+ return this.afterPolicy(this.nodes.bucket.arn);
511
+ }
512
+
513
+ // A bucket has one policy. Whatever uses the bucket through its name, ARN
514
+ // or domain waits for this one, so a second policy fails instead of racing
515
+ // it, and nothing reaches the bucket before the policy is in place.
516
+ private afterPolicy(value: Output<string>) {
517
+ const policy = this.nodes.policy;
518
+ return policy ? all([value, policy.id]).apply(([value]) => value) : value;
519
+ }
520
+
521
+ /**
522
+ * Subscribe to the events of this bucket with functions, queues and topics. A bucket has
523
+ * one notification configuration, so pass all the notifications in one call.
524
+ *
525
+ * @param args The notifications.
526
+ *
527
+ * @example
528
+ *
529
+ * Notify a function, a queue and a topic.
530
+ *
531
+ * ```js title="sst.config.ts"
532
+ * const queue = new sst.aws.v5.Queue("MyQueue");
533
+ * const topic = new sst.aws.v5.SnsTopic("MyTopic");
534
+ *
535
+ * bucket.notify({
536
+ * notifications: [
537
+ * {
538
+ * name: "MySubscriber",
539
+ * function: "src/subscriber.handler"
540
+ * },
541
+ * {
542
+ * name: "MyQueue",
543
+ * queue
544
+ * },
545
+ * {
546
+ * name: "MyTopic",
547
+ * topic
548
+ * }
549
+ * ]
550
+ * });
551
+ * ```
552
+ *
553
+ * Only notify on some events, for some of the objects.
554
+ *
555
+ * ```js title="sst.config.ts"
556
+ * bucket.notify({
557
+ * notifications: [
558
+ * {
559
+ * name: "MySubscriber",
560
+ * function: "src/subscriber.handler",
561
+ * events: ["s3:ObjectCreated:*"],
562
+ * filterPrefix: "images/",
563
+ * filterSuffix: ".jpg"
564
+ * }
565
+ * ]
566
+ * });
567
+ * ```
568
+ *
569
+ * Customize the function, or pass in the ARN of one you already have.
570
+ *
571
+ * ```js title="sst.config.ts"
572
+ * bucket.notify({
573
+ * notifications: [
574
+ * {
575
+ * name: "MySubscriber",
576
+ * function: {
577
+ * handler: "src/subscriber.handler",
578
+ * timeout: "60 seconds"
579
+ * }
580
+ * },
581
+ * {
582
+ * name: "MyOtherSubscriber",
583
+ * function: "arn:aws:lambda:us-east-1:123456789012:function:my-function"
584
+ * }
585
+ * ]
586
+ * });
587
+ * ```
588
+ *
589
+ * To change how the notification's resources are created, use the bucket's `transform`.
590
+ * A function there is given the notification's name.
591
+ *
592
+ * ```js title="sst.config.ts"
593
+ * new sst.aws.v5.Bucket("MyBucket", {
594
+ * transform: {
595
+ * subscriber: (args, opts, name, notification) => {
596
+ * if (notification === "MySubscriber") args.memory = "2048 MB";
597
+ * }
598
+ * }
599
+ * });
600
+ * ```
601
+ *
602
+ * To be notified of the events of a bucket that isn't in your app, reference it with
603
+ * `get` first.
604
+ *
605
+ * ```js title="sst.config.ts"
606
+ * sst.aws.v5.Bucket.get("Uploads", "my-uploads-bucket").notify({
607
+ * notifications: [{ name: "MySubscriber", function: "src/subscriber.handler" }]
608
+ * });
609
+ * ```
610
+ */
611
+ public notify(args: BucketNotifyArgs) {
612
+ const name = this.componentName;
613
+ notAnOption(
614
+ args,
615
+ "transform",
616
+ `Use the "transform" of the "${name}" bucket: its "notification", and "subscriber", "permission", "queuePolicy" and "topicPolicy" for what each notification creates.`,
617
+ );
618
+ if (this.nodes.notification)
619
+ throw new VisibleError(
620
+ `Cannot call "notify" on the "${name}" bucket multiple times. Calling it again will override previous notifications.`,
621
+ );
622
+
623
+ if (!args.eventBridge && !args.notifications)
624
+ throw new VisibleError(
625
+ `Cannot call "notify" on the "${name}" bucket without notifications or EventBridge enabled.`,
626
+ );
627
+ const notifications = plain(
628
+ args.notifications ?? [],
629
+ `The "notifications" of the "${name}" bucket`,
630
+ );
631
+
632
+ const lambdaFunctions: types.input.s3.BucketNotificationLambdaFunction[] = [];
633
+ const queues: types.input.s3.BucketNotificationQueue[] = [];
634
+ const topics: types.input.s3.BucketNotificationTopic[] = [];
635
+ const dependsOn: Resource[] = [];
636
+ const names = new Set<string>();
637
+
638
+ for (const n of notifications) {
639
+ plain(n, `Each notification of the "${name}" bucket`);
640
+ plain(n.name, `The "name" of each notification of the "${name}" bucket`);
641
+ if (names.has(n.name))
642
+ throw new VisibleError(
643
+ `The "${name}" bucket already has a notification named "${n.name}". Give each notification its own name.`,
644
+ );
645
+ names.add(n.name);
646
+
647
+ const targets = [n.function, n.queue, n.topic].filter(
648
+ (target) => target !== undefined,
649
+ ).length;
650
+ if (targets === 0)
651
+ throw new VisibleError(
652
+ `At least one of function, queue, or topic is required for the "${n.name}" bucket notification.`,
653
+ );
654
+ if (targets > 1)
655
+ throw new VisibleError(
656
+ `Only one of function, queue, or topic is allowed for the "${n.name}" bucket notification.`,
657
+ );
658
+
659
+ const events = withDefault(n.events, EVENTS);
660
+ const config = {
661
+ id: n.name,
662
+ events,
663
+ filterPrefix: n.filterPrefix,
664
+ filterSuffix: n.filterSuffix,
665
+ };
666
+
667
+ if (n.function !== undefined) {
668
+ const fn = functionPart(this, "subscriber", n.name, n.function, {
669
+ description: events.apply((events) =>
670
+ events.length < 5
671
+ ? `Notified by ${name} on ${events.join(", ")}`
672
+ : `Notified by ${name} on ${events.slice(0, 3).join(", ")}, and ${events.length - 3} more events`,
673
+ ),
674
+ });
675
+ dependsOn.push(
676
+ this.part(
677
+ "permission",
678
+ n.name,
679
+ invokePermissionArgs(fn, "s3.amazonaws.com", this.arn),
680
+ ),
681
+ );
682
+ lambdaFunctions.push({ ...config, lambdaFunctionArn: fn.targetArn });
683
+ } else if (n.queue !== undefined) {
684
+ const queueArn = arnOf(n.queue);
685
+ dependsOn.push(
686
+ // A queue has one policy. Whatever replaces this one sets its own,
687
+ // so deleting this one would remove the replacement.
688
+ this.part("queuePolicy", n.name, sendPolicyArgs(queueArn), {
689
+ retainOnDelete: true,
690
+ }),
691
+ );
692
+ queues.push({ ...config, queueArn });
693
+ } else {
694
+ const topicArn = arnOf(n.topic!);
695
+ dependsOn.push(
696
+ this.part("topicPolicy", n.name, {
697
+ arn: topicArn,
698
+ policy: iam.getPolicyDocumentOutput({
699
+ statements: [
700
+ {
701
+ actions: ["sns:Publish"],
702
+ resources: [topicArn],
703
+ principals: [
704
+ { type: "Service", identifiers: ["s3.amazonaws.com"] },
705
+ ],
706
+ conditions: [
707
+ {
708
+ test: "ArnEquals",
709
+ variable: "aws:SourceArn",
710
+ values: [this.arn],
711
+ },
712
+ ],
713
+ },
714
+ ],
715
+ }).json,
716
+ }),
717
+ );
718
+ topics.push({ ...config, topicArn });
719
+ }
720
+ }
721
+
722
+ this.part(
723
+ "notification",
724
+ {
725
+ bucket: this.name,
726
+ eventbridge: args.eventBridge,
727
+ lambdaFunctions,
728
+ queues,
729
+ topics,
730
+ },
731
+ { dependsOn },
732
+ );
733
+
734
+ return this;
735
+ }
736
+
737
+ /**
738
+ * Subscribe to the bucket's events on the account's default EventBridge bus with a
739
+ * function. This creates a rule that matches the events of this bucket, and a target
740
+ * for it. The bucket has to publish to EventBridge: for a bucket in your app, that's
741
+ * `notify({ eventBridge: true })`. For a bucket that isn't, reference it with `get` and
742
+ * turn EventBridge on for it where it's managed.
743
+ *
744
+ * @param name The name of the subscriber.
745
+ * @param subscriber The function that'll be notified: its handler, its args, a function
746
+ * component, or the ARN of a function.
747
+ * @param args Configure the subscription.
748
+ *
749
+ * @example
750
+ *
751
+ * ```js title="sst.config.ts"
752
+ * bucket.subscribeEventBridge("Resizer", "src/resize.handler", {
753
+ * pattern: {
754
+ * detailType: ["Object Created"],
755
+ * detail: {
756
+ * object: { key: [{ prefix: "uploads/" }] }
757
+ * }
758
+ * }
759
+ * });
760
+ * ```
761
+ */
762
+ public subscribeEventBridge(
763
+ name: string,
764
+ subscriber: FunctionDefinition,
765
+ args: BucketEventBridgeSubscriberArgs = {},
766
+ ) {
767
+ this.assertNew("EventBridge subscriber", "eventBridgeRule", name, args, [
768
+ "eventBridgeRule",
769
+ "eventBridgeTarget",
770
+ ]);
771
+ // The account's default bus, where S3 publishes a bucket's events
772
+ const bus = "default";
773
+ const rule = this.part("eventBridgeRule", name, {
774
+ eventBusName: bus,
775
+ state: output(args.enabled ?? true).apply((enabled) =>
776
+ enabled ? "ENABLED" : "DISABLED",
777
+ ),
778
+ // This bucket's events, and of those the ones the pattern matches
779
+ eventPattern: all([this.name, args.pattern ?? {}]).apply(
780
+ ([bucketName, pattern]) => {
781
+ const detail = pattern.detail ?? {};
782
+ return JSON.stringify({
783
+ "detail-type": pattern.detailType,
784
+ source: ["aws.s3"],
785
+ detail: {
786
+ ...detail,
787
+ bucket: { ...(detail.bucket ?? {}), name: [bucketName] },
788
+ },
789
+ });
790
+ },
791
+ ),
792
+ });
793
+ const fn = functionPart(this, "eventBridgeSubscriber", name, subscriber, {
794
+ description: `Subscribed to ${bus}`,
795
+ });
796
+ const permission = this.part(
797
+ "eventBridgePermission",
798
+ name,
799
+ invokePermissionArgs(fn, "events.amazonaws.com", rule.arn),
800
+ );
801
+ this.part(
802
+ "eventBridgeTarget",
803
+ name,
804
+ { arn: fn.targetArn, rule: rule.name, eventBusName: bus },
805
+ { dependsOn: [permission] },
806
+ );
807
+ return this;
808
+ }
809
+
810
+ /**
811
+ * Reference an existing bucket with its name. This is useful when you create a bucket in
812
+ * one stage and want to share it in another, or to be notified of the events of a bucket
813
+ * that isn't in your app. The bucket is used the way it is: it isn't configured here.
814
+ *
815
+ * @param name The name of the component.
816
+ * @param bucketName The name of the existing S3 Bucket.
817
+ * @param opts Component resource options.
818
+ *
819
+ * @example
820
+ *
821
+ * ```ts title="sst.config.ts"
822
+ * const bucket = $app.stage === "frank"
823
+ * ? sst.aws.v5.Bucket.get("MyBucket", "app-dev-mybucket-12345678")
824
+ * : new sst.aws.v5.Bucket("MyBucket");
825
+ * ```
826
+ */
827
+ public static get(
828
+ name: string,
829
+ bucketName: Input<string>,
830
+ opts?: ComponentResourceOptions,
831
+ ) {
832
+ return new Bucket(name, { existing: { bucket: bucketName } }, opts);
833
+ }
834
+
835
+ /**
836
+ * Linking a bucket gives the linked resource the bucket's name and
837
+ * permission to use the bucket and its objects.
838
+ */
839
+ public link() {
840
+ return {
841
+ properties: { name: this.name },
842
+ include: [
843
+ permission({
844
+ actions: ["s3:*"],
845
+ resources: [this.arn, interpolate`${this.arn}/*`],
846
+ }),
847
+ ],
848
+ };
849
+ }
850
+ }
851
+
852
+ // The args that configure the bucket, which an existing bucket isn't given
853
+ const CONFIGURES = [
854
+ "access",
855
+ "policy",
856
+ "enforceHttps",
857
+ "cors",
858
+ "lifecycle",
859
+ "versioning",
860
+ "publicAccessBlock",
861
+ ] as const;
862
+
863
+ // What a notification is sent on when it doesn't say
864
+ const EVENTS: NonNullable<Plain<Notification["events"]>> = [
865
+ "s3:ObjectCreated:*",
866
+ "s3:ObjectRemoved:*",
867
+ "s3:ObjectRestore:*",
868
+ "s3:ReducedRedundancyLostObject",
869
+ "s3:Replication:*",
870
+ "s3:LifecycleExpiration:*",
871
+ "s3:LifecycleTransition",
872
+ "s3:IntelligentTiering",
873
+ "s3:ObjectTagging:*",
874
+ "s3:ObjectAcl:Put",
875
+ ];
876
+
877
+ const EVERYONE = { type: "*", identifiers: ["*"] };
878
+
879
+ const PRINCIPALS = {
880
+ aws: "AWS",
881
+ service: "Service",
882
+ federated: "Federated",
883
+ canonical: "Canonical",
884
+ };
885
+
886
+ /** The ARN of a queue or topic that's given as a component or as its ARN. */
887
+ function arnOf(
888
+ target: Input<string | OriginalQueue | Queue | OriginalSnsTopic | SnsTopic>,
889
+ ) {
890
+ return output(target).apply((target) =>
891
+ typeof target === "string" ? output(target) : target.arn,
892
+ );
893
+ }
894
+
895
+ /**
896
+ * The bucket policy: read access for the public or for CloudFront, the
897
+ * statement that denies requests that aren't over HTTPS, and the user's own
898
+ * statements. The account and partition are looked up with the component's
899
+ * provider.
900
+ */
901
+ function policyDocument(
902
+ arn: Output<string>,
903
+ args: Pick<BucketArgs, "access" | "enforceHttps" | "policy">,
904
+ opts?: ComponentResourceOptions,
905
+ ) {
906
+ return all([
907
+ args.access,
908
+ withDefault(args.enforceHttps, true),
909
+ args.policy ?? [],
910
+ ]).apply(([access, enforceHttps, policy]) => {
911
+ const statements: types.input.iam.GetPolicyDocumentStatementArgs[] = [];
912
+ if (access)
913
+ statements.push({
914
+ principals: [
915
+ access === "public"
916
+ ? EVERYONE
917
+ : { type: "Service", identifiers: ["cloudfront.amazonaws.com"] },
918
+ ],
919
+ actions: ["s3:GetObject"],
920
+ resources: [interpolate`${arn}/*`],
921
+ // Without it, a distribution in any AWS account could read the bucket
922
+ // through its own origin access control
923
+ conditions:
924
+ access === "public"
925
+ ? undefined
926
+ : [
927
+ {
928
+ test: "StringLike",
929
+ variable: "aws:SourceArn",
930
+ values: [
931
+ interpolate`arn:${getPartitionOutput({}, opts).partition}:cloudfront::${getCallerIdentityOutput({}, opts).accountId}:distribution/*`,
932
+ ],
933
+ },
934
+ ],
935
+ });
936
+ if (enforceHttps)
937
+ statements.push({
938
+ effect: "Deny",
939
+ principals: [EVERYONE],
940
+ actions: ["s3:*"],
941
+ resources: [arn, interpolate`${arn}/*`],
942
+ conditions: [
943
+ {
944
+ test: "Bool",
945
+ variable: "aws:SecureTransport",
946
+ values: ["false"],
947
+ },
948
+ ],
949
+ });
950
+ for (const statement of policy) {
951
+ // A path is relative to the bucket. Without paths, a statement covers
952
+ // the bucket and everything in it.
953
+ const paths = statement.paths?.map((path) => path.replace(/^\//, ""));
954
+ statements.push({
955
+ effect:
956
+ statement.effect &&
957
+ statement.effect.charAt(0).toUpperCase() + statement.effect.slice(1),
958
+ principals:
959
+ statement.principals === "*"
960
+ ? [EVERYONE]
961
+ : statement.principals.map((principal) => ({
962
+ ...principal,
963
+ type: PRINCIPALS[principal.type],
964
+ })),
965
+ actions: statement.actions,
966
+ conditions: statement.conditions,
967
+ resources: (paths ?? ["", "*"]).map((path) =>
968
+ path === "" ? arn : interpolate`${arn}/${path}`,
969
+ ),
970
+ });
971
+ }
972
+ return iam.getPolicyDocumentOutput({ statements }).json;
973
+ });
974
+ }
975
+
976
+ /**
977
+ * The id of each lifecycle rule: its own, or one made from the bucket's name
978
+ * and the rule's position. S3 needs each to be unique and at most 255
979
+ * characters.
980
+ */
981
+ function lifecycleIds(name: string, rules: { id?: string }[]) {
982
+ const seen = new Map<string, number>();
983
+ return rules.map((rule, index) => {
984
+ const id = (rule.id ?? `${name}LifecycleRule${index}`).trim();
985
+ if (id.length === 0)
986
+ throw new VisibleError(
987
+ `Lifecycle rule at index ${index} has an empty or whitespace-only "id". Please provide a valid id or omit it to use the auto-generated id.`,
988
+ );
989
+ if (id.length > 255)
990
+ throw new VisibleError(
991
+ `Lifecycle rule at index ${index} has an "id" that is ${id.length} characters long. AWS S3 lifecycle rule IDs cannot exceed 255 characters.`,
992
+ );
993
+ const other = seen.get(id);
994
+ if (other !== undefined)
995
+ throw new VisibleError(
996
+ `Lifecycle rule "id" values must be unique. The id "${id}" is used by rules at indexes ${other} and ${index}.`,
997
+ );
998
+ seen.set(id, index);
999
+ return id;
1000
+ });
1001
+ }