Skip to content

Commit 8fbe2dd

Browse files
committed
feat(metric): add logic, unit tests for the middy middleware
1 parent 074a5d6 commit 8fbe2dd

File tree

12 files changed

+259
-279
lines changed

12 files changed

+259
-279
lines changed

packages/metrics/.eslintrc.json

Lines changed: 0 additions & 231 deletions
This file was deleted.

packages/metrics/lerna

Whitespace-only changes.

packages/metrics/package-lock.json

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

packages/metrics/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
"typedocMain": "src/index.ts",
3838
"devDependencies": {
3939
"@commitlint/cli": "^15.0.0",
40+
"@middy/core": "^2.5.3",
4041
"@types/aws-lambda": "^8.10.72",
4142
"@types/jest": "^27.0.0",
4243
"@types/node": "^16.6.0",

packages/metrics/src/Metrics.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { MetricsInterface } from '.';
22
import { ConfigServiceInterface, EnvironmentVariablesService } from './config';
33
import {
4-
DecoratorOptions,
4+
MetricsOptions,
55
Dimensions,
66
EmfOutput,
77
HandlerMethodDecorator,
88
StoredMetrics,
9-
MetricsOptions,
9+
ExtraOptions,
1010
MetricUnit,
1111
MetricUnits,
1212
} from './types';
@@ -165,7 +165,6 @@ class Metrics implements MetricsInterface {
165165
this.storedMetrics = {};
166166
}
167167

168-
169168
/**
170169
* Throw an Error if the metrics buffer is empty.
171170
*
@@ -212,7 +211,7 @@ class Metrics implements MetricsInterface {
212211
*
213212
* @decorator Class
214213
*/
215-
public logMetrics(options: DecoratorOptions = {}): HandlerMethodDecorator {
214+
public logMetrics(options: ExtraOptions = {}): HandlerMethodDecorator {
216215
const { raiseOnEmptyMetrics, defaultDimensions, captureColdStartMetric } = options;
217216
if (raiseOnEmptyMetrics) {
218217
this.raiseOnEmptyMetrics();
@@ -228,7 +227,8 @@ class Metrics implements MetricsInterface {
228227

229228
if (captureColdStartMetric) this.captureColdStartMetric();
230229
try {
231-
const result = originalMethod?.apply(this, [event, context, callback]);
230+
const result = originalMethod?.apply(this, [ event, context, callback ]);
231+
232232
return result;
233233
} finally {
234234
this.purgeStoredMetrics();
@@ -284,7 +284,7 @@ class Metrics implements MetricsInterface {
284284
{},
285285
);
286286

287-
const dimensionNames = [...Object.keys(this.defaultDimensions), ...Object.keys(this.dimensions)];
287+
const dimensionNames = [ ...Object.keys(this.defaultDimensions), ...Object.keys(this.dimensions) ];
288288

289289
return {
290290
_aws: {
@@ -334,6 +334,7 @@ class Metrics implements MetricsInterface {
334334
return new Metrics({
335335
namespace: this.namespace,
336336
service: this.dimensions.service,
337+
defaultDimensions: this.defaultDimensions,
337338
singleMetric: true,
338339
});
339340
}
@@ -373,6 +374,10 @@ class Metrics implements MetricsInterface {
373374
singleMetric.addMetric('ColdStart', MetricUnits.Count, 1);
374375
}
375376

377+
public setFunctionName(value: string): void {
378+
this.functionName = value;
379+
}
380+
376381
private getCurrentDimensionsCount(): number {
377382
return Object.keys(this.dimensions).length + Object.keys(this.defaultDimensions).length;
378383
}

packages/metrics/src/MetricsInterface.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
import { Metrics } from './Metrics';
2-
import { MetricUnit, EmfOutput, HandlerMethodDecorator, Dimensions, DecoratorOptions } from './types';
2+
import { MetricUnit, EmfOutput, HandlerMethodDecorator, Dimensions, MetricsOptions } from './types';
33

44
interface MetricsInterface {
5-
addDimension(name: string, value: string): void;
6-
addDimensions(dimensions: {[key: string]: string}): void;
7-
addMetadata(key: string, value: string): void;
8-
addMetric(name: string, unit:MetricUnit, value:number): void;
9-
clearDimensions(): void;
10-
clearMetadata(): void;
11-
clearMetrics(): void;
12-
clearDefaultDimensions(): void;
13-
logMetrics(options?: DecoratorOptions): HandlerMethodDecorator;
14-
purgeStoredMetrics(): void;
15-
serializeMetrics(): EmfOutput;
16-
setDefaultDimensions(dimensions: Dimensions | undefined): void;
17-
singleMetric(): Metrics;
5+
addDimension(name: string, value: string): void
6+
addDimensions(dimensions: {[key: string]: string}): void
7+
addMetadata(key: string, value: string): void
8+
addMetric(name: string, unit:MetricUnit, value:number): void
9+
clearDimensions(): void
10+
clearMetadata(): void
11+
clearMetrics(): void
12+
clearDefaultDimensions(): void
13+
logMetrics(options?: MetricsOptions): HandlerMethodDecorator
14+
purgeStoredMetrics(): void
15+
serializeMetrics(): EmfOutput
16+
setDefaultDimensions(dimensions: Dimensions | undefined): void
17+
singleMetric(): Metrics
1818
}
1919

2020
export {
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './middy';

0 commit comments

Comments
 (0)