class Jets::PolyFun::NodeExecutor

def async_code

def async_code
  <<-EOL
event = process.argv[2]
t = JSON.parse(event)
context = {}
app = require("./#{@task.meth}.js")
#{handler}(event, context).then(resp => console.log(JSON.stringify(resp)))
end

def async_syntax?

https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-handler.html
def async_syntax?
  app_path = "#{Jets.root}/" + @task.handler_path.sub('handlers/', 'app/')
  source_code = IO.read(app_path)
  source_code.match(/=\s*async.*\(/)
end

def callback_code

def callback_code
  <<-EOL
tion callback(error, response) {
r text = JSON.stringify(response)
nsole.log(text)
event = process.argv[2]
t = JSON.parse(event)
context = {}
app = require("./#{@task.meth}.js")
resp = app.#{handler}(event, context, callback)
end

def code


node /tmp/jets/demo/executor/20180804-12816-imqb9/lambda_executor.js '{}'

Example:

node WRAPPER_SCRIPT EVENT

Code for wrapper script that mimics lambda execution. Wrapper script usage:
def code
  if async_syntax?
    async_code
  else
    callback_code
  end
end