@wener/utils 1.1.16 → 1.1.18
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.
- package/dist/cjs/index.cjs +5 -5
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/server.cjs +1 -1
- package/dist/cjs/server.cjs.map +1 -1
- package/dist/esm/index.js +11 -11
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/server.js +1 -1
- package/dist/esm/server.js.map +1 -1
- package/dist/system/index.js +5 -5
- package/dist/system/index.js.map +1 -1
- package/dist/system/server.js +1 -1
- package/dist/system/server.js.map +1 -1
- package/lib/asyncs/createLazyPromise.js.map +1 -1
- package/lib/browsers/download.js.map +1 -1
- package/lib/browsers/getFileFromDataTransfer.js.map +1 -1
- package/lib/browsers/loaders.js.map +1 -1
- package/lib/crypto/getNodeCrypto.js.map +1 -1
- package/lib/crypto/getRandomValues.js.map +1 -1
- package/lib/crypto/pem/pem.js.map +1 -1
- package/lib/crypto/ulid.js +4 -1
- package/lib/crypto/ulid.js.map +1 -1
- package/lib/fetch/dumpRequest.js.map +1 -1
- package/lib/fetch/dumpResponse.js.map +1 -1
- package/lib/i18n/createTranslate.js.map +1 -1
- package/lib/io/ArrayBuffers.js +142 -164
- package/lib/io/ArrayBuffers.js.map +1 -1
- package/lib/io/Buffer.js +5 -6
- package/lib/io/Buffer.js.map +1 -1
- package/lib/libs/ms.js.map +1 -1
- package/lib/modules/parseModuleId.js.map +1 -1
- package/lib/server.js +8 -5
- package/lib/server.js.map +1 -1
- package/lib/servers/crypto/md5.js +8 -0
- package/lib/servers/crypto/md5.js.map +1 -0
- package/lib/servers/fetch/createFetchWithProxy.js.map +1 -0
- package/lib/servers/fetch/createFetchWithProxyByUndici.js.map +1 -0
- package/lib/servers/fetch/createFetchWithRetry.js +70 -0
- package/lib/servers/fetch/createFetchWithRetry.js.map +1 -0
- package/lib/servers/getPackageDir.js +18 -0
- package/lib/servers/getPackageDir.js.map +1 -0
- package/lib/servers/polyfill/polyfillBrowser.js.map +1 -0
- package/lib/servers/{polyfillCrypto.js → polyfill/polyfillCrypto.js} +1 -1
- package/lib/servers/polyfill/polyfillCrypto.js.map +1 -0
- package/lib/servers/polyfill/polyfillFetch.js.map +1 -0
- package/lib/servers/{polyfillJsDom.js → polyfill/polyfillJsDom.js} +1 -1
- package/lib/servers/polyfill/polyfillJsDom.js.map +1 -0
- package/lib/strings/formatBytes.js.map +1 -1
- package/lib/validations/isUUID.js +1 -1
- package/lib/validations/isUUID.js.map +1 -1
- package/lib/validations/parseTimestamp.js.map +1 -1
- package/package.json +6 -9
- package/src/crypto/hashing.test.ts +4 -1
- package/src/crypto/md5.d.ts +1 -0
- package/src/crypto/md5.js +44 -0
- package/src/crypto/ulid.test.ts +14 -1
- package/src/crypto/ulid.ts +5 -2
- package/src/fetch/types.ts +1 -1
- package/src/langs/hashCode.ts +37 -0
- package/src/logging/Logger.ts +6 -6
- package/src/logging/slog.test.ts +8 -0
- package/src/logging/slog.ts +100 -0
- package/src/maths/clamp.ts +1 -0
- package/src/server.ts +9 -5
- package/src/servers/crypto/md5.ts +5 -0
- package/src/servers/{createFetchWithProxyByNodeFetch.ts → fetch/createFetchWithProxyByNodeFetch.ts} +2 -2
- package/src/servers/{createFetchWithProxyByUndici.ts → fetch/createFetchWithProxyByUndici.ts} +3 -2
- package/src/servers/fetch/createFetchWithRetry.ts +95 -0
- package/src/servers/getPackageDir.ts +16 -0
- package/src/servers/{polyfillCrypto.ts → polyfill/polyfillCrypto.ts} +1 -1
- package/src/servers/{polyfillFetch.ts → polyfill/polyfillFetch.ts} +1 -1
- package/src/servers/{polyfillJsDom.ts → polyfill/polyfillJsDom.ts} +1 -1
- package/src/servers/{polyfillWebSocket.ts → polyfill/polyfillWebSocket.ts} +2 -2
- package/src/validations/isUUID.test.ts +14 -0
- package/src/validations/isUUID.ts +2 -2
- package/lib/servers/createFetchWithProxy.js.map +0 -1
- package/lib/servers/createFetchWithProxyByUndici.js.map +0 -1
- package/lib/servers/polyfillBrowser.js.map +0 -1
- package/lib/servers/polyfillCrypto.js.map +0 -1
- package/lib/servers/polyfillFetch.js.map +0 -1
- package/lib/servers/polyfillJsDom.js.map +0 -1
- /package/lib/servers/{createFetchWithProxy.js → fetch/createFetchWithProxy.js} +0 -0
- /package/lib/servers/{createFetchWithProxyByUndici.js → fetch/createFetchWithProxyByUndici.js} +0 -0
- /package/lib/servers/{polyfillBrowser.js → polyfill/polyfillBrowser.js} +0 -0
- /package/lib/servers/{polyfillFetch.js → polyfill/polyfillFetch.js} +0 -0
- /package/src/servers/{createFetchWithProxy.ts → fetch/createFetchWithProxy.ts} +0 -0
- /package/src/servers/{polyfillBrowser.test.ts → polyfill/polyfillBrowser.test.ts} +0 -0
- /package/src/servers/{polyfillBrowser.ts → polyfill/polyfillBrowser.ts} +0 -0
package/lib/io/ArrayBuffers.js
CHANGED
|
@@ -3,193 +3,171 @@ import { classOf } from '../langs/classOf.js';
|
|
|
3
3
|
import { encodeArrayBufferToBase64, decodeBase64ToArrayBuffer } from './base64.js';
|
|
4
4
|
import { isBuffer } from './isBuffer.js';
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
};
|
|
10
|
-
var __privateGet = (obj, member, getter) => {
|
|
11
|
-
__accessCheck(obj, member, "read from private field");
|
|
12
|
-
return getter ? getter.call(obj) : member.get(obj);
|
|
13
|
-
};
|
|
14
|
-
var __privateAdd = (obj, member, value) => {
|
|
15
|
-
if (member.has(obj))
|
|
16
|
-
throw TypeError("Cannot add the same private member more than once");
|
|
17
|
-
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
18
|
-
};
|
|
19
|
-
var __privateSet = (obj, member, value, setter) => {
|
|
20
|
-
__accessCheck(obj, member, "write to private field");
|
|
21
|
-
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
22
|
-
return value;
|
|
23
|
-
};
|
|
24
|
-
var _nativeBufferAllowed, _isBufferAvailable;
|
|
25
|
-
const _ArrayBuffers = class {
|
|
6
|
+
class ArrayBuffers {
|
|
7
|
+
static #nativeBufferAllowed = true;
|
|
8
|
+
static #isBufferAvailable;
|
|
26
9
|
static isNativeBufferAvailable() {
|
|
27
10
|
var _a, _b, _c;
|
|
28
|
-
return (_c =
|
|
11
|
+
return (_c = this.#isBufferAvailable) != null ? _c : this.#isBufferAvailable = !((_b = (_a = getGlobalThis().Buffer) == null ? void 0 : _a.isPollyfill) == null ? void 0 : _b.call(_a));
|
|
29
12
|
}
|
|
30
13
|
static isNativeBufferAllowed() {
|
|
31
|
-
return
|
|
14
|
+
return this.#nativeBufferAllowed && this.#isBufferAvailable;
|
|
32
15
|
}
|
|
33
16
|
static setNativeBufferAllowed(v) {
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
17
|
+
this.#nativeBufferAllowed = v;
|
|
18
|
+
}
|
|
19
|
+
static isArrayBuffer = (v) => {
|
|
20
|
+
return v instanceof ArrayBuffer;
|
|
21
|
+
};
|
|
22
|
+
static slice = (o, start, end) => {
|
|
23
|
+
if (isBuffer(o)) {
|
|
24
|
+
return Uint8Array.prototype.slice.call(o, start, end);
|
|
25
|
+
}
|
|
26
|
+
return o.slice(start, end);
|
|
27
|
+
};
|
|
28
|
+
static asView = (TypedArray, v, byteOffset, byteLength) => {
|
|
29
|
+
if (v instanceof TypedArray && (byteOffset != null ? byteOffset : 0) === 0 && byteLength === void 0) {
|
|
30
|
+
return v;
|
|
31
|
+
}
|
|
32
|
+
if (ArrayBuffer.isView(v) || isBuffer(v)) {
|
|
33
|
+
if (ArrayBuffers.isNativeBufferAllowed() && TypedArray === Buffer) {
|
|
34
|
+
return Buffer.from(v.buffer, byteOffset, byteLength);
|
|
35
|
+
}
|
|
36
|
+
return new TypedArray(v.buffer, v.byteOffset + (byteOffset != null ? byteOffset : 0), byteLength != null ? byteLength : v.byteLength);
|
|
37
|
+
}
|
|
38
|
+
return new TypedArray(v, byteOffset, byteLength);
|
|
39
|
+
};
|
|
40
|
+
static toString = (buf, encoding = "utf8") => {
|
|
41
|
+
if (typeof buf === "string") {
|
|
42
|
+
switch (encoding) {
|
|
43
|
+
case "base64":
|
|
44
|
+
return btoa(buf);
|
|
45
|
+
case "utf-8":
|
|
46
|
+
case "utf8":
|
|
47
|
+
return buf;
|
|
48
|
+
default:
|
|
49
|
+
throw new Error(`[ArrayBuffers.toString] Unsupported encoding for string: ${encoding}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (ArrayBuffers.isNativeBufferAllowed()) {
|
|
53
|
+
return Buffer.from(ArrayBuffers.asView(Uint8Array, buf)).toString(encoding);
|
|
58
54
|
}
|
|
59
|
-
return new TypedArray(v.buffer, v.byteOffset + (byteOffset != null ? byteOffset : 0), byteLength != null ? byteLength : v.byteLength);
|
|
60
|
-
}
|
|
61
|
-
return new TypedArray(v, byteOffset, byteLength);
|
|
62
|
-
};
|
|
63
|
-
ArrayBuffers.toString = (buf, encoding = "utf8") => {
|
|
64
|
-
if (typeof buf === "string") {
|
|
65
55
|
switch (encoding) {
|
|
66
|
-
case "
|
|
67
|
-
|
|
68
|
-
|
|
56
|
+
case "hex": {
|
|
57
|
+
const view = ArrayBuffers.asView(Uint8Array, buf);
|
|
58
|
+
return [...view].map((b) => hexLookupTable[b]).join("");
|
|
59
|
+
}
|
|
60
|
+
case "base64": {
|
|
61
|
+
return encodeArrayBufferToBase64(ArrayBuffers.asView(Uint8Array, buf));
|
|
62
|
+
}
|
|
69
63
|
case "utf8":
|
|
70
|
-
|
|
64
|
+
case "utf-8":
|
|
65
|
+
return new TextDecoder().decode(buf);
|
|
66
|
+
case "ascii": {
|
|
67
|
+
const view = ArrayBuffers.asView(Uint8Array, buf);
|
|
68
|
+
return String.fromCharCode(...view.map((v) => v & 127));
|
|
69
|
+
}
|
|
70
|
+
case "latin1":
|
|
71
|
+
case "binary": {
|
|
72
|
+
const view = ArrayBuffers.asView(Uint8Array, buf);
|
|
73
|
+
return String.fromCharCode(...view);
|
|
74
|
+
}
|
|
75
|
+
case "ucs2":
|
|
76
|
+
case "ucs-2":
|
|
77
|
+
case "utf16le": {
|
|
78
|
+
const view = ArrayBuffers.asView(Uint8Array, buf);
|
|
79
|
+
let res = "";
|
|
80
|
+
for (let i = 0; i < view.length - 1; i += 2) {
|
|
81
|
+
res += String.fromCharCode(view[i] + view[i + 1] * 256);
|
|
82
|
+
}
|
|
83
|
+
return res;
|
|
84
|
+
}
|
|
71
85
|
default:
|
|
72
|
-
throw new Error(`[ArrayBuffers.toString]
|
|
86
|
+
throw new Error(`[ArrayBuffers.toString] Unknown encoding: ${encoding}`);
|
|
73
87
|
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
88
|
+
};
|
|
89
|
+
static toJSON = (v, reviver) => {
|
|
90
|
+
return JSON.parse(ArrayBuffers.toString(v), reviver);
|
|
91
|
+
};
|
|
92
|
+
static alloc = (size, fill, encoding) => {
|
|
93
|
+
if (fill !== void 0) {
|
|
94
|
+
if (typeof fill === "number") {
|
|
95
|
+
return new Uint8Array(size).fill(fill);
|
|
96
|
+
}
|
|
97
|
+
return ArrayBuffers.asView(Uint8Array, ArrayBuffers.from(fill, encoding)).slice(0, size);
|
|
82
98
|
}
|
|
83
|
-
|
|
84
|
-
|
|
99
|
+
return new ArrayBuffer(size);
|
|
100
|
+
};
|
|
101
|
+
static from = (v, encoding = "utf8") => {
|
|
102
|
+
if (!v) {
|
|
103
|
+
return new ArrayBuffer(0);
|
|
85
104
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
105
|
+
if (typeof v === "string") {
|
|
106
|
+
if (ArrayBuffers.isNativeBufferAllowed()) {
|
|
107
|
+
return Buffer.from(v, encoding);
|
|
108
|
+
}
|
|
109
|
+
switch (encoding) {
|
|
110
|
+
case "utf-8":
|
|
111
|
+
case "utf8":
|
|
112
|
+
return new TextEncoder().encode(v).buffer;
|
|
113
|
+
case "base64":
|
|
114
|
+
return decodeBase64ToArrayBuffer(v.replace(/[^0-9a-zA-Z=+/_]/g, ""));
|
|
115
|
+
default:
|
|
116
|
+
throw new Error(`[ArrayBuffers.from] Unknown encoding: ${encoding}`);
|
|
117
|
+
}
|
|
92
118
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
const view = _ArrayBuffers.asView(Uint8Array, buf);
|
|
96
|
-
return String.fromCharCode(...view);
|
|
119
|
+
if (v instanceof ArrayBuffer) {
|
|
120
|
+
return v;
|
|
97
121
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
const view = _ArrayBuffers.asView(Uint8Array, buf);
|
|
102
|
-
let res = "";
|
|
103
|
-
for (let i = 0; i < view.length - 1; i += 2) {
|
|
104
|
-
res += String.fromCharCode(view[i] + view[i + 1] * 256);
|
|
122
|
+
if (ArrayBuffer.isView(v) || isBuffer(v)) {
|
|
123
|
+
if (v.byteOffset !== 0) {
|
|
124
|
+
throw new Error("ArrayBuffers.from do not support view with offset");
|
|
105
125
|
}
|
|
106
|
-
return
|
|
107
|
-
}
|
|
108
|
-
default:
|
|
109
|
-
throw new Error(`[ArrayBuffers.toString] Unknown encoding: ${encoding}`);
|
|
110
|
-
}
|
|
111
|
-
};
|
|
112
|
-
ArrayBuffers.toJSON = (v, reviver) => {
|
|
113
|
-
return JSON.parse(_ArrayBuffers.toString(v), reviver);
|
|
114
|
-
};
|
|
115
|
-
ArrayBuffers.alloc = (size, fill, encoding) => {
|
|
116
|
-
if (fill !== void 0) {
|
|
117
|
-
if (typeof fill === "number") {
|
|
118
|
-
return new Uint8Array(size).fill(fill);
|
|
126
|
+
return v.buffer;
|
|
119
127
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
return new ArrayBuffer(size);
|
|
123
|
-
};
|
|
124
|
-
ArrayBuffers.from = (v, encoding = "utf8") => {
|
|
125
|
-
if (!v) {
|
|
126
|
-
return new ArrayBuffer(0);
|
|
127
|
-
}
|
|
128
|
-
if (typeof v === "string") {
|
|
129
|
-
if (_ArrayBuffers.isNativeBufferAllowed()) {
|
|
130
|
-
return Buffer.from(v, encoding);
|
|
128
|
+
if (Array.isArray(v)) {
|
|
129
|
+
return new Uint8Array(v);
|
|
131
130
|
}
|
|
132
|
-
|
|
133
|
-
|
|
131
|
+
const type = classOf(v);
|
|
132
|
+
throw new TypeError(`ArrayBuffers.from unsupported type ${type}`);
|
|
133
|
+
};
|
|
134
|
+
static isEncoding = (encoding) => {
|
|
135
|
+
switch (String(encoding).toLowerCase()) {
|
|
136
|
+
case "hex":
|
|
134
137
|
case "utf8":
|
|
135
|
-
|
|
138
|
+
case "utf-8":
|
|
139
|
+
case "ascii":
|
|
140
|
+
case "latin1":
|
|
141
|
+
case "binary":
|
|
136
142
|
case "base64":
|
|
137
|
-
|
|
143
|
+
case "ucs2":
|
|
144
|
+
case "ucs-2":
|
|
145
|
+
case "utf16le":
|
|
146
|
+
return true;
|
|
138
147
|
default:
|
|
139
|
-
|
|
148
|
+
return false;
|
|
140
149
|
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
switch (String(encoding).toLowerCase()) {
|
|
159
|
-
case "hex":
|
|
160
|
-
case "utf8":
|
|
161
|
-
case "utf-8":
|
|
162
|
-
case "ascii":
|
|
163
|
-
case "latin1":
|
|
164
|
-
case "binary":
|
|
165
|
-
case "base64":
|
|
166
|
-
case "ucs2":
|
|
167
|
-
case "ucs-2":
|
|
168
|
-
case "utf16le":
|
|
169
|
-
return true;
|
|
170
|
-
default:
|
|
171
|
-
return false;
|
|
172
|
-
}
|
|
173
|
-
};
|
|
174
|
-
ArrayBuffers.concat = (buffers, result, offset = 0) => {
|
|
175
|
-
const length = buffers.reduce((a, b) => a + b.byteLength, 0);
|
|
176
|
-
const r = result ? new Uint8Array(result) : new Uint8Array(length);
|
|
177
|
-
for (const buffer of buffers) {
|
|
178
|
-
if (!(buffer == null ? void 0 : buffer.byteLength))
|
|
179
|
-
continue;
|
|
180
|
-
let n;
|
|
181
|
-
if (buffer instanceof ArrayBuffer) {
|
|
182
|
-
n = new Uint8Array(buffer);
|
|
183
|
-
} else if (ArrayBuffer.isView(buffer)) {
|
|
184
|
-
n = new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
185
|
-
} else {
|
|
186
|
-
throw new Error(`ArrayBuffers.concat unsupported type ${classOf(buffer)}`);
|
|
150
|
+
};
|
|
151
|
+
static concat = (buffers, result, offset = 0) => {
|
|
152
|
+
const length = buffers.reduce((a, b) => a + b.byteLength, 0);
|
|
153
|
+
const r = result ? new Uint8Array(result) : new Uint8Array(length);
|
|
154
|
+
for (const buffer of buffers) {
|
|
155
|
+
if (!(buffer == null ? void 0 : buffer.byteLength))
|
|
156
|
+
continue;
|
|
157
|
+
let n;
|
|
158
|
+
if (buffer instanceof ArrayBuffer) {
|
|
159
|
+
n = new Uint8Array(buffer);
|
|
160
|
+
} else if (ArrayBuffer.isView(buffer)) {
|
|
161
|
+
n = new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
162
|
+
} else {
|
|
163
|
+
throw new Error(`ArrayBuffers.concat unsupported type ${classOf(buffer)}`);
|
|
164
|
+
}
|
|
165
|
+
r.set(n, offset);
|
|
166
|
+
offset += buffer.byteLength;
|
|
187
167
|
}
|
|
188
|
-
r.
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
return r.buffer;
|
|
192
|
-
};
|
|
168
|
+
return r.buffer;
|
|
169
|
+
};
|
|
170
|
+
}
|
|
193
171
|
const hexLookupTable = function() {
|
|
194
172
|
const alphabet = "0123456789abcdef";
|
|
195
173
|
const table = new Array(256);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArrayBuffers.js","sources":["../../src/io/ArrayBuffers.ts"],"sourcesContent":["import { getGlobalThis } from '../isomorphics/getGlobalThis';\nimport { classOf } from '../langs/classOf';\nimport { decodeBase64ToArrayBuffer, encodeArrayBufferToBase64 } from './base64';\nimport { isBuffer } from './isBuffer';\n\n/**\n * Various utils to work with {@link ArrayBuffer}\n */\nexport interface ArrayBuffers {\n /**\n * isArrayBuffer check if the given value is an {@link ArrayBuffer}\n */\n isArrayBuffer(v: any): v is ArrayBuffer;\n\n /**\n * slice the given view with the given offset and length, will handle the {@link Buffer} as well\n *\n * @see {@link https://nodejs.org/api/buffer.html#bufslicestart-end Buffer.slice}\n */\n slice<T extends ArrayBufferView>(o: T, start?: number, end?: number): T;\n\n /**\n * asView convert the given value to given {@link TypedArray} view\n *\n * TypedArray can be {@link Buffer}, will avoid copy\n */\n asView<C extends ArrayBufferViewConstructor<unknown>>(\n TypedArray: C,\n v: BufferSource,\n byteOffset?: number,\n byteLength?: number,\n ): InstanceType<C>;\n\n /**\n * toString convert the given {@link BufferSource} to string\n */\n toString(v: BufferSource | string, encoding?: ToStringEncoding): string;\n\n /**\n * Returns true if encoding is the name of a supported character encoding, or false otherwise.\n */\n isEncoding(v?: string): v is ToStringEncoding;\n\n toJSON<T = any>(v: BufferSource | string, reviver?: (this: any, key: string, value: any) => any): T;\n\n /**\n * from convert the given value to {@link ArrayBuffer}\n */\n from(v: string | BufferSource, encoding?: ToStringEncoding): ArrayBuffer;\n\n /**\n * concat the given {@link BufferSource} to a new {@link ArrayBuffer}\n */\n concat(buffers: Array<BufferSource>, result?: ArrayBuffer, offset?: number): ArrayBuffer;\n}\n\ntype ToStringEncoding =\n | 'ascii'\n | 'utf16le'\n // | 'utf-16le'\n | 'ucs2'\n | 'ucs-2'\n | 'base64'\n | 'base64url'\n | 'latin1'\n | 'binary'\n | 'utf8'\n | 'utf-8'\n | 'hex';\n\nexport class ArrayBuffers {\n static #nativeBufferAllowed: boolean = true;\n static #isBufferAvailable: undefined | boolean;\n\n static isNativeBufferAvailable() {\n // eslint-disable-next-line no-return-assign\n return (this.#isBufferAvailable ??= !(getGlobalThis().Buffer as any)?.isPollyfill?.());\n }\n\n static isNativeBufferAllowed() {\n return this.#nativeBufferAllowed && this.#isBufferAvailable;\n }\n\n static setNativeBufferAllowed(v: boolean) {\n this.#nativeBufferAllowed = v;\n }\n\n static isArrayBuffer = (v: any): v is ArrayBuffer => {\n return v instanceof ArrayBuffer;\n };\n\n static slice = (o: TypedArray, start?: number, end?: number) => {\n // NodeJS Buffer slice is not the same as UInt8Array slice\n // https://nodejs.org/api/buffer.html#bufslicestart-end\n if (isBuffer(o)) {\n return Uint8Array.prototype.slice.call(o, start, end);\n }\n return o.slice(start, end);\n };\n\n static asView = <C extends ArrayBufferViewConstructor<unknown>, I extends InstanceType<C>>(\n TypedArray: C,\n v: BufferSource,\n byteOffset?: number,\n byteLength?: number,\n ): I => {\n if (v instanceof TypedArray && (byteOffset ?? 0) === 0 && byteLength === undefined) {\n return v as I;\n }\n if (ArrayBuffer.isView(v) || isBuffer(v)) {\n if (ArrayBuffers.isNativeBufferAllowed() && (TypedArray as any) === Buffer) {\n // new Buffer() is deprecated\n return Buffer.from(v.buffer, byteOffset, byteLength) as I;\n }\n return new TypedArray(v.buffer, v.byteOffset + (byteOffset ?? 0), byteLength ?? v.byteLength) as I;\n }\n return new TypedArray(v, byteOffset, byteLength) as I;\n };\n\n static toString = (buf: BufferSource | string, encoding: ToStringEncoding = 'utf8') => {\n // 'ascii' 'utf16le' | 'ucs2' | 'ucs-2' | 'base64' | 'base64url' | 'latin1' | 'binary' | 'hex'\n if (typeof buf === 'string') {\n switch (encoding) {\n case 'base64':\n return btoa(buf);\n case 'utf-8':\n case 'utf8':\n return buf;\n default:\n throw new Error(`[ArrayBuffers.toString] Unsupported encoding for string: ${encoding}`);\n }\n }\n if (ArrayBuffers.isNativeBufferAllowed()) {\n return Buffer.from(ArrayBuffers.asView(Uint8Array, buf)).toString(encoding);\n }\n // reference\n // https://github.com/feross/buffer/blob/master/index.js\n switch (encoding) {\n case 'hex': {\n const view: Uint8Array = ArrayBuffers.asView(Uint8Array, buf);\n return [...view].map((b) => hexLookupTable[b]).join('');\n }\n case 'base64': {\n return encodeArrayBufferToBase64(ArrayBuffers.asView(Uint8Array, buf));\n }\n case 'utf8':\n // falls through\n case 'utf-8':\n return new TextDecoder().decode(buf as any);\n case 'ascii': {\n const view: Uint8Array = ArrayBuffers.asView(Uint8Array, buf);\n return String.fromCharCode(...view.map((v) => v & 0x7f));\n }\n case 'latin1':\n // falls through\n case 'binary': {\n const view: Uint8Array = ArrayBuffers.asView(Uint8Array, buf);\n return String.fromCharCode(...view);\n }\n case 'ucs2':\n // falls through\n case 'ucs-2':\n // case 'utf-16le':\n // falls through\n case 'utf16le': {\n const view: Uint8Array = ArrayBuffers.asView(Uint8Array, buf);\n let res = '';\n // If length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < view.length - 1; i += 2) {\n res += String.fromCharCode(view[i] + view[i + 1] * 256);\n }\n return res;\n }\n default:\n throw new Error(`[ArrayBuffers.toString] Unknown encoding: ${encoding}`);\n }\n };\n\n static toJSON = (v: BufferSource | string, reviver?: (this: any, key: string, value: any) => any) => {\n return JSON.parse(ArrayBuffers.toString(v), reviver);\n };\n\n static alloc = (size: number, fill?: string | number, encoding?: ToStringEncoding) => {\n if (fill !== undefined) {\n if (typeof fill === 'number') {\n return new Uint8Array(size).fill(fill);\n }\n // as cast\n // https://stackoverflow.com/questions/73994091\n return ArrayBuffers.asView(Uint8Array, ArrayBuffers.from(fill, encoding)).slice(0, size);\n }\n return new ArrayBuffer(size);\n };\n\n static from = (\n v: string | BufferSource | ArrayLike<number> | Iterable<number>,\n encoding: ToStringEncoding = 'utf8',\n ): BufferSource => {\n if (!v) {\n return new ArrayBuffer(0);\n }\n if (typeof v === 'string') {\n if (ArrayBuffers.isNativeBufferAllowed()) {\n return Buffer.from(v, encoding);\n }\n\n switch (encoding) {\n case 'utf-8':\n // falls through\n case 'utf8':\n return new TextEncoder().encode(v).buffer;\n case 'base64':\n // replaceAll need higher version of nodejs\n return decodeBase64ToArrayBuffer(v.replace(/[^0-9a-zA-Z=+/_]/g, ''));\n // error in nodejs 18\n // return Uint8Array.from(atob(v.replace(/[^0-9a-zA-Z=+/_ \\r\\n]/g, '')), (c) => c.charCodeAt(0));\n default:\n throw new Error(`[ArrayBuffers.from] Unknown encoding: ${encoding}`);\n }\n }\n if (v instanceof ArrayBuffer) {\n return v;\n }\n // lost length\n if (ArrayBuffer.isView(v) || isBuffer(v)) {\n if (v.byteOffset !== 0) {\n // return v.buffer.slice(v.byteOffset, v.byteOffset + v.byteLength)\n throw new Error('ArrayBuffers.from do not support view with offset');\n }\n return v.buffer;\n }\n if (Array.isArray(v)) {\n return new Uint8Array(v);\n }\n const type = classOf(v);\n throw new TypeError(`ArrayBuffers.from unsupported type ${type}`);\n };\n\n static isEncoding = (encoding?: string) => {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n // case 'utf-16le':\n return true;\n default:\n return false;\n }\n };\n\n static concat = (buffers: Array<BufferSource>, result?: ArrayBuffer, offset = 0) => {\n // https://stackoverflow.com/questions/10786128/appending-arraybuffers\n\n const length = buffers.reduce((a, b) => a + b.byteLength, 0);\n const r = result ? new Uint8Array(result) : new Uint8Array(length);\n for (const buffer of buffers) {\n if (!buffer?.byteLength) continue;\n let n: Uint8Array;\n if (buffer instanceof ArrayBuffer) {\n n = new Uint8Array(buffer);\n } else if (ArrayBuffer.isView(buffer)) {\n n = new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n } else {\n throw new Error(`ArrayBuffers.concat unsupported type ${classOf(buffer)}`);\n }\n r.set(n, offset);\n offset += buffer.byteLength;\n }\n return r.buffer;\n };\n}\n\nexport type TypedArray =\n | Uint8Array\n | Uint8ClampedArray\n | Uint16Array\n | Uint32Array\n | Int8Array\n | Int16Array\n | Int32Array\n | BigUint64Array\n | BigInt64Array\n | Float32Array\n | Float64Array;\n\ntype ArrayBufferViewConstructor<T> = new (buffer: ArrayBufferLike, byteOffset?: number, byteLength?: number) => T;\n\nconst hexLookupTable = (function () {\n const alphabet = '0123456789abcdef';\n const table = new Array(256);\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16;\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j];\n }\n }\n return table;\n})();\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ArrayBuffers.js","sources":["../../src/io/ArrayBuffers.ts"],"sourcesContent":["import { getGlobalThis } from '../isomorphics/getGlobalThis';\nimport { classOf } from '../langs/classOf';\nimport { decodeBase64ToArrayBuffer, encodeArrayBufferToBase64 } from './base64';\nimport { isBuffer } from './isBuffer';\n\n/**\n * Various utils to work with {@link ArrayBuffer}\n */\nexport interface ArrayBuffers {\n /**\n * isArrayBuffer check if the given value is an {@link ArrayBuffer}\n */\n isArrayBuffer(v: any): v is ArrayBuffer;\n\n /**\n * slice the given view with the given offset and length, will handle the {@link Buffer} as well\n *\n * @see {@link https://nodejs.org/api/buffer.html#bufslicestart-end Buffer.slice}\n */\n slice<T extends ArrayBufferView>(o: T, start?: number, end?: number): T;\n\n /**\n * asView convert the given value to given {@link TypedArray} view\n *\n * TypedArray can be {@link Buffer}, will avoid copy\n */\n asView<C extends ArrayBufferViewConstructor<unknown>>(\n TypedArray: C,\n v: BufferSource,\n byteOffset?: number,\n byteLength?: number,\n ): InstanceType<C>;\n\n /**\n * toString convert the given {@link BufferSource} to string\n */\n toString(v: BufferSource | string, encoding?: ToStringEncoding): string;\n\n /**\n * Returns true if encoding is the name of a supported character encoding, or false otherwise.\n */\n isEncoding(v?: string): v is ToStringEncoding;\n\n toJSON<T = any>(v: BufferSource | string, reviver?: (this: any, key: string, value: any) => any): T;\n\n /**\n * from convert the given value to {@link ArrayBuffer}\n */\n from(v: string | BufferSource, encoding?: ToStringEncoding): ArrayBuffer;\n\n /**\n * concat the given {@link BufferSource} to a new {@link ArrayBuffer}\n */\n concat(buffers: Array<BufferSource>, result?: ArrayBuffer, offset?: number): ArrayBuffer;\n}\n\ntype ToStringEncoding =\n | 'ascii'\n | 'utf16le'\n // | 'utf-16le'\n | 'ucs2'\n | 'ucs-2'\n | 'base64'\n | 'base64url'\n | 'latin1'\n | 'binary'\n | 'utf8'\n | 'utf-8'\n | 'hex';\n\nexport class ArrayBuffers {\n static #nativeBufferAllowed: boolean = true;\n static #isBufferAvailable: undefined | boolean;\n\n static isNativeBufferAvailable() {\n // eslint-disable-next-line no-return-assign\n return (this.#isBufferAvailable ??= !(getGlobalThis().Buffer as any)?.isPollyfill?.());\n }\n\n static isNativeBufferAllowed() {\n return this.#nativeBufferAllowed && this.#isBufferAvailable;\n }\n\n static setNativeBufferAllowed(v: boolean) {\n this.#nativeBufferAllowed = v;\n }\n\n static isArrayBuffer = (v: any): v is ArrayBuffer => {\n return v instanceof ArrayBuffer;\n };\n\n static slice = (o: TypedArray, start?: number, end?: number) => {\n // NodeJS Buffer slice is not the same as UInt8Array slice\n // https://nodejs.org/api/buffer.html#bufslicestart-end\n if (isBuffer(o)) {\n return Uint8Array.prototype.slice.call(o, start, end);\n }\n return o.slice(start, end);\n };\n\n static asView = <C extends ArrayBufferViewConstructor<unknown>, I extends InstanceType<C>>(\n TypedArray: C,\n v: BufferSource,\n byteOffset?: number,\n byteLength?: number,\n ): I => {\n if (v instanceof TypedArray && (byteOffset ?? 0) === 0 && byteLength === undefined) {\n return v as I;\n }\n if (ArrayBuffer.isView(v) || isBuffer(v)) {\n if (ArrayBuffers.isNativeBufferAllowed() && (TypedArray as any) === Buffer) {\n // new Buffer() is deprecated\n return Buffer.from(v.buffer, byteOffset, byteLength) as I;\n }\n return new TypedArray(v.buffer, v.byteOffset + (byteOffset ?? 0), byteLength ?? v.byteLength) as I;\n }\n return new TypedArray(v, byteOffset, byteLength) as I;\n };\n\n static toString = (buf: BufferSource | string, encoding: ToStringEncoding = 'utf8') => {\n // 'ascii' 'utf16le' | 'ucs2' | 'ucs-2' | 'base64' | 'base64url' | 'latin1' | 'binary' | 'hex'\n if (typeof buf === 'string') {\n switch (encoding) {\n case 'base64':\n return btoa(buf);\n case 'utf-8':\n case 'utf8':\n return buf;\n default:\n throw new Error(`[ArrayBuffers.toString] Unsupported encoding for string: ${encoding}`);\n }\n }\n if (ArrayBuffers.isNativeBufferAllowed()) {\n return Buffer.from(ArrayBuffers.asView(Uint8Array, buf)).toString(encoding);\n }\n // reference\n // https://github.com/feross/buffer/blob/master/index.js\n switch (encoding) {\n case 'hex': {\n const view: Uint8Array = ArrayBuffers.asView(Uint8Array, buf);\n return [...view].map((b) => hexLookupTable[b]).join('');\n }\n case 'base64': {\n return encodeArrayBufferToBase64(ArrayBuffers.asView(Uint8Array, buf));\n }\n case 'utf8':\n // falls through\n case 'utf-8':\n return new TextDecoder().decode(buf as any);\n case 'ascii': {\n const view: Uint8Array = ArrayBuffers.asView(Uint8Array, buf);\n return String.fromCharCode(...view.map((v) => v & 0x7f));\n }\n case 'latin1':\n // falls through\n case 'binary': {\n const view: Uint8Array = ArrayBuffers.asView(Uint8Array, buf);\n return String.fromCharCode(...view);\n }\n case 'ucs2':\n // falls through\n case 'ucs-2':\n // case 'utf-16le':\n // falls through\n case 'utf16le': {\n const view: Uint8Array = ArrayBuffers.asView(Uint8Array, buf);\n let res = '';\n // If length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < view.length - 1; i += 2) {\n res += String.fromCharCode(view[i] + view[i + 1] * 256);\n }\n return res;\n }\n default:\n throw new Error(`[ArrayBuffers.toString] Unknown encoding: ${encoding}`);\n }\n };\n\n static toJSON = (v: BufferSource | string, reviver?: (this: any, key: string, value: any) => any) => {\n return JSON.parse(ArrayBuffers.toString(v), reviver);\n };\n\n static alloc = (size: number, fill?: string | number, encoding?: ToStringEncoding) => {\n if (fill !== undefined) {\n if (typeof fill === 'number') {\n return new Uint8Array(size).fill(fill);\n }\n // as cast\n // https://stackoverflow.com/questions/73994091\n return ArrayBuffers.asView(Uint8Array, ArrayBuffers.from(fill, encoding)).slice(0, size);\n }\n return new ArrayBuffer(size);\n };\n\n static from = (\n v: string | BufferSource | ArrayLike<number> | Iterable<number>,\n encoding: ToStringEncoding = 'utf8',\n ): BufferSource => {\n if (!v) {\n return new ArrayBuffer(0);\n }\n if (typeof v === 'string') {\n if (ArrayBuffers.isNativeBufferAllowed()) {\n return Buffer.from(v, encoding);\n }\n\n switch (encoding) {\n case 'utf-8':\n // falls through\n case 'utf8':\n return new TextEncoder().encode(v).buffer;\n case 'base64':\n // replaceAll need higher version of nodejs\n return decodeBase64ToArrayBuffer(v.replace(/[^0-9a-zA-Z=+/_]/g, ''));\n // error in nodejs 18\n // return Uint8Array.from(atob(v.replace(/[^0-9a-zA-Z=+/_ \\r\\n]/g, '')), (c) => c.charCodeAt(0));\n default:\n throw new Error(`[ArrayBuffers.from] Unknown encoding: ${encoding}`);\n }\n }\n if (v instanceof ArrayBuffer) {\n return v;\n }\n // lost length\n if (ArrayBuffer.isView(v) || isBuffer(v)) {\n if (v.byteOffset !== 0) {\n // return v.buffer.slice(v.byteOffset, v.byteOffset + v.byteLength)\n throw new Error('ArrayBuffers.from do not support view with offset');\n }\n return v.buffer;\n }\n if (Array.isArray(v)) {\n return new Uint8Array(v);\n }\n const type = classOf(v);\n throw new TypeError(`ArrayBuffers.from unsupported type ${type}`);\n };\n\n static isEncoding = (encoding?: string) => {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n // case 'utf-16le':\n return true;\n default:\n return false;\n }\n };\n\n static concat = (buffers: Array<BufferSource>, result?: ArrayBuffer, offset = 0) => {\n // https://stackoverflow.com/questions/10786128/appending-arraybuffers\n\n const length = buffers.reduce((a, b) => a + b.byteLength, 0);\n const r = result ? new Uint8Array(result) : new Uint8Array(length);\n for (const buffer of buffers) {\n if (!buffer?.byteLength) continue;\n let n: Uint8Array;\n if (buffer instanceof ArrayBuffer) {\n n = new Uint8Array(buffer);\n } else if (ArrayBuffer.isView(buffer)) {\n n = new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n } else {\n throw new Error(`ArrayBuffers.concat unsupported type ${classOf(buffer)}`);\n }\n r.set(n, offset);\n offset += buffer.byteLength;\n }\n return r.buffer;\n };\n}\n\nexport type TypedArray =\n | Uint8Array\n | Uint8ClampedArray\n | Uint16Array\n | Uint32Array\n | Int8Array\n | Int16Array\n | Int32Array\n | BigUint64Array\n | BigInt64Array\n | Float32Array\n | Float64Array;\n\ntype ArrayBufferViewConstructor<T> = new (buffer: ArrayBufferLike, byteOffset?: number, byteLength?: number) => T;\n\nconst hexLookupTable = (function () {\n const alphabet = '0123456789abcdef';\n const table = new Array(256);\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16;\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j];\n }\n }\n return table;\n})();\n"],"names":[],"mappings":"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"}
|
package/lib/io/Buffer.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ArrayBuffers } from './ArrayBuffers.js';
|
|
2
2
|
import { isBuffer } from './isBuffer.js';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
class Buffer extends Uint8Array {
|
|
5
5
|
// constructor(buffer: ArrayBufferLike, byteOffset?: number, length?: number) {
|
|
6
6
|
// super(buffer, byteOffset, length);
|
|
7
7
|
// }
|
|
@@ -9,17 +9,16 @@ const _Buffer = class extends Uint8Array {
|
|
|
9
9
|
return true;
|
|
10
10
|
}
|
|
11
11
|
static isBuffer(v) {
|
|
12
|
-
return v instanceof
|
|
12
|
+
return v instanceof Buffer || isBuffer(v);
|
|
13
13
|
}
|
|
14
14
|
static from(array, arg2) {
|
|
15
|
-
return new
|
|
15
|
+
return new Buffer(ArrayBuffers.from(array, arg2));
|
|
16
16
|
}
|
|
17
|
+
static isEncoding = ArrayBuffers.isEncoding;
|
|
17
18
|
toString(encoding) {
|
|
18
19
|
return ArrayBuffers.toString(this, encoding);
|
|
19
20
|
}
|
|
20
|
-
}
|
|
21
|
-
let Buffer = _Buffer;
|
|
22
|
-
Buffer.isEncoding = ArrayBuffers.isEncoding;
|
|
21
|
+
}
|
|
23
22
|
|
|
24
23
|
export { Buffer };
|
|
25
24
|
//# sourceMappingURL=Buffer.js.map
|
package/lib/io/Buffer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Buffer.js","sources":["../../src/io/Buffer.ts"],"sourcesContent":["import { ArrayBuffers } from './ArrayBuffers';\nimport { isBuffer } from './isBuffer';\n\n/**\n * Buffer is a polyfill version of NodeJS Buffer\n */\nexport class Buffer extends Uint8Array {\n // constructor(buffer: ArrayBufferLike, byteOffset?: number, length?: number) {\n // super(buffer, byteOffset, length);\n // }\n\n static get isPolyfill() {\n return true;\n }\n\n static isBuffer(v: any): v is Buffer {\n return v instanceof Buffer || isBuffer(v);\n }\n\n static from(array: string | BufferSource | ArrayLike<number> | Iterable<number>, arg2?: any): Buffer {\n // todo mapfn\n return new Buffer(ArrayBuffers.from(array, arg2) as ArrayBuffer);\n }\n\n static isEncoding = ArrayBuffers.isEncoding;\n\n toString(encoding?: string): string {\n return ArrayBuffers.toString(this, encoding as any);\n }\n}\n"],"names":[],"mappings":";;;AAMO,MAAM,
|
|
1
|
+
{"version":3,"file":"Buffer.js","sources":["../../src/io/Buffer.ts"],"sourcesContent":["import { ArrayBuffers } from './ArrayBuffers';\nimport { isBuffer } from './isBuffer';\n\n/**\n * Buffer is a polyfill version of NodeJS Buffer\n */\nexport class Buffer extends Uint8Array {\n // constructor(buffer: ArrayBufferLike, byteOffset?: number, length?: number) {\n // super(buffer, byteOffset, length);\n // }\n\n static get isPolyfill() {\n return true;\n }\n\n static isBuffer(v: any): v is Buffer {\n return v instanceof Buffer || isBuffer(v);\n }\n\n static from(array: string | BufferSource | ArrayLike<number> | Iterable<number>, arg2?: any): Buffer {\n // todo mapfn\n return new Buffer(ArrayBuffers.from(array, arg2) as ArrayBuffer);\n }\n\n static isEncoding = ArrayBuffers.isEncoding;\n\n toString(encoding?: string): string {\n return ArrayBuffers.toString(this, encoding as any);\n }\n}\n"],"names":[],"mappings":";;;AAMO,MAAM,eAAe,UAAW,CAAA;AAAA;AAAA;AAAA;AAAA,EAKrC,WAAW,UAAa,GAAA;AACtB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,OAAO,SAAS,CAAqB,EAAA;AACnC,IAAO,OAAA,CAAA,YAAa,MAAU,IAAA,QAAA,CAAS,CAAC,CAAA,CAAA;AAAA,GAC1C;AAAA,EAEA,OAAO,IAAK,CAAA,KAAA,EAAqE,IAAoB,EAAA;AAEnG,IAAA,OAAO,IAAI,MAAO,CAAA,YAAA,CAAa,IAAK,CAAA,KAAA,EAAO,IAAI,CAAgB,CAAA,CAAA;AAAA,GACjE;AAAA,EAEA,OAAO,aAAa,YAAa,CAAA,UAAA,CAAA;AAAA,EAEjC,SAAS,QAA2B,EAAA;AAClC,IAAO,OAAA,YAAA,CAAa,QAAS,CAAA,IAAA,EAAM,QAAe,CAAA,CAAA;AAAA,GACpD;AACF;;;;"}
|
package/lib/libs/ms.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ms.js","sources":["../../src/libs/ms.ts"],"sourcesContent":["// Helpers.\nconst s = 1000;\nconst m = s * 60;\nconst h = m * 60;\nconst d = h * 24;\nconst w = d * 7;\nconst y = d * 365.25;\n\ntype Unit =\n | 'Years'\n | 'Year'\n | 'Yrs'\n | 'Yr'\n | 'Y'\n | 'Weeks'\n | 'Week'\n | 'W'\n | 'Days'\n | 'Day'\n | 'D'\n | 'Hours'\n | 'Hour'\n | 'Hrs'\n | 'Hr'\n | 'H'\n | 'Minutes'\n | 'Minute'\n | 'Mins'\n | 'Min'\n | 'M'\n | 'Seconds'\n | 'Second'\n | 'Secs'\n | 'Sec'\n | 's'\n | 'Milliseconds'\n | 'Millisecond'\n | 'Msecs'\n | 'Msec'\n | 'Ms';\n\ntype UnitAnyCase = Unit | Uppercase<Unit> | Lowercase<Unit>;\n\nexport type StringValue = `${number}` | `${number}${UnitAnyCase}` | `${number} ${UnitAnyCase}`;\n\ninterface Options {\n /**\n * Set to `true` to use verbose formatting. Defaults to `false`.\n */\n long?: boolean;\n}\n\n/**\n * Parse or format the given value.\n *\n * @param value - The string or number to convert\n * @param options - Options for the conversion\n * @throws Error if `value` is not a non-empty string or a number\n */\nfunction msFn(value: StringValue, options?: Options): number;\nfunction msFn(value: number, options?: Options): string;\nfunction msFn(value: StringValue | number, options?: Options): number | string {\n try {\n if (typeof value === 'string' && value.length > 0) {\n return parse(value);\n } else if (typeof value === 'number' && isFinite(value)) {\n return options?.long ? fmtLong(value) : fmtShort(value);\n }\n throw new Error('Value is not a string or number.');\n } catch (error) {\n const message = isError(error)\n ? `${error.message}. value=${JSON.stringify(value)}`\n : 'An unknown error has occurred.';\n throw new Error(message);\n }\n}\n\n/**\n * Parse the given string and return milliseconds.\n *\n * @param str - A string to parse to milliseconds\n * @returns The parsed value in milliseconds, or `NaN` if the string can't be\n * parsed\n */\nfunction parse(str: string): number {\n if (str.length > 100) {\n throw new Error('Value exceeds the maximum length of 100 characters.');\n }\n const match =\n /^(?<value>-?(?:\\d+)?\\.?\\d+) *(?<type>milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str,\n );\n // Named capture groups need to be manually typed today.\n // https://github.com/microsoft/TypeScript/issues/32098\n const groups = match?.groups as { value: string; type?: string } | undefined;\n if (!groups) {\n return NaN;\n }\n const n = parseFloat(groups.value);\n const type = (groups.type || 'ms').toLowerCase() as Lowercase<Unit>;\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n // This should never occur.\n throw new Error(`The unit ${type as string} was matched, but no matching case exists.`);\n }\n}\n\n// eslint-disable-next-line import/no-default-export\nexport default msFn;\n\n/**\n * Short format for `ms`.\n */\nfunction fmtShort(ms: number): StringValue {\n const msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return `${Math.round(ms / d)}d`;\n }\n if (msAbs >= h) {\n return `${Math.round(ms / h)}h`;\n }\n if (msAbs >= m) {\n return `${Math.round(ms / m)}m`;\n }\n if (msAbs >= s) {\n return `${Math.round(ms / s)}s`;\n }\n return `${ms}ms`;\n}\n\n/**\n * Long format for `ms`.\n */\nfunction fmtLong(ms: number): StringValue {\n const msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return `${ms} ms`;\n}\n\n/**\n * Pluralization helper.\n */\nfunction plural(ms: number, msAbs: number, n: number, name: string): StringValue {\n const isPlural = msAbs >= n * 1.5;\n return `${Math.round(ms / n)} ${name}${isPlural ? 's' : ''}` as StringValue;\n}\n\n/**\n * A type guard for errors.\n *\n * @param value - The value to test\n * @returns A boolean `true` if the provided value is an Error-like object\n */\nfunction isError(value: unknown): value is Error {\n return typeof value === 'object' && value !== null && 'message' in value;\n}\n"],"names":[],"mappings":"AACA,MAAM,CAAI,GAAA,GAAA,CAAA;AACV,MAAM,IAAI,CAAI,GAAA,EAAA,CAAA;AACd,MAAM,IAAI,CAAI,GAAA,EAAA,CAAA;AACd,MAAM,IAAI,CAAI,GAAA,EAAA,CAAA;AACd,MAAM,IAAI,CAAI,GAAA,CAAA,CAAA;AACd,MAAM,IAAI,CAAI,GAAA,MAAA,CAAA;AAuDd,SAAS,IAAA,CAAK,OAA6B,OAAoC,EAAA;AAC7E,EAAI,IAAA;AACF,IAAA,IAAI,OAAO,KAAA,KAAU,QAAY,IAAA,KAAA,CAAM,SAAS,CAAG,EAAA;AACjD,MAAA,OAAO,MAAM,KAAK,CAAA,CAAA;AAAA,eACT,OAAO,KAAA,KAAU,QAAY,IAAA,QAAA,CAAS,KAAK,CAAG,EAAA;AACvD,MAAA,OAAA,CAAO,mCAAS,IAAO,IAAA,OAAA,CAAQ,KAAK,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AAAA,KACxD;AACA,IAAM,MAAA,IAAI,MAAM,kCAAkC,CAAA,CAAA;AAAA,WAC3C,
|
|
1
|
+
{"version":3,"file":"ms.js","sources":["../../src/libs/ms.ts"],"sourcesContent":["// Helpers.\nconst s = 1000;\nconst m = s * 60;\nconst h = m * 60;\nconst d = h * 24;\nconst w = d * 7;\nconst y = d * 365.25;\n\ntype Unit =\n | 'Years'\n | 'Year'\n | 'Yrs'\n | 'Yr'\n | 'Y'\n | 'Weeks'\n | 'Week'\n | 'W'\n | 'Days'\n | 'Day'\n | 'D'\n | 'Hours'\n | 'Hour'\n | 'Hrs'\n | 'Hr'\n | 'H'\n | 'Minutes'\n | 'Minute'\n | 'Mins'\n | 'Min'\n | 'M'\n | 'Seconds'\n | 'Second'\n | 'Secs'\n | 'Sec'\n | 's'\n | 'Milliseconds'\n | 'Millisecond'\n | 'Msecs'\n | 'Msec'\n | 'Ms';\n\ntype UnitAnyCase = Unit | Uppercase<Unit> | Lowercase<Unit>;\n\nexport type StringValue = `${number}` | `${number}${UnitAnyCase}` | `${number} ${UnitAnyCase}`;\n\ninterface Options {\n /**\n * Set to `true` to use verbose formatting. Defaults to `false`.\n */\n long?: boolean;\n}\n\n/**\n * Parse or format the given value.\n *\n * @param value - The string or number to convert\n * @param options - Options for the conversion\n * @throws Error if `value` is not a non-empty string or a number\n */\nfunction msFn(value: StringValue, options?: Options): number;\nfunction msFn(value: number, options?: Options): string;\nfunction msFn(value: StringValue | number, options?: Options): number | string {\n try {\n if (typeof value === 'string' && value.length > 0) {\n return parse(value);\n } else if (typeof value === 'number' && isFinite(value)) {\n return options?.long ? fmtLong(value) : fmtShort(value);\n }\n throw new Error('Value is not a string or number.');\n } catch (error) {\n const message = isError(error)\n ? `${error.message}. value=${JSON.stringify(value)}`\n : 'An unknown error has occurred.';\n throw new Error(message);\n }\n}\n\n/**\n * Parse the given string and return milliseconds.\n *\n * @param str - A string to parse to milliseconds\n * @returns The parsed value in milliseconds, or `NaN` if the string can't be\n * parsed\n */\nfunction parse(str: string): number {\n if (str.length > 100) {\n throw new Error('Value exceeds the maximum length of 100 characters.');\n }\n const match =\n /^(?<value>-?(?:\\d+)?\\.?\\d+) *(?<type>milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str,\n );\n // Named capture groups need to be manually typed today.\n // https://github.com/microsoft/TypeScript/issues/32098\n const groups = match?.groups as { value: string; type?: string } | undefined;\n if (!groups) {\n return NaN;\n }\n const n = parseFloat(groups.value);\n const type = (groups.type || 'ms').toLowerCase() as Lowercase<Unit>;\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n // This should never occur.\n throw new Error(`The unit ${type as string} was matched, but no matching case exists.`);\n }\n}\n\n// eslint-disable-next-line import/no-default-export\nexport default msFn;\n\n/**\n * Short format for `ms`.\n */\nfunction fmtShort(ms: number): StringValue {\n const msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return `${Math.round(ms / d)}d`;\n }\n if (msAbs >= h) {\n return `${Math.round(ms / h)}h`;\n }\n if (msAbs >= m) {\n return `${Math.round(ms / m)}m`;\n }\n if (msAbs >= s) {\n return `${Math.round(ms / s)}s`;\n }\n return `${ms}ms`;\n}\n\n/**\n * Long format for `ms`.\n */\nfunction fmtLong(ms: number): StringValue {\n const msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return `${ms} ms`;\n}\n\n/**\n * Pluralization helper.\n */\nfunction plural(ms: number, msAbs: number, n: number, name: string): StringValue {\n const isPlural = msAbs >= n * 1.5;\n return `${Math.round(ms / n)} ${name}${isPlural ? 's' : ''}` as StringValue;\n}\n\n/**\n * A type guard for errors.\n *\n * @param value - The value to test\n * @returns A boolean `true` if the provided value is an Error-like object\n */\nfunction isError(value: unknown): value is Error {\n return typeof value === 'object' && value !== null && 'message' in value;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseModuleId.js","sources":["../../src/modules/parseModuleId.ts"],"sourcesContent":["// https://regex101.com/r/eMcXQ9/1\nconst regModuleId =\n /^(?<n>(?:@(?<org>[a-z0-9-~][a-z0-9-._~]*)\\/)?(?<pkg>[a-z0-9-~][a-z0-9-._~]*))(?:@(?<v>[-a-z0-9><=_.^~]+))?(?<p>\\/[^\\r\\n]*)?$/;\n\nexport type ParsedModuleId = {\n id: string; // name@version\n name: string; // @org/pkg, pkg\n version?: string; // 1.1.1\n range: string; // version, tag, range\n pkg: string;\n path?: string;\n org?: string;\n versioned: boolean; // is module id contain a version specifier\n} & (\n | { scoped: false }\n | {\n scoped: true;\n org: string;\n }\n);\n\n/**\n * Parse NPM module id\n *\n * @example\n * parseModuleId('@wener/reaction@latest/index.js')\n * // { id: '@wener/reaction@latest', name: '@wener/reaction', version: 'latest', range: 'latest', pkg: 'reaction', path: '/index.js', scoped: true, org: 'wener' }\n */\nexport function parseModuleId(s: string): ParsedModuleId | undefined {\n const groups = s.match(regModuleId)?.groups;\n if (!groups) {\n return undefined;\n }\n const { n: name, v: version, p: path, org, pkg } = groups;\n const scoped = Boolean(org);\n const v = /^\\d+\\.\\d+\\.\\d+/.test(version) ? version : undefined;\n const range = version || 'latest';\n const o: ParsedModuleId = {\n id: `${name}@${range}`,\n name,\n range,\n scoped,\n pkg,\n org,\n versioned: Boolean(version),\n };\n if (v) {\n o.version = v;\n }\n if (path) {\n o.path = path;\n }\n if (!o.scoped) {\n delete o.org;\n }\n return o;\n}\n"],"names":[],"mappings":"AACA,MAAM,WACJ,GAAA,8HAAA,CAAA;AA0BK,SAAS,cAAc,CAAuC,EAAA;AA5BrE,EAAA,IAAA,EAAA,CAAA;AA6BE,EAAA,MAAM,MAAS,GAAA,CAAA,EAAA,GAAA,CAAA,CAAE,KAAM,CAAA,WAAW,MAAnB,IAAsB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,CAAA;AACrC,EAAA,IAAI,CAAC,MAAQ,EAAA;AACX,IAAO,OAAA,KAAA,CAAA,CAAA;AAAA,GACT;AACA,EAAM,MAAA,EAAE,GAAG,IAAM,EAAA,CAAA,EAAG,SAAS,CAAG,EAAA,IAAA,EAAM,GAAK,EAAA,GAAA,EAAQ,GAAA,MAAA,CAAA;AACnD,EAAM,MAAA,MAAA,GAAS,QAAQ,GAAG,CAAA,CAAA;AAC1B,EAAA,MAAM,CAAI,GAAA,gBAAA,CAAiB,IAAK,CAAA,OAAO,IAAI,OAAU,GAAA,KAAA,CAAA,CAAA;AACrD,EAAA,MAAM,QAAQ,OAAW,IAAA,QAAA,CAAA;AACzB,EAAA,MAAM,CAAoB,GAAA;AAAA,IACxB,EAAA,
|
|
1
|
+
{"version":3,"file":"parseModuleId.js","sources":["../../src/modules/parseModuleId.ts"],"sourcesContent":["// https://regex101.com/r/eMcXQ9/1\nconst regModuleId =\n /^(?<n>(?:@(?<org>[a-z0-9-~][a-z0-9-._~]*)\\/)?(?<pkg>[a-z0-9-~][a-z0-9-._~]*))(?:@(?<v>[-a-z0-9><=_.^~]+))?(?<p>\\/[^\\r\\n]*)?$/;\n\nexport type ParsedModuleId = {\n id: string; // name@version\n name: string; // @org/pkg, pkg\n version?: string; // 1.1.1\n range: string; // version, tag, range\n pkg: string;\n path?: string;\n org?: string;\n versioned: boolean; // is module id contain a version specifier\n} & (\n | { scoped: false }\n | {\n scoped: true;\n org: string;\n }\n);\n\n/**\n * Parse NPM module id\n *\n * @example\n * parseModuleId('@wener/reaction@latest/index.js')\n * // { id: '@wener/reaction@latest', name: '@wener/reaction', version: 'latest', range: 'latest', pkg: 'reaction', path: '/index.js', scoped: true, org: 'wener' }\n */\nexport function parseModuleId(s: string): ParsedModuleId | undefined {\n const groups = s.match(regModuleId)?.groups;\n if (!groups) {\n return undefined;\n }\n const { n: name, v: version, p: path, org, pkg } = groups;\n const scoped = Boolean(org);\n const v = /^\\d+\\.\\d+\\.\\d+/.test(version) ? version : undefined;\n const range = version || 'latest';\n const o: ParsedModuleId = {\n id: `${name}@${range}`,\n name,\n range,\n scoped,\n pkg,\n org,\n versioned: Boolean(version),\n };\n if (v) {\n o.version = v;\n }\n if (path) {\n o.path = path;\n }\n if (!o.scoped) {\n delete o.org;\n }\n return o;\n}\n"],"names":[],"mappings":"AACA,MAAM,WACJ,GAAA,8HAAA,CAAA;AA0BK,SAAS,cAAc,CAAuC,EAAA;AA5BrE,EAAA,IAAA,EAAA,CAAA;AA6BE,EAAA,MAAM,MAAS,GAAA,CAAA,EAAA,GAAA,CAAA,CAAE,KAAM,CAAA,WAAW,MAAnB,IAAsB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,CAAA;AACrC,EAAA,IAAI,CAAC,MAAQ,EAAA;AACX,IAAO,OAAA,KAAA,CAAA,CAAA;AAAA,GACT;AACA,EAAM,MAAA,EAAE,GAAG,IAAM,EAAA,CAAA,EAAG,SAAS,CAAG,EAAA,IAAA,EAAM,GAAK,EAAA,GAAA,EAAQ,GAAA,MAAA,CAAA;AACnD,EAAM,MAAA,MAAA,GAAS,QAAQ,GAAG,CAAA,CAAA;AAC1B,EAAA,MAAM,CAAI,GAAA,gBAAA,CAAiB,IAAK,CAAA,OAAO,IAAI,OAAU,GAAA,KAAA,CAAA,CAAA;AACrD,EAAA,MAAM,QAAQ,OAAW,IAAA,QAAA,CAAA;AACzB,EAAA,MAAM,CAAoB,GAAA;AAAA,IACxB,EAAI,EAAA,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAAA,IACpB,IAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAA;AAAA,IACA,SAAA,EAAW,QAAQ,OAAO,CAAA;AAAA,GAC5B,CAAA;AACA,EAAA,IAAI,CAAG,EAAA;AACL,IAAA,CAAA,CAAE,OAAU,GAAA,CAAA,CAAA;AAAA,GACd;AACA,EAAA,IAAI,IAAM,EAAA;AACR,IAAA,CAAA,CAAE,IAAO,GAAA,IAAA,CAAA;AAAA,GACX;AACA,EAAI,IAAA,CAAC,EAAE,MAAQ,EAAA;AACb,IAAA,OAAO,CAAE,CAAA,GAAA,CAAA;AAAA,GACX;AACA,EAAO,OAAA,CAAA,CAAA;AACT;;;;"}
|
package/lib/server.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
export { polyfillCrypto } from './servers/polyfillCrypto.js';
|
|
2
|
-
export { polyfillJsDom } from './servers/polyfillJsDom.js';
|
|
3
|
-
export { polyfillBrowser } from './servers/polyfillBrowser.js';
|
|
4
|
-
export { createFetchWithProxyByUndici } from './servers/createFetchWithProxyByUndici.js';
|
|
5
|
-
export { createFetchWithProxy } from './servers/createFetchWithProxy.js';
|
|
1
|
+
export { polyfillCrypto } from './servers/polyfill/polyfillCrypto.js';
|
|
2
|
+
export { polyfillJsDom } from './servers/polyfill/polyfillJsDom.js';
|
|
3
|
+
export { polyfillBrowser } from './servers/polyfill/polyfillBrowser.js';
|
|
4
|
+
export { createFetchWithProxyByUndici } from './servers/fetch/createFetchWithProxyByUndici.js';
|
|
5
|
+
export { createFetchWithProxy } from './servers/fetch/createFetchWithProxy.js';
|
|
6
|
+
export { createFetchWithRetry } from './servers/fetch/createFetchWithRetry.js';
|
|
7
|
+
export { md5 } from './servers/crypto/md5.js';
|
|
8
|
+
export { getPackageDir } from './servers/getPackageDir.js';
|
|
6
9
|
//# sourceMappingURL=server.js.map
|
package/lib/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"md5.js","sources":["../../../src/servers/crypto/md5.ts"],"sourcesContent":["import { createHash } from 'node:crypto';\n\nexport function md5(input: Buffer | string) {\n return createHash('md5').update(input).digest('hex') as string;\n}\n"],"names":[],"mappings":";;AAEO,SAAS,IAAI,KAAwB,EAAA;AAC1C,EAAA,OAAO,WAAW,KAAK,CAAA,CAAE,OAAO,KAAK,CAAA,CAAE,OAAO,KAAK,CAAA,CAAA;AACrD;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createFetchWithProxy.js","sources":["../../../src/servers/fetch/createFetchWithProxy.ts"],"sourcesContent":["import { createFetchWithProxyByUndici } from './createFetchWithProxyByUndici';\n\nexport const createFetchWithProxy = createFetchWithProxyByUndici;\n"],"names":[],"mappings":";;AAEO,MAAM,oBAAuB,GAAA;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createFetchWithProxyByUndici.js","sources":["../../../src/servers/fetch/createFetchWithProxyByUndici.ts"],"sourcesContent":["import { MaybePromise } from '../../asyncs/MaybePromise';\nimport { FetchLike } from '../../fetch';\n\nexport function createFetchWithProxyByUndici({\n proxy,\n token: _token,\n fetch,\n undici,\n}: {\n proxy?: string;\n token?: string;\n fetch?: FetchLike;\n undici?: MaybePromise<{ fetch: any; ProxyAgent: any }>;\n} = {}): FetchLike {\n if (!proxy) {\n return fetch || globalThis.fetch;\n }\n let agent: any;\n // https://github.com/nodejs/undici/blob/main/docs/best-practices/proxy.md\n return async (...args) => {\n const init = (args[1] ||= {}) as RequestInit & {\n duplex?: string;\n dispatcher?: any;\n };\n {\n const body = init.body;\n if (typeof body === 'object' && body && (body instanceof ReadableStream || Symbol.asyncIterator in body)) {\n // request.duplex must be set if request.body is ReadableStream or Async Iterables\n init.duplex ||= 'half';\n }\n }\n if (!agent) {\n let uri = proxy;\n let token = _token;\n {\n let u: URL | undefined;\n try {\n u = new URL(proxy);\n } catch (e) {}\n if (!token && u && (u.username || u.password)) {\n token = `Basic ${btoa(`${u.username || ''}:${u.password}`)}`;\n u.username = '';\n u.password = '';\n uri = u.toString();\n }\n }\n // if in next use 'next/dist/compiled/undici'\n undici ||= import('undici');\n const mod = await undici;\n const ProxyAgent = mod.ProxyAgent as new (_: any) => any;\n fetch ||= mod.fetch as FetchLike;\n // https://github.com/nodejs/undici/blob/main/docs/api/ProxyAgent.md\n agent = new ProxyAgent({\n uri,\n token,\n });\n // https://github.com/nodejs/node/issues/43187#issuecomment-1134634174\n // (global as any)[Symbol.for('undici.globalDispatcher.1')] = agent;\n // fixme should unwrap error https://github.com/nodejs/undici/issues/1248\n }\n init.dispatcher = agent;\n return await fetch!(...args);\n };\n}\n"],"names":[],"mappings":"AAGO,SAAS,4BAA6B,CAAA;AAAA,EAC3C,KAAA;AAAA,EACA,KAAO,EAAA,MAAA;AAAA,EACP,KAAA;AAAA,EACA,MAAA;AACF,CAAA,GAKI,EAAe,EAAA;AACjB,EAAA,IAAI,CAAC,KAAO,EAAA;AACV,IAAA,OAAO,SAAS,UAAW,CAAA,KAAA,CAAA;AAAA,GAC7B;AACA,EAAI,IAAA,KAAA,CAAA;AAEJ,EAAA,OAAO,UAAU,IAAS,KAAA;AACxB,IAAM,MAAA,IAAA,GAAQ,sBAAY,EAAC,CAAA,CAAA;AAI3B,IAAA;AACE,MAAA,MAAM,OAAO,IAAK,CAAA,IAAA,CAAA;AAClB,MAAI,IAAA,OAAO,SAAS,QAAY,IAAA,IAAA,KAAS,gBAAgB,cAAkB,IAAA,MAAA,CAAO,iBAAiB,IAAO,CAAA,EAAA;AAExG,QAAK,IAAA,CAAA,MAAA,KAAL,KAAK,MAAW,GAAA,MAAA,CAAA,CAAA;AAAA,OAClB;AAAA,KACF;AACA,IAAA,IAAI,CAAC,KAAO,EAAA;AACV,MAAA,IAAI,GAAM,GAAA,KAAA,CAAA;AACV,MAAA,IAAI,KAAQ,GAAA,MAAA,CAAA;AACZ,MAAA;AACE,QAAI,IAAA,CAAA,CAAA;AACJ,QAAI,IAAA;AACF,UAAI,CAAA,GAAA,IAAI,IAAI,KAAK,CAAA,CAAA;AAAA,iBACV,CAAG,EAAA;AAAA,SAAC;AACb,QAAA,IAAI,CAAC,KAAS,IAAA,CAAA,KAAM,CAAE,CAAA,QAAA,IAAY,EAAE,QAAW,CAAA,EAAA;AAC7C,UAAQ,KAAA,GAAA,CAAA,MAAA,EAAS,IAAK,CAAA,CAAA,EAAG,CAAE,CAAA,QAAA,IAAY,EAAE,CAAI,CAAA,EAAA,CAAA,CAAE,QAAQ,CAAA,CAAE,CAAC,CAAA,CAAA,CAAA;AAC1D,UAAA,CAAA,CAAE,QAAW,GAAA,EAAA,CAAA;AACb,UAAA,CAAA,CAAE,QAAW,GAAA,EAAA,CAAA;AACb,UAAA,GAAA,GAAM,EAAE,QAAS,EAAA,CAAA;AAAA,SACnB;AAAA,OACF;AAEA,MAAA,MAAA,KAAA,MAAA,GAAW,OAAO,QAAQ,CAAA,CAAA,CAAA;AAC1B,MAAA,MAAM,MAAM,MAAM,MAAA,CAAA;AAClB,MAAA,MAAM,aAAa,GAAI,CAAA,UAAA,CAAA;AACvB,MAAA,KAAA,KAAA,KAAA,GAAU,GAAI,CAAA,KAAA,CAAA,CAAA;AAEd,MAAA,KAAA,GAAQ,IAAI,UAAW,CAAA;AAAA,QACrB,GAAA;AAAA,QACA,KAAA;AAAA,OACD,CAAA,CAAA;AAAA,KAIH;AACA,IAAA,IAAA,CAAK,UAAa,GAAA,KAAA,CAAA;AAClB,IAAO,OAAA,MAAM,KAAO,CAAA,GAAG,IAAI,CAAA,CAAA;AAAA,GAC7B,CAAA;AACF;;;;"}
|