sst 3.0.0 → 3.0.1-10

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 (460) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.js +2 -0
  3. package/dist/resource.d.ts +4 -0
  4. package/dist/resource.js +15 -0
  5. package/dist/vector-client.d.ts +126 -0
  6. package/dist/vector-client.js +38 -0
  7. package/package.json +16 -137
  8. package/LICENSE +0 -21
  9. package/README.md +0 -43
  10. package/bootstrap.d.ts +0 -5
  11. package/bootstrap.js +0 -318
  12. package/bus.d.ts +0 -20
  13. package/bus.js +0 -52
  14. package/cache.d.ts +0 -4
  15. package/cache.js +0 -31
  16. package/cdk/deploy-stack.d.ts +0 -223
  17. package/cdk/deploy-stack.js +0 -562
  18. package/cdk/deployments-wrapper.d.ts +0 -3
  19. package/cdk/deployments-wrapper.js +0 -135
  20. package/cdk/deployments.d.ts +0 -327
  21. package/cdk/deployments.js +0 -360
  22. package/cdk/util.d.ts +0 -1
  23. package/cdk/util.js +0 -17
  24. package/cli/ci-info.d.ts +0 -4
  25. package/cli/ci-info.js +0 -8
  26. package/cli/colors.d.ts +0 -17
  27. package/cli/colors.js +0 -27
  28. package/cli/commands/bind.d.ts +0 -19
  29. package/cli/commands/bind.js +0 -360
  30. package/cli/commands/bootstrap.d.ts +0 -15
  31. package/cli/commands/bootstrap.js +0 -11
  32. package/cli/commands/build.d.ts +0 -17
  33. package/cli/commands/build.js +0 -25
  34. package/cli/commands/connect.d.ts +0 -17
  35. package/cli/commands/connect.js +0 -55
  36. package/cli/commands/console.d.ts +0 -15
  37. package/cli/commands/console.js +0 -22
  38. package/cli/commands/deploy.d.ts +0 -19
  39. package/cli/commands/deploy.js +0 -112
  40. package/cli/commands/dev.d.ts +0 -25
  41. package/cli/commands/dev.js +0 -351
  42. package/cli/commands/diff.d.ts +0 -19
  43. package/cli/commands/diff.js +0 -89
  44. package/cli/commands/plugins/kysely.d.ts +0 -1
  45. package/cli/commands/plugins/kysely.js +0 -87
  46. package/cli/commands/plugins/pothos.d.ts +0 -1
  47. package/cli/commands/plugins/pothos.js +0 -58
  48. package/cli/commands/plugins/warmer.d.ts +0 -1
  49. package/cli/commands/plugins/warmer.js +0 -33
  50. package/cli/commands/remove.d.ts +0 -19
  51. package/cli/commands/remove.js +0 -62
  52. package/cli/commands/secrets/get.d.ts +0 -19
  53. package/cli/commands/secrets/get.js +0 -27
  54. package/cli/commands/secrets/list.d.ts +0 -19
  55. package/cli/commands/secrets/list.js +0 -69
  56. package/cli/commands/secrets/load.d.ts +0 -17
  57. package/cli/commands/secrets/load.js +0 -47
  58. package/cli/commands/secrets/remove.d.ts +0 -19
  59. package/cli/commands/secrets/remove.js +0 -27
  60. package/cli/commands/secrets/secrets.d.ts +0 -2
  61. package/cli/commands/secrets/secrets.js +0 -16
  62. package/cli/commands/secrets/set.d.ts +0 -21
  63. package/cli/commands/secrets/set.js +0 -54
  64. package/cli/commands/telemetry.d.ts +0 -17
  65. package/cli/commands/telemetry.js +0 -24
  66. package/cli/commands/transform.d.ts +0 -17
  67. package/cli/commands/transform.js +0 -62
  68. package/cli/commands/types.d.ts +0 -15
  69. package/cli/commands/types.js +0 -25
  70. package/cli/commands/update.d.ts +0 -17
  71. package/cli/commands/update.js +0 -116
  72. package/cli/commands/version.d.ts +0 -15
  73. package/cli/commands/version.js +0 -15
  74. package/cli/local/router.d.ts +0 -44
  75. package/cli/local/router.js +0 -43
  76. package/cli/local/server.d.ts +0 -22
  77. package/cli/local/server.js +0 -319
  78. package/cli/program.d.ts +0 -19
  79. package/cli/program.js +0 -87
  80. package/cli/spinner.d.ts +0 -3
  81. package/cli/spinner.js +0 -14
  82. package/cli/sst.d.ts +0 -2
  83. package/cli/sst.js +0 -74
  84. package/cli/telemetry/environment.d.ts +0 -15
  85. package/cli/telemetry/environment.js +0 -27
  86. package/cli/telemetry/post-payload.d.ts +0 -1
  87. package/cli/telemetry/post-payload.js +0 -27
  88. package/cli/telemetry/project-id.d.ts +0 -2
  89. package/cli/telemetry/project-id.js +0 -47
  90. package/cli/telemetry/telemetry.d.ts +0 -19
  91. package/cli/telemetry/telemetry.js +0 -103
  92. package/cli/terminal.d.ts +0 -1
  93. package/cli/terminal.js +0 -8
  94. package/cli/ui/deploy.d.ts +0 -10
  95. package/cli/ui/deploy.js +0 -172
  96. package/cli/ui/functions.d.ts +0 -2
  97. package/cli/ui/functions.js +0 -130
  98. package/cli/ui/header.d.ts +0 -5
  99. package/cli/ui/header.js +0 -16
  100. package/cli/ui/stack.d.ts +0 -1
  101. package/cli/ui/stack.js +0 -6
  102. package/config.d.ts +0 -56
  103. package/config.js +0 -244
  104. package/constructs/Api.d.ts +0 -814
  105. package/constructs/Api.js +0 -743
  106. package/constructs/ApiGatewayV1Api.d.ts +0 -642
  107. package/constructs/ApiGatewayV1Api.js +0 -767
  108. package/constructs/App.d.ts +0 -168
  109. package/constructs/App.js +0 -493
  110. package/constructs/AppSyncApi.d.ts +0 -550
  111. package/constructs/AppSyncApi.js +0 -493
  112. package/constructs/AstroSite.d.ts +0 -39
  113. package/constructs/AstroSite.js +0 -78
  114. package/constructs/AstroSite.tsdoc.d.ts +0 -2
  115. package/constructs/AstroSite.tsdoc.js +0 -2
  116. package/constructs/Auth.d.ts +0 -100
  117. package/constructs/Auth.js +0 -177
  118. package/constructs/BaseSite.d.ts +0 -29
  119. package/constructs/BaseSite.js +0 -43
  120. package/constructs/Bucket.d.ts +0 -364
  121. package/constructs/Bucket.js +0 -327
  122. package/constructs/Cognito.d.ts +0 -232
  123. package/constructs/Cognito.js +0 -370
  124. package/constructs/Config.d.ts +0 -3
  125. package/constructs/Config.js +0 -3
  126. package/constructs/Construct.d.ts +0 -23
  127. package/constructs/Construct.js +0 -46
  128. package/constructs/Cron.d.ts +0 -164
  129. package/constructs/Cron.js +0 -114
  130. package/constructs/Distribution.d.ts +0 -143
  131. package/constructs/Distribution.js +0 -260
  132. package/constructs/EdgeFunction.d.ts +0 -49
  133. package/constructs/EdgeFunction.js +0 -442
  134. package/constructs/EventBus.d.ts +0 -444
  135. package/constructs/EventBus.js +0 -440
  136. package/constructs/Function.d.ts +0 -690
  137. package/constructs/Function.js +0 -583
  138. package/constructs/FunctionalStack.d.ts +0 -13
  139. package/constructs/FunctionalStack.js +0 -62
  140. package/constructs/Job.d.ts +0 -337
  141. package/constructs/Job.js +0 -404
  142. package/constructs/KinesisStream.d.ts +0 -224
  143. package/constructs/KinesisStream.js +0 -207
  144. package/constructs/Metadata.d.ts +0 -60
  145. package/constructs/Metadata.js +0 -1
  146. package/constructs/NextjsSite.d.ts +0 -104
  147. package/constructs/NextjsSite.js +0 -308
  148. package/constructs/Parameter.d.ts +0 -37
  149. package/constructs/Parameter.js +0 -53
  150. package/constructs/Queue.d.ts +0 -194
  151. package/constructs/Queue.js +0 -204
  152. package/constructs/RDS.d.ts +0 -221
  153. package/constructs/RDS.js +0 -363
  154. package/constructs/RemixSite.d.ts +0 -42
  155. package/constructs/RemixSite.js +0 -158
  156. package/constructs/RemixSite.tsdoc.d.ts +0 -2
  157. package/constructs/RemixSite.tsdoc.js +0 -2
  158. package/constructs/Script.d.ts +0 -160
  159. package/constructs/Script.js +0 -179
  160. package/constructs/Secret.d.ts +0 -30
  161. package/constructs/Secret.js +0 -59
  162. package/constructs/Service.d.ts +0 -487
  163. package/constructs/Service.js +0 -655
  164. package/constructs/SolidStartSite.d.ts +0 -37
  165. package/constructs/SolidStartSite.js +0 -66
  166. package/constructs/SolidStartSite.tsdoc.d.ts +0 -2
  167. package/constructs/SolidStartSite.tsdoc.js +0 -2
  168. package/constructs/SsrFunction.d.ts +0 -60
  169. package/constructs/SsrFunction.js +0 -226
  170. package/constructs/SsrSite.d.ts +0 -407
  171. package/constructs/SsrSite.js +0 -850
  172. package/constructs/Stack.d.ts +0 -127
  173. package/constructs/Stack.js +0 -243
  174. package/constructs/StaticSite.d.ts +0 -348
  175. package/constructs/StaticSite.js +0 -468
  176. package/constructs/SvelteKitSite.d.ts +0 -40
  177. package/constructs/SvelteKitSite.js +0 -106
  178. package/constructs/SvelteKitSite.tsdoc.d.ts +0 -2
  179. package/constructs/SvelteKitSite.tsdoc.js +0 -2
  180. package/constructs/Table.d.ts +0 -410
  181. package/constructs/Table.js +0 -425
  182. package/constructs/Topic.d.ts +0 -257
  183. package/constructs/Topic.js +0 -273
  184. package/constructs/WebSocketApi.d.ts +0 -355
  185. package/constructs/WebSocketApi.js +0 -404
  186. package/constructs/cdk/HttpAwsIntegration.d.ts +0 -32
  187. package/constructs/cdk/HttpAwsIntegration.js +0 -24
  188. package/constructs/cdk/certificate-base.d.ts +0 -18
  189. package/constructs/cdk/certificate-base.js +0 -26
  190. package/constructs/cdk/dns-validated-certificate.d.ts +0 -77
  191. package/constructs/cdk/dns-validated-certificate.js +0 -125
  192. package/constructs/cdk/website-redirect.d.ts +0 -53
  193. package/constructs/cdk/website-redirect.js +0 -77
  194. package/constructs/context.d.ts +0 -3
  195. package/constructs/context.js +0 -27
  196. package/constructs/deferred_task.d.ts +0 -6
  197. package/constructs/deferred_task.js +0 -45
  198. package/constructs/deprecated/NextjsSite.d.ts +0 -309
  199. package/constructs/deprecated/NextjsSite.js +0 -1074
  200. package/constructs/deprecated/cross-region-helper.d.ts +0 -7
  201. package/constructs/deprecated/cross-region-helper.js +0 -152
  202. package/constructs/deprecated/index.d.ts +0 -1
  203. package/constructs/deprecated/index.js +0 -1
  204. package/constructs/future/Auth.d.ts +0 -80
  205. package/constructs/future/Auth.js +0 -122
  206. package/constructs/future/index.d.ts +0 -1
  207. package/constructs/future/index.js +0 -1
  208. package/constructs/index.d.ts +0 -32
  209. package/constructs/index.js +0 -32
  210. package/constructs/static-file-list.d.ts +0 -1
  211. package/constructs/static-file-list.js +0 -51
  212. package/constructs/util/apiGatewayV1AccessLog.d.ts +0 -15
  213. package/constructs/util/apiGatewayV1AccessLog.js +0 -76
  214. package/constructs/util/apiGatewayV2AccessLog.d.ts +0 -10
  215. package/constructs/util/apiGatewayV2AccessLog.js +0 -107
  216. package/constructs/util/apiGatewayV2Cors.d.ts +0 -67
  217. package/constructs/util/apiGatewayV2Cors.js +0 -21
  218. package/constructs/util/apiGatewayV2Domain.d.ts +0 -47
  219. package/constructs/util/apiGatewayV2Domain.js +0 -208
  220. package/constructs/util/appSyncApiDomain.d.ts +0 -41
  221. package/constructs/util/appSyncApiDomain.js +0 -176
  222. package/constructs/util/builder.d.ts +0 -3
  223. package/constructs/util/builder.js +0 -9
  224. package/constructs/util/duration.d.ts +0 -3
  225. package/constructs/util/duration.js +0 -19
  226. package/constructs/util/functionBinding.d.ts +0 -31
  227. package/constructs/util/functionBinding.js +0 -104
  228. package/constructs/util/functionUrlCors.d.ts +0 -67
  229. package/constructs/util/functionUrlCors.js +0 -23
  230. package/constructs/util/permission.d.ts +0 -8
  231. package/constructs/util/permission.js +0 -228
  232. package/constructs/util/size.d.ts +0 -3
  233. package/constructs/util/size.js +0 -12
  234. package/constructs/util/warning.d.ts +0 -11
  235. package/constructs/util/warning.js +0 -21
  236. package/context/context.d.ts +0 -13
  237. package/context/context.js +0 -69
  238. package/context/context2.d.ts +0 -16
  239. package/context/context2.js +0 -108
  240. package/context/handler.d.ts +0 -25
  241. package/context/handler.js +0 -21
  242. package/context/index.d.ts +0 -2
  243. package/context/index.js +0 -2
  244. package/credentials.d.ts +0 -9
  245. package/credentials.js +0 -145
  246. package/error.d.ts +0 -6
  247. package/error.js +0 -10
  248. package/index.d.ts +0 -1
  249. package/index.js +0 -1
  250. package/iot.d.ts +0 -6
  251. package/iot.js +0 -163
  252. package/logger.d.ts +0 -3
  253. package/logger.js +0 -32
  254. package/node/actor/index.d.ts +0 -29
  255. package/node/actor/index.js +0 -17
  256. package/node/api/index.d.ts +0 -64
  257. package/node/api/index.js +0 -179
  258. package/node/auth/adapter/adapter.d.ts +0 -3
  259. package/node/auth/adapter/adapter.js +0 -3
  260. package/node/auth/adapter/facebook.d.ts +0 -2
  261. package/node/auth/adapter/facebook.js +0 -26
  262. package/node/auth/adapter/github.d.ts +0 -2
  263. package/node/auth/adapter/github.js +0 -21
  264. package/node/auth/adapter/google.d.ts +0 -9
  265. package/node/auth/adapter/google.js +0 -18
  266. package/node/auth/adapter/link.d.ts +0 -8
  267. package/node/auth/adapter/link.js +0 -39
  268. package/node/auth/adapter/oauth.d.ts +0 -25
  269. package/node/auth/adapter/oauth.js +0 -52
  270. package/node/auth/adapter/oidc.d.ts +0 -17
  271. package/node/auth/adapter/oidc.js +0 -50
  272. package/node/auth/adapter/twitch.d.ts +0 -2
  273. package/node/auth/adapter/twitch.js +0 -11
  274. package/node/auth/auth.d.ts +0 -24
  275. package/node/auth/auth.js +0 -74
  276. package/node/auth/index.d.ts +0 -13
  277. package/node/auth/index.js +0 -12
  278. package/node/auth/session.d.ts +0 -76
  279. package/node/auth/session.js +0 -121
  280. package/node/bucket/index.d.ts +0 -3
  281. package/node/bucket/index.js +0 -2
  282. package/node/config/index.d.ts +0 -13
  283. package/node/config/index.js +0 -22
  284. package/node/event-bus/index.d.ts +0 -51
  285. package/node/event-bus/index.js +0 -76
  286. package/node/function/index.d.ts +0 -3
  287. package/node/function/index.js +0 -3
  288. package/node/future/auth/adapter/adapter.d.ts +0 -10
  289. package/node/future/auth/adapter/adapter.js +0 -1
  290. package/node/future/auth/adapter/code.d.ts +0 -17
  291. package/node/future/auth/adapter/code.js +0 -68
  292. package/node/future/auth/adapter/facebook.d.ts +0 -16
  293. package/node/future/auth/adapter/facebook.js +0 -27
  294. package/node/future/auth/adapter/github.d.ts +0 -23
  295. package/node/future/auth/adapter/github.js +0 -23
  296. package/node/future/auth/adapter/google.d.ts +0 -28
  297. package/node/future/auth/adapter/google.js +0 -22
  298. package/node/future/auth/adapter/link.d.ts +0 -13
  299. package/node/future/auth/adapter/link.js +0 -47
  300. package/node/future/auth/adapter/microsoft.d.ts +0 -22
  301. package/node/future/auth/adapter/microsoft.js +0 -16
  302. package/node/future/auth/adapter/oauth.d.ts +0 -41
  303. package/node/future/auth/adapter/oauth.js +0 -67
  304. package/node/future/auth/adapter/oidc.d.ts +0 -30
  305. package/node/future/auth/adapter/oidc.js +0 -63
  306. package/node/future/auth/adapter/spotify.d.ts +0 -23
  307. package/node/future/auth/adapter/spotify.js +0 -22
  308. package/node/future/auth/encryption.d.ts +0 -2
  309. package/node/future/auth/encryption.js +0 -30
  310. package/node/future/auth/handler.d.ts +0 -46
  311. package/node/future/auth/handler.js +0 -280
  312. package/node/future/auth/index.d.ts +0 -17
  313. package/node/future/auth/index.js +0 -15
  314. package/node/future/auth/session.d.ts +0 -71
  315. package/node/future/auth/session.js +0 -146
  316. package/node/graphql/index.d.ts +0 -15
  317. package/node/graphql/index.js +0 -32
  318. package/node/job/index.d.ts +0 -37
  319. package/node/job/index.js +0 -64
  320. package/node/kinesis-stream/index.d.ts +0 -3
  321. package/node/kinesis-stream/index.js +0 -3
  322. package/node/queue/index.d.ts +0 -3
  323. package/node/queue/index.js +0 -2
  324. package/node/rds/index.d.ts +0 -3
  325. package/node/rds/index.js +0 -2
  326. package/node/service/index.d.ts +0 -3
  327. package/node/service/index.js +0 -4
  328. package/node/site/index.d.ts +0 -18
  329. package/node/site/index.js +0 -18
  330. package/node/table/index.d.ts +0 -3
  331. package/node/table/index.js +0 -4
  332. package/node/topic/index.d.ts +0 -3
  333. package/node/topic/index.js +0 -4
  334. package/node/util/index.d.ts +0 -2
  335. package/node/util/index.js +0 -196
  336. package/node/util/loader.d.ts +0 -2
  337. package/node/util/loader.js +0 -51
  338. package/node/websocket-api/index.d.ts +0 -23
  339. package/node/websocket-api/index.js +0 -48
  340. package/pothos.d.ts +0 -7
  341. package/pothos.js +0 -160
  342. package/project.d.ts +0 -75
  343. package/project.js +0 -188
  344. package/runtime/handlers/container.d.ts +0 -2
  345. package/runtime/handlers/container.js +0 -263
  346. package/runtime/handlers/dotnet.d.ts +0 -2
  347. package/runtime/handlers/dotnet.js +0 -115
  348. package/runtime/handlers/go.d.ts +0 -2
  349. package/runtime/handlers/go.js +0 -126
  350. package/runtime/handlers/java.d.ts +0 -2
  351. package/runtime/handlers/java.js +0 -103
  352. package/runtime/handlers/node.d.ts +0 -2
  353. package/runtime/handlers/node.js +0 -269
  354. package/runtime/handlers/python.d.ts +0 -2
  355. package/runtime/handlers/python.js +0 -141
  356. package/runtime/handlers/pythonBundling.d.ts +0 -82
  357. package/runtime/handlers/pythonBundling.js +0 -80
  358. package/runtime/handlers/rust.d.ts +0 -2
  359. package/runtime/handlers/rust.js +0 -110
  360. package/runtime/handlers.d.ts +0 -74
  361. package/runtime/handlers.js +0 -151
  362. package/runtime/iot.d.ts +0 -1
  363. package/runtime/iot.js +0 -17
  364. package/runtime/runtime.d.ts +0 -32
  365. package/runtime/runtime.js +0 -1
  366. package/runtime/server.d.ts +0 -6
  367. package/runtime/server.js +0 -150
  368. package/runtime/workers.d.ts +0 -37
  369. package/runtime/workers.js +0 -85
  370. package/stacks/app-metadata.d.ts +0 -7
  371. package/stacks/app-metadata.js +0 -75
  372. package/stacks/assembly.d.ts +0 -1
  373. package/stacks/assembly.js +0 -4
  374. package/stacks/build.d.ts +0 -9
  375. package/stacks/build.js +0 -110
  376. package/stacks/deploy.d.ts +0 -9
  377. package/stacks/deploy.js +0 -240
  378. package/stacks/diff.d.ts +0 -8
  379. package/stacks/diff.js +0 -62
  380. package/stacks/index.d.ts +0 -10
  381. package/stacks/index.js +0 -10
  382. package/stacks/metadata.d.ts +0 -11
  383. package/stacks/metadata.js +0 -83
  384. package/stacks/monitor.d.ts +0 -32
  385. package/stacks/monitor.js +0 -151
  386. package/stacks/remove.d.ts +0 -8
  387. package/stacks/remove.js +0 -76
  388. package/stacks/synth.d.ts +0 -12
  389. package/stacks/synth.js +0 -94
  390. package/support/base-site-archiver.mjs +0 -99
  391. package/support/base-site-custom-resource/s3-handler.py +0 -195
  392. package/support/base-site-custom-resource/s3-upload.py +0 -89
  393. package/support/bootstrap-metadata-function/index.mjs +0 -58011
  394. package/support/bridge/Dockerfile +0 -3
  395. package/support/bridge/bridge.mjs +0 -146
  396. package/support/certificate-requestor/index.js +0 -549
  397. package/support/custom-resources/index.mjs +0 -180627
  398. package/support/dotnet31-bootstrap/Program.cs +0 -17
  399. package/support/dotnet31-bootstrap/dotnet-bootstrap.csproj +0 -12
  400. package/support/dotnet31-bootstrap/release/Amazon.Lambda.Core.dll +0 -0
  401. package/support/dotnet31-bootstrap/release/Amazon.Lambda.RuntimeSupport.dll +0 -0
  402. package/support/dotnet31-bootstrap/release/System.Runtime.CompilerServices.Unsafe.dll +0 -0
  403. package/support/dotnet31-bootstrap/release/System.Text.Encodings.Web.dll +0 -0
  404. package/support/dotnet31-bootstrap/release/System.Text.Json.dll +0 -0
  405. package/support/dotnet31-bootstrap/release/dotnet-bootstrap +0 -0
  406. package/support/dotnet31-bootstrap/release/dotnet-bootstrap.deps.json +0 -230
  407. package/support/dotnet31-bootstrap/release/dotnet-bootstrap.dll +0 -0
  408. package/support/dotnet31-bootstrap/release/dotnet-bootstrap.pdb +0 -0
  409. package/support/dotnet31-bootstrap/release/dotnet-bootstrap.runtimeconfig.json +0 -9
  410. package/support/dotnet6-bootstrap/Program.cs +0 -17
  411. package/support/dotnet6-bootstrap/dotnet-bootstrap.csproj +0 -12
  412. package/support/dotnet6-bootstrap/release/Amazon.Lambda.Core.dll +0 -0
  413. package/support/dotnet6-bootstrap/release/Amazon.Lambda.RuntimeSupport.dll +0 -0
  414. package/support/dotnet6-bootstrap/release/dotnet-bootstrap +0 -0
  415. package/support/dotnet6-bootstrap/release/dotnet-bootstrap.deps.json +0 -59
  416. package/support/dotnet6-bootstrap/release/dotnet-bootstrap.dll +0 -0
  417. package/support/dotnet6-bootstrap/release/dotnet-bootstrap.pdb +0 -0
  418. package/support/dotnet6-bootstrap/release/dotnet-bootstrap.runtimeconfig.json +0 -12
  419. package/support/edge-function/edge-lambda-version.mjs +0 -3
  420. package/support/edge-function/edge-lambda.mjs +0 -3
  421. package/support/edge-function/s3-bucket.mjs +0 -3
  422. package/support/event-bus-retrier/index.mjs +0 -75
  423. package/support/java-runtime/install.sh +0 -25
  424. package/support/java-runtime/pom.xml +0 -39
  425. package/support/java-runtime/release/aws-lambda-java-core-1.2.0.jar +0 -0
  426. package/support/java-runtime/release/aws-lambda-java-runtime-interface-client-1.1.0.jar +0 -0
  427. package/support/java-runtime/release/aws-lambda-java-serialization-1.0.0.jar +0 -0
  428. package/support/job-manager/index.mjs +0 -57679
  429. package/support/nixpacks/Dockerfile +0 -6
  430. package/support/nodejs-runtime/index.mjs +0 -169
  431. package/support/python-runtime/Dockerfile +0 -9
  432. package/support/python-runtime/Dockerfile.custom +0 -21
  433. package/support/python-runtime/Dockerfile.dependencies +0 -26
  434. package/support/python-runtime/runtime.py +0 -127
  435. package/support/rds-migrator/index.mjs +0 -49
  436. package/support/remix-site-function/edge-server.js +0 -161
  437. package/support/remix-site-function/polyfill.js +0 -24
  438. package/support/remix-site-function/regional-server.js +0 -164
  439. package/support/script-function/index.mjs +0 -48760
  440. package/support/service-dev-function/index.js +0 -1
  441. package/support/signing-function/index.mjs +0 -3769
  442. package/support/sls-nextjs-site-build-helper/build.cjs +0 -91
  443. package/support/sls-nextjs-site-build-helper/index-wrapper.js +0 -19
  444. package/support/sls-nextjs-site-function-code-replacer/lambda-code-updater.py +0 -156
  445. package/support/sls-nextjs-site-stub/index.html +0 -99
  446. package/support/ssr-site-function-archiver.mjs +0 -96
  447. package/support/ssr-site-function-stub/index.js +0 -5
  448. package/support/ssr-warmer/index.mjs +0 -34235
  449. package/util/error.d.ts +0 -3
  450. package/util/error.js +0 -6
  451. package/util/fs.d.ts +0 -4
  452. package/util/fs.js +0 -46
  453. package/util/lazy.d.ts +0 -1
  454. package/util/lazy.js +0 -11
  455. package/util/module.d.ts +0 -1
  456. package/util/module.js +0 -5
  457. package/util/process.d.ts +0 -2
  458. package/util/process.js +0 -3
  459. package/watcher.d.ts +0 -14
  460. package/watcher.js +0 -35
