1 | "use strict";
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 | Object.defineProperty(exports, "__esModule", { value: true });
|
23 | exports.BinaryBufferWriteableStream = exports.BinaryBufferReadableBufferedStream = exports.BinaryBufferReadableStream = exports.BinaryBufferReadable = exports.BinaryBuffer = void 0;
|
24 |
|
25 | const safer_buffer_1 = require("safer-buffer");
|
26 | const iconv = require("iconv-lite");
|
27 | const streams = require("./stream");
|
28 | const hasBuffer = (typeof Buffer !== 'undefined');
|
29 | const hasTextEncoder = (typeof TextEncoder !== 'undefined');
|
30 | const hasTextDecoder = (typeof TextDecoder !== 'undefined');
|
31 | let textEncoder;
|
32 | let textDecoder;
|
33 | class BinaryBuffer {
|
34 | constructor(buffer) {
|
35 | this.buffer = buffer;
|
36 | this.byteLength = this.buffer.byteLength;
|
37 | }
|
38 | static alloc(byteLength) {
|
39 | if (hasBuffer) {
|
40 | return new BinaryBuffer(Buffer.allocUnsafe(byteLength));
|
41 | }
|
42 | else {
|
43 | return new BinaryBuffer(new Uint8Array(byteLength));
|
44 | }
|
45 | }
|
46 | static wrap(actual) {
|
47 | if (hasBuffer && !(Buffer.isBuffer(actual))) {
|
48 |
|
49 |
|
50 | actual = Buffer.from(actual.buffer, actual.byteOffset, actual.byteLength);
|
51 | }
|
52 | return new BinaryBuffer(actual);
|
53 | }
|
54 | static fromString(source) {
|
55 | if (hasBuffer) {
|
56 | return new BinaryBuffer(Buffer.from(source));
|
57 | }
|
58 | else if (hasTextEncoder) {
|
59 | if (!textEncoder) {
|
60 | textEncoder = new TextEncoder();
|
61 | }
|
62 | return new BinaryBuffer(textEncoder.encode(source));
|
63 | }
|
64 | else {
|
65 | return new BinaryBuffer(iconv.encode(source, 'utf8'));
|
66 | }
|
67 | }
|
68 | static concat(buffers, totalLength) {
|
69 | if (typeof totalLength === 'undefined') {
|
70 | totalLength = 0;
|
71 | for (let i = 0, len = buffers.length; i < len; i++) {
|
72 | totalLength += buffers[i].byteLength;
|
73 | }
|
74 | }
|
75 | const ret = BinaryBuffer.alloc(totalLength);
|
76 | let offset = 0;
|
77 | for (let i = 0, len = buffers.length; i < len; i++) {
|
78 | const element = buffers[i];
|
79 | ret.set(element, offset);
|
80 | offset += element.byteLength;
|
81 | }
|
82 | return ret;
|
83 | }
|
84 | toString() {
|
85 | if (hasBuffer) {
|
86 | return this.buffer.toString();
|
87 | }
|
88 | else if (hasTextDecoder) {
|
89 | if (!textDecoder) {
|
90 | textDecoder = new TextDecoder();
|
91 | }
|
92 | return textDecoder.decode(this.buffer);
|
93 | }
|
94 | else {
|
95 | return iconv.decode(safer_buffer_1.Buffer.from(this.buffer), 'utf8');
|
96 | }
|
97 | }
|
98 | slice(start, end) {
|
99 |
|
100 |
|
101 |
|
102 | return new BinaryBuffer(this.buffer.subarray(start, end));
|
103 | }
|
104 | set(array, offset) {
|
105 | if (array instanceof BinaryBuffer) {
|
106 | this.buffer.set(array.buffer, offset);
|
107 | }
|
108 | else {
|
109 | this.buffer.set(array, offset);
|
110 | }
|
111 | }
|
112 | readUInt32BE(offset) {
|
113 | return (this.buffer[offset] * 2 ** 24
|
114 | + this.buffer[offset + 1] * 2 ** 16
|
115 | + this.buffer[offset + 2] * 2 ** 8
|
116 | + this.buffer[offset + 3]);
|
117 | }
|
118 | writeUInt32BE(value, offset) {
|
119 | this.buffer[offset + 3] = value;
|
120 | value = value >>> 8;
|
121 | this.buffer[offset + 2] = value;
|
122 | value = value >>> 8;
|
123 | this.buffer[offset + 1] = value;
|
124 | value = value >>> 8;
|
125 | this.buffer[offset] = value;
|
126 | }
|
127 | readUInt32LE(offset) {
|
128 | return (((this.buffer[offset + 0] << 0) >>> 0) |
|
129 | ((this.buffer[offset + 1] << 8) >>> 0) |
|
130 | ((this.buffer[offset + 2] << 16) >>> 0) |
|
131 | ((this.buffer[offset + 3] << 24) >>> 0));
|
132 | }
|
133 | writeUInt32LE(value, offset) {
|
134 | this.buffer[offset + 0] = (value & 0b11111111);
|
135 | value = value >>> 8;
|
136 | this.buffer[offset + 1] = (value & 0b11111111);
|
137 | value = value >>> 8;
|
138 | this.buffer[offset + 2] = (value & 0b11111111);
|
139 | value = value >>> 8;
|
140 | this.buffer[offset + 3] = (value & 0b11111111);
|
141 | }
|
142 | readUInt8(offset) {
|
143 | return this.buffer[offset];
|
144 | }
|
145 | writeUInt8(value, offset) {
|
146 | this.buffer[offset] = value;
|
147 | }
|
148 | }
|
149 | exports.BinaryBuffer = BinaryBuffer;
|
150 | var BinaryBufferReadable;
|
151 | (function (BinaryBufferReadable) {
|
152 | function toBuffer(readable) {
|
153 | return streams.consumeReadable(readable, chunks => BinaryBuffer.concat(chunks));
|
154 | }
|
155 | BinaryBufferReadable.toBuffer = toBuffer;
|
156 | function fromBuffer(buffer) {
|
157 | return streams.toReadable(buffer);
|
158 | }
|
159 | BinaryBufferReadable.fromBuffer = fromBuffer;
|
160 | function fromReadable(readable) {
|
161 | return {
|
162 | read() {
|
163 | const value = readable.read();
|
164 | if (typeof value === 'string') {
|
165 | return BinaryBuffer.fromString(value);
|
166 | }
|
167 | return null;
|
168 | }
|
169 | };
|
170 | }
|
171 | BinaryBufferReadable.fromReadable = fromReadable;
|
172 | })(BinaryBufferReadable = exports.BinaryBufferReadable || (exports.BinaryBufferReadable = {}));
|
173 | var BinaryBufferReadableStream;
|
174 | (function (BinaryBufferReadableStream) {
|
175 | function toBuffer(stream) {
|
176 | return streams.consumeStream(stream, chunks => BinaryBuffer.concat(chunks));
|
177 | }
|
178 | BinaryBufferReadableStream.toBuffer = toBuffer;
|
179 | function fromBuffer(buffer) {
|
180 | return streams.toStream(buffer, chunks => BinaryBuffer.concat(chunks));
|
181 | }
|
182 | BinaryBufferReadableStream.fromBuffer = fromBuffer;
|
183 | })(BinaryBufferReadableStream = exports.BinaryBufferReadableStream || (exports.BinaryBufferReadableStream = {}));
|
184 | var BinaryBufferReadableBufferedStream;
|
185 | (function (BinaryBufferReadableBufferedStream) {
|
186 | async function toBuffer(bufferedStream) {
|
187 | if (bufferedStream.ended) {
|
188 | return BinaryBuffer.concat(bufferedStream.buffer);
|
189 | }
|
190 | return BinaryBuffer.concat([
|
191 |
|
192 | ...bufferedStream.buffer,
|
193 |
|
194 | await BinaryBufferReadableStream.toBuffer(bufferedStream.stream)
|
195 | ]);
|
196 | }
|
197 | BinaryBufferReadableBufferedStream.toBuffer = toBuffer;
|
198 | })(BinaryBufferReadableBufferedStream = exports.BinaryBufferReadableBufferedStream || (exports.BinaryBufferReadableBufferedStream = {}));
|
199 | var BinaryBufferWriteableStream;
|
200 | (function (BinaryBufferWriteableStream) {
|
201 | function create(options) {
|
202 | return streams.newWriteableStream(chunks => BinaryBuffer.concat(chunks), options);
|
203 | }
|
204 | BinaryBufferWriteableStream.create = create;
|
205 | })(BinaryBufferWriteableStream = exports.BinaryBufferWriteableStream || (exports.BinaryBufferWriteableStream = {}));
|
206 |
|
\ | No newline at end of file |