You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by ra...@apache.org on 2020/05/12 13:32:23 UTC

[openwhisk-runtime-nodejs] branch master updated (2bd39e4 -> 921b216)

This is an automated email from the ASF dual-hosted git repository.

rabbah pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/openwhisk-runtime-nodejs.git.


    from 2bd39e4  - Add nodejs:14 to docs/build etc. - Add test suite for node 14. - Add docker action test.
     new 431855b  Update npm openwhisk and CHANGELOGS.
     new 921b216  TypeScript runtime cleanup and linting.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 core/nodejs10Action/CHANGELOG.md        |  14 +-
 core/nodejs10Action/package.json        |   2 +-
 core/nodejs12Action/CHANGELOG.md        |  14 +-
 core/nodejs12Action/package.json        |   2 +-
 core/nodejs14Action/CHANGELOG.md        |   7 +
 core/nodejs14Action/package.json        |   2 +-
 core/nodejs8Action/CHANGELOG.md         |  45 +++---
 core/nodejs8Action/package.json         |   2 +-
 core/typescript37Action/Dockerfile      |  18 +--
 core/typescript37Action/bin/compile     | 241 +++++++++++++++++---------------
 core/typescript37Action/lib/launcher.ts | 167 +++++++++++-----------
 11 files changed, 268 insertions(+), 246 deletions(-)


[openwhisk-runtime-nodejs] 02/02: TypeScript runtime cleanup and linting.

Posted by ra...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rabbah pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openwhisk-runtime-nodejs.git

commit 921b21627bcd27e82bb623958cac681d05be43b9
Author: Rodric Rabbah <ro...@gmail.com>
AuthorDate: Mon May 11 21:58:34 2020 -0400

    TypeScript runtime cleanup and linting.
---
 core/typescript37Action/bin/compile     | 241 +++++++++++++++++---------------
 core/typescript37Action/lib/launcher.ts | 167 +++++++++++-----------
 2 files changed, 208 insertions(+), 200 deletions(-)

