Sha256: 75a5cec4e67842fb678c52ae3820fba7739f205ee298517d62207f6e92aa05f6

Contents?: true

Size: 1.21 KB

Versions: 15

Compression:

Stored size: 1.21 KB

Contents

class Jets::Poly
  class NodeExecutor < BaseExecutor
    # Code for wrapper script that mimics lambda execution. Wrapper script usage:
    #
    #   node WRAPPER_SCRIPT EVENT
    #
    # Example:
    #
    #   node /tmp/jets/demo/executor/20180804-12816-imqb9/lambda_executor.js '{}'
    #
    def code
      if async_syntax?
        async_code
      else
        callback_code
      end
    end

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

    def async_code
      <<-EOL
var event = process.argv[2]
event = JSON.parse(event)
var context = {}

var app = require("./#{@definition.meth}.js")
app.#{handler}(event, context).then(resp => console.log(JSON.stringify(resp)))
EOL
    end


    def callback_code
      <<-EOL
function callback(error, response) {
  var text = JSON.stringify(response)
  console.log(text)
}

var event = process.argv[2]
event = JSON.parse(event)
var context = {}

var app = require("./#{@definition.meth}.js")
var resp = app.#{handler}(event, context, callback)
EOL
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
jets-5.0.13 lib/jets/poly/node_executor.rb
jets-5.0.12 lib/jets/poly/node_executor.rb
jets-5.0.11 lib/jets/poly/node_executor.rb
jets-5.0.10 lib/jets/poly/node_executor.rb
jets-5.0.9 lib/jets/poly/node_executor.rb
jets-5.0.8 lib/jets/poly/node_executor.rb
jets-5.0.7 lib/jets/poly/node_executor.rb
jets-5.0.6 lib/jets/poly/node_executor.rb
jets-5.0.5 lib/jets/poly/node_executor.rb
jets-5.0.4 lib/jets/poly/node_executor.rb
jets-5.0.3 lib/jets/poly/node_executor.rb
jets-5.0.2 lib/jets/poly/node_executor.rb
jets-5.0.1 lib/jets/poly/node_executor.rb
jets-5.0.0 lib/jets/poly/node_executor.rb
jets-5.0.0.beta1 lib/jets/poly/node_executor.rb