@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,1439 @@
1
+ import { ComponentResourceOptions, Output, all, output } from "@pulumi/pulumi";
2
+ import {
3
+ Component,
4
+ outputId,
5
+ Prettify,
6
+ Transform,
7
+ transform,
8
+ } from "../component";
9
+ import { Link } from "../link";
10
+ import type { Input } from "../input";
11
+ import { FunctionArgs, FunctionArn } from "./function.js";
12
+ import { hashStringToPrettyString, physicalName, logicalName } from "../naming";
13
+ import { VisibleError } from "../error";
14
+ import { DnsValidatedCertificate } from "./dns-validated-certificate";
15
+ import { RETENTION } from "./logging";
16
+ import { dns as awsDns } from "./dns";
17
+ import { ApiGatewayV2DomainArgs } from "./helpers/apigatewayv2-domain";
18
+ import { ApiGatewayV2LambdaRoute } from "./apigatewayv2-lambda-route";
19
+ import { ApiGatewayV2Authorizer } from "./apigatewayv2-authorizer";
20
+ import { apigatewayv2, cloudwatch, types } from "@pulumi/aws";
21
+ import { ApiGatewayV2UrlRoute } from "./apigatewayv2-url-route";
22
+ import {
23
+ Duration,
24
+ DurationHours,
25
+ DurationMinutes,
26
+ toSeconds,
27
+ } from "../duration";
28
+ import { ApiGatewayV2PrivateRoute } from "./apigatewayv2-private-route";
29
+ import { Vpc } from "./vpc";
30
+
31
+ interface ApiGatewayV2CorsArgs {
32
+ /**
33
+ * Allow cookies or other credentials in requests to the HTTP API.
34
+ * @default `false`
35
+ * @example
36
+ * ```js
37
+ * {
38
+ * cors: {
39
+ * allowCredentials: true
40
+ * }
41
+ * }
42
+ * ```
43
+ */
44
+ allowCredentials?: Input<boolean>;
45
+ /**
46
+ * The HTTP headers that origins can include in requests to the HTTP API.
47
+ * @default `["*"]`
48
+ * @example
49
+ * ```js
50
+ * {
51
+ * cors: {
52
+ * allowHeaders: ["date", "keep-alive", "x-custom-header"]
53
+ * }
54
+ * }
55
+ * ```
56
+ */
57
+ allowHeaders?: Input<Input<string>[]>;
58
+ /**
59
+ * The origins that can access the HTTP API.
60
+ * @default `["*"]`
61
+ * @example
62
+ * ```js
63
+ * {
64
+ * cors: {
65
+ * allowOrigins: ["https://www.example.com", "http://localhost:60905"]
66
+ * }
67
+ * }
68
+ * ```
69
+ * Or the wildcard for all origins.
70
+ * ```js
71
+ * {
72
+ * cors: {
73
+ * allowOrigins: ["*"]
74
+ * }
75
+ * }
76
+ * ```
77
+ */
78
+ allowOrigins?: Input<Input<string>[]>;
79
+ /**
80
+ * The HTTP methods that are allowed when calling the HTTP API.
81
+ * @default `["*"]`
82
+ * @example
83
+ * ```js
84
+ * {
85
+ * cors: {
86
+ * allowMethods: ["GET", "POST", "DELETE"]
87
+ * }
88
+ * }
89
+ * ```
90
+ * Or the wildcard for all methods.
91
+ * ```js
92
+ * {
93
+ * cors: {
94
+ * allowMethods: ["*"]
95
+ * }
96
+ * }
97
+ * ```
98
+ */
99
+ allowMethods?: Input<
100
+ Input<
101
+ "*" | "DELETE" | "GET" | "HEAD" | "OPTIONS" | "PATCH" | "POST" | "PUT"
102
+ >[]
103
+ >;
104
+ /**
105
+ * The HTTP headers you want to expose in your function to an origin that calls the HTTP API.
106
+ * @default `[]`
107
+ * @example
108
+ * ```js
109
+ * {
110
+ * cors: {
111
+ * exposeHeaders: ["date", "keep-alive", "x-custom-header"]
112
+ * }
113
+ * }
114
+ * ```
115
+ */
116
+ exposeHeaders?: Input<Input<string>[]>;
117
+ /**
118
+ * The maximum amount of time the browser can cache results of a preflight request. By
119
+ * default the browser doesn't cache the results. The maximum value is `86400 seconds` or `1 day`.
120
+ * @default `"0 seconds"`
121
+ * @example
122
+ * ```js
123
+ * {
124
+ * cors: {
125
+ * maxAge: "1 day"
126
+ * }
127
+ * }
128
+ * ```
129
+ */
130
+ maxAge?: Input<Duration>;
131
+ }
132
+
133
+ export interface ApiGatewayV2Args {
134
+ /**
135
+ * [Link resources](/docs/linking/) to all your API Gateway routes.
136
+ *
137
+ * Linked resources will be merged with the resources linked to each route.
138
+ *
139
+ * @example
140
+ *
141
+ * Takes a list of resources to link to all the routes.
142
+ *
143
+ * ```js
144
+ * {
145
+ * link: [bucket, stripeKey]
146
+ * }
147
+ * ```
148
+ */
149
+ link?: FunctionArgs["link"];
150
+ /**
151
+ * Set a custom domain for your HTTP API.
152
+ *
153
+ * Automatically manages domains hosted on AWS Route 53, Cloudflare, and Vercel. For other
154
+ * providers, you'll need to pass in a `cert` that validates domain ownership and add the
155
+ * DNS records.
156
+ *
157
+ * :::tip
158
+ * Built-in support for AWS Route 53, Cloudflare, and Vercel. And manual setup for other
159
+ * providers.
160
+ * :::
161
+ *
162
+ * @example
163
+ *
164
+ * By default this assumes the domain is hosted on Route 53.
165
+ *
166
+ * ```js
167
+ * {
168
+ * domain: "example.com"
169
+ * }
170
+ * ```
171
+ *
172
+ * For domains hosted on Cloudflare.
173
+ *
174
+ * ```js
175
+ * {
176
+ * domain: {
177
+ * name: "example.com",
178
+ * dns: sst.cloudflare.dns()
179
+ * }
180
+ * }
181
+ * ```
182
+ */
183
+ domain?: Input<string | Prettify<ApiGatewayV2DomainArgs>>;
184
+ /**
185
+ * Customize the CORS (Cross-origin resource sharing) settings for your HTTP API.
186
+ * @default `true`
187
+ * @example
188
+ * Disable CORS. This omits CORS configuration entirely (`CorsConfiguration` is
189
+ * unset). An empty config object is not the same — AWS treats that as CORS
190
+ * enabled with no allowed origins or headers.
191
+ * ```js
192
+ * {
193
+ * cors: false
194
+ * }
195
+ * ```
196
+ * Only enable the `GET` and `POST` methods for `https://example.com`.
197
+ * ```js
198
+ * {
199
+ * cors: {
200
+ * allowMethods: ["GET", "POST"],
201
+ * allowOrigins: ["https://example.com"]
202
+ * }
203
+ * }
204
+ * ```
205
+ */
206
+ cors?: Input<boolean | Prettify<ApiGatewayV2CorsArgs>>;
207
+ /**
208
+ * 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 kept for 1 month.
209
+ * @default `{retention: "1 month"}`
210
+ * @example
211
+ * ```js
212
+ * {
213
+ * accessLog: {
214
+ * retention: "forever"
215
+ * }
216
+ * }
217
+ * ```
218
+ */
219
+ accessLog?: Input<{
220
+ /**
221
+ * The duration the API Gateway logs are kept in CloudWatch.
222
+ * @default `1 month`
223
+ */
224
+ retention?: Input<keyof typeof RETENTION>;
225
+ }>;
226
+ /**
227
+ * Configure the API to connect to private resources in a virtual private cloud or VPC.
228
+ * This creates a VPC link for your HTTP API.
229
+ *
230
+ * @example
231
+ * Create a `Vpc` component.
232
+ *
233
+ * ```js title="sst.config.ts"
234
+ * const myVpc = new sst.aws.Vpc("MyVpc");
235
+ * ```
236
+ *
237
+ * Or reference an existing VPC.
238
+ *
239
+ * ```js title="sst.config.ts"
240
+ * const myVpc = sst.aws.Vpc.get("MyVpc", "vpc-12345678901234567");
241
+ * ```
242
+ *
243
+ * And pass it in. The VPC link will be placed in the public subnets.
244
+ *
245
+ * ```js
246
+ * {
247
+ * vpc: myVpc
248
+ * }
249
+ * ```
250
+ *
251
+ * The above is equivalent to:
252
+ *
253
+ * ```js
254
+ * {
255
+ * vpc: {
256
+ * securityGroups: myVpc.securityGroups,
257
+ * subnets: myVpc.publicSubnets
258
+ * }
259
+ * }
260
+ * ```
261
+ */
262
+ vpc?:
263
+ | Vpc
264
+ | Input<{
265
+ /**
266
+ * A list of VPC security group IDs.
267
+ */
268
+ securityGroups: Input<Input<string>[]>;
269
+ /**
270
+ * A list of VPC subnet IDs.
271
+ */
272
+ subnets: Input<Input<string>[]>;
273
+ }>;
274
+ /**
275
+ * [Transform](/docs/components#transform) how this component creates its underlying
276
+ * resources.
277
+ */
278
+ transform?: {
279
+ /**
280
+ * Transform the API Gateway HTTP API resource.
281
+ */
282
+ api?: Transform<apigatewayv2.ApiArgs>;
283
+ /**
284
+ * Transform the API Gateway HTTP API stage resource.
285
+ */
286
+ stage?: Transform<apigatewayv2.StageArgs>;
287
+ /**
288
+ * Transform the API Gateway HTTP API domain name resource.
289
+ */
290
+ domainName?: Transform<apigatewayv2.DomainNameArgs>;
291
+ /**
292
+ * Transform the API Gateway HTTP API VPC link resource.
293
+ */
294
+ vpcLink?: Transform<apigatewayv2.VpcLinkArgs>;
295
+ /**
296
+ * Transform the CloudWatch LogGroup resource used for access logs.
297
+ */
298
+ logGroup?: Transform<cloudwatch.LogGroupArgs>;
299
+ /**
300
+ * Transform the routes. This is called for every route that is added.
301
+ *
302
+ * :::note
303
+ * This is applied right before the resource is created.
304
+ * :::
305
+ *
306
+ * You can use this to set any default props for all the routes and their handler function.
307
+ * Like the other transforms, you can either pass in an object or a callback.
308
+ *
309
+ * @example
310
+ *
311
+ * Here we are setting a default memory of `2048 MB` for our routes.
312
+ *
313
+ * ```js
314
+ * {
315
+ * transform: {
316
+ * route: {
317
+ * handler: (args, opts) => {
318
+ * // Set the default if it's not set by the route
319
+ * args.memory ??= "2048 MB";
320
+ * }
321
+ * }
322
+ * }
323
+ * }
324
+ * ```
325
+ *
326
+ * Defaulting to IAM auth for all our routes.
327
+ *
328
+ * ```js
329
+ * {
330
+ * transform: {
331
+ * route: {
332
+ * args: (props) => {
333
+ * // Set the default if it's not set by the route
334
+ * props.auth ??= { iam: true };
335
+ * }
336
+ * }
337
+ * }
338
+ * }
339
+ * ```
340
+ */
341
+ route?: {
342
+ /**
343
+ * Transform the handler function of the route.
344
+ */
345
+ handler?: Transform<FunctionArgs>;
346
+ /**
347
+ * Transform the arguments for the route.
348
+ */
349
+ args?: Transform<ApiGatewayV2RouteArgs>;
350
+ };
351
+ };
352
+ }
353
+
354
+ export interface ApiGatewayV2AuthorizerArgs {
355
+ /**
356
+ * The name of the authorizer.
357
+ * @example
358
+ * ```js
359
+ * {
360
+ * name: "myAuthorizer"
361
+ * }
362
+ * ```
363
+ */
364
+ name: string;
365
+ /**
366
+ * Create a JWT or JSON Web Token authorizer that can be used by the routes.
367
+ *
368
+ * @example
369
+ * Configure JWT auth.
370
+ *
371
+ * ```js
372
+ * {
373
+ * jwt: {
374
+ * issuer: "https://issuer.com/",
375
+ * audiences: ["https://api.example.com"],
376
+ * identitySource: "$request.header.AccessToken"
377
+ * }
378
+ * }
379
+ * ```
380
+ *
381
+ * You can also use Cognito as the identity provider.
382
+ *
383
+ * ```js
384
+ * {
385
+ * jwt: {
386
+ * audiences: [userPoolClient.id],
387
+ * issuer: $interpolate`https://cognito-idp.${aws.getArnOutput(userPool).region}.amazonaws.com/${userPool.id}`,
388
+ * }
389
+ * }
390
+ * ```
391
+ *
392
+ * Where `userPool` and `userPoolClient` are:
393
+ *
394
+ * ```js
395
+ * const userPool = new aws.cognito.UserPool();
396
+ * const userPoolClient = new aws.cognito.UserPoolClient();
397
+ * ```
398
+ */
399
+ jwt?: Input<{
400
+ /**
401
+ * Base domain of the identity provider that issues JSON Web Tokens.
402
+ * @example
403
+ * ```js
404
+ * {
405
+ * issuer: "https://issuer.com/"
406
+ * }
407
+ * ```
408
+ */
409
+ issuer: Input<string>;
410
+ /**
411
+ * List of the intended recipients of the JWT. A valid JWT must provide an `aud` that matches at least one entry in this list.
412
+ */
413
+ audiences: Input<Input<string>[]>;
414
+ /**
415
+ * Specifies where to extract the JWT from the request.
416
+ * @default `"$request.header.Authorization"`
417
+ */
418
+ identitySource?: Input<string>;
419
+ }>;
420
+ /**
421
+ * Create a Lambda authorizer that can be used by the routes.
422
+ *
423
+ * @example
424
+ * Configure Lambda auth.
425
+ *
426
+ * ```js
427
+ * {
428
+ * lambda: {
429
+ * function: "src/authorizer.index"
430
+ * }
431
+ * }
432
+ * ```
433
+ */
434
+ lambda?: Input<{
435
+ /**
436
+ * The Lambda authorizer function. Takes the handler path or the function args.
437
+ * @example
438
+ * Add a simple authorizer.
439
+ *
440
+ * ```js
441
+ * {
442
+ * function: "src/authorizer.index"
443
+ * }
444
+ * ```
445
+ *
446
+ * Customize the authorizer handler.
447
+ *
448
+ * ```js
449
+ * {
450
+ * function: {
451
+ * handler: "src/authorizer.index",
452
+ * memory: "2048 MB"
453
+ * }
454
+ * }
455
+ * ```
456
+ */
457
+ function: Input<string | FunctionArgs | FunctionArn>;
458
+ /**
459
+ * The JWT payload version.
460
+ * @default `"2.0"`
461
+ * @example
462
+ * ```js
463
+ * {
464
+ * payload: "2.0"
465
+ * }
466
+ * ```
467
+ */
468
+ payload?: Input<"1.0" | "2.0">;
469
+ /**
470
+ * The response type.
471
+ * @default `"simple"`
472
+ * @example
473
+ * ```js
474
+ * {
475
+ * response: "iam"
476
+ * }
477
+ * ```
478
+ */
479
+ response?: Input<"simple" | "iam">;
480
+ /**
481
+ * The time to live (TTL) for the authorizer.
482
+ * @default Not cached
483
+ * @example
484
+ * ```js
485
+ * {
486
+ * ttl: "300 seconds"
487
+ * }
488
+ * ```
489
+ */
490
+ ttl?: Input<DurationHours>;
491
+ /**
492
+ * Specifies where to extract the identity from.
493
+ * @default `["$request.header.Authorization"]`
494
+ * @example
495
+ * ```js
496
+ * {
497
+ * identitySources: ["$request.header.RequestToken"]
498
+ * }
499
+ * ```
500
+ */
501
+ identitySources?: Input<Input<string>[]>;
502
+ }>;
503
+ /**
504
+ * [Transform](/docs/components#transform) how this component creates its underlying
505
+ * resources.
506
+ */
507
+ transform?: {
508
+ /**
509
+ * Transform the API Gateway authorizer resource.
510
+ */
511
+ authorizer?: Transform<apigatewayv2.AuthorizerArgs>;
512
+ };
513
+ }
514
+
515
+ export interface ApiGatewayV2RouteArgs {
516
+ /**
517
+ * Enable auth for your HTTP API. By default, auth is disabled.
518
+ *
519
+ * @default `false`
520
+ * @example
521
+ * ```js
522
+ * {
523
+ * auth: {
524
+ * iam: true
525
+ * }
526
+ * }
527
+ * ```
528
+ */
529
+ auth?: Input<
530
+ | false
531
+ | {
532
+ /**
533
+ * Enable IAM authorization for a given API route. When IAM auth is enabled, clients
534
+ * need to use Signature Version 4 to sign their requests with their AWS credentials.
535
+ */
536
+ iam?: Input<boolean>;
537
+ /**
538
+ * Enable JWT or JSON Web Token authorization for a given API route. When JWT auth is enabled, clients need to include a valid JWT in their requests.
539
+ *
540
+ * @example
541
+ * You can configure JWT auth.
542
+ *
543
+ * ```js
544
+ * {
545
+ * auth: {
546
+ * jwt: {
547
+ * authorizer: myAuthorizer.id,
548
+ * scopes: ["read:profile", "write:profile"]
549
+ * }
550
+ * }
551
+ * }
552
+ * ```
553
+ *
554
+ * Where `myAuthorizer` is created by calling the `addAuthorizer` method.
555
+ */
556
+ jwt?: Input<{
557
+ /**
558
+ * Authorizer ID of the JWT authorizer.
559
+ */
560
+ authorizer: Input<string>;
561
+ /**
562
+ * Defines the permissions or access levels that the JWT grants. If the JWT does not have the required scope, the request is rejected. By default it does not require any scopes.
563
+ */
564
+ scopes?: Input<Input<string>[]>;
565
+ }>;
566
+ /**
567
+ * Enable custom Lambda authorization for a given API route. Pass in the authorizer ID.
568
+ *
569
+ * @example
570
+ * ```js
571
+ * {
572
+ * auth: {
573
+ * lambda: myAuthorizer.id
574
+ * }
575
+ * }
576
+ * ```
577
+ *
578
+ * Where `myAuthorizer` is created by calling the `addAuthorizer` method.
579
+ */
580
+ lambda?: Input<string>;
581
+ }
582
+ >;
583
+ /**
584
+ * The name of the route.
585
+ *
586
+ * By default, SST generates a unique suffix from the route path. Setting `name` gives
587
+ * you a stable, human-readable name like `MyApiRouteGetUserHandler`.
588
+ *
589
+ * Must be unique across all routes.
590
+ *
591
+ * @example
592
+ * ```js
593
+ * {
594
+ * name: "GetUser"
595
+ * }
596
+ * ```
597
+ */
598
+ name?: string;
599
+ /**
600
+ * [Transform](/docs/components#transform) how this component creates its underlying
601
+ * resources.
602
+ */
603
+ transform?: {
604
+ /**
605
+ * Transform the API Gateway HTTP API integration resource.
606
+ */
607
+ integration?: Transform<apigatewayv2.IntegrationArgs>;
608
+ /**
609
+ * Transform the API Gateway HTTP API route resource.
610
+ */
611
+ route?: Transform<apigatewayv2.RouteArgs>;
612
+ };
613
+ }
614
+
615
+ /**
616
+ * The `ApiGatewayV2` component lets you add an [Amazon API Gateway HTTP API](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api.html) to your app.
617
+ *
618
+ * @example
619
+ *
620
+ * #### Create the API
621
+ *
622
+ * ```ts title="sst.config.ts"
623
+ * const api = new sst.aws.ApiGatewayV2("MyApi");
624
+ * ```
625
+ *
626
+ * #### Add a custom domain
627
+ *
628
+ * ```js {2} title="sst.config.ts"
629
+ * new sst.aws.ApiGatewayV2("MyApi", {
630
+ * domain: "api.example.com"
631
+ * });
632
+ * ```
633
+ *
634
+ * #### Add routes
635
+ *
636
+ * ```ts title="sst.config.ts"
637
+ * api.route("GET /", "src/get.handler");
638
+ * api.route("POST /", "src/post.handler");
639
+ * ```
640
+ *
641
+ * #### Configure the routes
642
+ *
643
+ * You can configure the route.
644
+ *
645
+ * ```ts title="sst.config.ts"
646
+ * api.route("GET /", "src/get.handler", {
647
+ * auth: { iam: true }
648
+ * });
649
+ * ```
650
+ *
651
+ * #### Configure the route handler
652
+ *
653
+ * You can configure the route handler function.
654
+ *
655
+ * ```ts title="sst.config.ts"
656
+ * api.route("POST /", {
657
+ * handler: "src/post.handler",
658
+ * memory: "2048 MB"
659
+ * });
660
+ * ```
661
+ *
662
+ * #### Default props for all routes
663
+ *
664
+ * You can use the `transform` to set some default props for all your routes. For example,
665
+ * instead of setting the `memory` for each route.
666
+ *
667
+ * ```ts title="sst.config.ts"
668
+ * api.route("GET /", { handler: "src/get.handler", memory: "2048 MB" });
669
+ * api.route("POST /", { handler: "src/post.handler", memory: "2048 MB" });
670
+ * ```
671
+ *
672
+ * You can set it through the `transform`.
673
+ *
674
+ * ```ts title="sst.config.ts" {6}
675
+ * const api = new sst.aws.ApiGatewayV2("MyApi", {
676
+ * transform: {
677
+ * route: {
678
+ * handler: (args, opts) => {
679
+ * // Set the default if it's not set by the route
680
+ * args.memory ??= "2048 MB";
681
+ * }
682
+ * }
683
+ * }
684
+ * });
685
+ *
686
+ * api.route("GET /", "src/get.handler");
687
+ * api.route("POST /", "src/post.handler");
688
+ * ```
689
+ *
690
+ * With this we set the `memory` if it's not overridden by the route.
691
+ */
692
+ export class ApiGatewayV2 extends Component implements Link.Linkable {
693
+ private constructorName: string;
694
+ private constructorArgs: ApiGatewayV2Args;
695
+ private constructorOpts: ComponentResourceOptions;
696
+ private api: apigatewayv2.Api;
697
+ private apigDomain?: Output<apigatewayv2.DomainName>;
698
+ private apiMapping?: Output<apigatewayv2.ApiMapping>;
699
+ private logGroup: cloudwatch.LogGroup;
700
+ private vpcLink?: apigatewayv2.VpcLink;
701
+
702
+ constructor(
703
+ name: string,
704
+ args: ApiGatewayV2Args = {},
705
+ opts: ComponentResourceOptions = {},
706
+ ) {
707
+ super(__pulumiType, name, args, opts);
708
+
709
+ const parent = this;
710
+
711
+ const accessLog = normalizeAccessLog();
712
+ const domain = normalizeDomain();
713
+ const cors = normalizeCors();
714
+ const vpc = normalizeVpc();
715
+
716
+ const vpcLink = createVpcLink();
717
+ const api = createApi();
718
+ const logGroup = createLogGroup();
719
+ const stage = createStage();
720
+
721
+ const certificateArn = createSsl();
722
+ const apigDomain = createDomainName();
723
+ createDnsRecords();
724
+ const apiMapping = createDomainMapping();
725
+
726
+ this.constructorName = name;
727
+ this.constructorArgs = args;
728
+ this.constructorOpts = opts;
729
+ this.api = api;
730
+ this.apigDomain = apigDomain;
731
+ this.apiMapping = apiMapping;
732
+ this.logGroup = logGroup;
733
+ this.vpcLink = vpcLink;
734
+
735
+ this.registerOutputs({
736
+ _hint: this.url,
737
+ });
738
+
739
+ function normalizeAccessLog() {
740
+ return output(args.accessLog).apply((accessLog) => ({
741
+ ...accessLog,
742
+ retention: accessLog?.retention ?? "1 month",
743
+ }));
744
+ }
745
+
746
+ function normalizeDomain() {
747
+ if (!args.domain) return;
748
+
749
+ return output(args.domain).apply((domain) => {
750
+ // validate
751
+ if (typeof domain !== "string") {
752
+ if (domain.name && domain.nameId)
753
+ throw new VisibleError(
754
+ `Cannot configure both domain "name" and "nameId" for the "${name}" API.`,
755
+ );
756
+ if (!domain.name && !domain.nameId)
757
+ throw new VisibleError(
758
+ `Either domain "name" or "nameId" is required for the "${name}" API.`,
759
+ );
760
+ if (domain.dns === false && !domain.cert)
761
+ throw new VisibleError(
762
+ `Domain "cert" is required when "dns" is disabled for the "${name}" API.`,
763
+ );
764
+ }
765
+
766
+ // normalize
767
+ const norm = typeof domain === "string" ? { name: domain } : domain;
768
+ return {
769
+ name: norm.name,
770
+ nameId: norm.nameId,
771
+ path: norm.path,
772
+ dns: norm.dns === false ? undefined : norm.dns ?? awsDns(),
773
+ cert: norm.cert,
774
+ };
775
+ });
776
+ }
777
+
778
+ function normalizeCors() {
779
+ return output(args.cors).apply((cors) => {
780
+ // AWS treats `{}` as an empty CORS config; omit to fully disable.
781
+ if (cors === false) return undefined;
782
+
783
+ const defaultCors: types.input.apigatewayv2.ApiCorsConfiguration = {
784
+ allowHeaders: ["*"],
785
+ allowMethods: ["*"],
786
+ allowOrigins: ["*"],
787
+ };
788
+ return cors === true || cors === undefined
789
+ ? defaultCors
790
+ : {
791
+ ...defaultCors,
792
+ ...cors,
793
+ maxAge: cors.maxAge && toSeconds(cors.maxAge),
794
+ };
795
+ });
796
+ }
797
+
798
+ function normalizeVpc() {
799
+ // "vpc" is undefined
800
+ if (!args.vpc) return;
801
+
802
+ // "vpc" is a Vpc component
803
+ if (args.vpc instanceof Vpc) {
804
+ return {
805
+ subnets: args.vpc.publicSubnets,
806
+ securityGroups: args.vpc.securityGroups,
807
+ };
808
+ }
809
+
810
+ // "vpc" is object
811
+ return output(args.vpc);
812
+ }
813
+
814
+ function createVpcLink() {
815
+ if (!vpc) return;
816
+
817
+ return new apigatewayv2.VpcLink(
818
+ ...transform(
819
+ args.transform?.vpcLink,
820
+ `${name}VpcLink`,
821
+ {
822
+ securityGroupIds: vpc.securityGroups,
823
+ subnetIds: vpc.subnets,
824
+ },
825
+ { parent },
826
+ ),
827
+ );
828
+ }
829
+
830
+ function createApi() {
831
+ return new apigatewayv2.Api(
832
+ ...transform(
833
+ args.transform?.api,
834
+ `${name}Api`,
835
+ {
836
+ protocolType: "HTTP",
837
+ // @ts-ignore Output includes undefined when cors is false
838
+ corsConfiguration: cors,
839
+ },
840
+ { parent },
841
+ ),
842
+ );
843
+ }
844
+
845
+ function createLogGroup() {
846
+ return new cloudwatch.LogGroup(
847
+ ...transform(
848
+ args.transform?.logGroup,
849
+ `${name}AccessLog`,
850
+ {
851
+ name: `/aws/vendedlogs/apis/${physicalName(64, name)}`,
852
+ retentionInDays: accessLog.apply(
853
+ (accessLog) => RETENTION[accessLog.retention],
854
+ ),
855
+ },
856
+ { parent, ignoreChanges: ["name"] },
857
+ ),
858
+ );
859
+ }
860
+
861
+ function createStage() {
862
+ return new apigatewayv2.Stage(
863
+ ...transform(
864
+ args.transform?.stage,
865
+ `${name}Stage`,
866
+ {
867
+ apiId: api.id,
868
+ autoDeploy: true,
869
+ name: "$default",
870
+ accessLogSettings: {
871
+ destinationArn: logGroup.arn,
872
+ format: JSON.stringify({
873
+ // request info
874
+ requestTime: `"$context.requestTime"`,
875
+ requestId: `"$context.requestId"`,
876
+ httpMethod: `"$context.httpMethod"`,
877
+ path: `"$context.path"`,
878
+ routeKey: `"$context.routeKey"`,
879
+ status: `$context.status`, // integer value, do not wrap in quotes
880
+ responseLatency: `$context.responseLatency`, // integer value, do not wrap in quotes
881
+ // integration info
882
+ integrationRequestId: `"$context.integration.requestId"`,
883
+ integrationStatus: `"$context.integration.status"`,
884
+ integrationLatency: `"$context.integration.latency"`,
885
+ integrationServiceStatus: `"$context.integration.integrationStatus"`,
886
+ // caller info
887
+ ip: `"$context.identity.sourceIp"`,
888
+ userAgent: `"$context.identity.userAgent"`,
889
+ //cognitoIdentityId:`"$context.identity.cognitoIdentityId"`, // not supported in us-west-2 region
890
+ }),
891
+ },
892
+ },
893
+ { parent },
894
+ ),
895
+ );
896
+ }
897
+
898
+ function createSsl() {
899
+ if (!domain) return output(undefined);
900
+
901
+ return domain.apply((domain) => {
902
+ if (domain.cert) return output(domain.cert);
903
+ if (domain.nameId) return output(undefined);
904
+
905
+ return new DnsValidatedCertificate(
906
+ `${name}Ssl`,
907
+ {
908
+ domainName: domain.name!,
909
+ dns: domain.dns!,
910
+ },
911
+ { parent },
912
+ ).arn;
913
+ });
914
+ }
915
+
916
+ function createDomainName() {
917
+ if (!domain || !certificateArn) return;
918
+
919
+ return output(domain).apply((domain) => {
920
+ return domain.nameId
921
+ ? apigatewayv2.DomainName.get(
922
+ `${name}DomainName`,
923
+ domain.nameId,
924
+ {},
925
+ { parent },
926
+ )
927
+ : new apigatewayv2.DomainName(
928
+ ...transform(
929
+ args.transform?.domainName,
930
+ `${name}DomainName`,
931
+ {
932
+ domainName: domain.name!,
933
+ domainNameConfiguration: certificateArn.apply(
934
+ (certificateArn) => ({
935
+ certificateArn: certificateArn!,
936
+ endpointType: "REGIONAL",
937
+ securityPolicy: "TLS_1_2",
938
+ }),
939
+ ),
940
+ },
941
+ { parent },
942
+ ),
943
+ );
944
+ });
945
+ }
946
+
947
+ function createDnsRecords(): void {
948
+ if (!domain || !apigDomain) return;
949
+
950
+ domain.apply((domain) => {
951
+ if (!domain.dns) return;
952
+ if (domain.nameId) return;
953
+
954
+ domain.dns.createAlias(
955
+ name,
956
+ {
957
+ name: domain.name!,
958
+ aliasName: apigDomain.domainNameConfiguration.targetDomainName,
959
+ aliasZone: apigDomain.domainNameConfiguration.hostedZoneId,
960
+ },
961
+ { parent },
962
+ );
963
+ });
964
+ }
965
+
966
+ function createDomainMapping() {
967
+ if (!domain || !apigDomain) return;
968
+
969
+ return domain.path?.apply(
970
+ (path) =>
971
+ new apigatewayv2.ApiMapping(
972
+ `${name}DomainMapping`,
973
+ {
974
+ apiId: api.id,
975
+ domainName: apigDomain.id,
976
+ stage: stage.name,
977
+ apiMappingKey: path,
978
+ },
979
+ { parent },
980
+ ),
981
+ );
982
+ }
983
+ }
984
+
985
+ /**
986
+ * The URL of the API.
987
+ *
988
+ * If the `domain` is set, this is the URL with the custom domain.
989
+ * Otherwise, it's the auto-generated API Gateway URL.
990
+ */
991
+ public get url() {
992
+ // Note: If mapping key is set, the URL needs a trailing slash. Without the
993
+ // trailing slash, the API fails with the error {"message":"Not Found"}
994
+ return this.apigDomain && this.apiMapping
995
+ ? all([this.apigDomain.domainName, this.apiMapping.apiMappingKey]).apply(
996
+ ([domain, key]) =>
997
+ key ? `https://${domain}/${key}/` : `https://${domain}`,
998
+ )
999
+ : this.api.apiEndpoint;
1000
+ }
1001
+
1002
+ /**
1003
+ * The underlying [resources](/docs/components/#nodes) this component creates.
1004
+ */
1005
+ public get nodes() {
1006
+ const self = this;
1007
+ return {
1008
+ /**
1009
+ * The Amazon API Gateway HTTP API.
1010
+ */
1011
+ api: this.api,
1012
+ /**
1013
+ * The API Gateway HTTP API domain name.
1014
+ */
1015
+ get domainName() {
1016
+ if (!self.apigDomain)
1017
+ throw new VisibleError(
1018
+ `"nodes.domainName" is not available when domain is not configured for the "${self.constructorName}" API.`,
1019
+ );
1020
+ return self.apigDomain;
1021
+ },
1022
+ /**
1023
+ * The CloudWatch LogGroup for the access logs.
1024
+ */
1025
+ logGroup: this.logGroup,
1026
+ /**
1027
+ * The API Gateway HTTP API VPC link.
1028
+ */
1029
+ vpcLink: this.vpcLink,
1030
+ };
1031
+ }
1032
+
1033
+ /**
1034
+ * Add a route to the API Gateway HTTP API. The route is a combination of
1035
+ * - An HTTP method and a path, `{METHOD} /{path}`.
1036
+ * - Or a `$default` route.
1037
+ *
1038
+ * :::caution
1039
+ * [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.
1040
+ *
1041
+ * Use a single Lambda and handle routing in code if you don't need specific API Gateway features.
1042
+ * :::
1043
+ *
1044
+ * :::tip
1045
+ * The `$default` route is a default or catch-all route. It'll match if no other route matches.
1046
+ * :::
1047
+ *
1048
+ * A method could be one of `GET`, `POST`, `PUT`, `DELETE`, `PATCH`, `HEAD`, `OPTIONS`, or `ANY`. Here `ANY` matches any HTTP method.
1049
+ *
1050
+ * The path can be a combination of
1051
+ * - Literal segments, `/notes`, `/notes/new`, etc.
1052
+ * - Parameter segments, `/notes/{noteId}`, `/notes/{noteId}/attachments/{attachmentId}`, etc.
1053
+ * - 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.
1054
+ *
1055
+ * :::tip
1056
+ * The `{proxy+}` is a greedy segment, it matches all its child paths.
1057
+ * :::
1058
+ *
1059
+ * The `$default` is a reserved keyword for the default route. It'll be matched
1060
+ * if no other route matches. When a request comes in, the API Gateway will look
1061
+ * for the most specific match. If no route matches, the `$default` route will
1062
+ * be invoked.
1063
+ *
1064
+ * :::note
1065
+ * You cannot have duplicate routes.
1066
+ * :::
1067
+ *
1068
+ * @param rawRoute The path for the route.
1069
+ * @param handler The function that'll be invoked.
1070
+ * @param args Configure the route.
1071
+ *
1072
+ * @example
1073
+ * Add a simple route.
1074
+ *
1075
+ * ```js title="sst.config.ts"
1076
+ * api.route("GET /", "src/get.handler");
1077
+ * ```
1078
+ *
1079
+ * Match any HTTP method.
1080
+ *
1081
+ * ```js title="sst.config.ts"
1082
+ * api.route("ANY /", "src/route.handler");
1083
+ * ```
1084
+ *
1085
+ * Add a default or fallback route. Here for every request other than `GET /`,
1086
+ * the `$default` route will be invoked.
1087
+ *
1088
+ * ```js title="sst.config.ts"
1089
+ * api.route("GET /", "src/get.handler");
1090
+ *
1091
+ * api.route("$default", "src/default.handler");
1092
+ * ```
1093
+ *
1094
+ * Add a parameterized route.
1095
+ *
1096
+ * ```js title="sst.config.ts"
1097
+ * api.route("GET /notes/{id}", "src/get.handler");
1098
+ * ```
1099
+ *
1100
+ * Add a greedy route.
1101
+ *
1102
+ * ```js title="sst.config.ts"
1103
+ * api.route("GET /notes/{proxy+}", "src/greedy.handler");
1104
+ * ```
1105
+ *
1106
+ * Enable auth for a route.
1107
+ *
1108
+ * ```js title="sst.config.ts"
1109
+ * api.route("GET /", "src/get.handler")
1110
+ * api.route("POST /", "src/post.handler", {
1111
+ * auth: {
1112
+ * iam: true
1113
+ * }
1114
+ * });
1115
+ * ```
1116
+ *
1117
+ * Customize the route handler.
1118
+ *
1119
+ * ```js title="sst.config.ts"
1120
+ * api.route("GET /", {
1121
+ * handler: "src/get.handler",
1122
+ * memory: "2048 MB"
1123
+ * });
1124
+ * ```
1125
+ *
1126
+ * Or pass in the ARN of an existing Lambda function.
1127
+ *
1128
+ * ```js title="sst.config.ts"
1129
+ * api.route("GET /", "arn:aws:lambda:us-east-1:123456789012:function:my-function");
1130
+ * ```
1131
+ */
1132
+ public route(
1133
+ rawRoute: string,
1134
+ handler: Input<string | FunctionArgs | FunctionArn>,
1135
+ args: ApiGatewayV2RouteArgs = {},
1136
+ ) {
1137
+ const route = this.parseRoute(rawRoute);
1138
+ const transformed = transform(
1139
+ this.constructorArgs.transform?.route?.args,
1140
+ this.buildRouteId(route, args.name),
1141
+ args,
1142
+ { provider: this.constructorOpts.provider },
1143
+ );
1144
+ return new ApiGatewayV2LambdaRoute(
1145
+ transformed[0],
1146
+ {
1147
+ api: {
1148
+ name: this.constructorName,
1149
+ id: this.api.id,
1150
+ executionArn: this.api.executionArn,
1151
+ },
1152
+ route,
1153
+ handler,
1154
+ handlerLink: this.constructorArgs.link,
1155
+ handlerTransform: this.constructorArgs.transform?.route?.handler,
1156
+ ...transformed[1],
1157
+ },
1158
+ transformed[2],
1159
+ );
1160
+ }
1161
+
1162
+ /**
1163
+ * Add a URL route to the API Gateway HTTP API.
1164
+ *
1165
+ * @param rawRoute The path for the route.
1166
+ * @param url The URL to forward to.
1167
+ * @param args Configure the route.
1168
+ *
1169
+ * @example
1170
+ * Add a simple route.
1171
+ *
1172
+ * ```js title="sst.config.ts"
1173
+ * api.routeUrl("GET /", "https://google.com");
1174
+ * ```
1175
+ *
1176
+ * Enable auth for a route.
1177
+ *
1178
+ * ```js title="sst.config.ts"
1179
+ * api.routeUrl("POST /", "https://google.com", {
1180
+ * auth: {
1181
+ * iam: true
1182
+ * }
1183
+ * });
1184
+ * ```
1185
+ */
1186
+ public routeUrl(
1187
+ rawRoute: string,
1188
+ url: Input<string>,
1189
+ args: ApiGatewayV2RouteArgs = {},
1190
+ ) {
1191
+ const route = this.parseRoute(rawRoute);
1192
+ const transformed = transform(
1193
+ this.constructorArgs.transform?.route?.args,
1194
+ this.buildRouteId(route, args.name),
1195
+ args,
1196
+ { provider: this.constructorOpts.provider },
1197
+ );
1198
+ return new ApiGatewayV2UrlRoute(
1199
+ transformed[0],
1200
+ {
1201
+ api: {
1202
+ name: this.constructorName,
1203
+ id: this.api.id,
1204
+ executionArn: this.api.executionArn,
1205
+ },
1206
+ route,
1207
+ url,
1208
+ ...transformed[1],
1209
+ },
1210
+ transformed[2],
1211
+ );
1212
+ }
1213
+
1214
+ /**
1215
+ * Adds a private route to the API Gateway HTTP API.
1216
+ *
1217
+ * To add private routes, you need to have a VPC link. Make sure to pass in a `vpc`.
1218
+ * Learn more about [adding private routes](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-private.html).
1219
+ *
1220
+ * :::tip
1221
+ * You need to pass `vpc` to add a private route.
1222
+ * :::
1223
+ *
1224
+ * A couple of things to note:
1225
+ *
1226
+ * 1. Your API Gateway HTTP API also needs to be in the **same VPC** as the service.
1227
+ *
1228
+ * 2. You also need to verify that your VPC's [**availability zones support VPC link**](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-vpc-links.html#http-api-vpc-link-availability).
1229
+ *
1230
+ * 3. Run `aws ec2 describe-availability-zones` to get a list of AZs for your
1231
+ * account.
1232
+ *
1233
+ * 4. Only list the AZ ID's that support VPC link.
1234
+ * ```ts title="sst.config.ts" {4}
1235
+ * vpc: {
1236
+ * az: ["eu-west-3a", "eu-west-3c"]
1237
+ * }
1238
+ * ```
1239
+ * If the VPC picks an AZ automatically that doesn't support VPC link, you'll get
1240
+ * the following error:
1241
+ * ```
1242
+ * operation error ApiGatewayV2: BadRequestException: Subnet is in Availability
1243
+ * Zone 'euw3-az2' where service is not available
1244
+ * ```
1245
+ *
1246
+ * @param rawRoute The path for the route.
1247
+ * @param arn The ARN of the AWS Load Balancer or Cloud Map service.
1248
+ * @param args Configure the route.
1249
+ *
1250
+ * @example
1251
+ * Here are a few examples using the private route. Add a route to Application Load Balancer.
1252
+ *
1253
+ * ```js title="sst.config.ts"
1254
+ * const loadBalancerArn = "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188";
1255
+ * api.routePrivate("GET /", loadBalancerArn);
1256
+ * ```
1257
+ *
1258
+ * Add a route to AWS Cloud Map service.
1259
+ *
1260
+ * ```js title="sst.config.ts"
1261
+ * const serviceArn = "arn:aws:servicediscovery:us-east-2:123456789012:service/srv-id?stage=prod&deployment=green_deployment";
1262
+ * api.routePrivate("GET /", serviceArn);
1263
+ * ```
1264
+ *
1265
+ * Enable IAM authentication for a route.
1266
+ *
1267
+ * ```js title="sst.config.ts"
1268
+ * api.routePrivate("GET /", serviceArn, {
1269
+ * auth: {
1270
+ * iam: true
1271
+ * }
1272
+ * });
1273
+ * ```
1274
+ */
1275
+ public routePrivate(
1276
+ rawRoute: string,
1277
+ arn: Input<string>,
1278
+ args: ApiGatewayV2RouteArgs = {},
1279
+ ) {
1280
+ if (!this.vpcLink)
1281
+ throw new VisibleError(
1282
+ `To add private routes, you need to have a VPC link. Configure "vpc" for the "${this.constructorName}" API to create a VPC link.`,
1283
+ );
1284
+
1285
+ const route = this.parseRoute(rawRoute);
1286
+ const transformed = transform(
1287
+ this.constructorArgs.transform?.route?.args,
1288
+ this.buildRouteId(route, args.name),
1289
+ args,
1290
+ { provider: this.constructorOpts.provider },
1291
+ );
1292
+ return new ApiGatewayV2PrivateRoute(
1293
+ transformed[0],
1294
+ {
1295
+ api: {
1296
+ name: this.constructorName,
1297
+ id: this.api.id,
1298
+ executionArn: this.api.executionArn,
1299
+ },
1300
+ route,
1301
+ vpcLink: this.vpcLink.id,
1302
+ arn,
1303
+ ...transformed[1],
1304
+ },
1305
+ transformed[2],
1306
+ );
1307
+ }
1308
+
1309
+ private parseRoute(rawRoute: string) {
1310
+ if (rawRoute.toLowerCase() === "$default") return "$default";
1311
+
1312
+ const parts = rawRoute.split(" ");
1313
+ if (parts.length !== 2) {
1314
+ throw new VisibleError(
1315
+ `Invalid route ${rawRoute}. A route must be in the format "METHOD /path".`,
1316
+ );
1317
+ }
1318
+ const [methodRaw, path] = rawRoute.split(" ");
1319
+ const method = methodRaw.toUpperCase();
1320
+ if (
1321
+ ![
1322
+ "ANY",
1323
+ "DELETE",
1324
+ "GET",
1325
+ "HEAD",
1326
+ "OPTIONS",
1327
+ "PATCH",
1328
+ "POST",
1329
+ "PUT",
1330
+ ].includes(method)
1331
+ )
1332
+ throw new VisibleError(
1333
+ `Invalid method ${methodRaw} in route ${rawRoute}`,
1334
+ );
1335
+
1336
+ if (!path.startsWith("/"))
1337
+ throw new VisibleError(
1338
+ `Invalid path ${path} in route ${rawRoute}. Path must start with "/".`,
1339
+ );
1340
+
1341
+ return `${method} ${path}`;
1342
+ }
1343
+
1344
+ private buildRouteId(route: string, name?: string) {
1345
+ const suffix = name
1346
+ ? logicalName(name)
1347
+ : logicalName(hashStringToPrettyString([outputId, route].join(""), 6));
1348
+ return `${this.constructorName}Route${suffix}`;
1349
+ }
1350
+
1351
+ /**
1352
+ * Add an authorizer to the API Gateway HTTP API.
1353
+ *
1354
+ * @param args Configure the authorizer.
1355
+ * @example
1356
+ * Add a Lambda authorizer.
1357
+ *
1358
+ * ```js title="sst.config.ts"
1359
+ * api.addAuthorizer({
1360
+ * name: "myAuthorizer",
1361
+ * lambda: {
1362
+ * function: "src/authorizer.index"
1363
+ * }
1364
+ * });
1365
+ * ```
1366
+ *
1367
+ * Add a JWT authorizer.
1368
+ *
1369
+ * ```js title="sst.config.ts"
1370
+ * const authorizer = api.addAuthorizer({
1371
+ * name: "myAuthorizer",
1372
+ * jwt: {
1373
+ * issuer: "https://issuer.com/",
1374
+ * audiences: ["https://api.example.com"],
1375
+ * identitySource: "$request.header.AccessToken"
1376
+ * }
1377
+ * });
1378
+ * ```
1379
+ *
1380
+ * Add a Cognito UserPool as a JWT authorizer.
1381
+ *
1382
+ * ```js title="sst.config.ts"
1383
+ * const pool = new sst.aws.CognitoUserPool("MyUserPool");
1384
+ * const poolClient = userPool.addClient("Web");
1385
+ *
1386
+ * const authorizer = api.addAuthorizer({
1387
+ * name: "myCognitoAuthorizer",
1388
+ * jwt: {
1389
+ * issuer: $interpolate`https://cognito-idp.${aws.getRegionOutput().region}.amazonaws.com/${pool.id}`,
1390
+ * audiences: [poolClient.id]
1391
+ * }
1392
+ * });
1393
+ * ```
1394
+ *
1395
+ * Now you can use the authorizer in your routes.
1396
+ *
1397
+ * ```js title="sst.config.ts"
1398
+ * api.route("GET /", "src/get.handler", {
1399
+ * auth: {
1400
+ * jwt: {
1401
+ * authorizer: authorizer.id
1402
+ * }
1403
+ * }
1404
+ * });
1405
+ * ```
1406
+ */
1407
+ public addAuthorizer(args: ApiGatewayV2AuthorizerArgs) {
1408
+ const self = this;
1409
+ const selfName = this.constructorName;
1410
+ const nameSuffix = logicalName(args.name);
1411
+
1412
+ return new ApiGatewayV2Authorizer(
1413
+ `${selfName}Authorizer${nameSuffix}`,
1414
+ {
1415
+ api: {
1416
+ id: self.api.id,
1417
+ name: selfName,
1418
+ executionArn: this.api.executionArn,
1419
+ },
1420
+ type: "http",
1421
+ ...args,
1422
+ },
1423
+ { provider: this.constructorOpts.provider },
1424
+ );
1425
+ }
1426
+
1427
+ /** @internal */
1428
+ public getSSTLink() {
1429
+ return {
1430
+ properties: {
1431
+ url: this.url,
1432
+ },
1433
+ };
1434
+ }
1435
+ }
1436
+
1437
+ const __pulumiType = "sst:aws:ApiGatewayV2";
1438
+ // @ts-expect-error
1439
+ ApiGatewayV2.__pulumiType = __pulumiType;