diff --git a/core/typescript37Action/bin/compile b/core/typescript37Action/bin/compile
index cf62d05..2635459 100755
--- a/core/typescript37Action/bin/compile
+++ b/core/typescript37Action/bin/compile
@@ -1,153 +1,162 @@
 #!/usr/bin/env node
 /*
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-*/
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 const path = require("path")
 const fs = require("fs")
 const execFileSync = require('child_process').execFileSync;
 
 // write a file creating intermediate directories
 function write_file(file, body, executable) {
-    fs.mkdirSync(path.dirname(file), {recursive: true})
-    fs.writeFileSync(file, body)
-    if(executable)
-        fs.chmodSync(file, 0755)
+  fs.mkdirSync(path.dirname(file), { recursive: true })
+  fs.writeFileSync(file, body)
+  if (executable) {
+    fs.chmodSync(file, 0755)
+  }
 }
 
 // copy a file eventually replacing a substring
 function copy_replace(src, dst, match, replacement) {
-    var body = fs.readFileSync(src, "utf-8")
-    if(match)
-        body = body.replace(match, replacement)
-    write_file(dst, body)
+  let body = fs.readFileSync(src, "utf-8")
+  if (match) {
+    body = body.replace(match, replacement)
+  }
+  write_file(dst, body)
 }
 
 function deext(filename) {
-    var pos = filename.lastIndexOf(".")
-    filename = pos > -1 ? filename.substring(0, pos) : filename
-    return filename
+  const pos = filename.lastIndexOf(".")
+  filename = pos > -1 ? filename.substring(0, pos) : filename
+  return filename
 }
 
 // resolve dependencies from package.json - return the main file
 function dependencies(src_dir) {
-  var pkg_config = src_dir+"/package.json"
-  var node_modules = src_dir+"/node_modules"
-  if(fs.existsSync(pkg_config)) {
-    if(!fs.existsSync(node_modules))
-        execFileSync("yarn", [], {
-            "cwd": src_dir
-        })
-     var config = JSON.parse(fs.readFileSync(pkg_config, "utf-8"))
-     //console.log(config)
-     if("main" in config) {
-         return deext(config["main"])
-     }
+  const pkg_config = src_dir + "/package.json"
+  const node_modules = src_dir + "/node_modules"
+  if (fs.existsSync(pkg_config)) {
+    if (!fs.existsSync(node_modules)) {
+      execFileSync("yarn", [], {
+        "cwd": src_dir
+      })
+    }
+    const config = JSON.parse(fs.readFileSync(pkg_config, "utf-8"))
+    if ("main" in config) {
+      return deext(config["main"])
+    }
   }
   return "index"
 }
 
 // assemble sources
 function sources(launcher, main_file, main_func, src_dir) {
-    // init config
-    src_config = src_dir+"/tsconfig.json"
-    var config = {}
-    if(fs.existsSync(src_config)) {
-        config = JSON.parse(fs.readFileSync(src_config, "utf-8"))
-    }
+  // init config
+  const src_config = src_dir + "/tsconfig.json"
+  const config = {}
+  if (fs.existsSync(src_config)) {
+    config = JSON.parse(fs.readFileSync(src_config, "utf-8"))
+  }
 
-    if(!("files" in config))
-        config["files"] = []
-    if(!("compilerOptions" in config))
-        config["compilerOptions"] = {}
-    config["compilerOptions"]["inlineSourceMap"] = true
-    if("sourceMap" in config["compilerOptions"]) {
-        delete config["compilerOptions"]["sourceMap"]
-    }
-    if(!("outDir" in config["compilerOptions"]))
-        config["compilerOptions"]["outDir"] = "."
-
-    // copy main src file if any (and use it as main)
-    var src_file = src_dir+"/exec"
-    var tgt_file = src_dir+"/"+main_file+".ts"
-    if(fs.existsSync(src_file) && !fs.existsSync(tgt_file)){
-        var re = RegExp('(?<!export\\s+)function\\s+'+main_func)
-        copy_replace(src_file, tgt_file, re, "export function "+main_func)
-        config["files"].push(main_file+".ts")
-    }
+  if (!("files" in config)) {
+    config["files"] = []
+  }
 
-    // copy launcher and replace main
-    copy_replace(launcher,
-       src_dir+"/exec__.ts",
-      'require("./main__").main',
-      'require("./'+main_file+'").'+main_func)
+  if (!("compilerOptions" in config)) {
+    config["compilerOptions"] = {}
+  }
+
+  config["compilerOptions"]["inlineSourceMap"] = true
 
-    // complete tsconfig.json
-    config["files"].push("exec__.ts")
-    write_file(src_config, JSON.stringify(config))
+  if ("sourceMap" in config["compilerOptions"]) {
+    delete config["compilerOptions"]["sourceMap"]
+  }
+
+  if (!("outDir" in config["compilerOptions"])) {
+    config["compilerOptions"]["outDir"] = "."
+  }
+
+  // copy main src file if any (and use it as main)
+  const src_file = src_dir + "/exec"
+  const tgt_file = src_dir + "/" + main_file + ".ts"
+  if (fs.existsSync(src_file) && !fs.existsSync(tgt_file)) {
+    const re = RegExp('(?<!export\\s+)function\\s+' + main_func)
+    copy_replace(src_file, tgt_file, re, "export function " + main_func)
+    config["files"].push(main_file + ".ts")
+  }
+
+  // copy launcher and replace main
+  copy_replace(launcher,
+    src_dir + "/exec__.ts",
+    'require("./main__").main',
+    'require("./' + main_file + '").' + main_func)
+
+  // complete tsconfig.json
+  config["files"].push("exec__.ts")
+  write_file(src_config, JSON.stringify(config))
 }
 
 function build(src_dir, bin_dir) {
-    try {
-        fs.rmdirSync(bin_dir)
-        fs.renameSync(src_dir, bin_dir)
-        execFileSync("tsc", [], {
-            "cwd": bin_dir
-        })
-        write_file(bin_dir+"/exec",
-         '#!/bin/bash\n'+
-         'if [ "$(cat $0.env)" != "$__OW_EXECUTION_ENV" ]\n'+
-         'then cd "$(dirname $0)"\n'+
-         '     echo "Execution Environment Mismatch"\n'+
-         '     echo "Expected: $(cat $0.env)"\n'+
-         '     echo "Actual: $__OW_EXECUTION_ENV"\n'+
-         '     exit 1\n'+
-         'fi\n'+
-         'cd "$(dirname $0)"\n'+
-         'if [ -z "$__OW_DEBUG_PORT" ]\n' +
-         'then node exec__.js\n'+
-         'else node --inspect=":$__OW_DEBUG_PORT" exec__.js\n'+
-         'fi\n', true)
-         write_file(bin_dir+"/exec.env", process.env["__OW_EXECUTION_ENV"])
-    } catch(err) {
-        console.log("syntax error:", err.message)
-    }
+  try {
+    fs.rmdirSync(bin_dir)
+    fs.renameSync(src_dir, bin_dir)
+    execFileSync("tsc", [], {
+      cwd: bin_dir,
+      stdio: 'inherit',
+      stderr: 'inherit'
+    })
+    write_file(bin_dir + "/exec",
+      '#!/bin/bash\n' +
+      'if [ "$(cat $0.env)" != "$__OW_EXECUTION_ENV" ]\n' +
+      'then cd "$(dirname $0)"\n' +
+      '   echo "Execution Environment Mismatch"\n' +
+      '   echo "Expected: $(cat $0.env)"\n' +
+      '   echo "Actual: $__OW_EXECUTION_ENV"\n' +
+      '   exit 1\n' +
+      'fi\n' +
+      'cd "$(dirname $0)"\n' +
+      'if [ -z "$__OW_DEBUG_PORT" ]\n' +
+      'then node exec__.js\n' +
+      'else node --inspect=":$__OW_DEBUG_PORT" exec__.js\n' +
+      'fi\n', true)
+    write_file(bin_dir + "/exec.env", process.env["__OW_EXECUTION_ENV"])
+  } catch (err) {
+    console.log("syntax error:", err.message)
+  }
 }
 
 function compile() {
-    if(process.argv.length<4) {
-        console.log("usage: <main-function> <source-dir> <target-dir>")
-        process.exit(1)
-    }
-    var launcher =  path.dirname(path.dirname(process.argv[1]))+"/lib/launcher.ts"
-    var src_dir = path.resolve(process.argv[3])
-    var bin_dir = path.resolve(process.argv[4])
-    var main_func = process.argv[2]
-    var main_file = dependencies(src_dir)
-    var pieces =  main_func.split(".")
-    if(pieces.length >1) {
-        main_file = pieces.shift()
-        main_func = pieces.join(".")
-    }
-    //console.log(main_file, main_func)
-    sources(launcher, main_file, main_func, src_dir)
-    build(src_dir, bin_dir)
+  if (process.argv.length < 4) {
+    console.log("usage: <main-function> <source-dir> <target-dir>")
+    process.exit(1)
+  }
+  const launcher = path.dirname(path.dirname(process.argv[1])) + "/lib/launcher.ts"
+  const src_dir = path.resolve(process.argv[3])
+  const bin_dir = path.resolve(process.argv[4])
+  let main_func = process.argv[2]
+  let main_file = dependencies(src_dir)
+  const pieces = main_func.split(".")
+  if (pieces.length > 1) {
+    main_file = pieces.shift()
+    main_func = pieces.join(".")
+  }
+  sources(launcher, main_file, main_func, src_dir)
+  build(src_dir, bin_dir)
 }
 
-if(require.main === module) {
-    compile()
+if (require.main === module) {
+  compile()
 }
diff --git a/core/typescript37Action/lib/launcher.ts b/core/typescript37Action/lib/launcher.ts
index a575952..95b428d 100644
--- a/core/typescript37Action/lib/launcher.ts
+++ b/core/typescript37Action/lib/launcher.ts
@@ -1,101 +1,100 @@
 /*
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-*/
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 try {
-const main = require("./main__").main
-const readline = require('readline');
-const fs = require("fs")
-const os = require("os")
+  const main = require("./main__").main
+  const readline = require('readline');
+  const fs = require("fs")
+  const os = require("os")
 
-function vscodeDebug() {
-  let ifaces = os.networkInterfaces()
-  for(let iface of Object.keys(ifaces)) {
-    for(let ip of ifaces[iface]) {
-      if(!ip.internal) {
-        return {
-          "type": "node",
-          "request": "attach",
-          "name": process.env["__OW_ACTION_NAME"],
-          "address": ip.address,
-          "port": 8081,
-          "localRoot": "${workspaceFolder}",
-          "remoteRoot": __dirname
+  function vscodeDebug() {
+    let ifaces = os.networkInterfaces()
+    for (let iface of Object.keys(ifaces)) {
+      for (let ip of ifaces[iface]) {
+        if (!ip.internal) {
+          return {
+            "type": "node",
+            "request": "attach",
+            "name": process.env["__OW_ACTION_NAME"],
+            "address": ip.address,
+            "port": 8081,
+            "localRoot": "${workspaceFolder}",
+            "remoteRoot": __dirname
+          }
         }
       }
     }
+    return { "error": "cannot find external interface" }
   }
-  return {"error": "cannot find external interface"}
-}
 
-async function actionLoop() {
-  const out = fs.createWriteStream(null,
-    { fd: 3, encoding: "utf8" })
+  async function actionLoop() {
+    const out = fs.createWriteStream(null,
+      { fd: 3, encoding: "utf8" })
     process.stdin.setEncoding('utf8');
-  const rl = readline.createInterface({
-    input: process.stdin
-  });
-  const debugging = "__OW_DEBUG_PORT" in process.env
-  out.write(JSON.stringify({"ok":true})+"\n");
-  for await (const line of rl) {
-    try {
-      let args = JSON.parse(line)
-      let value = args.value || {}
-      for (let key in args) {
-          if(key !== "value") {
-            let envar = "__OW_"+key.toUpperCase()
+    const rl = readline.createInterface({
+      input: process.stdin
+    });
+    const debugging = "__OW_DEBUG_PORT" in process.env
+    out.write(JSON.stringify({ "ok": true }) + "\n");
+    for await (const line of rl) {
+      try {
+        let args = JSON.parse(line)
+        let value = args.value || {}
+        for (let key in args) {
+          if (key !== "value") {
+            let envar = "__OW_" + key.toUpperCase()
             process.env[envar] = args[key]
           }
-      }
-      let result = {}
-      if(debugging && "debugWith" in value) {
-        if(value["debugWith"]==="vscode")
-          result = vscodeDebug()
-        else
-          result = {"error": "requested unknown debugger"}
-      } else {
-        result = main(value)
-        if(typeof result === 'undefined') {
-          result = {}
         }
-        if(Promise.resolve(result) == result) 
-          try {
-            result = await result
-          } catch(error) {
-            if(typeof error === 'undefined') {
-              error = {}
-            }
-            result = {"error": error }
+        let result = {}
+        if (debugging && "debugWith" in value) {
+          if (value["debugWith"] === "vscode")
+            result = vscodeDebug()
+          else
+            result = { "error": "requested unknown debugger" }
+        } else {
+          result = main(value)
+          if (typeof result === 'undefined') {
+            result = {}
           }
+          if (Promise.resolve(result) == result)
+            try {
+              result = await result
+            } catch (error) {
+              if (typeof error === 'undefined') {
+                error = {}
+              }
+              result = { "error": error }
+            }
+        }
+        out.write(JSON.stringify(result) + "\n");
+      } catch (err) {
+        console.log(err);
+        let message = err.message || err.toString()
+        let error = { "error": message }
+        out.write(JSON.stringify(error) + "\n");
       }
-      out.write(JSON.stringify(result)+"\n");
-    } catch(err) {
-      console.log(err);
-      let message = err.message || err.toString()
-      let error = {"error": message}
-      out.write(JSON.stringify(error)+"\n");
     }
   }
-}
-actionLoop()
-} catch(e) {
-    if(e.code == "MODULE_NOT_FOUND") {
-        console.log("zipped actions must contain either package.json or index.js at the root.")
-    } 
-    console.log(e)
-    process.exit(1)
+  actionLoop()
+} catch (e) {
+  if (e.code == "MODULE_NOT_FOUND") {
+    console.log("zipped actions must contain either package.json or index.js at the root.")
+  }
+  console.log(e)
+  process.exit(1)
 }


[openwhisk-runtime-nodejs] 01/02: Update npm openwhisk and CHANGELOGS.

Posted by ra...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rabbah pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openwhisk-runtime-nodejs.git

commit 431855be3ab3f98a28edffe80b8eb203398a1ebc
Author: Rodric Rabbah <ro...@gmail.com>
AuthorDate: Mon May 11 17:45:34 2020 -0400

    Update npm openwhisk and CHANGELOGS.
    
    Co-authored-by: David Grove <dg...@users.noreply.github.com>
---
 core/nodejs10Action/CHANGELOG.md   | 14 ++++++++----
 core/nodejs10Action/package.json   |  2 +-
 core/nodejs12Action/CHANGELOG.md   | 14 ++++++++----
 core/nodejs12Action/package.json   |  2 +-
 core/nodejs14Action/CHANGELOG.md   |  7 ++++++
 core/nodejs14Action/package.json   |  2 +-
 core/nodejs8Action/CHANGELOG.md    | 45 ++++++++++++++++++++++----------------
 core/nodejs8Action/package.json    |  2 +-
 core/typescript37Action/Dockerfile | 18 +++------------
 9 files changed, 60 insertions(+), 46 deletions(-)

diff --git a/core/nodejs10Action/CHANGELOG.md b/core/nodejs10Action/CHANGELOG.md
index 4d3c726..758468c 100644
--- a/core/nodejs10Action/CHANGELOG.md
+++ b/core/nodejs10Action/CHANGELOG.md
@@ -19,20 +19,26 @@
 
 # NodeJS 10 OpenWhisk Runtime Container
 
+## Next release
+Changes:
+  - Update OpenWhisk npm package
+
+Node.js version = [10.20.1](https://nodejs.org/en/blog/release/v10.20.1/)
+OpenWhisk version = [OpenWhisk v3.21.2](https://www.npmjs.com/package/openwhisk)
+
 ## Apache 1.15
 Changes:
   - Update Node.js
-  - Update openwhisk npm package
+  - Update OpenWhisk npm package
   - Support for __OW_ACTION_VERSION (openwhisk/4761)
 
 Node.js version = [10.19.0](https://nodejs.org/en/blog/release/v10.19.0/)
-openwhisk version = [openwhisk v3.21.1](https://www.npmjs.com/package/openwhisk)
+OpenWhisk version = [OpenWhisk v3.21.1](https://www.npmjs.com/package/openwhisk)
 
 ## Apache 1.13
 Changes:
 - Initial version with NodejS10 LTS
 - Node.js version = [10.16.3](https://nodejs.org/en/blog/release/v10.16.3/)
-
-- [openwhisk v3.18.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
+- [OpenWhisk v3.18.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
 
 Node.js version = [10.15.3](https://nodejs.org/en/blog/release/v10.15.3/)
diff --git a/core/nodejs10Action/package.json b/core/nodejs10Action/package.json
index c9cecbe..d502984 100644
--- a/core/nodejs10Action/package.json
+++ b/core/nodejs10Action/package.json
@@ -8,7 +8,7 @@
   },
   "license": "Apache-2.0",
   "dependencies": {
-    "openwhisk": "3.21.1",
+    "openwhisk": "3.21.2",
     "body-parser": "1.18.3",
     "express": "4.16.4",
     "serialize-error": "3.0.0",
diff --git a/core/nodejs12Action/CHANGELOG.md b/core/nodejs12Action/CHANGELOG.md
index 0cf189e..cec59e0 100644
--- a/core/nodejs12Action/CHANGELOG.md
+++ b/core/nodejs12Action/CHANGELOG.md
@@ -19,20 +19,26 @@
 
 # NodeJS 12 OpenWhisk Runtime Container
 
+## Next release
+Changes:
+  - Update OpenWhisk npm package
+
+Node.js version = [12.16.2](https://nodejs.org/en/blog/release/v12.16.2/)
+OpenWhisk version = [OpenWhisk v3.21.2](https://www.npmjs.com/package/openwhisk)
+
 ## Apache 1.15
 Changes:
   - Update Node.js
-  - Update openwhisk npm package
+  - Update OpenWhisk npm package
   - Support for __OW_ACTION_VERSION (openwhisk/4761)
 
 Node.js version = [12.15.0](https://nodejs.org/en/blog/release/v12.15.0/)
-openwhisk version = [openwhisk v3.21.1](https://www.npmjs.com/package/openwhisk)
+OpenWhisk version = [OpenWhisk v3.21.1](https://www.npmjs.com/package/openwhisk)
 
 ## Apache 1.14
 Changes:
 - Adding Nodejs version 12
 - Node.js version = [12.8.1](https://nodejs.org/en/blog/release/v12.8.1/)
-
-- [openwhisk v3.18.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
+- [OpenWhisk v3.18.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
 
 Node.js version = [12.1.0](https://nodejs.org/en/blog/release/v12.1.0/)
diff --git a/core/nodejs12Action/package.json b/core/nodejs12Action/package.json
index 5b68984..1849c3f 100644
--- a/core/nodejs12Action/package.json
+++ b/core/nodejs12Action/package.json
@@ -8,7 +8,7 @@
   },
   "license": "Apache-2.0",
   "dependencies": {
-    "openwhisk": "3.21.1",
+    "openwhisk": "3.21.2",
     "body-parser": "1.18.3",
     "express": "4.16.4",
     "serialize-error": "3.0.0",
diff --git a/core/nodejs14Action/CHANGELOG.md b/core/nodejs14Action/CHANGELOG.md
index 7d2ae4e..7be169d 100644
--- a/core/nodejs14Action/CHANGELOG.md
+++ b/core/nodejs14Action/CHANGELOG.md
@@ -18,3 +18,10 @@
 -->
 
 # NodeJS 14 OpenWhisk Runtime Container
+
+## Next release
+Changes:
+  - Initial release
+
+Node.js version = [14.2.0](https://nodejs.org/en/blog/release/v14.2.0/)
+OpenWhisk version = [OpenWhisk v3.21.2](https://www.npmjs.com/package/openwhisk)
diff --git a/core/nodejs14Action/package.json b/core/nodejs14Action/package.json
index 375859b..b06d6a0 100644
--- a/core/nodejs14Action/package.json
+++ b/core/nodejs14Action/package.json
@@ -8,7 +8,7 @@
   },
   "license": "Apache-2.0",
   "dependencies": {
-    "openwhisk": "3.21.1",
+    "openwhisk": "3.21.2",
     "body-parser": "1.18.3",
     "express": "4.16.4",
     "serialize-error": "3.0.0",
diff --git a/core/nodejs8Action/CHANGELOG.md b/core/nodejs8Action/CHANGELOG.md
index 18a34bf..7b57791 100644
--- a/core/nodejs8Action/CHANGELOG.md
+++ b/core/nodejs8Action/CHANGELOG.md
@@ -19,28 +19,35 @@
 
 # NodeJS 8 OpenWhisk Runtime Container
 
+## Next release
+Changes:
+  - Update OpenWhisk npm package
+
+Node.js version = [8.17.0](https://nodejs.org/en/blog/release/v8.17.0/)
+OpenWhisk version = [OpenWhisk v3.21.2](https://www.npmjs.com/package/openwhisk)
+
 ## Apache 1.15
 Changes:
   - Update Node.js
-  - Update openwhisk npm package
+  - Update OpenWhisk npm package
   - Support for __OW_ACTION_VERSION (openwhisk/4761)
 
 Node.js version = [8.17.0](https://nodejs.org/en/blog/release/v8.17.0/)
-openwhisk version = [openwhisk v3.21.1](https://www.npmjs.com/package/openwhisk)
+OpenWhisk version = [OpenWhisk v3.21.1](https://www.npmjs.com/package/openwhisk)
 
 ## Apache 1.13
 Changes:
 - Update Node.js
-- Update openwhisk npm package
+- Update OpenWhisk npm package
 
-- [openwhisk v3.18.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
+- [OpenWhisk v3.18.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
 
 Node.js version = [8.16.1](https://nodejs.org/en/blog/release/v8.16.1/)
 
 ## 1.9.0 (Apache 1.12)
-Change: Update openwhisk npm package from `3.16.0` to `3.17.0`
+Change: Update OpenWhisk npm package from `3.16.0` to `3.17.0`
 
-- [openwhisk v3.17.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
+- [OpenWhisk v3.17.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
 
 ## 1.8.3
 Change: Update Node.js
@@ -63,9 +70,9 @@ Change: Update runtime to work in concurrent mode
 - Update runtime to work in concurrent mode [#41](https://github.com/apache/openwhisk-runtime-nodejs/pull/41/files)
 
 ## 1.7.0
-Change: Update openwhisk npm package from `3.15.0` to `3.16.0`
+Change: Update OpenWhisk npm package from `3.15.0` to `3.16.0`
 
-- [openwhisk v3.16.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
+- [OpenWhisk v3.16.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
 
 ## 1.6.3
 Changes:
@@ -83,9 +90,9 @@ Change: Update Node.js
 Node.js version = 8.11.2
 
 ## 1.6.0
-Change: Update openwhisk npm package from `3.14.0` to `3.15.0`
+Change: Update OpenWhisk npm package from `3.14.0` to `3.15.0`
 
-- [openwhisk v3.15.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
+- [OpenWhisk v3.15.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
 
 ## 1.5.1
 Change: Update Node.js
@@ -98,32 +105,32 @@ Change: Update Node.js
 Node.js version = 8.11.0
 
 ## 1.4.0
-Change: Update nodejs and openwhisk npm package
+Change: Update nodejs and OpenWhisk npm package
 
 Node version = 8.10.0
 
-- [openwhisk v3.14.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
+- [OpenWhisk v3.14.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
 
 ## 1.3.0
-Change: Update npm openwhisk package
+Change: Update npm OpenWhisk package
 
-- [openwhisk v3.13.1](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
+- [OpenWhisk v3.13.1](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
 
 ## 1.2.0
-Change: Update npm openwhisk package
+Change: Update npm OpenWhisk package
 
-- [openwhisk v3.12.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
+- [OpenWhisk v3.12.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
 
 ## 1.1.0
-Change: Update nodejs and openwhisk npm package
+Change: Update nodejs and OpenWhisk npm package
 
 Node version = 8.9.3
 
-- [openwhisk v3.11.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
+- [OpenWhisk v3.11.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
 
 ## 1.0.0
 Change: Initial release
 
 Node version = 8.9.1
 
-- [openwhisk v3.10.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
+- [OpenWhisk v3.10.0](https://www.npmjs.com/package/openwhisk) - JavaScript client library for the OpenWhisk platform. Provides a wrapper around the OpenWhisk APIs.
diff --git a/core/nodejs8Action/package.json b/core/nodejs8Action/package.json
index 669dd55..bfe1419 100644
--- a/core/nodejs8Action/package.json
+++ b/core/nodejs8Action/package.json
@@ -8,7 +8,7 @@
   },
   "license": "Apache-2.0",
   "dependencies": {
-    "openwhisk": "3.21.1",
+    "openwhisk": "3.21.2",
     "body-parser": "1.18.2",
     "express": "4.16.2",
     "serialize-error": "3.0.0",
diff --git a/core/typescript37Action/Dockerfile b/core/typescript37Action/Dockerfile
index e7135b2..0852224 100644
--- a/core/typescript37Action/Dockerfile
+++ b/core/typescript37Action/Dockerfile
@@ -24,29 +24,17 @@ RUN apt-get update && apt-get install -y \
     imagemagick \
     graphicsmagick \
     unzip \
-    wget \
     && rm -rf /var/lib/apt/lists/* &&\
     mkdir -p /app/action
 RUN cd /app ;\
   npm install -g yarn ;\
   npm install -g typescript@${TYPESCRIPT_VERSION} ;\
-  echo '{"private":true}' >package.json ;\
+  echo '{"private":true}' > package.json ;\
   npm install --save --no-package-lock --production \
-  axios@0.19.0 \
-  async@2.6.1 \
-  aws-sdk@2.401.0 \
-  bluebird@3.5.3 \
-  body-parser@1.18.3 \
-  btoa@1.2.1 \
-  gm@1.23.1 \
-  @google-cloud/datastore@4.4.1 \
-  @google-cloud/storage@4.0.1 \
-  nano@8.0.0 \
+  @types/node@13.13.5 \
+  openwhisk@3.21.2 \
   redis@2.8.0 \
-  tmp@0.0.31 \
-  twilio@3.28.0 \
   uuid@3.0.0 \
-  openwhisk@3.18.0 \
   && npm cache clean --force
 WORKDIR /app
 EXPOSE 8080