From a6aa8393702943c9f8bfe84cd9fbcab8a013bc56 Mon Sep 17 00:00:00 2001
From: Jonathan Goldwasser <jonathan@goldwasserexchange.be>
Date: Wed, 24 Feb 2021 21:32:22 +0100
Subject: [PATCH 1/2] chore(stepfunctions-tasks): default to NODEJS_14_X for
 EvaluateExpression

Closes #13224
---
 .../index.ts                                  |  0
 .../lib/evaluate-expression.ts                |  9 +++----
 ...er.test.ts => eval-nodejs-handler.test.ts} |  2 +-
 .../test/evaluate-expression.test.ts          |  2 +-
 .../integ.evaluate-expression.expected.json   | 24 +++++++++----------
 5 files changed, 19 insertions(+), 18 deletions(-)
 rename packages/@aws-cdk/aws-stepfunctions-tasks/lib/{eval-nodejs10.x-handler => eval-nodejs-handler}/index.ts (100%)
 rename packages/@aws-cdk/aws-stepfunctions-tasks/test/{eval-nodejs10.x-handler.test.ts => eval-nodejs-handler.test.ts} (96%)

diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/eval-nodejs10.x-handler/index.ts b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/eval-nodejs-handler/index.ts
similarity index 100%
rename from packages/@aws-cdk/aws-stepfunctions-tasks/lib/eval-nodejs10.x-handler/index.ts
rename to packages/@aws-cdk/aws-stepfunctions-tasks/lib/eval-nodejs-handler/index.ts
diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/evaluate-expression.ts b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/evaluate-expression.ts
index 45457a1c377c8..64c25d5e3dd3a 100644
--- a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/evaluate-expression.ts
+++ b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/evaluate-expression.ts
@@ -20,7 +20,7 @@ export interface EvaluateExpressionProps extends sfn.TaskStateBaseProps {
   /**
    * The runtime language to use to evaluate the expression.
    *
-   * @default lambda.Runtime.NODEJS_10_X
+   * @default lambda.Runtime.NODEJS_14_X
    */
   readonly runtime?: lambda.Runtime;
 }
