1
1
import { EventStreamCodec } from "@smithy/eventstream-codec" ;
2
- import { MessageHeaders , MessageSigner } from "@smithy/types" ;
2
+ import { MessageHeaders , MessageSigner , Provider } from "@smithy/types" ;
3
3
import { Transform , TransformCallback , TransformOptions } from "stream" ;
4
4
5
5
/**
@@ -9,6 +9,7 @@ export interface EventSigningStreamOptions extends TransformOptions {
9
9
priorSignature : string ;
10
10
messageSigner : MessageSigner ;
11
11
eventStreamCodec : EventStreamCodec ;
12
+ systemClockOffsetProvider : Provider < number > ;
12
13
}
13
14
14
15
/**
@@ -20,6 +21,7 @@ export class EventSigningStream extends Transform {
20
21
private priorSignature : string ;
21
22
private messageSigner : MessageSigner ;
22
23
private eventStreamCodec : EventStreamCodec ;
24
+ private readonly systemClockOffsetProvider : Provider < number > ;
23
25
24
26
constructor ( options : EventSigningStreamOptions ) {
25
27
super ( {
@@ -32,11 +34,12 @@ export class EventSigningStream extends Transform {
32
34
this . priorSignature = options . priorSignature ;
33
35
this . eventStreamCodec = options . eventStreamCodec ;
34
36
this . messageSigner = options . messageSigner ;
37
+ this . systemClockOffsetProvider = options . systemClockOffsetProvider ;
35
38
}
36
39
37
40
async _transform ( chunk : Uint8Array , encoding : string , callback : TransformCallback ) : Promise < void > {
38
41
try {
39
- const now = new Date ( ) ;
42
+ const now = new Date ( Date . now ( ) + ( await this . systemClockOffsetProvider ( ) ) ) ;
40
43
const dateHeader : MessageHeaders = {
41
44
":date" : { type : "timestamp" , value : now } ,
42
45
} ;
0 commit comments