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

koa-serverless

Package Overview
Dependencies
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

koa-serverless - npm Package Compare versions

Comparing version 0.0.7 to 0.1.0

61

dist/index.js

@@ -7,2 +7,3 @@ 'use strict';

var dotenv = require('dotenv');
var koa = _interopDefault(require('koa'));

@@ -17,6 +18,5 @@ var responseTime = _interopDefault(require('koa-response-time'));

var qs = _interopDefault(require('koa-qs'));
var uuidv4 = _interopDefault(require('uuid/v4'));
var defaultLogMiddleware = _interopDefault(require('koa-roarr'));
var isLambda = _interopDefault(require('is-lambda'));
var whatwgUrl = require('whatwg-url');
var awsServerless = _interopDefault(require('aws-serverless-express'));
var defaultServerless = _interopDefault(require('serverless-http'));

@@ -34,33 +34,2 @@ var defaultErrorHandler = (err, ctx) => {

const logger = ({ log: log$$1 }) => async (ctx, next) => {
const { request, response } = ctx;
const requestId = ctx.request.headers["x-request-id"] || `s-${uuidv4()}`;
ctx.log = log$$1.child({ requestId });
await next();
ctx.log.info({ request, response }, "request complete");
};
var lambdaWorkaroundMiddleware = (ctx, next) => {
ctx.lambdaEvent = ctx.headers["x-apigateway-event"] && JSON.parse(decodeURIComponent(ctx.headers["x-apigateway-event"])) || {};
ctx.lambdaContext = ctx.headers["x-apigateway-context"] && JSON.parse(decodeURIComponent(ctx.headers["x-apigateway-context"])) || {};
ctx.env = ctx.lambdaEvent && ctx.lambdaEvent.stageVariables || process.env;
// Workaround an inconsistency in APIG. For custom domains, it puts the
// mapping prefix on the url, but non-custom domain requests do not. Fix it by
// changing the path to the proxy param which has the correct value always.
if (ctx.lambdaEvent.pathParameters && ctx.lambdaEvent.pathParameters.proxy) {
const dummyBase = "zz://zz";
const url = new whatwgUrl.URL(ctx.url, dummyBase);
url.pathname = "/" + ctx.lambdaEvent.pathParameters.proxy;
ctx.url = url.href.replace(dummyBase, "");
}
return next();
};
function LambdaHandler({ app }) {
app.proxy = true;
const server = awsServerless.createServer(app.callback());
return (event, context) => awsServerless.proxy(server, event, context);
}
function ServerApp(options, listenCallback) {

@@ -80,5 +49,8 @@ const { app, port, logger } = options;

dotenv.config();
function KoaServerlessApp({
serverless = defaultServerless,
port = process.env.PORT || 1234,
logger: logger$$1 = log.child({ isLambda }),
logger = log.child({ isLambda }),
sessionKeys = [process.env.SESSION_KEY],

@@ -94,3 +66,3 @@ cookieName = "session",

}),
loggerMiddleware = logger({ log }),
loggerMiddleware = defaultLogMiddleware({ log }),
timerMiddleware = responseTime(),

@@ -102,3 +74,3 @@ errorHandler = defaultErrorHandler,

let options = {
logger: logger$$1,
logger,
cookieName,

@@ -120,4 +92,6 @@ cookieMaxAge,

let app = new koa();
const { info, trace } = logger$$1;
const { info, trace } = logger;
app.port = port;
// Enable support for nested querystrings.

@@ -136,7 +110,2 @@ qs(app);

// handle requests from lambda
if (isLambda) {
app.use(lambdaWorkaroundMiddleware);
}
// logger

@@ -169,8 +138,8 @@ app.use(loggerMiddleware);

trace("start lambda");
return LambdaHandler({ app });
return serverless(app);
};
app.serve = (err, cb) => {
app.serve = cb => {
trace(options, "start server");
return ServerApp({ app, port, logger: logger$$1 });
return ServerApp({ app, port, logger });
};

@@ -177,0 +146,0 @@

"use strict";
import { config } from "dotenv";
config();
import koa from "koa";

@@ -13,9 +16,9 @@ import responseTime from "koa-response-time";

import defaultErrorHandler from "./error";
import defaultLogMiddleware from "./logger";
import defaultLogMiddleware from "koa-roarr";
import isLambda from "is-lambda";
import lambdaWorkaroundMiddleware from "./lambdaWorkaround";
import LambdaHandler from "./lambda";
import defaultServerless from "serverless-http";
import ServerApp from "./server";
function KoaServerlessApp({
serverless = defaultServerless,
port = process.env.PORT || 1234,

@@ -59,2 +62,4 @@ logger = log.child({ isLambda }),

app.port = port;
// Enable support for nested querystrings.

@@ -73,7 +78,2 @@ qs(app);

// handle requests from lambda
if (isLambda) {
app.use(lambdaWorkaroundMiddleware);
}
// logger

@@ -113,6 +113,6 @@ app.use(loggerMiddleware);

trace("start lambda");
return LambdaHandler({ app });
return serverless(app);
};
app.serve = (err, cb) => {
app.serve = cb => {
trace(options, "start server");

@@ -119,0 +119,0 @@ return ServerApp({ app, port, logger });

{
"name": "koa-serverless",
"version": "0.0.7",
"version": "0.1.0",
"description": "",
"main": "dist/index.js",
"engines" : { "node" : ">=7.6.0" },
"engines": {
"node": ">=7.6.0"
},
"scripts": {

@@ -32,4 +34,6 @@ "build": "rollup -c | babel > dist/index.js",

"koa-response-time": "^2.0.0",
"koa-roarr": "^0.0.5",
"koa-session": "^5.9.0",
"roarr": "^2.11.0",
"serverless-http": "^1.6.0",
"uuid": "^3.3.2",

@@ -36,0 +40,0 @@ "whatwg-url": "^7.0.0"

# koa-serverless
A koajs distribution that focuses on:
A koajs bundle including:
- serverless deployment (AWS Gateway + Lambda)
- standard nodejs deployment
- default nested querystring support
- default session middleware (koa-session)
- default log middleware
- default security header middleware (koa-helmet)
- default cors middleware (kcors)
- default body parser middlware (koa-bodyparser)
- Serverless Support ([serverless-http](https://github.com/dougmoscrop/serverless-http))
- load .env file ([dotenv](https://github.com/motdotla/dotenv))
- nested querystring support ([qs](https://github.com/ljharb/qs))
- session management ([koa-session](https://github.com/koajs/session))
- logging ([koa-roarr](https://github.com/jcfisher007/koa-roarr))
- security headers ([koa-helmet](https://github.com/venables/koa-helmet))
- cors ([kcors](https://github.com/koajs/cors))
- body parser ([koa-bodyparser](https://github.com/koajs/bodyparser))
Make koajs applications with minimal boilerplate.
## Install
```sh
npm install koa-serverless esm
npm install koa-serverless
```
## Usage
## Example
Runs only with esm enabled.
### index.js
```js
// drop in replacement for `koa`.
var App = require("koa-serverless");
var app = new App();
var app = new App();This will give you the basic mechanisms to

@@ -31,0 +29,0 @@ // add your own middleware

@@ -6,2 +6,3 @@ // rollup.config.js

external: [
"dotenv",
"koa",

@@ -13,10 +14,11 @@ "koa-error",

"koa-bodyparser",
"koa-roarr",
"kcors",
"koa-qs",
"is-lambda",
"roarr",
"koa-qs",
"serverless-http",
"uuid/v4",
"whatwg-url",
"aws-serverless-express"
"whatwg-url"
]
};

Sorry, the diff of this file is not supported yet

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