@sst-community/sst 4.21.1 → 5.0.0-alpha.2

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 +86 -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-MR4XM5XA.js +473 -0
  8. package/platform/js/chunks/chunk-MR4XM5XA.js.map +6 -0
  9. package/platform/js/chunks/chunk-ONNI4XNK.js +367 -0
  10. package/platform/js/chunks/chunk-ONNI4XNK.js.map +6 -0
  11. package/platform/js/chunks/chunk-VIFHC73J.js +108 -0
  12. package/platform/js/chunks/chunk-VIFHC73J.js.map +6 -0
  13. package/platform/js/chunks/chunk-WJ6BVA46.js +10 -0
  14. package/platform/js/chunks/chunk-WJ6BVA46.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-CRGKEDQW.js +10 -0
  18. package/platform/js/chunks/config-CRGKEDQW.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 +35399 -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 +3280 -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 +212 -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 +1050 -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 +3294 -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 +1546 -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 +1463 -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 +1780 -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 +528 -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 +1767 -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 +586 -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 +242 -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 +1440 -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,1691 @@
1
+ import {
2
+ ComponentResourceOptions,
3
+ Output,
4
+ all,
5
+ interpolate,
6
+ output,
7
+ } from "@pulumi/pulumi";
8
+ import {
9
+ Component,
10
+ outputId,
11
+ Prettify,
12
+ Transform,
13
+ transform,
14
+ } from "../component";
15
+ import { Link } from "../link";
16
+ import type { Input } from "../input";
17
+ import { FunctionArgs, FunctionArn } from "./function.js";
18
+ import { hashStringToPrettyString, physicalName, logicalName } from "../naming";
19
+ import { VisibleError } from "../error";
20
+ import { RETENTION } from "./logging";
21
+ import { ApiGatewayV1LambdaRoute } from "./apigatewayv1-lambda-route";
22
+ import { ApiGatewayV1Authorizer } from "./apigatewayv1-authorizer";
23
+ import { setupApiGatewayAccount } from "./helpers/apigateway-account";
24
+ import { apigateway, cloudwatch, getRegionOutput } from "@pulumi/aws";
25
+ import { Dns } from "../dns";
26
+ import { dns as awsDns } from "./dns";
27
+ import { DnsValidatedCertificate } from "./dns-validated-certificate";
28
+ import { ApiGatewayV1IntegrationRoute } from "./apigatewayv1-integration-route";
29
+ import { ApiGatewayV1UsagePlan } from "./apigatewayv1-usage-plan";
30
+ import { useProvider } from "./helpers/provider";
31
+
32
+ export interface ApiGatewayV1DomainArgs {
33
+ /**
34
+ * Use an existing API Gateway domain name.
35
+ *
36
+ * By default, a new API Gateway domain name is created. If you'd like to use an existing
37
+ * domain name, set the `nameId` to the ID of the domain name and **do not** pass in `name`.
38
+ *
39
+ * @example
40
+ * ```js
41
+ * {
42
+ * domain: {
43
+ * nameId: "example.com"
44
+ * }
45
+ * }
46
+ * ```
47
+ */
48
+ nameId?: Input<string>;
49
+ /**
50
+ * The custom domain you want to use.
51
+ *
52
+ * @example
53
+ * ```js
54
+ * {
55
+ * domain: {
56
+ * name: "example.com"
57
+ * }
58
+ * }
59
+ * ```
60
+ *
61
+ * Can also include subdomains based on the current stage.
62
+ *
63
+ * ```js
64
+ * {
65
+ * domain: {
66
+ * name: `${$app.stage}.example.com`
67
+ * }
68
+ * }
69
+ * ```
70
+ */
71
+ name: Input<string>;
72
+ /**
73
+ * The base mapping for the custom domain. This adds a suffix to the URL of the API.
74
+ *
75
+ * @example
76
+ *
77
+ * Given the following base path and domain name.
78
+ *
79
+ * ```js
80
+ * {
81
+ * domain: {
82
+ * name: "api.example.com",
83
+ * path: "v1"
84
+ * }
85
+ * }
86
+ * ```
87
+ *
88
+ * The full URL of the API will be `https://api.example.com/v1/`.
89
+ *
90
+ * :::note
91
+ * There's an extra trailing slash when a base path is set.
92
+ * :::
93
+ *
94
+ * By default there is no base path, so if the `name` is `api.example.com`, the full URL will be `https://api.example.com`.
95
+ */
96
+ path?: Input<string>;
97
+ /**
98
+ * The ARN of an ACM (AWS Certificate Manager) certificate that proves ownership of the
99
+ * domain. By default, a certificate is created and validated automatically.
100
+ *
101
+ * :::tip
102
+ * You need to pass in a `cert` for domains that are not hosted on supported `dns` providers.
103
+ * :::
104
+ *
105
+ * To manually set up a domain on an unsupported provider, you'll need to:
106
+ *
107
+ * 1. [Validate that you own the domain](https://docs.aws.amazon.com/acm/latest/userguide/domain-ownership-validation.html) by creating an ACM certificate. You can either validate it by setting a DNS record or by verifying an email sent to the domain owner.
108
+ * 2. Once validated, set the certificate ARN as the `cert` and set `dns` to `false`.
109
+ * 3. Add the DNS records in your provider to point to the API Gateway URL.
110
+ *
111
+ * @example
112
+ * ```js
113
+ * {
114
+ * domain: {
115
+ * name: "example.com",
116
+ * dns: false,
117
+ * cert: "arn:aws:acm:us-east-1:112233445566:certificate/3a958790-8878-4cdc-a396-06d95064cf63"
118
+ * }
119
+ * }
120
+ * ```
121
+ */
122
+ cert?: Input<string>;
123
+ /**
124
+ * The DNS provider to use for the domain. Defaults to the AWS.
125
+ *
126
+ * Takes an adapter that can create the DNS records on the provider. This can automate
127
+ * validating the domain and setting up the DNS routing.
128
+ *
129
+ * Supports Route 53, Cloudflare, and Vercel adapters. For other providers, you'll need
130
+ * to set `dns` to `false` and pass in a certificate validating ownership via `cert`.
131
+ *
132
+ * @default `sst.aws.dns`
133
+ *
134
+ * @example
135
+ *
136
+ * Specify the hosted zone ID for the Route 53 domain.
137
+ *
138
+ * ```js
139
+ * {
140
+ * domain: {
141
+ * name: "example.com",
142
+ * dns: sst.aws.dns({
143
+ * zone: "Z2FDTNDATAQYW2"
144
+ * })
145
+ * }
146
+ * }
147
+ * ```
148
+ *
149
+ * Use a domain hosted on Cloudflare, needs the Cloudflare provider.
150
+ *
151
+ * ```js
152
+ * {
153
+ * domain: {
154
+ * name: "example.com",
155
+ * dns: sst.cloudflare.dns()
156
+ * }
157
+ * }
158
+ * ```
159
+ *
160
+ * Use a domain hosted on Vercel, needs the Vercel provider.
161
+ *
162
+ * ```js
163
+ * {
164
+ * domain: {
165
+ * name: "example.com",
166
+ * dns: sst.vercel.dns()
167
+ * }
168
+ * }
169
+ * ```
170
+ */
171
+ dns?: Input<false | (Dns & {})>;
172
+ }
173
+
174
+ export interface ApiGatewayV1Args {
175
+ /**
176
+ * Set a custom domain for your REST API.
177
+ *
178
+ * Automatically manages domains hosted on AWS Route 53, Cloudflare, and Vercel. For other
179
+ * providers, you'll need to pass in a `cert` that validates domain ownership and add the
180
+ * DNS records.
181
+ *
182
+ * :::tip
183
+ * Built-in support for AWS Route 53, Cloudflare, and Vercel. And manual setup for other
184
+ * providers.
185
+ * :::
186
+ *
187
+ * @example
188
+ *
189
+ * By default this assumes the domain is hosted on Route 53.
190
+ *
191
+ * ```js
192
+ * {
193
+ * domain: "example.com"
194
+ * }
195
+ * ```
196
+ *
197
+ * For domains hosted on Cloudflare.
198
+ *
199
+ * ```js
200
+ * {
201
+ * domain: {
202
+ * name: "example.com",
203
+ * dns: sst.cloudflare.dns()
204
+ * }
205
+ * }
206
+ * ```
207
+ */
208
+ domain?: Input<string | Prettify<ApiGatewayV1DomainArgs>>;
209
+ /**
210
+ * Configure the type of API Gateway REST API endpoint.
211
+ *
212
+ * - `edge`: The default; it creates a CloudFront distribution for the API.
213
+ * Useful for cases where requests are geographically distributed.
214
+ * - `regional`: Endpoints are deployed in specific AWS regions and are
215
+ * intended to be accessed directly by clients within or near that region.
216
+ * - `private`: Endpoints allows access to the API only from within a specified
217
+ * Amazon VPC (Virtual Private Cloud) using VPC endpoints. These do not expose
218
+ * the API to the public internet.
219
+ *
220
+ * Learn more about the [different types of endpoints](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-endpoint-types.html).
221
+ *
222
+ * @default `{type: "edge"}`
223
+ * @example
224
+ *
225
+ * For example, to create a regional endpoint.
226
+ * ```js
227
+ * {
228
+ * endpoint: {
229
+ * type: "regional"
230
+ * }
231
+ * }
232
+ * ```
233
+ *
234
+ * And to create a private endpoint.
235
+ * ```js
236
+ * {
237
+ * endpoint: {
238
+ * type: "private",
239
+ * vpcEndpointIds: ["vpce-0dccab6fb1e828f36"]
240
+ * }
241
+ * }
242
+ * ```
243
+ */
244
+ endpoint?: Input<{
245
+ /**
246
+ * The type of the API Gateway REST API endpoint.
247
+ */
248
+ type: "edge" | "regional" | "private";
249
+ /**
250
+ * The VPC endpoint IDs for the `private` endpoint.
251
+ */
252
+ vpcEndpointIds?: Input<Input<string>[]>;
253
+ }>;
254
+ /**
255
+ * Enable the CORS or Cross-origin resource sharing for your API.
256
+ * @default `true`
257
+ * @example
258
+ * Disable CORS.
259
+ * ```js
260
+ * {
261
+ * cors: false
262
+ * }
263
+ * ```
264
+ */
265
+ cors?: Input<boolean>;
266
+ /**
267
+ * Configure the [API Gateway logs](https://docs.aws.amazon.com/apigateway/latest/developerguide/view-cloudwatch-log-events-in-cloudwatch-console.html) in CloudWatch. By default, access logs are enabled and retained for 1 month.
268
+ * @default `{retention: "1 month"}`
269
+ * @example
270
+ * ```js
271
+ * {
272
+ * accessLog: {
273
+ * retention: "forever"
274
+ * }
275
+ * }
276
+ * ```
277
+ */
278
+ accessLog?: Input<{
279
+ /**
280
+ * The duration the API Gateway logs are retained in CloudWatch.
281
+ * @default `1 month`
282
+ */
283
+ retention?: Input<keyof typeof RETENTION>;
284
+ }>;
285
+ /**
286
+ * [Transform](/docs/components#transform) how this component creates its underlying
287
+ * resources.
288
+ */
289
+ transform?: {
290
+ /**
291
+ * Transform the API Gateway REST API resource.
292
+ */
293
+ api?: Transform<apigateway.RestApiArgs>;
294
+ /**
295
+ * Transform the API Gateway REST API stage resource.
296
+ */
297
+ stage?: Transform<apigateway.StageArgs>;
298
+ /**
299
+ * Transform the API Gateway REST API deployment resource.
300
+ */
301
+ deployment?: Transform<apigateway.DeploymentArgs>;
302
+ /**
303
+ * Transform the CloudWatch LogGroup resource used for access logs.
304
+ */
305
+ accessLog?: Transform<cloudwatch.LogGroupArgs>;
306
+ /**
307
+ * Transform the API Gateway REST API domain name resource.
308
+ */
309
+ domainName?: Transform<apigateway.DomainNameArgs>;
310
+ /**
311
+ * Transform the routes. This is called for every route that is added.
312
+ *
313
+ * :::note
314
+ * This is applied right before the resource is created.
315
+ * :::
316
+ *
317
+ * You can use this to set any default props for all the routes and their handler function.
318
+ * Like the other transforms, you can either pass in an object or a callback.
319
+ *
320
+ * @example
321
+ *
322
+ * Here we are setting a default memory of `2048 MB` for our routes.
323
+ *
324
+ * ```js
325
+ * {
326
+ * transform: {
327
+ * route: {
328
+ * handler: (args, opts) => {
329
+ * // Set the default if it's not set by the route
330
+ * args.memory ??= "2048 MB";
331
+ * }
332
+ * }
333
+ * }
334
+ * }
335
+ * ```
336
+ *
337
+ * Defaulting to IAM auth for all our routes.
338
+ *
339
+ * ```js
340
+ * {
341
+ * transform: {
342
+ * route: {
343
+ * args: (props) => {
344
+ * // Set the default if it's not set by the route
345
+ * props.auth ??= { iam: true };
346
+ * }
347
+ * }
348
+ * }
349
+ * }
350
+ * ```
351
+ */
352
+ route?: {
353
+ /**
354
+ * Transform the handler function of the route.
355
+ */
356
+ handler?: Transform<FunctionArgs>;
357
+ /**
358
+ * Transform the arguments for the route.
359
+ */
360
+ args?: Transform<ApiGatewayV1RouteArgs>;
361
+ };
362
+ };
363
+ }
364
+
365
+ export interface ApiGatewayV1AuthorizerArgs {
366
+ /**
367
+ * The name of the authorizer.
368
+ * @example
369
+ * ```js
370
+ * {
371
+ * name: "myAuthorizer"
372
+ * }
373
+ * ```
374
+ */
375
+ name: string;
376
+ /**
377
+ * The Lambda token authorizer function. Takes the handler path or the function args.
378
+ * @example
379
+ * ```js
380
+ * {
381
+ * tokenFunction: "src/authorizer.index"
382
+ * }
383
+ * ```
384
+ */
385
+ tokenFunction?: Input<string | FunctionArgs>;
386
+ /**
387
+ * The Lambda request authorizer function. Takes the handler path or the function args.
388
+ * @example
389
+ * ```js
390
+ * {
391
+ * requestFunction: "src/authorizer.index"
392
+ * }
393
+ * ```
394
+ */
395
+ requestFunction?: Input<string | FunctionArgs>;
396
+ /**
397
+ * A list of user pools used as the authorizer.
398
+ * @example
399
+ * ```js
400
+ * {
401
+ * name: "myAuthorizer",
402
+ * userPools: [userPool.arn]
403
+ * }
404
+ * ```
405
+ *
406
+ * Where `userPool` is:
407
+ *
408
+ * ```js
409
+ * const userPool = new aws.cognito.UserPool();
410
+ * ```
411
+ */
412
+ userPools?: Input<Input<string>[]>;
413
+ /**
414
+ * Time to live for cached authorizer results in seconds.
415
+ * @default `300`
416
+ * @example
417
+ * ```js
418
+ * {
419
+ * ttl: 30
420
+ * }
421
+ * ```
422
+ */
423
+ ttl?: Input<number>;
424
+ /**
425
+ * Specifies where to extract the authorization token from the request.
426
+ * @default `"method.request.header.Authorization"`
427
+ * @example
428
+ * ```js
429
+ * {
430
+ * identitySource: "method.request.header.AccessToken"
431
+ * }
432
+ * ```
433
+ */
434
+ identitySource?: Input<string>;
435
+ /**
436
+ * [Transform](/docs/components#transform) how this component creates its underlying
437
+ * resources.
438
+ */
439
+ transform?: {
440
+ /**
441
+ * Transform the API Gateway authorizer resource.
442
+ */
443
+ authorizer?: Transform<apigateway.AuthorizerArgs>;
444
+ };
445
+ }
446
+
447
+ export interface ApiGatewayV1UsagePlanArgs {
448
+ /**
449
+ * Configure rate limits to protect your API from being overwhelmed by too many
450
+ * requests at once.
451
+ *
452
+ * @example
453
+ * ```js
454
+ * {
455
+ * throttle: {
456
+ * rate: 100,
457
+ * burst: 200
458
+ * }
459
+ * }
460
+ * ```
461
+ */
462
+ throttle?: Input<{
463
+ /**
464
+ * The maximum number of requests permitted in a short-term spike beyond the
465
+ * rate limit.
466
+ */
467
+ burst?: Input<number>;
468
+ /**
469
+ * The steady-state maximum number of requests allowed per second.
470
+ */
471
+ rate?: Input<number>;
472
+ }>;
473
+ /**
474
+ * Configure a cap on the total number of requests allowed within a specified time
475
+ * period.
476
+ * @example
477
+ * ```js
478
+ * {
479
+ * quota: {
480
+ * limit: 1000,
481
+ * period: "month",
482
+ * offset: 0
483
+ * }
484
+ * }
485
+ * ```
486
+ */
487
+ quota?: Input<{
488
+ /**
489
+ * The maximum number of requests that can be made in the specified period of
490
+ * time.
491
+ */
492
+ limit: Input<number>;
493
+ /**
494
+ * The time period for which the quota applies.
495
+ */
496
+ period: Input<"day" | "week" | "month">;
497
+ /**
498
+ * The number of days into the period when the quota counter is reset.
499
+ *
500
+ * For example, this resets the quota at the beginning of each month.
501
+ *
502
+ * ```js
503
+ * {
504
+ * period: "month",
505
+ * offset: 0
506
+ * }
507
+ * ```
508
+ */
509
+ offset?: Input<number>;
510
+ }>;
511
+ }
512
+
513
+ export interface ApiGatewayV1ApiKeyArgs {
514
+ /**
515
+ * The value of the API key. If not provided, it will be generated automatically.
516
+ * @example
517
+ * ```js
518
+ * {
519
+ * value: "d41d8cd98f00b204e9800998ecf8427e"
520
+ * }
521
+ * ```
522
+ */
523
+ value?: Input<string>;
524
+ }
525
+
526
+ export interface ApiGatewayV1RouteArgs {
527
+ /**
528
+ * Enable auth for your REST API. By default, auth is disabled.
529
+ * @default `false`
530
+ * @example
531
+ * ```js
532
+ * {
533
+ * auth: {
534
+ * iam: true
535
+ * }
536
+ * }
537
+ * ```
538
+ */
539
+ auth?: Input<
540
+ | false
541
+ | {
542
+ /**
543
+ * Enable IAM authorization for a given API route.
544
+ *
545
+ * When IAM auth is enabled, clients need to use Signature Version 4 to sign their requests with their AWS credentials.
546
+ */
547
+ iam?: Input<boolean>;
548
+ /**
549
+ * Enable custom Lambda authorization for a given API route. Pass in the authorizer ID.
550
+ * @example
551
+ * ```js
552
+ * {
553
+ * auth: {
554
+ * custom: myAuthorizer.id
555
+ * }
556
+ * }
557
+ * ```
558
+ *
559
+ * Where `myAuthorizer` is:
560
+ *
561
+ * ```js
562
+ * const userPool = new aws.cognito.UserPool();
563
+ * const myAuthorizer = api.addAuthorizer({
564
+ * name: "MyAuthorizer",
565
+ * userPools: [userPool.arn]
566
+ * });
567
+ * ```
568
+ */
569
+ custom?: Input<string>;
570
+ /**
571
+ * Enable Cognito User Pool authorization for a given API route.
572
+ *
573
+ * @example
574
+ * You can configure JWT auth.
575
+ *
576
+ * ```js
577
+ * {
578
+ * auth: {
579
+ * cognito: {
580
+ * authorizer: myAuthorizer.id,
581
+ * scopes: ["read:profile", "write:profile"]
582
+ * }
583
+ * }
584
+ * }
585
+ * ```
586
+ *
587
+ * Where `myAuthorizer` is:
588
+ *
589
+ * ```js
590
+ * const userPool = new aws.cognito.UserPool();
591
+ *
592
+ * const myAuthorizer = api.addAuthorizer({
593
+ * name: "MyAuthorizer",
594
+ * userPools: [userPool.arn]
595
+ * });
596
+ * ```
597
+ */
598
+ cognito?: Input<{
599
+ /**
600
+ * Authorizer ID of the Cognito User Pool authorizer.
601
+ */
602
+ authorizer: Input<string>;
603
+ /**
604
+ * Defines the permissions or access levels that the authorization token grants.
605
+ */
606
+ scopes?: Input<Input<string>[]>;
607
+ }>;
608
+ }
609
+ >;
610
+ /**
611
+ * Specify if an API key is required for the route. By default, an API key is not
612
+ * required.
613
+ * @default `false`
614
+ * @example
615
+ * ```js
616
+ * {
617
+ * apiKey: true
618
+ * }
619
+ * ```
620
+ */
621
+ apiKey?: Input<boolean>;
622
+ /**
623
+ * @deprecated Set `streaming: true` on the function definition passed to `api.route()` instead.
624
+ */
625
+ streaming?: Input<boolean>;
626
+ /**
627
+ * The name of the route.
628
+ *
629
+ * By default, SST generates a unique suffix from the route path. Setting `name` gives
630
+ * you a stable, human-readable name like `MyApiRouteGetUserHandler`.
631
+ *
632
+ * Must be unique across all routes.
633
+ *
634
+ * @example
635
+ * ```js
636
+ * {
637
+ * name: "GetUser"
638
+ * }
639
+ * ```
640
+ */
641
+ name?: string;
642
+ /**
643
+ * [Transform](/docs/components#transform) how this component creates its underlying
644
+ * resources.
645
+ */
646
+ transform?: {
647
+ /**
648
+ * Transform the API Gateway REST API method resource.
649
+ */
650
+ method?: Transform<apigateway.MethodArgs>;
651
+ /**
652
+ * Transform the API Gateway REST API integration resource.
653
+ */
654
+ integration?: Transform<apigateway.IntegrationArgs>;
655
+ };
656
+ }
657
+
658
+ export interface ApiGatewayV1IntegrationArgs {
659
+ /**
660
+ * The type of the API Gateway REST API integration.
661
+ */
662
+ type: Input<"aws" | "aws-proxy" | "mock" | "http" | "http-proxy">;
663
+ /**
664
+ * The URI of the API Gateway REST API integration.
665
+ */
666
+ uri?: Input<string>;
667
+ /**
668
+ * The credentials to use to call the AWS service.
669
+ */
670
+ credentials?: Input<string>;
671
+ /**
672
+ * The HTTP method to use to call the integration.
673
+ */
674
+ integrationHttpMethod?: Input<
675
+ "GET" | "POST" | "PUT" | "DELETE" | "HEAD" | "OPTIONS" | "ANY" | "PATCH"
676
+ >;
677
+ /**
678
+ * Map of request query string parameters and headers that should be passed to the backend responder.
679
+ */
680
+ requestParameters?: Input<Record<string, Input<string>>>;
681
+ /**
682
+ * Map of the integration's request templates.
683
+ */
684
+ requestTemplates?: Input<Record<string, Input<string>>>;
685
+ /**
686
+ * The passthrough behavior to use to call the integration.
687
+ *
688
+ * Required if `requestTemplates` is set.
689
+ */
690
+ passthroughBehavior?: Input<"when-no-match" | "never" | "when-no-templates">;
691
+ }
692
+
693
+ /**
694
+ * The `ApiGatewayV1` component lets you add an [Amazon API Gateway REST API](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-rest-api.html) to your app.
695
+ *
696
+ * @example
697
+ *
698
+ * #### Create the API
699
+ *
700
+ * ```ts title="sst.config.ts"
701
+ * const api = new sst.aws.ApiGatewayV1("MyApi");
702
+ * ```
703
+ *
704
+ * #### Add routes
705
+ *
706
+ * ```ts title="sst.config.ts"
707
+ * api.route("GET /", "src/get.handler");
708
+ * api.route("POST /", "src/post.handler");
709
+ *
710
+ * api.deploy();
711
+ * ```
712
+ *
713
+ * :::note
714
+ * You need to call `deploy` after you've added all your routes.
715
+ * :::
716
+ *
717
+ * #### Configure the routes
718
+ *
719
+ * ```ts title="sst.config.ts"
720
+ * api.route("GET /", "src/get.handler", {
721
+ * auth: { iam: true }
722
+ * });
723
+ * ```
724
+ *
725
+ * #### Configure the route handler
726
+ *
727
+ * You can configure the Lambda function that'll handle the route.
728
+ *
729
+ * ```ts title="sst.config.ts"
730
+ * api.route("POST /", {
731
+ * handler: "src/post.handler",
732
+ * memory: "2048 MB"
733
+ * });
734
+ * ```
735
+ *
736
+ * #### Default props for all routes
737
+ *
738
+ * You can use a `transform` to set some default props for all your routes. For
739
+ * example, instead of setting the `memory` for each route.
740
+ *
741
+ * ```ts title="sst.config.ts"
742
+ * api.route("GET /", { handler: "src/get.handler", memory: "2048 MB" });
743
+ * api.route("POST /", { handler: "src/post.handler", memory: "2048 MB" });
744
+ * ```
745
+ *
746
+ * You can set it through the `transform`.
747
+ *
748
+ * ```ts title="sst.config.ts" {6}
749
+ * const api = new sst.aws.ApiGatewayV1("MyApi", {
750
+ * transform: {
751
+ * route: {
752
+ * handler: (args, opts) => {
753
+ * // Set the default if it's not set by the route
754
+ * args.memory ??= "2048 MB";
755
+ * }
756
+ * }
757
+ * }
758
+ * });
759
+ *
760
+ * api.route("GET /", "src/get.handler");
761
+ * api.route("POST /", "src/post.handler");
762
+ * ```
763
+ *
764
+ * With this we set the `memory` if it's not overridden by the route.
765
+ */
766
+ export class ApiGatewayV1 extends Component implements Link.Linkable {
767
+ private constructorName: string;
768
+ private constructorArgs: ApiGatewayV1Args;
769
+ private constructorOpts: ComponentResourceOptions;
770
+ private api: apigateway.RestApi;
771
+ private apigDomain?: Output<apigateway.DomainName>;
772
+ private apiMapping?: Output<apigateway.BasePathMapping>;
773
+ private region: Output<string>;
774
+ private resources: Record<string, Output<string>> = {};
775
+ private routes: (ApiGatewayV1LambdaRoute | ApiGatewayV1IntegrationRoute)[] =
776
+ [];
777
+ private stage?: apigateway.Stage;
778
+ private logGroup?: cloudwatch.LogGroup;
779
+ private endpointType: Output<"EDGE" | "REGIONAL" | "PRIVATE">;
780
+ private deployed: boolean = false;
781
+
782
+ constructor(
783
+ name: string,
784
+ args: ApiGatewayV1Args = {},
785
+ opts: ComponentResourceOptions = {},
786
+ ) {
787
+ super(__pulumiType, name, args, opts);
788
+
789
+ const parent = this;
790
+
791
+ const region = normalizeRegion();
792
+ const endpoint = normalizeEndpoint();
793
+ const apigAccount = setupApiGatewayAccount(name, opts);
794
+ const api = createApi();
795
+
796
+ this.resources["/"] = api.rootResourceId;
797
+ this.constructorName = name;
798
+ this.constructorArgs = args;
799
+ this.constructorOpts = opts;
800
+ this.api = api;
801
+ this.region = region;
802
+ this.endpointType = endpoint.types;
803
+
804
+ function normalizeRegion() {
805
+ return getRegionOutput(undefined, { parent }).region;
806
+ }
807
+
808
+ function normalizeEndpoint() {
809
+ return output(args.endpoint).apply((endpoint) => {
810
+ if (!endpoint) return { types: "EDGE" as const };
811
+
812
+ if (endpoint.type === "private" && !endpoint.vpcEndpointIds)
813
+ throw new VisibleError(
814
+ "Please provide the VPC endpoint IDs for the private endpoint.",
815
+ );
816
+
817
+ return endpoint.type === "regional"
818
+ ? { types: "REGIONAL" as const }
819
+ : endpoint.type === "private"
820
+ ? {
821
+ types: "PRIVATE" as const,
822
+ vpcEndpointIds: endpoint.vpcEndpointIds,
823
+ }
824
+ : { types: "EDGE" as const };
825
+ });
826
+ }
827
+
828
+ function createApi() {
829
+ return new apigateway.RestApi(
830
+ ...transform(
831
+ args.transform?.api,
832
+ `${name}Api`,
833
+ {
834
+ endpointConfiguration: endpoint,
835
+ },
836
+ { parent, dependsOn: apigAccount },
837
+ ),
838
+ );
839
+ }
840
+ }
841
+
842
+ /**
843
+ * The URL of the API.
844
+ */
845
+ public get url() {
846
+ return this.apigDomain && this.apiMapping
847
+ ? all([this.apigDomain.domainName, this.apiMapping.basePath]).apply(
848
+ ([domain, key]) =>
849
+ key ? `https://${domain}/${key}/` : `https://${domain}`,
850
+ )
851
+ : interpolate`https://${this.api.id}.execute-api.${this.region}.amazonaws.com/${this.stage?.stageName ?? $app.stage}/`;
852
+ }
853
+
854
+ /**
855
+ * The underlying [resources](/docs/components/#nodes) this component creates.
856
+ */
857
+ public get nodes() {
858
+ const self = this;
859
+ return {
860
+ /**
861
+ * The Amazon API Gateway REST API
862
+ */
863
+ api: this.api,
864
+ /**
865
+ * The Amazon API Gateway REST API stage
866
+ */
867
+ stage: this.stage,
868
+ /**
869
+ * The CloudWatch LogGroup for the access logs.
870
+ */
871
+ logGroup: this.logGroup,
872
+ /**
873
+ * The API Gateway REST API domain name.
874
+ */
875
+ get domainName() {
876
+ if (!self.deployed)
877
+ throw new VisibleError(
878
+ `"nodes.domainName" is not available before the "${self.constructorName}" API is deployed.`,
879
+ );
880
+ if (!self.apigDomain)
881
+ throw new VisibleError(
882
+ `"nodes.domainName" is not available when domain is not configured for the "${self.constructorName}" API.`,
883
+ );
884
+ return self.apigDomain;
885
+ },
886
+ };
887
+ }
888
+
889
+ /**
890
+ * Add a route to the API Gateway REST API. The route is a combination of an HTTP method and a path, `{METHOD} /{path}`.
891
+ *
892
+ * :::caution
893
+ * [API Gateway has strict rate limits](https://docs.aws.amazon.com/apigateway/latest/developerguide/limits.html) for creating and updating resources. Creating one Lambda function for every endpoint can significantly slow down your deployments.
894
+ *
895
+ * Use a single Lambda and handle routing in code if you don't need specific API Gateway features.
896
+ * :::
897
+ *
898
+ * A method could be one of `GET`, `POST`, `PUT`, `DELETE`, `PATCH`, `HEAD`, `OPTIONS`, or `ANY`. Here `ANY` matches any HTTP method.
899
+ *
900
+ * The path can be a combination of
901
+ * - Literal segments, `/notes`, `/notes/new`, etc.
902
+ * - Parameter segments, `/notes/{noteId}`, `/notes/{noteId}/attachments/{attachmentId}`, etc.
903
+ * - Greedy segments, `/{proxy+}`, `/notes/{proxy+}`, etc. The `{proxy+}` segment is a greedy segment that matches all child paths. It needs to be at the end of the path.
904
+ *
905
+ * :::tip
906
+ * The `{proxy+}` is a greedy segment, it matches all its child paths.
907
+ * :::
908
+ *
909
+ * When a request comes in, the API Gateway will look for the most specific match.
910
+ *
911
+ * :::note
912
+ * You cannot have duplicate routes.
913
+ * :::
914
+ *
915
+ * @param route The path for the route.
916
+ * @param handler The function that'll be invoked.
917
+ * @param args Configure the route.
918
+ *
919
+ * @example
920
+ * Add a simple route.
921
+ *
922
+ * ```js title="sst.config.ts"
923
+ * api.route("GET /", "src/get.handler");
924
+ * ```
925
+ *
926
+ * Match any HTTP method.
927
+ *
928
+ * ```js title="sst.config.ts"
929
+ * api.route("ANY /", "src/route.handler");
930
+ * ```
931
+ *
932
+ * Add a default or fallback route. Here for every request other than `GET /hi`,
933
+ * the `default.handler` function will be invoked.
934
+ *
935
+ * ```js title="sst.config.ts"
936
+ * api.route("GET /hi", "src/get.handler");
937
+ *
938
+ * api.route("ANY /", "src/default.handler");
939
+ * api.route("ANY /{proxy+}", "src/default.handler");
940
+ * ```
941
+ *
942
+ * The `/{proxy+}` matches any path that starts with `/`, so if you want a
943
+ * fallback route for the root `/` path, you need to add a `ANY /` route as well.
944
+ *
945
+ * Add a parameterized route.
946
+ *
947
+ * ```js title="sst.config.ts"
948
+ * api.route("GET /notes/{id}", "src/get.handler");
949
+ * ```
950
+ *
951
+ * Add a greedy route.
952
+ *
953
+ * ```js title="sst.config.ts"
954
+ * api.route("GET /notes/{proxy+}", "src/greedy.handler");
955
+ * ```
956
+ *
957
+ * Enable auth for a route.
958
+ *
959
+ * ```js title="sst.config.ts"
960
+ * api.route("GET /", "src/get.handler")
961
+ * api.route("POST /", "src/post.handler", {
962
+ * auth: {
963
+ * iam: true
964
+ * }
965
+ * });
966
+ * ```
967
+ *
968
+ * Customize the route handler.
969
+ *
970
+ * ```js title="sst.config.ts"
971
+ * api.route("GET /", {
972
+ * handler: "src/get.handler",
973
+ * memory: "2048 MB"
974
+ * });
975
+ * ```
976
+ *
977
+ * Or pass in the ARN of an existing Lambda function.
978
+ *
979
+ * ```js title="sst.config.ts"
980
+ * api.route("GET /", "arn:aws:lambda:us-east-1:123456789012:function:my-function");
981
+ * ```
982
+ */
983
+ public route(
984
+ route: string,
985
+ handler: Input<string | FunctionArgs | FunctionArn>,
986
+ args: ApiGatewayV1RouteArgs = {},
987
+ ) {
988
+ const { method, path } = this.parseRoute(route);
989
+ this.createResource(path);
990
+
991
+ const transformed = transform(
992
+ this.constructorArgs.transform?.route?.args,
993
+ this.buildRouteId(method, path, args.name),
994
+ args,
995
+ { provider: this.constructorOpts.provider },
996
+ );
997
+
998
+ const apigRoute = new ApiGatewayV1LambdaRoute(
999
+ transformed[0],
1000
+ {
1001
+ api: {
1002
+ name: this.constructorName,
1003
+ id: this.api.id,
1004
+ executionArn: this.api.executionArn,
1005
+ },
1006
+ method,
1007
+ path,
1008
+ resourceId: this.resources[path],
1009
+ handler,
1010
+ handlerTransform: this.constructorArgs.transform?.route?.handler,
1011
+ ...transformed[1],
1012
+ },
1013
+ transformed[2],
1014
+ );
1015
+
1016
+ this.routes.push(apigRoute);
1017
+
1018
+ return apigRoute;
1019
+ }
1020
+
1021
+ /**
1022
+ * Add a custom integration to the API Gateway REST API. [Learn more about
1023
+ * integrations](https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-integration-settings.html).
1024
+ *
1025
+ * @param route The path for the route.
1026
+ * @param integration The integration configuration.
1027
+ * @param args Configure the route.
1028
+ *
1029
+ * @example
1030
+ * Add a route to trigger a Step Function state machine execution.
1031
+ *
1032
+ * ```js title="sst.config.ts"
1033
+ * api.routeIntegration("POST /run-my-state-machine", {
1034
+ * type: "aws",
1035
+ * uri: "arn:aws:apigateway:us-east-1:states:startExecution",
1036
+ * credentials: "arn:aws:iam::123456789012:role/apigateway-execution-role",
1037
+ * integrationHttpMethod: "POST",
1038
+ * requestTemplates: {
1039
+ * "application/json": JSON.stringify({
1040
+ * input: "$input.json('$')",
1041
+ * stateMachineArn: "arn:aws:states:us-east-1:123456789012:stateMachine:MyStateMachine"
1042
+ * })
1043
+ * },
1044
+ * passthroughBehavior: "when-no-match"
1045
+ * });
1046
+ * ```
1047
+ */
1048
+ public routeIntegration(
1049
+ route: string,
1050
+ integration: ApiGatewayV1IntegrationArgs,
1051
+ args: ApiGatewayV1RouteArgs = {},
1052
+ ) {
1053
+ const { method, path } = this.parseRoute(route);
1054
+ this.createResource(path);
1055
+
1056
+ const transformed = transform(
1057
+ this.constructorArgs.transform?.route?.args,
1058
+ this.buildRouteId(method, path, args.name),
1059
+ args,
1060
+ { provider: this.constructorOpts.provider },
1061
+ );
1062
+
1063
+ const apigRoute = new ApiGatewayV1IntegrationRoute(
1064
+ transformed[0],
1065
+ {
1066
+ api: {
1067
+ name: this.constructorName,
1068
+ id: this.api.id,
1069
+ executionArn: this.api.executionArn,
1070
+ },
1071
+ method,
1072
+ path,
1073
+ resourceId: this.resources[path],
1074
+ integration,
1075
+ ...transformed[1],
1076
+ },
1077
+ transformed[2],
1078
+ );
1079
+
1080
+ this.routes.push(apigRoute);
1081
+
1082
+ return apigRoute;
1083
+ }
1084
+
1085
+ private parseRoute(route: string) {
1086
+ const parts = route.split(" ");
1087
+ if (parts.length !== 2) {
1088
+ throw new VisibleError(
1089
+ `Invalid route ${route}. A route must be in the format "METHOD /path".`,
1090
+ );
1091
+ }
1092
+ const [methodRaw, path] = route.split(" ");
1093
+ const method = methodRaw.toUpperCase();
1094
+ if (
1095
+ ![
1096
+ "ANY",
1097
+ "DELETE",
1098
+ "GET",
1099
+ "HEAD",
1100
+ "OPTIONS",
1101
+ "PATCH",
1102
+ "POST",
1103
+ "PUT",
1104
+ ].includes(method)
1105
+ )
1106
+ throw new VisibleError(`Invalid method ${methodRaw} in route ${route}`);
1107
+
1108
+ if (!path.startsWith("/"))
1109
+ throw new VisibleError(
1110
+ `Invalid path ${path} in route ${route}. Path must start with "/".`,
1111
+ );
1112
+
1113
+ return { method, path };
1114
+ }
1115
+
1116
+ private buildRouteId(method: string, path: string, name?: string) {
1117
+ const suffix = name
1118
+ ? logicalName(name)
1119
+ : logicalName(
1120
+ hashStringToPrettyString([outputId, method, path].join(""), 6),
1121
+ );
1122
+ return `${this.constructorName}Route${suffix}`;
1123
+ }
1124
+
1125
+ private createResource(path: string) {
1126
+ const pathParts = path.replace(/^\//, "").split("/");
1127
+ for (let i = 0, l = pathParts.length; i < l; i++) {
1128
+ const parentPath = "/" + pathParts.slice(0, i).join("/");
1129
+ const subPath = "/" + pathParts.slice(0, i + 1).join("/");
1130
+ if (!this.resources[subPath]) {
1131
+ const suffix = logicalName(
1132
+ hashStringToPrettyString([this.api.id, subPath].join(""), 6),
1133
+ );
1134
+ const resource = new apigateway.Resource(
1135
+ `${this.constructorName}Resource${suffix}`,
1136
+ {
1137
+ restApi: this.api.id,
1138
+ parentId:
1139
+ parentPath === "/"
1140
+ ? this.api.rootResourceId
1141
+ : this.resources[parentPath],
1142
+ pathPart: pathParts[i],
1143
+ },
1144
+ { parent: this },
1145
+ );
1146
+
1147
+ this.resources[subPath] = resource.id;
1148
+ }
1149
+ }
1150
+ }
1151
+
1152
+ /**
1153
+ * Add an authorizer to the API Gateway REST API.
1154
+ *
1155
+ * @param args Configure the authorizer.
1156
+ * @example
1157
+ * For example, add a Lambda token authorizer.
1158
+ *
1159
+ * ```js title="sst.config.ts"
1160
+ * api.addAuthorizer({
1161
+ * name: "myAuthorizer",
1162
+ * tokenFunction: "src/authorizer.index"
1163
+ * });
1164
+ * ```
1165
+ *
1166
+ * Add a Lambda REQUEST authorizer.
1167
+ *
1168
+ * ```js title="sst.config.ts"
1169
+ * api.addAuthorizer({
1170
+ * name: "myAuthorizer",
1171
+ * requestFunction: "src/authorizer.index"
1172
+ * });
1173
+ * ```
1174
+ *
1175
+ * Add a Cognito User Pool authorizer.
1176
+ *
1177
+ * ```js title="sst.config.ts"
1178
+ * const userPool = new aws.cognito.UserPool();
1179
+ *
1180
+ * api.addAuthorizer({
1181
+ * name: "myAuthorizer",
1182
+ * userPools: [userPool.arn]
1183
+ * });
1184
+ * ```
1185
+ *
1186
+ * You can also customize the authorizer.
1187
+ *
1188
+ * ```js title="sst.config.ts"
1189
+ * api.addAuthorizer({
1190
+ * name: "myAuthorizer",
1191
+ * tokenFunction: "src/authorizer.index",
1192
+ * ttl: 30
1193
+ * });
1194
+ * ```
1195
+ */
1196
+ public addAuthorizer(args: ApiGatewayV1AuthorizerArgs) {
1197
+ const self = this;
1198
+ const selfName = this.constructorName;
1199
+ const nameSuffix = logicalName(args.name);
1200
+
1201
+ return new ApiGatewayV1Authorizer(
1202
+ `${selfName}Authorizer${nameSuffix}`,
1203
+ {
1204
+ api: {
1205
+ id: self.api.id,
1206
+ name: selfName,
1207
+ executionArn: self.api.executionArn,
1208
+ },
1209
+ ...args,
1210
+ },
1211
+ { provider: this.constructorOpts.provider },
1212
+ );
1213
+ }
1214
+
1215
+ /**
1216
+ * Add a usage plan to the API Gateway REST API.
1217
+ *
1218
+ * @param name The name of the usage plan.
1219
+ * @param args Configure the usage plan.
1220
+ * @example
1221
+ *
1222
+ * To add a usage plan to an API, you need to enable the API key for a route, and
1223
+ * then deploy the API.
1224
+ *
1225
+ * ```ts title="sst.config.ts" {4}
1226
+ * const api = new sst.aws.ApiGatewayV1("MyApi");
1227
+ *
1228
+ * api.route("GET /", "src/get.handler", {
1229
+ * apiKey: true
1230
+ * });
1231
+ *
1232
+ * api.deploy();
1233
+ * ```
1234
+ *
1235
+ * Then define your usage plan.
1236
+ *
1237
+ * ```js title="sst.config.ts"
1238
+ * const plan = api.addUsagePlan("MyPlan", {
1239
+ * throttle: {
1240
+ * rate: 100,
1241
+ * burst: 200
1242
+ * },
1243
+ * quota: {
1244
+ * limit: 1000,
1245
+ * period: "month",
1246
+ * offset: 0
1247
+ * }
1248
+ * });
1249
+ * ```
1250
+ *
1251
+ * And create the API key for the plan.
1252
+ *
1253
+ * ```js title="sst.config.ts"
1254
+ * const key = plan.addApiKey("MyKey");
1255
+ * ```
1256
+ *
1257
+ * You can now link the API and API key to other resources, like a function.
1258
+ *
1259
+ * ```ts title="sst.config.ts"
1260
+ * new sst.aws.Function("MyFunction", {
1261
+ * handler: "src/lambda.handler",
1262
+ * link: [api, key]
1263
+ * });
1264
+ * ```
1265
+ *
1266
+ * Once linked, include the key in the `x-api-key` header with your requests.
1267
+ *
1268
+ * ```ts title="src/lambda.ts"
1269
+ * import { Resource } from "sst";
1270
+ *
1271
+ * await fetch(Resource.MyApi.url, {
1272
+ * headers: {
1273
+ * "x-api-key": Resource.MyKey.value
1274
+ * }
1275
+ * });
1276
+ * ```
1277
+ */
1278
+ public addUsagePlan(name: string, args: ApiGatewayV1UsagePlanArgs) {
1279
+ if (!this.stage)
1280
+ throw new VisibleError(
1281
+ `Cannot add a usage plan to the "${this.constructorName}" API before it's deployed. Make sure to call deploy() to deploy the API first.`,
1282
+ );
1283
+
1284
+ return new ApiGatewayV1UsagePlan(
1285
+ name,
1286
+ {
1287
+ apiId: this.api.id,
1288
+ apiStage: this.stage.stageName,
1289
+ ...args,
1290
+ },
1291
+ { provider: this.constructorOpts.provider },
1292
+ );
1293
+ }
1294
+
1295
+ /**
1296
+ * Creates a deployment for the API Gateway REST API.
1297
+ *
1298
+ * :::caution
1299
+ * Your routes won't be added if `deploy` isn't called.
1300
+ * :::
1301
+ *
1302
+ * Your routes won't be added if this isn't called after you've added them. This
1303
+ * is due to a quirk in the way API Gateway V1 is created internally.
1304
+ */
1305
+ public deploy() {
1306
+ const name = this.constructorName;
1307
+ const args = this.constructorArgs;
1308
+ const parent = this;
1309
+ const api = this.api;
1310
+ const routes = this.routes;
1311
+ const region = this.region;
1312
+ const endpointType = this.endpointType;
1313
+ const accessLog = normalizeAccessLog();
1314
+ const domain = normalizeDomain();
1315
+ const corsRoutes = createCorsRoutes();
1316
+ const corsResponses = createCorsResponses();
1317
+ const deployment = createDeployment();
1318
+ const logGroup = createLogGroup();
1319
+ const stage = createStage();
1320
+
1321
+ const certificateArn = createSsl();
1322
+ const apigDomain = createDomainName();
1323
+ createDnsRecords();
1324
+ const apiMapping = createDomainMapping();
1325
+
1326
+ this.deployed = true;
1327
+ this.logGroup = logGroup;
1328
+ this.stage = stage;
1329
+ this.apigDomain = apigDomain;
1330
+ this.apiMapping = apiMapping;
1331
+
1332
+ this.registerOutputs({
1333
+ _hint: this.url,
1334
+ });
1335
+
1336
+ function normalizeAccessLog() {
1337
+ return output(args.accessLog).apply((accessLog) => ({
1338
+ ...accessLog,
1339
+ retention: accessLog?.retention ?? "1 month",
1340
+ }));
1341
+ }
1342
+
1343
+ function normalizeDomain() {
1344
+ if (!args.domain) return;
1345
+
1346
+ return output(args.domain).apply((domain) => {
1347
+ // validate
1348
+ if (typeof domain !== "string") {
1349
+ if (domain.name && domain.nameId)
1350
+ throw new VisibleError(
1351
+ `Cannot configure both domain "name" and "nameId" for the "${name}" API.`,
1352
+ );
1353
+ if (!domain.name && !domain.nameId)
1354
+ throw new VisibleError(
1355
+ `Either domain "name" or "nameId" is required for the "${name}" API.`,
1356
+ );
1357
+ if (domain.dns === false && !domain.cert)
1358
+ throw new VisibleError(
1359
+ `Domain "cert" is required when "dns" is disabled for the "${name}" API.`,
1360
+ );
1361
+ }
1362
+
1363
+ // normalize
1364
+ const norm = typeof domain === "string" ? { name: domain } : domain;
1365
+ return {
1366
+ name: norm.name,
1367
+ nameId: norm.nameId,
1368
+ path: norm.path,
1369
+ dns: norm.dns === false ? undefined : norm.dns ?? awsDns(),
1370
+ cert: norm.cert,
1371
+ };
1372
+ });
1373
+ }
1374
+
1375
+ function createCorsRoutes() {
1376
+ const resourceIds = routes.map(
1377
+ (route) => route.nodes.integration.resourceId,
1378
+ );
1379
+
1380
+ return all([args.cors, resourceIds]).apply(([cors, resourceIds]) => {
1381
+ if (cors === false) return [];
1382
+
1383
+ // filter unique resource ids
1384
+ const uniqueResourceIds = [...new Set(resourceIds)];
1385
+
1386
+ // create cors integrations for the paths
1387
+ return uniqueResourceIds.map((resourceId) => {
1388
+ const method = new apigateway.Method(
1389
+ `${name}CorsMethod${resourceId}`,
1390
+ {
1391
+ restApi: api.id,
1392
+ resourceId,
1393
+ httpMethod: "OPTIONS",
1394
+ authorization: "NONE",
1395
+ },
1396
+ { parent },
1397
+ );
1398
+
1399
+ const methodResponse = new apigateway.MethodResponse(
1400
+ `${name}CorsMethodResponse${resourceId}`,
1401
+ {
1402
+ restApi: api.id,
1403
+ resourceId,
1404
+ httpMethod: method.httpMethod,
1405
+ statusCode: "204",
1406
+ responseParameters: {
1407
+ "method.response.header.Access-Control-Allow-Headers": true,
1408
+ "method.response.header.Access-Control-Allow-Methods": true,
1409
+ "method.response.header.Access-Control-Allow-Origin": true,
1410
+ },
1411
+ },
1412
+ { parent },
1413
+ );
1414
+
1415
+ const integration = new apigateway.Integration(
1416
+ `${name}CorsIntegration${resourceId}`,
1417
+ {
1418
+ restApi: api.id,
1419
+ resourceId,
1420
+ httpMethod: method.httpMethod,
1421
+ type: "MOCK",
1422
+ requestTemplates: {
1423
+ "application/json": "{ statusCode: 200 }",
1424
+ },
1425
+ },
1426
+ { parent },
1427
+ );
1428
+
1429
+ const integrationResponse = new apigateway.IntegrationResponse(
1430
+ `${name}CorsIntegrationResponse${resourceId}`,
1431
+ {
1432
+ restApi: api.id,
1433
+ resourceId,
1434
+ httpMethod: method.httpMethod,
1435
+ statusCode: methodResponse.statusCode,
1436
+ responseParameters: {
1437
+ "method.response.header.Access-Control-Allow-Headers": "'*'",
1438
+ "method.response.header.Access-Control-Allow-Methods":
1439
+ "'OPTIONS,GET,PUT,POST,DELETE,PATCH,HEAD'",
1440
+ "method.response.header.Access-Control-Allow-Origin": "'*'",
1441
+ },
1442
+ },
1443
+ { parent, dependsOn: [integration] },
1444
+ );
1445
+
1446
+ return { method, methodResponse, integration, integrationResponse };
1447
+ });
1448
+ });
1449
+ }
1450
+
1451
+ function createCorsResponses() {
1452
+ return output(args.cors).apply((cors) => {
1453
+ if (cors === false) return [];
1454
+
1455
+ return ["4XX", "5XX"].map(
1456
+ (type) =>
1457
+ new apigateway.Response(
1458
+ `${name}Cors${type}Response`,
1459
+ {
1460
+ restApiId: api.id,
1461
+ responseType: `DEFAULT_${type}`,
1462
+ responseParameters: {
1463
+ "gatewayresponse.header.Access-Control-Allow-Origin": "'*'",
1464
+ "gatewayresponse.header.Access-Control-Allow-Headers": "'*'",
1465
+ },
1466
+ responseTemplates: {
1467
+ "application/json":
1468
+ '{"message":$context.error.messageString}',
1469
+ },
1470
+ },
1471
+ { parent },
1472
+ ),
1473
+ );
1474
+ });
1475
+ }
1476
+
1477
+ function createDeployment() {
1478
+ const resources = all([corsRoutes, corsResponses]).apply(
1479
+ ([corsRoutes, corsResponses]) =>
1480
+ [
1481
+ api,
1482
+ corsRoutes.map((v) => Object.values(v)),
1483
+ corsResponses,
1484
+ routes.map((route) => [
1485
+ route.nodes.integration,
1486
+ route.nodes.method,
1487
+ ]),
1488
+ ].flat(3),
1489
+ );
1490
+
1491
+ // filter serializable output values
1492
+ const resourcesSanitized = all([resources]).apply(([resources]) =>
1493
+ resources.map((resource) =>
1494
+ Object.fromEntries(
1495
+ Object.entries(resource).filter(
1496
+ ([k, v]) => !k.startsWith("_") && typeof v !== "function",
1497
+ ),
1498
+ ),
1499
+ ),
1500
+ );
1501
+
1502
+ return new apigateway.Deployment(
1503
+ ...transform(
1504
+ args.transform?.deployment,
1505
+ `${name}Deployment`,
1506
+ {
1507
+ restApi: api.id,
1508
+ triggers: all([resourcesSanitized]).apply(([resources]) =>
1509
+ Object.fromEntries(
1510
+ resources.map((resource) => [
1511
+ resource.urn,
1512
+ JSON.stringify(resource),
1513
+ ]),
1514
+ ),
1515
+ ),
1516
+ },
1517
+ { parent },
1518
+ ),
1519
+ );
1520
+ }
1521
+
1522
+ function createLogGroup() {
1523
+ return new cloudwatch.LogGroup(
1524
+ ...transform(
1525
+ args.transform?.accessLog,
1526
+ `${name}AccessLog`,
1527
+ {
1528
+ name: `/aws/vendedlogs/apis/${physicalName(64, name)}`,
1529
+ retentionInDays: accessLog.apply(
1530
+ (accessLog) => RETENTION[accessLog.retention],
1531
+ ),
1532
+ },
1533
+ { parent, ignoreChanges: ["name"] },
1534
+ ),
1535
+ );
1536
+ }
1537
+
1538
+ function createStage() {
1539
+ return new apigateway.Stage(
1540
+ ...transform(
1541
+ args.transform?.stage,
1542
+ `${name}Stage`,
1543
+ {
1544
+ restApi: api.id,
1545
+ stageName: $app.stage,
1546
+ deployment: deployment.id,
1547
+ accessLogSettings: {
1548
+ destinationArn: logGroup.arn,
1549
+ format: JSON.stringify({
1550
+ // request info
1551
+ requestTime: `"$context.requestTime"`,
1552
+ requestId: `"$context.requestId"`,
1553
+ httpMethod: `"$context.httpMethod"`,
1554
+ path: `"$context.path"`,
1555
+ resourcePath: `"$context.resourcePath"`,
1556
+ status: `$context.status`, // integer value, do not wrap in quotes
1557
+ responseLatency: `$context.responseLatency`, // integer value, do not wrap in quotes
1558
+ xrayTraceId: `"$context.xrayTraceId"`,
1559
+ // integration info
1560
+ functionResponseStatus: `"$context.integration.status"`,
1561
+ integrationRequestId: `"$context.integration.requestId"`,
1562
+ integrationLatency: `"$context.integration.latency"`,
1563
+ integrationServiceStatus: `"$context.integration.integrationStatus"`,
1564
+ // caller info
1565
+ ip: `"$context.identity.sourceIp"`,
1566
+ userAgent: `"$context.identity.userAgent"`,
1567
+ principalId: `"$context.authorizer.principalId"`,
1568
+ }),
1569
+ },
1570
+ },
1571
+ { parent },
1572
+ ),
1573
+ );
1574
+ }
1575
+
1576
+ function createSsl() {
1577
+ if (!domain) return;
1578
+
1579
+ return all([domain, endpointType, region]).apply(
1580
+ ([domain, endpointType, region]) => {
1581
+ if (domain.cert) return output(domain.cert);
1582
+ if (domain.nameId) return output(undefined);
1583
+
1584
+ return new DnsValidatedCertificate(
1585
+ `${name}Ssl`,
1586
+ {
1587
+ domainName: domain.name,
1588
+ dns: domain.dns!,
1589
+ },
1590
+ {
1591
+ parent,
1592
+ provider:
1593
+ endpointType === "EDGE" && region !== "us-east-1"
1594
+ ? useProvider("us-east-1")
1595
+ : undefined,
1596
+ },
1597
+ ).arn;
1598
+ },
1599
+ );
1600
+ }
1601
+
1602
+ function createDomainName() {
1603
+ if (!domain || !certificateArn) return;
1604
+
1605
+ return all([domain, endpointType]).apply(([domain, endpointType]) =>
1606
+ domain.nameId
1607
+ ? apigateway.DomainName.get(
1608
+ `${name}DomainName`,
1609
+ domain.nameId,
1610
+ {},
1611
+ { parent },
1612
+ )
1613
+ : new apigateway.DomainName(
1614
+ ...transform(
1615
+ args.transform?.domainName,
1616
+ `${name}DomainName`,
1617
+ {
1618
+ domainName: domain?.name,
1619
+ endpointConfiguration: { types: endpointType },
1620
+ ...(endpointType === "REGIONAL"
1621
+ ? {
1622
+ regionalCertificateArn:
1623
+ certificateArn as Output<string>,
1624
+ }
1625
+ : { certificateArn: certificateArn as Output<string> }),
1626
+ },
1627
+ { parent },
1628
+ ),
1629
+ ),
1630
+ );
1631
+ }
1632
+
1633
+ function createDnsRecords(): void {
1634
+ if (!domain || !apigDomain) return;
1635
+
1636
+ domain.apply((domain) => {
1637
+ if (!domain.dns) return;
1638
+ if (domain.nameId) return;
1639
+
1640
+ domain.dns.createAlias(
1641
+ name,
1642
+ {
1643
+ name: domain.name,
1644
+ aliasName: endpointType.apply((v) =>
1645
+ v === "EDGE"
1646
+ ? apigDomain.cloudfrontDomainName
1647
+ : apigDomain.regionalDomainName,
1648
+ ),
1649
+ aliasZone: endpointType.apply((v) =>
1650
+ v === "EDGE"
1651
+ ? apigDomain.cloudfrontZoneId
1652
+ : apigDomain.regionalZoneId,
1653
+ ),
1654
+ },
1655
+ { parent },
1656
+ );
1657
+ });
1658
+ }
1659
+
1660
+ function createDomainMapping() {
1661
+ if (!domain || !apigDomain) return;
1662
+
1663
+ return domain.path?.apply(
1664
+ (path) =>
1665
+ new apigateway.BasePathMapping(
1666
+ `${name}DomainMapping`,
1667
+ {
1668
+ restApi: api.id,
1669
+ domainName: apigDomain.id,
1670
+ stageName: stage.stageName,
1671
+ basePath: path,
1672
+ },
1673
+ { parent },
1674
+ ),
1675
+ );
1676
+ }
1677
+ }
1678
+
1679
+ /** @internal */
1680
+ public getSSTLink() {
1681
+ return {
1682
+ properties: {
1683
+ url: this.url,
1684
+ },
1685
+ };
1686
+ }
1687
+ }
1688
+
1689
+ const __pulumiType = "sst:aws:ApiGatewayV1";
1690
+ // @ts-expect-error
1691
+ ApiGatewayV1.__pulumiType = __pulumiType;