package/constructs/Api.js DELETED
@@ -1,743 +0,0 @@
1
- import { Construct } from "constructs";
2
- import { Role, ServicePrincipal, PolicyDocument, PolicyStatement, } from "aws-cdk-lib/aws-iam";
3
- import { HttpUrlIntegration, HttpAlbIntegration, HttpNlbIntegration, HttpLambdaIntegration, } from "@aws-cdk/aws-apigatewayv2-integrations-alpha";
4
- import { HttpAwsIntegration, } from "./cdk/HttpAwsIntegration.js";
5
- import { Stack } from "./Stack.js";
6
- import { getFunctionRef, isCDKConstruct } from "./Construct.js";
7
- import { Function as Fn, } from "./Function.js";
8
- import { toCdkDuration } from "./util/duration.js";
9
- import * as apigV2Cors from "./util/apiGatewayV2Cors.js";
10
- import * as apigV2Domain from "./util/apiGatewayV2Domain.js";
11
- import * as apigV2AccessLog from "./util/apiGatewayV2AccessLog.js";
12
- import { HttpApi, HttpMethod, HttpNoneAuthorizer, HttpRoute, HttpRouteKey, HttpStage, IntegrationCredentials, PayloadFormatVersion, } from "@aws-cdk/aws-apigatewayv2-alpha";
13
- import { HttpIamAuthorizer, HttpJwtAuthorizer, HttpLambdaAuthorizer, HttpLambdaResponseType, HttpUserPoolAuthorizer, } from "@aws-cdk/aws-apigatewayv2-authorizers-alpha";
14
- import { UserPool, UserPoolClient } from "aws-cdk-lib/aws-cognito";
15
- const PayloadFormatVersions = ["1.0", "2.0"];
16
- /////////////////////
17
- // Construct
18
- /////////////////////
19
- /**
20
- * The Api construct is a higher level CDK construct that makes it easy to create an API.
21
- *
22
- * @example
23
- *
24
- * ```ts
25
- * import { Api } from "sst/constructs";
26
- *
27
- * new Api(stack, "Api", {
28
- * routes: {
29
- * "GET /notes": "src/list.main",
30
- * "POST /notes": "src/create.main",
31
- * "GET /notes/{id}": "src/get.main",
32
- * "PUT /notes/{id}": "src/update.main",
33
- * "DELETE /notes/{id}": "src/delete.main",
34
- * },
35
- * });
36
- * ```
37
- */
38
- export class Api extends Construct {
39
- id;
40
- cdk;
41
- props;
42
- _customDomainUrl;
43
- routesData;
44
- authorizersData;
45
- bindingForAllRoutes = [];
46
- permissionsAttachedForAllRoutes = [];
47
- constructor(scope, id, props) {
48
- super(scope, props?.cdk?.id || id);
49
- this.id = id;
50
- this.props = props || {};
51
- this.cdk = {};
52
- this.routesData = {};
53
- this.authorizersData = {};
54
- this.createHttpApi();
55
- this.addAuthorizers(this.props.authorizers || {});
56
- this.addRoutes(this, this.props.routes || {});
57
- }
58
- /**
59
- * The AWS generated URL of the Api.
60
- */
61
- get url() {
62
- const app = this.node.root;
63
- return this.cdk.httpApi instanceof HttpApi
64
- ? this.cdk.httpApi.apiEndpoint
65
- : `https://${this.cdk.httpApi.apiId}.execute-api.${app.region}.amazonaws.com`;
66
- }
67
- /**
68
- * If custom domain is enabled, this is the custom domain URL of the Api.
69
- *
70
- * :::note
71
- * If you are setting the base mapping for the custom domain, you need to include the trailing slash while using the custom domain URL. For example, if the [`domainName`](#domainname) is set to `api.domain.com` and the [`path`](#path) is `v1`, the custom domain URL of the API will be `https://api.domain.com/v1/`.
72
- * :::
73
- */
74
- get customDomainUrl() {
75
- return this._customDomainUrl;
76
- }
77
- /**
78
- * The routes for the Api
79
- */
80
- get routes() {
81
- return Object.keys(this.routesData);
82
- }
83
- /**
84
- * The ARN of the internally created API Gateway HTTP API
85
- */
86
- get httpApiArn() {
87
- const stack = Stack.of(this);
88
- return `arn:${stack.partition}:apigateway:${stack.region}::/apis/${this.cdk.httpApi.apiId}`;
89
- }
90
- /**
91
- * The id of the internally created API Gateway HTTP API
92
- */
93
- get httpApiId() {
94
- return this.cdk.httpApi.apiId;
95
- }
96
- /**
97
- * Adds routes to the Api after it has been created.
98
- *
99
- * @example
100
- * ```js
101
- * api.addRoutes(stack, {
102
- * "GET /notes/{id}": "src/get.main",
103
- * "PUT /notes/{id}": "src/update.main",
104
- * "DELETE /notes/{id}": "src/delete.main",
105
- * });
106
- * ```
107
- */
108
- addRoutes(scope, routes) {
109
- Object.keys(routes).forEach((routeKey) => {
110
- this.addRoute(scope, routeKey, routes[routeKey]);
111
- });
112
- }
113
- /**
114
- * Get the instance of the internally created Function, for a given route key where the `routeKey` is the key used to define a route. For example, `GET /notes`.
115
- *
116
- * @example
117
- * ```js
118
- * const api = new Api(stack, "Api", {
119
- * routes: {
120
- * "GET /notes": "src/list.main",
121
- * },
122
- * });
123
- *
124
- * const listFunction = api.getFunction("GET /notes");
125
- * ```
126
- */
127
- getFunction(routeKey) {
128
- const route = this.routesData[this.normalizeRouteKey(routeKey)];
129
- if (!route)
130
- return;
131
- if (route.type === "function" || route.type === "graphql") {
132
- return route.function;
133
- }
134
- }
135
- /**
136
- * Binds the given list of resources to all the routes.
137
- *
138
- * @example
139
- *
140
- * ```js
141
- * api.bind([STRIPE_KEY, bucket]);
142
- * ```
143
- */
144
- bind(constructs) {
145
- for (const route of Object.values(this.routesData)) {
146
- if (route.type === "function" || route.type === "graphql") {
147
- route.function.bind(constructs);
148
- }
149
- }
150
- this.bindingForAllRoutes.push(...constructs);
151
- }
152
- /**
153
- * Binds the given list of resources to a specific route.
154
- *
155
- * @example
156
- * ```js
157
- * const api = new Api(stack, "Api", {
158
- * routes: {
159
- * "GET /notes": "src/list.main",
160
- * },
161
- * });
162
- *
163
- * api.bindToRoute("GET /notes", [STRIPE_KEY, bucket]);
164
- * ```
165
- *
166
- */
167
- bindToRoute(routeKey, constructs) {
168
- const fn = this.getFunction(routeKey);
169
- if (!fn) {
170
- throw new Error(`Failed to bind resources. Route "${routeKey}" does not exist.`);
171
- }
172
- fn.bind(constructs);
173
- }
174
- /**
175
- * Attaches the given list of permissions to all the routes. This allows the functions to access other AWS resources.
176
- *
177
- * @example
178
- *
179
- * ```js
180
- * api.attachPermissions(["s3"]);
181
- * ```
182
- */
183
- attachPermissions(permissions) {
184
- for (const route of Object.values(this.routesData)) {
185
- if (route.type === "function" || route.type === "graphql") {
186
- route.function.attachPermissions(permissions);
187
- }
188
- }
189
- this.permissionsAttachedForAllRoutes.push(permissions);
190
- }
191
- /**
192
- * Attaches the given list of permissions to a specific route. This allows that function to access other AWS resources.
193
- *
194
- * @example
195
- * ```js
196
- * const api = new Api(stack, "Api", {
197
- * routes: {
198
- * "GET /notes": "src/list.main",
199
- * },
200
- * });
201
- *
202
- * api.attachPermissionsToRoute("GET /notes", ["s3"]);
203
- * ```
204
- *
205
- */
206
- attachPermissionsToRoute(routeKey, permissions) {
207
- const fn = this.getFunction(routeKey);
208
- if (!fn) {
209
- throw new Error(`Failed to attach permissions. Route "${routeKey}" does not exist.`);
210
- }
211
- fn.attachPermissions(permissions);
212
- }
213
- getConstructMetadata() {
214
- return {
215
- type: "Api",
216
- data: {
217
- graphql: false,
218
- url: this.cdk.httpApi.url,
219
- httpApiId: this.cdk.httpApi.apiId,
220
- customDomainUrl: this._customDomainUrl,
221
- routes: Object.entries(this.routesData).map(([key, data]) => {
222
- if (data.type === "function")
223
- return {
224
- type: "function",
225
- route: key,
226
- fn: getFunctionRef(data.function),
227
- };
228
- if (data.type === "graphql")
229
- return {
230
- type: "graphql",
231
- route: key,
232
- fn: getFunctionRef(data.function),
233
- schema: data.schema,
234
- internalPackages: data.internalPackages,
235
- output: data.output,
236
- commands: data.commands,
237
- };
238
- return { type: data.type, route: key };
239
- }),
240
- },
241
- };
242
- }
243
- /** @internal */
244
- getFunctionBinding() {
245
- return {
246
- clientPackage: "api",
247
- variables: {
248
- url: {
249
- type: "plain",
250
- value: this.customDomainUrl || this.url,
251
- },
252
- },
253
- permissions: {},
254
- };
255
- }
256
- createHttpApi() {
257
- const { cdk, cors, defaults, accessLog, customDomain } = this.props;
258
- const id = this.node.id;
259
- const app = this.node.root;
260
- if (isCDKConstruct(cdk?.httpApi)) {
261
- if (cors !== undefined) {
262
- throw new Error(`Cannot configure the "cors" when "cdk.httpApi" is a construct`);
263
- }
264
- if (accessLog !== undefined) {
265
- throw new Error(`Cannot configure the "accessLog" when "cdk.httpApi" is a construct`);
266
- }
267
- if (customDomain !== undefined) {
268
- throw new Error(`Cannot configure the "customDomain" when "cdk.httpApi" is a construct`);
269
- }
270
- if (cdk?.httpStages !== undefined) {
271
- throw new Error(`Cannot configure the "stages" when "cdk.httpApi" is a construct`);
272
- }
273
- this.cdk.httpApi = cdk?.httpApi;
274
- }
275
- else {
276
- const httpApiProps = (cdk?.httpApi || {});
277
- // Validate input
278
- if (httpApiProps.corsPreflight !== undefined) {
279
- throw new Error(`Cannot configure the "httpApi.corsPreflight" in the Api`);
280
- }
281
- if (httpApiProps.defaultDomainMapping !== undefined) {
282
- throw new Error(`Cannot configure the "httpApi.defaultDomainMapping" in the Api`);
283
- }
284
- // Handle Custom Domain
285
- const customDomainData = apigV2Domain.buildCustomDomainData(this, customDomain);
286
- let defaultDomainMapping;
287
- if (customDomainData) {
288
- if (customDomainData.isApigDomainCreated) {
289
- this.cdk.domainName = customDomainData.apigDomain;
290
- }
291
- if (customDomainData.isCertificatedCreated) {
292
- this.cdk.certificate = customDomainData.certificate;
293
- }
294
- defaultDomainMapping = {
295
- domainName: customDomainData.apigDomain,
296
- mappingKey: customDomainData.mappingKey,
297
- };
298
- this._customDomainUrl = `https://${customDomainData.url}`;
299
- }
300
- this.cdk.httpApi = new HttpApi(this, "Api", {
301
- apiName: app.logicalPrefixedName(id),
302
- corsPreflight: apigV2Cors.buildCorsConfig(cors),
303
- defaultDomainMapping,
304
- ...httpApiProps,
305
- });
306
- const httpStage = this.cdk.httpApi.defaultStage;
307
- // Configure throttling
308
- if (defaults?.throttle?.burst && defaults?.throttle?.rate) {
309
- const cfnStage = httpStage.node.defaultChild;
310
- cfnStage.defaultRouteSettings = {
311
- ...(cfnStage.routeSettings || {}),
312
- throttlingBurstLimit: defaults.throttle.burst,
313
- throttlingRateLimit: defaults.throttle.rate,
314
- };
315
- }
316
- // Configure access log
317
- for (const def of cdk?.httpStages || []) {
318
- const stage = new HttpStage(this, "Stage" + def.stageName, {
319
- ...def,
320
- httpApi: this.cdk.httpApi,
321
- });
322
- apigV2AccessLog.buildAccessLogData(this, accessLog, stage, false);
323
- }
324
- if (this.cdk.httpApi.defaultStage)
325
- this.cdk.accessLogGroup = apigV2AccessLog.buildAccessLogData(this, accessLog, this.cdk.httpApi.defaultStage, true);
326
- }
327
- }
328
- addAuthorizers(authorizers) {
329
- Object.entries(authorizers).forEach(([key, value]) => {
330
- if (key === "none") {
331
- throw new Error(`Cannot name an authorizer "none"`);
332
- }
333
- else if (key === "iam") {
334
- throw new Error(`Cannot name an authorizer "iam"`);
335
- }
336
- else if (value.type === "user_pool") {
337
- if (value.cdk?.authorizer) {
338
- this.authorizersData[key] = value.cdk.authorizer;
339
- }
340
- else {
341
- if (!value.userPool) {
342
- throw new Error(`Missing "userPool" for "${key}" authorizer`);
343
- }
344
- const userPool = UserPool.fromUserPoolId(this, `Api-${this.node.id}-Authorizer-${key}-UserPool`, value.userPool.id);
345
- const userPoolClients = value.userPool.clientIds &&
346
- value.userPool.clientIds.map((clientId, i) => UserPoolClient.fromUserPoolClientId(this, `Api-${this.node.id}-Authorizer-${key}-UserPoolClient-${i}`, clientId));
347
- this.authorizersData[key] = new HttpUserPoolAuthorizer(key, userPool, {
348
- authorizerName: value.name,
349
- identitySource: value.identitySource,
350
- userPoolClients,
351
- userPoolRegion: value.userPool.region,
352
- });
353
- }
354
- }
355
- else if (value.type === "jwt") {
356
- if (value.cdk?.authorizer) {
357
- this.authorizersData[key] = value.cdk.authorizer;
358
- }
359
- else {
360
- if (!value.jwt) {
361
- throw new Error(`Missing "jwt" for "${key}" authorizer`);
362
- }
363
- this.authorizersData[key] = new HttpJwtAuthorizer(key, value.jwt.issuer, {
364
- authorizerName: value.name,
365
- identitySource: value.identitySource,
366
- jwtAudience: value.jwt.audience,
367
- });
368
- }
369
- }
370
- else if (value.type === "lambda") {
371
- if (value.cdk?.authorizer) {
372
- this.authorizersData[key] = value.cdk.authorizer;
373
- }
374
- else {
375
- if (!value.function) {
376
- throw new Error(`Missing "function" for "${key}" authorizer`);
377
- }
378
- this.authorizersData[key] = new HttpLambdaAuthorizer(key, value.function, {
379
- authorizerName: value.name,
380
- identitySource: value.identitySource,
381
- responseTypes: value.responseTypes &&
382
- value.responseTypes.map((type) => HttpLambdaResponseType[type.toUpperCase()]),
383
- resultsCacheTtl: value.resultsCacheTtl
384
- ? toCdkDuration(value.resultsCacheTtl)
385
- : toCdkDuration("0 seconds"),
386
- });
387
- }
388
- }
389
- });
390
- }
391
- addRoute(scope, routeKey, routeValue) {
392
- ///////////////////
393
- // Normalize routeKey
394
- ///////////////////
395
- routeKey = this.normalizeRouteKey(routeKey);
396
- if (this.routesData[routeKey]) {
397
- throw new Error(`A route already exists for "${routeKey}"`);
398
- }
399
- ///////////////////
400
- // Get path and method
401
- ///////////////////
402
- let postfixName;
403
- let httpRouteKey;
404
- let method;
405
- let path;
406
- if (routeKey === "$default") {
407
- postfixName = "default";
408
- httpRouteKey = HttpRouteKey.DEFAULT;
409
- method = "ANY";
410
- path = routeKey;
411
- }
412
- else {
413
- const routeKeyParts = routeKey.split(" ");
414
- if (routeKeyParts.length !== 2) {
415
- throw new Error(`Invalid route ${routeKey}`);
416
- }
417
- method = routeKeyParts[0].toUpperCase();
418
- if (!HttpMethod[method]) {
419
- throw new Error(`Invalid method defined for "${routeKey}"`);
420
- }
421
- path = routeKeyParts[1];
422
- if (path.length === 0) {
423
- throw new Error(`Invalid path defined for "${routeKey}"`);
424
- }
425
- postfixName = `${method}_${path}`;
426
- httpRouteKey = HttpRouteKey.with(path, HttpMethod[method]);
427
- }
428
- ///////////////////
429
- // Create route
430
- ///////////////////
431
- const [routeProps, integration] = (() => {
432
- if (Fn.isInlineDefinition(routeValue)) {
433
- const routeProps = {
434
- function: routeValue,
435
- };
436
- return [
437
- routeProps,
438
- this.createFunctionIntegration(scope, routeKey, routeProps, postfixName),
439
- ];
440
- }
441
- if (routeValue.type === "aws") {
442
- return [
443
- routeValue,
444
- this.createAwsProxyIntegration(scope, routeKey, routeValue, postfixName),
445
- ];
446
- }
447
- if (routeValue.type === "alb") {
448
- return [
449
- routeValue,
450
- this.createAlbIntegration(scope, routeKey, routeValue, postfixName),
451
- ];
452
- }
453
- if (routeValue.type === "nlb") {
454
- return [
455
- routeValue,
456
- this.createNlbIntegration(scope, routeKey, routeValue, postfixName),
457
- ];
458
- }
459
- if (routeValue.type === "url") {
460
- return [
461
- routeValue,
462
- this.createHttpIntegration(scope, routeKey, routeValue, postfixName),
463
- ];
464
- }
465
- if (routeValue.type === "graphql") {
466
- return [
467
- routeValue,
468
- this.createGraphQLIntegration(scope, routeKey, routeValue, postfixName),
469
- ];
470
- }
471
- if (routeValue.cdk?.function) {
472
- return [
473
- routeValue,
474
- this.createCdkFunctionIntegration(scope, routeKey, routeValue, postfixName),
475
- ];
476
- }
477
- if ("function" in routeValue) {
478
- return [
479
- routeValue,
480
- this.createFunctionIntegration(scope, routeKey, routeValue, postfixName),
481
- ];
482
- }
483
- if ("handler" in routeValue)
484
- throw new Error(`Function definition must be nested under the "function" key in the route props for "${routeKey}". ie. { function: { handler: "myfunc.handler" } }`);
485
- throw new Error(`Invalid route type "${routeValue.type}" for "${routeKey}".`);
486
- })();
487
- const { authorizationType, authorizer, authorizationScopes } = this.buildRouteAuth(routeProps);
488
- const route = new HttpRoute(scope, `Route_${postfixName}`, {
489
- httpApi: this.cdk.httpApi,
490
- routeKey: httpRouteKey,
491
- integration,
492
- authorizer,
493
- authorizationScopes,
494
- });
495
- ////////////////////
496
- // Configure route authorization type
497
- ////////////////////
498
- // Note: we need to explicitly set `cfnRoute.authorizationType` to `NONE`
499
- // because if it were set to `AWS_IAM`, and then it is removed from
500
- // the CloudFormation template (ie. set to undefined), CloudFormation
501
- // doesn't updates the route. The route's authorizationType would still
502
- // be `AWS_IAM`.
503
- const cfnRoute = route.node.defaultChild;
504
- if (authorizationType === "iam") {
505
- cfnRoute.authorizationType = "AWS_IAM";
506
- }
507
- else if (authorizationType === "none") {
508
- cfnRoute.authorizationType = "NONE";
509
- }
510
- }
511
- createAwsProxyIntegration(scope, routeKey, routeProps, postfixName) {
512
- // Create IAM role for API Gateway to call the AWS services
513
- const [service, serviceApi] = routeProps.cdk.integration.subtype.split("-");
514
- const servicePrefix = {
515
- EventBridge: "events",
516
- SQS: "sqs",
517
- AppConfig: "appconfig",
518
- Kinesis: "kinesis",
519
- StepFunctions: "states",
520
- }[service];
521
- const role = new Role(scope, `IntegrationRole_${postfixName}`, {
522
- assumedBy: new ServicePrincipal("apigateway.amazonaws.com"),
523
- inlinePolicies: {
524
- Policy: new PolicyDocument({
525
- statements: [
526
- new PolicyStatement({
527
- actions: [`${servicePrefix}:${serviceApi}`],
528
- resources: ["*"],
529
- }),
530
- ],
531
- }),
532
- },
533
- });
534
- // Create integration
535
- const integration = new HttpAwsIntegration(`Integration_${postfixName}`, {
536
- ...routeProps.cdk.integration,
537
- credentials: IntegrationCredentials.fromRole(role),
538
- });
539
- // Store route
540
- this.routesData[routeKey] = {
541
- type: "aws",
542
- };
543
- return integration;
544
- }
545
- createHttpIntegration(_scope, routeKey, routeProps, postfixName) {
546
- ///////////////////
547
- // Create integration
548
- ///////////////////
549
- const integration = new HttpUrlIntegration(`Integration_${postfixName}`, routeProps.url, routeProps.cdk?.integration);
550
- // Store route
551
- this.routesData[routeKey] = {
552
- type: "url",
553
- url: routeProps.url,
554
- };
555
- return integration;
556
- }
557
- createAlbIntegration(_scope, routeKey, routeProps, postfixName) {
558
- ///////////////////
559
- // Create integration
560
- ///////////////////
561
- const integration = new HttpAlbIntegration(`Integration_${postfixName}`, routeProps.cdk?.albListener, routeProps.cdk?.integration);
562
- // Store route
563
- this.routesData[routeKey] = {
564
- type: "alb",
565
- alb: routeProps.cdk?.albListener,
566
- };
567
- return integration;
568
- }
569
- createNlbIntegration(_scope, routeKey, routeProps, postfixName) {
570
- ///////////////////
571
- // Create integration
572
- ///////////////////
573
- const integration = new HttpNlbIntegration(`Integration_${postfixName}`, routeProps.cdk?.nlbListener, routeProps.cdk?.integration);
574
- // Store route
575
- this.routesData[routeKey] = {
576
- type: "nlb",
577
- nlb: routeProps.cdk?.nlbListener,
578
- };
579
- return integration;
580
- }
581
- createGraphQLIntegration(scope, routeKey, routeProps, postfixName) {
582
- const result = this.createFunctionIntegration(scope, routeKey, {
583
- ...routeProps,
584
- type: "function",
585
- payloadFormatVersion: "2.0",
586
- }, postfixName);
587
- const data = this.routesData[routeKey];
588
- if (data.type === "function") {
589
- data.function.addEnvironment("GRAPHQL_ENDPOINT", routeKey.split(" ")[1]);
590
- this.routesData[routeKey] = {
591
- ...data,
592
- type: "graphql",
593
- output: routeProps.pothos?.output,
594
- schema: routeProps.pothos?.schema,
595
- commands: routeProps.pothos?.commands,
596
- internalPackages: routeProps.pothos?.internalPackages,
597
- };
598
- }
599
- return result;
600
- }
601
- createCdkFunctionIntegration(_scope, routeKey, routeProps, postfixName) {
602
- ///////////////////
603
- // Get payload format
604
- ///////////////////
605
- const payloadFormatVersion = routeProps.payloadFormatVersion ||
606
- this.props.defaults?.payloadFormatVersion ||
607
- "2.0";
608
- if (!PayloadFormatVersions.includes(payloadFormatVersion)) {
609
- throw new Error(`PayloadFormatVersion: sst.Api does not currently support ${payloadFormatVersion} payload format version. Only "V1" and "V2" are currently supported.`);
610
- }
611
- const integrationPayloadFormatVersion = payloadFormatVersion === "1.0"
612
- ? PayloadFormatVersion.VERSION_1_0
613
- : PayloadFormatVersion.VERSION_2_0;
614
- ///////////////////
615
- // Create Function
616
- ///////////////////
617
- const lambda = routeProps.cdk?.function;
618
- ///////////////////
619
- // Create integration
620
- ///////////////////
621
- const integration = new HttpLambdaIntegration(`Integration_${postfixName}`, lambda, {
622
- payloadFormatVersion: integrationPayloadFormatVersion,
623
- });
624
- // Store route
625
- this.routesData[routeKey] = {
626
- type: "lambda_function",
627
- function: lambda,
628
- };
629
- return integration;
630
- }
631
- createFunctionIntegration(scope, routeKey, routeProps, postfixName) {
632
- ///////////////////
633
- // Get payload format
634
- ///////////////////
635
- const payloadFormatVersion = routeProps.payloadFormatVersion ||
636
- this.props.defaults?.payloadFormatVersion ||
637
- "2.0";
638
- if (!PayloadFormatVersions.includes(payloadFormatVersion)) {
639
- throw new Error(`PayloadFormatVersion: sst.Api does not currently support ${payloadFormatVersion} payload format version. Only "V1" and "V2" are currently supported.`);
640
- }
641
- const integrationPayloadFormatVersion = payloadFormatVersion === "1.0"
642
- ? PayloadFormatVersion.VERSION_1_0
643
- : PayloadFormatVersion.VERSION_2_0;
644
- ///////////////////
645
- // Create Function
646
- ///////////////////
647
- const lambda = Fn.fromDefinition(scope, `Lambda_${postfixName}`, routeProps.function, this.props.defaults?.function, `The "defaults.function" cannot be applied if an instance of a Function construct is passed in. Make sure to define all the routes using FunctionProps, so the Api construct can apply the "defaults.function" to them.`);
648
- // Add an environment variable to determine if the function is an Api route.
649
- // If it is, when "sst start" is not connected, we want to return an 500
650
- // status code and a descriptive error message.
651
- const root = scope.node.root;
652
- if (root.local) {
653
- lambda.addEnvironment("SST_DEBUG_IS_API_ROUTE", "1", {
654
- removeInEdge: true,
655
- });
656
- }
657
- ///////////////////
658
- // Create integration
659
- ///////////////////
660
- const integration = new HttpLambdaIntegration(`Integration_${postfixName}`, lambda, {
661
- payloadFormatVersion: integrationPayloadFormatVersion,
662
- });
663
- // Store route
664
- this.routesData[routeKey] = {
665
- type: "function",
666
- function: lambda,
667
- };
668
- // Attached existing permissions
669
- this.permissionsAttachedForAllRoutes.forEach((permissions) => lambda.attachPermissions(permissions));
670
- lambda.bind(this.bindingForAllRoutes);
671
- return integration;
672
- }
673
- buildRouteAuth(routeProps) {
674
- const authorizerKey = routeProps?.authorizer || this.props.defaults?.authorizer || "none";
675
- if (authorizerKey === "none") {
676
- return {
677
- authorizationType: "none",
678
- authorizer: new HttpNoneAuthorizer(),
679
- };
680
- }
681
- else if (authorizerKey === "iam") {
682
- return {
683
- authorizationType: "iam",
684
- authorizer: new HttpIamAuthorizer(),
685
- };
686
- }
687
- if (!this.props.authorizers ||
688
- !this.props.authorizers[authorizerKey]) {
689
- throw new Error(`Cannot find authorizer "${authorizerKey.toString()}"`);
690
- }
691
- const authorizer = this.authorizersData[authorizerKey];
692
- const authorizationType = this.props.authorizers[authorizerKey].type;
693
- const authorizationScopes = authorizationType === "jwt" || authorizationType === "user_pool"
694
- ? routeProps?.authorizationScopes ||
695
- this.props.defaults?.authorizationScopes
696
- : undefined;
697
- return { authorizationType, authorizer, authorizationScopes };
698
- }
699
- normalizeRouteKey(routeKey) {
700
- return routeKey.split(/\s+/).join(" ");
701
- }
702
- /**
703
- * Binds the given list of resources to a specific route.
704
- *
705
- * @example
706
- * ```js
707
- * const api = new Api(stack, "Api");
708
- *
709
- * api.setCors({
710
- * allowMethods: ["GET"],
711
- * });
712
- * ```
713
- *
714
- */
715
- setCors(cors) {
716
- const { cdk } = this.props;
717
- if (isCDKConstruct(cdk?.httpApi)) {
718
- // Cannot set CORS if cdk.httpApi is a construct.
719
- if (cors !== undefined) {
720
- throw new Error(`Cannot configure the "cors" when "cdk.httpApi" is a construct`);
721
- }
722
- }
723
- else {
724
- // Cannot set CORS via cdk.httpApi. Always use Api.cors.
725
- const httpApiProps = (cdk?.httpApi || {});
726
- if (httpApiProps.corsPreflight !== undefined) {
727
- throw new Error(`Cannot configure the "httpApi.corsPreflight" in the Api`);
728
- }
729
- const corsConfig = apigV2Cors.buildCorsConfig(cors);
730
- if (corsConfig) {
731
- const cfnApi = this.cdk.httpApi.node.defaultChild;
732
- cfnApi.corsConfiguration = {
733
- allowCredentials: corsConfig?.allowCredentials,
734
- allowHeaders: corsConfig?.allowHeaders,
735
- allowMethods: corsConfig?.allowMethods,
736
- allowOrigins: corsConfig?.allowOrigins,
737
- exposeHeaders: corsConfig?.exposeHeaders,
738
- maxAge: corsConfig?.maxAge?.toSeconds(),
739
- };
740
- }
741
- }
742
- }
743
- }