1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
"use strict";
function createBuffer(BufferPrototype, BufferStatic, Realm) {
"use strict";
var Uint8ArraySubarray = Realm.Uint8Array.prototype.subarray;
var isUint8Array = (value) => value instanceof Realm.Uint8Array;
var SymbolToPrimitive = Realm.Symbol.toPrimitive;
var isArray = Realm.Array.isArray;
var isArrayBufferLike =
"SharedArrayBuffer" in Realm
? () =>
value instanceof Realm.ArrayBuffer ||
value instanceof Realm.SharedArrayBuffer
: () => value instanceof Realm.ArrayBuffer;
var BufferInstance = class BufferInstance extends Realm.Uint8Array {
constructor(bufferOrLength, byteOffset, length) {
super(bufferOrLength, byteOffset, length);
}
static isBuffer(obj) {
return obj instanceof BufferInstance;
}
static from(value, encodingOrOffset, length) {
switch (typeof value) {
case "string": {
return BufferStatic.fromString(value, encodingOrOffset, length);
}
case "object": {
if (isUint8Array(value)) {
return BufferStatic.fromUint8Array(value, encodingOrOffset, length);
}
if (isArrayBufferLike(value)) {
return new BufferInstance(value, 0, length);
}
const valueOf = value.valueOf && value.valueOf();
if (
valueOf != null &&
valueOf !== value &&
(typeof valueOf === "string" || typeof valueOf === "object")
) {
return BufferInstance.from(valueOf, encodingOrOffset, length);
}
if (typeof value[SymbolToPrimitive] === "function") {
const primitive = value[SymbolToPrimitive]("string");
if (typeof primitive === "string") {
return BufferStatic.fromString(primitive, encodingOrOffset);
}
}
if (isArray(value)) {
return BufferStatic.fromArray(value, encodingOrOffset, length);
}
}
}
throw new TypeError(
"First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object."
);
}
slice(start, end) {
return Uint8ArraySubarray.call(this, start, end);
}
static get poolSize() {
return BufferStatic._poolSize;
}
static set poolSize(value) {
BufferStatic._poolSize = value;
}
get parent() {
return this.buffer;
}
get offset() {
return this.byteOffset;
}
};
Object.assign(BufferInstance, BufferStatic);
Object.assign(BufferInstance.prototype, BufferPrototype);
Object.defineProperty(BufferInstance, "name", {
value: "Buffer",
configurable: false,
enumerable: false,
});
return BufferInstance;
}
|