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
@@ -1,767 +0,0 @@
1
- import { Construct } from "constructs";
2
- import * as route53 from "aws-cdk-lib/aws-route53";
3
- import * as route53Targets from "aws-cdk-lib/aws-route53-targets";
4
- import * as acm from "aws-cdk-lib/aws-certificatemanager";
5
- import * as cognito from "aws-cdk-lib/aws-cognito";
6
- import * as apig from "aws-cdk-lib/aws-apigateway";
7
- import * as apigV1AccessLog from "./util/apiGatewayV1AccessLog.js";
8
- import { Stack } from "./Stack.js";
9
- import { toCdkDuration } from "./util/duration.js";
10
- import { getFunctionRef, isCDKConstruct } from "./Construct.js";
11
- import { DnsValidatedCertificate } from "./cdk/dns-validated-certificate.js";
12
- import { Function as Fn, } from "./Function.js";
13
- import { Duration as CDKDuration, Token } from "aws-cdk-lib/core";
14
- const allowedMethods = [
15
- "ANY",
16
- "GET",
17
- "PUT",
18
- "POST",
19
- "HEAD",
20
- "PATCH",
21
- "DELETE",
22
- "OPTIONS",
23
- ];
24
- /////////////////////
25
- // Construct
26
- /////////////////////
27
- /**
28
- *
29
- * The `ApiGatewayV1Api` construct is a higher level CDK construct that makes it easy to create an API Gateway REST API.
30
- *
31
- * @example
32
- *
33
- * ```js
34
- * import { ApiGatewayV1Api } from "sst/constructs";
35
- *
36
- * new ApiGatewayV1Api(stack, "Api", {
37
- * routes: {
38
- * "GET /notes" : "src/list.main",
39
- * "POST /notes" : "src/create.main",
40
- * "GET /notes/{id}": "src/get.main",
41
- * "PUT /notes/{id}": "src/update.main",
42
- * "DELETE /notes/{id}": "src/delete.main",
43
- * },
44
- * });
45
- * ```
46
- */
47
- export class ApiGatewayV1Api extends Construct {
48
- id;
49
- cdk;
50
- _deployment;
51
- _customDomainUrl;
52
- importedResources = {};
53
- props;
54
- functions = {};
55
- authorizersData = {};
56
- bindingForAllRoutes = [];
57
- permissionsAttachedForAllRoutes = [];
58
- constructor(scope, id, props) {
59
- super(scope, props?.cdk?.id || id);
60
- this.id = id;
61
- this.props = props || {};
62
- this.cdk = {};
63
- this.createRestApi();
64
- this.addAuthorizers(this.props.authorizers || {});
65
- this.addRoutes(this, this.props.routes || {});
66
- }
67
- /**
68
- * The AWS generated URL of the Api.
69
- */
70
- get url() {
71
- const app = this.node.root;
72
- return (this.cdk.restApi.url ??
73
- `https://${this.cdk.restApi.restApiId}.execute-api.${app.region}.amazonaws.com/${app.stage}/`);
74
- }
75
- /**
76
- * If custom domain is enabled, this is the custom domain URL of the Api.
77
- *
78
- * :::note
79
- * 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/`.
80
- * :::
81
- */
82
- get customDomainUrl() {
83
- return this._customDomainUrl;
84
- }
85
- /**
86
- * The routes for the Api
87
- */
88
- get routes() {
89
- return Object.keys(this.functions);
90
- }
91
- /**
92
- * The ARN of the internally created API Gateway REST API
93
- */
94
- get restApiArn() {
95
- const stack = Stack.of(this);
96
- return `arn:${stack.partition}:apigateway:${stack.region}::/restapis/${this.cdk.restApi.restApiId}`;
97
- }
98
- /**
99
- * The id of the internally created API Gateway REST API
100
- */
101
- get restApiId() {
102
- return this.cdk.restApi.restApiId;
103
- }
104
- /**
105
- * Adds routes to the Api after it has been created.
106
- *
107
- * @example
108
- * ```js
109
- * api.addRoutes(stack, {
110
- * "GET /notes/{id}": "src/get.main",
111
- * "PUT /notes/{id}": "src/update.main",
112
- * "DELETE /notes/{id}": "src/delete.main",
113
- * });
114
- * ```
115
- */
116
- addRoutes(scope, routes) {
117
- Object.keys(routes).forEach((routeKey) => this.addRoute(scope, routeKey, routes[routeKey]));
118
- }
119
- /**
120
- * 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`.
121
- *
122
- * @example
123
- * ```js
124
- * const api = new ApiGatewayV1Api(stack, "Api", {
125
- * routes: {
126
- * "GET /notes": "src/list.main",
127
- * },
128
- * });
129
- *
130
- * const listFunction = api.getFunction("GET /notes");
131
- * ```
132
- */
133
- getFunction(routeKey) {
134
- const fn = this.functions[this.normalizeRouteKey(routeKey)];
135
- if (fn instanceof Fn) {
136
- return fn;
137
- }
138
- }
139
- /**
140
- * Binds the given list of resources to all the routes.
141
- *
142
- * @example
143
- *
144
- * ```js
145
- * api.bind([STRIPE_KEY, bucket]);
146
- * ```
147
- */
148
- bind(constructs) {
149
- Object.values(this.functions).forEach((fn) => {
150
- if (fn instanceof Fn) {
151
- fn.bind(constructs);
152
- }
153
- });
154
- this.bindingForAllRoutes.push(...constructs);
155
- }
156
- /**
157
- * Binds the given list of resources to a specific route.
158
- *
159
- * @example
160
- * ```js
161
- * const api = new Api(stack, "Api", {
162
- * routes: {
163
- * "GET /notes": "src/list.main",
164
- * },
165
- * });
166
- *
167
- * api.bindToRoute("GET /notes", [STRIPE_KEY, bucket]);
168
- * ```
169
- *
170
- */
171
- bindToRoute(routeKey, constructs) {
172
- const fn = this.getFunction(routeKey);
173
- if (!fn) {
174
- throw new Error(`Failed to bind resources. Route "${routeKey}" does not exist.`);
175
- }
176
- fn.bind(constructs);
177
- }
178
- /**
179
- * Attaches the given list of permissions to all the routes. This allows the functions to access other AWS resources.
180
- *
181
- * @example
182
- *
183
- * ```js
184
- * api.attachPermissions(["s3"]);
185
- * ```
186
- */
187
- attachPermissions(permissions) {
188
- Object.values(this.functions).forEach((fn) => {
189
- if (fn instanceof Fn) {
190
- fn.attachPermissions(permissions);
191
- }
192
- });
193
- this.permissionsAttachedForAllRoutes.push(permissions);
194
- }
195
- /**
196
- * Attaches the given list of permissions to a specific route. This allows that function to access other AWS resources.
197
- *
198
- * @example
199
- * ```js
200
- * const api = new ApiGatewayV1Api(stack, "Api", {
201
- * routes: {
202
- * "GET /notes": "src/list.main",
203
- * },
204
- * });
205
- *
206
- * api.attachPermissionsToRoute("GET /notes", ["s3"]);
207
- * ```
208
- */
209
- attachPermissionsToRoute(routeKey, permissions) {
210
- const fn = this.getFunction(routeKey);
211
- if (!fn) {
212
- throw new Error(`Failed to attach permissions. Route "${routeKey}" does not exist.`);
213
- }
214
- fn.attachPermissions(permissions);
215
- }
216
- getConstructMetadata() {
217
- return {
218
- type: "ApiGatewayV1Api",
219
- data: {
220
- customDomainUrl: this._customDomainUrl,
221
- url: this.cdk.restApi.url,
222
- restApiId: this.cdk.restApi.restApiId,
223
- routes: Object.entries(this.functions).map(([key, data]) => {
224
- return {
225
- type: "function",
226
- route: key,
227
- fn: getFunctionRef(data),
228
- };
229
- }),
230
- },
231
- };
232
- }
233
- /** @internal */
234
- getFunctionBinding() {
235
- return {
236
- clientPackage: "api",
237
- variables: {
238
- url: {
239
- type: "plain",
240
- value: this.customDomainUrl || this.url,
241
- },
242
- },
243
- permissions: {},
244
- };
245
- }
246
- createRestApi() {
247
- const { cdk, cors, accessLog, customDomain } = this.props;
248
- const id = this.node.id;
249
- const app = this.node.root;
250
- if (isCDKConstruct(cdk?.restApi)) {
251
- if (cors !== undefined) {
252
- throw new Error(`Cannot configure the "cors" when the "restApi" is imported`);
253
- }
254
- if (accessLog !== undefined) {
255
- throw new Error(`Cannot configure the "accessLog" when the "restApi" is imported`);
256
- }
257
- if (customDomain !== undefined) {
258
- throw new Error(`Cannot configure the "customDomain" when the "restApi" is imported`);
259
- }
260
- this.cdk.restApi = cdk?.restApi;
261
- // Create an API Gateway deployment resource to trigger a deployment
262
- this._deployment = new apig.Deployment(this, "Deployment", {
263
- api: this.cdk.restApi,
264
- });
265
- const cfnDeployment = this._deployment.node
266
- .defaultChild;
267
- cfnDeployment.stageName = app.stage;
268
- if (cdk?.importedPaths) {
269
- this.importResources(cdk?.importedPaths);
270
- }
271
- }
272
- else {
273
- const restApiProps = (cdk?.restApi || {});
274
- // Validate input
275
- if (cdk?.importedPaths !== undefined) {
276
- throw new Error(`Cannot import route paths when creating a new API.`);
277
- }
278
- if (customDomain !== undefined && restApiProps.domainName !== undefined) {
279
- throw new Error(`Use either the "customDomain" or the "restApi.domainName" to configure the Api domain. Do not use both.`);
280
- }
281
- if (cors !== undefined &&
282
- restApiProps.defaultCorsPreflightOptions !== undefined) {
283
- throw new Error(`Use either the "cors" or the "restApi.defaultCorsPreflightOptions" to configure the Api's CORS config. Do not use both.`);
284
- }
285
- if (accessLog !== undefined &&
286
- restApiProps.deployOptions?.accessLogDestination !== undefined) {
287
- throw new Error(`Use either the "accessLog" or the "restApi.deployOptions.accessLogDestination" to configure the Api's access log. Do not use both.`);
288
- }
289
- if (accessLog !== undefined &&
290
- restApiProps.deployOptions?.accessLogFormat !== undefined) {
291
- throw new Error(`Use either the "accessLog" or the "restApi.deployOptions.accessLogFormat" to configure the Api's access log. Do not use both.`);
292
- }
293
- const stageName = restApiProps.deployOptions?.stageName || this.node.root.stage;
294
- const accessLogData = apigV1AccessLog.buildAccessLogData(this, accessLog);
295
- this.cdk.accessLogGroup = accessLogData?.logGroup;
296
- this.cdk.restApi = new apig.RestApi(this, "Api", {
297
- restApiName: app.logicalPrefixedName(id),
298
- ...restApiProps,
299
- domainName: restApiProps.domainName,
300
- defaultCorsPreflightOptions: restApiProps.defaultCorsPreflightOptions ||
301
- this.buildCorsConfig(cors),
302
- deployOptions: {
303
- ...(restApiProps.deployOptions || {}),
304
- accessLogDestination: restApiProps.deployOptions?.accessLogDestination ||
305
- accessLogData?.destination,
306
- accessLogFormat: restApiProps.deployOptions?.accessLogFormat ||
307
- accessLogData?.format,
308
- // default to the name of the sage
309
- stageName: stageName,
310
- // default to true
311
- tracingEnabled: restApiProps.deployOptions?.tracingEnabled === undefined
312
- ? true
313
- : restApiProps.deployOptions?.tracingEnabled,
314
- },
315
- });
316
- this.createCustomDomain(customDomain);
317
- this.createGatewayResponseForCors(cors);
318
- }
319
- }
320
- buildCorsConfig(cors) {
321
- // Case: cors is false
322
- if (cors === false) {
323
- return undefined;
324
- }
325
- // Case: cors is true or undefined
326
- return {
327
- allowHeaders: ["*"],
328
- allowOrigins: apig.Cors.ALL_ORIGINS,
329
- allowMethods: apig.Cors.ALL_METHODS,
330
- };
331
- }
332
- createGatewayResponseForCors(cors) {
333
- if (!cors) {
334
- return;
335
- }
336
- this.cdk.restApi.addGatewayResponse("GatewayResponseDefault4XX", {
337
- type: apig.ResponseType.DEFAULT_4XX,
338
- responseHeaders: {
339
- "Access-Control-Allow-Origin": "'*'",
340
- "Access-Control-Allow-Headers": "'*'",
341
- },
342
- });
343
- this.cdk.restApi.addGatewayResponse("GatewayResponseDefault5XX", {
344
- type: apig.ResponseType.DEFAULT_5XX,
345
- responseHeaders: {
346
- "Access-Control-Allow-Origin": "'*'",
347
- "Access-Control-Allow-Headers": "'*'",
348
- },
349
- });
350
- }
351
- createCustomDomain(customDomain) {
352
- // Case: customDomain is not set
353
- if (customDomain === undefined) {
354
- return;
355
- }
356
- // To be implemented: to allow more flexible use cases, SST should support 3 more use cases:
357
- // 1. Allow user passing in `hostedZone` object. The use case is when there are multiple
358
- // HostedZones with the same domain, but one is public, and one is private.
359
- // 2. Allow user passing in `certificate` object. The use case is for user to create wildcard
360
- // certificate or using an imported certificate.
361
- // 3. Allow user passing in `apigDomainName` object. The use case is a user creates multiple API
362
- // endpoints, and is mapping them under the same custom domain. `sst.Api` needs to expose the
363
- // `apigDomainName` construct created in the first Api, and lets user pass it in when creating
364
- // the second Api.
365
- let domainName, hostedZone, hostedZoneDomain, certificate, apigDomainName, basePath, endpointType, mtls, securityPolicy;
366
- /////////////////////
367
- // Parse input
368
- /////////////////////
369
- // Case: customDomain is a string
370
- if (typeof customDomain === "string") {
371
- // validate: customDomain is a TOKEN string
372
- // ie. imported SSM value: ssm.StringParameter.valueForStringParameter()
373
- if (Token.isUnresolved(customDomain)) {
374
- throw new Error(`You also need to specify the "hostedZone" if the "domainName" is passed in as a reference.`);
375
- }
376
- domainName = customDomain;
377
- this.assertDomainNameIsLowerCase(domainName);
378
- hostedZoneDomain = customDomain.split(".").slice(1).join(".");
379
- }
380
- // Case: customDomain.domainName is a string
381
- else if (customDomain.domainName) {
382
- domainName = customDomain.domainName;
383
- // parse customDomain.domainName
384
- if (Token.isUnresolved(customDomain.domainName)) {
385
- // If customDomain is a TOKEN string, "hostedZone" has to be passed in. This
386
- // is because "hostedZone" cannot be parsed from a TOKEN value.
387
- if (!customDomain.hostedZone && !customDomain.cdk?.hostedZone) {
388
- throw new Error(`You also need to specify the "hostedZone" if the "domainName" is passed in as a reference.`);
389
- }
390
- domainName = customDomain.domainName;
391
- }
392
- else {
393
- domainName = customDomain.domainName;
394
- this.assertDomainNameIsLowerCase(domainName);
395
- }
396
- // parse customDomain.hostedZone
397
- if (customDomain.hostedZone && customDomain.cdk?.hostedZone) {
398
- throw new Error(`Use either the "customDomain.hostedZone" or the "customDomain.cdk.hostedZone" to configure the custom domain hosted zone. Do not use both.`);
399
- }
400
- if (customDomain.hostedZone) {
401
- hostedZoneDomain = customDomain.hostedZone;
402
- }
403
- else if (customDomain.cdk?.hostedZone) {
404
- hostedZone = customDomain.cdk?.hostedZone;
405
- }
406
- else {
407
- hostedZoneDomain = domainName.split(".").slice(1).join(".");
408
- }
409
- certificate = customDomain.cdk?.certificate;
410
- basePath = customDomain.path;
411
- endpointType = customDomain.endpointType;
412
- mtls = customDomain.mtls;
413
- securityPolicy = customDomain.securityPolicy;
414
- }
415
- // Case: customDomain.domainName is a construct
416
- else if (customDomain.cdk?.domainName) {
417
- apigDomainName = customDomain.cdk.domainName;
418
- // customDomain.domainName is imported
419
- if (apigDomainName &&
420
- (customDomain.hostedZone || customDomain.cdk?.hostedZone)) {
421
- throw new Error(`Cannot configure the "hostedZone" when the "domainName" is a construct`);
422
- }
423
- if (apigDomainName && customDomain.cdk?.certificate) {
424
- throw new Error(`Cannot configure the "certificate" when the "domainName" is a construct`);
425
- }
426
- if (apigDomainName && customDomain.endpointType) {
427
- throw new Error(`Cannot configure the "endpointType" when the "domainName" is a construct`);
428
- }
429
- if (apigDomainName && customDomain.mtls) {
430
- throw new Error(`Cannot configure the "mtls" when the "domainName" is a construct`);
431
- }
432
- if (apigDomainName && customDomain.securityPolicy) {
433
- throw new Error(`Cannot configure the "securityPolicy" when the "domainName" is a construct`);
434
- }
435
- basePath = customDomain.path;
436
- }
437
- /////////////////////
438
- // Find hosted zone
439
- /////////////////////
440
- if (!apigDomainName && !hostedZone) {
441
- // Look up hosted zone
442
- if (!hostedZone && hostedZoneDomain) {
443
- hostedZone = route53.HostedZone.fromLookup(this, "HostedZone", {
444
- domainName: hostedZoneDomain,
445
- });
446
- }
447
- }
448
- /////////////////////
449
- // Create certificate
450
- /////////////////////
451
- if (!apigDomainName && !certificate) {
452
- if (endpointType === "edge") {
453
- certificate = new DnsValidatedCertificate(this, "CrossRegionCertificate", {
454
- domainName: domainName,
455
- hostedZone: hostedZone,
456
- region: "us-east-1",
457
- });
458
- }
459
- else {
460
- certificate = new acm.Certificate(this, "Certificate", {
461
- domainName: domainName,
462
- validation: acm.CertificateValidation.fromDns(hostedZone),
463
- });
464
- }
465
- this.cdk.certificate = certificate;
466
- }
467
- /////////////////////
468
- // Create API Gateway domain name
469
- /////////////////////
470
- if (!apigDomainName && domainName) {
471
- // Create custom domain in API Gateway
472
- apigDomainName = new apig.DomainName(this, "DomainName", {
473
- domainName,
474
- certificate: certificate,
475
- endpointType: endpointType &&
476
- apig.EndpointType[endpointType.toLocaleUpperCase()],
477
- mtls: mtls && {
478
- ...mtls,
479
- bucket: mtls.bucket.cdk.bucket,
480
- },
481
- securityPolicy: securityPolicy === "TLS 1.0"
482
- ? apig.SecurityPolicy.TLS_1_0
483
- : securityPolicy === "TLS 1.2"
484
- ? apig.SecurityPolicy.TLS_1_2
485
- : undefined,
486
- });
487
- this.cdk.domainName = apigDomainName;
488
- // Create DNS record
489
- this.createARecords(hostedZone, domainName, apigDomainName);
490
- }
491
- /////////////////////
492
- // Create base mapping
493
- /////////////////////
494
- if (apigDomainName) {
495
- new apig.BasePathMapping(this, "BasePath", {
496
- domainName: apigDomainName,
497
- restApi: this.cdk.restApi,
498
- basePath,
499
- });
500
- }
501
- // Note: We only know the full custom domain if domainName is a string.
502
- // _customDomainUrl will be undefined if apigDomainName is imported.
503
- if (domainName && !Token.isUnresolved(domainName)) {
504
- this._customDomainUrl = basePath
505
- ? `https://${domainName}/${basePath}/`
506
- : `https://${domainName}`;
507
- }
508
- }
509
- createARecords(hostedZone, domainName, apigDomain) {
510
- // create DNS record
511
- const recordProps = {
512
- recordName: domainName,
513
- zone: hostedZone,
514
- target: route53.RecordTarget.fromAlias(new route53Targets.ApiGatewayDomain(apigDomain)),
515
- };
516
- const records = [
517
- new route53.ARecord(this, "AliasRecord", recordProps),
518
- new route53.AaaaRecord(this, "AliasRecordAAAA", recordProps),
519
- ];
520
- // note: If domainName is a TOKEN string ie. ${TOKEN..}, the route53.ARecord
521
- // construct will append ".${hostedZoneName}" to the end of the domain.
522
- // This is because the construct tries to check if the record name
523
- // ends with the domain name. If not, it will append the domain name.
524
- // So, we need remove this behavior.
525
- if (Token.isUnresolved(domainName)) {
526
- records.forEach((record) => {
527
- const cfnRecord = record.node.defaultChild;
528
- cfnRecord.name = domainName;
529
- });
530
- }
531
- }
532
- importResources(resources) {
533
- Object.keys(resources).forEach((path) => {
534
- const resource = apig.Resource.fromResourceAttributes(this, `Resource_${path}`, {
535
- path,
536
- resourceId: resources[path],
537
- restApi: this.cdk.restApi,
538
- });
539
- this.importedResources[path] = resource;
540
- });
541
- }
542
- getResourceForPath(path) {
543
- // Lookup exact match imported resource
544
- if (this.importedResources[path]) {
545
- return this.importedResources[path];
546
- }
547
- // Lookup parents matching imported resource first
548
- const parts = path.split("/");
549
- for (let i = parts.length; i >= 1; i--) {
550
- const partialPath = parts.slice(0, i).join("/");
551
- if (this.importedResources[partialPath]) {
552
- return this.importedResources[partialPath].resourceForPath(parts.slice(i).join("/"));
553
- }
554
- }
555
- // Not child of imported resources, create off the root
556
- return this.cdk.restApi.root.resourceForPath(path);
557
- }
558
- addAuthorizers(authorizers) {
559
- Object.entries(authorizers).forEach(([key, value]) => {
560
- if (key === "none") {
561
- throw new Error(`Cannot name an authorizer "none"`);
562
- }
563
- else if (key === "iam") {
564
- throw new Error(`Cannot name an authorizer "iam"`);
565
- }
566
- else if (value.type === "user_pools") {
567
- if (value.cdk?.authorizer) {
568
- this.authorizersData[key] = value.cdk.authorizer;
569
- }
570
- else {
571
- if (!value.userPoolIds) {
572
- throw new Error(`Missing "userPoolIds" for "${key}" authorizer`);
573
- }
574
- const userPools = value.userPoolIds.map((userPoolId) => cognito.UserPool.fromUserPoolId(this, `${key}-${userPoolId}-ImportedUserPool`, userPoolId));
575
- this.authorizersData[key] = new apig.CognitoUserPoolsAuthorizer(this, key, {
576
- cognitoUserPools: userPools,
577
- authorizerName: value.name,
578
- identitySource: value.identitySource,
579
- resultsCacheTtl: value.resultsCacheTtl
580
- ? toCdkDuration(value.resultsCacheTtl)
581
- : CDKDuration.seconds(0),
582
- });
583
- }
584
- }
585
- else if (value.type === "lambda_token") {
586
- if (value.cdk?.authorizer) {
587
- this.authorizersData[key] = value.cdk.authorizer;
588
- }
589
- else {
590
- if (!value.function) {
591
- throw new Error(`Missing "function" for "${key}" authorizer`);
592
- }
593
- this.authorizersData[key] = new apig.TokenAuthorizer(this, key, {
594
- handler: value.function,
595
- authorizerName: value.name,
596
- identitySource: value.identitySource,
597
- validationRegex: value.validationRegex,
598
- assumeRole: value.cdk?.assumeRole,
599
- resultsCacheTtl: value.resultsCacheTtl
600
- ? toCdkDuration(value.resultsCacheTtl)
601
- : CDKDuration.seconds(0),
602
- });
603
- }
604
- }
605
- else if (value.type === "lambda_request") {
606
- if (value.cdk?.authorizer) {
607
- this.authorizersData[key] = value.cdk.authorizer;
608
- }
609
- else {
610
- if (!value.function) {
611
- throw new Error(`Missing "function" for "${key}" authorizer`);
612
- }
613
- else if (!value.identitySources) {
614
- throw new Error(`Missing "identitySources" for "${key}" authorizer`);
615
- }
616
- this.authorizersData[key] = new apig.RequestAuthorizer(this, key, {
617
- handler: value.function,
618
- authorizerName: value.name,
619
- identitySources: value.identitySources,
620
- assumeRole: value.cdk?.assumeRole,
621
- resultsCacheTtl: value.resultsCacheTtl
622
- ? toCdkDuration(value.resultsCacheTtl)
623
- : CDKDuration.seconds(0),
624
- });
625
- }
626
- }
627
- });
628
- }
629
- addRoute(scope, routeKey, routeValue) {
630
- ///////////////////
631
- // Normalize routeKey
632
- ///////////////////
633
- routeKey = this.normalizeRouteKey(routeKey);
634
- if (this.functions[routeKey]) {
635
- throw new Error(`A route already exists for "${routeKey}"`);
636
- }
637
- ///////////////////
638
- // Get path and method
639
- ///////////////////
640
- const routeKeyParts = routeKey.split(" ");
641
- if (routeKeyParts.length !== 2) {
642
- throw new Error(`Invalid route ${routeKey}`);
643
- }
644
- const methodStr = routeKeyParts[0].toUpperCase();
645
- const path = routeKeyParts[1];
646
- const method = allowedMethods.find((per) => per === methodStr);
647
- if (!method) {
648
- throw new Error(`Invalid method defined for "${routeKey}"`);
649
- }
650
- if (path.length === 0) {
651
- throw new Error(`Invalid path defined for "${routeKey}"`);
652
- }
653
- const postfixName = `${methodStr}_${path}`;
654
- ///////////////////
655
- // Create Resources
656
- ///////////////////
657
- let resource;
658
- if (path.endsWith("/{proxy+}")) {
659
- const parentResource = this.getResourceForPath(path.split("/").slice(0, -1).join("/"));
660
- resource = parentResource.addProxy({ anyMethod: false });
661
- }
662
- else {
663
- resource = this.getResourceForPath(path);
664
- }
665
- ///////////////////
666
- // Create Method
667
- ///////////////////
668
- const [routeProps, lambda] = (() => {
669
- if (Fn.isInlineDefinition(routeValue)) {
670
- const routeProps = {
671
- function: routeValue,
672
- };
673
- return [
674
- routeProps,
675
- this.createFunction(scope, routeKey, routeProps, postfixName),
676
- ];
677
- }
678
- else if (routeValue.cdk?.function) {
679
- return [
680
- routeValue,
681
- this.createCdkFunction(scope, routeKey, routeValue, postfixName),
682
- ];
683
- }
684
- else {
685
- return [
686
- routeValue,
687
- this.createFunction(scope, routeKey, routeValue, postfixName),
688
- ];
689
- }
690
- })();
691
- const integration = new apig.LambdaIntegration(lambda, routeProps.cdk?.integration);
692
- const methodOptions = this.buildRouteMethodOptions(routeProps);
693
- const apigMethod = resource.addMethod(method, integration, methodOptions);
694
- ///////////////////
695
- // Handle manually created Deployment resource (ie. imported REST API)
696
- ///////////////////
697
- if (this._deployment) {
698
- this._deployment.addToLogicalId({ route: { routeKey, routeValue } });
699
- this._deployment.node.addDependency(apigMethod);
700
- }
701
- }
702
- createCdkFunction(_scope, routeKey, routeProps, _postfixName) {
703
- const lambda = routeProps.cdk?.function;
704
- this.functions[routeKey] = lambda;
705
- return lambda;
706
- }
707
- createFunction(scope, routeKey, routeProps, postfixName) {
708
- 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 ApiGatewayV1Api construct can apply the "defaults.function" to them.`);
709
- // Add an environment variable to determine if the function is an Api route.
710
- // If it is, when "sst start" is not connected, we want to return an 500
711
- // status code and a descriptive error message.
712
- const root = scope.node.root;
713
- if (root.local) {
714
- lambda.addEnvironment("SST_DEBUG_IS_API_ROUTE", "1", {
715
- removeInEdge: true,
716
- });
717
- }
718
- this.functions[routeKey] = lambda;
719
- // attached existing permissions
720
- this.permissionsAttachedForAllRoutes.forEach((permissions) => lambda.attachPermissions(permissions));
721
- lambda.bind(this.bindingForAllRoutes);
722
- return lambda;
723
- }
724
- buildRouteMethodOptions(routeProps) {
725
- const authorizerKey = routeProps.authorizer || this.props.defaults?.authorizer || "none";
726
- if (authorizerKey === "none") {
727
- return {
728
- authorizationType: apig.AuthorizationType.NONE,
729
- ...routeProps.cdk?.method,
730
- };
731
- }
732
- else if (authorizerKey === "iam") {
733
- return {
734
- authorizationType: apig.AuthorizationType.IAM,
735
- ...routeProps.cdk?.method,
736
- };
737
- }
738
- if (!this.props.authorizers ||
739
- !this.props.authorizers[authorizerKey]) {
740
- throw new Error(`Cannot find authorizer "${authorizerKey.toString()}"`);
741
- }
742
- const authorizer = this.authorizersData[authorizerKey];
743
- const authorizationType = this.props.authorizers[authorizerKey].type;
744
- if (authorizationType === "user_pools") {
745
- return {
746
- authorizationType: apig.AuthorizationType.COGNITO,
747
- authorizer,
748
- authorizationScopes: routeProps.authorizationScopes ||
749
- this.props.defaults?.authorizationScopes,
750
- ...routeProps.cdk?.method,
751
- };
752
- }
753
- return {
754
- authorizationType: apig.AuthorizationType.CUSTOM,
755
- authorizer,
756
- ...routeProps.cdk?.method,
757
- };
758
- }
759
- normalizeRouteKey(routeKey) {
760
- return routeKey.split(/\s+/).join(" ");
761
- }
762
- assertDomainNameIsLowerCase(domainName) {
763
- if (domainName !== domainName.toLowerCase()) {
764
- throw new Error(`The domain name needs to be in lowercase`);
765
- }
766
- }
767
- }