uint8arraylist 1.2.0 → 1.5.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.
@@ -1,13 +1,34 @@
1
1
  declare type Appendable = Uint8ArrayList | Uint8Array;
2
+ /**
3
+ * Check if object is a CID instance
4
+ */
5
+ export declare function isUint8ArrayList(value: any): value is Uint8ArrayList;
2
6
  export declare class Uint8ArrayList implements Iterable<Uint8Array> {
3
7
  private bufs;
4
8
  length: number;
5
9
  constructor(...data: Appendable[]);
6
10
  [Symbol.iterator](): Generator<Uint8Array, void, undefined>;
7
11
  get byteLength(): number;
12
+ /**
13
+ * Add one or more `bufs` to this Uint8ArrayList
14
+ */
8
15
  append(...bufs: Appendable[]): void;
16
+ /**
17
+ * Add all `bufs` to this Uint8ArrayList
18
+ */
9
19
  appendAll(bufs: Appendable[]): void;
20
+ /**
21
+ * Read the value at `index`
22
+ */
10
23
  get(index: number): number;
24
+ /**
25
+ * Set the value at `index` to `value`
26
+ */
27
+ set(index: number, value: number): void;
28
+ /**
29
+ * Copy bytes from `buf` to the index specified by `offset`
30
+ */
31
+ write(buf: Appendable, offset?: number): void;
11
32
  /**
12
33
  * Remove bytes from the front of the pool
13
34
  */
@@ -18,6 +39,26 @@ export declare class Uint8ArrayList implements Iterable<Uint8Array> {
18
39
  bufs: Uint8Array[];
19
40
  length: number;
20
41
  };
42
+ getInt8(byteOffset: number): number;
43
+ setInt8(byteOffset: number, value: number): void;
44
+ getInt16(byteOffset: number, littleEndian?: boolean): number;
45
+ setInt16(byteOffset: number, value: number, littleEndian?: boolean): void;
46
+ getInt32(byteOffset: number, littleEndian?: boolean): number;
47
+ setInt32(byteOffset: number, value: number, littleEndian?: boolean): void;
48
+ getBigInt64(byteOffset: number, littleEndian?: boolean): BigInt;
49
+ setBigInt64(byteOffset: number, value: bigint, littleEndian?: boolean): void;
50
+ getUint8(byteOffset: number): number;
51
+ setUint8(byteOffset: number, value: number): void;
52
+ getUint16(byteOffset: number, littleEndian?: boolean): number;
53
+ setUint16(byteOffset: number, value: number, littleEndian?: boolean): void;
54
+ getUint32(byteOffset: number, littleEndian?: boolean): number;
55
+ setUint32(byteOffset: number, value: number, littleEndian?: boolean): void;
56
+ getBigUint64(byteOffset: number, littleEndian?: boolean): BigInt;
57
+ setBigUint64(byteOffset: number, value: bigint, littleEndian?: boolean): void;
58
+ getFloat32(byteOffset: number, littleEndian?: boolean): number;
59
+ setFloat32(byteOffset: number, value: number, littleEndian?: boolean): void;
60
+ getFloat64(byteOffset: number, littleEndian?: boolean): number;
61
+ setFloat64(byteOffset: number, value: number, littleEndian?: boolean): void;
21
62
  }
22
63
  export {};
23
64
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,aAAK,UAAU,GAAG,cAAc,GAAG,UAAU,CAAA;AAE7C,qBAAa,cAAe,YAAW,QAAQ,CAAC,UAAU,CAAC;IACzD,OAAO,CAAC,IAAI,CAAc;IACnB,MAAM,EAAE,MAAM,CAAA;gBAER,GAAG,IAAI,EAAE,UAAU,EAAE;IAOhC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAInB,IAAI,UAAU,WAEb;IAED,MAAM,CAAE,GAAG,IAAI,EAAE,UAAU,EAAE;IAI7B,SAAS,CAAE,IAAI,EAAE,UAAU,EAAE;IAgB7B,GAAG,CAAE,KAAK,EAAE,MAAM;IAoBlB;;OAEG;IACH,OAAO,CAAE,KAAK,EAAE,MAAM;IAsBtB,KAAK,CAAE,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;IAMrD,QAAQ,CAAE,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;IASxD,QAAQ,CAAE,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;;;;CA2DzD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -1,6 +1,32 @@
1
1
  import { concat } from 'uint8arrays';
