Completed
Push — master ( 379702...5ff0f2 )
by Jan
14s queued 13s
created

onvertTextEncodingToIconEncoding   A

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
1
import iconv = require('iconv-lite')
2
import { TextEncoding } from './definitions/Encoding'
3
4
export function stringToEncodedBuffer(
5
    value: string,
6
    encoding: TextEncoding
7
) {
8
    return iconv.encode(
9
        value,
10
        convertTextEncodingToIconEncoding(encoding)
11
    )
12
}
13
14
export function bufferToDecodedString(
15
    buffer: Buffer,
16
    encoding: TextEncoding
17
) {
18
    return iconv.decode(
19
        buffer,
20
        convertTextEncodingToIconEncoding(encoding)
21
    ).replace(/\0/g, '')
22
}
23
24
const TO_ICON_ENCODING = {
25
    [TextEncoding.ISO_8859_1]: 'ISO-8859-1',
26
    [TextEncoding.UTF_16_WITH_BOM]: 'UTF-16',
27
    [TextEncoding.UTF_16_BE]: 'UTF-16BE',
28
    [TextEncoding.UTF_8]: 'UTF-8'
29
} satisfies Record<TextEncoding, string>
30
31
export function validateEncoding(encoding: number): TextEncoding {
32
    if (encoding in TO_ICON_ENCODING) {
33
        return encoding as TextEncoding
34
    }
35
    throw new RangeError(`Unknown encoding value ${encoding}`)
36
}
37
38
function convertTextEncodingToIconEncoding(encoding: TextEncoding) {
39
    return TO_ICON_ENCODING[validateEncoding(encoding)]
40
}
41
42