|
1 | 1 | <p align="center"> |
2 | | - <img height="150" src="https://avatars0.githubusercontent.com/u/36457275?s=400&u=16d355f384ed7f8e0655b7ed1d70ff2e411690d8&v=4e"> |
3 | | - <img height="150" src="https://user-images.githubusercontent.com/2955468/44874383-0168f780-ac69-11e8-8e51-774678cbd966.png"> |
| 2 | + <img height="140" src="https://avatars0.githubusercontent.com/u/36457275?s=400&u=16d355f384ed7f8e0655b7ed1d70ff2e411690d8&v=4e"> |
| 3 | + <img height="140" src="https://user-images.githubusercontent.com/2955468/44874383-0168f780-ac69-11e8-8e51-774678cbd966.png"> |
4 | 4 | </p> |
5 | 5 |
|
6 | | -[![version]][version-url] [![downloads]][downloads-url] [![coverage]][coverage-url] [![size]][size-url] [![license]][license-url] |
| 6 | +<p align="center"> |
| 7 | + <a href="https://npmjs.com/package/@manwaring/lambda-wrapper"> |
| 8 | + <img src="https://flat.badgen.net/npm/v/@manwaring/lambda-wrapper?icon=npm&label=npm@latest"></a> |
| 9 | + <a href="https://www.npmjs.com/package/@manwaring/lambda-wrapper"> |
| 10 | + <img src="https://flat.badgen.net/npm/dt/@manwaring/lambda-wrapper?icon=npm"></a> |
| 11 | + <a href="https://codecov.io/gh/manwaring/lambda-wrapper"> |
| 12 | + <img src="https://flat.badgen.net/codecov/c/github/manwaring/lambda-wrapper/?icon=codecov"></a> |
| 13 | + <a href="https://packagephobia.now.sh/result?p=@manwaring/lambda-wrapper"> |
| 14 | + <img src="https://flat.badgen.net/packagephobia/install/@manwaring/lambda-wrapper"></a> |
| 15 | + <a href="https://www.npmjs.com/package/@manwaring/lambda-wrapper"> |
| 16 | + <img src="https://flat.badgen.net/npm/license/@manwaring/lambda-wrapper"></a> |
| 17 | +</p> |
7 | 18 |
|
8 | | -[![build]][build-url] [![dependabot]][dependabot-url] [![dependency]][dependency-url] [![dev-dependency]][dev-dependency-url] |
| 19 | +<p align="center"> |
| 20 | + <a href="https://circleci.com/gh/manwaring/lambda-wrapper"> |
| 21 | + <img src="https://flat.badgen.net/circleci/github/manwaring/lambda-wrapper/master?icon=circleci"></a> |
| 22 | + <a href="https://flat.badgen.net/dependabot/manwaring/lambda-wrapper"> |
| 23 | + <img src="https://flat.badgen.net/dependabot/manwaring/lambda-wrapper/?icon=dependabot&label=dependabot"></a> |
| 24 | + <a href="https://david-dm.org/manwaring/lambda-wrapper"> |
| 25 | + <img src="https://flat.badgen.net/david/dep/manwaring/lambda-wrapper"></a> |
| 26 | + <a href="https://david-dm.org/manwaring/lambda-wrapper?type=dev"> |
| 27 | + <img src="https://flat.badgen.net/david/dev/manwaring/lambda-wrapper/?label=dev+dependencies"></a> |
| 28 | +</p> |
9 | 29 |
|
10 | 30 | # AWS Lambda wrapper library |
11 | 31 |
|
@@ -81,19 +101,20 @@ export const handler = api(async ({ body, path, success, error }) => { |
81 | 101 | ### Properties and methods available on wrapper signature |
82 | 102 |
|
83 | 103 | ```ts |
84 | | -interface ApiSignature { |
| 104 | +export interface ApiSignature { |
85 | 105 | event: APIGatewayEvent; // original event |
86 | | - body: any; // JSON or form parsed body payload if exists (based on content-type headers), otherwise the raw body object |
87 | | - path: { [name: string]: string }; // path param payload as key-value pairs |
88 | | - query: { [name: string]: string }; // query param payload as key-value pairs |
89 | | - headers: { [name: string]: string }; // headers param payload as key-value pairs |
90 | | - testRequest: boolean; // indicates if this is a test request, based on presence of headers matching 'Test-Request' or process.env.TEST_REQUEST_HEADER |
91 | | - auth: any; // auth context from custom authorizer |
92 | | - success(payload?: any, replacer?: (this: any, key: string, value: any) => any): ApiResponse; // returns 200 status with payload |
93 | | - invalid(errors?: string[]): ApiResponse; // returns 400 status with errors |
94 | | - notFound(message?: string): ApiResponse; // returns 404 status with message |
95 | | - redirect(url: string): ApiResponse; // returns 302 redirect with new url |
96 | | - error(error?: any): ApiResponse; // returns 500 status with error |
| 106 | + body: any; // JSON parsed body payload if exists (otherwise null) |
| 107 | + path: { [name: string]: string }; // path param payload as key-value pairs if exists (otherwise null) |
| 108 | + query: { [name: string]: string }; // query param payload as key-value pairs if exists (otherwise null) |
| 109 | + headers: { [name: string]: string }; // header payload as key-value pairs if exists (otherwise null) |
| 110 | + testRequest: boolean; // indicates if this is a test request - looks for a header matching process.env.TEST_REQUEST_HEADER (dynamic from application) or 'Test-Request' (default) |
| 111 | + auth: any; // auth context from custom authorizer if exists (otherwise null) |
| 112 | + success(payload?: any, replacer?: (this: any, key: string, value: any) => any): ApiResponse; // returns 200 status code with optional payload as body |
| 113 | + invalid(errors?: string[]): ApiResponse; // returns 400 status code with optional errors as body |
| 114 | + notFound(message?: string): ApiResponse; // returns 404 status code with optional message as body |
| 115 | + notAuthorized(message?: string): ApiResponse; // returns 403 status code with optional message as body |
| 116 | + redirect(url: string): ApiResponse; // returns 302 status code (redirect) with new url |
| 117 | + error(error?: any): ApiResponse; // returns 500 status code with optional error as body |
97 | 118 | } |
98 | 119 |
|
99 | 120 | interface ApiResponse { |
@@ -276,32 +297,6 @@ interface WrapperSignature { |
276 | 297 |
|
277 | 298 | # Example projects |
278 | 299 |
|
279 | | -THere is one [working example](examples) of how this package can be used in a simple 'hello world' serverless application: |
| 300 | +There is one [working example](examples) of how this package can be used in a simple 'hello world' serverless application: |
280 | 301 |
|
281 | 302 | 1. [Using the Serverless Framework and TypeScript](examples/ts) |
282 | | - |
283 | | -<!-- Badge icons --> |
284 | | - |
285 | | -[version]: https://flat.badgen.net/npm/v/@manwaring/lambda-wrapper?icon=npm&label=npm@latest |
286 | | -[downloads]: https://flat.badgen.net/npm/dt/@manwaring/lambda-wrapper?icon=npm |
287 | | -[coverage]: https://flat.badgen.net/codecov/c/github/manwaring/lambda-wrapper/?icon=codecov |
288 | | -[size]: https://flat.badgen.net/packagephobia/install/@manwaring/lambda-wrapper |
289 | | -[license]: https://flat.badgen.net/npm/license/@manwaring/lambda-wrapper/ |
290 | | -[language]: https://flat.badgen.net/badge/typescript/typescript/?icon&label |
291 | | -[style]: https://flat.badgen.net/badge/code%20style/prettier?color=purple&icon=terminal&label |
292 | | -[build]: https://flat.badgen.net/circleci/github/manwaring/lambda-wrapper/master?icon=circleci |
293 | | -[dependabot]: https://flat.badgen.net/dependabot/manwaring/lambda-wrapper/?icon=dependabot&label=dependabot |
294 | | -[dependency]: https://flat.badgen.net/david/dep/manwaring/lambda-wrapper |
295 | | -[dev-dependency]: https://flat.badgen.net/david/dev/manwaring/lambda-wrapper/?label=dev+dependencies |
296 | | - |
297 | | -<!-- Badge URLs --> |
298 | | - |
299 | | -[version-url]: https://npmjs.com/package/@manwaring/lambda-wrapper |
300 | | -[downloads-url]: https://www.npmjs.com/package/@manwaring/lambda-wrapper |
301 | | -[coverage-url]: https://codecov.io/gh/manwaring/lambda-wrapper |
302 | | -[size-url]: https://packagephobia.now.sh/result?p=@manwaring/lambda-wrapper |
303 | | -[license-url]: https://www.npmjs.com/package/@manwaring/lambda-wrapper |
304 | | -[build-url]: https://circleci.com/gh/manwaring/lambda-wrapper |
305 | | -[dependabot-url]: https://flat.badgen.net/dependabot/manwaring/lambda-wrapper |
306 | | -[dependency-url]: https://david-dm.org/manwaring/lambda-wrapper |
307 | | -[dev-dependency-url]: https://david-dm.org/manwaring/lambda-wrapper?type=dev |
0 commit comments