2
+ const symbol = Symbol.for('@achingbrain/uint8arraylist');
3
+ function findBufAndOffset(bufs, index, totalLength) {
4
+ if (index == null || index < 0 || index >= totalLength) {
5
+ throw new RangeError('index is out of bounds');
6
+ }
7
+ let offset = 0;
8
+ for (const buf of bufs) {
9
+ const bufEnd = offset + buf.byteLength;
10
+ if (index < bufEnd) {
11
+ return {
12
+ buf,
13
+ index: index - offset
14
+ };
15
+ }
16
+ offset = bufEnd;
17
+ }
18
+ throw new RangeError('index is out of bounds');
19
+ }
20
+ /**
21
+ * Check if object is a CID instance
22
+ */
23
+ export function isUint8ArrayList(value) {
24
+ return Boolean(value?.[symbol]);
25
+ }
2
26
  export class Uint8ArrayList {
3
27
  constructor(...data) {
28
+ // Define symbol
29
+ Object.defineProperty(this, symbol, { value: true });
4
30
  this.bufs = [];
5
31
  this.length = 0;
6
32
  this.appendAll(data);
@@ -11,9 +37,15 @@ export class Uint8ArrayList {
11
37
  get byteLength() {
12
38
  return this.length;
13
39
  }
40
+ /**
41
+ * Add one or more `bufs` to this Uint8ArrayList
42
+ */
14
43
  append(...bufs) {
15
44
  this.appendAll(bufs);
16
45
  }
46
+ /**
47
+ * Add all `bufs` to this Uint8ArrayList
48
+ */
17
49
  appendAll(bufs) {
18
50
  let length = 0;
19
51
  for (const buf of bufs) {
@@ -21,26 +53,47 @@ export class Uint8ArrayList {
21
53
  length += buf.byteLength;
22
54
  this.bufs.push(buf);
23
55
  }
24
- else {
56
+ else if (isUint8ArrayList(buf)) {
25
57
  length += buf.length;
26
58
  this.bufs = this.bufs.concat(buf.bufs);
27
59
  }
60
+ else {
61
+ throw new Error('Could not append value, must be an Uint8Array or a Uint8ArrayList');
62
+ }
28
63
  }
29
64
  this.length += length;
30
65
  }
66
+ /**
67
+ * Read the value at `index`
68
+ */
31
69
  get(index) {
32
- if (index == null || index < 0 || index >= this.length) {
33
- throw new RangeError('index is out of bounds');
70
+ const res = findBufAndOffset(this.bufs, index, this.length);
71
+ return res.buf[res.index];
72
+ }
73
+ /**
74
+ * Set the value at `index` to `value`
75
+ */
76
+ set(index, value) {
77
+ const res = findBufAndOffset(this.bufs, index, this.length);
78
+ res.buf[res.index] = value;
79
+ }
80
+ /**
81
+ * Copy bytes from `buf` to the index specified by `offset`
82
+ */
83
+ write(buf, offset = 0) {
84
+ if (buf instanceof Uint8Array) {
85
+ for (let i = 0; i < buf.length; i++) {
86
+ this.set(offset + i, buf[i]);
87
+ }
34
88
  }
35
- let offset = 0;
36
- for (const buf of this.bufs) {
37
- const bufEnd = offset + buf.byteLength;
38
- if (index < bufEnd) {
39
- return buf[index - offset];
89
+ else if (isUint8ArrayList(buf)) {
90
+ for (let i = 0; i < buf.length; i++) {
91
+ this.set(offset + i, buf.get(i));
40
92
  }
41
- offset = bufEnd;
42
93
  }
43
- throw new RangeError('index is out of bounds');
94
+ else {
95
+ throw new Error('Could not write value, must be an Uint8Array or a Uint8ArrayList');
96
+ }
44
97
  }
45
98
  /**
46
99
  * Remove bytes from the front of the pool
@@ -121,5 +174,115 @@ export class Uint8ArrayList {
121
174
  }
122
175
  return { bufs, length: endExclusive - beginInclusive };
123
176
  }
177
+ getInt8(byteOffset) {
178
+ const buf = this.slice(byteOffset, byteOffset + 1);
179
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
180
+ return view.getInt8(0);
181
+ }
182
+ setInt8(byteOffset, value) {
183
+ const buf = new Uint8Array(1);
184
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
185
+ view.setInt8(0, value);
186
+ this.write(buf, byteOffset);
187
+ }
188
+ getInt16(byteOffset, littleEndian) {
189
+ const buf = this.slice(byteOffset, byteOffset + 2);
190
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
191
+ return view.getInt16(0, littleEndian);
192
+ }
193
+ setInt16(byteOffset, value, littleEndian) {
194
+ const buf = new Uint8Array(2);
195
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
196
+ view.setInt16(0, value, littleEndian);
197
+ this.write(buf, byteOffset);
198
+ }
199
+ getInt32(byteOffset, littleEndian) {
200
+ const buf = this.slice(byteOffset, byteOffset + 4);
201
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
202
+ return view.getInt32(0, littleEndian);
203
+ }
204
+ setInt32(byteOffset, value, littleEndian) {
205
+ const buf = new Uint8Array(4);
206
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
207
+ view.setInt32(0, value, littleEndian);
208
+ this.write(buf, byteOffset);
209
+ }
210
+ getBigInt64(byteOffset, littleEndian) {
211
+ const buf = this.slice(byteOffset, byteOffset + 8);
212
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
213
+ return view.getBigInt64(0, littleEndian);
214
+ }
215
+ setBigInt64(byteOffset, value, littleEndian) {
216
+ const buf = new Uint8Array(8);
217
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
218
+ view.setBigInt64(0, value, littleEndian);
219
+ this.write(buf, byteOffset);
220
+ }
221
+ getUint8(byteOffset) {
222
+ const buf = this.slice(byteOffset, byteOffset + 1);
223
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
224
+ return view.getUint8(0);
225
+ }
226
+ setUint8(byteOffset, value) {
227
+ const buf = new Uint8Array(1);
228
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
229
+ view.setUint8(0, value);
230
+ this.write(buf, byteOffset);
231
+ }
232
+ getUint16(byteOffset, littleEndian) {
233
+ const buf = this.slice(byteOffset, byteOffset + 2);
234
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
235
+ return view.getUint16(0, littleEndian);
236
+ }
237
+ setUint16(byteOffset, value, littleEndian) {
238
+ const buf = new Uint8Array(2);
239
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
240
+ view.setUint16(0, value, littleEndian);
241
+ this.write(buf, byteOffset);
242
+ }
243
+ getUint32(byteOffset, littleEndian) {
244
+ const buf = this.slice(byteOffset, byteOffset + 4);
245
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
246
+ return view.getUint32(0, littleEndian);
247
+ }
248
+ setUint32(byteOffset, value, littleEndian) {
249
+ const buf = new Uint8Array(4);
250
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
251
+ view.setUint32(0, value, littleEndian);
252
+ this.write(buf, byteOffset);
253
+ }
254
+ getBigUint64(byteOffset, littleEndian) {
255
+ const buf = this.slice(byteOffset, byteOffset + 8);
256
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
257
+ return view.getBigUint64(0, littleEndian);
258
+ }
259
+ setBigUint64(byteOffset, value, littleEndian) {
260
+ const buf = new Uint8Array(8);
261
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
262
+ view.setBigUint64(0, value, littleEndian);
263
+ this.write(buf, byteOffset);
264
+ }
265
+ getFloat32(byteOffset, littleEndian) {
266
+ const buf = this.slice(byteOffset, byteOffset + 4);
267
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
268
+ return view.getFloat32(0, littleEndian);
269
+ }
270
+ setFloat32(byteOffset, value, littleEndian) {
271
+ const buf = new Uint8Array(4);
272
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
273
+ view.setFloat32(0, value, littleEndian);
274
+ this.write(buf, byteOffset);
275
+ }
276
+ getFloat64(byteOffset, littleEndian) {
277
+ const buf = this.slice(byteOffset, byteOffset + 8);
278
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
279
+ return view.getFloat64(0, littleEndian);
280
+ }
281
+ setFloat64(byteOffset, value, littleEndian) {
282
+ const buf = new Uint8Array(8);
283
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
284
+ view.setFloat64(0, value, littleEndian);
285
+ this.write(buf, byteOffset);
286
+ }
124
287
  }
125
288
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uint8arraylist",
3
- "version": "1.2.0",
3
+ "version": "1.5.0",
4
4
  "description": "Append and consume bytes using only no-copy operations",
5
5
  "author": "Alex Potsides <alex@achingbrain.net>",
6
6
  "license": "Apache-2.0 OR MIT",
package/src/index.ts CHANGED
@@ -1,12 +1,47 @@
1
1
  import { concat } from 'uint8arrays'
2
2
 
3
+ const symbol = Symbol.for('@achingbrain/uint8arraylist')
4
+
3
5
  type Appendable = Uint8ArrayList | Uint8Array
4
6
 
7
+ function findBufAndOffset (bufs: Uint8Array[], index: number, totalLength: number) {
8
+ if (index == null || index < 0 || index >= totalLength) {
9
+ throw new RangeError('index is out of bounds')
10
+ }
11
+
12
+ let offset = 0
13
+
14
+ for (const buf of bufs) {
15
+ const bufEnd = offset + buf.byteLength
16
+
17
+ if (index < bufEnd) {
18
+ return {
19
+ buf,
20
+ index: index - offset
21
+ }
22
+ }
23
+
24
+ offset = bufEnd
25
+ }
26
+
27
+ throw new RangeError('index is out of bounds')
28
+ }
29
+
30
+ /**
31
+ * Check if object is a CID instance
32
+ */
33
+ export function isUint8ArrayList (value: any): value is Uint8ArrayList {
34
+ return Boolean(value?.[symbol])
35
+ }
36
+
5
37
  export class Uint8ArrayList implements Iterable<Uint8Array> {
6
38
  private bufs: Uint8Array[]
7
39
  public length: number
8
40
 
9
41
  constructor (...data: Appendable[]) {
42
+ // Define symbol
43
+ Object.defineProperty(this, symbol, { value: true })
44
+
10
45
  this.bufs = []
11
46
  this.length = 0
12
47
 
@@ -21,10 +56,16 @@ export class Uint8ArrayList implements Iterable<Uint8Array> {
21
56
  return this.length
22
57
  }
23
58
 
59
+ /**
60
+ * Add one or more `bufs` to this Uint8ArrayList
61
+ */
24
62
  append (...bufs: Appendable[]) {
25
63
  this.appendAll(bufs)
26
64
  }
27
65
 
66
+ /**
67
+ * Add all `bufs` to this Uint8ArrayList
68
+ */
28
69
  appendAll (bufs: Appendable[]) {
29
70
  let length = 0
30
71
 
@@ -32,33 +73,50 @@ export class Uint8ArrayList implements Iterable<Uint8Array> {
32
73
  if (buf instanceof Uint8Array) {
33
74
  length += buf.byteLength
34
75
  this.bufs.push(buf)
35
- } else {
76
+ } else if (isUint8ArrayList(buf)) {
36
77
  length += buf.length
37
78
  this.bufs = this.bufs.concat(buf.bufs)
79
+ } else {
80
+ throw new Error('Could not append value, must be an Uint8Array or a Uint8ArrayList')
38
81
  }
39
82
  }
40
83
 
41
84
  this.length += length
42
85
  }
43
86
 
87
+ /**
88
+ * Read the value at `index`
89
+ */
44
90
  get (index: number) {
45
- if (index == null || index < 0 || index >= this.length) {
46
- throw new RangeError('index is out of bounds')
47
- }
91
+ const res = findBufAndOffset(this.bufs, index, this.length)
48
92
 
49
- let offset = 0
93
+ return res.buf[res.index]
94
+ }
50
95
 
51
- for (const buf of this.bufs) {
52
- const bufEnd = offset + buf.byteLength
96
+ /**
97
+ * Set the value at `index` to `value`
98
+ */
99
+ set (index: number, value: number) {
100
+ const res = findBufAndOffset(this.bufs, index, this.length)
53
101
 
54
- if (index < bufEnd) {
55
- return buf[index - offset]
56
- }
102
+ res.buf[res.index] = value
103
+ }
57
104
 
58
- offset = bufEnd
105
+ /**
106
+ * Copy bytes from `buf` to the index specified by `offset`
107
+ */
108
+ write (buf: Appendable, offset: number = 0) {
109
+ if (buf instanceof Uint8Array) {
110
+ for (let i = 0; i < buf.length; i++) {
111
+ this.set(offset + i, buf[i])
112
+ }
113
+ } else if (isUint8ArrayList(buf)) {
114
+ for (let i = 0; i < buf.length; i++) {
115
+ this.set(offset + i, buf.get(i))
116
+ }
117
+ } else {
118
+ throw new Error('Could not write value, must be an Uint8Array or a Uint8ArrayList')
59
119
  }
60
-
61
- throw new RangeError('index is out of bounds')
62
120
  }
63
121
 
64
122
  /**
@@ -160,4 +218,154 @@ export class Uint8ArrayList implements Iterable<Uint8Array> {
160
218
 
161
219
  return { bufs, length: endExclusive - beginInclusive }
162
220
  }
221
+
222
+ getInt8 (byteOffset: number): number {
223
+ const buf = this.slice(byteOffset, byteOffset + 1)
224
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
225
+
226
+ return view.getInt8(0)
227
+ }
228
+
229
+ setInt8 (byteOffset: number, value: number): void {
230
+ const buf = new Uint8Array(1)
231
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
232
+ view.setInt8(0, value)
233
+
234
+ this.write(buf, byteOffset)
235
+ }
236
+
237
+ getInt16 (byteOffset: number, littleEndian?: boolean): number {
238
+ const buf = this.slice(byteOffset, byteOffset + 2)
239
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
240
+
241
+ return view.getInt16(0, littleEndian)
242
+ }
243
+
244
+ setInt16 (byteOffset: number, value: number, littleEndian?: boolean): void {
245
+ const buf = new Uint8Array(2)
246
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
247
+ view.setInt16(0, value, littleEndian)
248
+
249
+ this.write(buf, byteOffset)
250
+ }
251
+
252
+ getInt32 (byteOffset: number, littleEndian?: boolean): number {
253
+ const buf = this.slice(byteOffset, byteOffset + 4)
254
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
255
+
256
+ return view.getInt32(0, littleEndian)
257
+ }
258
+
259
+ setInt32 (byteOffset: number, value: number, littleEndian?: boolean): void {
260
+ const buf = new Uint8Array(4)
261
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
262
+ view.setInt32(0, value, littleEndian)
263
+
264
+ this.write(buf, byteOffset)
265
+ }
266
+
267
+ getBigInt64 (byteOffset: number, littleEndian?: boolean): BigInt {
268
+ const buf = this.slice(byteOffset, byteOffset + 8)
269
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
270
+
271
+ return view.getBigInt64(0, littleEndian)
272
+ }
273
+
274
+ setBigInt64 (byteOffset: number, value: bigint, littleEndian?: boolean): void {
275
+ const buf = new Uint8Array(8)
276
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
277
+ view.setBigInt64(0, value, littleEndian)
278
+
279
+ this.write(buf, byteOffset)
280
+ }
281
+
282
+ getUint8 (byteOffset: number): number {
283
+ const buf = this.slice(byteOffset, byteOffset + 1)
284
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
285
+
286
+ return view.getUint8(0)
287
+ }
288
+
289
+ setUint8 (byteOffset: number, value: number): void {
290
+ const buf = new Uint8Array(1)
291
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
292
+ view.setUint8(0, value)
293
+
294
+ this.write(buf, byteOffset)
295
+ }
296
+
297
+ getUint16 (byteOffset: number, littleEndian?: boolean): number {
298
+ const buf = this.slice(byteOffset, byteOffset + 2)
299
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
300
+
301
+ return view.getUint16(0, littleEndian)
302
+ }
303
+
304
+ setUint16 (byteOffset: number, value: number, littleEndian?: boolean): void {
305
+ const buf = new Uint8Array(2)
306
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
307
+ view.setUint16(0, value, littleEndian)
308
+
309
+ this.write(buf, byteOffset)
310
+ }
311
+
312
+ getUint32 (byteOffset: number, littleEndian?: boolean): number {
313
+ const buf = this.slice(byteOffset, byteOffset + 4)
314
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
315
+
316
+ return view.getUint32(0, littleEndian)
317
+ }
318
+
319
+ setUint32 (byteOffset: number, value: number, littleEndian?: boolean): void {
320
+ const buf = new Uint8Array(4)
321
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
322
+ view.setUint32(0, value, littleEndian)
323
+
324
+ this.write(buf, byteOffset)
325
+ }
326
+
327
+ getBigUint64 (byteOffset: number, littleEndian?: boolean): BigInt {
328
+ const buf = this.slice(byteOffset, byteOffset + 8)
329
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
330
+
331
+ return view.getBigUint64(0, littleEndian)
332
+ }
333
+
334
+ setBigUint64 (byteOffset: number, value: bigint, littleEndian?: boolean): void {
335
+ const buf = new Uint8Array(8)
336
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
337
+ view.setBigUint64(0, value, littleEndian)
338
+
339
+ this.write(buf, byteOffset)
340
+ }
341
+
342
+ getFloat32 (byteOffset: number, littleEndian?: boolean): number {
343
+ const buf = this.slice(byteOffset, byteOffset + 4)
344
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
345
+
346
+ return view.getFloat32(0, littleEndian)
347
+ }
348
+
349
+ setFloat32 (byteOffset: number, value: number, littleEndian?: boolean): void {
350
+ const buf = new Uint8Array(4)
351
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
352
+ view.setFloat32(0, value, littleEndian)
353
+
354
+ this.write(buf, byteOffset)
355
+ }
356
+
357
+ getFloat64 (byteOffset: number, littleEndian?: boolean): number {
358
+ const buf = this.slice(byteOffset, byteOffset + 8)
359
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
360
+
361
+ return view.getFloat64(0, littleEndian)
362
+ }
363
+
364
+ setFloat64 (byteOffset: number, value: number, littleEndian?: boolean): void {
365
+ const buf = new Uint8Array(8)
366
+ const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
367
+ view.setFloat64(0, value, littleEndian)
368
+
369
+ this.write(buf, byteOffset)
370
+ }
163
371
  }