@@ -58,7 +58,7 @@ export class EvaluateExpression extends sfn.TaskStateBase {
   constructor(scope: Construct, id: string, private readonly props: EvaluateExpressionProps) {
     super(scope, id, props);
 
-    this.evalFn = createEvalFn(this.props.runtime || lambda.Runtime.NODEJS_10_X, this);
+    this.evalFn = createEvalFn(this.props.runtime ?? lambda.Runtime.NODEJS_14_X, this);
 
     this.taskPolicies = [
       new iam.PolicyStatement({
@@ -97,17 +97,18 @@ export class EvaluateExpression extends sfn.TaskStateBase {
 }
 
 function createEvalFn(runtime: lambda.Runtime, scope: Construct) {
-  const code = lambda.Code.asset(path.join(__dirname, `eval-${runtime.name}-handler`));
   const lambdaPurpose = 'Eval';
 
   switch (runtime) {
+    case lambda.Runtime.NODEJS_14_X:
+    case lambda.Runtime.NODEJS_12_X:
     case lambda.Runtime.NODEJS_10_X:
       return new lambda.SingletonFunction(scope, 'EvalFunction', {
         runtime,
         handler: 'index.handler',
         uuid: 'a0d2ce44-871b-4e74-87a1-f5e63d7c3bdc',
         lambdaPurpose,
-        code,
+        code: lambda.Code.fromAsset(path.join(__dirname, 'eval-nodejs-handler')),
       });
     // TODO: implement other runtimes
     default:
diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/test/eval-nodejs10.x-handler.test.ts b/packages/@aws-cdk/aws-stepfunctions-tasks/test/eval-nodejs-handler.test.ts
similarity index 96%
rename from packages/@aws-cdk/aws-stepfunctions-tasks/test/eval-nodejs10.x-handler.test.ts
rename to packages/@aws-cdk/aws-stepfunctions-tasks/test/eval-nodejs-handler.test.ts
index d42be11d7aaa4..8d69e9d3b8105 100644
--- a/packages/@aws-cdk/aws-stepfunctions-tasks/test/eval-nodejs10.x-handler.test.ts
+++ b/packages/@aws-cdk/aws-stepfunctions-tasks/test/eval-nodejs-handler.test.ts
@@ -1,5 +1,5 @@
 import { Event } from '../lib';
-import { handler } from '../lib/eval-nodejs10.x-handler';
+import { handler } from '../lib/eval-nodejs-handler';
 
 test('with numbers', async () => {
   // GIVEN
diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/test/evaluate-expression.test.ts b/packages/@aws-cdk/aws-stepfunctions-tasks/test/evaluate-expression.test.ts
index 679e817dfbead..7a2aa196b3de2 100644
--- a/packages/@aws-cdk/aws-stepfunctions-tasks/test/evaluate-expression.test.ts
+++ b/packages/@aws-cdk/aws-stepfunctions-tasks/test/evaluate-expression.test.ts
@@ -34,7 +34,7 @@ test('Eval with Node.js', () => {
   });
 
   expect(stack).toHaveResource('AWS::Lambda::Function', {
-    Runtime: 'nodejs10.x',
+    Runtime: 'nodejs14.x',
   });
 });
 
diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/test/integ.evaluate-expression.expected.json b/packages/@aws-cdk/aws-stepfunctions-tasks/test/integ.evaluate-expression.expected.json
index efdf3878e67e2..c48b04a826783 100644
--- a/packages/@aws-cdk/aws-stepfunctions-tasks/test/integ.evaluate-expression.expected.json
+++ b/packages/@aws-cdk/aws-stepfunctions-tasks/test/integ.evaluate-expression.expected.json
@@ -36,7 +36,7 @@
       "Properties": {
         "Code": {
           "S3Bucket": {
-            "Ref": "AssetParameters640b7d3e1a6ff78c1cad25c2d7396d04c74d6eee31b116f4c86d910338d480d0S3BucketA16CB30E"
+            "Ref": "AssetParametersbc320c7bd6a0eba90db647aa586cf65548560a54c141153fdc12f22eb3b2626bS3Bucket743A2950"
           },
           "S3Key": {
             "Fn::Join": [
@@ -49,7 +49,7 @@
                       "Fn::Split": [
                         "||",
                         {
-                          "Ref": "AssetParameters640b7d3e1a6ff78c1cad25c2d7396d04c74d6eee31b116f4c86d910338d480d0S3VersionKey102DBBD9"
+                          "Ref": "AssetParametersbc320c7bd6a0eba90db647aa586cf65548560a54c141153fdc12f22eb3b2626bS3VersionKey2DBCB833"
                         }
                       ]
                     }
@@ -62,7 +62,7 @@
                       "Fn::Split": [
                         "||",
                         {
-                          "Ref": "AssetParameters640b7d3e1a6ff78c1cad25c2d7396d04c74d6eee31b116f4c86d910338d480d0S3VersionKey102DBBD9"
+                          "Ref": "AssetParametersbc320c7bd6a0eba90db647aa586cf65548560a54c141153fdc12f22eb3b2626bS3VersionKey2DBCB833"
                         }
                       ]
                     }
@@ -72,14 +72,14 @@
             ]
           }
         },
-        "Handler": "index.handler",
         "Role": {
           "Fn::GetAtt": [
             "Evala0d2ce44871b4e7487a1f5e63d7c3bdcServiceRoleDC85DDD3",
             "Arn"
           ]
         },
-        "Runtime": "nodejs10.x"
+        "Handler": "index.handler",
+        "Runtime": "nodejs14.x"
       },
       "DependsOn": [
         "Evala0d2ce44871b4e7487a1f5e63d7c3bdcServiceRoleDC85DDD3"
@@ -185,17 +185,17 @@
     }
   },
   "Parameters": {
-    "AssetParameters640b7d3e1a6ff78c1cad25c2d7396d04c74d6eee31b116f4c86d910338d480d0S3BucketA16CB30E": {
+    "AssetParametersbc320c7bd6a0eba90db647aa586cf65548560a54c141153fdc12f22eb3b2626bS3Bucket743A2950": {
       "Type": "String",
-      "Description": "S3 bucket for asset \"640b7d3e1a6ff78c1cad25c2d7396d04c74d6eee31b116f4c86d910338d480d0\""
+      "Description": "S3 bucket for asset \"bc320c7bd6a0eba90db647aa586cf65548560a54c141153fdc12f22eb3b2626b\""
     },
-    "AssetParameters640b7d3e1a6ff78c1cad25c2d7396d04c74d6eee31b116f4c86d910338d480d0S3VersionKey102DBBD9": {
+    "AssetParametersbc320c7bd6a0eba90db647aa586cf65548560a54c141153fdc12f22eb3b2626bS3VersionKey2DBCB833": {
       "Type": "String",
-      "Description": "S3 key for asset version \"640b7d3e1a6ff78c1cad25c2d7396d04c74d6eee31b116f4c86d910338d480d0\""
+      "Description": "S3 key for asset version \"bc320c7bd6a0eba90db647aa586cf65548560a54c141153fdc12f22eb3b2626b\""
     },
-    "AssetParameters640b7d3e1a6ff78c1cad25c2d7396d04c74d6eee31b116f4c86d910338d480d0ArtifactHash43D553D7": {
+    "AssetParametersbc320c7bd6a0eba90db647aa586cf65548560a54c141153fdc12f22eb3b2626bArtifactHashAD6C554B": {
       "Type": "String",
-      "Description": "Artifact hash for asset \"640b7d3e1a6ff78c1cad25c2d7396d04c74d6eee31b116f4c86d910338d480d0\""
+      "Description": "Artifact hash for asset \"bc320c7bd6a0eba90db647aa586cf65548560a54c141153fdc12f22eb3b2626b\""
     }
   },
   "Outputs": {
@@ -205,4 +205,4 @@
       }
     }
   }
-}
+}
\ No newline at end of file

From e13d12d14c4c724194f6bb360299f7d214662428 Mon Sep 17 00:00:00 2001
From: Jonathan Goldwasser <jonathan@goldwasserexchange.be>
Date: Thu, 25 Feb 2021 08:42:58 +0100
Subject: [PATCH 2/2] README

---
 packages/@aws-cdk/aws-stepfunctions-tasks/README.md | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/README.md b/packages/@aws-cdk/aws-stepfunctions-tasks/README.md
index 38305b270da69..d7c2d1498394d 100644
--- a/packages/@aws-cdk/aws-stepfunctions-tasks/README.md
+++ b/packages/@aws-cdk/aws-stepfunctions-tasks/README.md
@@ -189,7 +189,7 @@ const convertToSeconds = new tasks.EvaluateExpression(this, 'Convert to seconds'
 const createMessage = new tasks.EvaluateExpression(this, 'Create message', {
   // Note: this is a string inside a string.
   expression: '`Now waiting ${$.waitSeconds} seconds...`',
-  runtime: lambda.Runtime.NODEJS_10_X,
+  runtime: lambda.Runtime.NODEJS_14_X,
   resultPath: '$.message',
 });
 
@@ -212,9 +212,8 @@ new sfn.StateMachine(this, 'StateMachine', {
 ```
 
 The `EvaluateExpression` supports a `runtime` prop to specify the Lambda
-runtime to use to evaluate the expression. Currently, the only runtime
-supported is `lambda.Runtime.NODEJS_10_X`.
-
+runtime to use to evaluate the expression. Currently, only runtimes
+of the Node.js family are supported.
 
 ## Athena