serverless-plugin-sandwich v0.0.6

Installation
npm install -D serverless-plugin-sandwichor
yarn add -D serverless-plugin-sandwichUsage
Plugin Dependency
In your projects serverless file, add serverless-plugin-sandwich to the list of your plugins:
plugins:
- serverless-plugin-sandwichCustom Declaration
inline
The function will be called inline, and not be tied to the original handler code. However, proper error handling needs to be taken into consideratioin.
functions:
handler: src/original.default
sandwich:
before:
handler: src/runFirst.default
inline: trueShorthand notation defaults to inline, and is declared the following way.
functions:
handler: src/original.default
sandwich:
before: src/runFirst.default
after: src/runAfter.defaultpipe
The previous function pipes its output to the next function. Note, only one argument can be piped from function to function.
functions:
handler: src/original.default
sandwich:
before:
handler: src/extractData.default
pipe: truewrap
Higher-order-functions, that curry another function, can be useful for validating and extracting Authorization tokens. It could also be used for logging, or other boilerplate code that needs to be done before a lambda is called.
functions:
handler: src/original.default
sandwich:
before:
handler: src/extractData.default
wrap: trueCode Generation
Sandwich dynamically changes the handler src path, and generates code for you. This definition:
functions:
protected:
handler: lambdas/wrapped/handler.default
timeout: 30
sandwich:
before:
handler: lambdas/wrapped/authenticate.default
wrap: true
after:
handler: lambdas/wrapped/apiResponse.default
pipe: trueGenerates this code:
const before = require('../lambdas/wrapped/authenticate').default;
const handler = require('../lambdas/wrapped/handler').default;
const after = require('../lambdas/wrapped/apiResponse').default;
module.exports.default = async (event, context) => {
const response = await after(await before(handler)(event, context));
return response;
};Commands
sandwich order
Running the order command will fulfill your serverless lambda generation and output it to a sandwich directory:
$ npx serverless sandwich orderPlugin Interoperability
As a result of code being generated dynamically, the serverless-plugin-sandwich needs to be declared before transpiler or build plugins.
Get Involved
Looking to add support for Python or other runtimes, if you would like to get involved open an issues.
Serverless V1.35.+