Skip to content

Commit

Permalink
feat: added typing for patterns and exposed logger
Browse files Browse the repository at this point in the history
  • Loading branch information
lkhari committed Jul 2, 2020
1 parent 9946a2c commit a4ceca1
Show file tree
Hide file tree
Showing 12 changed files with 236 additions and 56 deletions.
61 changes: 61 additions & 0 deletions packages/lambda-powertools-middleware-correlation-ids/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import middy from "@middy/core";
import {
Context,
SQSRecord,
Handler,
DynamoDBRecord,
DynamoDBStreamEvent,
Callback,
FirehoseTransformationEvent,
FirehoseTransformationResult,
KinesisStreamEvent,
} from "aws-lambda";
import Log from "@dazn/lambda-powertools-logger";
import CorrelationIds from "@dazn/lambda-powertools-correlation-ids";

export default function <T, R, C extends Context = Context>(params: {
sampleDebugLogRate: number;
}): middy.MiddlewareObject<T, R, C>;

export type ExtractedCorrelationIdAndLogger = {
logger: Log;
correlationIds: CorrelationIds;
};

export type SQSEvent = {
Records: (SQSRecord & ExtractedCorrelationIdAndLogger)[];
};

export type SQSHandler = Handler<SQSEvent, void>;

export type KinesisContext<T> = Context & {
parsedKinesisEvents: ((T & ExtractedCorrelationIdAndLogger) | undefined)[];
};

export type KinesisStreamHandler = <T>(
event: KinesisStreamEvent,
context: KinesisContext<T>,
callback: Callback<void>
) => void | Promise<void>;

export type FirehoseContext<T> = Context & {
parsedFirehoseEvents: ((T & ExtractedCorrelationIdAndLogger) | undefined)[];
};

export type FirehoseTransformationHandler = <T>(
event: FirehoseTransformationEvent,
context: FirehoseContext<T>,
callback: Callback<FirehoseTransformationResult>
) => void | Promise<FirehoseTransformationResult>;

export type DynamoStreamsContext = Context & {
parsedDynamoDbEvents: (DynamoDBRecord & ExtractedCorrelationIdAndLogger)[];
};

export type DynamoDBStreamHandler = (
event: DynamoDBStreamEvent,
context: DynamoStreamsContext,
callback: Callback<void>
) => void | Promise<void>;

export { Log };
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
const CorrelationIds = require('@dazn/lambda-powertools-correlation-ids')

const generic = require('./event-sources/generic')
const eventSources = [
require('./event-sources/api-gateway'),
Expand Down Expand Up @@ -30,3 +29,5 @@ module.exports = ({ sampleDebugLogRate }) => {
}
}
}

module.exports.Log = require('@dazn/lambda-powertools-logger')

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"version": "1.24.1",
"description": "Middy middleware for capturing correlation IDs from inbound event",
"main": "index.js",
"types": "index.d.ts",
"license": "MIT",
"author": "Yan Cui",
"dependencies": {
Expand All @@ -11,6 +12,7 @@
},
"devDependencies": {
"@middy/core": "^1.0.0",
"@types/aws-lambda": "^8.10.3",
"aws-sdk": "^2.496.0",
"lodash": "^4.17.15",
"uuid": "^3.2.1"
Expand Down
35 changes: 35 additions & 0 deletions packages/lambda-powertools-pattern-basic/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import middy from "@middy/core";
import { Callback, Context } from "aws-lambda";
export * from "@dazn/lambda-powertools-middleware-correlation-ids";

declare type EventType<T, C> = T extends (
event: infer EventArgType,
context: C,
callback: Callback<any>
) => void
? EventArgType
: T extends (event: infer EventArgType, context: C) => Promise<any>
? EventArgType
: never;

declare type HandlerReturnType<T, C> = T extends (
event: any,
context: C
) => Promise<infer RetType>
? RetType
: T extends (
event: any,
context: C,
callback: Callback<infer RetType>
) => void
? RetType
: never;

declare type AsyncHandler<C extends Context> =
| ((event: any, context: C, callback: Callback<any>) => void)
| ((event: any, context: C) => Promise<any>);

export default function <
H extends AsyncHandler<C>,
C extends Context = Context
>(f: H): middy.Middy<EventType<H, C>, HandlerReturnType<H, C>, C>;
3 changes: 3 additions & 0 deletions packages/lambda-powertools-pattern-basic/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
const middy = require('@middy/core')
const sampleLogging = require('@dazn/lambda-powertools-middleware-sample-logging')
const captureCorrelationIds = require('@dazn/lambda-powertools-middleware-correlation-ids')
const { Log } = require('@dazn/lambda-powertools-middleware-correlation-ids')
const logTimeout = require('@dazn/lambda-powertools-middleware-log-timeout')
const supplementCsv = require('./supplement-csv')

Expand Down Expand Up @@ -33,3 +34,5 @@ module.exports = f => {
}))
.use(logTimeout())
}

