Skip to content

Commit 005fc69

Browse files
authored
feat(lambda): support nodejs22 for local lambda invoke (#6368)
1 parent 6ae30c9 commit 005fc69

10 files changed

Lines changed: 47 additions & 1 deletion

File tree

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "feature",
3+
"description" : "Support nodejs22 for local Lambda invoke"
4+
}

plugins/core/core/src/software/aws/toolkit/core/lambda/LambdaRuntime.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ enum class LambdaRuntime(
2121
NODEJS16_X(Runtime.NODEJS16_X, minSamDebugging = "1.49.0", minSamInit = "1.49.0", architectures = LambdaArchitecture.Companion.ARM_COMPATIBLE),
2222
NODEJS18_X(Runtime.NODEJS18_X, minSamDebugging = "1.65.0", minSamInit = "1.65.0", architectures = LambdaArchitecture.Companion.ARM_COMPATIBLE),
2323
NODEJS20_X(Runtime.NODEJS20_X, minSamDebugging = "1.102.0", minSamInit = "1.102.0", architectures = LambdaArchitecture.Companion.ARM_COMPATIBLE),
24+
NODEJS22_X(null, minSamDebugging = "1.127.0", minSamInit = "1.127.0", architectures = LambdaArchitecture.Companion.ARM_COMPATIBLE, runtimeOverride = "nodejs22.x"),
2425
JAVA8_AL2(Runtime.JAVA8_AL2, minSamDebugging = "1.2.0", architectures = LambdaArchitecture.Companion.ARM_COMPATIBLE),
2526
JAVA11(Runtime.JAVA11, architectures = LambdaArchitecture.Companion.ARM_COMPATIBLE),
2627
JAVA17(Runtime.JAVA17, minSamDebugging = "1.81.0", minSamInit = "1.81.0", architectures = LambdaArchitecture.Companion.ARM_COMPATIBLE),

plugins/toolkit/jetbrains-ultimate/it/software/aws/toolkits/jetbrains/services/lambda/nodejs/SupportedNodeJsRuntimes.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@ import software.amazon.awssdk.services.lambda.model.Runtime
88
val SUPPORTED_NODE_RUNTIMES = listOf(
99
arrayOf(Runtime.NODEJS16_X),
1010
arrayOf(Runtime.NODEJS18_X),
11-
arrayOf(Runtime.NODEJS20_X)
11+
arrayOf(Runtime.NODEJS20_X),
12+
arrayOf(Runtime.fromValue("nodejs22.x"))
1213
)

plugins/toolkit/jetbrains-ultimate/resources/META-INF/ext-nodejs.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<sam.imageDebuggerSupport implementation="software.aws.toolkits.jetbrains.services.lambda.nodejs.NodeJs16ImageDebug"/>
1414
<sam.imageDebuggerSupport implementation="software.aws.toolkits.jetbrains.services.lambda.nodejs.NodeJs18ImageDebug"/>
1515
<sam.imageDebuggerSupport implementation="software.aws.toolkits.jetbrains.services.lambda.nodejs.NodeJs20ImageDebug"/>
16+
<sam.imageDebuggerSupport implementation="software.aws.toolkits.jetbrains.services.lambda.nodejs.NodeJs22ImageDebug"/>
1617
<sam.projectWizard id="NODEJS" implementationClass="software.aws.toolkits.jetbrains.services.lambda.nodejs.NodeJsSamProjectWizard"/>
1718
</extensions>
1819
</idea-plugin>

plugins/toolkit/jetbrains-ultimate/src-242-252/software/aws/toolkits/jetbrains/services/lambda/nodejs/NodeJsDebugSupport.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,11 @@ class NodeJs20ImageDebug : NodeJsImageDebugSupport() {
6868
override fun displayName() = LambdaRuntime.NODEJS20_X.toString().capitalize()
6969
}
7070

71+
class NodeJs22ImageDebug : NodeJsImageDebugSupport() {
72+
override val id: String = LambdaRuntime.NODEJS22_X.toString()
73+
override fun displayName() = LambdaRuntime.NODEJS22_X.toString().capitalize()
74+
}
75+
7176
object NodeJsDebugUtils {
7277
private const val NODE_MODULES = "node_modules"
7378

plugins/toolkit/jetbrains-ultimate/src-253+/software/aws/toolkits/jetbrains/services/lambda/nodejs/NodeJsDebugSupport.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,11 @@ class NodeJs20ImageDebug : NodeJsImageDebugSupport() {
7272
override fun displayName() = LambdaRuntime.NODEJS20_X.toString().capitalize()
7373
}
7474

75+
class NodeJs22ImageDebug : NodeJsImageDebugSupport() {
76+
override val id: String = LambdaRuntime.NODEJS22_X.toString()
77+
override fun displayName() = LambdaRuntime.NODEJS22_X.toString().capitalize()
78+
}
79+
7580
object NodeJsDebugUtils {
7681
private const val NODE_MODULES = "node_modules"
7782

plugins/toolkit/jetbrains-ultimate/src/software/aws/toolkits/jetbrains/services/lambda/nodejs/NodeJsRuntimeGroup.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class NodeJsRuntimeGroup : SdkBasedRuntimeGroup() {
3333
LambdaRuntime.NODEJS16_X,
3434
LambdaRuntime.NODEJS18_X,
3535
LambdaRuntime.NODEJS20_X,
36+
LambdaRuntime.NODEJS22_X,
3637
)
3738

3839
override fun determineRuntime(module: Module): LambdaRuntime? = determineRuntime(module.project)
@@ -43,6 +44,7 @@ class NodeJsRuntimeGroup : SdkBasedRuntimeGroup() {
4344
it.major <= 16 -> LambdaRuntime.NODEJS16_X
4445
it.major <= 18 -> LambdaRuntime.NODEJS18_X
4546
it.major <= 20 -> LambdaRuntime.NODEJS20_X
47+
it.major <= 22 -> LambdaRuntime.NODEJS22_X
4648
else -> null
4749
}
4850
}

plugins/toolkit/jetbrains-ultimate/src/software/aws/toolkits/jetbrains/services/lambda/nodejs/NodeJsSamProjectWizard.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ private val nodeJsTemplateRuntimes = setOf(
2626
LambdaRuntime.NODEJS16_X,
2727
LambdaRuntime.NODEJS18_X,
2828
LambdaRuntime.NODEJS20_X,
29+
LambdaRuntime.NODEJS22_X,
2930
)
3031

3132
class NodeJsSamProjectWizard : SamProjectWizard {

plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/lambda/nodejs/NodeJsHandlerCompletionProviderTest.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,16 @@ class NodeJsHandlerCompletionProviderTest {
2626
val provider = HandlerCompletionProvider(projectRule.project, LambdaRuntime.NODEJS18_X)
2727
assertThat(provider.isCompletionSupported).isFalse()
2828
}
29+
30+
@Test
31+
fun completionIsNotSupportedNodeJs20X() {
32+
val provider = HandlerCompletionProvider(projectRule.project, LambdaRuntime.NODEJS20_X)
33+
assertThat(provider.isCompletionSupported).isFalse()
34+
}
35+
36+
@Test
37+
fun completionIsNotSupportedNodeJs22X() {
38+
val provider = HandlerCompletionProvider(projectRule.project, LambdaRuntime.NODEJS22_X)
39+
assertThat(provider.isCompletionSupported).isFalse()
40+
}
2941
}

plugins/toolkit/jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/services/lambda/nodejs/NodeJsRuntimeGroupTest.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,18 @@ class NodeJsRuntimeGroupTest {
3939
val runtime = sut.determineRuntime(projectRule.project)
4040
assertThat(runtime).isEqualTo(LambdaRuntime.NODEJS18_X)
4141
}
42+
43+
@Test
44+
fun testRuntime20() {
45+
projectRule.project.setNodeJsInterpreterVersion(SemVer("v20.0.0", 20, 0, 0))
46+
val runtime = sut.determineRuntime(projectRule.project)
47+
assertThat(runtime).isEqualTo(LambdaRuntime.NODEJS20_X)
48+
}
49+
50+
@Test
51+
fun testRuntime22() {
52+
projectRule.project.setNodeJsInterpreterVersion(SemVer("v22.0.0", 22, 0, 0))
53+
val runtime = sut.determineRuntime(projectRule.project)
54+
assertThat(runtime).isEqualTo(LambdaRuntime.NODEJS22_X)
55+
}
4256
}

0 commit comments

Comments
 (0)