Hello,
I developed a new openwhisk runtime with native support for typescript as part
of my work at Nimbella and I intend to donate this code the Apache Openwhisk
project. The new runtime works for node/javascript as well. Since typescript is
compiled, I reused the compilation support from the "action loop" proxy. This
runtime is intended as a new action kind, which can support both node and
typescript.
This email is to solicit feedback for the next 48 hrs on the question of new
repo vs reuse the existing repo for node.js. I will decide based on community
feedback and follow up with the next steps.
Features of the new runtime:
- supports precompilation, meaning you use the runtime as a compiler to
"precompile" the sources. Compilation here means translating typescript to
javascript, resolve the package.json downloading all the node_modules and
producing a zip that includes everything ready to run.
You do this with a command like:
docker run openwhisk/action-typescript-v3.7 <src.zip >bin.zip
then you can create the action using bin.zip.
- supports on the fly compilation, so that an action made up of typescript
sources will also work.
- supports debugging, but in a different way than adobe/wskdebug. If you set an
environment variable __OW_DEBUG_PORT it will start the runtime listening on a
port for a debugger to attach.
- an action must always "export" the main function. So in typescript you need
to do: `export function main(args) { .. }' and in javascript `export.main =
function args(...)`. I did manage to make sure a single file with 'function
main(args)' works but it does not work when there are multiple files zipped. I
think the current apache openwhisk nodejs runtime uses eval, I use a `require`
to import action code.
Since this is a new language runtime (typescript) and also differs in the
node.js support from the existing apache openwhisk nodejs runtime, I am
proposing a new apache repo to host this code. It's possible to include the new
sources in the existing node.js runtime repo to avoid adding yet another
repository, but may be confusing since the code base is very different.
--
Michele Sciabarra
[email protected]