Passed
Pull Request — master (#156)
by
unknown
01:41
created

src/frames/frame-etco.ts   A

Complexity

Total Complexity 2
Complexity/F 0

Size

Lines of Code 35
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 2
eloc 26
mnd 2
bc 2
fnc 0
dl 0
loc 35
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 type { Data } from "./type"
4
5
export const ETCO = {
6
    create: (data: Data) => {
7
        const builder = new FrameBuilder("ETCO")
8
            .appendNumber(data.timeStampFormat, 1)
9
        data.keyEvents.forEach((keyEvent: Data) => {
10
            builder
11
                .appendNumber(keyEvent.type, 1)
12
                .appendNumber(keyEvent.timeStamp, 4)
13
        })
14
15
        return builder.getBuffer()
16
    },
17
    read: (buffer: Buffer) => {
18
        const reader = new FrameReader(buffer)
19
20
        return {
21
            timeStampFormat: reader.consumeStaticValue('number', 1),
22
            keyEvents: Array.from((function*() {
23
                while(true) {
24
                    const type = reader.consumeStaticValue('number', 1)
25
                    const timeStamp = reader.consumeStaticValue('number', 4)
26
                    if (type === undefined || timeStamp === undefined) {
27
                        break
28
                    }
29
                    yield {type, timeStamp}
30
                }
31
            })())
32
        }
33
    }
34
}
35