src/frames/frame-etco.ts   A
last analyzed

Complexity

Total Complexity 1
Complexity/F 0

Size

Lines of Code 31
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 1
eloc 21
mnd 1
bc 1
fnc 0
dl 0
loc 31
rs 10
bpm 0
cpm 0
noi 0
c 0
b 0
f 0
1
import { FrameBuilder } from "../FrameBuilder"
2
import { FrameReader } from "../FrameReader"
3
import { EventTimingCodes } from "../types/TagFrames"
4
5
export const ETCO = {
6
    create: (data: EventTimingCodes): Buffer => {
7
        return new FrameBuilder("ETCO")
8
            .appendNumber(data.timeStampFormat, {size: 1})
9
            .appendArray(data.keyEvents, (builder, keyEvent) => builder
10
                .appendNumber(keyEvent.type, {size: 1})
11
                .appendNumber(keyEvent.timeStamp, {size: 4})
12
            )
13
            .getBufferWithPartialHeader()
14
    },
15
    read: (buffer: Buffer): EventTimingCodes => {
16
        const reader = new FrameReader(buffer)
17
        return {
18
            timeStampFormat: reader.consumeNumber({size: 1}) as
19
                EventTimingCodes["timeStampFormat"],
20
            keyEvents: Array.from((function*() {
21
                while(!reader.isBufferEmpty()) {
22
                    yield {
23
                        type: reader.consumeNumber({size: 1}),
24
                        timeStamp: reader.consumeNumber({size: 4})
25
                    }
26
                }
27
            })())
28
        }
29
    }
30
}
31