Skip to content

Commit d47be8a

Browse files
authored
Merge pull request #90 from silvermine/lambda-types-upgrade
build: bump @types/aws-lambda
2 parents 42c404d + 64e527b commit d47be8a

File tree

5 files changed

+29
-27
lines changed

5 files changed

+29
-27
lines changed

package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"@silvermine/eslint-config": "3.2.0",
3333
"@silvermine/standardization": "2.0.0",
3434
"@silvermine/typescript-config": "1.0.0",
35-
"@types/aws-lambda": "8.10.17",
35+
"@types/aws-lambda": "8.10.140",
3636
"@types/chai": "4.1.7",
3737
"@types/cookie": "0.3.2",
3838
"@types/mocha": "5.2.5",

src/Request.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import qs from 'qs';
44
import cookie from 'cookie';
55
import Application from './Application';
66
import { RequestEvent, HandlerContext, RequestEventRequestContext, LambdaEventSourceType } from './request-response-types';
7-
import { StringMap, KeyValueStringObject, StringArrayOfStringsMap, StringUnknownMap } from '@silvermine/toolbox';
7+
import { StringMap, KeyValueStringObject, StringArrayOfStringsMap, StringUnknownMap, isUndefined } from '@silvermine/toolbox';
88
import ConsoleLogger from './logging/ConsoleLogger';
99

1010
function safeDecode(s: string): string {
@@ -479,6 +479,10 @@ export default class Request {
479479
const headers = evt.multiValueHeaders || _.mapObject(evt.headers, (v) => { return [ v ]; });
480480

481481
return _.reduce(headers, (memo: StringArrayOfStringsMap, v, k) => {
482+
if (isUndefined(v)) {
483+
return memo;
484+
}
485+
482486
const key = k.toLowerCase();
483487

484488
memo[key] = v;
@@ -554,7 +558,7 @@ export default class Request {
554558
}
555559
}
556560

557-
private _parseQuery(multiValQuery: StringArrayOfStringsMap, query: StringMap): { raw: string; parsed: KeyValueStringObject } {
561+
private _parseQuery(multiValQuery: Partial<StringArrayOfStringsMap>, query: Partial<StringMap>): { raw: string; parsed: KeyValueStringObject } {
558562
let queryString;
559563

560564
// It may seem strange to encode the URI components immediately after decoding them.
@@ -566,11 +570,15 @@ export default class Request {
566570
// values that were not correct.
567571
if (_.isEmpty(multiValQuery)) {
568572
queryString = _.reduce(query, (memo, v, k) => {
573+
if (isUndefined(v)) {
574+
return memo;
575+
}
576+
569577
return memo + `&${k}=${encodeURIComponent(safeDecode(v))}`;
570578
}, '');
571579
} else {
572580
queryString = _.reduce(multiValQuery, (memo, vals, k) => {
573-
_.each(vals, (v) => {
581+
_.each(vals || [], (v) => {
574582
memo += `&${k}=${encodeURIComponent(safeDecode(v))}`;
575583
});
576584
return memo;

src/request-response-types.ts

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ import {
55
APIGatewayProxyEvent,
66
Context,
77
APIGatewayProxyResult,
8+
ALBEvent,
9+
ALBEventRequestContext,
810
} from 'aws-lambda';
9-
import { StringMap, StringArrayOfStringsMap } from '@silvermine/toolbox';
11+
import { StringArrayOfStringsMap } from '@silvermine/toolbox';
1012

1113
/* COMBO TYPES */
1214

@@ -54,25 +56,14 @@ export interface APIGatewayRequestEvent extends APIGatewayProxyEvent {}
5456
export interface APIGatewayEventRequestContext extends OrigAPIGatewayEventRequestContext {}
5557

5658

57-
/* APPLICATION LOAD BALANCER TYPES (these are not yet included in aws-lambda) */
59+
/* APPLICATION LOAD BALANCER TYPES (we export these with our own names to make it easier
60+
to modify them if needed at a later time) */
5861

59-
export interface ApplicationLoadBalancerRequestEvent {
60-
body: string | null;
61-
httpMethod: string;
62-
isBase64Encoded: boolean;
63-
path: string;
64-
headers?: StringMap;
65-
multiValueHeaders?: StringArrayOfStringsMap;
66-
queryStringParameters?: StringMap;
67-
multiValueQueryStringParameters?: StringArrayOfStringsMap;
68-
requestContext: ApplicationLoadBalancerEventRequestContext;
69-
}
62+
// eslint-disable-next-line @typescript-eslint/no-empty-interface
63+
export interface ApplicationLoadBalancerRequestEvent extends ALBEvent {}
7064

71-
export interface ApplicationLoadBalancerEventRequestContext {
72-
elb: {
73-
targetGroupArn: string;
74-
};
75-
}
65+
// eslint-disable-next-line @typescript-eslint/no-empty-interface
66+
export interface ApplicationLoadBalancerEventRequestContext extends ALBEventRequestContext {}
7667

7768

7869
/* OTHER TYPES RELATED TO REQUESTS AND RESPONSES */

tests/samples.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export const handlerContext = (fillAllFields: boolean = false): Context => {
1414
logGroupName: '/aws/lambda/echo-api-prd-echo',
1515
logStreamName: '2019/01/31/[$LATEST]bb001267fb004ffa8e1710bba30b4ae7',
1616
functionName: 'echo-api-prd-echo',
17-
memoryLimitInMB: 1024,
17+
memoryLimitInMB: '1024',
1818
functionVersion: '$LATEST',
1919
awsRequestId: 'ed6cac60-bb31-4c1f-840d-dd34c80eb9a3',
2020
invokedFunctionArn: 'arn:aws:lambda:us-east-1:123456789012:function:echo-api-prd-echo',
@@ -63,16 +63,19 @@ export const apiGatewayRequestContext = (): APIGatewayEventRequestContext => {
6363
apiKey: null,
6464
apiKeyId: null,
6565
caller: null,
66+
clientCert: null,
6667
cognitoAuthenticationProvider: null,
6768
cognitoAuthenticationType: null,
6869
cognitoIdentityId: null,
6970
cognitoIdentityPoolId: null,
71+
principalOrgId: null,
7072
sourceIp: '12.12.12.12',
7173
user: null,
7274
userAgent: 'curl/7.54.0',
7375
userArn: null,
7476
},
7577
path: '/prd',
78+
protocol: 'HTTP/1.1',
7679
stage: 'prd',
7780
requestId: 'a507736b-259e-11e9-8fcf-4f1f08c4591e',
7881
requestTimeEpoch: 1548969891530,

0 commit comments

Comments
 (0)