sst 1.16.0 → 2.0.0-rc.0

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 (518) hide show
  1. package/LICENSE +21 -0
  2. package/{dist/app.d.ts → app.d.ts} +8 -1
  3. package/app.js +122 -0
  4. package/{dist/bootstrap.d.ts → bootstrap.d.ts} +1 -0
  5. package/bootstrap.js +79 -0
  6. package/{dist/bus.d.ts → bus.d.ts} +0 -0
  7. package/{dist/bus.js → bus.js} +0 -0
  8. package/{dist/cache.d.ts → cache.d.ts} +0 -0
  9. package/{dist/cache.js → cache.js} +0 -0
  10. package/{dist/cdk → cdk}/cloudformation-deployments.d.ts +1 -1
  11. package/{dist/cdk → cdk}/cloudformation-deployments.js +1 -0
  12. package/{dist/cdk → cdk}/deploy-stack.d.ts +0 -0
  13. package/{dist/cdk → cdk}/deploy-stack.js +13 -6
  14. package/{dist/cli → cli}/commands/bind.d.ts +3 -1
  15. package/{dist/cli → cli}/commands/bind.js +8 -4
  16. package/{dist/cli → cli}/commands/build.d.ts +2 -0
  17. package/cli/commands/build.js +12 -0
  18. package/cli/commands/console.d.ts +9 -0
  19. package/cli/commands/console.js +15 -0
  20. package/{dist/cli → cli}/commands/deploy.d.ts +7 -1
  21. package/cli/commands/deploy.js +48 -0
  22. package/cli/commands/dev.d.ts +11 -0
  23. package/cli/commands/dev.js +188 -0
  24. package/cli/commands/env.d.ts +11 -0
  25. package/cli/commands/env.js +39 -0
  26. package/cli/commands/plugins/kysely.d.ts +1 -0
  27. package/cli/commands/plugins/kysely.js +91 -0
  28. package/cli/commands/plugins/pothos.d.ts +1 -0
  29. package/cli/commands/plugins/pothos.js +52 -0
  30. package/cli/commands/plugins/warmer.d.ts +1 -0
  31. package/cli/commands/plugins/warmer.js +33 -0
  32. package/cli/commands/remove.d.ts +13 -0
  33. package/cli/commands/remove.js +39 -0
  34. package/{dist/cli → cli}/commands/secrets/get.d.ts +2 -0
  35. package/{dist/cli → cli}/commands/secrets/get.js +0 -0
  36. package/{dist/cli → cli}/commands/secrets/list.d.ts +2 -0
  37. package/{dist/cli → cli}/commands/secrets/list.js +5 -5
  38. package/{dist/cli → cli}/commands/secrets/remove.d.ts +2 -0
  39. package/{dist/cli → cli}/commands/secrets/remove.js +0 -0
  40. package/{dist/cli → cli}/commands/secrets/secrets.d.ts +0 -0
  41. package/{dist/cli → cli}/commands/secrets/secrets.js +0 -0
  42. package/{dist/cli → cli}/commands/secrets/set.d.ts +2 -0
  43. package/{dist/cli → cli}/commands/secrets/set.js +13 -11
  44. package/{dist/cli → cli}/commands/update.d.ts +2 -0
  45. package/{dist/cli → cli}/commands/update.js +17 -21
  46. package/cli/local/router.d.ts +42 -0
  47. package/cli/local/router.js +43 -0
  48. package/cli/local/server.d.ts +20 -0
  49. package/cli/local/server.js +212 -0
  50. package/cli/program.d.ts +9 -0
  51. package/{dist/cli → cli}/program.js +6 -1
  52. package/{dist/cli → cli}/spinner.d.ts +0 -0
  53. package/{dist/cli → cli}/spinner.js +0 -0
  54. package/cli/sst.d.ts +2 -0
  55. package/{dist/cli → cli}/sst.js +27 -16
  56. package/cli/telemetry/environment.d.ts +15 -0
  57. package/cli/telemetry/environment.js +27 -0
  58. package/cli/telemetry/post-payload.d.ts +1 -0
  59. package/cli/telemetry/post-payload.js +18 -0
  60. package/cli/telemetry/project-id.d.ts +2 -0
  61. package/cli/telemetry/project-id.js +47 -0
  62. package/cli/telemetry/telemetry.d.ts +4 -0
  63. package/cli/telemetry/telemetry.js +90 -0
  64. package/cli/ui/deploy.d.ts +8 -0
  65. package/{dist/cli → cli}/ui/deploy.js +39 -1
  66. package/{dist/config.d.ts → config.d.ts} +0 -0
  67. package/{dist/config.js → config.js} +16 -4
  68. package/{dist/constructs → constructs}/Api.d.ts +98 -12
  69. package/{dist/constructs → constructs}/Api.js +93 -7
  70. package/{dist/constructs → constructs}/ApiGatewayV1Api.d.ts +0 -0
  71. package/{dist/constructs → constructs}/ApiGatewayV1Api.js +10 -5
  72. package/{dist/constructs → constructs}/App.d.ts +4 -26
  73. package/{dist/constructs → constructs}/App.js +119 -99
  74. package/{dist/constructs → constructs}/AppSyncApi.d.ts +3 -3
  75. package/{dist/constructs → constructs}/AppSyncApi.js +27 -20
  76. package/constructs/AstroSite.d.ts +25 -0
  77. package/constructs/AstroSite.js +111 -0
  78. package/constructs/AstroSite.tsdoc.d.ts +2 -0
  79. package/constructs/AstroSite.tsdoc.js +2 -0
  80. package/{dist/constructs → constructs}/Auth.d.ts +1 -1
  81. package/{dist/constructs → constructs}/Auth.js +6 -4
  82. package/{dist/constructs → constructs}/BaseSite.d.ts +0 -0
  83. package/{dist/constructs → constructs}/BaseSite.js +0 -0
  84. package/{dist/constructs → constructs}/Bucket.d.ts +0 -0
  85. package/{dist/constructs → constructs}/Bucket.js +6 -3
  86. package/{dist/constructs → constructs}/Cognito.d.ts +0 -0
  87. package/{dist/constructs → constructs}/Cognito.js +4 -1
  88. package/{dist/constructs → constructs}/Config.d.ts +0 -0
  89. package/{dist/constructs → constructs}/Config.js +0 -0
  90. package/{dist/constructs → constructs}/Construct.d.ts +0 -0
  91. package/{dist/constructs → constructs}/Construct.js +0 -0
  92. package/{dist/constructs → constructs}/Cron.d.ts +0 -0
  93. package/{dist/constructs → constructs}/Cron.js +7 -0
  94. package/{dist/constructs → constructs}/DebugApp.d.ts +2 -2
  95. package/{dist/constructs → constructs}/DebugApp.js +16 -0
  96. package/{dist/constructs → constructs}/DebugStack.d.ts +0 -0
  97. package/{dist/constructs → constructs}/DebugStack.js +4 -0
  98. package/{dist/constructs → constructs}/EdgeFunction.d.ts +1 -0
  99. package/{dist/constructs → constructs}/EdgeFunction.js +27 -22
  100. package/{dist/constructs → constructs}/EventBus.d.ts +0 -0
  101. package/{dist/constructs → constructs}/EventBus.js +7 -4
  102. package/{dist/constructs → constructs}/Function.d.ts +73 -174
  103. package/{dist/constructs → constructs}/Function.js +43 -83
  104. package/{dist/constructs → constructs}/FunctionalStack.d.ts +0 -0
  105. package/{dist/constructs → constructs}/FunctionalStack.js +5 -5
  106. package/{dist/constructs → constructs}/GraphQLApi.d.ts +11 -1
  107. package/{dist/constructs → constructs}/GraphQLApi.js +3 -0
  108. package/{dist/constructs → constructs}/Job.d.ts +0 -14
  109. package/{dist/constructs → constructs}/Job.js +50 -46
  110. package/{dist/constructs → constructs}/KinesisStream.d.ts +0 -0
  111. package/{dist/constructs → constructs}/KinesisStream.js +6 -3
  112. package/{dist/constructs → constructs}/Metadata.d.ts +1 -1
  113. package/{dist/constructs → constructs}/Metadata.js +0 -0
  114. package/constructs/NextjsSite.d.ts +33 -0
  115. package/constructs/NextjsSite.js +285 -0
  116. package/{dist/constructs → constructs}/Parameter.d.ts +0 -0
  117. package/{dist/constructs → constructs}/Parameter.js +3 -0
  118. package/{dist/constructs → constructs}/Queue.d.ts +0 -0
  119. package/{dist/constructs → constructs}/Queue.js +19 -12
  120. package/{dist/constructs → constructs}/RDS.d.ts +0 -0
  121. package/{dist/constructs → constructs}/RDS.js +26 -19
  122. package/{dist/constructs → constructs}/ReactStaticSite.d.ts +0 -0
  123. package/{dist/constructs → constructs}/ReactStaticSite.js +1 -1
  124. package/constructs/RemixSite.d.ts +28 -0
  125. package/constructs/RemixSite.js +150 -0
  126. package/constructs/RemixSite.tsdoc.d.ts +2 -0
  127. package/constructs/RemixSite.tsdoc.js +2 -0
  128. package/{dist/constructs → constructs}/Script/cfn-response.d.ts +0 -0
  129. package/{dist/constructs → constructs}/Script/cfn-response.js +0 -0
  130. package/{dist/constructs → constructs}/Script/index.d.ts +0 -0
  131. package/{dist/constructs → constructs}/Script/index.js +0 -0
  132. package/{dist/constructs → constructs}/Script/outbound.d.ts +1 -1
  133. package/{dist/constructs → constructs}/Script/outbound.js +0 -0
  134. package/{dist/constructs → constructs}/Script/util.d.ts +0 -0
  135. package/{dist/constructs → constructs}/Script/util.js +0 -0
  136. package/{dist/constructs → constructs}/Script.d.ts +0 -0
  137. package/{dist/constructs → constructs}/Script.js +13 -0
  138. package/{dist/constructs → constructs}/Secret.d.ts +0 -0
  139. package/{dist/constructs → constructs}/Secret.js +2 -0
  140. package/constructs/SolidStartSite.d.ts +24 -0
  141. package/constructs/SolidStartSite.js +103 -0
  142. package/constructs/SolidStartSite.tsdoc.d.ts +2 -0
  143. package/constructs/SolidStartSite.tsdoc.js +2 -0
  144. package/{dist/constructs/RemixSite.d.ts → constructs/SsrSite.d.ts} +69 -107
  145. package/{dist/constructs/RemixSite.js → constructs/SsrSite.js} +243 -446
  146. package/{dist/constructs → constructs}/Stack.d.ts +1 -1
  147. package/{dist/constructs → constructs}/Stack.js +19 -4
  148. package/{dist/constructs → constructs}/StaticSite.d.ts +44 -17
  149. package/{dist/constructs → constructs}/StaticSite.js +121 -72
  150. package/{dist/constructs → constructs}/Table.d.ts +0 -0
  151. package/{dist/constructs → constructs}/Table.js +9 -3
  152. package/{dist/constructs → constructs}/Topic.d.ts +0 -0
  153. package/{dist/constructs → constructs}/Topic.js +6 -3
  154. package/{dist/constructs → constructs}/ViteStaticSite.d.ts +0 -0
  155. package/{dist/constructs → constructs}/ViteStaticSite.js +2 -2
  156. package/{dist/constructs → constructs}/WebSocketApi.d.ts +0 -0
  157. package/{dist/constructs → constructs}/WebSocketApi.js +9 -4
  158. package/{dist/constructs → constructs}/context.d.ts +1 -1
  159. package/{dist/constructs → constructs}/context.js +0 -0
  160. package/{dist/constructs → constructs}/deferred_task.d.ts +0 -0
  161. package/{dist/constructs → constructs}/deferred_task.js +4 -2
  162. package/{dist/constructs → constructs/deprecated}/NextjsSite.d.ts +12 -8
  163. package/{dist/constructs → constructs/deprecated}/NextjsSite.js +112 -89
  164. package/{dist/constructs/nextjs-site → constructs/deprecated}/cross-region-helper.d.ts +0 -0
  165. package/{dist/constructs/nextjs-site → constructs/deprecated}/cross-region-helper.js +3 -3
  166. package/constructs/deprecated/index.d.ts +1 -0
  167. package/constructs/deprecated/index.js +1 -0
  168. package/{dist/constructs → constructs}/index.d.ts +3 -2
  169. package/{dist/constructs → constructs}/index.js +2 -0
  170. package/{dist/constructs → constructs}/util/apiGatewayV1AccessLog.d.ts +0 -0
  171. package/{dist/constructs → constructs}/util/apiGatewayV1AccessLog.js +0 -0
  172. package/{dist/constructs → constructs}/util/apiGatewayV2AccessLog.d.ts +0 -0
  173. package/{dist/constructs → constructs}/util/apiGatewayV2AccessLog.js +4 -4
  174. package/{dist/constructs → constructs}/util/apiGatewayV2Cors.d.ts +0 -0
  175. package/{dist/constructs → constructs}/util/apiGatewayV2Cors.js +0 -0
  176. package/{dist/constructs → constructs}/util/apiGatewayV2Domain.d.ts +0 -0
  177. package/{dist/constructs → constructs}/util/apiGatewayV2Domain.js +0 -0
  178. package/{dist/constructs → constructs}/util/appSyncApiDomain.d.ts +1 -1
  179. package/{dist/constructs → constructs}/util/appSyncApiDomain.js +15 -9
  180. package/{dist/constructs → constructs}/util/builder.d.ts +0 -0
  181. package/{dist/constructs → constructs}/util/builder.js +0 -0
  182. package/{dist/constructs → constructs}/util/duration.d.ts +0 -0
  183. package/{dist/constructs → constructs}/util/duration.js +0 -0
  184. package/{dist/constructs → constructs}/util/functionBinding.d.ts +0 -0
  185. package/{dist/constructs → constructs}/util/functionBinding.js +0 -0
  186. package/{dist/constructs → constructs}/util/functionUrlCors.d.ts +0 -0
  187. package/{dist/constructs → constructs}/util/functionUrlCors.js +0 -0
  188. package/{dist/constructs → constructs}/util/permission.d.ts +0 -0
  189. package/{dist/constructs → constructs}/util/permission.js +32 -16
  190. package/{dist/constructs → constructs}/util/python/bundling.d.ts +0 -0
  191. package/{dist/constructs → constructs}/util/python/bundling.js +0 -0
  192. package/{dist/constructs → constructs}/util/size.d.ts +0 -0
  193. package/{dist/constructs → constructs}/util/size.js +0 -0
  194. package/{dist/constructs → constructs}/util/warning.d.ts +0 -0
  195. package/{dist/constructs → constructs}/util/warning.js +0 -0
  196. package/{dist/context → context}/context.d.ts +1 -1
  197. package/{dist/context → context}/context.js +3 -4
  198. package/{dist/context → context}/handler.d.ts +0 -0
  199. package/{dist/context → context}/handler.js +1 -1
  200. package/{dist/context → context}/index.d.ts +0 -0
  201. package/{dist/context → context}/index.js +0 -0
  202. package/{dist/credentials.d.ts → credentials.d.ts} +3 -1
  203. package/{dist/credentials.js → credentials.js} +11 -3
  204. package/{dist/error.d.ts → error.d.ts} +0 -0
  205. package/{dist/error.js → error.js} +0 -0
  206. package/{dist/iot.d.ts → iot.d.ts} +0 -0
  207. package/{dist/iot.js → iot.js} +3 -0
  208. package/logger.d.ts +3 -0
  209. package/{dist/logger.js → logger.js} +12 -8
  210. package/node/api/index.d.ts +42 -0
  211. package/node/api/index.js +88 -0
  212. package/node/auth/adapter/adapter.d.ts +3 -0
  213. package/node/auth/adapter/adapter.js +3 -0
  214. package/node/auth/adapter/facebook.d.ts +2 -0
  215. package/node/auth/adapter/facebook.js +26 -0
  216. package/node/auth/adapter/github.d.ts +2 -0
  217. package/node/auth/adapter/github.js +21 -0
  218. package/node/auth/adapter/google.d.ts +9 -0
  219. package/node/auth/adapter/google.js +18 -0
  220. package/node/auth/adapter/link.d.ts +8 -0
  221. package/node/auth/adapter/link.js +39 -0
  222. package/node/auth/adapter/oauth.d.ts +25 -0
  223. package/node/auth/adapter/oauth.js +52 -0
  224. package/node/auth/adapter/oidc.d.ts +17 -0
  225. package/node/auth/adapter/oidc.js +50 -0
  226. package/node/auth/adapter/twitch.d.ts +2 -0
  227. package/node/auth/adapter/twitch.js +11 -0
  228. package/node/auth/auth.d.ts +24 -0
  229. package/node/auth/auth.js +118 -0
  230. package/node/auth/index.d.ts +10 -0
  231. package/node/auth/index.js +10 -0
  232. package/node/auth/session.d.ts +76 -0
  233. package/node/auth/session.js +109 -0
  234. package/node/bucket/index.d.ts +3 -0
  235. package/node/bucket/index.js +3 -0
  236. package/node/config/index.d.ts +13 -0
  237. package/node/config/index.js +88 -0
  238. package/node/event-bus/index.d.ts +3 -0
  239. package/node/event-bus/index.js +3 -0
  240. package/node/function/index.d.ts +3 -0
  241. package/node/function/index.js +3 -0
  242. package/node/graphql/index.d.ts +38 -0
  243. package/node/graphql/index.js +48 -0
  244. package/node/job/index.d.ts +34 -0
  245. package/node/job/index.js +51 -0
  246. package/node/kinesis-stream/index.d.ts +3 -0
  247. package/node/kinesis-stream/index.js +3 -0
  248. package/node/queue/index.d.ts +3 -0
  249. package/node/queue/index.js +3 -0
  250. package/node/rds/index.d.ts +3 -0
  251. package/node/rds/index.js +3 -0
  252. package/node/site/index.d.ts +15 -0
  253. package/node/site/index.js +64 -0
  254. package/node/table/index.d.ts +3 -0
  255. package/node/table/index.js +3 -0
  256. package/node/topic/index.d.ts +3 -0
  257. package/node/topic/index.js +3 -0
  258. package/node/util/index.d.ts +7 -0
  259. package/node/util/index.js +57 -0
  260. package/package.json +107 -40
  261. package/pothos.d.ts +8 -0
  262. package/pothos.js +156 -0
  263. package/runtime/handlers/dotnet.d.ts +1 -0
  264. package/runtime/handlers/dotnet.js +117 -0
  265. package/runtime/handlers/go.d.ts +1 -0
  266. package/runtime/handlers/go.js +105 -0
  267. package/runtime/handlers/java.d.ts +1 -0
  268. package/runtime/handlers/java.js +97 -0
  269. package/{dist/runtime → runtime/handlers}/node.d.ts +0 -0
  270. package/runtime/handlers/node.js +172 -0
  271. package/runtime/handlers/python.d.ts +1 -0
  272. package/runtime/handlers/python.js +89 -0
  273. package/{dist/runtime → runtime}/handlers.d.ts +30 -12
  274. package/runtime/handlers.js +117 -0
  275. package/{dist/runtime → runtime}/iot.d.ts +0 -0
  276. package/{dist/runtime → runtime}/iot.js +1 -1
  277. package/{dist/runtime → runtime}/runtime.d.ts +2 -0
  278. package/{dist/runtime → runtime}/runtime.js +0 -0
  279. package/{dist/runtime → runtime}/server.d.ts +0 -0
  280. package/{dist/runtime → runtime}/server.js +39 -3
  281. package/{dist/runtime → runtime}/workers.d.ts +1 -0
  282. package/{dist/runtime → runtime}/workers.js +12 -4
  283. package/{dist/cli/sst.d.ts → scrap.d.ts} +0 -0
  284. package/scrap.js +58 -0
  285. package/site-env.d.ts +13 -0
  286. package/site-env.js +47 -0
  287. package/sst.mjs +21848 -0
  288. package/{dist/stacks → stacks}/build.d.ts +0 -0
  289. package/{dist/stacks → stacks}/build.js +18 -9
  290. package/stacks/deploy.d.ts +8 -0
  291. package/stacks/deploy.js +105 -0
  292. package/stacks/index.d.ts +7 -0
  293. package/stacks/index.js +7 -0
  294. package/stacks/metadata.d.ts +9 -0
  295. package/{dist/stacks → stacks}/metadata.js +2 -14
  296. package/stacks/monitor.d.ts +27 -0
  297. package/stacks/monitor.js +111 -0
  298. package/stacks/remove.d.ts +8 -0
  299. package/stacks/remove.js +80 -0
  300. package/stacks/synth.d.ts +10 -0
  301. package/stacks/synth.js +77 -0
  302. package/support/astro-site-html-stub/index.html +99 -0
  303. package/support/base-site-archiver.cjs +12 -11
  304. package/support/base-site-archiver.mjs +20 -0
  305. package/support/bridge/bridge.mjs +59 -0
  306. package/{dist/support → support}/custom-resources/index.mjs +44209 -42781
  307. package/support/dotnet31-bootstrap/Program.cs +17 -0
  308. package/support/dotnet31-bootstrap/dotnet-bootstrap.csproj +12 -0
  309. package/support/dotnet31-bootstrap/release/Amazon.Lambda.Core.dll +0 -0
  310. package/support/dotnet31-bootstrap/release/Amazon.Lambda.RuntimeSupport.dll +0 -0
  311. package/support/dotnet31-bootstrap/release/System.Runtime.CompilerServices.Unsafe.dll +0 -0
  312. package/support/dotnet31-bootstrap/release/System.Text.Encodings.Web.dll +0 -0
  313. package/support/dotnet31-bootstrap/release/System.Text.Json.dll +0 -0
  314. package/support/dotnet31-bootstrap/release/dotnet-bootstrap +0 -0
  315. package/support/dotnet31-bootstrap/release/dotnet-bootstrap.deps.json +230 -0
  316. package/support/dotnet31-bootstrap/release/dotnet-bootstrap.dll +0 -0
  317. package/support/dotnet31-bootstrap/release/dotnet-bootstrap.pdb +0 -0
  318. package/support/dotnet31-bootstrap/release/dotnet-bootstrap.runtimeconfig.json +9 -0
  319. package/support/dotnet6-bootstrap/Program.cs +17 -0
  320. package/support/dotnet6-bootstrap/dotnet-bootstrap.csproj +12 -0
  321. package/support/dotnet6-bootstrap/release/Amazon.Lambda.Core.dll +0 -0
  322. package/support/dotnet6-bootstrap/release/Amazon.Lambda.RuntimeSupport.dll +0 -0
  323. package/support/dotnet6-bootstrap/release/dotnet-bootstrap +0 -0
  324. package/support/dotnet6-bootstrap/release/dotnet-bootstrap.deps.json +59 -0
  325. package/support/dotnet6-bootstrap/release/dotnet-bootstrap.dll +0 -0
  326. package/support/dotnet6-bootstrap/release/dotnet-bootstrap.pdb +0 -0
  327. package/support/dotnet6-bootstrap/release/dotnet-bootstrap.runtimeconfig.json +12 -0
  328. package/support/edge-function/edge-lambda-version.mjs +3 -0
  329. package/support/edge-function/edge-lambda.mjs +3 -0
  330. package/support/edge-function/s3-bucket.mjs +3 -0
  331. package/{dist/support/base-site-custom-resource/cf-invalidate.py → support/edge-function-code-replacer/lambda-code-updater.py} +56 -30
  332. package/support/java-runtime/install.sh +25 -0
  333. package/support/java-runtime/pom.xml +39 -0
  334. package/support/java-runtime/release/aws-lambda-java-core-1.2.0.jar +0 -0
  335. package/support/java-runtime/release/aws-lambda-java-runtime-interface-client-1.1.0.jar +0 -0
  336. package/support/java-runtime/release/aws-lambda-java-serialization-1.0.0.jar +0 -0
  337. package/support/nextjs-site-html-stub/index.html +99 -0
  338. package/{dist/support → support}/nodejs-runtime/index.mjs +7822 -2771
  339. package/support/python-runtime/runtime.py +116 -0
  340. package/support/rds-migrator/index.mjs +28 -0
  341. package/support/remix-site-function/edge-server.js +158 -0
  342. package/support/remix-site-function/polyfill.js +24 -0
  343. package/support/remix-site-function/regional-server.js +162 -0
  344. package/support/remix-site-html-stub/index.html +99 -0
  345. package/support/sls-nextjs-site-build-helper/build.cjs +91 -0
  346. package/support/sls-nextjs-site-build-helper/index-wrapper.js +19 -0
  347. package/support/sls-nextjs-site-stub/index.html +99 -0
  348. package/support/solid-start-site-html-stub/index.html +99 -0
  349. package/support/ssr-site-function-stub/index.js +5 -0
  350. package/util/fs.d.ts +4 -0
  351. package/util/fs.js +46 -0
  352. package/util/module.d.ts +1 -0
  353. package/util/module.js +5 -0
  354. package/util/process.d.ts +2 -0
  355. package/util/process.js +3 -0
  356. package/{dist/watcher.d.ts → watcher.d.ts} +0 -0
  357. package/{dist/watcher.js → watcher.js} +1 -1
  358. package/.build/sst-debug.log +0 -10
  359. package/.turbo/turbo-build.log +0 -2
  360. package/CHANGELOG.md +0 -332
  361. package/analyze +0 -11090
  362. package/bin/sst.mjs +0 -3
  363. package/build.mjs +0 -116
  364. package/debug.log +0 -6
  365. package/dist/app.js +0 -92
  366. package/dist/bootstrap.js +0 -23
  367. package/dist/cli/commands/build.js +0 -8
  368. package/dist/cli/commands/deploy.js +0 -20
  369. package/dist/cli/commands/env.d.ts +0 -0
  370. package/dist/cli/commands/env.js +0 -1
  371. package/dist/cli/commands/scrap.d.ts +0 -5
  372. package/dist/cli/commands/scrap.js +0 -1
  373. package/dist/cli/commands/start.d.ts +0 -7
  374. package/dist/cli/commands/start.js +0 -136
  375. package/dist/cli/program.d.ts +0 -7
  376. package/dist/cli/ui/deploy.d.ts +0 -6
  377. package/dist/constructs/nextjs-site/custom-resource/cfn-response.d.ts +0 -19
  378. package/dist/constructs/nextjs-site/custom-resource/cfn-response.js +0 -94
  379. package/dist/constructs/nextjs-site/custom-resource/edge-lambda-version.d.ts +0 -1
  380. package/dist/constructs/nextjs-site/custom-resource/edge-lambda-version.js +0 -138
  381. package/dist/constructs/nextjs-site/custom-resource/edge-lambda.d.ts +0 -1
  382. package/dist/constructs/nextjs-site/custom-resource/edge-lambda.js +0 -136
  383. package/dist/constructs/nextjs-site/custom-resource/s3-bucket.d.ts +0 -1
  384. package/dist/constructs/nextjs-site/custom-resource/s3-bucket.js +0 -94
  385. package/dist/constructs/nextjs-site/custom-resource/util.d.ts +0 -1
  386. package/dist/constructs/nextjs-site/custom-resource/util.js +0 -4
  387. package/dist/logger.d.ts +0 -9
  388. package/dist/runtime/handlers.js +0 -72
  389. package/dist/runtime/node.js +0 -99
  390. package/dist/sst.mjs +0 -164202
  391. package/dist/stacks/deploy.d.ts +0 -33
  392. package/dist/stacks/deploy.js +0 -168
  393. package/dist/stacks/index.d.ts +0 -21
  394. package/dist/stacks/index.js +0 -57
  395. package/dist/stacks/metadata.d.ts +0 -9
  396. package/dist/support/base-site-archiver.cjs +0 -115
  397. package/dist/support/base-site-custom-resource/s3-handler.py +0 -195
  398. package/dist/support/base-site-custom-resource/s3-upload.py +0 -91
  399. package/dist/support/bridge/bridge.mjs +0 -86
  400. package/dist/support/static-site-stub/index.html +0 -90
  401. package/src/app.ts +0 -140
  402. package/src/bootstrap.ts +0 -28
  403. package/src/bus.ts +0 -81
  404. package/src/cache.ts +0 -34
  405. package/src/cdk/cloudformation-deployments.ts +0 -730
  406. package/src/cdk/deploy-stack.ts +0 -1030
  407. package/src/cli/commands/bind.ts +0 -31
  408. package/src/cli/commands/build.ts +0 -16
  409. package/src/cli/commands/deploy.ts +0 -34
  410. package/src/cli/commands/env.ts +0 -0
  411. package/src/cli/commands/scrap.ts +0 -5
  412. package/src/cli/commands/secrets/get.ts +0 -50
  413. package/src/cli/commands/secrets/list.ts +0 -66
  414. package/src/cli/commands/secrets/remove.ts +0 -36
  415. package/src/cli/commands/secrets/secrets.ts +0 -17
  416. package/src/cli/commands/secrets/set.ts +0 -59
  417. package/src/cli/commands/start.tsx +0 -162
  418. package/src/cli/commands/update.ts +0 -100
  419. package/src/cli/program.ts +0 -22
  420. package/src/cli/spinner.ts +0 -14
  421. package/src/cli/sst.ts +0 -50
  422. package/src/cli/ui/deploy.tsx +0 -139
  423. package/src/config.ts +0 -226
  424. package/src/constructs/Api.ts +0 -1448
  425. package/src/constructs/ApiGatewayV1Api.ts +0 -1481
  426. package/src/constructs/App.ts +0 -744
  427. package/src/constructs/AppSyncApi.ts +0 -1045
  428. package/src/constructs/Auth.ts +0 -252
  429. package/src/constructs/BaseSite.ts +0 -146
  430. package/src/constructs/Bucket.ts +0 -670
  431. package/src/constructs/Cognito.ts +0 -708
  432. package/src/constructs/Config.ts +0 -4
  433. package/src/constructs/Construct.ts +0 -77
  434. package/src/constructs/Cron.ts +0 -235
  435. package/src/constructs/DebugApp.ts +0 -97
  436. package/src/constructs/DebugStack.ts +0 -182
  437. package/src/constructs/EdgeFunction.ts +0 -460
  438. package/src/constructs/EventBus.ts +0 -651
  439. package/src/constructs/Function.ts +0 -1329
  440. package/src/constructs/FunctionalStack.ts +0 -90
  441. package/src/constructs/GraphQLApi.ts +0 -140
  442. package/src/constructs/Job.ts +0 -557
  443. package/src/constructs/KinesisStream.ts +0 -388
  444. package/src/constructs/Metadata.ts +0 -75
  445. package/src/constructs/NextjsSite.ts +0 -1498
  446. package/src/constructs/Parameter.ts +0 -72
  447. package/src/constructs/Queue.ts +0 -360
  448. package/src/constructs/RDS.ts +0 -578
  449. package/src/constructs/ReactStaticSite.ts +0 -66
  450. package/src/constructs/RemixSite.ts +0 -1397
  451. package/src/constructs/Script/cfn-response.ts +0 -116
  452. package/src/constructs/Script/index.ts +0 -103
  453. package/src/constructs/Script/outbound.ts +0 -59
  454. package/src/constructs/Script/package.json +0 -3
  455. package/src/constructs/Script/util.ts +0 -19
  456. package/src/constructs/Script.ts +0 -270
  457. package/src/constructs/Secret.ts +0 -66
  458. package/src/constructs/Stack.ts +0 -319
  459. package/src/constructs/StaticSite.ts +0 -995
  460. package/src/constructs/Table.ts +0 -844
  461. package/src/constructs/Topic.ts +0 -486
  462. package/src/constructs/ViteStaticSite.ts +0 -99
  463. package/src/constructs/WebSocketApi.ts +0 -687
  464. package/src/constructs/context.ts +0 -12
  465. package/src/constructs/deferred_task.ts +0 -53
  466. package/src/constructs/descs.d.ts +0 -1
  467. package/src/constructs/index.ts +0 -39
  468. package/src/constructs/nextjs-site/cross-region-helper.ts +0 -189
  469. package/src/constructs/nextjs-site/custom-resource/cfn-response.ts +0 -146
  470. package/src/constructs/nextjs-site/custom-resource/edge-lambda-version.ts +0 -162
  471. package/src/constructs/nextjs-site/custom-resource/edge-lambda.ts +0 -167
  472. package/src/constructs/nextjs-site/custom-resource/s3-bucket.ts +0 -112
  473. package/src/constructs/nextjs-site/custom-resource/util.ts +0 -11
  474. package/src/constructs/util/apiGatewayV1AccessLog.ts +0 -106
  475. package/src/constructs/util/apiGatewayV2AccessLog.ts +0 -139
  476. package/src/constructs/util/apiGatewayV2Cors.ts +0 -94
  477. package/src/constructs/util/apiGatewayV2Domain.ts +0 -312
  478. package/src/constructs/util/appSyncApiDomain.ts +0 -204
  479. package/src/constructs/util/builder.ts +0 -17
  480. package/src/constructs/util/duration.ts +0 -27
  481. package/src/constructs/util/functionBinding.ts +0 -102
  482. package/src/constructs/util/functionUrlCors.ts +0 -96
  483. package/src/constructs/util/permission.ts +0 -299
  484. package/src/constructs/util/python/bundling.ts +0 -174
  485. package/src/constructs/util/size.ts +0 -13
  486. package/src/constructs/util/warning.ts +0 -20
  487. package/src/context/context.ts +0 -79
  488. package/src/context/handler.ts +0 -53
  489. package/src/context/index.ts +0 -2
  490. package/src/credentials.ts +0 -103
  491. package/src/error.ts +0 -5
  492. package/src/iot.ts +0 -105
  493. package/src/logger.ts +0 -35
  494. package/src/runtime/handlers.ts +0 -121
  495. package/src/runtime/iot.ts +0 -16
  496. package/src/runtime/node.ts +0 -111
  497. package/src/runtime/runtime.ts +0 -27
  498. package/src/runtime/server.ts +0 -149
  499. package/src/runtime/workers.ts +0 -96
  500. package/src/stacks/build.ts +0 -69
  501. package/src/stacks/deploy.ts +0 -232
  502. package/src/stacks/index.ts +0 -73
  503. package/src/stacks/metadata.ts +0 -125
  504. package/src/watcher.ts +0 -47
  505. package/sst.config.mjs +0 -6
  506. package/support/bridge/bridge.ts +0 -136
  507. package/support/bridge/build.mjs +0 -18
  508. package/support/custom-resources/auth-keys.ts +0 -113
  509. package/support/custom-resources/build.mjs +0 -18
  510. package/support/custom-resources/cfn-response.ts +0 -151
  511. package/support/custom-resources/index.ts +0 -18
  512. package/support/custom-resources/secrets-migration.ts +0 -82
  513. package/support/custom-resources/stack-metadata.ts +0 -75
  514. package/support/custom-resources/util.ts +0 -44
  515. package/support/nodejs-runtime/index.ts +0 -69
  516. package/support/tsconfig.json +0 -11
  517. package/tsconfig.json +0 -13
  518. package/yarn-error.log +0 -75
