@cloudpss/ubjson 0.5.12 → 0.5.14

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.
@@ -4,7 +4,7 @@ export interface DecoderOptions {
4
4
  noAllocBuffer?: boolean;
5
5
  }
6
6
  /** decoder */
7
- export declare class Decoder {
7
+ export declare class DecoderBase {
8
8
  protected readonly view: DataView;
9
9
  protected readonly data: Uint8Array;
10
10
  /** 当前读指针位置 */
@@ -2,7 +2,7 @@ import { UnexpectedEof, toUint8Array } from '../utils.js';
2
2
  import { decode, decodeKey } from './string-decoder.js';
3
3
  const fromEntries = Object.fromEntries;
4
4
  /** decoder */
5
- export class Decoder {
5
+ export class DecoderBase {
6
6
  view;
7
7
  data;
8
8
  /** 当前读指针位置 */
@@ -78,10 +78,7 @@ export class Decoder {
78
78
  object.length = count;
79
79
  for (let i = 0; i < count; i++) {
80
80
  const key = this.readKey();
81
- const t = type ?? this.readMarker();
82
- if (t === undefined)
83
- this.eof();
84
- const value = this.readData(t);
81
+ const value = this.readData(type ?? this.readMarker());
85
82
  object[i] = [key, value];
86
83
  }
87
84
  return fromEntries(object);
@@ -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":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAQvC,cAAc;AACd,MAAM,OAAO,WAAW;IACD,IAAI,CAAW;IACf,IAAI,CAAa;IACpC,cAAc;IACJ,MAAM,GAAG,CAAC,CAAC;IAErB,SAAS;IACU,aAAa,CAAC;IACjC,YAAY,IAAgB,EAAE,OAAwB;QAClD,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvF,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;QACjD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC/B,CAAC;IACL,CAAC;IAED,UAAU;IACA,GAAG;QACT,MAAM,IAAI,aAAa,EAAE,CAAC;IAC9B,CAAC;IAED,SAAS;IACT,MAAM;QACF,IAAI,MAAM,2BAAkB,CAAC;QAC7B,GAAG,CAAC;YACA,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACtC,CAAC,QAAQ,MAAM,6BAAoB,EAAE,CAAC,UAAU;QAChD,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC3C,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,WAAW;IACH,IAAI;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,wBAAwB;IAChB,UAAU;QACd,IAAI,MAAM,2BAAkB,CAAC;QAC7B,GAAG,CAAC;YACA,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACtC,CAAC,QAAQ,MAAM,6BAAoB,EAAE;QACrC,IAAI,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,WAAW;IACH,QAAQ,CAAC,MAAc;QAC3B,WAAW;QACX,QAAQ,MAAM,EAAE,CAAC;YACb,8BAAqB,CAAC,CAAC,CAAC;gBACpB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBACpC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC1B,MAAM,GAAG,GAAG,KAAK,GAAG,MAAM,CAAC;gBAC3B,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;gBAClB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACvB,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM;oBAAE,IAAI,CAAC,GAAG,EAAE,CAAC;gBAClC,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YACpC,CAAC;YACD,+BAAqB,CAAC,CAAC,CAAC;gBACpB,MAAM,OAAO,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAClD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;oBAClB,SAAS;oBACT,MAAM,MAAM,GAA6B,EAAE,CAAC;oBAC5C,OAAO,IAAI,CAAC,UAAU,EAAE,mCAAyB,EAAE,CAAC;wBAChD,IAAI,CAAC,MAAM,EAAE,CAAC;wBACd,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC/C,CAAC;oBACD,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC/B,CAAC;gBAED,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;gBAChC,MAAM,MAAM,GAA6B,EAAE,CAAC;gBAC5C,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;gBACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;oBACvD,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC7B,CAAC;gBACD,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;YACD,6BAAoB,CAAC,CAAC,CAAC;gBACnB,MAAM,OAAO,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAClD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;oBAClB,MAAM,KAAK,GAAG,EAAE,CAAC;oBACjB,SAAS;oBACT,OAAO,IAAI,CAAC,UAAU,EAAE,iCAAwB,EAAE,CAAC;wBAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;wBACd,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC5B,CAAC;oBACD,OAAO,KAAK,CAAC;gBACjB,CAAC;gBAED,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;gBAChC,QAAQ,IAAI,EAAE,CAAC;oBACX;wBACI,IAAI,CAAC;4BACD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;4BACxF,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;4BACrB,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;wBAClD,CAAC;wBAAC,MAAM,CAAC;4BACL,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;wBACtB,CAAC;oBACL;wBACI,IAAI,CAAC;4BACD,MAAM,GAAG,GAAG,IAAI,SAAS,CACrB,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,EAClC,KAAK,CACR,CAAC,KAAK,EAAE,CAAC;4BACV,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;4BACrB,OAAO,GAAG,CAAC;wBACf,CAAC;wBAAC,MAAM,CAAC;4BACL,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;wBACtB,CAAC;oBACL,6BAAoB,CAAC,CAAC,CAAC;wBACnB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;wBACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;4BAC7B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;wBACrC,CAAC;wBACD,OAAO,MAAM,CAAC;oBAClB,CAAC;oBACD,8BAAoB,CAAC,CAAC,CAAC;wBACnB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;wBACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;4BAC7B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;wBACrC,CAAC;wBACD,OAAO,MAAM,CAAC;oBAClB,CAAC;oBACD,gCAAsB,CAAC,CAAC,CAAC;wBACrB,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;wBACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;4BAC7B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;wBACvC,CAAC;wBACD,OAAO,MAAM,CAAC;oBAClB,CAAC;oBACD,+BAAsB,CAAC,CAAC,CAAC;wBACrB,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;wBACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;4BAC7B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;wBACvC,CAAC;wBACD,OAAO,MAAM,CAAC;oBAClB,CAAC;oBACD,6BAAoB,CAAC,CAAC,CAAC;wBACnB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;wBACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;4BAC7B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;wBACrC,CAAC;wBACD,OAAO,MAAM,CAAC;oBAClB,CAAC;oBACD;wBACI,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpD;wBACI,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpD;wBACI,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACrD;wBACI,MAAM;gBACd,CAAC;gBACD,MAAM,KAAK,GAAc,EAAE,CAAC;gBAC5B,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;gBACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC7B,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAChE,CAAC;gBACD,OAAO,KAAK,CAAC;YACjB,CAAC;YACD;gBACI,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;YAClC;gBACI,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;YAChC;gBACI,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;YAChC;gBACI,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;YAClC;gBACI,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YACrD;gBACI,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;YAChC;gBACI,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;YAC/B;gBACI,OAAO,IAAI,CAAC;YAChB;gBACI,OAAO,IAAI,CAAC;YAChB;gBACI,OAAO,KAAK,CAAC;YACjB,6BAAoB,CAAC,CAAC,CAAC;gBACnB,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC/B,IAAI,CAAC,GAAG,MAAM,CAAC,gBAAgB,IAAI,CAAC,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;oBAC7D,OAAO,CAAC,CAAC;gBACb,CAAC;gBACD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC;YACD,6CAAoC,CAAC,CAAC,CAAC;gBACnC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBACpC,IAAI,CAAC;oBACD,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;oBAC9E,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;oBACtB,iBAAiB;gBACrB,CAAC;gBAAC,MAAM,CAAC;oBACL,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;gBACtB,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC9D,CAAC;QACL,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC;IACrF,CAAC;IAED,mBAAmB;IACX,aAAa;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,IAAI,MAAM,CAAC;QACX,QAAQ,MAAM,EAAE,CAAC;YACb;gBACI,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC7B,MAAM;YACV;gBACI,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC9B,MAAM;YACV;gBACI,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC9B,MAAM;YACV;gBACI,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC9B,MAAM;YACV,6BAAoB,CAAC,CAAC,CAAC;gBACnB,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC/B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;oBACvC,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBACtC,CAAC;gBACD,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACnB,MAAM;YACV,CAAC;YACD;gBACI,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,MAAM,kBAAkB,CAAC,CAAC;QACxG,CAAC;QACD,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,cAAc;IACN,OAAO;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,MAAM,GAAG,GAAG,KAAK,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IACD,mBAAmB;IACX,YAAY;QAChB,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACL,IAAI,CAAC,GAAG,EAAE,CAAC;QACf,CAAC;IACL,CAAC;IACD,oBAAoB;IACZ,aAAa;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrC,IAAI,GAAG,KAAK,SAAS;YAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC;IACf,CAAC;IACD,oBAAoB;IACZ,aAAa;QACjB,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YACjB,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACL,IAAI,CAAC,GAAG,EAAE,CAAC;QACf,CAAC;IACL,CAAC;IACD,oBAAoB;IACZ,aAAa;QACjB,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YACjB,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACL,IAAI,CAAC,GAAG,EAAE,CAAC;QACf,CAAC;IACL,CAAC;IACD,oBAAoB;IACZ,aAAa;QACjB,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YACjB,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACL,IAAI,CAAC,GAAG,EAAE,CAAC;QACf,CAAC;IACL,CAAC;IACD,sBAAsB;IACd,eAAe;QACnB,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YACjB,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACL,IAAI,CAAC,GAAG,EAAE,CAAC;QACf,CAAC;IACL,CAAC;IACD,sBAAsB;IACd,eAAe;QACnB,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YACjB,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACL,IAAI,CAAC,GAAG,EAAE,CAAC;QACf,CAAC;IACL,CAAC;IAED,6BAA6B;IACrB,0BAA0B;QAC9B,IAAI,IAAI,CAAC;QACT,IAAI,KAAK,CAAC;QACV,QAAQ,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACxB;gBACI,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,UAAU,EAAE,oCAA2B,EAAE,CAAC;oBAC/C,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBAC7C,CAAC;YACL,kBAAkB;YAClB;gBACI,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC7B,MAAM;YACV;gBACI,kBAAkB;gBAClB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,OAAO,SAAS,CAAC;QACzB,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC3B,CAAC;CACJ"}
package/dist/decoder.d.ts CHANGED
@@ -1 +1,7 @@
1
- export { Decoder, type DecoderOptions } from './common/decoder.js';
1
+ import { DecoderBase } from './common/decoder.js';
2
+ export type { DecoderOptions } from './common/decoder.js';
3
+ /** 解码 UBJSON */
4
+ export declare class Decoder extends DecoderBase {
5
+ /** 读取完毕 */
6
+ get ended(): boolean;
7
+ }
package/dist/decoder.js CHANGED
@@ -1,2 +1,9 @@
1
- export { Decoder } from './common/decoder.js';
1
+ import { DecoderBase } from './common/decoder.js';
2
+ /** 解码 UBJSON */
3
+ export class Decoder extends DecoderBase {
4
+ /** 读取完毕 */
5
+ get ended() {
6
+ return this.offset >= this.data.byteLength;
7
+ }
8
+ }
2
9
  //# sourceMappingURL=decoder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decoder.js","sourceRoot":"","sources":["../src/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAuB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"decoder.js","sourceRoot":"","sources":["../src/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,gBAAgB;AAChB,MAAM,OAAO,OAAQ,SAAQ,WAAW;IACpC,WAAW;IACX,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IAC/C,CAAC;CACJ"}
package/dist/encoder.d.ts CHANGED
@@ -10,8 +10,14 @@ export declare class Encoder extends EncoderBase {
10
10
  protected ensureCapacity(capacity: number): void;
11
11
  /** 分配 buffer */
12
12
  private allocUnsafe;
13
+ /** 获取结果 */
14
+ private getResult;
15
+ /** 抛弃结果 */
16
+ private cleanResult;
13
17
  /** 获取写入结果 */
14
18
  encode(value: unknown): Uint8Array;
19
+ /** 获取写入结果 */
20
+ encodeMany(value: Iterable<unknown>): Uint8Array;
15
21
  }
16
22
  /** 获取默认的编码器 */
17
23
  export declare function getEncoder(): Encoder;
package/dist/encoder.js CHANGED
@@ -42,11 +42,10 @@ export class Encoder extends EncoderBase {
42
42
  this.view = new DataView(this.buffer.buffer);
43
43
  this.length = 0;
44
44
  }
45
- /** 获取写入结果 */
46
- encode(value) {
47
- this.allocUnsafe(BLOCK_SIZE);
48
- this.writeValue(value);
45
+ /** 获取结果 */
46
+ getResult() {
49
47
  if (this.flushedBuffers.length === 0) {
48
+ // 缓冲区为空,复制当前 buffer
50
49
  return this.buffer.slice(0, this.length);
51
50
  }
52
51
  // 合并缓冲区
@@ -61,6 +60,36 @@ export class Encoder extends EncoderBase {
61
60
  result.set(this.buffer.subarray(0, this.length), offset);
62
61
  return result;
63
62
  }
63
+ /** 抛弃结果 */
64
+ cleanResult() {
65
+ this.flushedBuffers.splice(0);
66
+ }
67
+ /** 获取写入结果 */
68
+ encode(value) {
69
+ try {
70
+ this.allocUnsafe(BLOCK_SIZE);
71
+ this.writeValue(value);
72
+ return this.getResult();
73
+ }
74
+ catch (e) {
75
+ this.cleanResult();
76
+ throw e;
77
+ }
78
+ }
79
+ /** 获取写入结果 */
80
+ encodeMany(value) {
81
+ try {
82
+ this.allocUnsafe(BLOCK_SIZE);
83
+ for (const v of value) {
84
+ this.writeValue(v);
85
+ }
86
+ return this.getResult();
87
+ }
88
+ catch (e) {
89
+ this.cleanResult();
90
+ throw e;
91
+ }
92
+ }
64
93
  }
65
94
  let _ENCODER;
66
95
  /** 获取默认的编码器 */
@@ -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,SAAS;AACvC,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,gBAAgB;IACC,IAAI,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,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,OAAO;QACP,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ;YAAE,OAAO;QAE7D,UAAU;QACV,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACnE,CAAC;QAED,UAAU;QACV,IAAI,QAAQ,GAAG,UAAU;YAAE,QAAQ,GAAG,UAAU,CAAC;QACjD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,gBAAgB;IACR,WAAW,CAAC,IAAY;QAC5B,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,aAAa;YACb,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAChB,OAAO;QACX,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACnC,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,CAAC,KAAc;QACjB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;QAED,QAAQ;QACR,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YAClC,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;AAED,IAAI,QAA6B,CAAC;AAElC,eAAe;AACf,MAAM,UAAU,UAAU;IACtB,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QACnB,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,8BAA8B;AAC9B,MAAM,UAAU,YAAY;IACxB,QAAQ,GAAG,SAAS,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../src/encoder.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,5 +3,9 @@ export { UnexpectedEof } from './utils.js';
3
3
  export type { DecoderOptions };
4
4
  /** 编码为 UBJSON */
5
5
  export declare function encode(value: unknown): Uint8Array;
6
+ /** 编码为 UBJSON */
7
+ export declare function encodeMany(value: Iterable<unknown>): Uint8Array;
6
8
  /** 解码 UBJSON */
7
9
  export declare function decode(value: BinaryData, options?: DecoderOptions): unknown;
10
+ /** 解码 UBJSON */
11
+ export declare function decodeMany(value: BinaryData, options?: DecoderOptions): Iterable<unknown>;
package/dist/index.js CHANGED
@@ -5,9 +5,20 @@ export { UnexpectedEof } from './utils.js';
5
5
  export function encode(value) {
6
6
  return getEncoder().encode(value);
7
7
  }
8
+ /** 编码为 UBJSON */
9
+ export function encodeMany(value) {
10
+ return getEncoder().encodeMany(value);
11
+ }
8
12
  /** 解码 UBJSON */
9
13
  export function decode(value, options) {
10
14
  const decoder = new Decoder(value, options);
11
15
  return decoder.decode();
12
16
  }
17
+ /** 解码 UBJSON */
18
+ export function* decodeMany(value, options) {
19
+ const decoder = new Decoder(value, options);
20
+ while (!decoder.ended) {
21
+ yield decoder.decode();
22
+ }
23
+ }
13
24
  //# 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,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"}
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,iBAAiB;AACjB,MAAM,UAAU,UAAU,CAAC,KAAwB;IAC/C,OAAO,UAAU,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1C,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;AAED,gBAAgB;AAChB,MAAM,SAAS,CAAC,CAAC,UAAU,CAAC,KAAiB,EAAE,OAAwB;IACnE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;AACL,CAAC"}
@@ -5,8 +5,12 @@ export { UnexpectedEof } from '../utils.js';
5
5
  /** 编码为 UBJSON */
6
6
  export declare function encode(value: unknown): Readable;
7
7
  /** 编码为 UBJSON */
8
+ export declare function encodeMany(value: AsyncIterable<unknown>): Readable;
9
+ /** 编码为 UBJSON */
8
10
  export declare function encoder(): Transform;
9
11
  /** 解码 UBJSON */
10
12
  export declare function decode(stream: NodeJS.ReadableStream): Promise<unknown>;
11
13
  /** 解码 UBJSON */
14
+ export declare function decodeMany(stream: NodeJS.ReadableStream): AsyncIterable<unknown>;
15
+ /** 解码 UBJSON */
12
16
  export declare function decoder(): Transform;
@@ -13,6 +13,25 @@ export function encode(value) {
13
13
  return encoder;
14
14
  }
15
15
  /** 编码为 UBJSON */
16
+ export function encodeMany(value) {
17
+ const encoder = new StreamEncoder();
18
+ void (async () => {
19
+ try {
20
+ for await (const v of value) {
21
+ if (v == null)
22
+ encoder.write(undefined);
23
+ else
24
+ encoder.write(v);
25
+ }
26
+ encoder.end();
27
+ }
28
+ catch (ex) {
29
+ encoder.destroy(ex);
30
+ }
31
+ })();
32
+ return encoder;
33
+ }
34
+ /** 编码为 UBJSON */
16
35
  export function encoder() {
17
36
  return new StreamEncoder();
18
37
  }
@@ -27,6 +46,11 @@ export function decode(stream) {
27
46
  });
28
47
  }
29
48
  /** 解码 UBJSON */
49
+ export function decodeMany(stream) {
50
+ const decoder = new StreamDecoder();
51
+ return stream.pipe(decoder);
52
+ }
53
+ /** 解码 UBJSON */
30
54
  export function decoder() {
31
55
  return new StreamDecoder();
32
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stream/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,iBAAiB;AACjB,MAAM,UAAU,MAAM,CAAC,KAAc;IACjC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAChB,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;IACpC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,iBAAiB;AACjB,MAAM,UAAU,OAAO;IACnB,OAAO,IAAI,aAAa,EAAE,CAAC;AAC/B,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,MAAM,CAAC,MAA6B;IAChD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;QACpC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,OAAO;IACnB,OAAO,IAAI,aAAa,EAAE,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stream/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,iBAAiB;AACjB,MAAM,UAAU,MAAM,CAAC,KAAc;IACjC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAChB,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;IACpC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,OAAO,CAAC;AACnB,CAAC;AACD,iBAAiB;AACjB,MAAM,UAAU,UAAU,CAAC,KAA6B;IACpD,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;IACpC,KAAK,CAAC,KAAK,IAAI,EAAE;QACb,IAAI,CAAC;YACD,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,IAAI;oBAAE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;;oBACnC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAClB,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACV,OAAO,CAAC,OAAO,CAAC,EAAW,CAAC,CAAC;QACjC,CAAC;IACL,CAAC,CAAC,EAAE,CAAC;IACL,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,iBAAiB;AACjB,MAAM,UAAU,OAAO;IACnB,OAAO,IAAI,aAAa,EAAE,CAAC;AAC/B,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,MAAM,CAAC,MAA6B;IAChD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;QACpC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,UAAU,CAAC,MAA6B;IACpD,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;IACpC,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,OAAO;IACnB,OAAO,IAAI,aAAa,EAAE,CAAC;AAC/B,CAAC"}
@@ -1,8 +1,8 @@
1
- import { Decoder } from '../common/decoder.js';
1
+ import { DecoderBase } from '../common/decoder.js';
2
2
  /** 未结束的流 */
3
3
  export declare const kEof: unique symbol;
4
4
  /** 流式解码 UBJSON */
5
- export declare class StreamDecoderHelper extends Decoder {
5
+ export declare class StreamDecoderHelper extends DecoderBase {
6
6
  constructor(data: Uint8Array);
7
7
  /** @inheritdoc */
8
8
  protected eof(): never;
@@ -1,8 +1,8 @@
1
- import { Decoder } from '../common/decoder.js';
1
+ import { DecoderBase } from '../common/decoder.js';
2
2
  /** 未结束的流 */
3
3
  export const kEof = Symbol('EOF');
4
4
  /** 流式解码 UBJSON */
5
- export class StreamDecoderHelper extends Decoder {
5
+ export class StreamDecoderHelper extends DecoderBase {
6
6
  constructor(data) {
7
7
  super(data);
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src/stream-helper/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,YAAY;AACZ,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAElC,kBAAkB;AAClB,MAAM,OAAO,mBAAoB,SAAQ,OAAO;IAC5C,YAAY,IAAgB;QACxB,KAAK,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,kBAAkB;IACC,GAAG;QAClB,wBAAwB;QACxB,+DAA+D;QAC/D,MAAM,IAAI,CAAC;IACf,CAAC;IAED,aAAa;IACb,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;CACJ;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src/stream-helper/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,YAAY;AACZ,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAElC,kBAAkB;AAClB,MAAM,OAAO,mBAAoB,SAAQ,WAAW;IAChD,YAAY,IAAgB;QACxB,KAAK,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,kBAAkB;IACC,GAAG;QAClB,wBAAwB;QACxB,+DAA+D;QAC/D,MAAM,IAAI,CAAC;IACf,CAAC;IAED,aAAa;IACb,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;CACJ;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudpss/ubjson",
3
- "version": "0.5.12",
3
+ "version": "0.5.14",
4
4
  "author": "CloudPSS",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -11,7 +11,7 @@ export interface DecoderOptions {
11
11
  }
12
12
 
13
13
  /** decoder */
14
- export class Decoder {
14
+ export class DecoderBase {
15
15
  protected readonly view: DataView;
16
16
  protected readonly data: Uint8Array;
17
17
  /** 当前读指针位置 */
@@ -90,9 +90,7 @@ export class Decoder {
90
90
  object.length = count;
91
91
  for (let i = 0; i < count; i++) {
92
92
  const key = this.readKey();
93
- const t = type ?? this.readMarker();
94
- if (t === undefined) this.eof();
95
- const value = this.readData(t);
93
+ const value = this.readData(type ?? this.readMarker());
96
94
  object[i] = [key, value];
97
95
  }
98
96
  return fromEntries(object);
package/src/decoder.ts CHANGED
@@ -1 +1,10 @@
1
- export { Decoder, type DecoderOptions } from './common/decoder.js';
1
+ import { DecoderBase } from './common/decoder.js';
2
+ export type { DecoderOptions } from './common/decoder.js';
3
+
4
+ /** 解码 UBJSON */
5
+ export class Decoder extends DecoderBase {
6
+ /** 读取完毕 */
7
+ get ended(): boolean {
8
+ return this.offset >= this.data.byteLength;
9
+ }
10
+ }
package/src/encoder.ts CHANGED
@@ -45,11 +45,10 @@ export class Encoder extends EncoderBase {
45
45
  this.length = 0;
46
46
  }
47
47
 
48
- /** 获取写入结果 */
49
- encode(value: unknown): Uint8Array {
50
- this.allocUnsafe(BLOCK_SIZE);
51
- this.writeValue(value);
48
+ /** 获取结果 */
49
+ private getResult(): Uint8Array {
52
50
  if (this.flushedBuffers.length === 0) {
51
+ // 缓冲区为空,复制当前 buffer
53
52
  return this.buffer.slice(0, this.length);
54
53
  }
55
54
 
@@ -65,6 +64,37 @@ export class Encoder extends EncoderBase {
65
64
  result.set(this.buffer.subarray(0, this.length), offset);
66
65
  return result;
67
66
  }
67
+
68
+ /** 抛弃结果 */
69
+ private cleanResult(): void {
70
+ this.flushedBuffers.splice(0);
71
+ }
72
+
73
+ /** 获取写入结果 */
74
+ encode(value: unknown): Uint8Array {
75
+ try {
76
+ this.allocUnsafe(BLOCK_SIZE);
77
+ this.writeValue(value);
78
+ return this.getResult();
79
+ } catch (e) {
80
+ this.cleanResult();
81
+ throw e;
82
+ }
83
+ }
84
+
85
+ /** 获取写入结果 */
86
+ encodeMany(value: Iterable<unknown>): Uint8Array {
87
+ try {
88
+ this.allocUnsafe(BLOCK_SIZE);
89
+ for (const v of value) {
90
+ this.writeValue(v);
91
+ }
92
+ return this.getResult();
93
+ } catch (e) {
94
+ this.cleanResult();
95
+ throw e;
96
+ }
97
+ }
68
98
  }
69
99
 
70
100
  let _ENCODER: Encoder | undefined;
package/src/index.ts CHANGED
@@ -9,8 +9,21 @@ export function encode(value: unknown): Uint8Array {
9
9
  return getEncoder().encode(value);
10
10
  }
11
11
 
12
+ /** 编码为 UBJSON */
13
+ export function encodeMany(value: Iterable<unknown>): Uint8Array {
14
+ return getEncoder().encodeMany(value);
15
+ }
16
+
12
17
  /** 解码 UBJSON */
13
18
  export function decode(value: BinaryData, options?: DecoderOptions): unknown {
14
19
  const decoder = new Decoder(value, options);
15
20
  return decoder.decode();
16
21
  }
22
+
23
+ /** 解码 UBJSON */
24
+ export function* decodeMany(value: BinaryData, options?: DecoderOptions): Iterable<unknown> {
25
+ const decoder = new Decoder(value, options);
26
+ while (!decoder.ended) {
27
+ yield decoder.decode();
28
+ }
29
+ }
@@ -14,6 +14,22 @@ export function encode(value: unknown): Readable {
14
14
  encoder.end();
15
15
  return encoder;
16
16
  }
17
+ /** 编码为 UBJSON */
18
+ export function encodeMany(value: AsyncIterable<unknown>): Readable {
19
+ const encoder = new StreamEncoder();
20
+ void (async () => {
21
+ try {
22
+ for await (const v of value) {
23
+ if (v == null) encoder.write(undefined);
24
+ else encoder.write(v);
25
+ }
26
+ encoder.end();
27
+ } catch (ex) {
28
+ encoder.destroy(ex as Error);
29
+ }
30
+ })();
31
+ return encoder;
32
+ }
17
33
 
18
34
  /** 编码为 UBJSON */
19
35
  export function encoder(): Transform {
@@ -31,6 +47,12 @@ export function decode(stream: NodeJS.ReadableStream): Promise<unknown> {
31
47
  });
32
48
  }
33
49
 
50
+ /** 解码 UBJSON */
51
+ export function decodeMany(stream: NodeJS.ReadableStream): AsyncIterable<unknown> {
52
+ const decoder = new StreamDecoder();
53
+ return stream.pipe(decoder);
54
+ }
55
+
34
56
  /** 解码 UBJSON */
35
57
  export function decoder(): Transform {
36
58
  return new StreamDecoder();
@@ -1,10 +1,10 @@
1
- import { Decoder } from '../common/decoder.js';
1
+ import { DecoderBase } from '../common/decoder.js';
2
2
 
3
3
  /** 未结束的流 */
4
4
  export const kEof = Symbol('EOF');
5
5
 
6
6
  /** 流式解码 UBJSON */
7
- export class StreamDecoderHelper extends Decoder {
7
+ export class StreamDecoderHelper extends DecoderBase {
8
8
  constructor(data: Uint8Array) {
9
9
  super(data);
10
10
  }
package/tests/decode.js CHANGED
@@ -512,3 +512,13 @@ test('decode object (empty key, optimized)', () => {
512
512
  b: null,
513
513
  });
514
514
  });
515
+
516
+ test('decode (eof at marker)', () => {
517
+ expect(() => decode(toBuffer('i'))).toThrow(UnexpectedEof);
518
+ expect(() => decode(toBuffer('{'))).toThrow(UnexpectedEof);
519
+ expect(() => decode(toBuffer('{', 'i', 1, 'a'))).toThrow(UnexpectedEof);
520
+ });
521
+
522
+ test('decode (eof at key)', () => {
523
+ expect(() => decode(toBuffer('{', 'i', 2, 'a'))).toThrow(UnexpectedEof);
524
+ });
package/tests/many.js ADDED
@@ -0,0 +1,44 @@
1
+ import { encodeMany, decodeMany } from '../dist/index.js';
2
+
3
+ test('encode/decode many', () => {
4
+ const data = [
5
+ {
6
+ a: 1,
7
+ b: 2,
8
+ c: 3,
9
+ d: 4,
10
+ e: 5,
11
+ },
12
+ 1,
13
+ null,
14
+ 'x',
15
+ true,
16
+ [1, 2, 3],
17
+ Uint8Array.of(3, 3, 1),
18
+ ];
19
+ const encoded = encodeMany(data);
20
+ const decoded = [...decodeMany(encoded)];
21
+ expect(decoded).toEqual(data);
22
+ });
23
+
24
+ test('encode/decode many with error', () => {
25
+ expect(() =>
26
+ encodeMany(
27
+ (function* () {
28
+ yield 1;
29
+ throw new Error('xx');
30
+ })(),
31
+ ),
32
+ ).toThrow('xx');
33
+ });
34
+
35
+ test('encode/decode many with invalid value', () => {
36
+ expect(() => encodeMany([1, () => 1])).toThrow();
37
+ });
38
+
39
+ test('encode/decode many with undefined', () => {
40
+ const data = [1, null, undefined, [undefined]];
41
+ const encoded = encodeMany(data);
42
+ const decoded = [...decodeMany(encoded)];
43
+ expect(decoded).toEqual([1, null, [null]]);
44
+ });
@@ -0,0 +1,100 @@
1
+ import { Readable } from 'node:stream';
2
+ import { encodeMany, decodeMany } from '../../dist/stream/index.js';
3
+ import { buffer } from 'node:stream/consumers';
4
+ import { finished } from 'node:stream/promises';
5
+
6
+ /**
7
+ * iterableToAsyncIterable
8
+ * @template T
9
+ * @param {Iterable<T>} iterable - iterable
10
+ * @returns {AsyncIterable<T>} async iterable
11
+ */
12
+ function iterableToAsyncIterable(iterable) {
13
+ return {
14
+ [Symbol.asyncIterator]: () => {
15
+ const iterator = iterable[Symbol.iterator]();
16
+ return {
17
+ next: () => Promise.resolve(iterator.next()),
18
+ };
19
+ },
20
+ };
21
+ }
22
+
23
+ /**
24
+ * asyncIterableToArray
25
+ * @template T
26
+ * @param {AsyncIterable<T>} asyncIterable - async iterable
27
+ * @returns {Promise<Array<T>>} array
28
+ */
29
+ async function asyncIterableToArray(asyncIterable) {
30
+ const array = [];
31
+ for await (const item of asyncIterable) {
32
+ array.push(item);
33
+ }
34
+ return array;
35
+ }
36
+
37
+ test('encode/decode many', async () => {
38
+ const data = [
39
+ {
40
+ a: 1,
41
+ b: 2,
42
+ c: 3,
43
+ d: 4,
44
+ e: 5,
45
+ },
46
+ 1,
47
+ null,
48
+ 'x',
49
+ true,
50
+ [1, 2, 3],
51
+ Uint8Array.of(3, 3, 1),
52
+ ];
53
+ const encoded = await buffer(encodeMany(iterableToAsyncIterable(data)));
54
+ const decoded = await asyncIterableToArray(decodeMany(Readable.from([encoded])));
55
+ expect(decoded).toEqual([
56
+ {
57
+ a: 1,
58
+ b: 2,
59
+ c: 3,
60
+ d: 4,
61
+ e: 5,
62
+ },
63
+ 1,
64
+ // null is not allowed in stream
65
+ 'x',
66
+ true,
67
+ [1, 2, 3],
68
+ Uint8Array.of(3, 3, 1),
69
+ ]);
70
+ });
71
+
72
+ test('encode/decode many with invalid value', async () => {
73
+ await expect(async () => await finished(encodeMany(iterableToAsyncIterable([1, () => 1])))).rejects.toThrow();
74
+ });
75
+
76
+ test('encode/decode many with error', async () => {
77
+ await expect(
78
+ async () =>
79
+ await finished(
80
+ encodeMany(
81
+ (async function* () {
82
+ yield 1;
83
+ await Promise.resolve();
84
+ throw new Error('xx');
85
+ })(),
86
+ ),
87
+ ),
88
+ ).rejects.toThrow('xx');
89
+ });
90
+
91
+ test('encode/decode many with undefined', async () => {
92
+ const data = [1, null, undefined, [undefined]];
93
+ const encoded = await buffer(encodeMany(iterableToAsyncIterable(data)));
94
+ const decoded = await asyncIterableToArray(decodeMany(Readable.from([encoded])));
95
+ expect(decoded).toEqual([
96
+ 1,
97
+ // null is not allowed in stream
98
+ [null],
99
+ ]);
100
+ });