module.exports.Log = Log
48 changes: 27 additions & 21 deletions packages/lambda-powertools-pattern-basic/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions packages/lambda-powertools-pattern-basic/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"version": "1.24.1",
"description": "Basic template that configures a 1% smaple rate for debug logs",
"main": "index.js",
"types": "index.d.ts",
"license": "MIT",
"author": "Yan Cui",
"dependencies": {
Expand All @@ -13,5 +14,8 @@
},
"publishConfig": {
"access": "public"
},
"devDependencies": {
"@types/aws-lambda": "^8.10.57"
}
}
51 changes: 51 additions & 0 deletions packages/lambda-powertools-pattern-obfuscate/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import middy from "@middy/core";
import { Callback, Context } from "aws-lambda";
export * from "@dazn/lambda-powertools-middleware-correlation-ids";

declare type EventType<T, C> = T extends (
event: infer EventArgType,
context: C,
callback: Callback<any>
) => void
? EventArgType
: T extends (event: infer EventArgType, context: C) => Promise<any>
? EventArgType
: never;

declare type HandlerReturnType<T, C> = T extends (
event: any,
context: C
) => Promise<infer RetType>
? RetType
: T extends (
event: any,
context: C,
callback: Callback<infer RetType>
) => void
? RetType
: never;

declare type AsyncHandler<C extends Context> =
| ((event: any, context: C, callback: Callback<any>) => void)
| ((event: any, context: C) => Promise<any>);

declare enum FILTERING_MODE {
BLACKLIST = "BLACKLIST",
WHITELIST = "WHITELIST",
}

declare namespace dazn__lambda_powertools_pattern_obfuscate {
const FILTERING_MODE: FILTERING_MODE;

function obfuscaterPattern<
H extends AsyncHandler<C>,
C extends Context = Context
>(
obfuscationFilters: string[],
f: H,
filterOnAfter?: boolean,
filteringMode?: FILTERING_MODE
): middy.Middy<EventType<H, C>, HandlerReturnType<H, C>, C>;
}

export default dazn__lambda_powertools_pattern_obfuscate;
3 changes: 3 additions & 0 deletions packages/lambda-powertools-pattern-obfuscate/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ const middy = require('@middy/core')
const sampleLogging = require('@dazn/lambda-powertools-middleware-sample-logging')
const { obfuscaterMiddleware, FILTERING_MODE: obfuscaterFilteringMode } = require('@dazn/lambda-powertools-middleware-obfuscater')
const captureCorrelationIds = require('@dazn/lambda-powertools-middleware-correlation-ids')
const { Log } = require('@dazn/lambda-powertools-middleware-correlation-ids')
const logTimeout = require('@dazn/lambda-powertools-middleware-log-timeout')

const supplementCsv = require('./supplement-csv')
Expand Down Expand Up @@ -76,3 +77,5 @@ module.exports = {
FILTERING_MODE,
obfuscaterPattern
}

module.exports.Log = Log

0 comments on commit a4ceca1

Please sign in to comment.