@wener/utils 1.1.42 → 1.1.44
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/lib/arrays/MaybeArray.js.map +1 -1
- package/lib/arrays/arrayFromAsync.js.map +1 -1
- package/lib/asyncs/AsyncInterval.js.map +1 -1
- package/lib/asyncs/MaybePromise.js.map +1 -1
- package/lib/asyncs/createAsyncIterator.js.map +1 -1
- package/lib/asyncs/createLazyPromise.js.map +1 -1
- package/lib/asyncs/firstOfAsyncIterator.js.map +1 -1
- package/lib/asyncs/generatorOfStream.js.map +1 -1
- package/lib/asyncs/isIterator.js.map +1 -1
- package/lib/asyncs/isPromise.js.map +1 -1
- package/lib/asyncs/isThenable.js.map +1 -1
- package/lib/asyncs/nextOfAsyncIterator.js.map +1 -1
- package/lib/asyncs/promiseOfCallback.js.map +1 -1
- package/lib/asyncs/sleep.js.map +1 -1
- package/lib/asyncs/timeout.js.map +1 -1
- package/lib/browsers/copy.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/cn/division/DivisionCode.js.map +1 -1
- package/lib/cn/division/binarySearch.js.map +1 -1
- package/lib/cn/id/Mod11Checksum.js.map +1 -1
- package/lib/cn/id/ResidentIdNumber.js.map +1 -1
- package/lib/cn/id/types.js.map +1 -1
- package/lib/cn/index.js.map +1 -1
- package/lib/cn/parseChineseNumber.js.map +1 -1
- package/lib/cn/pinyin/cartesianProduct.js.map +1 -1
- package/lib/cn/pinyin/loader.js.map +1 -1
- package/lib/cn/pinyin/preload.js.map +1 -1
- package/lib/cn/pinyin/toPinyinPure.js.map +1 -1
- package/lib/cn/pinyin/transform.js.map +1 -1
- package/lib/cn/uscc/Mod31Checksum.js.map +1 -1
- package/lib/cn/uscc/USCC.js.map +1 -1
- package/lib/cn/uscc/isUSCC.js.map +1 -1
- package/lib/crypto/base.js.map +1 -1
- package/lib/crypto/getNodeCrypto.js.map +1 -1
- package/lib/crypto/getRandomValues.js.map +1 -1
- package/lib/crypto/hashing.js.map +1 -1
- package/lib/crypto/md5.bench.js.map +1 -1
- package/lib/crypto/md5.d.js.map +1 -1
- package/lib/crypto/md5.js.map +1 -1
- package/lib/crypto/pem/pem.js.map +1 -1
- package/lib/crypto/randomUUID.js.map +1 -1
- package/lib/crypto/randomUUIDv7.js.map +1 -1
- package/lib/crypto/ulid.js.map +1 -1
- package/lib/errors/Errors.js.map +1 -1
- package/lib/fetch/HttpStatus.js.map +1 -1
- package/lib/fetch/createFetchWith.js.map +1 -1
- package/lib/fetch/createFetchWithLogging.js.map +1 -1
- package/lib/fetch/createFetchWithRetry.js.map +1 -1
- package/lib/fetch/dumpRequest.js.map +1 -1
- package/lib/fetch/dumpResponse.js.map +1 -1
- package/lib/fetch/index.js.map +1 -1
- package/lib/fetch/types.js.map +1 -1
- package/lib/i18n/createTranslate.js.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/io/AbstractEncoding.js.map +1 -1
- package/lib/io/ArrayBuffer.test-d.js.map +1 -1
- package/lib/io/ArrayBuffers.js +20 -1
- package/lib/io/ArrayBuffers.js.map +1 -1
- package/lib/io/Buffer.js.map +1 -1
- package/lib/io/ByteArray.js +327 -0
- package/lib/io/ByteArray.js.map +1 -0
- package/lib/io/base64.js.map +1 -1
- package/lib/io/isBuffer.js.map +1 -1
- package/lib/io/isTransferable.js.map +1 -1
- package/lib/io/parseDataUri.js.map +1 -1
- package/lib/langs/MaybeFunction.js.map +1 -1
- package/lib/langs/classOf.js.map +1 -1
- package/lib/langs/deepEqual.js.map +1 -1
- package/lib/langs/deepFreeze.js.map +1 -1
- package/lib/langs/isClass.js.map +1 -1
- package/lib/langs/isDefined.js.map +1 -1
- package/lib/langs/isEmptyObject.js.map +1 -1
- package/lib/langs/isFunction.js.map +1 -1
- package/lib/langs/isPlainObject.js.map +1 -1
- package/lib/langs/memoize.js.map +1 -1
- package/lib/langs/mixin.js.map +1 -1
- package/lib/langs/parseBoolean.js.map +1 -1
- package/lib/langs/shallowClone.js.map +1 -1
- package/lib/langs/shallowEqual.js.map +1 -1
- package/lib/libs/ms.js.map +1 -1
- package/lib/logging/Logger.js.map +1 -1
- package/lib/logging/createChildLogger.js.map +1 -1
- package/lib/logging/createLogger.js.map +1 -1
- package/lib/logging/createNoopLogger.js.map +1 -1
- package/lib/logging/slog.js.map +1 -1
- package/lib/maths/clamp.js.map +1 -1
- package/lib/maths/random.js.map +1 -1
- package/lib/modules/isModule.js.map +1 -1
- package/lib/modules/parseModuleId.js.map +1 -1
- package/lib/objects/computeIfAbsent.js.map +1 -1
- package/lib/objects/get.js.map +1 -1
- package/lib/objects/get.test-d.js.map +1 -1
- package/lib/objects/merge/index.js.map +1 -1
- package/lib/objects/merge/isMergeableObject.js.map +1 -1
- package/lib/objects/merge/merge.js.map +1 -1
- package/lib/objects/parseObjectPath.js.map +1 -1
- package/lib/objects/set.js.map +1 -1
- package/lib/runtime/AsyncCloser.js.map +1 -1
- package/lib/runtime/Closer.js.map +1 -1
- package/lib/runtime/getGlobalThis.js.map +1 -1
- package/lib/runtime/structuredClone.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/common/encoder.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/common/formatter.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/common/index.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/common/jsdoc.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/expression/compiler.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/expression/errors.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/expression/evaluator.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/expression/expression.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/expression/index.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/index.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/index.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-arktype.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-expression.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-grpc.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-io-ts.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-javascript.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-json-schema.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-typebox.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-typescript.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-valibot.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-value.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-yrel.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-yup.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-zod.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/typescript/index.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/typescript/typescript-to-model.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/typescript/typescript-to-typebox.js.map +1 -1
- package/lib/schema/typebox/gen/index.js.map +1 -1
- package/lib/schema/typebox/index.js.map +1 -1
- package/lib/schema/typebox/typebox.js.map +1 -1
- package/lib/scripts/getGenerateContext.js.map +1 -1
- package/lib/server/crypto/md5.js.map +1 -1
- package/lib/server/fetch/createFetchWithProxy.js.map +1 -1
- package/lib/server/fetch/createFetchWithProxyByNodeFetch.js.map +1 -1
- package/lib/server/fetch/createFetchWithProxyByUndici.js.map +1 -1
- package/lib/server/getPackageDir.js.map +1 -1
- package/lib/server/index.js.map +1 -1
- package/lib/server/jsdom.js.map +1 -1
- package/lib/server/node-fetch.js.map +1 -1
- package/lib/server/polyfill/polyfillBrowser.js.map +1 -1
- package/lib/server/polyfill/polyfillCrypto.js.map +1 -1
- package/lib/server/polyfill/polyfillFetch.js.map +1 -1
- package/lib/server/polyfill/polyfillJsDom.js.map +1 -1
- package/lib/server/polyfill/polyfillWebSocket.js.map +1 -1
- package/lib/server/ws.js.map +1 -1
- package/lib/strings/camelCase.js.map +1 -1
- package/lib/strings/formatBytes.js.map +1 -1
- package/lib/strings/renderTemplate.js.map +1 -1
- package/lib/typedoc.js.map +1 -1
- package/lib/types.d.js.map +1 -1
- package/lib/validations/asserts.js.map +1 -1
- package/lib/validations/isUUID.js.map +1 -1
- package/lib/validations/parseTimestamp.js.map +1 -1
- package/package.json +5 -5
- package/src/index.ts +1 -0
- package/src/io/ArrayBuffers.ts +32 -3
- package/src/io/ByteArray.ts +403 -0
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
import { isDefined } from '../langs/isDefined.js';
|
|
2
|
+
import { ArrayBuffers } from './ArrayBuffers.js';
|
|
3
|
+
function asBuffer(o) {
|
|
4
|
+
if (o instanceof ArrayBuffer) {
|
|
5
|
+
return o;
|
|
6
|
+
}
|
|
7
|
+
if (ArrayBuffer.isView(o)) {
|
|
8
|
+
// 保留 offset&length
|
|
9
|
+
if (o.byteLength !== o.buffer.byteLength) {
|
|
10
|
+
// ArrayBuffer 没有 subarray
|
|
11
|
+
// if ('subarray' in o.buffer) {
|
|
12
|
+
// return (o.buffer as any).subarray(o.byteOffset, o.byteOffset + o.byteLength);
|
|
13
|
+
// }
|
|
14
|
+
return o.buffer.slice(o.byteOffset, o.byteOffset + o.byteLength);
|
|
15
|
+
}
|
|
16
|
+
return o.buffer;
|
|
17
|
+
}
|
|
18
|
+
return o;
|
|
19
|
+
}
|
|
20
|
+
// function asView(o: AnyBuffer) {
|
|
21
|
+
// if (o instanceof DataView) {
|
|
22
|
+
// return o;
|
|
23
|
+
// }
|
|
24
|
+
// if (ArrayBuffer.isView(o)) {
|
|
25
|
+
// // 不 clone 也能保留 offset&length
|
|
26
|
+
// return new DataView(o.buffer, o.byteOffset, o.byteLength);
|
|
27
|
+
// }
|
|
28
|
+
// return new DataView(o);
|
|
29
|
+
// }
|
|
30
|
+
/**
|
|
31
|
+
* @see https://www.egret.uk/docs/egretengine/engine/egret.ByteArray
|
|
32
|
+
* @see https://netty.io/4.1/api/io/netty/buffer/ByteBuf.html
|
|
33
|
+
*/ export class ByteArray {
|
|
34
|
+
position = 0;
|
|
35
|
+
#buffer;
|
|
36
|
+
#view;
|
|
37
|
+
constructor(buffer = new ArrayBuffer(0, {
|
|
38
|
+
maxByteLength: 1024
|
|
39
|
+
})){
|
|
40
|
+
this.#buffer = asBuffer(buffer);
|
|
41
|
+
// note prefer view over buffer, avoid the slice overhead ?
|
|
42
|
+
this.#view = new DataView(this.#buffer);
|
|
43
|
+
}
|
|
44
|
+
get view() {
|
|
45
|
+
return this.#view;
|
|
46
|
+
}
|
|
47
|
+
get buffer() {
|
|
48
|
+
return this.#buffer;
|
|
49
|
+
}
|
|
50
|
+
set buffer(buffer) {
|
|
51
|
+
this.#buffer = asBuffer(buffer);
|
|
52
|
+
this.#view = new DataView(this.#buffer);
|
|
53
|
+
}
|
|
54
|
+
get length() {
|
|
55
|
+
return this.view.byteLength;
|
|
56
|
+
}
|
|
57
|
+
set length(length) {
|
|
58
|
+
this.resize(length);
|
|
59
|
+
}
|
|
60
|
+
ensureSpace(length) {
|
|
61
|
+
if (this.remaining() < length) {
|
|
62
|
+
this.resize(this.length + length);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
resize(newLength) {
|
|
66
|
+
// Chrome 111, Nodejs 20
|
|
67
|
+
let buf = this.buffer;
|
|
68
|
+
if (buf.resize && (!isDefined(buf.resizable) || buf.resizable)) {
|
|
69
|
+
buf.resize(newLength);
|
|
70
|
+
} else {
|
|
71
|
+
let newBuffer = new ArrayBuffer(newLength);
|
|
72
|
+
new Uint8Array(newBuffer).set(new Uint8Array(buf));
|
|
73
|
+
this.buffer = newBuffer;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
writeByte(value) {
|
|
77
|
+
this.ensureSpace(1);
|
|
78
|
+
this.view.setUint8(this.position++, value);
|
|
79
|
+
}
|
|
80
|
+
writeBytes(bytes) {
|
|
81
|
+
this.ensureSpace(bytes.byteLength);
|
|
82
|
+
new Uint8Array(this.buffer).set(new Uint8Array(bytes), this.position);
|
|
83
|
+
this.position += bytes.byteLength;
|
|
84
|
+
}
|
|
85
|
+
writeInt8(value) {
|
|
86
|
+
this.ensureSpace(1);
|
|
87
|
+
this.view.setInt8(this.position, value);
|
|
88
|
+
this.position += 1;
|
|
89
|
+
}
|
|
90
|
+
writeUint8(value) {
|
|
91
|
+
this.ensureSpace(1);
|
|
92
|
+
this.view.setUint8(this.position, value);
|
|
93
|
+
this.position += 1;
|
|
94
|
+
}
|
|
95
|
+
writeInt16(value) {
|
|
96
|
+
this.ensureSpace(2);
|
|
97
|
+
this.view.setInt16(this.position, value);
|
|
98
|
+
this.position += 2;
|
|
99
|
+
}
|
|
100
|
+
writeUint16(value) {
|
|
101
|
+
this.ensureSpace(2);
|
|
102
|
+
this.view.setUint16(this.position, value);
|
|
103
|
+
this.position += 2;
|
|
104
|
+
}
|
|
105
|
+
writeInt32(value) {
|
|
106
|
+
this.ensureSpace(4);
|
|
107
|
+
this.view.setInt32(this.position, value);
|
|
108
|
+
this.position += 4;
|
|
109
|
+
}
|
|
110
|
+
writeUint32(value) {
|
|
111
|
+
this.ensureSpace(4);
|
|
112
|
+
this.view.setUint32(this.position, value);
|
|
113
|
+
this.position += 4;
|
|
114
|
+
}
|
|
115
|
+
writeInt64(value) {
|
|
116
|
+
this.ensureSpace(8);
|
|
117
|
+
this.view.setBigInt64(this.position, value);
|
|
118
|
+
this.position += 8;
|
|
119
|
+
}
|
|
120
|
+
writeUint64(value) {
|
|
121
|
+
this.ensureSpace(8);
|
|
122
|
+
this.view.setBigUint64(this.position, value);
|
|
123
|
+
this.position += 8;
|
|
124
|
+
}
|
|
125
|
+
writeFloat32(value) {
|
|
126
|
+
this.ensureSpace(4);
|
|
127
|
+
this.view.setFloat32(this.position, value);
|
|
128
|
+
this.position += 4;
|
|
129
|
+
}
|
|
130
|
+
writeFloat64(value) {
|
|
131
|
+
this.ensureSpace(8);
|
|
132
|
+
this.view.setFloat64(this.position, value);
|
|
133
|
+
this.position += 8;
|
|
134
|
+
}
|
|
135
|
+
writeBoolean(value) {
|
|
136
|
+
this.writeByte(value ? 1 : 0);
|
|
137
|
+
}
|
|
138
|
+
writeString(value, len) {
|
|
139
|
+
let encoder = new TextEncoder();
|
|
140
|
+
let bytes = encoder.encode(value);
|
|
141
|
+
this.writeBytes(ArrayBuffers.resize(bytes.buffer, len));
|
|
142
|
+
}
|
|
143
|
+
readByte() {
|
|
144
|
+
return this.view.getUint8(this.position++);
|
|
145
|
+
}
|
|
146
|
+
readBytes(length) {
|
|
147
|
+
let bytes = this.buffer.slice(this.position, this.position + length);
|
|
148
|
+
this.position += length;
|
|
149
|
+
return bytes;
|
|
150
|
+
}
|
|
151
|
+
readInt8() {
|
|
152
|
+
let value = this.view.getInt8(this.position);
|
|
153
|
+
this.position += 1;
|
|
154
|
+
return value;
|
|
155
|
+
}
|
|
156
|
+
readUint8() {
|
|
157
|
+
let value = this.view.getUint8(this.position);
|
|
158
|
+
this.position += 1;
|
|
159
|
+
return value;
|
|
160
|
+
}
|
|
161
|
+
readInt16() {
|
|
162
|
+
let value = this.view.getInt16(this.position);
|
|
163
|
+
this.position += 2;
|
|
164
|
+
return value;
|
|
165
|
+
}
|
|
166
|
+
readUint16() {
|
|
167
|
+
let value = this.view.getUint16(this.position);
|
|
168
|
+
this.position += 2;
|
|
169
|
+
return value;
|
|
170
|
+
}
|
|
171
|
+
readInt32() {
|
|
172
|
+
let value = this.view.getInt32(this.position);
|
|
173
|
+
this.position += 4;
|
|
174
|
+
return value;
|
|
175
|
+
}
|
|
176
|
+
readUint32() {
|
|
177
|
+
let value = this.view.getUint32(this.position);
|
|
178
|
+
this.position += 4;
|
|
179
|
+
return value;
|
|
180
|
+
}
|
|
181
|
+
readInt64() {
|
|
182
|
+
let value = this.view.getBigInt64(this.position);
|
|
183
|
+
this.position += 8;
|
|
184
|
+
return safeNumber(value);
|
|
185
|
+
}
|
|
186
|
+
readUint64() {
|
|
187
|
+
let value = this.view.getBigUint64(this.position);
|
|
188
|
+
this.position += 8;
|
|
189
|
+
return safeNumber(value);
|
|
190
|
+
}
|
|
191
|
+
readFloat32() {
|
|
192
|
+
let value = this.view.getFloat32(this.position);
|
|
193
|
+
this.position += 4;
|
|
194
|
+
return value;
|
|
195
|
+
}
|
|
196
|
+
readFloat64() {
|
|
197
|
+
let value = this.view.getFloat64(this.position);
|
|
198
|
+
this.position += 8;
|
|
199
|
+
return value;
|
|
200
|
+
}
|
|
201
|
+
readBoolean() {
|
|
202
|
+
return this.readByte() === 1;
|
|
203
|
+
}
|
|
204
|
+
readString(length) {
|
|
205
|
+
let bytes = this.readBytes(length);
|
|
206
|
+
let decoder = new TextDecoder();
|
|
207
|
+
let a = new Uint8Array(bytes);
|
|
208
|
+
let idx = a.indexOf(0);
|
|
209
|
+
if (idx !== -1) {
|
|
210
|
+
bytes = bytes.slice(0, idx);
|
|
211
|
+
}
|
|
212
|
+
return decoder.decode(bytes);
|
|
213
|
+
}
|
|
214
|
+
readHexString(length) {
|
|
215
|
+
let bytes = this.readBytes(length);
|
|
216
|
+
return ArrayBuffers.toHex(bytes);
|
|
217
|
+
}
|
|
218
|
+
writeInt24(value) {
|
|
219
|
+
this.writeUint8(value & 0xff);
|
|
220
|
+
this.writeUint16(value >> 8);
|
|
221
|
+
}
|
|
222
|
+
readInt24() {
|
|
223
|
+
return this.readUint8() | this.readUint16() << 8;
|
|
224
|
+
}
|
|
225
|
+
writeZero(length) {
|
|
226
|
+
this.writeBytes(new Uint8Array(length).buffer);
|
|
227
|
+
}
|
|
228
|
+
writeValue(a, b) {
|
|
229
|
+
const tv = typeof a === 'string' ? {
|
|
230
|
+
type: a,
|
|
231
|
+
value: b
|
|
232
|
+
} : a;
|
|
233
|
+
const { type, value, length } = tv;
|
|
234
|
+
switch(type){
|
|
235
|
+
case 'uint8':
|
|
236
|
+
this.writeUint8(value);
|
|
237
|
+
break;
|
|
238
|
+
case 'byte':
|
|
239
|
+
case 'int8':
|
|
240
|
+
this.writeInt8(value);
|
|
241
|
+
break;
|
|
242
|
+
case 'uint16':
|
|
243
|
+
this.writeUint16(value);
|
|
244
|
+
break;
|
|
245
|
+
case 'int16':
|
|
246
|
+
this.writeInt16(value);
|
|
247
|
+
break;
|
|
248
|
+
case 'uint32':
|
|
249
|
+
this.writeUint32(value);
|
|
250
|
+
break;
|
|
251
|
+
case 'int32':
|
|
252
|
+
this.writeInt32(value);
|
|
253
|
+
break;
|
|
254
|
+
case 'float32':
|
|
255
|
+
this.writeFloat32(value);
|
|
256
|
+
break;
|
|
257
|
+
case 'float64':
|
|
258
|
+
this.writeFloat64(value);
|
|
259
|
+
break;
|
|
260
|
+
case 'string':
|
|
261
|
+
this.writeString(value, length);
|
|
262
|
+
break;
|
|
263
|
+
case 'boolean':
|
|
264
|
+
this.writeBoolean(value);
|
|
265
|
+
break;
|
|
266
|
+
case 'bytes':
|
|
267
|
+
this.writeBytes(value);
|
|
268
|
+
break;
|
|
269
|
+
default:
|
|
270
|
+
throw new Error(`Unknown type ${type}`);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
readInt() {
|
|
274
|
+
return this.readInt32();
|
|
275
|
+
}
|
|
276
|
+
readFloat() {
|
|
277
|
+
return this.readFloat32();
|
|
278
|
+
}
|
|
279
|
+
readDouble() {
|
|
280
|
+
return this.readFloat64();
|
|
281
|
+
}
|
|
282
|
+
remaining() {
|
|
283
|
+
return this.view.byteLength - this.position;
|
|
284
|
+
}
|
|
285
|
+
toUint8Array() {
|
|
286
|
+
return new Uint8Array(this.buffer);
|
|
287
|
+
}
|
|
288
|
+
toHex() {
|
|
289
|
+
return ArrayBuffers.toHex(this.buffer);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
export function toDump(data) {
|
|
293
|
+
return Array.from(ArrayBuffers.toHex(data).match(/.{1,32}/g) ?? []).map((v, i)=>{
|
|
294
|
+
let idxPrefix = `${i.toString(16).padStart(8, '0')}:`;
|
|
295
|
+
let content = Array.from(v.match(/.{4}/g) ?? []).join(' ');
|
|
296
|
+
let chars = Array.from(new Uint8Array(ArrayBuffers.fromHex(v).buffer)).map((v)=>{
|
|
297
|
+
let c = String.fromCharCode(v);
|
|
298
|
+
if (v < 32 || v > 126) {
|
|
299
|
+
c = '.';
|
|
300
|
+
}
|
|
301
|
+
return c;
|
|
302
|
+
});
|
|
303
|
+
return [
|
|
304
|
+
idxPrefix,
|
|
305
|
+
content.padEnd(40, ' '),
|
|
306
|
+
chars.join('')
|
|
307
|
+
].join(' ');
|
|
308
|
+
}).join('\n');
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Chrome Websocket Binary format
|
|
312
|
+
* ```
|
|
313
|
+
* 00000000: 0000 0000 0000 0000 0000 0000 0000 0000 ................
|
|
314
|
+
* ```
|
|
315
|
+
*/ export function fromDump(dump) {
|
|
316
|
+
return ArrayBuffers.fromHex(dump.split('\n').map((v)=>{
|
|
317
|
+
return v.substring(10, 10 + 41).replaceAll(' ', '');
|
|
318
|
+
}).join(''));
|
|
319
|
+
}
|
|
320
|
+
function safeNumber(n) {
|
|
321
|
+
if (n > Number.MAX_SAFE_INTEGER) {
|
|
322
|
+
return n;
|
|
323
|
+
}
|
|
324
|
+
return Number(n);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
//# sourceMappingURL=ByteArray.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/io/ByteArray.ts"],"sourcesContent":["import { isDefined } from '../langs/isDefined';\nimport { ArrayBuffers } from './ArrayBuffers';\n\ntype AnyBuffer = BufferSource | ArrayBufferLike;\n\nfunction asBuffer(o: AnyBuffer) {\n if (o instanceof ArrayBuffer) {\n return o;\n }\n if (ArrayBuffer.isView(o)) {\n // 保留 offset&length\n if (o.byteLength !== o.buffer.byteLength) {\n // ArrayBuffer 没有 subarray\n // if ('subarray' in o.buffer) {\n // return (o.buffer as any).subarray(o.byteOffset, o.byteOffset + o.byteLength);\n // }\n return o.buffer.slice(o.byteOffset, o.byteOffset + o.byteLength);\n }\n return o.buffer;\n }\n return o;\n}\n\n// function asView(o: AnyBuffer) {\n// if (o instanceof DataView) {\n// return o;\n// }\n// if (ArrayBuffer.isView(o)) {\n// // 不 clone 也能保留 offset&length\n// return new DataView(o.buffer, o.byteOffset, o.byteLength);\n// }\n// return new DataView(o);\n// }\n\n/**\n * @see https://www.egret.uk/docs/egretengine/engine/egret.ByteArray\n * @see https://netty.io/4.1/api/io/netty/buffer/ByteBuf.html\n */\nexport class ByteArray {\n position = 0;\n\n #buffer: ArrayBufferLike;\n #view: DataView;\n\n constructor(buffer: AnyBuffer = new ArrayBuffer(0, { maxByteLength: 1024 })) {\n this.#buffer = asBuffer(buffer);\n // note prefer view over buffer, avoid the slice overhead ?\n this.#view = new DataView(this.#buffer);\n }\n\n get view() {\n return this.#view;\n }\n\n get buffer(): ArrayBufferLike {\n return this.#buffer;\n }\n\n set buffer(buffer: AnyBuffer) {\n this.#buffer = asBuffer(buffer);\n this.#view = new DataView(this.#buffer);\n }\n\n get length() {\n return this.view.byteLength;\n }\n\n set length(length: number) {\n this.resize(length);\n }\n\n private ensureSpace(length: number) {\n if (this.remaining() < length) {\n this.resize(this.length + length);\n }\n }\n\n resize(newLength: number) {\n // Chrome 111, Nodejs 20\n let buf = this.buffer;\n if (buf.resize && (!isDefined(buf.resizable) || buf.resizable)) {\n buf.resize(newLength);\n } else {\n let newBuffer = new ArrayBuffer(newLength);\n new Uint8Array(newBuffer).set(new Uint8Array(buf));\n this.buffer = newBuffer;\n }\n }\n\n writeByte(value: number) {\n this.ensureSpace(1);\n this.view.setUint8(this.position++, value);\n }\n\n writeBytes(bytes: ArrayBufferLike) {\n this.ensureSpace(bytes.byteLength);\n new Uint8Array(this.buffer).set(new Uint8Array(bytes), this.position);\n this.position += bytes.byteLength;\n }\n\n writeInt8(value: number) {\n this.ensureSpace(1);\n this.view.setInt8(this.position, value);\n this.position += 1;\n }\n\n writeUint8(value: number) {\n this.ensureSpace(1);\n this.view.setUint8(this.position, value);\n this.position += 1;\n }\n\n writeInt16(value: number) {\n this.ensureSpace(2);\n this.view.setInt16(this.position, value);\n this.position += 2;\n }\n\n writeUint16(value: number) {\n this.ensureSpace(2);\n this.view.setUint16(this.position, value);\n this.position += 2;\n }\n\n writeInt32(value: number) {\n this.ensureSpace(4);\n this.view.setInt32(this.position, value);\n this.position += 4;\n }\n\n writeUint32(value: number) {\n this.ensureSpace(4);\n this.view.setUint32(this.position, value);\n this.position += 4;\n }\n\n writeInt64(value: bigint) {\n this.ensureSpace(8);\n this.view.setBigInt64(this.position, value);\n this.position += 8;\n }\n\n writeUint64(value: bigint) {\n this.ensureSpace(8);\n this.view.setBigUint64(this.position, value);\n this.position += 8;\n }\n\n writeFloat32(value: number) {\n this.ensureSpace(4);\n this.view.setFloat32(this.position, value);\n this.position += 4;\n }\n\n writeFloat64(value: number) {\n this.ensureSpace(8);\n this.view.setFloat64(this.position, value);\n this.position += 8;\n }\n\n writeBoolean(value: boolean) {\n this.writeByte(value ? 1 : 0);\n }\n\n writeString(value: string): void;\n writeString(value: string, len?: number): void;\n writeString(value: string, len?: number) {\n let encoder = new TextEncoder();\n let bytes = encoder.encode(value);\n this.writeBytes(ArrayBuffers.resize(bytes.buffer, len));\n }\n\n readByte() {\n return this.view.getUint8(this.position++);\n }\n\n readBytes(length: number) {\n let bytes = this.buffer.slice(this.position, this.position + length);\n this.position += length;\n return bytes;\n }\n\n readInt8() {\n let value = this.view.getInt8(this.position);\n this.position += 1;\n return value;\n }\n\n readUint8() {\n let value = this.view.getUint8(this.position);\n this.position += 1;\n return value;\n }\n\n readInt16() {\n let value = this.view.getInt16(this.position);\n this.position += 2;\n return value;\n }\n\n readUint16() {\n let value = this.view.getUint16(this.position);\n this.position += 2;\n return value;\n }\n\n readInt32() {\n let value = this.view.getInt32(this.position);\n this.position += 4;\n return value;\n }\n\n readUint32() {\n let value = this.view.getUint32(this.position);\n this.position += 4;\n return value;\n }\n\n readInt64() {\n let value = this.view.getBigInt64(this.position);\n this.position += 8;\n return safeNumber(value);\n }\n\n readUint64() {\n let value = this.view.getBigUint64(this.position);\n this.position += 8;\n return safeNumber(value);\n }\n\n readFloat32() {\n let value = this.view.getFloat32(this.position);\n this.position += 4;\n return value;\n }\n\n readFloat64() {\n let value = this.view.getFloat64(this.position);\n this.position += 8;\n return value;\n }\n\n readBoolean() {\n return this.readByte() === 1;\n }\n\n readString(length: number) {\n let bytes = this.readBytes(length);\n let decoder = new TextDecoder();\n let a = new Uint8Array(bytes);\n let idx = a.indexOf(0);\n if (idx !== -1) {\n bytes = bytes.slice(0, idx);\n }\n return decoder.decode(bytes);\n }\n\n readHexString(length: number) {\n let bytes = this.readBytes(length);\n return ArrayBuffers.toHex(bytes);\n }\n\n writeInt24(value: number) {\n this.writeUint8(value & 0xff);\n this.writeUint16(value >> 8);\n }\n\n readInt24() {\n return this.readUint8() | (this.readUint16() << 8);\n }\n\n writeZero(length: number) {\n this.writeBytes(new Uint8Array(length).buffer);\n }\n\n writeValue(typ: TypedValue['type'], val: TypedValue['value']): void;\n writeValue(tv: TypedValue): void;\n writeValue(a: any, b?: any) {\n const tv: TypedValue = typeof a === 'string' ? { type: a, value: b } : a;\n const { type, value, length } = tv;\n switch (type) {\n case 'uint8':\n this.writeUint8(value);\n break;\n case 'byte':\n case 'int8':\n this.writeInt8(value);\n break;\n case 'uint16':\n this.writeUint16(value);\n break;\n case 'int16':\n this.writeInt16(value);\n break;\n case 'uint32':\n this.writeUint32(value);\n break;\n case 'int32':\n this.writeInt32(value);\n break;\n case 'float32':\n this.writeFloat32(value);\n break;\n case 'float64':\n this.writeFloat64(value);\n break;\n case 'string':\n this.writeString(value, length);\n break;\n case 'boolean':\n this.writeBoolean(value);\n break;\n case 'bytes':\n this.writeBytes(value);\n break;\n default:\n throw new Error(`Unknown type ${type}`);\n }\n }\n\n readInt() {\n return this.readInt32();\n }\n\n readFloat() {\n return this.readFloat32();\n }\n\n readDouble() {\n return this.readFloat64();\n }\n\n remaining() {\n return this.view.byteLength - this.position;\n }\n\n toUint8Array() {\n return new Uint8Array(this.buffer);\n }\n\n toHex() {\n return ArrayBuffers.toHex(this.buffer);\n }\n}\n\nexport interface TypedValue {\n type:\n | 'byte'\n | 'bytes'\n | 'uint8'\n | 'int8'\n | 'uint16'\n | 'int16'\n | 'uint32'\n | 'int32'\n | 'float32'\n | 'float64'\n | 'string'\n | 'boolean';\n value: any;\n length?: number;\n}\n\nexport function toDump(data: BufferSource) {\n return Array.from(ArrayBuffers.toHex(data).match(/.{1,32}/g) ?? [])\n .map((v, i) => {\n let idxPrefix = `${i.toString(16).padStart(8, '0')}:`;\n let content = Array.from(v.match(/.{4}/g) ?? []).join(' ');\n let chars = Array.from(new Uint8Array(ArrayBuffers.fromHex(v).buffer)).map((v) => {\n let c = String.fromCharCode(v);\n if (v < 32 || v > 126) {\n c = '.';\n }\n return c;\n });\n return [idxPrefix, content.padEnd(40, ' '), chars.join('')].join(' ');\n })\n .join('\\n');\n}\n\n/**\n * Chrome Websocket Binary format\n * ```\n * 00000000: 0000 0000 0000 0000 0000 0000 0000 0000 ................\n * ```\n */\nexport function fromDump(dump: string) {\n return ArrayBuffers.fromHex(\n dump\n .split('\\n')\n .map((v) => {\n return v.substring(10, 10 + 41).replaceAll(' ', '');\n })\n .join(''),\n );\n}\n\nfunction safeNumber(n: bigint) {\n if (n > Number.MAX_SAFE_INTEGER) {\n return n;\n }\n return Number(n);\n}\n"],"names":["isDefined","ArrayBuffers","asBuffer","o","ArrayBuffer","isView","byteLength","buffer","slice","byteOffset","ByteArray","position","view","constructor","maxByteLength","DataView","length","resize","ensureSpace","remaining","newLength","buf","resizable","newBuffer","Uint8Array","set","writeByte","value","setUint8","writeBytes","bytes","writeInt8","setInt8","writeUint8","writeInt16","setInt16","writeUint16","setUint16","writeInt32","setInt32","writeUint32","setUint32","writeInt64","setBigInt64","writeUint64","setBigUint64","writeFloat32","setFloat32","writeFloat64","setFloat64","writeBoolean","writeString","len","encoder","TextEncoder","encode","readByte","getUint8","readBytes","readInt8","getInt8","readUint8","readInt16","getInt16","readUint16","getUint16","readInt32","getInt32","readUint32","getUint32","readInt64","getBigInt64","safeNumber","readUint64","getBigUint64","readFloat32","getFloat32","readFloat64","getFloat64","readBoolean","readString","decoder","TextDecoder","a","idx","indexOf","decode","readHexString","toHex","writeInt24","readInt24","writeZero","writeValue","b","tv","type","Error","readInt","readFloat","readDouble","toUint8Array","toDump","data","Array","from","match","map","v","i","idxPrefix","toString","padStart","content","join","chars","fromHex","c","String","fromCharCode","padEnd","fromDump","dump","split","substring","replaceAll","n","Number","MAX_SAFE_INTEGER"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
package/lib/io/base64.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/io/base64.ts"],"sourcesContent":["// https://github.com/niklasvh/base64-arraybuffer/blob/master/src/index.ts\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport function encodeArrayBufferToBase64(arraybuffer: ArrayBuffer): string {\n const bytes = new Uint8Array(arraybuffer);\n const len = bytes.length;\n let base64 = '';\n\n for (let i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n}\n\nexport function decodeBase64ToArrayBuffer(base64: string): ArrayBuffer {\n const len = base64.length;\n let bufferLength = base64.length * 0.75;\n let i;\n let p = 0;\n let encoded1;\n let encoded2;\n let encoded3;\n let encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength);\n const bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n}\n"],"names":["chars","lookup","Uint8Array","i","length","charCodeAt","encodeArrayBufferToBase64","arraybuffer","bytes","len","base64","substring","decodeBase64ToArrayBuffer","bufferLength","p","encoded1","encoded2","encoded3","encoded4","ArrayBuffer"],"mappings":"AAAA,0EAA0E;AAE1E,MAAMA,QAAQ;AAEd,wCAAwC;AACxC,MAAMC,SAAS,OAAOC,eAAe,cAAc,EAAE,GAAG,IAAIA,WAAW;AACvE,IAAK,IAAIC,IAAI,GAAGA,IAAIH,MAAMI,MAAM,EAAED,IAAK;IACrCF,MAAM,CAACD,MAAMK,UAAU,CAACF,GAAG,GAAGA;AAChC;AAEA,OAAO,SAASG,0BAA0BC,WAAwB;IAChE,MAAMC,QAAQ,IAAIN,WAAWK;IAC7B,MAAME,MAAMD,MAAMJ,MAAM;IACxB,IAAIM,SAAS;IAEb,IAAK,IAAIP,IAAI,GAAGA,IAAIM,KAAKN,KAAK,EAAG;QAC/BO,UAAUV,KAAK,CAACQ,KAAK,CAACL,EAAE,IAAI,EAAE;QAC9BO,UAAUV,KAAK,CAAC,AAAEQ,CAAAA,KAAK,CAACL,EAAE,GAAG,CAAA,KAAM,IAAMK,KAAK,CAACL,IAAI,EAAE,IAAI,EAAG;QAC5DO,UAAUV,KAAK,CAAC,AAAEQ,CAAAA,KAAK,CAACL,IAAI,EAAE,GAAG,EAAC,KAAM,IAAMK,KAAK,CAACL,IAAI,EAAE,IAAI,EAAG;QACjEO,UAAUV,KAAK,CAACQ,KAAK,CAACL,IAAI,EAAE,GAAG,GAAG;IACpC;IAEA,IAAIM,MAAM,MAAM,GAAG;QACjBC,SAASA,OAAOC,SAAS,CAAC,GAAGD,OAAON,MAAM,GAAG,KAAK;IACpD,OAAO,IAAIK,MAAM,MAAM,GAAG;QACxBC,SAASA,OAAOC,SAAS,CAAC,GAAGD,OAAON,MAAM,GAAG,KAAK;IACpD;IAEA,OAAOM;AACT;AAEA,OAAO,SAASE,0BAA0BF,MAAc;IACtD,MAAMD,MAAMC,OAAON,MAAM;IACzB,IAAIS,eAAeH,OAAON,MAAM,GAAG;IACnC,IAAID;IACJ,IAAIW,IAAI;IACR,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IAEJ,IAAIR,MAAM,CAACA,OAAON,MAAM,GAAG,EAAE,KAAK,KAAK;QACrCS;QACA,IAAIH,MAAM,CAACA,OAAON,MAAM,GAAG,EAAE,KAAK,KAAK;YACrCS;QACF;IACF;IAEA,MAAMN,cAAc,IAAIY,YAAYN;IACpC,MAAML,QAAQ,IAAIN,WAAWK;IAE7B,IAAKJ,IAAI,GAAGA,IAAIM,KAAKN,KAAK,EAAG;QAC3BY,WAAWd,MAAM,CAACS,OAAOL,UAAU,CAACF,GAAG;QACvCa,WAAWf,MAAM,CAACS,OAAOL,UAAU,CAACF,IAAI,GAAG;QAC3Cc,WAAWhB,MAAM,CAACS,OAAOL,UAAU,CAACF,IAAI,GAAG;QAC3Ce,WAAWjB,MAAM,CAACS,OAAOL,UAAU,CAACF,IAAI,GAAG;QAE3CK,KAAK,CAACM,IAAI,GAAG,AAACC,YAAY,IAAMC,YAAY;QAC5CR,KAAK,CAACM,IAAI,GAAG,AAAEE,CAAAA,WAAW,EAAC,KAAM,IAAMC,YAAY;QACnDT,KAAK,CAACM,IAAI,GAAG,AAAEG,CAAAA,WAAW,CAAA,KAAM,IAAMC,WAAW;IACnD;IAEA,OAAOX;AACT"}
|
|
1
|
+
{"version":3,"sources":["../../src/io/base64.ts"],"sourcesContent":["// https://github.com/niklasvh/base64-arraybuffer/blob/master/src/index.ts\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport function encodeArrayBufferToBase64(arraybuffer: ArrayBuffer): string {\n const bytes = new Uint8Array(arraybuffer);\n const len = bytes.length;\n let base64 = '';\n\n for (let i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n}\n\nexport function decodeBase64ToArrayBuffer(base64: string): ArrayBuffer {\n const len = base64.length;\n let bufferLength = base64.length * 0.75;\n let i;\n let p = 0;\n let encoded1;\n let encoded2;\n let encoded3;\n let encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength);\n const bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n}\n"],"names":["chars","lookup","Uint8Array","i","length","charCodeAt","encodeArrayBufferToBase64","arraybuffer","bytes","len","base64","substring","decodeBase64ToArrayBuffer","bufferLength","p","encoded1","encoded2","encoded3","encoded4","ArrayBuffer"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,0EAA0E;AAE1E,MAAMA,QAAQ;AAEd,wCAAwC;AACxC,MAAMC,SAAS,OAAOC,eAAe,cAAc,EAAE,GAAG,IAAIA,WAAW;AACvE,IAAK,IAAIC,IAAI,GAAGA,IAAIH,MAAMI,MAAM,EAAED,IAAK;IACrCF,MAAM,CAACD,MAAMK,UAAU,CAACF,GAAG,GAAGA;AAChC;AAEA,OAAO,SAASG,0BAA0BC,WAAwB;IAChE,MAAMC,QAAQ,IAAIN,WAAWK;IAC7B,MAAME,MAAMD,MAAMJ,MAAM;IACxB,IAAIM,SAAS;IAEb,IAAK,IAAIP,IAAI,GAAGA,IAAIM,KAAKN,KAAK,EAAG;QAC/BO,UAAUV,KAAK,CAACQ,KAAK,CAACL,EAAE,IAAI,EAAE;QAC9BO,UAAUV,KAAK,CAAC,AAAEQ,CAAAA,KAAK,CAACL,EAAE,GAAG,CAAA,KAAM,IAAMK,KAAK,CAACL,IAAI,EAAE,IAAI,EAAG;QAC5DO,UAAUV,KAAK,CAAC,AAAEQ,CAAAA,KAAK,CAACL,IAAI,EAAE,GAAG,EAAC,KAAM,IAAMK,KAAK,CAACL,IAAI,EAAE,IAAI,EAAG;QACjEO,UAAUV,KAAK,CAACQ,KAAK,CAACL,IAAI,EAAE,GAAG,GAAG;IACpC;IAEA,IAAIM,MAAM,MAAM,GAAG;QACjBC,SAASA,OAAOC,SAAS,CAAC,GAAGD,OAAON,MAAM,GAAG,KAAK;IACpD,OAAO,IAAIK,MAAM,MAAM,GAAG;QACxBC,SAASA,OAAOC,SAAS,CAAC,GAAGD,OAAON,MAAM,GAAG,KAAK;IACpD;IAEA,OAAOM;AACT;AAEA,OAAO,SAASE,0BAA0BF,MAAc;IACtD,MAAMD,MAAMC,OAAON,MAAM;IACzB,IAAIS,eAAeH,OAAON,MAAM,GAAG;IACnC,IAAID;IACJ,IAAIW,IAAI;IACR,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IAEJ,IAAIR,MAAM,CAACA,OAAON,MAAM,GAAG,EAAE,KAAK,KAAK;QACrCS;QACA,IAAIH,MAAM,CAACA,OAAON,MAAM,GAAG,EAAE,KAAK,KAAK;YACrCS;QACF;IACF;IAEA,MAAMN,cAAc,IAAIY,YAAYN;IACpC,MAAML,QAAQ,IAAIN,WAAWK;IAE7B,IAAKJ,IAAI,GAAGA,IAAIM,KAAKN,KAAK,EAAG;QAC3BY,WAAWd,MAAM,CAACS,OAAOL,UAAU,CAACF,GAAG;QACvCa,WAAWf,MAAM,CAACS,OAAOL,UAAU,CAACF,IAAI,GAAG;QAC3Cc,WAAWhB,MAAM,CAACS,OAAOL,UAAU,CAACF,IAAI,GAAG;QAC3Ce,WAAWjB,MAAM,CAACS,OAAOL,UAAU,CAACF,IAAI,GAAG;QAE3CK,KAAK,CAACM,IAAI,GAAG,AAACC,YAAY,IAAMC,YAAY;QAC5CR,KAAK,CAACM,IAAI,GAAG,AAAEE,CAAAA,WAAW,EAAC,KAAM,IAAMC,YAAY;QACnDT,KAAK,CAACM,IAAI,GAAG,AAAEG,CAAAA,WAAW,CAAA,KAAM,IAAMC,WAAW;IACnD;IAEA,OAAOX;AACT"}
|
package/lib/io/isBuffer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/io/isBuffer.ts"],"sourcesContent":["/**\n * check {@link obj} is Buffer\n *\n * @see {@link https://github.com/feross/is-buffer feross/is-buffer}\n */\nexport function isBuffer(obj: any): obj is Buffer {\n return obj?.constructor?.isBuffer?.(obj);\n}\n"],"names":["isBuffer","obj","constructor"],"mappings":"AAAA;;;;CAIC,GACD,OAAO,SAASA,SAASC,GAAQ;IAC/B,OAAOA,KAAKC,aAAaF,WAAWC;AACtC"}
|
|
1
|
+
{"version":3,"sources":["../../src/io/isBuffer.ts"],"sourcesContent":["/**\n * check {@link obj} is Buffer\n *\n * @see {@link https://github.com/feross/is-buffer feross/is-buffer}\n */\nexport function isBuffer(obj: any): obj is Buffer {\n return obj?.constructor?.isBuffer?.(obj);\n}\n"],"names":["isBuffer","obj","constructor"],"rangeMappings":";;;;;;","mappings":"AAAA;;;;CAIC,GACD,OAAO,SAASA,SAASC,GAAQ;IAC/B,OAAOA,KAAKC,aAAaF,WAAWC;AACtC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/io/isTransferable.ts"],"sourcesContent":["import { getGlobalThis } from '../runtime/getGlobalThis';\n\nconst globalThis = getGlobalThis();\n\n/**\n * transferable object pass between workers, can work with structuredClone\n *\n * - Chrome 87, FF 103, Safari X, NodeJS X\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Glossary/Transferable_objects | Transferable objects}\n */\nexport function isTransferable(v: any): v is TransferableObject {\n _ctors ||= ctors();\n return _ctors.some((ctor) => v instanceof ctor);\n}\n\nlet _ctors: any[];\n\nfunction ctors() {\n const o: any = globalThis.window || globalThis || global;\n return [\n o.ArrayBuffer,\n o.MessagePort,\n o.ReadableStream,\n o.WritableStream,\n o.TransformStream,\n o.AudioData,\n o.ImageBitmap,\n o.VideoFrame,\n o.OffscreenCanvas,\n o.RTCDataChannel,\n ].filter(Boolean);\n}\n\nexport type TransferableObject =\n | Transferable\n | ArrayBuffer\n | MessagePort\n | ReadableStream\n | WritableStream\n | TransformStream\n | AudioData\n | ImageBitmap\n | VideoFrame\n | OffscreenCanvas\n | RTCDataChannel;\n\ndeclare global {\n interface OffscreenCanvas {}\n\n interface VideoFrame {}\n\n interface AudioData {}\n}\n"],"names":["getGlobalThis","globalThis","isTransferable","v","_ctors","ctors","some","ctor","o","window","global","ArrayBuffer","MessagePort","ReadableStream","WritableStream","TransformStream","AudioData","ImageBitmap","VideoFrame","OffscreenCanvas","RTCDataChannel","filter","Boolean"],"mappings":"AAAA,SAASA,aAAa,QAAQ,2BAA2B;AAEzD,MAAMC,aAAaD;AAEnB;;;;;;CAMC,GACD,OAAO,SAASE,eAAeC,CAAM;IACnCC,WAAWC;IACX,OAAOD,OAAOE,IAAI,CAAC,CAACC,OAASJ,aAAaI;AAC5C;AAEA,IAAIH;AAEJ,SAASC;IACP,MAAMG,IAASP,WAAWQ,MAAM,IAAIR,cAAcS;IAClD,OAAO;QACLF,EAAEG,WAAW;QACbH,EAAEI,WAAW;QACbJ,EAAEK,cAAc;QAChBL,EAAEM,cAAc;QAChBN,EAAEO,eAAe;QACjBP,EAAEQ,SAAS;QACXR,EAAES,WAAW;QACbT,EAAEU,UAAU;QACZV,EAAEW,eAAe;QACjBX,EAAEY,cAAc;KACjB,CAACC,MAAM,CAACC;AACX"}
|
|
1
|
+
{"version":3,"sources":["../../src/io/isTransferable.ts"],"sourcesContent":["import { getGlobalThis } from '../runtime/getGlobalThis';\n\nconst globalThis = getGlobalThis();\n\n/**\n * transferable object pass between workers, can work with structuredClone\n *\n * - Chrome 87, FF 103, Safari X, NodeJS X\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Glossary/Transferable_objects | Transferable objects}\n */\nexport function isTransferable(v: any): v is TransferableObject {\n _ctors ||= ctors();\n return _ctors.some((ctor) => v instanceof ctor);\n}\n\nlet _ctors: any[];\n\nfunction ctors() {\n const o: any = globalThis.window || globalThis || global;\n return [\n o.ArrayBuffer,\n o.MessagePort,\n o.ReadableStream,\n o.WritableStream,\n o.TransformStream,\n o.AudioData,\n o.ImageBitmap,\n o.VideoFrame,\n o.OffscreenCanvas,\n o.RTCDataChannel,\n ].filter(Boolean);\n}\n\nexport type TransferableObject =\n | Transferable\n | ArrayBuffer\n | MessagePort\n | ReadableStream\n | WritableStream\n | TransformStream\n | AudioData\n | ImageBitmap\n | VideoFrame\n | OffscreenCanvas\n | RTCDataChannel;\n\ndeclare global {\n interface OffscreenCanvas {}\n\n interface VideoFrame {}\n\n interface AudioData {}\n}\n"],"names":["getGlobalThis","globalThis","isTransferable","v","_ctors","ctors","some","ctor","o","window","global","ArrayBuffer","MessagePort","ReadableStream","WritableStream","TransformStream","AudioData","ImageBitmap","VideoFrame","OffscreenCanvas","RTCDataChannel","filter","Boolean"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,aAAa,QAAQ,2BAA2B;AAEzD,MAAMC,aAAaD;AAEnB;;;;;;CAMC,GACD,OAAO,SAASE,eAAeC,CAAM;IACnCC,WAAWC;IACX,OAAOD,OAAOE,IAAI,CAAC,CAACC,OAASJ,aAAaI;AAC5C;AAEA,IAAIH;AAEJ,SAASC;IACP,MAAMG,IAASP,WAAWQ,MAAM,IAAIR,cAAcS;IAClD,OAAO;QACLF,EAAEG,WAAW;QACbH,EAAEI,WAAW;QACbJ,EAAEK,cAAc;QAChBL,EAAEM,cAAc;QAChBN,EAAEO,eAAe;QACjBP,EAAEQ,SAAS;QACXR,EAAES,WAAW;QACbT,EAAEU,UAAU;QACZV,EAAEW,eAAe;QACjBX,EAAEY,cAAc;KACjB,CAACC,MAAM,CAACC;AACX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/io/parseDataUri.ts"],"sourcesContent":["import { ArrayBuffers } from './ArrayBuffers';\n\nexport interface ParsedDataUri {\n type: string;\n params: Record<string, string | boolean>;\n content: string;\n base64: boolean;\n\n getData(enc: 'utf-8' | 'base64'): Promise<string>;\n\n getData(): Promise<ArrayBuffer>;\n}\n\nexport function parseDataUri(data: string): undefined | ParsedDataUri {\n if (!data || !data.startsWith('data:')) {\n return;\n }\n // https://en.wikipedia.org/wiki/Data_URI_scheme\n // data:content/type;base64,\n // data:content/type;a=b,content\n const [header, body] = data.split(',');\n const [type, ...paramsStr] = header.slice('data:'.length).split(';');\n const content = body;\n const params: Record<string, string | boolean> = Object.fromEntries(\n paramsStr.map((s) => {\n const [k, v] = s.trim().split('=');\n return [k, v ?? true];\n }),\n );\n // params charset=utf-8\n // params base64\n // params a=b\n let base64 = Boolean(params['base64']);\n return {\n type,\n params,\n content,\n base64,\n getData: async (enc?: 'utf-8' | 'base64') => {\n if (!enc) {\n return await fetch(data).then((v) => v.arrayBuffer());\n }\n //\n let buf: BufferSource;\n if (base64) {\n if (enc === 'base64') {\n return content;\n }\n buf = await fetch(data).then((v) => v.arrayBuffer());\n } else {\n let raw = decodeURIComponent(content);\n if (enc === 'utf-8') {\n return raw;\n }\n buf = ArrayBuffers.from(raw, 'utf-8');\n }\n if (enc === 'utf-8') {\n return new TextDecoder(enc).decode(buf);\n }\n if (enc === 'base64') {\n return ArrayBuffers.toString(buf, 'base64');\n }\n return buf;\n },\n } as ParsedDataUri;\n}\n"],"names":["ArrayBuffers","parseDataUri","data","startsWith","header","body","split","type","paramsStr","slice","length","content","params","Object","fromEntries","map","s","k","v","trim","base64","Boolean","getData","enc","fetch","then","arrayBuffer","buf","raw","decodeURIComponent","from","TextDecoder","decode","toString"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAa9C,OAAO,SAASC,aAAaC,IAAY;IACvC,IAAI,CAACA,QAAQ,CAACA,KAAKC,UAAU,CAAC,UAAU;QACtC;IACF;IACA,gDAAgD;IAChD,4BAA4B;IAC5B,gCAAgC;IAChC,MAAM,CAACC,QAAQC,KAAK,GAAGH,KAAKI,KAAK,CAAC;IAClC,MAAM,CAACC,MAAM,GAAGC,UAAU,GAAGJ,OAAOK,KAAK,CAAC,QAAQC,MAAM,EAAEJ,KAAK,CAAC;IAChE,MAAMK,UAAUN;IAChB,MAAMO,SAA2CC,OAAOC,WAAW,CACjEN,UAAUO,GAAG,CAAC,CAACC;QACb,MAAM,CAACC,GAAGC,EAAE,GAAGF,EAAEG,IAAI,GAAGb,KAAK,CAAC;QAC9B,OAAO;YAACW;YAAGC,KAAK;SAAK;IACvB;IAEF,uBAAuB;IACvB,gBAAgB;IAChB,aAAa;IACb,IAAIE,SAASC,QAAQT,MAAM,CAAC,SAAS;IACrC,OAAO;QACLL;QACAK;QACAD;QACAS;QACAE,SAAS,OAAOC;YACd,IAAI,CAACA,KAAK;gBACR,OAAO,MAAMC,MAAMtB,MAAMuB,IAAI,CAAC,CAACP,IAAMA,EAAEQ,WAAW;YACpD;YACA,EAAE;YACF,IAAIC;YACJ,IAAIP,QAAQ;gBACV,IAAIG,QAAQ,UAAU;oBACpB,OAAOZ;gBACT;gBACAgB,MAAM,MAAMH,MAAMtB,MAAMuB,IAAI,CAAC,CAACP,IAAMA,EAAEQ,WAAW;YACnD,OAAO;gBACL,IAAIE,MAAMC,mBAAmBlB;gBAC7B,IAAIY,QAAQ,SAAS;oBACnB,OAAOK;gBACT;gBACAD,MAAM3B,aAAa8B,IAAI,CAACF,KAAK;YAC/B;YACA,IAAIL,QAAQ,SAAS;gBACnB,OAAO,IAAIQ,YAAYR,KAAKS,MAAM,CAACL;YACrC;YACA,IAAIJ,QAAQ,UAAU;gBACpB,OAAOvB,aAAaiC,QAAQ,CAACN,KAAK;YACpC;YACA,OAAOA;QACT;IACF;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../src/io/parseDataUri.ts"],"sourcesContent":["import { ArrayBuffers } from './ArrayBuffers';\n\nexport interface ParsedDataUri {\n type: string;\n params: Record<string, string | boolean>;\n content: string;\n base64: boolean;\n\n getData(enc: 'utf-8' | 'base64'): Promise<string>;\n\n getData(): Promise<ArrayBuffer>;\n}\n\nexport function parseDataUri(data: string): undefined | ParsedDataUri {\n if (!data || !data.startsWith('data:')) {\n return;\n }\n // https://en.wikipedia.org/wiki/Data_URI_scheme\n // data:content/type;base64,\n // data:content/type;a=b,content\n const [header, body] = data.split(',');\n const [type, ...paramsStr] = header.slice('data:'.length).split(';');\n const content = body;\n const params: Record<string, string | boolean> = Object.fromEntries(\n paramsStr.map((s) => {\n const [k, v] = s.trim().split('=');\n return [k, v ?? true];\n }),\n );\n // params charset=utf-8\n // params base64\n // params a=b\n let base64 = Boolean(params['base64']);\n return {\n type,\n params,\n content,\n base64,\n getData: async (enc?: 'utf-8' | 'base64') => {\n if (!enc) {\n return await fetch(data).then((v) => v.arrayBuffer());\n }\n //\n let buf: BufferSource;\n if (base64) {\n if (enc === 'base64') {\n return content;\n }\n buf = await fetch(data).then((v) => v.arrayBuffer());\n } else {\n let raw = decodeURIComponent(content);\n if (enc === 'utf-8') {\n return raw;\n }\n buf = ArrayBuffers.from(raw, 'utf-8');\n }\n if (enc === 'utf-8') {\n return new TextDecoder(enc).decode(buf);\n }\n if (enc === 'base64') {\n return ArrayBuffers.toString(buf, 'base64');\n }\n return buf;\n },\n } as ParsedDataUri;\n}\n"],"names":["ArrayBuffers","parseDataUri","data","startsWith","header","body","split","type","paramsStr","slice","length","content","params","Object","fromEntries","map","s","k","v","trim","base64","Boolean","getData","enc","fetch","then","arrayBuffer","buf","raw","decodeURIComponent","from","TextDecoder","decode","toString"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAa9C,OAAO,SAASC,aAAaC,IAAY;IACvC,IAAI,CAACA,QAAQ,CAACA,KAAKC,UAAU,CAAC,UAAU;QACtC;IACF;IACA,gDAAgD;IAChD,4BAA4B;IAC5B,gCAAgC;IAChC,MAAM,CAACC,QAAQC,KAAK,GAAGH,KAAKI,KAAK,CAAC;IAClC,MAAM,CAACC,MAAM,GAAGC,UAAU,GAAGJ,OAAOK,KAAK,CAAC,QAAQC,MAAM,EAAEJ,KAAK,CAAC;IAChE,MAAMK,UAAUN;IAChB,MAAMO,SAA2CC,OAAOC,WAAW,CACjEN,UAAUO,GAAG,CAAC,CAACC;QACb,MAAM,CAACC,GAAGC,EAAE,GAAGF,EAAEG,IAAI,GAAGb,KAAK,CAAC;QAC9B,OAAO;YAACW;YAAGC,KAAK;SAAK;IACvB;IAEF,uBAAuB;IACvB,gBAAgB;IAChB,aAAa;IACb,IAAIE,SAASC,QAAQT,MAAM,CAAC,SAAS;IACrC,OAAO;QACLL;QACAK;QACAD;QACAS;QACAE,SAAS,OAAOC;YACd,IAAI,CAACA,KAAK;gBACR,OAAO,MAAMC,MAAMtB,MAAMuB,IAAI,CAAC,CAACP,IAAMA,EAAEQ,WAAW;YACpD;YACA,EAAE;YACF,IAAIC;YACJ,IAAIP,QAAQ;gBACV,IAAIG,QAAQ,UAAU;oBACpB,OAAOZ;gBACT;gBACAgB,MAAM,MAAMH,MAAMtB,MAAMuB,IAAI,CAAC,CAACP,IAAMA,EAAEQ,WAAW;YACnD,OAAO;gBACL,IAAIE,MAAMC,mBAAmBlB;gBAC7B,IAAIY,QAAQ,SAAS;oBACnB,OAAOK;gBACT;gBACAD,MAAM3B,aAAa8B,IAAI,CAACF,KAAK;YAC/B;YACA,IAAIL,QAAQ,SAAS;gBACnB,OAAO,IAAIQ,YAAYR,KAAKS,MAAM,CAACL;YACrC;YACA,IAAIJ,QAAQ,UAAU;gBACpB,OAAOvB,aAAaiC,QAAQ,CAACN,KAAK;YACpC;YACA,OAAOA;QACT;IACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/langs/MaybeFunction.ts"],"sourcesContent":["export type MaybeFunction<T, P extends any[] = any[]> = T | ((...args: P) => T);\n\nexport function maybeFunction<T, P extends any[] = any[]>(v: MaybeFunction<T, P>, ...args: P): T {\n // https://github.com/microsoft/TypeScript/issues/37663#issuecomment-759728342\n if (v instanceof Function) {\n return v(...args);\n }\n return v;\n}\n"],"names":["maybeFunction","v","args","Function"],"mappings":"AAEA,OAAO,SAASA,cAA0CC,CAAsB,EAAE,GAAGC,IAAO;IAC1F,8EAA8E;IAC9E,IAAID,aAAaE,UAAU;QACzB,OAAOF,KAAKC;IACd;IACA,OAAOD;AACT"}
|
|
1
|
+
{"version":3,"sources":["../../src/langs/MaybeFunction.ts"],"sourcesContent":["export type MaybeFunction<T, P extends any[] = any[]> = T | ((...args: P) => T);\n\nexport function maybeFunction<T, P extends any[] = any[]>(v: MaybeFunction<T, P>, ...args: P): T {\n // https://github.com/microsoft/TypeScript/issues/37663#issuecomment-759728342\n if (v instanceof Function) {\n return v(...args);\n }\n return v;\n}\n"],"names":["maybeFunction","v","args","Function"],"rangeMappings":";;;;;;","mappings":"AAEA,OAAO,SAASA,cAA0CC,CAAsB,EAAE,GAAGC,IAAO;IAC1F,8EAA8E;IAC9E,IAAID,aAAaE,UAAU;QACzB,OAAOF,KAAKC;IACd;IACA,OAAOD;AACT"}
|
package/lib/langs/classOf.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/langs/classOf.ts"],"sourcesContent":["export function classOf(o: any) {\n return Object.prototype.toString.call(o).slice(8, -1);\n}\n"],"names":["classOf","o","Object","prototype","toString","call","slice"],"mappings":"AAAA,OAAO,SAASA,QAAQC,CAAM;IAC5B,OAAOC,OAAOC,SAAS,CAACC,QAAQ,CAACC,IAAI,CAACJ,GAAGK,KAAK,CAAC,GAAG,CAAC;AACrD"}
|
|
1
|
+
{"version":3,"sources":["../../src/langs/classOf.ts"],"sourcesContent":["export function classOf(o: any) {\n return Object.prototype.toString.call(o).slice(8, -1);\n}\n"],"names":["classOf","o","Object","prototype","toString","call","slice"],"rangeMappings":";;","mappings":"AAAA,OAAO,SAASA,QAAQC,CAAM;IAC5B,OAAOC,OAAOC,SAAS,CAACC,QAAQ,CAACC,IAAI,CAACJ,GAAGK,KAAK,CAAC,GAAG,CAAC;AACrD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/langs/deepEqual.ts"],"sourcesContent":["const has = Object.prototype.hasOwnProperty;\nconst hasElementType = typeof Element !== 'undefined';\n\nfunction find(iter: any, tar: any, key?: any) {\n for (key of iter.keys()) {\n if (deepEqual(key, tar)) return key;\n }\n}\n\n/**\n * deep equal - support react, dom, Date, RegExp, Array, ArrayBuffer, Set, Map, Object\n * @see {@link https://github.com/lukeed/dequal/blob/master/src/lite.js dequal/src/lite.js}\n * @see {@link https://github.com/FormidableLabs/react-fast-compare/blob/master/index.js react-fast-compare/index.js}\n */\nexport function deepEqual(foo: any, bar: any) {\n let ctor, len, tmp;\n if (foo === bar) return true;\n\n if (foo && bar && (ctor = foo.constructor) === bar.constructor) {\n if (ctor === Date) return foo.getTime() === bar.getTime();\n if (ctor === RegExp) return foo.toString() === bar.toString();\n\n if (ctor === Array) {\n if ((len = foo.length) === bar.length) {\n while (len-- && deepEqual(foo[len], bar[len]));\n }\n return len === -1;\n }\n\n if (ctor === Set) {\n if (foo.size !== bar.size) {\n return false;\n }\n for (len of foo) {\n tmp = len;\n if (tmp && typeof tmp === 'object') {\n tmp = find(bar, tmp);\n if (!tmp) return false;\n }\n if (!bar.has(tmp)) return false;\n }\n return true;\n }\n\n if (ctor === Map) {\n if (foo.size !== bar.size) {\n return false;\n }\n for (len of foo) {\n tmp = len[0];\n if (tmp && typeof tmp === 'object') {\n tmp = find(bar, tmp);\n if (!tmp) return false;\n }\n if (!deepEqual(len[1], bar.get(tmp))) {\n return false;\n }\n }\n return true;\n }\n\n if (ctor === ArrayBuffer) {\n foo = new Uint8Array(foo);\n bar = new Uint8Array(bar);\n } else if (ctor === DataView) {\n if ((len = foo.byteLength) === bar.byteLength) {\n while (len-- && foo.getInt8(len) === bar.getInt8(len));\n }\n return len === -1;\n }\n\n if (ArrayBuffer.isView(foo)) {\n if ((len = foo.byteLength) === bar.byteLength) {\n while (len-- && (foo as any)[len] === bar[len]);\n }\n return len === -1;\n }\n\n // react & dom\n if (hasElementType && foo instanceof Element) return false;\n\n if (!ctor || typeof foo === 'object') {\n len = 0;\n for (ctor in foo) {\n if ((ctor === '_owner' || ctor === '__v' || ctor === '__o') && foo.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n if (!(ctor in bar) || !deepEqual(foo[ctor], bar[ctor])) return false;\n }\n return Object.keys(bar).length === len;\n }\n }\n\n // eslint-disable-next-line no-self-compare\n return foo !== foo && bar !== bar;\n}\n"],"names":["has","Object","prototype","hasOwnProperty","hasElementType","Element","find","iter","tar","key","keys","deepEqual","foo","bar","ctor","len","tmp","constructor","Date","getTime","RegExp","toString","Array","length","Set","size","Map","get","ArrayBuffer","Uint8Array","DataView","byteLength","getInt8","isView","$$typeof","call"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/langs/deepEqual.ts"],"sourcesContent":["const has = Object.prototype.hasOwnProperty;\nconst hasElementType = typeof Element !== 'undefined';\n\nfunction find(iter: any, tar: any, key?: any) {\n for (key of iter.keys()) {\n if (deepEqual(key, tar)) return key;\n }\n}\n\n/**\n * deep equal - support react, dom, Date, RegExp, Array, ArrayBuffer, Set, Map, Object\n * @see {@link https://github.com/lukeed/dequal/blob/master/src/lite.js dequal/src/lite.js}\n * @see {@link https://github.com/FormidableLabs/react-fast-compare/blob/master/index.js react-fast-compare/index.js}\n */\nexport function deepEqual(foo: any, bar: any) {\n let ctor, len, tmp;\n if (foo === bar) return true;\n\n if (foo && bar && (ctor = foo.constructor) === bar.constructor) {\n if (ctor === Date) return foo.getTime() === bar.getTime();\n if (ctor === RegExp) return foo.toString() === bar.toString();\n\n if (ctor === Array) {\n if ((len = foo.length) === bar.length) {\n while (len-- && deepEqual(foo[len], bar[len]));\n }\n return len === -1;\n }\n\n if (ctor === Set) {\n if (foo.size !== bar.size) {\n return false;\n }\n for (len of foo) {\n tmp = len;\n if (tmp && typeof tmp === 'object') {\n tmp = find(bar, tmp);\n if (!tmp) return false;\n }\n if (!bar.has(tmp)) return false;\n }\n return true;\n }\n\n if (ctor === Map) {\n if (foo.size !== bar.size) {\n return false;\n }\n for (len of foo) {\n tmp = len[0];\n if (tmp && typeof tmp === 'object') {\n tmp = find(bar, tmp);\n if (!tmp) return false;\n }\n if (!deepEqual(len[1], bar.get(tmp))) {\n return false;\n }\n }\n return true;\n }\n\n if (ctor === ArrayBuffer) {\n foo = new Uint8Array(foo);\n bar = new Uint8Array(bar);\n } else if (ctor === DataView) {\n if ((len = foo.byteLength) === bar.byteLength) {\n while (len-- && foo.getInt8(len) === bar.getInt8(len));\n }\n return len === -1;\n }\n\n if (ArrayBuffer.isView(foo)) {\n if ((len = foo.byteLength) === bar.byteLength) {\n while (len-- && (foo as any)[len] === bar[len]);\n }\n return len === -1;\n }\n\n // react & dom\n if (hasElementType && foo instanceof Element) return false;\n\n if (!ctor || typeof foo === 'object') {\n len = 0;\n for (ctor in foo) {\n if ((ctor === '_owner' || ctor === '__v' || ctor === '__o') && foo.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n if (!(ctor in bar) || !deepEqual(foo[ctor], bar[ctor])) return false;\n }\n return Object.keys(bar).length === len;\n }\n }\n\n // eslint-disable-next-line no-self-compare\n return foo !== foo && bar !== bar;\n}\n"],"names":["has","Object","prototype","hasOwnProperty","hasElementType","Element","find","iter","tar","key","keys","deepEqual","foo","bar","ctor","len","tmp","constructor","Date","getTime","RegExp","toString","Array","length","Set","size","Map","get","ArrayBuffer","Uint8Array","DataView","byteLength","getInt8","isView","$$typeof","call"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/langs/deepFreeze.ts"],"sourcesContent":["/**\n * Freezes the given object and all its nested objects recursively.\n *\n * @param {T} obj - The object to freeze.\n * @returns {T} - The frozen object.\n */\nexport function deepFreeze<T>(obj: T): T {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n const props = Object.getOwnPropertyNames(obj);\n for (const prop of props) {\n const value = (obj as any)[prop];\n if (value && typeof value === 'object') {\n deepFreeze(value);\n }\n }\n return Object.freeze(obj);\n}\n"],"names":["deepFreeze","obj","props","Object","getOwnPropertyNames","prop","value","freeze"],"mappings":"AAAA;;;;;CAKC,GACD,OAAO,SAASA,WAAcC,GAAM;IAClC,IAAIA,QAAQ,QAAQ,OAAOA,QAAQ,UAAU;QAC3C,OAAOA;IACT;IACA,MAAMC,QAAQC,OAAOC,mBAAmB,CAACH;IACzC,KAAK,MAAMI,QAAQH,MAAO;QACxB,MAAMI,QAAQ,AAACL,GAAW,CAACI,KAAK;QAChC,IAAIC,SAAS,OAAOA,UAAU,UAAU;YACtCN,WAAWM;QACb;IACF;IACA,OAAOH,OAAOI,MAAM,CAACN;AACvB"}
|
|
1
|
+
{"version":3,"sources":["../../src/langs/deepFreeze.ts"],"sourcesContent":["/**\n * Freezes the given object and all its nested objects recursively.\n *\n * @param {T} obj - The object to freeze.\n * @returns {T} - The frozen object.\n */\nexport function deepFreeze<T>(obj: T): T {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n const props = Object.getOwnPropertyNames(obj);\n for (const prop of props) {\n const value = (obj as any)[prop];\n if (value && typeof value === 'object') {\n deepFreeze(value);\n }\n }\n return Object.freeze(obj);\n}\n"],"names":["deepFreeze","obj","props","Object","getOwnPropertyNames","prop","value","freeze"],"rangeMappings":";;;;;;;;;;;;;;;;;","mappings":"AAAA;;;;;CAKC,GACD,OAAO,SAASA,WAAcC,GAAM;IAClC,IAAIA,QAAQ,QAAQ,OAAOA,QAAQ,UAAU;QAC3C,OAAOA;IACT;IACA,MAAMC,QAAQC,OAAOC,mBAAmB,CAACH;IACzC,KAAK,MAAMI,QAAQH,MAAO;QACxB,MAAMI,QAAQ,AAACL,GAAW,CAACI,KAAK;QAChC,IAAIC,SAAS,OAAOA,UAAU,UAAU;YACtCN,WAAWM;QACb;IACF;IACA,OAAOH,OAAOI,MAAM,CAACN;AACvB"}
|
package/lib/langs/isClass.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/langs/isClass.ts"],"sourcesContent":["export function isClass(func: any) {\n return typeof func === 'function' && /^class\\s/.test(Function.prototype.toString.call(func));\n}\n"],"names":["isClass","func","test","Function","prototype","toString","call"],"mappings":"AAAA,OAAO,SAASA,QAAQC,IAAS;IAC/B,OAAO,OAAOA,SAAS,cAAc,WAAWC,IAAI,CAACC,SAASC,SAAS,CAACC,QAAQ,CAACC,IAAI,CAACL;AACxF"}
|
|
1
|
+
{"version":3,"sources":["../../src/langs/isClass.ts"],"sourcesContent":["export function isClass(func: any) {\n return typeof func === 'function' && /^class\\s/.test(Function.prototype.toString.call(func));\n}\n"],"names":["isClass","func","test","Function","prototype","toString","call"],"rangeMappings":";;","mappings":"AAAA,OAAO,SAASA,QAAQC,IAAS;IAC/B,OAAO,OAAOA,SAAS,cAAc,WAAWC,IAAI,CAACC,SAASC,SAAS,CAACC,QAAQ,CAACC,IAAI,CAACL;AACxF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/langs/isDefined.ts"],"sourcesContent":["export function isDefined<T = any>(v: T): v is NonNullable<T> {\n return v !== null && v !== undefined;\n}\n"],"names":["isDefined","v","undefined"],"mappings":"AAAA,OAAO,SAASA,UAAmBC,CAAI;IACrC,OAAOA,MAAM,QAAQA,MAAMC;AAC7B"}
|
|
1
|
+
{"version":3,"sources":["../../src/langs/isDefined.ts"],"sourcesContent":["export function isDefined<T = any>(v: T): v is NonNullable<T> {\n return v !== null && v !== undefined;\n}\n"],"names":["isDefined","v","undefined"],"rangeMappings":";;","mappings":"AAAA,OAAO,SAASA,UAAmBC,CAAI;IACrC,OAAOA,MAAM,QAAQA,MAAMC;AAC7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/langs/isEmptyObject.ts"],"sourcesContent":["import { isPlainObject } from './isPlainObject';\n\nexport function isEmptyObject(o: any) {\n return isPlainObject(o) && Object.keys(o).length === 0;\n}\n"],"names":["isPlainObject","isEmptyObject","o","Object","keys","length"],"mappings":"AAAA,SAASA,aAAa,QAAQ,kBAAkB;AAEhD,OAAO,SAASC,cAAcC,CAAM;IAClC,OAAOF,cAAcE,MAAMC,OAAOC,IAAI,CAACF,GAAGG,MAAM,KAAK;AACvD"}
|
|
1
|
+
{"version":3,"sources":["../../src/langs/isEmptyObject.ts"],"sourcesContent":["import { isPlainObject } from './isPlainObject';\n\nexport function isEmptyObject(o: any) {\n return isPlainObject(o) && Object.keys(o).length === 0;\n}\n"],"names":["isPlainObject","isEmptyObject","o","Object","keys","length"],"rangeMappings":";;;","mappings":"AAAA,SAASA,aAAa,QAAQ,kBAAkB;AAEhD,OAAO,SAASC,cAAcC,CAAM;IAClC,OAAOF,cAAcE,MAAMC,OAAOC,IAAI,CAACF,GAAGG,MAAM,KAAK;AACvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/langs/isFunction.ts"],"sourcesContent":["export function isFunction(value: any): value is Function {\n return typeof value === 'function';\n}\n"],"names":["isFunction","value"],"mappings":"AAAA,OAAO,SAASA,WAAWC,KAAU;IACnC,OAAO,OAAOA,UAAU;AAC1B"}
|
|
1
|
+
{"version":3,"sources":["../../src/langs/isFunction.ts"],"sourcesContent":["export function isFunction(value: any): value is Function {\n return typeof value === 'function';\n}\n"],"names":["isFunction","value"],"rangeMappings":";;","mappings":"AAAA,OAAO,SAASA,WAAWC,KAAU;IACnC,OAAO,OAAOA,UAAU;AAC1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/langs/isPlainObject.ts"],"sourcesContent":["import { classOf } from './classOf';\n\n// see: https://github.com/mesqueeb/is-what/blob/88d6e4ca92fb2baab6003c54e02eedf4e729e5ab/src/index.ts\n\nexport function isPlainObject(value: any): value is Record<string, any> {\n if (classOf(value) !== 'Object') {\n return false;\n }\n return value.constructor === Object && Object.getPrototypeOf(value) === Object.prototype;\n}\n"],"names":["classOf","isPlainObject","value","constructor","Object","getPrototypeOf","prototype"],"mappings":"AAAA,SAASA,OAAO,QAAQ,YAAY;AAEpC,sGAAsG;AAEtG,OAAO,SAASC,cAAcC,KAAU;IACtC,IAAIF,QAAQE,WAAW,UAAU;QAC/B,OAAO;IACT;IACA,OAAOA,MAAMC,WAAW,KAAKC,UAAUA,OAAOC,cAAc,CAACH,WAAWE,OAAOE,SAAS;AAC1F"}
|
|
1
|
+
{"version":3,"sources":["../../src/langs/isPlainObject.ts"],"sourcesContent":["import { classOf } from './classOf';\n\n// see: https://github.com/mesqueeb/is-what/blob/88d6e4ca92fb2baab6003c54e02eedf4e729e5ab/src/index.ts\n\nexport function isPlainObject(value: any): value is Record<string, any> {\n if (classOf(value) !== 'Object') {\n return false;\n }\n return value.constructor === Object && Object.getPrototypeOf(value) === Object.prototype;\n}\n"],"names":["classOf","isPlainObject","value","constructor","Object","getPrototypeOf","prototype"],"rangeMappings":";;;;;;;","mappings":"AAAA,SAASA,OAAO,QAAQ,YAAY;AAEpC,sGAAsG;AAEtG,OAAO,SAASC,cAAcC,KAAU;IACtC,IAAIF,QAAQE,WAAW,UAAU;QAC/B,OAAO;IACT;IACA,OAAOA,MAAMC,WAAW,KAAKC,UAAUA,OAAOC,cAAc,CAACH,WAAWE,OAAOE,SAAS;AAC1F"}
|
package/lib/langs/memoize.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/langs/memoize.ts"],"sourcesContent":["// https://github.com/angus-c/just/blob/master/packages/function-memoize/index.mjs\ntype func = (...args: any) => any;\n\nexport function memoize<T extends func>(\n callback: T,\n {\n resolver = (...args: Parameters<T>) => JSON.stringify(args),\n }: { resolver?: (...args: Parameters<T>) => string } = {},\n): T {\n if (typeof callback !== 'function') {\n throw new Error('`callback` should be a function');\n }\n\n if (resolver !== undefined && typeof resolver !== 'function') {\n throw new Error('`resolver` should be a function');\n }\n\n const cache: Record<string, any> = {};\n\n const memoized = function (this: any) {\n const args = Array.prototype.slice.call(arguments); // to simplify JSON.stringify\n const key = resolver.apply(this, args as Parameters<T>);\n\n if (!(key in cache)) {\n cache[key] = callback.apply(this, args);\n }\n\n return cache[key];\n };\n memoized.cache = cache;\n return memoized as func as T;\n}\n"],"names":["memoize","callback","resolver","args","JSON","stringify","Error","undefined","cache","memoized","Array","prototype","slice","call","arguments","key","apply"],"mappings":"AAAA,kFAAkF;AAGlF,OAAO,SAASA,QACdC,QAAW,EACX,EACEC,WAAW,CAAC,GAAGC,OAAwBC,KAAKC,SAAS,CAACF,KAAK,EACT,GAAG,CAAC,CAAC;IAEzD,IAAI,OAAOF,aAAa,YAAY;QAClC,MAAM,IAAIK,MAAM;IAClB;IAEA,IAAIJ,aAAaK,aAAa,OAAOL,aAAa,YAAY;QAC5D,MAAM,IAAII,MAAM;IAClB;IAEA,MAAME,QAA6B,CAAC;IAEpC,MAAMC,WAAW;QACf,MAAMN,OAAOO,MAAMC,SAAS,CAACC,KAAK,CAACC,IAAI,CAACC,YAAY,6BAA6B;QACjF,MAAMC,MAAMb,SAASc,KAAK,CAAC,IAAI,EAAEb;QAEjC,IAAI,CAAEY,CAAAA,OAAOP,KAAI,GAAI;YACnBA,KAAK,CAACO,IAAI,GAAGd,SAASe,KAAK,CAAC,IAAI,EAAEb;QACpC;QAEA,OAAOK,KAAK,CAACO,IAAI;IACnB;IACAN,SAASD,KAAK,GAAGA;IACjB,OAAOC;AACT"}
|
|
1
|
+
{"version":3,"sources":["../../src/langs/memoize.ts"],"sourcesContent":["// https://github.com/angus-c/just/blob/master/packages/function-memoize/index.mjs\ntype func = (...args: any) => any;\n\nexport function memoize<T extends func>(\n callback: T,\n {\n resolver = (...args: Parameters<T>) => JSON.stringify(args),\n }: { resolver?: (...args: Parameters<T>) => string } = {},\n): T {\n if (typeof callback !== 'function') {\n throw new Error('`callback` should be a function');\n }\n\n if (resolver !== undefined && typeof resolver !== 'function') {\n throw new Error('`resolver` should be a function');\n }\n\n const cache: Record<string, any> = {};\n\n const memoized = function (this: any) {\n const args = Array.prototype.slice.call(arguments); // to simplify JSON.stringify\n const key = resolver.apply(this, args as Parameters<T>);\n\n if (!(key in cache)) {\n cache[key] = callback.apply(this, args);\n }\n\n return cache[key];\n };\n memoized.cache = cache;\n return memoized as func as T;\n}\n"],"names":["memoize","callback","resolver","args","JSON","stringify","Error","undefined","cache","memoized","Array","prototype","slice","call","arguments","key","apply"],"rangeMappings":";;;;;;;;;;;;;;;;;;;","mappings":"AAAA,kFAAkF;AAGlF,OAAO,SAASA,QACdC,QAAW,EACX,EACEC,WAAW,CAAC,GAAGC,OAAwBC,KAAKC,SAAS,CAACF,KAAK,EACT,GAAG,CAAC,CAAC;IAEzD,IAAI,OAAOF,aAAa,YAAY;QAClC,MAAM,IAAIK,MAAM;IAClB;IAEA,IAAIJ,aAAaK,aAAa,OAAOL,aAAa,YAAY;QAC5D,MAAM,IAAII,MAAM;IAClB;IAEA,MAAME,QAA6B,CAAC;IAEpC,MAAMC,WAAW;QACf,MAAMN,OAAOO,MAAMC,SAAS,CAACC,KAAK,CAACC,IAAI,CAACC,YAAY,6BAA6B;QACjF,MAAMC,MAAMb,SAASc,KAAK,CAAC,IAAI,EAAEb;QAEjC,IAAI,CAAEY,CAAAA,OAAOP,KAAI,GAAI;YACnBA,KAAK,CAACO,IAAI,GAAGd,SAASe,KAAK,CAAC,IAAI,EAAEb;QACpC;QAEA,OAAOK,KAAK,CAACO,IAAI;IACnB;IACAN,SAASD,KAAK,GAAGA;IACjB,OAAOC;AACT"}
|
package/lib/langs/mixin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/langs/mixin.ts"],"sourcesContent":["/**\n * Helper type to convert a union to an intersection.\n *\n * @internal\n */\ntype UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any ? R : never;\n\n/**\n * Constructor function, that creates a new instance of the given type.\n *\n * @typeParam T The type of the instance to create.\n * @example ```ts\n * function Walkable<TBase extends MixinConstructor<Positionable>>(Base: TBase) {\n * ··return class Walkable extends Base {\n * ····public forward() { this.x++; }\n * ····public backward() { this.x--; }\n * ··};\n * }\n * ```\n * @example ```ts\n * function Loggable(Base: MixinConstructor) {\n * ··return class Loggable extends Base {\n * ····public log(message: string) { throw new Error(404); }\n * ··};\n * }\n * ```\n */\nexport type MixinConstructor<T = {}> = new (...args: any[]) => T;\n\n/**\n * Function that applies a mixin to a given base class.\n *\n * @typeParam T The type of the base class.\n * @typeParam R The type of the returned class.\n */\nexport type MixinFunction<T extends MixinConstructor = MixinConstructor, R extends T = T & MixinConstructor> = (\n Base: T,\n) => R;\n\n/**\n * The return type of the mixin function.\n *\n * @typeParam T The type of the base class.\n * @typeParam M The type of the mixin functions.\n */\nexport type MixinReturnValue<T extends MixinConstructor, M extends MixinFunction<T, any>[]> = UnionToIntersection<\n | T\n | {\n [K in keyof M]: M[K] extends MixinFunction<any, infer U> ? U : never;\n }[number]\n>;\n\n/**\n * The instance created by a mixin function.\n *\n * @typeParam F The type of the mixin function.\n */\nexport type MixinInstance<F extends MixinFunction<any>> =\n F extends MixinFunction<MixinConstructor<any>, infer R> ? InstanceType<R> : never;\n\n/**\n * Applies the given mixins to the a common base class.\n *\n * @param Base The base class to apply the mixins to.\n * @param mixins The mixins to apply. All mixins must extend a common base class or an empty class.\n * @returns A class constructor with all mixins applied.\n *\n * @typeParam T The type of the base class.\n * @typeParam M The type of the mixin functions.\n *\n * @example ```ts\n * class Dog extends mixin(Animal, FourLegged, Carnivore, PackHunting, Barking, Domesticated) {}\n * ```\n */\nexport function mixin<T extends MixinConstructor, M extends MixinFunction<T, any>[]>(\n Base: T,\n ...mixins: M\n): MixinReturnValue<T, M> {\n return mixins.reduce((mix, applyMixin) => applyMixin(mix), Base) as MixinReturnValue<T, M>;\n}\n\n// https://github.com/1nVitr0/lib-ts-mixin-extended\n"],"names":["mixin","Base","mixins","reduce","mix","applyMixin"],"mappings":"AAAA;;;;CAIC,GAwDD;;;;;;;;;;;;;CAaC,GACD,OAAO,SAASA,MACdC,IAAO,EACP,GAAGC,MAAS;IAEZ,OAAOA,OAAOC,MAAM,CAAC,CAACC,KAAKC,aAAeA,WAAWD,MAAMH;AAC7D,EAEA,mDAAmD"}
|
|
1
|
+
{"version":3,"sources":["../../src/langs/mixin.ts"],"sourcesContent":["/**\n * Helper type to convert a union to an intersection.\n *\n * @internal\n */\ntype UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any ? R : never;\n\n/**\n * Constructor function, that creates a new instance of the given type.\n *\n * @typeParam T The type of the instance to create.\n * @example ```ts\n * function Walkable<TBase extends MixinConstructor<Positionable>>(Base: TBase) {\n * ··return class Walkable extends Base {\n * ····public forward() { this.x++; }\n * ····public backward() { this.x--; }\n * ··};\n * }\n * ```\n * @example ```ts\n * function Loggable(Base: MixinConstructor) {\n * ··return class Loggable extends Base {\n * ····public log(message: string) { throw new Error(404); }\n * ··};\n * }\n * ```\n */\nexport type MixinConstructor<T = {}> = new (...args: any[]) => T;\n\n/**\n * Function that applies a mixin to a given base class.\n *\n * @typeParam T The type of the base class.\n * @typeParam R The type of the returned class.\n */\nexport type MixinFunction<T extends MixinConstructor = MixinConstructor, R extends T = T & MixinConstructor> = (\n Base: T,\n) => R;\n\n/**\n * The return type of the mixin function.\n *\n * @typeParam T The type of the base class.\n * @typeParam M The type of the mixin functions.\n */\nexport type MixinReturnValue<T extends MixinConstructor, M extends MixinFunction<T, any>[]> = UnionToIntersection<\n | T\n | {\n [K in keyof M]: M[K] extends MixinFunction<any, infer U> ? U : never;\n }[number]\n>;\n\n/**\n * The instance created by a mixin function.\n *\n * @typeParam F The type of the mixin function.\n */\nexport type MixinInstance<F extends MixinFunction<any>> =\n F extends MixinFunction<MixinConstructor<any>, infer R> ? InstanceType<R> : never;\n\n/**\n * Applies the given mixins to the a common base class.\n *\n * @param Base The base class to apply the mixins to.\n * @param mixins The mixins to apply. All mixins must extend a common base class or an empty class.\n * @returns A class constructor with all mixins applied.\n *\n * @typeParam T The type of the base class.\n * @typeParam M The type of the mixin functions.\n *\n * @example ```ts\n * class Dog extends mixin(Animal, FourLegged, Carnivore, PackHunting, Barking, Domesticated) {}\n * ```\n */\nexport function mixin<T extends MixinConstructor, M extends MixinFunction<T, any>[]>(\n Base: T,\n ...mixins: M\n): MixinReturnValue<T, M> {\n return mixins.reduce((mix, applyMixin) => applyMixin(mix), Base) as MixinReturnValue<T, M>;\n}\n\n// https://github.com/1nVitr0/lib-ts-mixin-extended\n"],"names":["mixin","Base","mixins","reduce","mix","applyMixin"],"rangeMappings":";;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;;;CAIC,GAwDD;;;;;;;;;;;;;CAaC,GACD,OAAO,SAASA,MACdC,IAAO,EACP,GAAGC,MAAS;IAEZ,OAAOA,OAAOC,MAAM,CAAC,CAACC,KAAKC,aAAeA,WAAWD,MAAMH;AAC7D,EAEA,mDAAmD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/langs/parseBoolean.ts"],"sourcesContent":["export function parseBoolean(s: string | boolean | number | null | undefined, strict: true): boolean | undefined;\nexport function parseBoolean(s: string | boolean | number | null | undefined | any): boolean;\nexport function parseBoolean(s?: string | boolean | number | null, strict = false): boolean | undefined {\n if (typeof s === 'boolean') {\n return s;\n }\n if (typeof s === 'string') {\n switch (s.toLowerCase()) {\n case 'f':\n case 'false':\n case '0':\n return false;\n case '1':\n case 't':\n case 'true':\n return true;\n }\n } else if (typeof s === 'number') {\n switch (s) {\n case 0:\n return false;\n case 1:\n return true;\n }\n }\n if (strict) {\n return undefined;\n }\n return Boolean(s);\n}\n"],"names":["parseBoolean","s","strict","toLowerCase","undefined","Boolean"],"mappings":"AAEA,OAAO,SAASA,aAAaC,CAAoC,EAAEC,SAAS,KAAK;IAC/E,IAAI,OAAOD,MAAM,WAAW;QAC1B,OAAOA;IACT;IACA,IAAI,OAAOA,MAAM,UAAU;QACzB,OAAQA,EAAEE,WAAW;YACnB,KAAK;YACL,KAAK;YACL,KAAK;gBACH,OAAO;YACT,KAAK;YACL,KAAK;YACL,KAAK;gBACH,OAAO;QACX;IACF,OAAO,IAAI,OAAOF,MAAM,UAAU;QAChC,OAAQA;YACN,KAAK;gBACH,OAAO;YACT,KAAK;gBACH,OAAO;QACX;IACF;IACA,IAAIC,QAAQ;QACV,OAAOE;IACT;IACA,OAAOC,QAAQJ;AACjB"}
|
|
1
|
+
{"version":3,"sources":["../../src/langs/parseBoolean.ts"],"sourcesContent":["export function parseBoolean(s: string | boolean | number | null | undefined, strict: true): boolean | undefined;\nexport function parseBoolean(s: string | boolean | number | null | undefined | any): boolean;\nexport function parseBoolean(s?: string | boolean | number | null, strict = false): boolean | undefined {\n if (typeof s === 'boolean') {\n return s;\n }\n if (typeof s === 'string') {\n switch (s.toLowerCase()) {\n case 'f':\n case 'false':\n case '0':\n return false;\n case '1':\n case 't':\n case 'true':\n return true;\n }\n } else if (typeof s === 'number') {\n switch (s) {\n case 0:\n return false;\n case 1:\n return true;\n }\n }\n if (strict) {\n return undefined;\n }\n return Boolean(s);\n}\n"],"names":["parseBoolean","s","strict","toLowerCase","undefined","Boolean"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,OAAO,SAASA,aAAaC,CAAoC,EAAEC,SAAS,KAAK;IAC/E,IAAI,OAAOD,MAAM,WAAW;QAC1B,OAAOA;IACT;IACA,IAAI,OAAOA,MAAM,UAAU;QACzB,OAAQA,EAAEE,WAAW;YACnB,KAAK;YACL,KAAK;YACL,KAAK;gBACH,OAAO;YACT,KAAK;YACL,KAAK;YACL,KAAK;gBACH,OAAO;QACX;IACF,OAAO,IAAI,OAAOF,MAAM,UAAU;QAChC,OAAQA;YACN,KAAK;gBACH,OAAO;YACT,KAAK;gBACH,OAAO;QACX;IACF;IACA,IAAIC,QAAQ;QACV,OAAOE;IACT;IACA,OAAOC,QAAQJ;AACjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/langs/shallowClone.ts"],"sourcesContent":["export function shallowClone<T>(obj: T): T {\n if (!obj) {\n return obj;\n }\n if (Array.isArray(obj)) {\n return obj.slice() as T;\n }\n if (typeof obj === 'object') {\n return Object.assign({}, obj);\n }\n // skip Map, Set, WeakMap, WeakSet, Date, RegExp, etc.\n return obj;\n}\n"],"names":["shallowClone","obj","Array","isArray","slice","Object","assign"],"mappings":"AAAA,OAAO,SAASA,aAAgBC,GAAM;IACpC,IAAI,CAACA,KAAK;QACR,OAAOA;IACT;IACA,IAAIC,MAAMC,OAAO,CAACF,MAAM;QACtB,OAAOA,IAAIG,KAAK;IAClB;IACA,IAAI,OAAOH,QAAQ,UAAU;QAC3B,OAAOI,OAAOC,MAAM,CAAC,CAAC,GAAGL;IAC3B;IACA,sDAAsD;IACtD,OAAOA;AACT"}
|
|
1
|
+
{"version":3,"sources":["../../src/langs/shallowClone.ts"],"sourcesContent":["export function shallowClone<T>(obj: T): T {\n if (!obj) {\n return obj;\n }\n if (Array.isArray(obj)) {\n return obj.slice() as T;\n }\n if (typeof obj === 'object') {\n return Object.assign({}, obj);\n }\n // skip Map, Set, WeakMap, WeakSet, Date, RegExp, etc.\n return obj;\n}\n"],"names":["shallowClone","obj","Array","isArray","slice","Object","assign"],"rangeMappings":";;;;;;;;;;;;","mappings":"AAAA,OAAO,SAASA,aAAgBC,GAAM;IACpC,IAAI,CAACA,KAAK;QACR,OAAOA;IACT;IACA,IAAIC,MAAMC,OAAO,CAACF,MAAM;QACtB,OAAOA,IAAIG,KAAK;IAClB;IACA,IAAI,OAAOH,QAAQ,UAAU;QAC3B,OAAOI,OAAOC,MAAM,CAAC,CAAC,GAAGL;IAC3B;IACA,sDAAsD;IACtD,OAAOA;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/langs/shallowEqual.ts"],"sourcesContent":["/**\n * shallow compare - support object, array\n *\n * @see {@link https://github.com/pmndrs/zustand/blob/main/src/shallow.ts zustand/src/shallow.ts}\n */\nexport function shallowEqual<T, U>(objA: T, objB: U) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (let i = 0; i < keysA.length; i++) {\n if (\n !Object.prototype.hasOwnProperty.call(objB, keysA[i]) ||\n !Object.is(objA[keysA[i] as keyof T], objB[keysA[i] as keyof U])\n ) {\n return false;\n }\n }\n return true;\n}\n"],"names":["shallowEqual","objA","objB","Object","is","keysA","keys","length","i","prototype","hasOwnProperty","call"],"mappings":"AAAA;;;;CAIC,GACD,OAAO,SAASA,aAAmBC,IAAO,EAAEC,IAAO;IACjD,IAAIC,OAAOC,EAAE,CAACH,MAAMC,OAAO;QACzB,OAAO;IACT;IACA,IAAI,OAAOD,SAAS,YAAYA,SAAS,QAAQ,OAAOC,SAAS,YAAYA,SAAS,MAAM;QAC1F,OAAO;IACT;IACA,MAAMG,QAAQF,OAAOG,IAAI,CAACL;IAC1B,IAAII,MAAME,MAAM,KAAKJ,OAAOG,IAAI,CAACJ,MAAMK,MAAM,EAAE;QAC7C,OAAO;IACT;IACA,IAAK,IAAIC,IAAI,GAAGA,IAAIH,MAAME,MAAM,EAAEC,IAAK;QACrC,IACE,CAACL,OAAOM,SAAS,CAACC,cAAc,CAACC,IAAI,CAACT,MAAMG,KAAK,CAACG,EAAE,KACpD,CAACL,OAAOC,EAAE,CAACH,IAAI,CAACI,KAAK,CAACG,EAAE,CAAY,EAAEN,IAAI,CAACG,KAAK,CAACG,EAAE,CAAY,GAC/D;YACA,OAAO;QACT;IACF;IACA,OAAO;AACT"}
|
|
1
|
+
{"version":3,"sources":["../../src/langs/shallowEqual.ts"],"sourcesContent":["/**\n * shallow compare - support object, array\n *\n * @see {@link https://github.com/pmndrs/zustand/blob/main/src/shallow.ts zustand/src/shallow.ts}\n */\nexport function shallowEqual<T, U>(objA: T, objB: U) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (let i = 0; i < keysA.length; i++) {\n if (\n !Object.prototype.hasOwnProperty.call(objB, keysA[i]) ||\n !Object.is(objA[keysA[i] as keyof T], objB[keysA[i] as keyof U])\n ) {\n return false;\n }\n }\n return true;\n}\n"],"names":["shallowEqual","objA","objB","Object","is","keysA","keys","length","i","prototype","hasOwnProperty","call"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;;;CAIC,GACD,OAAO,SAASA,aAAmBC,IAAO,EAAEC,IAAO;IACjD,IAAIC,OAAOC,EAAE,CAACH,MAAMC,OAAO;QACzB,OAAO;IACT;IACA,IAAI,OAAOD,SAAS,YAAYA,SAAS,QAAQ,OAAOC,SAAS,YAAYA,SAAS,MAAM;QAC1F,OAAO;IACT;IACA,MAAMG,QAAQF,OAAOG,IAAI,CAACL;IAC1B,IAAII,MAAME,MAAM,KAAKJ,OAAOG,IAAI,CAACJ,MAAMK,MAAM,EAAE;QAC7C,OAAO;IACT;IACA,IAAK,IAAIC,IAAI,GAAGA,IAAIH,MAAME,MAAM,EAAEC,IAAK;QACrC,IACE,CAACL,OAAOM,SAAS,CAACC,cAAc,CAACC,IAAI,CAACT,MAAMG,KAAK,CAACG,EAAE,KACpD,CAACL,OAAOC,EAAE,CAACH,IAAI,CAACI,KAAK,CAACG,EAAE,CAAY,EAAEN,IAAI,CAACG,KAAK,CAACG,EAAE,CAAY,GAC/D;YACA,OAAO;QACT;IACF;IACA,OAAO;AACT"}
|