• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pallad-ts / text-buffer-view / 33c0a549-8569-42f2-971d-917258cb9746

02 Jun 2024 09:19PM UTC coverage: 96.552% (-3.4%) from 100.0%
33c0a549-8569-42f2-971d-917258cb9746

push

circleci

Łukasz Kużyński
1.0.2

15 of 16 branches covered (93.75%)

Branch coverage included in aggregate %.

41 of 42 relevant lines covered (97.62%)

2.79 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

95.92
/src/TextBufferView.ts
1
import {Encoding} from "./Encoding";
2
import {isHexString} from "./utils/isHexString";
1✔
3
import {isBase64} from "./utils/isBase64";
1✔
4
import {isBase64Url} from "./utils/isBase64Url";
1✔
5

6
function isValidBuffer(input: unknown) {
7
        if (input instanceof ArrayBuffer || ArrayBuffer.isView(input) || Buffer.isBuffer(input)) {
8!
8
                return !(input instanceof DataView);
8✔
9
        }
10
        return false;
×
11
}
12

13
export class TextBufferView {
1✔
14
        constructor(private buffer: ArrayBuffer) {
8✔
15
                if (!isValidBuffer(buffer)) {
8✔
16
                        throw new TypeError('Invalid ArrayBuffer');
1✔
17
                }
18
                Object.freeze(this);
7✔
19
        }
20

21
        toString(encoding: Encoding = 'utf8') {
2✔
22
                if (encoding === 'utf8' || encoding === 'ascii') {
7✔
23
                        return new TextDecoder(encoding).decode(this.buffer);
4✔
24
                }
25
                return Buffer.from(this.buffer).toString(encoding);
3✔
26
        }
27

28
        /**
29
         * Returns reference to original buffer
30
         */
31
        get originalArrayBuffer() {
32
                return this.buffer;
4✔
33
        }
34

35
        /**
36
         * Returns copy of a buffer
37
         */
38
        get arrayBuffer() {
39
                return this.buffer.slice(0)
4✔
40
        }
41

42
        /**
43
         * Creates TextBufferView from buffer
44
         */
45
        static fromBuffer(buffer: Buffer) {
46
                return new TextBufferView(buffer);
1✔
47
        }
48

49
        /**
50
         * Creates TextBufferView from array buffer
51
         */
52
        static fromArrayBuffer(arrayBuffer: ArrayBuffer) {
53
                return new TextBufferView(arrayBuffer);
1✔
54
        }
55

56
        static fromString(input: string, encoding: Encoding) {
57
                if (encoding === 'utf8') {
8✔
58
                        return new TextBufferView(new TextEncoder().encode(input));
1✔
59
                }
60

61
                if (encoding === 'hex') {
7✔
62
                        if (isHexString(input)) {
2✔
63
                                return new TextBufferView(Buffer.from(input, 'hex'));
1✔
64
                        }
65
                        throw new TypeError('Invalid hex string');
1✔
66
                }
67

68
                if (encoding === 'base64') {
5✔
69
                        if (isBase64(input)) {
2✔
70
                                return new TextBufferView(Buffer.from(input, 'base64'));
1✔
71
                        }
72
                        throw new TypeError('Invalid base64 string');
1✔
73
                }
74

75
                if (encoding === 'base64url') {
3✔
76
                        if (isBase64Url(input)) {
2✔
77
                                return new TextBufferView(Buffer.from(input, 'base64url'));
1✔
78
                        }
79
                        throw new TypeError('Invalid base64url string');
1✔
80
                }
81

82
                return new TextBufferView(Buffer.from(input, encoding));
1✔
83
        }
84
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc