@ceeblue/web-utils 3.1.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Copyright 2024 Ceeblue B.V.
3
+ * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.
4
+ * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.
5
+ */
6
+ export default {
7
+ extends: ['@commitlint/config-conventional'],
8
+ ignores: [commit => /^[^\r\n]*\[skip ci\]/.test(commit)]
9
+ };
@@ -53,7 +53,7 @@ declare class BinaryWriter {
53
53
  * Write binary data
54
54
  * @param data
55
55
  */
56
- write(data: ArrayLike<number>): BinaryWriter;
56
+ write(data: ArrayLike<number> | BufferSource | string): BinaryWriter;
57
57
  write8(value: number): BinaryWriter;
58
58
  write16(value: number): BinaryWriter;
59
59
  write24(value: number): BinaryWriter;
package/dist/web-utils.js CHANGED
@@ -115,166 +115,6 @@ class BinaryReader {
115
115
  const pos = this._position;
116
116
  return this._data.subarray(pos, Math.max(pos, (this._position += size)));
117
117
  }
118
- }/**
119
- * Copyright 2024 Ceeblue B.V.
120
- * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.
121
- * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.
122
- */
123
- const _encoder$1 = new TextEncoder();
124
- /**
125
- * BinaryWriter allows to write data in its binary form
126
- */
127
- class BinaryWriter {
128
- get view() {
129
- if (!this._view) {
130
- this._view = new DataView(this._data.buffer, this._data.byteOffset, this._data.byteLength);
131
- }
132
- return this._view;
133
- }
134
- get capacity() {
135
- return this._data.byteLength;
136
- }
137
- constructor(dataOrSize = 64, offset = 0, length) {
138
- if (typeof dataOrSize == 'number') {
139
- // allocate new buffer
140
- this._data = new Uint8Array(dataOrSize);
141
- this._size = 0;
142
- }
143
- else if ('buffer' in dataOrSize) {
144
- // append to existing data!
145
- this._data = new Uint8Array(dataOrSize.buffer, dataOrSize.byteOffset, dataOrSize.byteLength);
146
- this._size = dataOrSize.byteLength;
147
- }
148
- else {
149
- // overrides data
150
- this._isConst = true; // better than boolean for memory usage
151
- if (length == null) {
152
- // /!\ Safari does not support undefined length, so we need to use byteLength instead
153
- length = dataOrSize.byteLength;
154
- }
155
- this._data = new Uint8Array(dataOrSize, offset, length);
156
- this._size = 0;
157
- }
158
- }
159
- data() {
160
- return new Uint8Array(this._data.buffer, this._data.byteOffset, this._size);
161
- }
162
- size() {
163
- return this._size || 0;
164
- }
165
- next(count = 1) {
166
- return this.reserve((this._size += count));
167
- }
168
- clear(size = 0) {
169
- return this.reserve((this._size = size));
170
- }
171
- /**
172
- * Write binary data
173
- * @param data
174
- */
175
- write(data) {
176
- this.reserve(this._size + data.length);
177
- this._data.set(data, this._size);
178
- this._size += data.length;
179
- return this;
180
- }
181
- write8(value) {
182
- if (value > 0xff) {
183
- // cast to 8bits range
184
- value = 0xff;
185
- }
186
- this.reserve(this._size + 1);
187
- this._data[this._size++] = value;
188
- return this;
189
- }
190
- write16(value) {
191
- if (value > 0xffff) {
192
- // cast to 16bits range
193
- value = 0xffff;
194
- }
195
- this.reserve(this._size + 2);
196
- this.view.setUint16(this._size, value);
197
- this._size += 2;
198
- return this;
199
- }
200
- write24(value) {
201
- if (value > 0xffffff) {
202
- // cast to 24bits range
203
- value = 0xffffff;
204
- }
205
- this.reserve(this._size + 3);
206
- this.view.setUint16(this._size, value >> 8);
207
- this.view.setUint8((this._size += 2), value & 0xff);
208
- ++this._size;
209
- return this;
210
- }
211
- write32(value) {
212
- if (value > 0xffffffff) {
213
- // cast to 32bits range
214
- value = 0xffffffff;
215
- }
216
- this.reserve(this._size + 4);
217
- this.view.setUint32(this._size, value);
218
- this._size += 4;
219
- return this;
220
- }
221
- write64(value) {
222
- this.write32(value / 4294967296);
223
- return this.write32(value & 0xffffffff);
224
- }
225
- writeFloat(value) {
226
- this.reserve(this._size + 4);
227
- this.view.setFloat32(this._size, value);
228
- this._size += 4;
229
- return this;
230
- }
231
- writeDouble(value) {
232
- this.reserve(this._size + 8);
233
- this.view.setFloat64(this._size, value);
234
- this._size += 8;
235
- return this;
236
- }
237
- write7Bit(value) {
238
- let byte = value & 0x7f;
239
- while ((value = Math.floor(value / 0x80))) {
240
- // equivalent to >>=7 for JS!
241
- this.write8(0x80 | byte);
242
- byte = value & 0x7f;
243
- }
244
- return this.write8(byte);
245
- }
246
- writeString(value) {
247
- return this.write(_encoder$1.encode(value)).write8(0);
248
- }
249
- writeHex(value) {
250
- for (let i = 0; i < value.length; i += 2) {
251
- this.write8(parseInt(value.substring(i, i + 2), 16));
252
- }
253
- return this;
254
- }
255
- reserve(size) {
256
- if (!this._data) {
257
- throw Error('buffer not writable');
258
- }
259
- if (size <= this._data.byteLength) {
260
- return this;
261
- }
262
- if (this._isConst) {
263
- throw Error('writing exceeds maximum ' + this._data.byteLength + ' bytes limit');
264
- }
265
- --size;
266
- size |= size >> 1;
267
- size |= size >> 2;
268
- size |= size >> 4;
269
- size |= size >> 8;
270
- size |= size >> 16;
271
- ++size;
272
- const data = new Uint8Array(size);
273
- data.set(this._data); // copy old buffer!
274
- this._data = data;
275
- this._view = undefined; // release view
276
- return this;
277
- }
278
118
  }/******************************************************************************
279
119
  Copyright (c) Microsoft Corporation.
280
120
 
@@ -649,6 +489,180 @@ function trimEnd(value, chars = ' ') {
649
489
  * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.
650
490
  * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.
651
491
  */
