Skip to content

Commit 95d54f6

Browse files
author
Gurarpit Singh
authored
Merge pull request #220 from lkhari/moreTypings
feat: added typing for patterns
2 parents e9a35c4 + bd148c8 commit 95d54f6

File tree

12 files changed

+224
-51
lines changed

12 files changed

+224
-51
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import middy from "@middy/core";
2+
import {
3+
Context,
4+
SQSRecord,
5+
Handler,
6+
DynamoDBRecord,
7+
DynamoDBStreamEvent,
8+
Callback,
9+
FirehoseTransformationEvent,
10+
FirehoseTransformationResult,
11+
KinesisStreamEvent,
12+
} from "aws-lambda";
13+
import Log from "@dazn/lambda-powertools-logger";
14+
import CorrelationIds from "@dazn/lambda-powertools-correlation-ids";
15+
16+
export default function <T, R, C extends Context = Context>(params: {
17+
sampleDebugLogRate: number;
18+
}): middy.MiddlewareObject<T, R, C>;
19+
20+
export type ExtractedCorrelationIdAndLogger<L = Log> = {
21+
logger: L;
22+
correlationIds: CorrelationIds;
23+
};
24+
25+
export type SQSEvent<L = Log> = {
26+
Records: (SQSRecord & ExtractedCorrelationIdAndLogger<L>)[];
27+
};
28+
29+
export type SQSHandler<L = Log> = Handler<SQSEvent<L>, void>;
30+
31+
export type KinesisContext<T, L = Log> = Context & {
32+
parsedKinesisEvents: ((T & ExtractedCorrelationIdAndLogger<L>) | undefined)[];
33+
};
34+
35+
export type KinesisStreamHandler<T, L = Log> = (
36+
event: KinesisStreamEvent,
37+
context: KinesisContext<T, L>,
38+
callback: Callback<void>
39+
) => void | Promise<void>;
40+
41+
export type FirehoseContext<T, L = Log> = Context & {
42+
parsedFirehoseEvents: (
43+
| (T & ExtractedCorrelationIdAndLogger<L>)
44+
| undefined
45+
)[];
46+
};
47+
48+
export type FirehoseTransformationHandler<T, L = Log> = (
49+
event: FirehoseTransformationEvent,
50+
context: FirehoseContext<T, L>,
51+
callback: Callback<FirehoseTransformationResult>
52+
) => void | Promise<FirehoseTransformationResult>;
53+
54+
export type DynamoStreamsContext<L = Log> = Context & {
55+
parsedDynamoDbEvents: (DynamoDBRecord & ExtractedCorrelationIdAndLogger<L>)[];
56+
};
57+
58+
export type DynamoDBStreamHandler<L = Log> = (
59+
event: DynamoDBStreamEvent,
60+
context: DynamoStreamsContext<L>,
61+
callback: Callback<void>
62+
) => void | Promise<void>;

