@cloudpss/ubjson 0.5.39 → 0.5.41
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/base/decoder.d.ts +1 -0
- package/dist/base/decoder.d.ts.map +1 -0
- package/dist/base/encoder.d.ts +5 -1
- package/dist/base/encoder.d.ts.map +1 -0
- package/dist/base/encoder.js +50 -188
- package/dist/base/encoder.js.map +1 -1
- package/dist/decoder.d.ts +1 -0
- package/dist/decoder.d.ts.map +1 -0
- package/dist/encoder.d.ts +7 -1
- package/dist/encoder.d.ts.map +1 -0
- package/dist/encoder.js +24 -15
- package/dist/encoder.js.map +1 -1
- package/dist/helper/constants.d.ts +1 -0
- package/dist/helper/constants.d.ts.map +1 -0
- package/dist/helper/decode-ae.d.ts +50 -0
- package/dist/helper/decode-ae.d.ts.map +1 -0
- package/dist/helper/decode-ae.js +584 -0
- package/dist/helper/decode-ae.js.map +1 -0
- package/dist/helper/decode.d.ts +6 -3
- package/dist/helper/decode.d.ts.map +1 -0
- package/dist/helper/decode.js +33 -20
- package/dist/helper/decode.js.map +1 -1
- package/dist/helper/encode.d.ts +19 -1
- package/dist/helper/encode.d.ts.map +1 -0
- package/dist/helper/encode.js +138 -16
- package/dist/helper/encode.js.map +1 -1
- package/dist/helper/errors.d.ts +1 -0
- package/dist/helper/errors.d.ts.map +1 -0
- package/dist/helper/string-decoder.d.ts +5 -2
- package/dist/helper/string-decoder.d.ts.map +1 -0
- package/dist/helper/string-decoder.js +10 -38
- package/dist/helper/string-decoder.js.map +1 -1
- package/dist/helper/string-encoder.d.ts +1 -0
- package/dist/helper/string-encoder.d.ts.map +1 -0
- package/dist/helper/utils.d.ts +1 -0
- package/dist/helper/utils.d.ts.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/options.d.ts +6 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +2 -0
- package/dist/options.js.map +1 -0
- package/dist/rxjs/decoder.d.ts +1 -0
- package/dist/rxjs/decoder.d.ts.map +1 -0
- package/dist/rxjs/decoder.js +66 -40
- package/dist/rxjs/decoder.js.map +1 -1
- package/dist/rxjs/encoder.d.ts +3 -1
- package/dist/rxjs/encoder.d.ts.map +1 -0
- package/dist/rxjs/encoder.js +2 -2
- package/dist/rxjs/encoder.js.map +1 -1
- package/dist/rxjs/index.d.ts +2 -0
- package/dist/rxjs/index.d.ts.map +1 -0
- package/dist/stream/decoder.d.ts +1 -0
- package/dist/stream/decoder.d.ts.map +1 -0
- package/dist/stream/encoder.d.ts +4 -2
- package/dist/stream/encoder.d.ts.map +1 -0
- package/dist/stream/encoder.js +2 -2
- package/dist/stream/encoder.js.map +1 -1
- package/dist/stream/index.d.ts +6 -3
- package/dist/stream/index.d.ts.map +1 -0
- package/dist/stream/index.js +6 -6
- package/dist/stream/index.js.map +1 -1
- package/dist/stream-helper/decoder.d.ts +1 -0
- package/dist/stream-helper/decoder.d.ts.map +1 -0
- package/dist/stream-helper/encoder.d.ts +5 -2
- package/dist/stream-helper/encoder.d.ts.map +1 -0
- package/dist/stream-helper/encoder.js +33 -31
- package/dist/stream-helper/encoder.js.map +1 -1
- package/jest.config.js +1 -1
- package/package.json +3 -4
- package/src/base/encoder.ts +58 -174
- package/src/encoder.ts +27 -15
- package/src/helper/decode-ae.ts +621 -0
- package/src/helper/decode.ts +36 -23
- package/src/helper/encode.ts +141 -15
- package/src/helper/string-decoder.ts +10 -39
- package/src/index.ts +7 -4
- package/src/options.ts +5 -0
- package/src/rxjs/decoder.ts +66 -40
- package/src/rxjs/encoder.ts +3 -2
- package/src/rxjs/index.ts +1 -0
- package/src/stream/encoder.ts +4 -3
- package/src/stream/index.ts +8 -6
- package/src/stream-helper/encoder.ts +39 -34
- package/tests/.utils.js +1 -0
- package/tests/e2e/stream.js +13 -1
- package/tests/encode.js +8 -0
- package/tests/string-encoding.js +1 -10
- package/tests/tsconfig.json +1 -7
- package/tsconfig.json +1 -1
package/dist/base/decoder.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/base/decoder.ts"],"names":[],"mappings":"AAIA,cAAc;AACd,qBAAa,WAAW;gBACR,IAAI,EAAE,UAAU;IAK5B,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAClC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IACpC,cAAc;IACd,SAAS,CAAC,MAAM,SAAK;IACrB,UAAU;IACV,SAAS,CAAC,GAAG,IAAI,KAAK;IAItB,SAAS;IACT,MAAM,IAAI,OAAO;CAKpB"}
|
package/dist/base/encoder.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { type TypedArrayType } from '../helper/encode.js';
|
|
1
2
|
/** 编码至 ubjson */
|
|
2
3
|
export declare abstract class EncoderBase {
|
|
4
|
+
/** 序列化对象时排序属性 */
|
|
5
|
+
sortObjectKeys: boolean;
|
|
3
6
|
/** 当前写指针位置 */
|
|
4
7
|
protected length: number;
|
|
5
8
|
/** 数据 */
|
|
@@ -19,5 +22,6 @@ export declare abstract class EncoderBase {
|
|
|
19
22
|
/** 写入大字符串 */
|
|
20
23
|
protected writeLargeStringData(value: string): void;
|
|
21
24
|
/** 写入数组 */
|
|
22
|
-
protected writeLargeTypedArrayData(value: ArrayBufferView): void;
|
|
25
|
+
protected writeLargeTypedArrayData(type: TypedArrayType, value: ArrayBufferView): void;
|
|
23
26
|
}
|
|
27
|
+
//# sourceMappingURL=encoder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../src/base/encoder.ts"],"names":[],"mappings":"AACA,OAAO,EAGH,KAAK,cAAc,EAKtB,MAAM,qBAAqB,CAAC;AAU7B,iBAAiB;AACjB,8BAAsB,WAAW;IAC7B,iBAAiB;IACjB,cAAc,UAAS;IACvB,cAAc;IACd,SAAS,CAAC,MAAM,SAAK;IACrB,SAAS;IACT,SAAS,CAAC,IAAI,EAAG,UAAU,CAAC;IAC5B,wBAAwB;IACxB,SAAS,CAAC,IAAI,EAAG,QAAQ,CAAC;IAC1B;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAEzD,wCAAwC;IACxC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAQ1C,aAAa;IACb,OAAO,CAAC,KAAK;IAiGb,sBAAsB;IACtB,OAAO,CAAC,eAAe;IAmCvB,aAAa;IACb,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAWnD,WAAW;IACX,SAAS,CAAC,wBAAwB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI;CAGzF"}
|
package/dist/base/encoder.js
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { unsupportedType
|
|
1
|
+
import { I8_MASK, writeNumber, writeTypedArray, writeTypedArrayData, writeTypedArrayHeader, } from '../helper/encode.js';
|
|
2
|
+
import { unsupportedType } from '../helper/errors.js';
|
|
3
3
|
import { stringByteLength, encodeInto } from '../helper/string-encoder.js';
|
|
4
4
|
const LARGE_DATA_LENGTH = 65536;
|
|
5
|
+
const { isArray } = Array;
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
7
|
+
const { isView } = ArrayBuffer;
|
|
8
|
+
const { keys: objectKeys } = Object;
|
|
5
9
|
/** 编码至 ubjson */
|
|
6
10
|
export class EncoderBase {
|
|
11
|
+
/** 序列化对象时排序属性 */
|
|
12
|
+
sortObjectKeys = false;
|
|
7
13
|
/** 当前写指针位置 */
|
|
8
14
|
length = 0;
|
|
9
15
|
/** 数据 */
|
|
@@ -36,52 +42,14 @@ export class EncoderBase {
|
|
|
36
42
|
}
|
|
37
43
|
return;
|
|
38
44
|
case 'number':
|
|
39
|
-
|
|
40
|
-
if ((value | 0) === value) {
|
|
41
|
-
if (value >= 0 && value <= 255) {
|
|
42
|
-
this.ensureCapacity(2);
|
|
43
|
-
this.data[this.length++] = 85 /* constants.UINT8 */;
|
|
44
|
-
this.data[this.length++] = value;
|
|
45
|
-
}
|
|
46
|
-
else if (value >= -128 && value <= 127) {
|
|
47
|
-
this.ensureCapacity(2);
|
|
48
|
-
this.data[this.length++] = 105 /* constants.INT8 */;
|
|
49
|
-
this.data[this.length++] = value;
|
|
50
|
-
}
|
|
51
|
-
else if (value >= -32768 && value <= 32767) {
|
|
52
|
-
this.ensureCapacity(3);
|
|
53
|
-
this.data[this.length++] = 73 /* constants.INT16 */;
|
|
54
|
-
this.data[this.length++] = value >> 8;
|
|
55
|
-
this.data[this.length++] = value & 0xff;
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
this.ensureCapacity(5);
|
|
59
|
-
this.data[this.length++] = 108 /* constants.INT32 */;
|
|
60
|
-
this.view.setInt32(this.length, value);
|
|
61
|
-
this.length += 4;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
else if (Number.isNaN(value) || Math.fround(value) === value) {
|
|
65
|
-
// 如果不会损失精度,使用 32 位浮点
|
|
66
|
-
this.ensureCapacity(5);
|
|
67
|
-
this.data[this.length++] = 100 /* constants.FLOAT32 */;
|
|
68
|
-
this.view.setFloat32(this.length, value);
|
|
69
|
-
this.length += 4;
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
this.ensureCapacity(9);
|
|
73
|
-
this.data[this.length++] = 68 /* constants.FLOAT64 */;
|
|
74
|
-
this.view.setFloat64(this.length, value);
|
|
75
|
-
this.length += 8;
|
|
76
|
-
}
|
|
77
|
-
return;
|
|
45
|
+
return writeNumber(this, value);
|
|
78
46
|
case 'object': {
|
|
79
47
|
if (value === null) {
|
|
80
48
|
this.ensureCapacity(1);
|
|
81
49
|
this.data[this.length++] = 90 /* constants.NULL */;
|
|
82
50
|
return;
|
|
83
51
|
}
|
|
84
|
-
if (
|
|
52
|
+
if (isArray(value)) {
|
|
85
53
|
this.ensureCapacity(1);
|
|
86
54
|
this.data[this.length++] = 91 /* constants.ARRAY */;
|
|
87
55
|
const size = value.length;
|
|
@@ -100,101 +68,38 @@ export class EncoderBase {
|
|
|
100
68
|
this.data[this.length++] = 93 /* constants.ARRAY_END */;
|
|
101
69
|
return;
|
|
102
70
|
}
|
|
103
|
-
if (
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
this.write(toJSON.call(value));
|
|
71
|
+
if (isView(value)) {
|
|
72
|
+
if (value.byteLength <= LARGE_DATA_LENGTH) {
|
|
73
|
+
writeTypedArray(this, value);
|
|
107
74
|
return;
|
|
108
75
|
}
|
|
109
|
-
this
|
|
110
|
-
this.
|
|
111
|
-
// 生成稳定的结果以便 hash 计算
|
|
112
|
-
const keys = Object.keys(value).sort();
|
|
113
|
-
const size = keys.length;
|
|
114
|
-
for (let index = 0; index < size; index++) {
|
|
115
|
-
const key = keys[index];
|
|
116
|
-
const element = value[key];
|
|
117
|
-
if (element === undefined || typeof element == 'function')
|
|
118
|
-
continue;
|
|
119
|
-
this.writeStringData(key);
|
|
120
|
-
this.write(element);
|
|
121
|
-
}
|
|
122
|
-
this.ensureCapacity(1);
|
|
123
|
-
this.data[this.length++] = 125 /* constants.OBJECT_END */;
|
|
76
|
+
const type = writeTypedArrayHeader(this, value);
|
|
77
|
+
this.writeLargeTypedArrayData(type, value);
|
|
124
78
|
return;
|
|
125
79
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
80
|
+
const { toJSON } = value;
|
|
81
|
+
if (typeof toJSON == 'function') {
|
|
82
|
+
this.write(toJSON.call(value));
|
|
83
|
+
return;
|
|
130
84
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
.length;
|
|
147
|
-
const elementSize = value
|
|
148
|
-
.BYTES_PER_ELEMENT;
|
|
149
|
-
if (value instanceof Float64Array) {
|
|
150
|
-
this.data[this.length++] = 68 /* constants.FLOAT64 */;
|
|
151
|
-
this.data[this.length++] = 35 /* constants.COUNT_MARKER */;
|
|
152
|
-
writeLength(this, arrayLength);
|
|
153
|
-
for (let i = 0; i < arrayLength; i++) {
|
|
154
|
-
this.view.setFloat64(this.length, value[i]);
|
|
155
|
-
this.length += elementSize;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
else if (value instanceof Int32Array) {
|
|
159
|
-
this.data[this.length++] = 108 /* constants.INT32 */;
|
|
160
|
-
this.data[this.length++] = 35 /* constants.COUNT_MARKER */;
|
|
161
|
-
writeLength(this, arrayLength);
|
|
162
|
-
for (let i = 0; i < arrayLength; i++) {
|
|
163
|
-
this.view.setInt32(this.length, value[i]);
|
|
164
|
-
this.length += elementSize;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
else if (value instanceof Int16Array) {
|
|
168
|
-
this.data[this.length++] = 73 /* constants.INT16 */;
|
|
169
|
-
this.data[this.length++] = 35 /* constants.COUNT_MARKER */;
|
|
170
|
-
writeLength(this, arrayLength);
|
|
171
|
-
for (let i = 0; i < arrayLength; i++) {
|
|
172
|
-
this.view.setInt16(this.length, value[i]);
|
|
173
|
-
this.length += elementSize;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
else if (value instanceof Float32Array) {
|
|
177
|
-
this.data[this.length++] = 100 /* constants.FLOAT32 */;
|
|
178
|
-
this.data[this.length++] = 35 /* constants.COUNT_MARKER */;
|
|
179
|
-
writeLength(this, arrayLength);
|
|
180
|
-
for (let i = 0; i < arrayLength; i++) {
|
|
181
|
-
this.view.setFloat32(this.length, value[i]);
|
|
182
|
-
this.length += elementSize;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
else if (value instanceof BigInt64Array) {
|
|
186
|
-
this.data[this.length++] = 76 /* constants.INT64 */;
|
|
187
|
-
this.data[this.length++] = 35 /* constants.COUNT_MARKER */;
|
|
188
|
-
writeLength(this, arrayLength);
|
|
189
|
-
for (let i = 0; i < arrayLength; i++) {
|
|
190
|
-
this.view.setBigInt64(this.length, value[i]);
|
|
191
|
-
this.length += elementSize;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
else {
|
|
195
|
-
unsupportedView(value);
|
|
196
|
-
}
|
|
85
|
+
// 生成稳定的结果以便 hash 计算
|
|
86
|
+
const keys = objectKeys(value);
|
|
87
|
+
const size = keys.length;
|
|
88
|
+
if (this.sortObjectKeys && size > 1) {
|
|
89
|
+
keys.sort();
|
|
90
|
+
}
|
|
91
|
+
this.ensureCapacity(2 + size);
|
|
92
|
+
this.data[this.length++] = 123 /* constants.OBJECT */;
|
|
93
|
+
for (let index = 0; index < size; index++) {
|
|
94
|
+
const key = keys[index];
|
|
95
|
+
const element = value[key];
|
|
96
|
+
if (element === undefined || typeof element == 'function')
|
|
97
|
+
continue;
|
|
98
|
+
this.writeStringData(key);
|
|
99
|
+
this.write(element);
|
|
197
100
|
}
|
|
101
|
+
this.ensureCapacity(1);
|
|
102
|
+
this.data[this.length++] = 125 /* constants.OBJECT_END */;
|
|
198
103
|
return;
|
|
199
104
|
}
|
|
200
105
|
case 'boolean':
|
|
@@ -234,29 +139,28 @@ export class EncoderBase {
|
|
|
234
139
|
this.ensureCapacity(maxUsage + 5 + 3);
|
|
235
140
|
// 预估头部大小
|
|
236
141
|
const headerSize = strLength < 0x80 ? 2 : strLength < 0x8000 ? 3 : 5;
|
|
237
|
-
const headerPos = this
|
|
238
|
-
const bufLength = encodeInto(value,
|
|
142
|
+
const { length: headerPos, data, view } = this;
|
|
143
|
+
const bufLength = encodeInto(value, data, headerPos + headerSize);
|
|
239
144
|
if (bufLength < 0x80) {
|
|
240
|
-
|
|
241
|
-
this.
|
|
145
|
+
view.setInt16(headerPos, I8_MASK | bufLength);
|
|
146
|
+
this.length = headerPos + 2 + bufLength;
|
|
242
147
|
}
|
|
243
148
|
else if (bufLength < 0x8000) {
|
|
244
149
|
if (headerSize < 3) {
|
|
245
|
-
|
|
150
|
+
data.copyWithin(headerPos + 3, headerPos + headerSize, headerPos + headerSize + bufLength);
|
|
246
151
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
this.
|
|
152
|
+
data[headerPos] = 73 /* constants.INT16 */;
|
|
153
|
+
view.setInt16(headerPos + 1, bufLength);
|
|
154
|
+
this.length = headerPos + 3 + bufLength;
|
|
250
155
|
}
|
|
251
156
|
else {
|
|
252
157
|
if (headerSize < 5) {
|
|
253
|
-
|
|
158
|
+
data.copyWithin(headerPos + 5, headerPos + headerSize, headerPos + headerSize + bufLength);
|
|
254
159
|
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
this.length
|
|
160
|
+
data[headerPos] = 108 /* constants.INT32 */;
|
|
161
|
+
view.setInt32(headerPos + 1, bufLength);
|
|
162
|
+
this.length = headerPos + 5 + bufLength;
|
|
258
163
|
}
|
|
259
|
-
this.length += bufLength;
|
|
260
164
|
}
|
|
261
165
|
/** 写入大字符串 */
|
|
262
166
|
writeLargeStringData(value) {
|
|
@@ -270,50 +174,8 @@ export class EncoderBase {
|
|
|
270
174
|
this.length += binLen;
|
|
271
175
|
}
|
|
272
176
|
/** 写入数组 */
|
|
273
|
-
writeLargeTypedArrayData(value) {
|
|
274
|
-
this
|
|
275
|
-
if (value instanceof Uint8Array || value instanceof Int8Array) {
|
|
276
|
-
// fast path for typed arrays with `BYTES_PER_ELEMENT` of 1
|
|
277
|
-
this.data.set(value, this.length);
|
|
278
|
-
this.length += value.byteLength;
|
|
279
|
-
return;
|
|
280
|
-
}
|
|
281
|
-
const arrayLength = value.length;
|
|
282
|
-
const elementSize = value
|
|
283
|
-
.BYTES_PER_ELEMENT;
|
|
284
|
-
if (value instanceof Int16Array) {
|
|
285
|
-
for (let i = 0; i < arrayLength; i++) {
|
|
286
|
-
this.view.setInt16(this.length, value[i]);
|
|
287
|
-
this.length += elementSize;
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
else if (value instanceof Int32Array) {
|
|
291
|
-
for (let i = 0; i < arrayLength; i++) {
|
|
292
|
-
this.view.setInt32(this.length, value[i]);
|
|
293
|
-
this.length += elementSize;
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
else if (value instanceof Float32Array) {
|
|
297
|
-
for (let i = 0; i < arrayLength; i++) {
|
|
298
|
-
this.view.setFloat32(this.length, value[i]);
|
|
299
|
-
this.length += elementSize;
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
else if (value instanceof Float64Array) {
|
|
303
|
-
for (let i = 0; i < arrayLength; i++) {
|
|
304
|
-
this.view.setFloat64(this.length, value[i]);
|
|
305
|
-
this.length += elementSize;
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
else if (value instanceof BigInt64Array) {
|
|
309
|
-
for (let i = 0; i < arrayLength; i++) {
|
|
310
|
-
this.view.setBigInt64(this.length, value[i]);
|
|
311
|
-
this.length += elementSize;
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
else {
|
|
315
|
-
unsupportedView(value);
|
|
316
|
-
}
|
|
177
|
+
writeLargeTypedArrayData(type, value) {
|
|
178
|
+
writeTypedArrayData(this, type, value);
|
|
317
179
|
}
|
|
318
180
|
}
|
|
319
181
|
//# sourceMappingURL=encoder.js.map
|
package/dist/base/encoder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../src/base/encoder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../src/base/encoder.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,OAAO,EAEP,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,qBAAqB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE3E,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;AAC1B,6DAA6D;AAC7D,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;AAC/B,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;AAEpC,iBAAiB;AACjB,MAAM,OAAgB,WAAW;IAC7B,iBAAiB;IACjB,cAAc,GAAG,KAAK,CAAC;IACvB,cAAc;IACJ,MAAM,GAAG,CAAC,CAAC;IACrB,SAAS;IACC,IAAI,CAAc;IAC5B,wBAAwB;IACd,IAAI,CAAY;IAM1B,wCAAwC;IAC9B,UAAU,CAAC,KAAc;QAC/B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,2BAAkB,CAAC;YAC3C,OAAO;QACX,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IACD,aAAa;IACL,KAAK,CAAC,KAAc;QACxB,QAAQ,OAAO,KAAK,EAAE,CAAC;YACnB,KAAK,QAAQ;gBACT,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;oBACnD,oBAAoB;oBACpB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oBACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,0BAAiB,CAAC;oBAC1C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACnD,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oBACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,4BAAmB,CAAC;oBAC5C,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAChC,CAAC;gBACD,OAAO;YACX,KAAK,QAAQ;gBACT,OAAO,WAAW,CAAC,IAA2B,EAAE,KAAK,CAAC,CAAC;YAC3D,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACZ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBACjB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oBACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,0BAAiB,CAAC;oBAC1C,OAAO;gBACX,CAAC;gBACD,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oBACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,2BAAkB,CAAC;oBAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;oBAC1B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;wBACxC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAY,CAAC;wBACxC,4CAA4C;wBAC5C,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,OAAO,IAAI,UAAU,EAAE,CAAC;4BAClD,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;4BACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,0BAAiB,CAAC;wBAC9C,CAAC;6BAAM,CAAC;4BACJ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBACxB,CAAC;oBACL,CAAC;oBACD,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oBACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,+BAAsB,CAAC;oBAC/C,OAAO;gBACX,CAAC;gBACD,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChB,IAAI,KAAK,CAAC,UAAU,IAAI,iBAAiB,EAAE,CAAC;wBACxC,eAAe,CAAC,IAA2B,EAAE,KAAK,CAAC,CAAC;wBACpD,OAAO;oBACX,CAAC;oBACD,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAA2B,EAAE,KAAK,CAAC,CAAC;oBACvE,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBAC3C,OAAO;gBACX,CAAC;gBACD,MAAM,EAAE,MAAM,EAAE,GAAG,KAAgC,CAAC;gBACpD,IAAI,OAAO,MAAM,IAAI,UAAU,EAAE,CAAC;oBAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC/B,OAAO;gBACX,CAAC;gBACD,oBAAoB;gBACpB,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;gBAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;gBACzB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;oBAClC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAChB,CAAC;gBACD,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,6BAAmB,CAAC;gBAC5C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBACxC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;oBACzB,MAAM,OAAO,GAAI,KAAiC,CAAC,GAAG,CAAC,CAAC;oBACxD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,IAAI,UAAU;wBAAE,SAAS;oBACpE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;oBAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACxB,CAAC;gBACD,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,iCAAuB,CAAC;gBAChD,OAAO;YACX,CAAC;YACD,KAAK,SAAS;gBACV,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,yBAAgB,CAAC,yBAAgB,CAAC;gBACpE,OAAO;YACX,KAAK,QAAQ;gBACT,cAAc;gBACd,IAAI,KAAK,IAAI,CAAC,WAAc,IAAI,KAAK,IAAI,WAAc,EAAE,CAAC;oBACtD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9B,CAAC;gBACD,cAAc;qBACT,IAAI,KAAK,IAAI,CAAC,oBAA0B,IAAI,KAAK,IAAI,oBAA0B,EAAE,CAAC;oBACnF,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oBACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,2BAAkB,CAAC;oBAC3C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC1C,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACJ,MAAM,IAAI,UAAU,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;gBAChE,CAAC;gBACD,OAAO;YACX;gBACI,eAAe,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACL,CAAC;IAED,sBAAsB;IACd,eAAe,CAAC,KAAa;QACjC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;QAC/B,IAAI,SAAS,GAAG,iBAAiB,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;QACD,oBAAoB;QACpB,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC;QAC/B,0CAA0C;QAC1C,qCAAqC;QACrC,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAEtC,SAAS;QACT,MAAM,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAC/C,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC;QAClE,IAAI,SAAS,GAAG,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC;QAC5C,CAAC;aAAM,IAAI,SAAS,GAAG,MAAM,EAAE,CAAC;YAC5B,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACjB,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,UAAU,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC,CAAC;YAC/F,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,2BAAkB,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC;QAC5C,CAAC;aAAM,CAAC;YACJ,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACjB,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,UAAU,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC,CAAC;YAC/F,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,4BAAkB,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC;QAC5C,CAAC;IACL,CAAC;IAED,aAAa;IACH,oBAAoB,CAAC,KAAa;QACxC,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,4BAAkB,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5B,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;IAC1B,CAAC;IAED,WAAW;IACD,wBAAwB,CAAC,IAAoB,EAAE,KAAsB;QAC3E,mBAAmB,CAAC,IAA2B,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;CACJ"}
|
package/dist/decoder.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../src/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,gBAAgB;AAChB,qBAAa,OAAQ,SAAQ,WAAW;IACpC,WAAW;IACX,IAAI,KAAK,IAAI,OAAO,CAEnB;CACJ"}
|
package/dist/encoder.d.ts
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import { EncoderBase } from './base/encoder.js';
|
|
2
|
+
import type { EncodeOptions } from './options.js';
|
|
2
3
|
/** 编码至 ubjson */
|
|
3
4
|
export declare class Encoder extends EncoderBase {
|
|
4
5
|
private readonly flushedBuffers;
|
|
5
6
|
/** 通过内存池减少分配 */
|
|
6
7
|
private readonly pool;
|
|
8
|
+
/** 缓存当前容量,避免对象访问耗时 */
|
|
9
|
+
private capacity;
|
|
7
10
|
/**
|
|
8
11
|
* 确保 buffer 还有 capacity 的空闲空间
|
|
9
12
|
*/
|
|
10
13
|
protected ensureCapacity(capacity: number): void;
|
|
14
|
+
/** 提交并扩容 */
|
|
15
|
+
protected flushBuffer(capacity: number): void;
|
|
11
16
|
/** 分配 buffer */
|
|
12
17
|
private allocUnsafe;
|
|
13
18
|
/** 获取结果 */
|
|
@@ -20,6 +25,7 @@ export declare class Encoder extends EncoderBase {
|
|
|
20
25
|
encodeMany(value: Iterable<unknown>): Uint8Array;
|
|
21
26
|
}
|
|
22
27
|
/** 获取默认的编码器 */
|
|
23
|
-
export declare function getEncoder(): Encoder;
|
|
28
|
+
export declare function getEncoder(options?: EncodeOptions): Encoder;
|
|
24
29
|
/** 重置编码器, For testing only */
|
|
25
30
|
export declare function resetEncoder(): void;
|
|
31
|
+
//# sourceMappingURL=encoder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../src/encoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAKlD,iBAAiB;AACjB,qBAAa,OAAQ,SAAQ,WAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoB;IACnD,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA8B;IACnD,sBAAsB;IACtB,OAAO,CAAC,QAAQ,CAAK;IACrB;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAYhD,YAAY;IACZ,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAa7C,gBAAgB;IAChB,OAAO,CAAC,WAAW;IAanB,WAAW;IACX,OAAO,CAAC,SAAS;IAqBjB,WAAW;IACX,OAAO,CAAC,WAAW;IAInB,aAAa;IACb,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU;IAWlC,aAAa;IACb,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,UAAU;CAYnD;AAID,eAAe;AACf,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAM3D;AAED,8BAA8B;AAC9B,wBAAgB,YAAY,IAAI,IAAI,CAEnC"}
|
package/dist/encoder.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { EncoderBase } from './base/encoder.js';
|
|
2
|
-
const BLOCK_SIZE = 1024 *
|
|
2
|
+
const BLOCK_SIZE = 1024 * 64; // 64 KiB
|
|
3
3
|
const MAX_SIZE = 1024 * 1024 * 128; //128 MiB
|
|
4
4
|
/** 编码至 ubjson */
|
|
5
5
|
export class Encoder extends EncoderBase {
|
|
6
6
|
flushedBuffers = [];
|
|
7
7
|
/** 通过内存池减少分配 */
|
|
8
8
|
pool = new Uint8Array(BLOCK_SIZE);
|
|
9
|
+
/** 缓存当前容量,避免对象访问耗时 */
|
|
10
|
+
capacity = 0;
|
|
9
11
|
/**
|
|
10
12
|
* 确保 buffer 还有 capacity 的空闲空间
|
|
11
13
|
*/
|
|
@@ -14,9 +16,14 @@ export class Encoder extends EncoderBase {
|
|
|
14
16
|
// 超过最大尺寸限制
|
|
15
17
|
throw new Error('Buffer has exceed max size');
|
|
16
18
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
if (this.capacity >= this.length + capacity) {
|
|
20
|
+
// 无需扩容
|
|
19
21
|
return;
|
|
22
|
+
}
|
|
23
|
+
this.flushBuffer(capacity);
|
|
24
|
+
}
|
|
25
|
+
/** 提交并扩容 */
|
|
26
|
+
flushBuffer(capacity) {
|
|
20
27
|
// 提交目前的数据
|
|
21
28
|
if (this.data === this.pool) {
|
|
22
29
|
this.flushedBuffers.push(this.data.slice(0, this.length));
|
|
@@ -31,16 +38,15 @@ export class Encoder extends EncoderBase {
|
|
|
31
38
|
}
|
|
32
39
|
/** 分配 buffer */
|
|
33
40
|
allocUnsafe(size) {
|
|
34
|
-
|
|
35
|
-
// 从 pool 中获取
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
this.data = new Uint8Array(size);
|
|
42
|
-
this.view = new DataView(this.data.buffer);
|
|
41
|
+
const data = size === BLOCK_SIZE
|
|
42
|
+
? // 从 pool 中获取
|
|
43
|
+
this.pool
|
|
44
|
+
: // 新建 buffer
|
|
45
|
+
new Uint8Array(size);
|
|
46
|
+
this.data = data;
|
|
47
|
+
this.view = new DataView(data.buffer);
|
|
43
48
|
this.length = 0;
|
|
49
|
+
this.capacity = size;
|
|
44
50
|
}
|
|
45
51
|
/** 获取结果 */
|
|
46
52
|
getResult() {
|
|
@@ -49,15 +55,17 @@ export class Encoder extends EncoderBase {
|
|
|
49
55
|
return this.data.slice(0, this.length);
|
|
50
56
|
}
|
|
51
57
|
// 合并缓冲区
|
|
58
|
+
const { length } = this;
|
|
59
|
+
const activeBuffer = this.data.subarray(0, length);
|
|
52
60
|
const flushedBuffers = this.flushedBuffers.splice(0);
|
|
53
|
-
const size = flushedBuffers.reduce((sum, buffer) => sum + buffer.byteLength,
|
|
61
|
+
const size = flushedBuffers.reduce((sum, buffer) => sum + buffer.byteLength, length);
|
|
54
62
|
const result = new Uint8Array(size);
|
|
55
63
|
let offset = 0;
|
|
56
64
|
for (const buffer of flushedBuffers) {
|
|
57
65
|
result.set(buffer, offset);
|
|
58
66
|
offset += buffer.byteLength;
|
|
59
67
|
}
|
|
60
|
-
result.set(
|
|
68
|
+
result.set(activeBuffer, offset);
|
|
61
69
|
return result;
|
|
62
70
|
}
|
|
63
71
|
/** 抛弃结果 */
|
|
@@ -93,10 +101,11 @@ export class Encoder extends EncoderBase {
|
|
|
93
101
|
}
|
|
94
102
|
let _ENCODER;
|
|
95
103
|
/** 获取默认的编码器 */
|
|
96
|
-
export function getEncoder() {
|
|
104
|
+
export function getEncoder(options) {
|
|
97
105
|
if (_ENCODER == null) {
|
|
98
106
|
_ENCODER = new Encoder();
|
|
99
107
|
}
|
|
108
|
+
_ENCODER.sortObjectKeys = options?.sortObjectKeys ?? false;
|
|
100
109
|
return _ENCODER;
|
|
101
110
|
}
|
|
102
111
|
/** 重置编码器, For testing only */
|
package/dist/encoder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoder.js","sourceRoot":"","sources":["../src/encoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"encoder.js","sourceRoot":"","sources":["../src/encoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/helper/constants.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,0BAAkB,SAAS;IACvB,IAAI,KAAK,CAAE,mBAAmB;IAC9B,KAAK,KAAK,CAAE,mBAAmB;IAC/B,IAAI,KAAK,CAAE,mBAAmB;IAC9B,KAAK,KAAK,CAAE,mBAAmB;IAC/B,IAAI,MAAM,CAAE,mBAAmB;IAC/B,KAAK,KAAK,CAAE,mBAAmB;IAC/B,KAAK,KAAK,CAAE,mBAAmB;IAC/B,KAAK,MAAM,CAAE,mBAAmB;IAChC,KAAK,KAAK,CAAE,mBAAmB;IAC/B,OAAO,MAAM,CAAE,mBAAmB;IAClC,OAAO,KAAK,CAAE,mBAAmB;IACjC,qBAAqB,KAAK,CAAE,mBAAmB;IAC/C,IAAI,KAAK,CAAE,mBAAmB;IAC9B,MAAM,KAAK,CAAE,mBAAmB;IAEhC,KAAK,KAAK,CAAE,mBAAmB;IAC/B,SAAS,KAAK,CAAE,mBAAmB;IACnC,MAAM,MAAM,CAAE,mBAAmB;IACjC,UAAU,MAAM,CAAE,mBAAmB;IAErC,WAAW,KAAK,CAAE,mBAAmB;IACrC,YAAY,KAAK;CACpB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 数据读取函数
|
|
3
|
+
* `yield` 返回需要的字节数,`return` 返回解析结果
|
|
4
|
+
*/
|
|
5
|
+
export type DecodeFuncAe<T = unknown> = Generator<number, T, void>;
|
|
6
|
+
/** 数据包装 */
|
|
7
|
+
export interface DecodeCursorAe {
|
|
8
|
+
/** 当前数据块 */
|
|
9
|
+
readonly view: DataView;
|
|
10
|
+
/** 当前数据块 */
|
|
11
|
+
readonly data: Uint8Array;
|
|
12
|
+
/** 当前数据大小 */
|
|
13
|
+
readonly size: number;
|
|
14
|
+
/** 当前读指针位置 */
|
|
15
|
+
offset: number;
|
|
16
|
+
}
|
|
17
|
+
/** 创建数据包装 */
|
|
18
|
+
export declare function DecodeCursor(data: BinaryData): DecodeCursorAe;
|
|
19
|
+
/**
|
|
20
|
+
* 读取第一个非 NOOP 的字节
|
|
21
|
+
*/
|
|
22
|
+
export declare function readMarker(cursor: DecodeCursorAe): DecodeFuncAe<number>;
|
|
23
|
+
/** 读取一个大于 0 的整数 */
|
|
24
|
+
export declare function readLength(cursor: DecodeCursorAe): DecodeFuncAe<number>;
|
|
25
|
+
/** readInt8Data */
|
|
26
|
+
export declare function readInt8Data(cursor: DecodeCursorAe): DecodeFuncAe<number>;
|
|
27
|
+
/** readUint8Data */
|
|
28
|
+
export declare function readUint8Data(cursor: DecodeCursorAe): DecodeFuncAe<number>;
|
|
29
|
+
/** readInt16Data */
|
|
30
|
+
export declare function readInt16Data(cursor: DecodeCursorAe): DecodeFuncAe<number>;
|
|
31
|
+
/** readInt32Data */
|
|
32
|
+
export declare function readInt32Data(cursor: DecodeCursorAe): DecodeFuncAe<number>;
|
|
33
|
+
/** readInt64Data */
|
|
34
|
+
export declare function readInt64Data(cursor: DecodeCursorAe): DecodeFuncAe<bigint>;
|
|
35
|
+
/** readFloat32Data */
|
|
36
|
+
export declare function readFloat32Data(cursor: DecodeCursorAe): DecodeFuncAe<number>;
|
|
37
|
+
/** readFloat64Data */
|
|
38
|
+
export declare function readFloat64Data(cursor: DecodeCursorAe): DecodeFuncAe<number>;
|
|
39
|
+
/** 读取数据 */
|
|
40
|
+
export declare function read(cursor: DecodeCursorAe): DecodeFuncAe<unknown>;
|
|
41
|
+
/** 根据标签读取后续数据 */
|
|
42
|
+
export declare function readData(cursor: DecodeCursorAe, marker: number): DecodeFuncAe<unknown>;
|
|
43
|
+
/** readKey */
|
|
44
|
+
export declare function readKey(cursor: DecodeCursorAe): DecodeFuncAe<string>;
|
|
45
|
+
/** Optimized Format 数据 */
|
|
46
|
+
export type OptimizedFormatMarkers = {
|
|
47
|
+
type?: number;
|
|
48
|
+
count: number;
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=decode-ae.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decode-ae.d.ts","sourceRoot":"","sources":["../../src/helper/decode-ae.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,OAAO,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAEnE,WAAW;AACX,MAAM,WAAW,cAAc;IAC3B,YAAY;IACZ,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,YAAY;IACZ,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,aAAa;IACb,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,cAAc;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,aAAa;AACb,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,CAS7D;AAED;;GAEG;AACH,wBAAiB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CASxE;AAED,mBAAmB;AACnB,wBAAiB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAwCxE;AAED,mBAAmB;AACnB,wBAAiB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAK1E;AACD,oBAAoB;AACpB,wBAAiB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAK3E;AACD,oBAAoB;AACpB,wBAAiB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAO3E;AACD,oBAAoB;AACpB,wBAAiB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAO3E;AACD,oBAAoB;AACpB,wBAAiB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAO3E;AACD,sBAAsB;AACtB,wBAAiB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAO7E;AACD,sBAAsB;AACtB,wBAAiB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAO7E;AAED,WAAW;AACX,wBAAiB,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CAAC,OAAO,CAAC,CASnE;AAiBD,iBAAiB;AACjB,wBAAiB,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAiYvF;AAED,cAAc;AACd,wBAAiB,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CA+CrE;AAED,0BAA0B;AAC1B,MAAM,MAAM,sBAAsB,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC"}
|