492
+ /**
493
+ * BinaryWriter allows to write data in its binary form
494
+ */
495
+ class BinaryWriter {
496
+ get view() {
497
+ if (!this._view) {
498
+ this._view = new DataView(this._data.buffer, this._data.byteOffset, this._data.byteLength);
499
+ }
500
+ return this._view;
501
+ }
502
+ get capacity() {
503
+ return this._data.byteLength;
504
+ }
505
+ constructor(dataOrSize = 64, offset = 0, length) {
506
+ if (typeof dataOrSize == 'number') {
507
+ // allocate new buffer
508
+ this._data = new Uint8Array(dataOrSize);
509
+ this._size = 0;
510
+ }
511
+ else if ('buffer' in dataOrSize) {
512
+ // append to existing data!
513
+ this._data = new Uint8Array(dataOrSize.buffer, dataOrSize.byteOffset, dataOrSize.byteLength);
514
+ this._size = dataOrSize.byteLength;
515
+ }
516
+ else {
517
+ // overrides data
518
+ this._isConst = true; // better than boolean for memory usage
519
+ if (length == null) {
520
+ // /!\ Safari does not support undefined length, so we need to use byteLength instead
521
+ length = dataOrSize.byteLength;
522
+ }
523
+ this._data = new Uint8Array(dataOrSize, offset, length);
524
+ this._size = 0;
525
+ }
526
+ }
527
+ data() {
528
+ return new Uint8Array(this._data.buffer, this._data.byteOffset, this._size);
529
+ }
530
+ size() {
531
+ return this._size || 0;
532
+ }
533
+ next(count = 1) {
534
+ return this.reserve((this._size += count));
535
+ }
536
+ clear(size = 0) {
537
+ return this.reserve((this._size = size));
538
+ }
539
+ /**
540
+ * Write binary data
541
+ * @param data
542
+ */
543
+ write(data) {
544
+ var _a;
545
+ let bin;
546
+ if (typeof data === 'string') {
547
+ // Convertit la chaîne en Uint8Array
548
+ bin = toBin(data);
549
+ }
550
+ else if (data instanceof ArrayBuffer) {
551
+ bin = new Uint8Array(data);
552
+ }
553
+ else if ('buffer' in data) {
554
+ bin = new Uint8Array(data.buffer, (_a = data.byteOffset) !== null && _a !== void 0 ? _a : 0, data.byteLength);
555
+ }
556
+ else {
557
+ bin = data;
558
+ }
559
+ this.reserve(this._size + bin.length);
560
+ this._data.set(bin, this._size);
561
+ this._size += bin.length;
562
+ return this;
563
+ }
564
+ write8(value) {
565
+ if (value > 0xff) {
566
+ // cast to 8bits range
567
+ value = 0xff;
568
+ }
569
+ this.reserve(this._size + 1);
570
+ this._data[this._size++] = value;
571
+ return this;
572
+ }
573
+ write16(value) {
574
+ if (value > 0xffff) {
575
+ // cast to 16bits range
576
+ value = 0xffff;
577
+ }
578
+ this.reserve(this._size + 2);
579
+ this.view.setUint16(this._size, value);
580
+ this._size += 2;
581
+ return this;
582
+ }
583
+ write24(value) {
584
+ if (value > 0xffffff) {
585
+ // cast to 24bits range
586
+ value = 0xffffff;
587
+ }
588
+ this.reserve(this._size + 3);
589
+ this.view.setUint16(this._size, value >> 8);
590
+ this.view.setUint8((this._size += 2), value & 0xff);
591
+ ++this._size;
592
+ return this;
593
+ }
594
+ write32(value) {
595
+ if (value > 0xffffffff) {
596
+ // cast to 32bits range
597
+ value = 0xffffffff;
598
+ }
599
+ this.reserve(this._size + 4);
600
+ this.view.setUint32(this._size, value);
601
+ this._size += 4;
602
+ return this;
603
+ }
604
+ write64(value) {
605
+ this.write32(value / 4294967296);
606
+ return this.write32(value & 0xffffffff);
607
+ }
608
+ writeFloat(value) {
609
+ this.reserve(this._size + 4);
610
+ this.view.setFloat32(this._size, value);
611
+ this._size += 4;
612
+ return this;
613
+ }
614
+ writeDouble(value) {
615
+ this.reserve(this._size + 8);
616
+ this.view.setFloat64(this._size, value);
617
+ this._size += 8;
618
+ return this;
619
+ }
620
+ write7Bit(value) {
621
+ let byte = value & 0x7f;
622
+ while ((value = Math.floor(value / 0x80))) {
623
+ // equivalent to >>=7 for JS!
624
+ this.write8(0x80 | byte);
625
+ byte = value & 0x7f;
626
+ }
627
+ return this.write8(byte);
628
+ }
629
+ writeString(value) {
630
+ return this.write(toBin(value)).write8(0);
631
+ }
632
+ writeHex(value) {
633
+ for (let i = 0; i < value.length; i += 2) {
634
+ this.write8(parseInt(value.substring(i, i + 2), 16));
635
+ }
636
+ return this;
637
+ }
638
+ reserve(size) {
639
+ if (!this._data) {
640
+ throw Error('buffer not writable');
641
+ }
642
+ if (size <= this._data.byteLength) {
643
+ return this;
644
+ }
645
+ if (this._isConst) {
646
+ throw Error('writing exceeds maximum ' + this._data.byteLength + ' bytes limit');
647
+ }
648
+ --size;
649
+ size |= size >> 1;
650
+ size |= size >> 2;
651
+ size |= size >> 4;
652
+ size |= size >> 8;
653
+ size |= size >> 16;
654
+ ++size;
655
+ const data = new Uint8Array(size);
656
+ data.set(this._data); // copy old buffer!
657
+ this._data = data;
658
+ this._view = undefined; // release view
659
+ return this;
660
+ }
661
+ }/**
662
+ * Copyright 2024 Ceeblue B.V.
663
+ * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.
664
+ * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.
665
+ */
652
666
  /**
653
667
  * Log levels
654
668
  */
@@ -2389,4 +2403,4 @@ class UIMetrics {
2389
2403
  * This file is part of https://github.com/CeeblueTV/web-utils which is released under GNU Affero General Public License.
2390
2404
  * See file LICENSE or go to https://spdx.org/licenses/AGPL-3.0-or-later.html for full license details.
2391
2405
  */
2392
- const VERSION = '3.1.0';export{BinaryReader,BinaryWriter,BitReader,ByteRate,Connect,EpochTime,EventEmitter,FixMap,Log,LogLevel,Loggable,NetAddress,Numbers,Queue,SDP,UIMetrics,Util,VERSION,WebSocketReliable,log};//# sourceMappingURL=web-utils.js.map
2406
+ const VERSION = '3.2.0';export{BinaryReader,BinaryWriter,BitReader,ByteRate,Connect,EpochTime,EventEmitter,FixMap,Log,LogLevel,Loggable,NetAddress,Numbers,Queue,SDP,UIMetrics,Util,VERSION,WebSocketReliable,log};//# sourceMappingURL=web-utils.js.map