1
1
import { Handler } from 'aws-lambda' ;
2
- import { Utility } from '@aws-lambda-powertools/commons' ;
2
+ import { AsyncHandler , SyncHandler , Utility } from '@aws-lambda-powertools/commons' ;
3
3
import { TracerInterface } from '.' ;
4
4
import { ConfigServiceInterface , EnvironmentVariablesService } from './config' ;
5
5
import { HandlerMethodDecorator , TracerOptions , MethodDecorator } from './types' ;
@@ -348,30 +348,26 @@ class Tracer extends Utility implements TracerInterface {
348
348
const originalMethod = descriptor . value ! ;
349
349
350
350
// eslint-disable-next-line @typescript-eslint/no-this-alias
351
- const that = this ;
351
+ const tracerRef = this ;
352
352
// Use a function() {} instead of an () => {} arrow function so that we can
353
353
// access `myClass` as `this` in a decorated `myClass.myMethod()`.
354
- descriptor . value = ( function ( event , context , callback ) {
355
- // We know that 'this' is a LambdaHandler because captureLambdaHandler
356
- // can only be applied to a LambdaHandler.
357
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
358
- // @ts -ignore
354
+ descriptor . value = ( function ( this : Handler , event , context , callback ) {
359
355
// eslint-disable-next-line @typescript-eslint/no-this-alias
360
- const thisLambdaHandler : LambdaHandler = this ;
356
+ const handlerRef : Handler = this ;
361
357
362
- if ( ! that . isTracingEnabled ( ) ) {
363
- return originalMethod . apply ( thisLambdaHandler , [ event , context , callback ] ) ;
358
+ if ( ! tracerRef . isTracingEnabled ( ) ) {
359
+ return originalMethod . apply ( handlerRef , [ event , context , callback ] ) ;
364
360
}
365
361
366
- return that . provider . captureAsyncFunc ( `## ${ process . env . _HANDLER } ` , async subsegment => {
367
- that . annotateColdStart ( ) ;
368
- that . addServiceNameAnnotation ( ) ;
362
+ return tracerRef . provider . captureAsyncFunc ( `## ${ process . env . _HANDLER } ` , async subsegment => {
363
+ tracerRef . annotateColdStart ( ) ;
364
+ tracerRef . addServiceNameAnnotation ( ) ;
369
365
let result : unknown ;
370
366
try {
371
- result = await originalMethod . apply ( thisLambdaHandler , [ event , context , callback ] ) ;
372
- that . addResponseAsMetadata ( result , process . env . _HANDLER ) ;
367
+ result = await originalMethod . apply ( handlerRef , [ event , context , callback ] ) ;
368
+ tracerRef . addResponseAsMetadata ( result , process . env . _HANDLER ) ;
373
369
} catch ( error ) {
374
- that . addErrorAsMetadata ( error as Error ) ;
370
+ tracerRef . addErrorAsMetadata ( error as Error ) ;
375
371
throw error ;
376
372
} finally {
377
373
subsegment ?. close ( ) ;
@@ -380,7 +376,7 @@ class Tracer extends Utility implements TracerInterface {
380
376
381
377
return result ;
382
378
} ) ;
383
- } ) as Handler ;
379
+ } ) as SyncHandler < Handler > | AsyncHandler < Handler > ;
384
380
385
381
return descriptor ;
386
382
} ;
@@ -428,21 +424,21 @@ class Tracer extends Utility implements TracerInterface {
428
424
const originalMethod = descriptor . value ! ;
429
425
430
426
// eslint-disable-next-line @typescript-eslint/no-this-alias
431
- const that = this ;
427
+ const tracerRef = this ;
432
428
// Use a function() {} instead of an () => {} arrow function so that we can
433
429
// access `myClass` as `this` in a decorated `myClass.myMethod()`.
434
430
descriptor . value = function ( ...args : unknown [ ] ) {
435
- if ( ! that . isTracingEnabled ( ) ) {
431
+ if ( ! tracerRef . isTracingEnabled ( ) ) {
436
432
return originalMethod . apply ( this , [ ...args ] ) ;
437
433
}
438
434
439
- return that . provider . captureAsyncFunc ( `### ${ originalMethod . name } ` , async subsegment => {
435
+ return tracerRef . provider . captureAsyncFunc ( `### ${ originalMethod . name } ` , async subsegment => {
440
436
let result ;
441
437
try {
442
438
result = await originalMethod . apply ( this , [ ...args ] ) ;
443
- that . addResponseAsMetadata ( result , originalMethod . name ) ;
439
+ tracerRef . addResponseAsMetadata ( result , originalMethod . name ) ;
444
440
} catch ( error ) {
445
- that . addErrorAsMetadata ( error as Error ) ;
441
+ tracerRef . addErrorAsMetadata ( error as Error ) ;
446
442
447
443
throw error ;
448
444
} finally {
0 commit comments