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

visgl / loaders.gl / 24139120841

08 Apr 2026 01:53PM UTC coverage: 65.319% (+30.2%) from 35.137%
24139120841

push

github

web-flow
chore: Replace puppeteer with playwright (#3350)

14216 of 18890 branches covered (75.26%)

Branch coverage included in aggregate %.

3 of 3 new or added lines in 1 file covered. (100.0%)

3248 existing lines in 369 files now uncovered.

73509 of 115413 relevant lines covered (63.69%)

5763.45 hits per line

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

85.71
/modules/loader-utils/src/lib/binary-utils/memory-conversion-utils.ts
1
// loaders.gl
1✔
2
// SPDX-License-Identifier: MIT
1✔
3
// Copyright (c) vis.gl contributors
1✔
4

1✔
5
import {isSharedArrayBuffer} from '../javascript-utils/is-type';
1✔
6
import * as node from '../node/buffer';
1✔
7

1✔
8
/**
1✔
9
 * Check for Node.js `Buffer` (without triggering bundler to include Buffer polyfill on browser)
1✔
10
 */
1✔
11
export function isBuffer(value: any): value is Buffer {
1✔
12
  return value && typeof value === 'object' && value.isBuffer;
1,087✔
13
}
524✔
14

524✔
15
/**
524✔
16
 * Converts to Node.js `Buffer` (without triggering bundler to include Buffer polyfill on browser)
524✔
17
 * @todo better data type
524✔
18
 */
524✔
19
export function toBuffer(data: unknown): Buffer {
524!
20
  return node.toBuffer ? node.toBuffer(data as any) : (data as Buffer);
✔
21
}
×
22

501✔
23
/**
499✔
24
 * Convert an object to an array buffer. Handles SharedArrayBuffers.
499✔
25
 */
499✔
26
export function toArrayBuffer(
499✔
27
  data: Buffer | ArrayBufferLike | ArrayBufferView | string | Blob
705✔
28
): ArrayBuffer {
705✔
29
  // Note: Should be called first, Buffers can trigger other detections below
705✔
30
  if (isBuffer(data)) {
705!
31
    return node.toArrayBuffer(data);
✔
32
  }
×
33

705✔
34
  if (data instanceof ArrayBuffer) {
705✔
35
    return data;
25✔
36
  }
25✔
37

680✔
38
  if (isSharedArrayBuffer(data)) {
703!
39
    return copyToArrayBuffer(data);
✔
40
  }
×
41

680✔
42
  // Node Buffers look like Uint8Arrays (Check isBuffer first)
680!
43
  if (ArrayBuffer.isView(data)) {
703✔
44
    // TODO - ArrayBufferLike type mess
678✔
45
    const buffer = data.buffer as ArrayBuffer;
479✔
46
    if (data.byteOffset === 0 && data.byteLength === data.buffer.byteLength) {
479!
UNCOV
47
      return buffer;
×
UNCOV
48
    }
×
49
    return buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
479✔
50
  }
440✔
51

440✔
52
  if (typeof data === 'string') {
440✔
53
    const text = data;
479✔
54
    const uint8Array = new TextEncoder().encode(text);
479!
UNCOV
55
    return uint8Array.buffer;
×
UNCOV
56
  }
×
57

1✔
58
  // HACK to support Blob polyfill
1✔
59
  if (data && typeof data === 'object' && (data as any)._toArrayBuffer) {
489!
60
    return (data as any)._toArrayBuffer();
489✔
61
  }
489✔
62

489✔
63
  throw new Error('toArrayBuffer');
489✔
64
}
489✔
65

489✔
66
/** Ensure that SharedArrayBuffers are copied into ArrayBuffers */
489✔
67
export function ensureArrayBuffer(bufferSource: ArrayBufferLike | ArrayBufferView): ArrayBuffer {
351✔
68
  if (bufferSource instanceof ArrayBuffer) {
486✔
69
    return bufferSource;
46✔
70
  }
46✔
71

440✔
72
  if (isSharedArrayBuffer(bufferSource)) {
482!
73
    return copyToArrayBuffer(bufferSource);
×
74
  }
×
75

440✔
76
  const {buffer, byteOffset, byteLength} = bufferSource;
440✔
77
  if (buffer instanceof ArrayBuffer && byteOffset === 0 && byteLength === buffer.byteLength) {
486✔
78
    return buffer;
440✔
79
  }
440✔
80
  return copyToArrayBuffer(buffer, byteOffset, byteLength);
×
81
}
×
82

1✔
83
/** Copies an ArrayBuffer or a section of an ArrayBuffer to a new ArrayBuffer, handles SharedArrayBuffers */
1✔
84
export function copyToArrayBuffer(
1✔
85
  buffer: ArrayBufferLike,
1,061✔
86
  byteOffset = 0,
1,061✔
87
  byteLength = buffer.byteLength - byteOffset
1,061✔
88
): ArrayBuffer {
1,061✔
89
  const view = new Uint8Array(buffer, byteOffset, byteLength);
1,061✔
90
  const copy = new Uint8Array(view.length);
1,061✔
91
  copy.set(view);
1,061✔
92
  return copy.buffer;
1,061✔
93
}
1,061✔
94

1✔
95
/** Convert an object to an ArrayBufferView, handles SharedArrayBuffers */
1✔
96
export function toArrayBufferView(
1✔
97
  data: ArrayBufferLike | ArrayBufferView
379✔
98
): ArrayBuffer | ArrayBufferView {
379✔
99
  if (ArrayBuffer.isView(data)) {
379✔
100
    return data;
5✔
101
  }
5✔
102

374✔
103
  // Create a view to support ArrayBufferLike sources such as SharedArrayBuffer
374✔
104
  return new Uint8Array(data);
374✔
105
}
374✔
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

© 2026 Coveralls, Inc