packages/lambda-powertools-middleware-correlation-ids/index.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
const CorrelationIds = require('@dazn/lambda-powertools-correlation-ids')
2-
32
const generic = require('./event-sources/generic')
43
const eventSources = [
54
require('./event-sources/api-gateway'),

packages/lambda-powertools-middleware-correlation-ids/package-lock.json

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

packages/lambda-powertools-middleware-correlation-ids/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"version": "1.25.0",
44
"description": "Middy middleware for capturing correlation IDs from inbound event",
55
"main": "index.js",
6+
"types": "index.d.ts",
67
"license": "MIT",
78
"author": "Yan Cui",
89
"dependencies": {
@@ -11,6 +12,7 @@
1112
},
1213
"devDependencies": {
1314
"@middy/core": "^1.0.0",
15+
"@types/aws-lambda": "^8.10.3",
1416
"aws-sdk": "^2.496.0",
1517
"lodash": "^4.17.15",
1618
"uuid": "^3.2.1"

packages/lambda-powertools-middleware-obfuscater/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ const handler = async (event, context) => {
6767
}
6868

6969
module.exports = middy(handler)
70-
.use(obfuscatedLogging({ sampleRate: 0.01, obfuscationFilters: ["example.example"] }))
70+
.use(obfuscatedLogging.obfuscaterMiddleware({ sampleRate: 0.01, obfuscationFilters: ["example.example"] }))
7171
}
7272
```
7373

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import middy from "@middy/core";
2+
import { Callback, Context } from "aws-lambda";
3+
export * from "@dazn/lambda-powertools-middleware-correlation-ids";
4+
5+
declare type EventType<T, C> = T extends (
6+
event: infer EventArgType,
7+
context: C,
8+
callback: Callback<any>
9+
) => void
10+
? EventArgType
11+
: T extends (event: infer EventArgType, context: C) => Promise<any>
12+
? EventArgType
13+
: never;
14+
15+
declare type HandlerReturnType<T, C> = T extends (
16+
event: any,
17+
context: C
18+
) => Promise<infer RetType>
19+
? RetType
20+
: T extends (
21+
event: any,
22+
context: C,
23+
callback: Callback<infer RetType>
24+
) => void
25+
? RetType
26+
: never;
27+
28+
declare type AsyncHandler<C extends Context> =
29+
| ((event: any, context: C, callback: Callback<any>) => void)
30+
| ((event: any, context: C) => Promise<any>);
31+
32+
export default function <
33+
H extends AsyncHandler<C>,
34+
C extends Context = Context
35+
>(f: H): middy.Middy<EventType<H, C>, HandlerReturnType<H, C>, C>;

packages/lambda-powertools-pattern-basic/package-lock.json

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

packages/lambda-powertools-pattern-basic/package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"version": "1.25.0",
44
"description": "Basic template that configures a 1% smaple rate for debug logs",
55
"main": "index.js",
6+
"types": "index.d.ts",
67
"license": "MIT",
78
"author": "Yan Cui",
89
"dependencies": {
@@ -13,5 +14,8 @@
1314
},
1415
"publishConfig": {
1516
"access": "public"
17+
},
18+
"devDependencies": {
19+
"@types/aws-lambda": "^8.10.57"
1620
}
1721
}

packages/lambda-powertools-pattern-obfuscate/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Install from NPM: `npm install @dazn/lambda-powertools-pattern-obfuscate`
2727
```js
2828
const obfuscatedWrap = require('@dazn/lambda-powertools-pattern-obfuscated')
2929

30-
module.exports.handler = obfuscatedWrap(['Records.*.firstName', 'Records.*.lastName'], async (event, context) => {
30+
module.exports.handler = obfuscatedWrap.obfuscaterPattern(['Records.*.firstName', 'Records.*.lastName'], async (event, context) => {
3131
return 42
3232
})
3333
```
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import middy from "@middy/core";
2+
import { Callback, Context } from "aws-lambda";
3+
export * from "@dazn/lambda-powertools-middleware-correlation-ids";
4+
5+
declare type EventType<T, C> = T extends (
6+
event: infer EventArgType,
7+
context: C,
8+
callback: Callback<any>
9+
) => void
10+
? EventArgType
11+
: T extends (event: infer EventArgType, context: C) => Promise<any>
12+
? EventArgType
13+
: never;
14+
15+
declare type HandlerReturnType<T, C> = T extends (
16+
event: any,
17+
context: C
18+
) => Promise<infer RetType>
19+
? RetType
20+
: T extends (
21+
event: any,
22+
context: C,
23+
callback: Callback<infer RetType>
24+
) => void
25+
? RetType
26+
: never;
27+
28+
declare type AsyncHandler<C extends Context> =
29+
| ((event: any, context: C, callback: Callback<any>) => void)
30+
| ((event: any, context: C) => Promise<any>);
31+
32+
declare enum FILTERING_MODE {
33+
BLACKLIST = "BLACKLIST",
34+
WHITELIST = "WHITELIST",
35+
}
36+
37+
declare namespace dazn__lambda_powertools_pattern_obfuscate {
38+
const FILTERING_MODE: FILTERING_MODE;
39+
40+
function obfuscaterPattern<
41+
H extends AsyncHandler<C>,
42+
C extends Context = Context
43+
>(
44+
obfuscationFilters: string[],
45+
f: H,
46+
filterOnAfter?: boolean,
47+
filteringMode?: FILTERING_MODE
48+
): middy.Middy<EventType<H, C>, HandlerReturnType<H, C>, C>;
49+
}
50+
51+
export default dazn__lambda_powertools_pattern_obfuscate;

0 commit comments

Comments
 (0)