@@ -1,53 +0,0 @@
1
- import { cpus } from "os";
2
- import { createAppContext } from "./context.js";
3
-
4
- type Task = () => Promise<void>;
5
-
6
- export const useDeferredTasks = createAppContext(() => {
7
- const tasks: Task[] = [];
8
-
9
- return {
10
- add(task: Task) {
11
- tasks.push(task);
12
- },
13
- async run() {
14
- const coreNum = cpus().length;
15
- const concurrency = Math.max(
16
- 1,
17
- process.env.SST_BUILD_CONCURRENCY
18
- ? parseInt(process.env.SST_BUILD_CONCURRENCY, 10)
19
- : coreNum - 1
20
- );
21
- let remaining = tasks.length;
22
-
23
- return new Promise((resolve, reject) => {
24
- const runTask = () => {
25
- // Get task
26
- const task = tasks.shift();
27
- if (!task) {
28
- // all tasks completed
29
- if (remaining === 0) {
30
- resolve(true);
31
- }
32
- return;
33
- }
34
-
35
- // Run task
36
- task()
37
- .then(() => {
38
- remaining--;
39
- runTask();
40
- })
41
- .catch(e => {
42
- reject(e);
43
- });
44
- };
45
-
46
- // Run tasks in parallel
47
- for (let i = 0; i < concurrency; i++) {
48
- runTask();
49
- }
50
- });
51
- }
52
- };
53
- });
@@ -1 +0,0 @@
1
- declare module "zip-local";
@@ -1,39 +0,0 @@
1
- export * from "./App.js";
2
- export * from "./Auth.js";
3
- export * from "./Api.js";
4
- export * from "./Job.js";
5
- export * from "./RDS.js";
6
- export * from "./Cognito.js";
7
- export * from "./Cron.js";
8
- export * from "./Queue.js";
9
- export * from "./Stack.js";
10
- export * from "./Table.js";
11
- export * from "./Topic.js";
12
- export * from "./Bucket.js";
13
- export * from "./Script.js";
14
- export * from "./EventBus.js";
15
- export * from "./Function.js";
16
- export * from "./GraphQLApi.js";
17
- export * from "./AppSyncApi.js";
18
- export * from "./DebugStack.js";
19
- export * from "./WebSocketApi.js";
20
- export * from "./KinesisStream.js";
21
- export * from "./ApiGatewayV1Api.js";
22
-
23
- export * from "./NextjsSite.js";
24
- export * from "./RemixSite.js";
25
- export * from "./StaticSite.js";
26
- export * from "./ViteStaticSite.js";
27
- export * from "./ReactStaticSite.js";
28
-
29
- export * from "./util/size.js";
30
- export * from "./util/duration.js";
31
- export * from "./util/permission.js";
32
- export * as Config from "./Config.js";
33
- export * as Metadata from "./Metadata.js";
34
-
35
- export * from "./DebugApp.js";
36
- export * from "./DebugStack.js";
37
-
38
- export { use, dependsOn, getStack } from "./FunctionalStack.js";
39
- export type { StackContext } from "./FunctionalStack.js";
@@ -1,189 +0,0 @@
1
- import path from "path";
2
- import crypto from "crypto";
3
- import url from "url";
4
- import { Construct } from "constructs";
5
- import * as cdk from "aws-cdk-lib";
6
- import * as iam from "aws-cdk-lib/aws-iam";
7
- import * as lambda from "aws-cdk-lib/aws-lambda";
8
- const __dirname = path.dirname(url.fileURLToPath(import.meta.url));
9
-
10
- export function getOrCreateBucket(scope: Construct): cdk.CustomResource {
11
- // Do not recreate if exist
12
- const providerId = "EdgeLambdaBucketProvider";
13
- const resId = "EdgeLambdaBucket";
14
- const stack = cdk.Stack.of(scope);
15
- const existingResource = stack.node.tryFindChild(resId) as cdk.CustomResource;
16
- if (existingResource) {
17
- return existingResource;
18
- }
19
-
20
- // Create provider
21
- const provider = new lambda.Function(stack, providerId, {
22
- code: lambda.Code.fromAsset(path.join(__dirname, "custom-resource")),
23
- handler: "s3-bucket.handler",
24
- runtime: lambda.Runtime.NODEJS_16_X,
25
- timeout: cdk.Duration.minutes(15),
26
- memorySize: 1024,
27
- initialPolicy: [
28
- new iam.PolicyStatement({
29
- effect: iam.Effect.ALLOW,
30
- actions: ["s3:*"],
31
- resources: ["*"],
32
- }),
33
- ],
34
- });
35
-
36
- // Create custom resource
37
- const resource = new cdk.CustomResource(stack, resId, {
38
- serviceToken: provider.functionArn,
39
- resourceType: "Custom::SSTEdgeLambdaBucket",
40
- properties: {
41
- BucketNamePrefix: `${stack.stackName}-${resId}`,
42
- },
43
- });
44
-
45
- return resource;
46
- }
47
-
48
- export function createFunction(
49
- scope: Construct,
50
- name: string,
51
- role: iam.Role,
52
- bucketName: string,
53
- functionParams: any
54
- ): cdk.CustomResource {
55
- // Do not recreate if exist
56
- const providerId = "EdgeLambdaProvider";
57
- const resId = `${name}EdgeLambda`;
58
- const stack = cdk.Stack.of(scope);
59
- let provider = stack.node.tryFindChild(providerId) as lambda.Function;
60
-
61
- // Create provider if not already created
62
- if (!provider) {
63
- provider = new lambda.Function(stack, providerId, {
64
- code: lambda.Code.fromAsset(path.join(__dirname, "custom-resource")),
65
- handler: "edge-lambda.handler",
66
- runtime: lambda.Runtime.NODEJS_16_X,
67
- timeout: cdk.Duration.minutes(15),
68
- memorySize: 1024,
69
- initialPolicy: [
70
- new iam.PolicyStatement({
71
- effect: iam.Effect.ALLOW,
72
- actions: ["lambda:*", "s3:*"],
73
- resources: ["*"],
74
- }),
75
- ],
76
- });
77
- if (provider.role) {
78
- role.grantPassRole(provider.role);
79
- }
80
- }
81
-
82
- // Create custom resource
83
- const resource = new cdk.CustomResource(scope, resId, {
84
- serviceToken: provider.functionArn,
85
- resourceType: "Custom::SSTEdgeLambda",
86
- properties: {
87
- FunctionNamePrefix: `${cdk.Stack.of(scope).stackName}-${resId}`,
88
- FunctionBucket: bucketName,
89
- FunctionParams: functionParams,
90
- },
91
- });
92
-
93
- return resource;
94
- }
95
-
96
- export function createVersion(
97
- scope: Construct,
98
- name: string,
99
- functionArn: string
100
- ): cdk.CustomResource {
101
- // Do not recreate if exist
102
- const providerId = "EdgeLambdaVersionProvider";
103
- const resId = `${name}EdgeLambdaVersion`;
104
- const stack = cdk.Stack.of(scope);
105
- let provider = stack.node.tryFindChild(providerId) as lambda.Function;
106
-
107
- // Create provider if not already created
108
- if (!provider) {
109
- provider = new lambda.Function(stack, providerId, {
110
- code: lambda.Code.fromAsset(path.join(__dirname, "custom-resource")),
111
- handler: "edge-lambda-version.handler",
112
- runtime: lambda.Runtime.NODEJS_16_X,
113
- timeout: cdk.Duration.minutes(15),
114
- memorySize: 1024,
115
- initialPolicy: [
116
- new iam.PolicyStatement({
117
- effect: iam.Effect.ALLOW,
118
- actions: ["lambda:*"],
119
- resources: ["*"],
120
- }),
121
- ],
122
- });
123
- }
124
-
125
- // Create custom resource
126
- return new cdk.CustomResource(scope, resId, {
127
- serviceToken: provider.functionArn,
128
- resourceType: "Custom::SSTEdgeLambdaVersion",
129
- properties: {
130
- FunctionArn: functionArn,
131
- },
132
- });
133
- }
134
-
135
- export function updateVersionLogicalId(
136
- functionCR: cdk.CustomResource,
137
- versionCR: cdk.CustomResource
138
- ) {
139
- // Override the version's logical ID with a lazy string which includes the
140
- // hash of the function itself, so a new version resource is created when
141
- // the function configuration changes.
142
- const cfn = versionCR.node.defaultChild as cdk.CfnResource;
143
- const originalLogicalId = cdk.Stack.of(versionCR).resolve(
144
- cfn.logicalId
145
- ) as string;
146
- cfn.overrideLogicalId(
147
- cdk.Lazy.uncachedString({
148
- produce: () => {
149
- const hash = calculateHash(functionCR);
150
- const logicalId = trimFromStart(originalLogicalId, 255 - 32);
151
- return `${logicalId}${hash}`;
152
- },
153
- })
154
- );
155
- }
156
-
157
- function trimFromStart(s: string, maxLength: number) {
158
- const desiredLength = Math.min(maxLength, s.length);
159
- const newStart = s.length - desiredLength;
160
- return s.substring(newStart);
161
- }
162
-
163
- function calculateHash(resource: cdk.CustomResource): string {
164
- // render the cloudformation resource from this function
165
- // config is of the shape:
166
- // {
167
- // Resources: {
168
- // LogicalId: {
169
- // Type: 'Function',
170
- // Properties: { ... }
171
- // }}}
172
- const cfnResource = resource.node.defaultChild as cdk.CfnResource;
173
- const config = cdk.Stack.of(resource).resolve(
174
- (cfnResource as any)._toCloudFormation()
175
- );
176
- const resources = config.Resources;
177
- const resourceKeys = Object.keys(resources);
178
- if (resourceKeys.length !== 1) {
179
- throw new Error(
180
- `Expected one rendered CloudFormation resource but found ${resourceKeys.length}`
181
- );
182
- }
183
- const logicalId = resourceKeys[0];
184
- const properties = resources[logicalId].Properties.FunctionParams;
185
-
186
- const hash = crypto.createHash("md5");
187
- hash.update(JSON.stringify(properties));
188
- return hash.digest("hex");
189
- }
@@ -1,146 +0,0 @@
1
- /* eslint-disable max-len */
2
- /* eslint-disable no-console */
3
- import https from "https";
4
- import url from "url";
5
- import { log } from "./util.js";
6
-
7
- export const CREATE_FAILED_PHYSICAL_ID_MARKER =
8
- "AWSCDK::CustomResourceProviderFramework::CREATE_FAILED";
9
- export const MISSING_PHYSICAL_ID_MARKER =
10
- "AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";
11
-
12
- export interface CloudFormationResponseOptions {
13
- readonly reason?: string;
14
- readonly noEcho?: boolean;
15
- }
16
-
17
- export interface CloudFormationEventContext {
18
- StackId: string;
19
- RequestId: string;
20
- PhysicalResourceId?: string;
21
- LogicalResourceId: string;
22
- ResponseURL: string;
23
- Data?: any;
24
- }
25
-
26
- export async function submitResponse(
27
- status: "SUCCESS" | "FAILED",
28
- event: CloudFormationEventContext,
29
- options: CloudFormationResponseOptions = {}
30
- ) {
31
- const json: AWSLambda.CloudFormationCustomResourceResponse = {
32
- Status: status,
33
- Reason: options.reason || status,
34
- StackId: event.StackId,
35
- RequestId: event.RequestId,
36
- PhysicalResourceId: event.PhysicalResourceId || MISSING_PHYSICAL_ID_MARKER,
37
- LogicalResourceId: event.LogicalResourceId,
38
- NoEcho: options.noEcho,
39
- Data: event.Data,
40
- };
41
-
42
- log("submit response to cloudformation", json);
43
-
44
- const responseBody = JSON.stringify(json);
45
-
46
- const parsedUrl = url.parse(event.ResponseURL);
47
- await httpRequest(
48
- {
49
- hostname: parsedUrl.hostname,
50
- path: parsedUrl.path,
51
- method: "PUT",
52
- headers: {
53
- "content-type": "",
54
- "content-length": responseBody.length,
55
- },
56
- },
57
- responseBody
58
- );
59
- }
60
-
61
- export const includeStackTraces = true; // for unit tests
62
-
63
- export function safeHandler(block: (event: any) => Promise<void>) {
64
- return async (event: any) => {
65
- // ignore DELETE event when the physical resource ID is the marker that
66
- // indicates that this DELETE is a subsequent DELETE to a failed CREATE
67
- // operation.
68
- if (
69
- event.RequestType === "Delete" &&
70
- event.PhysicalResourceId === CREATE_FAILED_PHYSICAL_ID_MARKER
71
- ) {
72
- log("ignoring DELETE event caused by a failed CREATE event");
73
- await submitResponse("SUCCESS", event);
74
- return;
75
- }
76
-
77
- try {
78
- await block(event);
79
- } catch (e: any) {
80
- log(e);
81
-
82
- // tell waiter state machine to retry
83
- if (e instanceof Retry) {
84
- log("retry requested by handler");
85
- throw e;
86
- }
87
-
88
- if (!event.PhysicalResourceId) {
89
- // special case: if CREATE fails, which usually implies, we usually don't
90
- // have a physical resource id. in this case, the subsequent DELETE
91
- // operation does not have any meaning, and will likely fail as well. to
92
- // address this, we use a marker so the provider framework can simply
93
- // ignore the subsequent DELETE.
94
- if (event.RequestType === "Create") {
95
- log(
96
- "CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"
97
- );
98
- event.PhysicalResourceId = CREATE_FAILED_PHYSICAL_ID_MARKER;
99
- } else {
100
- // otherwise, if PhysicalResourceId is not specified, something is
101
- // terribly wrong because all other events should have an ID.
102
- log(
103
- `ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(
104
- event
105
- )}`
106
- );
107
- }
108
- }
109
-
110
- // this is an actual error, fail the activity altogether and exist.
111
- // append a reference to the log group.
112
- const reason = [
113
- e.message,
114
- `Logs: https://${
115
- process.env.AWS_REGION
116
- }.console.aws.amazon.com/cloudwatch/home?region=${
117
- process.env.AWS_REGION
118
- }#logsV2:log-groups/log-group/${encodeURIComponent(
119
- process.env.AWS_LAMBDA_LOG_GROUP_NAME as string
120
- )}/log-events/${encodeURIComponent(
121
- process.env.AWS_LAMBDA_LOG_STREAM_NAME as string
122
- )}`,
123
- ].join("\n");
124
-
125
- await submitResponse("FAILED", event, { reason });
126
- }
127
- };
128
- }
129
-
130
- export class Retry extends Error {}
131
-
132
- async function httpRequest(
133
- options: https.RequestOptions,
134
- responseBody: string
135
- ) {
136
- return new Promise((resolve, reject) => {
137
- try {
138
- const request = https.request(options, resolve);
139
- request.on("error", reject);
140
- request.write(responseBody);
141
- request.end();
142
- } catch (e) {
143
- reject(e);
144
- }
145
- });
146
- }
@@ -1,162 +0,0 @@
1
- import { createRequire } from "module";
2
- const require = createRequire(import.meta.url);
3
- const AWS = require("aws-sdk");
4
- AWS.config.logger = console;
5
-
6
- import { log } from "./util.js";
7
- import * as cfnResponse from "./cfn-response.js";
8
- const lambda = new AWS.Lambda({ region: "us-east-1" });
9
- const LIVE_ALIAS = "live";
10
-
11
- export const handler = cfnResponse.safeHandler(async (
12
- cfnRequest: AWSLambda.CloudFormationCustomResourceEvent
13
- ) => {
14
- log("onEventHandler", cfnRequest);
15
-
16
- // Process request
17
- let PhysicalResourceId;
18
- let Data;
19
- const functionArn = cfnRequest.ResourceProperties.FunctionArn;
20
- const functionName = functionArn.split(":").pop();
21
- switch (cfnRequest.RequestType) {
22
- case "Create": {
23
- const ret = await createVersion(functionName);
24
- const version = ret.Version as string;
25
- await createAlias(functionName, version);
26
- PhysicalResourceId = `${functionArn}:${version}`;
27
- Data = { Version: version };
28
- break;
29
- }
30
- case "Update": {
31
- PhysicalResourceId = cfnRequest.PhysicalResourceId;
32
- Data = { Version: cfnRequest.PhysicalResourceId.split(":").pop() };
33
- break;
34
- }
35
- case "Delete": {
36
- await deleteOldVersions(functionName);
37
- PhysicalResourceId = cfnRequest.PhysicalResourceId;
38
- break;
39
- }
40
- default:
41
- throw new Error("Unsupported request type");
42
- }
43
-
44
- // Build response
45
- return cfnResponse.submitResponse("SUCCESS", {
46
- ...cfnRequest,
47
- PhysicalResourceId,
48
- Data,
49
- });
50
- });
51
-
52
- async function createVersion(functionName: string) {
53
- log(`createVersion() called with functionName`, functionName);
54
-
55
- const resp = await lambda
56
- .publishVersion({
57
- FunctionName: functionName,
58
- })
59
- .promise();
60
-
61
- log(`response`, resp);
62
-
63
- return { Version: resp.Version };
64
- }
65
-
66
- async function createAlias(functionName: string, version: string) {
67
- log(
68
- `createAlias() called with functionName`,
69
- functionName,
70
- "version",
71
- version
72
- );
73
-
74
- let resp;
75
-
76
- // Update alias
77
- try {
78
- log("updateAlias");
79
- resp = await lambda
80
- .updateAlias({
81
- Name: LIVE_ALIAS,
82
- FunctionName: functionName,
83
- FunctionVersion: version,
84
- })
85
- .promise();
86
-
87
- log("response", resp);
88
- } catch (e: any) {
89
- // If alias has not be created, create the alias
90
- if (
91
- e.code === "ResourceNotFoundException" &&
92
- e.message.startsWith("Alias not found")
93
- ) {
94
- log("updateAlias");
95
- resp = await lambda
96
- .createAlias({
97
- Name: LIVE_ALIAS,
98
- FunctionName: functionName,
99
- FunctionVersion: version,
100
- })
101
- .promise();
102
-
103
- log("response", resp);
104
- return;
105
- }
106
- throw e;
107
- }
108
- }
109
-
110
- async function deleteOldVersions(functionName: string) {
111
- log(`deleteOldVersions() called with functionName`, functionName);
112
-
113
- let resp;
114
- try {
115
- // Get LIVE_ALIAS version
116
- resp = await lambda
117
- .getAlias({
118
- FunctionName: functionName,
119
- Name: LIVE_ALIAS,
120
- })
121
- .promise();
122
- log(`getAlias`, resp);
123
- const liveVersion = resp.FunctionVersion;
124
-
125
- // Get all versions
126
- resp = await lambda
127
- .listVersionsByFunction({
128
- FunctionName: functionName,
129
- MaxItems: 50,
130
- })
131
- .promise();
132
- log(`listVersionsByFunction`, resp);
133
- const versionObjs = resp.Versions || [];
134
-
135
- // Remove non LIVE_ALIAS versions
136
- for (let i = 0, l = versionObjs.length; i < l; i++) {
137
- const version = versionObjs[i].Version;
138
- if (version === liveVersion) {
139
- log("deleteVersion", version, "skipped");
140
- continue;
141
- }
142
-
143
- try {
144
- log("deleteVersion", version, "do");
145
- resp = await lambda
146
- .deleteFunction({
147
- FunctionName: functionName,
148
- Qualifier: version,
149
- })
150
- .promise();
151
- log("response", resp);
152
- } catch (e) {
153
- // Supress error because a version can fail to remove if still in use.
154
- log(`deleteVersion error`, e);
155
- }
156
- }
157
- } catch (e) {
158
- // Supress error because it is fine if a specific version fails to remove.
159
- // All versions will be removed upon removing the function.
160
- log(`deleteOldVersions error`, e);
161
- }
162
- }