awa
This commit is contained in:
79
_internal/editor/esm/vs/base/common/buffer.js
Normal file
79
_internal/editor/esm/vs/base/common/buffer.js
Normal file
@@ -0,0 +1,79 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
import { Lazy } from './lazy.js';
|
||||
const hasBuffer = (typeof Buffer !== 'undefined');
|
||||
const indexOfTable = new Lazy(() => new Uint8Array(256));
|
||||
let textDecoder;
|
||||
export class VSBuffer {
|
||||
/**
|
||||
* When running in a nodejs context, if `actual` is not a nodejs Buffer, the backing store for
|
||||
* the returned `VSBuffer` instance might use a nodejs Buffer allocated from node's Buffer pool,
|
||||
* which is not transferrable.
|
||||
*/
|
||||
static wrap(actual) {
|
||||
if (hasBuffer && !(Buffer.isBuffer(actual))) {
|
||||
// https://nodejs.org/dist/latest-v10.x/docs/api/buffer.html#buffer_class_method_buffer_from_arraybuffer_byteoffset_length
|
||||
// Create a zero-copy Buffer wrapper around the ArrayBuffer pointed to by the Uint8Array
|
||||
actual = Buffer.from(actual.buffer, actual.byteOffset, actual.byteLength);
|
||||
}
|
||||
return new VSBuffer(actual);
|
||||
}
|
||||
constructor(buffer) {
|
||||
this.buffer = buffer;
|
||||
this.byteLength = this.buffer.byteLength;
|
||||
}
|
||||
toString() {
|
||||
if (hasBuffer) {
|
||||
return this.buffer.toString();
|
||||
}
|
||||
else {
|
||||
if (!textDecoder) {
|
||||
textDecoder = new TextDecoder();
|
||||
}
|
||||
return textDecoder.decode(this.buffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
export function readUInt16LE(source, offset) {
|
||||
return (((source[offset + 0] << 0) >>> 0) |
|
||||
((source[offset + 1] << 8) >>> 0));
|
||||
}
|
||||
export function writeUInt16LE(destination, value, offset) {
|
||||
destination[offset + 0] = (value & 0b11111111);
|
||||
value = value >>> 8;
|
||||
destination[offset + 1] = (value & 0b11111111);
|
||||
}
|
||||
export function readUInt32BE(source, offset) {
|
||||
return (source[offset] * 2 ** 24
|
||||
+ source[offset + 1] * 2 ** 16
|
||||
+ source[offset + 2] * 2 ** 8
|
||||
+ source[offset + 3]);
|
||||
}
|
||||
export function writeUInt32BE(destination, value, offset) {
|
||||
destination[offset + 3] = value;
|
||||
value = value >>> 8;
|
||||
destination[offset + 2] = value;
|
||||
value = value >>> 8;
|
||||
destination[offset + 1] = value;
|
||||
value = value >>> 8;
|
||||
destination[offset] = value;
|
||||
}
|
||||
export function readUInt8(source, offset) {
|
||||
return source[offset];
|
||||
}
|
||||
export function writeUInt8(destination, value, offset) {
|
||||
destination[offset] = value;
|
||||
}
|
||||
const hexChars = '0123456789abcdef';
|
||||
export function encodeHex({ buffer }) {
|
||||
let result = '';
|
||||
for (let i = 0; i < buffer.length; i++) {
|
||||
const byte = buffer[i];
|
||||
result += hexChars[byte >>> 4];
|
||||
result += hexChars[byte & 0x0f];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
//# sourceMappingURL=buffer.js.map
|
||||
Reference in New Issue
Block a user