New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

aws-lambda-create-request-response

Package Overview
Dependencies
Maintainers
1
Versions
51
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

aws-lambda-create-request-response - npm Package Compare versions

Comparing version 0.1.47 to 0.2.0

4

package.json

@@ -16,3 +16,3 @@ {

],
"version": "0.1.47",
"version": "0.2.0",
"main": "src/index.js",

@@ -25,3 +25,3 @@ "repository": {

"devDependencies": {
"tap": "14.10.6"
"tap": "14.10.8"
},

@@ -28,0 +28,0 @@ "files": [

@@ -8,3 +8,2 @@ # aws-lambda-create-request-response

[![downloads](https://img.shields.io/npm/dm/aws-lambda-create-request-response.svg)](https://npmjs.org/package/aws-lambda-create-request-response)
[![Greenkeeper badge](https://badges.greenkeeper.io/JamesKyburz/aws-lambda-http-server.svg)](https://greenkeeper.io/)

@@ -11,0 +10,0 @@ # usage

@@ -7,22 +7,38 @@ 'use strict'

module.exports = (event, callback) => {
const base64Support = process.env.BINARY_SUPPORT === 'yes'
const { version } = event
if (version !== '1.0' && version !== '2.0') {
return callback(
new Error(`unsupported version ${version} ${JSON.stringify(event)}`)
)
}
const isBase64Encoded = process.env.BINARY_SUPPORT === 'yes'
const response = {
body: Buffer.from(''),
isBase64Encoded: base64Support,
isBase64Encoded,
statusCode: 200,
multiValueHeaders: {}
...(version === '1.0' && { multiValueHeaders: {} }),
...(version === '2.0' && { headers: {} })
}
const req = new Stream.Readable()
req.url = (event.requestContext.path || event.path || '').replace(
new RegExp('^/' + event.requestContext.stage),
req.url = (
event.requestContext.path ||
event.path ||
event.rawPath ||
''
)
).replace(new RegExp('^/' + event.requestContext.stage), '')
req.finished = true
if (event.multiValueQueryStringParameters) {
req.url +=
'?' + queryString.stringify(event.multiValueQueryStringParameters)
if (version === '1.0') {
if (event.multiValueQueryStringParameters) {
req.url +=
'?' + queryString.stringify(event.multiValueQueryStringParameters)
}
} else {
if (event.rawQueryString) {
req.url += '?' + event.rawQueryString
}
}
req.method = event.httpMethod

@@ -32,6 +48,8 @@ req.rawHeaders = []

const headers = event.multiValueHeaders || {}
const headers = event.multiValueHeaders || event.headers || {}
for (const key of Object.keys(headers)) {
for (const value of headers[key]) {
const headerValues =
version === '1.0' ? headers[key] : headers[key].split(',')
for (const value of headerValues) {
req.rawHeaders.push(key)

@@ -43,2 +61,12 @@ req.rawHeaders.push(value)

if (version === '2.0') {
if (event.cookies && event.cookies.length) {
for (const value of event.cookies) {
req.rawHeaders.push('cookie')
req.rawHeaders.push(value)
}
req.headers.cookie = event.cookies.join('; ')
}
}
req.getHeader = name => {

@@ -69,6 +97,10 @@ return req.headers[name.toLowerCase()]

res.headers = {}
res.writeHead = (status, headers) => {
res.writeHead = (status, headers = {}) => {
headersSent = true
response.statusCode = status
res.headers = Object.assign(res.headers, headers)
const lowerCaseHeaders = {}
for (const key of Object.keys(headers)) {
lowerCaseHeaders[key.toLowerCase()] = headers[key]
}
res.headers = Object.assign(res.headers, lowerCaseHeaders)
}

@@ -100,7 +132,11 @@ res.write = chunk => {

response.body = Buffer.from(response.body).toString(
base64Support ? 'base64' : undefined
isBase64Encoded ? 'base64' : undefined
)
response.multiValueHeaders = res.headers
if (version === '1.0') {
response.multiValueHeaders = res.headers
} else {
response.headers = res.headers
}
res.writeHead(response.statusCode)
fixApiGatewayMultipleHeaders()
fixApiGatewayHeaders()
callback(null, response)

@@ -113,11 +149,23 @@ }

function fixApiGatewayMultipleHeaders () {
for (const key of Object.keys(response.multiValueHeaders)) {
if (!Array.isArray(response.multiValueHeaders[key])) {
response.multiValueHeaders[key] = [response.multiValueHeaders[key]]
function fixApiGatewayHeaders () {
if (version === '1.0') {
for (const key of Object.keys(response.multiValueHeaders)) {
if (!Array.isArray(response.multiValueHeaders[key])) {
response.multiValueHeaders[key] = [response.multiValueHeaders[key]]
}
}
} else {
const cookies = response.headers['set-cookie']
if (cookies) {
response.cookies = Array.isArray(cookies) ? cookies : [cookies]
delete response.headers['set-cookie']
}
for (const key of Object.keys(response.headers)) {
if (Array.isArray(response.headers[key])) {
response.headers[key] = response.headers[key].join(',')
}
}
}
}
return { req, res }
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc