@cloudpss/ubjson 0.5.10 → 0.5.12

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.
Files changed (48) hide show
  1. package/benchmark-small.js +81 -0
  2. package/dist/common/decoder.d.ts +8 -1
  3. package/dist/common/decoder.js +29 -15
  4. package/dist/common/decoder.js.map +1 -1
  5. package/dist/common/encoder.d.ts +1 -3
  6. package/dist/common/encoder.js +33 -11
  7. package/dist/common/encoder.js.map +1 -1
  8. package/dist/decoder.d.ts +1 -1
  9. package/dist/decoder.js.map +1 -1
  10. package/dist/encoder.d.ts +9 -1
  11. package/dist/encoder.js +41 -20
  12. package/dist/encoder.js.map +1 -1
  13. package/dist/index.d.ts +3 -1
  14. package/dist/index.js +4 -5
  15. package/dist/index.js.map +1 -1
  16. package/dist/rxjs/decoder.js +5 -2
  17. package/dist/rxjs/decoder.js.map +1 -1
  18. package/dist/rxjs/encoder.js +5 -4
  19. package/dist/rxjs/encoder.js.map +1 -1
  20. package/dist/stream/encoder.d.ts +3 -0
  21. package/dist/stream/encoder.js +8 -2
  22. package/dist/stream/encoder.js.map +1 -1
  23. package/dist/stream-helper/encoder.d.ts +10 -2
  24. package/dist/stream-helper/encoder.js +50 -24
  25. package/dist/stream-helper/encoder.js.map +1 -1
  26. package/dist/utils.d.ts +1 -1
  27. package/dist/utils.js +1 -4
  28. package/dist/utils.js.map +1 -1
  29. package/package.json +6 -15
  30. package/src/common/decoder.ts +36 -19
  31. package/src/common/encoder.ts +32 -10
  32. package/src/decoder.ts +1 -1
  33. package/src/encoder.ts +44 -21
  34. package/src/index.ts +7 -6
  35. package/src/rxjs/decoder.ts +6 -2
  36. package/src/rxjs/encoder.ts +5 -4
  37. package/src/stream/encoder.ts +10 -2
  38. package/src/stream-helper/encoder.ts +48 -26
  39. package/src/utils.ts +1 -4
  40. package/tests/decode.js +29 -9
  41. package/tests/e2e.js +3 -0
  42. package/tests/encode.js +173 -2
  43. package/tests/huge-string.js +3 -0
  44. package/tests/rxjs/decode.js +10 -8
  45. package/tests/rxjs/encode.js +6 -2
  46. package/tests/stream/decode.js +25 -8
  47. package/tests/stream/encode.js +13 -2
  48. package/tests/string-encoding.js +2 -2
@@ -0,0 +1,81 @@
1
+ import { load } from '@cloudpss/yaml';
2
+ import { encode, decode } from './dist/index.js';
3
+ import { encode as encodeAsync } from './dist/stream/index.js';
4
+ import { encode as oldEncode, decode as oldDecode } from 'ref-impl';
5
+ import { encode as oldEncodeAsync } from 'ref-impl/stream';
6
+ import lodash from 'lodash';
7
+
8
+ const LOOP = 100000;
9
+ const WARM_UP = 10000;
10
+
11
+ const t = (/** @type {number} */ time) => (time * 1_000_000).toFixed(2).padStart(6) + 'ns';
12
+
13
+ /* eslint-disable no-console */
14
+ const obj = decode(
15
+ encode(
16
+ load(`
17
+ verb: create
18
+ type: plot
19
+ key: plot-0
20
+ version: 1
21
+ data: {title: 三台电机转速wr, traces: [{name: '#wr1:0', type: scatter, x: !!js/Float64Array +anx0k1iUD8AqvHSTWJgP/B+arx0k2g/8Knx0k1icD9oFK5H4Xp0P+B+arx0k3g/WOkmMQisfD/sqfHSTWKAPzzfT42XboI/jBSuR+F6hD8=, 'y': !!js/Float64Array AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8=}, {name: '#wr2:0', type: scatter, x: !!js/Float64Array +anx0k1iUD8AqvHSTWJgP/B+arx0k2g/8Knx0k1icD9oFK5H4Xp0P+B+arx0k3g/WOkmMQisfD/sqfHSTWKAPzzfT42XboI/jBSuR+F6hD8=, 'y': !!js/Float64Array AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8=}, {name: '#wr3:0', type: scatter, x: !!js/Float64Array +anx0k1iUD8AqvHSTWJgP/B+arx0k2g/8Knx0k1icD9oFK5H4Xp0P+B+arx0k3g/WOkmMQisfD/sqfHSTWKAPzzfT42XboI/jBSuR+F6hD8=, 'y': !!js/Float64Array AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8=}]}
22
+ `),
23
+ ),
24
+ );
25
+
26
+ const impl = [
27
+ ['REF', oldEncode, oldDecode, oldEncodeAsync],
28
+ ['CURRENT', encode, decode, encodeAsync],
29
+ ];
30
+
31
+ async function run() {
32
+ let encodeTime = {};
33
+ let encodeAsyncTime = {};
34
+ let decodeTime = {};
35
+ let obj2 = {};
36
+ for (const [name] of impl) {
37
+ encodeTime[name] = 0;
38
+ encodeAsyncTime[name] = 0;
39
+ decodeTime[name] = 0;
40
+ }
41
+ for (let i = 0; i < WARM_UP; i++) {
42
+ for (const [, encode, decode, encodeAsync] of impl) {
43
+ const encoded = encode(obj);
44
+ for await (const _piece of encodeAsync(obj)) {
45
+ continue;
46
+ }
47
+ decode(encoded);
48
+ }
49
+ }
50
+ for (let i = 0; i < LOOP; i++) {
51
+ for (const [name, encode, decode, encodeAsync] of impl) {
52
+ let start = performance.now();
53
+ const encoded = encode(obj);
54
+ encodeTime[name] += performance.now() - start;
55
+
56
+ start = performance.now();
57
+ for await (const _piece of encodeAsync(obj)) {
58
+ continue;
59
+ }
60
+ encodeAsyncTime[name] += performance.now() - start;
61
+
62
+ start = performance.now();
63
+ obj2[name] = decode(encoded);
64
+ decodeTime[name] += performance.now() - start;
65
+ }
66
+ }
67
+ for (const [name] of impl) {
68
+ console.assert(lodash.isEqual(obj, obj2[name]));
69
+ }
70
+ for (const [name] of impl) {
71
+ console.log(
72
+ `${name}\tencode: ${t(encodeTime[name] / LOOP)}\tencode stream: ${t(
73
+ encodeAsyncTime[name] / LOOP,
74
+ )}\tdecode: ${t(decodeTime[name] / LOOP)}`,
75
+ );
76
+ }
77
+ }
78
+
79
+ await run();
80
+
81
+ console.log('');
@@ -1,10 +1,17 @@
1
+ /** decoder options */
2
+ export interface DecoderOptions {
3
+ /** 对 {@link Uint8Array} 使用 subarray */
4
+ noAllocBuffer?: boolean;
5
+ }
1
6
  /** decoder */
2
7
  export declare class Decoder {
3
8
  protected readonly view: DataView;
4
9
  protected readonly data: Uint8Array;
5
10
  /** 当前读指针位置 */
6
11
  protected offset: number;
7
- constructor(data: BinaryData);
12
+ /** 选项 */
13
+ protected readonly noAllocBuffer: boolean;
14
+ constructor(data: BinaryData, options?: DecoderOptions);
8
15
  /** EOF */
9
16
  protected eof(): never;
10
17
  /** 解码 */
@@ -7,9 +7,17 @@ export class Decoder {
7
7
  data;
8
8
  /** 当前读指针位置 */
9
9
  offset = 0;
10
- constructor(data) {
11
- this.data = toUint8Array(data, true);
10
+ /** 选项 */
11
+ noAllocBuffer;
12
+ constructor(data, options) {
13
+ this.data = toUint8Array(data);
12
14
  this.view = new DataView(this.data.buffer, this.data.byteOffset, this.data.byteLength);
15
+ if (options) {
16
+ this.noAllocBuffer = !!options.noAllocBuffer;
17
+ }
18
+ else {
19
+ this.noAllocBuffer = false;
20
+ }
13
21
  }
14
22
  /** EOF */
15
23
  eof() {
@@ -93,9 +101,9 @@ export class Decoder {
93
101
  switch (type) {
94
102
  case 85 /* constants.UINT8 */:
95
103
  try {
96
- const buf = new Uint8Array(this.data.buffer, this.data.byteOffset + this.offset, count).slice();
104
+ const buf = new Uint8Array(this.data.buffer, this.data.byteOffset + this.offset, count);
97
105
  this.offset += count;
98
- return buf;
106
+ return this.noAllocBuffer ? buf : buf.slice();
99
107
  }
100
108
  catch {
101
109
  return this.eof();
@@ -142,8 +150,7 @@ export class Decoder {
142
150
  for (let i = 0; i < count; i++) {
143
151
  result[i] = this.readInt64Data();
144
152
  }
145
- throw new Error('Unsupported type int64');
146
- //return result;
153
+ return result;
147
154
  }
148
155
  case 90 /* constants.NULL */:
149
156
  return Array.from({ length: count }).fill(null);
@@ -181,8 +188,13 @@ export class Decoder {
181
188
  return true;
182
189
  case 70 /* constants.FALSE */:
183
190
  return false;
184
- case 76 /* constants.INT64 */:
185
- return this.readInt64Data();
191
+ case 76 /* constants.INT64 */: {
192
+ const n = this.readInt64Data();
193
+ if (n < Number.MIN_SAFE_INTEGER || n > Number.MAX_SAFE_INTEGER) {
194
+ return n;
195
+ }
196
+ return Number(n);
197
+ }
186
198
  case 72 /* constants.HIGH_PRECISION_NUMBER */: {
187
199
  const length = this.readIntLength();
188
200
  try {
@@ -201,8 +213,6 @@ export class Decoder {
201
213
  /** 读取一个大于 0 的整数 */
202
214
  readIntLength() {
203
215
  const marker = this.readMarker();
204
- if (marker === undefined)
205
- this.eof();
206
216
  let length;
207
217
  switch (marker) {
208
218
  case 105 /* constants.INT8 */:
@@ -217,9 +227,14 @@ export class Decoder {
217
227
  case 108 /* constants.INT32 */:
218
228
  length = this.readInt32Data();
219
229
  break;
220
- case 76 /* constants.INT64 */:
221
- length = this.readInt64Data();
230
+ case 76 /* constants.INT64 */: {
231
+ const l = this.readInt64Data();
232
+ if (l < 0 || l > Number.MAX_SAFE_INTEGER) {
233
+ throw new Error('Invalid length');
234
+ }
235
+ length = Number(l);
222
236
  break;
237
+ }
223
238
  default:
224
239
  throw new Error(`Unexpected marker '${String.fromCharCode(marker)}'(${marker}) for int length`);
225
240
  }
@@ -280,14 +295,13 @@ export class Decoder {
280
295
  /** readInt64Data */
281
296
  readInt64Data() {
282
297
  try {
283
- const _result = this.view.getBigInt64(this.offset);
298
+ const result = this.view.getBigInt64(this.offset);
284
299
  this.offset += 8;
285
- // return result;
300
+ return result;
286
301
  }
287
302
  catch {
288
303
  this.eof();
289
304
  }
290
- throw new Error('Unsupported type int64');
291
305
  }
292
306
  /** readFloat32Data */
293
307
  readFloat32Data() {
@@ -1 +1 @@
1
- {"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src/common/decoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src/common/decoder.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  /** 编码至 ubjson */
2
2
  export declare abstract class EncoderBase {
3
- readonly value: unknown;
4
3
  protected readonly stringByteLength: (v: string) => number;
5
4
  protected readonly encodeInto: ((v: string, buf: Uint8Array, offset: number) => number) | undefined;
6
5
  /** 当前写指针位置 */
@@ -9,13 +8,12 @@ export declare abstract class EncoderBase {
9
8
  protected buffer: Uint8Array;
10
9
  /** buffer 的 DataView */
11
10
  protected view: DataView;
12
- constructor(value: unknown);
13
11
  /**
14
12
  * 确保 buffer 还有 capacity 的空闲空间
15
13
  */
16
14
  protected abstract ensureCapacity(capacity: number): void;
17
15
  /** 编码至 ubjson */
18
- protected writeValue(): void;
16
+ protected writeValue(value: unknown): void;
19
17
  /** 写入一个对象 */
20
18
  private write;
21
19
  /** writeStringData */
@@ -1,7 +1,6 @@
1
1
  import { getStringByteLength, getEncodeInto } from './string-encoder.js';
2
2
  /** 编码至 ubjson */
3
3
  export class EncoderBase {
4
- value;
5
4
  stringByteLength = getStringByteLength();
6
5
  encodeInto = getEncodeInto();
7
6
  /** 当前写指针位置 */
@@ -10,17 +9,14 @@ export class EncoderBase {
10
9
  buffer;
11
10
  /** buffer 的 DataView */
12
11
  view;
13
- constructor(value) {
14
- this.value = value;
15
- }
16
12
  /** 编码至 ubjson */
17
- writeValue() {
18
- if (this.value === undefined) {
13
+ writeValue(value) {
14
+ if (value === undefined) {
19
15
  this.ensureCapacity(1);
20
16
  this.buffer[this.length++] = 78 /* constants.NO_OP */;
21
17
  return;
22
18
  }
23
- this.write(this.value);
19
+ this.write(value);
24
20
  }
25
21
  /** 写入一个对象 */
26
22
  write(value) {
@@ -102,9 +98,9 @@ export class EncoderBase {
102
98
  this.buffer[this.length++] = 93 /* constants.ARRAY_END */;
103
99
  }
104
100
  else if (!ArrayBuffer.isView(value)) {
105
- const toJSON = typeof value['toJSON'] == 'function';
106
- if (toJSON) {
107
- this.write(value.toJSON());
101
+ const { toJSON } = value;
102
+ if (typeof toJSON == 'function') {
103
+ this.write(toJSON.call(value));
108
104
  return;
109
105
  }
110
106
  this.ensureCapacity(1);
@@ -137,7 +133,8 @@ export class EncoderBase {
137
133
  this.length += value.byteLength;
138
134
  return;
139
135
  }
140
- const arrayLength = value.length;
136
+ const arrayLength = value
137
+ .length;
141
138
  const elementSize = value
142
139
  .BYTES_PER_ELEMENT;
143
140
  if (value instanceof Int16Array) {
@@ -176,6 +173,15 @@ export class EncoderBase {
176
173
  this.length += elementSize;
177
174
  }
178
175
  }
176
+ else if (value instanceof BigInt64Array) {
177
+ this.buffer[this.length++] = 76 /* constants.INT64 */;
178
+ this.buffer[this.length++] = 35 /* constants.COUNT_MARKER */;
179
+ this.setLength(arrayLength);
180
+ for (let i = 0; i < arrayLength; i++) {
181
+ this.view.setBigInt64(this.length, value[i]);
182
+ this.length += elementSize;
183
+ }
184
+ }
179
185
  else {
180
186
  throw new TypeError(`Unsupported typed array type ${Object.prototype.toString.call(value)}`);
181
187
  }
@@ -186,6 +192,22 @@ export class EncoderBase {
186
192
  this.ensureCapacity(1);
187
193
  this.buffer[this.length++] = value ? 84 /* constants.TRUE */ : 70 /* constants.FALSE */;
188
194
  return;
195
+ case 'bigint':
196
+ // int32 range
197
+ if (value >= -2147483648n && value <= 2147483647n) {
198
+ this.write(Number(value));
199
+ }
200
+ // int64 range
201
+ else if (value >= -9223372036854775808n && value <= 9223372036854775807n) {
202
+ this.ensureCapacity(9);
203
+ this.buffer[this.length++] = 76 /* constants.INT64 */;
204
+ this.view.setBigInt64(this.length, value);
205
+ this.length += 8;
206
+ }
207
+ else {
208
+ throw new RangeError(`BigInt value out of range: ${value}`);
209
+ }
210
+ return;
189
211
  default:
190
212
  throw new Error(`Unsupported type ${Object.prototype.toString.call(value)}`);
191
213
  }
@@ -1 +1 @@
1
- {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../src/common/encoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../src/common/encoder.ts"],"names":[],"mappings":"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"}
package/dist/decoder.d.ts CHANGED
@@ -1 +1 @@
1
- export { Decoder } from './common/decoder.js';
1
+ export { Decoder, type DecoderOptions } from './common/decoder.js';
@@ -1 +1 @@
1
- {"version":3,"file":"decoder.js","sourceRoot":"","sources":["../src/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"decoder.js","sourceRoot":"","sources":["../src/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAuB,MAAM,qBAAqB,CAAC"}
package/dist/encoder.d.ts CHANGED
@@ -2,10 +2,18 @@ import { EncoderBase } from './common/encoder.js';
2
2
  /** 编码至 ubjson */
3
3
  export declare class Encoder extends EncoderBase {
4
4
  private readonly flushedBuffers;
5
+ /** 通过内存池减少分配 */
6
+ private readonly pool;
5
7
  /**
6
8
  * 确保 buffer 还有 capacity 的空闲空间
7
9
  */
8
10
  protected ensureCapacity(capacity: number): void;
11
+ /** 分配 buffer */
12
+ private allocUnsafe;
9
13
  /** 获取写入结果 */
10
- encode(): Uint8Array;
14
+ encode(value: unknown): Uint8Array;
11
15
  }
16
+ /** 获取默认的编码器 */
17
+ export declare function getEncoder(): Encoder;
18
+ /** 重置编码器, For testing only */
19
+ export declare function resetEncoder(): void;
package/dist/encoder.js CHANGED
@@ -1,9 +1,11 @@
1
1
  import { EncoderBase } from './common/encoder.js';
2
- const BLOCK_SIZE = 1024 * 16; // 8 KiB
2
+ const BLOCK_SIZE = 1024 * 16; // 16 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
+ /** 通过内存池减少分配 */
8
+ pool = new Uint8Array(BLOCK_SIZE);
7
9
  /**
8
10
  * 确保 buffer 还有 capacity 的空闲空间
9
11
  */
@@ -12,40 +14,47 @@ export class Encoder extends EncoderBase {
12
14
  // 超过最大尺寸限制
13
15
  throw new Error('Buffer has exceed max size');
14
16
  }
15
- if (this.buffer == null) {
16
- this.buffer = new Uint8Array(capacity);
17
- this.view = new DataView(this.buffer.buffer);
18
- return;
19
- }
20
17
  // 无需扩容
21
18
  if (this.buffer.byteLength >= this.length + capacity)
22
19
  return;
23
20
  // 提交目前的数据
24
- this.flushedBuffers.push(this.buffer.subarray(0, this.length));
21
+ if (this.buffer === this.pool) {
22
+ this.flushedBuffers.push(this.buffer.slice(0, this.length));
23
+ }
24
+ else {
25
+ this.flushedBuffers.push(this.buffer.subarray(0, this.length));
26
+ }
25
27
  // 重新分配缓冲区
26
28
  if (capacity < BLOCK_SIZE)
27
29
  capacity = BLOCK_SIZE;
28
- this.buffer = new Uint8Array(capacity);
30
+ this.allocUnsafe(capacity);
31
+ }
32
+ /** 分配 buffer */
33
+ allocUnsafe(size) {
34
+ if (size === this.pool.byteLength) {
35
+ // 从 pool 中获取
36
+ this.buffer = this.pool;
37
+ this.view = new DataView(this.buffer.buffer);
38
+ this.length = 0;
39
+ return;
40
+ }
41
+ this.buffer = new Uint8Array(size);
29
42
  this.view = new DataView(this.buffer.buffer);
30
43
  this.length = 0;
31
44
  }
32
45
  /** 获取写入结果 */
33
- encode() {
34
- this.ensureCapacity(BLOCK_SIZE);
35
- this.writeValue();
46
+ encode(value) {
47
+ this.allocUnsafe(BLOCK_SIZE);
48
+ this.writeValue(value);
36
49
  if (this.flushedBuffers.length === 0) {
37
- if (this.buffer.byteLength === this.length) {
38
- // 无需再拷贝一次
39
- return this.buffer;
40
- }
41
- else {
42
- return this.buffer.slice(0, this.length);
43
- }
50
+ return this.buffer.slice(0, this.length);
44
51
  }
45
52
  // 合并缓冲区
46
- const result = new Uint8Array(this.length + this.flushedBuffers.reduce((sum, buffer) => sum + buffer.byteLength, 0));
53
+ const flushedBuffers = this.flushedBuffers.splice(0);
54
+ const size = flushedBuffers.reduce((sum, buffer) => sum + buffer.byteLength, this.length);
55
+ const result = new Uint8Array(size);
47
56
  let offset = 0;
48
- for (const buffer of this.flushedBuffers) {
57
+ for (const buffer of flushedBuffers) {
49
58
  result.set(buffer, offset);
50
59
  offset += buffer.byteLength;
51
60
  }
@@ -53,4 +62,16 @@ export class Encoder extends EncoderBase {
53
62
  return result;
54
63
  }
55
64
  }
65
+ let _ENCODER;
66
+ /** 获取默认的编码器 */
67
+ export function getEncoder() {
68
+ if (_ENCODER == null) {
69
+ _ENCODER = new Encoder();
70
+ }
71
+ return _ENCODER;
72
+ }
73
+ /** 重置编码器, For testing only */
74
+ export function resetEncoder() {
75
+ _ENCODER = undefined;
76
+ }
56
77
  //# sourceMappingURL=encoder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../src/encoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,QAAQ;AACtC,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,SAAS;AAE7C,iBAAiB;AACjB,MAAM,OAAO,OAAQ,SAAQ,WAAW;IACnB,cAAc,GAAiB,EAAE,CAAC;IACnD;;OAEG;IACO,cAAc,CAAC,QAAgB;QACrC,IAAI,QAAQ,GAAG,QAAQ,EAAE,CAAC;YACtB,WAAW;YACX,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC7C,OAAO;QACX,CAAC;QACD,OAAO;QACP,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ;YAAE,OAAO;QAE7D,UAAU;QACV,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAE/D,UAAU;QACV,IAAI,QAAQ,GAAG,UAAU;YAAE,QAAQ,GAAG,UAAU,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,aAAa;IACb,MAAM;QACF,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;gBACzC,UAAU;gBACV,OAAO,IAAI,CAAC,MAAM,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACJ,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7C,CAAC;QACL,CAAC;QAED,QAAQ;QACR,MAAM,MAAM,GAAG,IAAI,UAAU,CACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CACxF,CAAC;QACF,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACvC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC3B,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC;QAChC,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QACzD,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ"}
1
+ {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../src/encoder.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
+ import { type DecoderOptions } from './decoder.js';
1
2
  export { UnexpectedEof } from './utils.js';
3
+ export type { DecoderOptions };
2
4
  /** 编码为 UBJSON */
3
5
  export declare function encode(value: unknown): Uint8Array;
4
6
  /** 解码 UBJSON */
5
- export declare function decode(value: BinaryData): unknown;
7
+ export declare function decode(value: BinaryData, options?: DecoderOptions): unknown;
package/dist/index.js CHANGED
@@ -1,14 +1,13 @@
1
- import { Encoder } from './encoder.js';
1
+ import { getEncoder } from './encoder.js';
2
2
  import { Decoder } from './decoder.js';
3
3
  export { UnexpectedEof } from './utils.js';
4
4
  /** 编码为 UBJSON */
5
5
  export function encode(value) {
6
- const encoder = new Encoder(value);
7
- return encoder.encode();
6
+ return getEncoder().encode(value);
8
7
  }
9
8
  /** 解码 UBJSON */
10
- export function decode(value) {
11
- const decoder = new Decoder(value);
9
+ export function decode(value, options) {
10
+ const decoder = new Decoder(value, options);
12
11
  return decoder.decode();
13
12
  }
14
13
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,iBAAiB;AACjB,MAAM,UAAU,MAAM,CAAC,KAAc;IACjC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;AAC5B,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,MAAM,CAAC,KAAiB;IACpC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAuB,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAI3C,iBAAiB;AACjB,MAAM,UAAU,MAAM,CAAC,KAAc;IACjC,OAAO,UAAU,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,MAAM,CAAC,KAAiB,EAAE,OAAwB;IAC9D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;AAC5B,CAAC"}
@@ -13,14 +13,17 @@ export function decode() {
13
13
  let end = 0;
14
14
  return observable.subscribe({
15
15
  next(value) {
16
- const data = toUint8Array(value, false);
16
+ const data = toUint8Array(value);
17
17
  if (buffer.length >= end + data.length) {
18
18
  buffer.set(data, end);
19
19
  end += data.length;
20
20
  }
21
21
  else {
22
22
  chunkSize = Math.max(chunkSize, data.length * 2 + end - begin);
23
- const newBuffer = new Uint8Array(Math.max(chunkSize, data.length + end - begin));
23
+ const allocSize = Math.max(chunkSize, data.length + end - begin);
24
+ const newBuffer = allocSize > buffer.byteLength
25
+ ? new Uint8Array(Math.max(chunkSize, data.length + end - begin))
26
+ : buffer;
24
27
  newBuffer.set(buffer.subarray(begin, end), 0);
25
28
  newBuffer.set(data, end - begin);
26
29
  buffer = newBuffer;
@@ -1 +1 @@
1
- {"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src/rxjs/decoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src/rxjs/decoder.ts"],"names":[],"mappings":"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"}