@cloudpss/ubjson 0.4.33 → 0.4.34

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.
@@ -14,12 +14,14 @@ export declare abstract class EncoderBase {
14
14
  * 确保 buffer 还有 capacity 的空闲空间
15
15
  */
16
16
  protected abstract ensureCapacity(capacity: number): void;
17
+ /** 编码至 ubjson */
18
+ protected writeValue(): void;
17
19
  /** 写入一个对象 */
18
- protected write(value: unknown): void;
20
+ private write;
19
21
  /** writeStringData */
20
- protected writeStringData(value: string): void;
22
+ private writeStringData;
21
23
  /**
22
24
  * 写入整形数字,选取合适的大小,需提前分配空间
23
25
  */
24
- protected setLength(value: number): number;
26
+ private setLength;
25
27
  }
@@ -8,6 +8,15 @@ export class EncoderBase {
8
8
  /** 当前写指针位置 */
9
9
  this.length = 0;
10
10
  }
11
+ /** 编码至 ubjson */
12
+ writeValue() {
13
+ if (this.value === undefined) {
14
+ this.ensureCapacity(1);
15
+ this.buffer[this.length++] = 78 /* constants.NO_OP */;
16
+ return;
17
+ }
18
+ this.write(this.value);
19
+ }
11
20
  /** 写入一个对象 */
12
21
  write(value) {
13
22
  switch (typeof value) {
@@ -72,26 +81,36 @@ export class EncoderBase {
72
81
  else if (Array.isArray(value)) {
73
82
  this.ensureCapacity(1);
74
83
  this.buffer[this.length++] = 91 /* constants.ARRAY */;
75
- for (const v of value) {
76
- // 在数组中 undefined 也被视作 null 进行序列化
77
- if (v == null) {
84
+ const size = value.length;
85
+ for (let index = 0; index < size; index++) {
86
+ const element = value[index];
87
+ // 在数组中 undefined 和 function 也被视作 null 进行序列化
88
+ if (element == null || typeof element == 'function') {
78
89
  this.ensureCapacity(1);
79
90
  this.buffer[this.length++] = 90 /* constants.NULL */;
80
91
  }
81
92
  else {
82
- this.write(v);
93
+ this.write(element);
83
94
  }
84
95
  }
85
96
  this.ensureCapacity(1);
86
97
  this.buffer[this.length++] = 93 /* constants.ARRAY_END */;
87
98
  }
88
99
  else if (!ArrayBuffer.isView(value)) {
100
+ const toJSON = typeof value['toJSON'] == 'function';
101
+ if (toJSON) {
102
+ this.write(value.toJSON());
103
+ return;
104
+ }
89
105
  this.ensureCapacity(1);
90
106
  this.buffer[this.length++] = 123 /* constants.OBJECT */;
91
107
  // 生成稳定的结果以便 hash 计算
92
- for (const key of Object.keys(value).sort()) {
108
+ const keys = Object.keys(value).sort();
109
+ const size = keys.length;
110
+ for (let index = 0; index < size; index++) {
111
+ const key = keys[index];
93
112
  const element = value[key];
94
- if (element === undefined)
113
+ if (element === undefined || typeof element == 'function')
95
114
  continue;
96
115
  this.writeStringData(key);
97
116
  this.write(element);
@@ -113,44 +132,51 @@ export class EncoderBase {
113
132
  this.length += value.byteLength;
114
133
  return;
115
134
  }
116
- /** 用于写入的 setter */
117
- let setValue;
135
+ const arrayLength = value.length;
136
+ const elementSize = value
137
+ .BYTES_PER_ELEMENT;
118
138
  if (value instanceof Int16Array) {
119
139
  this.buffer[this.length++] = 73 /* constants.INT16 */;
120
- /* eslint-disable-next-line @typescript-eslint/unbound-method */
121
- setValue = this.view.setInt16;
140
+ this.buffer[this.length++] = 35 /* constants.COUNT_MARKER */;
141
+ this.setLength(arrayLength);
142
+ for (let i = 0; i < arrayLength; i++) {
143
+ this.view.setInt16(this.length, value[i]);
144
+ this.length += elementSize;
145
+ }
122
146
  }
123
147
  else if (value instanceof Int32Array) {
124
148
  this.buffer[this.length++] = 108 /* constants.INT32 */;
125
- /* eslint-disable-next-line @typescript-eslint/unbound-method */
126
- setValue = this.view.setInt32;
149
+ this.buffer[this.length++] = 35 /* constants.COUNT_MARKER */;
150
+ this.setLength(arrayLength);
151
+ for (let i = 0; i < arrayLength; i++) {
152
+ this.view.setInt32(this.length, value[i]);
153
+ this.length += elementSize;
154
+ }
127
155
  }
128
156
  else if (value instanceof Float32Array) {
129
157
  this.buffer[this.length++] = 100 /* constants.FLOAT32 */;
130
- /* eslint-disable-next-line @typescript-eslint/unbound-method */
131
- setValue = this.view.setFloat32;
158
+ this.buffer[this.length++] = 35 /* constants.COUNT_MARKER */;
159
+ this.setLength(arrayLength);
160
+ for (let i = 0; i < arrayLength; i++) {
161
+ this.view.setFloat32(this.length, value[i]);
162
+ this.length += elementSize;
163
+ }
132
164
  }
133
165
  else if (value instanceof Float64Array) {
134
166
  this.buffer[this.length++] = 68 /* constants.FLOAT64 */;
135
- /* eslint-disable-next-line @typescript-eslint/unbound-method */
136
- setValue = this.view.setFloat64;
167
+ this.buffer[this.length++] = 35 /* constants.COUNT_MARKER */;
168
+ this.setLength(arrayLength);
169
+ for (let i = 0; i < arrayLength; i++) {
170
+ this.view.setFloat64(this.length, value[i]);
171
+ this.length += elementSize;
172
+ }
137
173
  }
138
174
  else {
139
175
  throw new TypeError(`Unsupported typed array type ${Object.prototype.toString.call(value)}`);
140
176
  }
141
- this.buffer[this.length++] = 35 /* constants.COUNT_MARKER */;
142
- this.setLength(value.length);
143
- for (const v of value) {
144
- setValue.call(this.view, this.length, v);
145
- this.length += value.BYTES_PER_ELEMENT;
146
- }
147
177
  }
148
178
  return;
149
179
  }
150
- case 'undefined':
151
- this.ensureCapacity(1);
152
- this.buffer[this.length++] = 78 /* constants.NO_OP */;
153
- return;
154
180
  case 'boolean':
155
181
  this.ensureCapacity(1);
156
182
  this.buffer[this.length++] = value ? 84 /* constants.TRUE */ : 70 /* constants.FALSE */;
@@ -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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"}
@@ -42,8 +42,12 @@ function getCharCodeByteLength(string) {
42
42
  }
43
43
  return byteLength;
44
44
  }
45
- export const getStringByteLength = () => typeof Buffer?.byteLength == 'function' ? (v) => Buffer.byteLength(v, 'utf8') : getCharCodeByteLength;
45
+ export const getStringByteLength = () => typeof Buffer == 'function' && typeof Buffer.byteLength == 'function'
46
+ ? (v) => Buffer.byteLength(v, 'utf8')
47
+ : getCharCodeByteLength;
46
48
  /* c8 ignore next 1 */
47
49
  const encoder = typeof TextEncoder == 'function' ? new TextEncoder() : undefined;
48
- export const getEncodeInto = () => encoder?.encodeInto ? (v, buf, offset) => encoder.encodeInto(v, buf.subarray(offset)).written : undefined;
50
+ export const getEncodeInto = () => typeof encoder?.encodeInto == 'function'
51
+ ? (v, buf, offset) => encoder.encodeInto(v, buf.subarray(offset)).written
52
+ : undefined;
49
53
  //# sourceMappingURL=string-encoder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"string-encoder.js","sourceRoot":"","sources":["../../src/common/string-encoder.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,gCAAgC;AAChC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,yBAAyB;AACzB,MAAM,wBAAwB,GAAG,KAAK,CAAC;AACvC,gCAAgC;AAChC,6BAA6B;AAC7B,yEAAyE;AACzE,uCAAuC;AACvC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AACnC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AACnC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,cAAc;AACd,SAAS,qBAAqB,CAAC,MAAc;IACzC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACjC,IAAI,UAAU,GAAG,UAAU,CAAC;IAE5B,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,UAAU,EAAE,SAAS,IAAI,CAAC,EAAE;QAC5D,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAE/C,IAAI,SAAS,IAAI,oBAAoB,EAAE;YACnC,SAAS;SACZ;QAED,IAAI,SAAS,IAAI,wBAAwB,EAAE;YACvC,UAAU,IAAI,CAAC,CAAC;YAChB,SAAS;SACZ;QAED,UAAU,IAAI,CAAC,CAAC;QAEhB,IAAI,SAAS,GAAG,oBAAoB,IAAI,SAAS,GAAG,mBAAmB,EAAE;YACrE,SAAS;SACZ;QAED,iEAAiE;QACjE,iBAAiB;QACjB,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QAEvD,wDAAwD;QACxD,0EAA0E;QAC1E,0EAA0E;QAC1E,UAAU;QACV,IAAI,aAAa,GAAG,mBAAmB,IAAI,aAAa,GAAG,kBAAkB,EAAE;YAC3E,SAAS;SACZ;QAED,SAAS,IAAI,CAAC,CAAC;KAClB;IAED,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAA4B,EAAE,CAC7D,OAAO,MAAM,EAAE,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;AAE1G,sBAAsB;AACtB,MAAM,OAAO,GAAG,OAAO,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAyE,EAAE,CACpG,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC"}
1
+ {"version":3,"file":"string-encoder.js","sourceRoot":"","sources":["../../src/common/string-encoder.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,gCAAgC;AAChC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,yBAAyB;AACzB,MAAM,wBAAwB,GAAG,KAAK,CAAC;AACvC,gCAAgC;AAChC,6BAA6B;AAC7B,yEAAyE;AACzE,uCAAuC;AACvC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AACnC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AACnC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,cAAc;AACd,SAAS,qBAAqB,CAAC,MAAc;IACzC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACjC,IAAI,UAAU,GAAG,UAAU,CAAC;IAE5B,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,UAAU,EAAE,SAAS,IAAI,CAAC,EAAE;QAC5D,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAE/C,IAAI,SAAS,IAAI,oBAAoB,EAAE;YACnC,SAAS;SACZ;QAED,IAAI,SAAS,IAAI,wBAAwB,EAAE;YACvC,UAAU,IAAI,CAAC,CAAC;YAChB,SAAS;SACZ;QAED,UAAU,IAAI,CAAC,CAAC;QAEhB,IAAI,SAAS,GAAG,oBAAoB,IAAI,SAAS,GAAG,mBAAmB,EAAE;YACrE,SAAS;SACZ;QAED,iEAAiE;QACjE,iBAAiB;QACjB,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QAEvD,wDAAwD;QACxD,0EAA0E;QAC1E,0EAA0E;QAC1E,UAAU;QACV,IAAI,aAAa,GAAG,mBAAmB,IAAI,aAAa,GAAG,kBAAkB,EAAE;YAC3E,SAAS;SACZ;QAED,SAAS,IAAI,CAAC,CAAC;KAClB;IAED,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAA4B,EAAE,CAC7D,OAAO,MAAM,IAAI,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,IAAI,UAAU;IACjE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC;IACrC,CAAC,CAAC,qBAAqB,CAAC;AAEhC,sBAAsB;AACtB,MAAM,OAAO,GAAG,OAAO,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAyE,EAAE,CACpG,OAAO,OAAO,EAAE,UAAU,IAAI,UAAU;IACpC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;IACzE,CAAC,CAAC,SAAS,CAAC"}
package/dist/encoder.js CHANGED
@@ -35,7 +35,7 @@ export class Encoder extends EncoderBase {
35
35
  /** 获取写入结果 */
36
36
  encode() {
37
37
  this.ensureCapacity(BLOCK_SIZE);
38
- this.write(this.value);
38
+ this.writeValue();
39
39
  if (this.flushedBuffers.length === 0) {
40
40
  if (this.buffer.byteLength === this.length) {
41
41
  // 无需再拷贝一次
@@ -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;IAAxC;;QACqB,mBAAc,GAAiB,EAAE,CAAC;IAoDvD,CAAC;IAnDG;;OAEG;IACO,cAAc,CAAC,QAAgB;QACrC,IAAI,QAAQ,GAAG,QAAQ,EAAE;YACrB,WAAW;YACX,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SACjD;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACrB,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;SACV;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,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;YAClC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,EAAE;gBACxC,UAAU;gBACV,OAAO,IAAI,CAAC,MAAM,CAAC;aACtB;iBAAM;gBACH,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aAC5C;SACJ;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;YACtC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC3B,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC;SAC/B;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":"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;IAAxC;;QACqB,mBAAc,GAAiB,EAAE,CAAC;IAoDvD,CAAC;IAnDG;;OAEG;IACO,cAAc,CAAC,QAAgB;QACrC,IAAI,QAAQ,GAAG,QAAQ,EAAE;YACrB,WAAW;YACX,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SACjD;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACrB,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;SACV;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;YAClC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,EAAE;gBACxC,UAAU;gBACV,OAAO,IAAI,CAAC,MAAM,CAAC;aACtB;iBAAM;gBACH,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aAC5C;SACJ;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;YACtC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC3B,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC;SAC/B;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"}
@@ -44,12 +44,12 @@ export class StreamEncoderHelper extends EncoderBase {
44
44
  encode() {
45
45
  if (typeof this.value != 'object' || this.value == null || ArrayBuffer.isView(this.value)) {
46
46
  this.ensureCapacity(20);
47
- this.write(this.value);
47
+ this.writeValue();
48
48
  this.ensureCapacity(-1);
49
49
  }
50
50
  else {
51
51
  this.ensureCapacity(BLOCK_SIZE);
52
- this.write(this.value);
52
+ this.writeValue();
53
53
  this.ensureCapacity(-1);
54
54
  }
55
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../src/stream-helper/encoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ;AACrC,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,UAAU;AAE9C,kBAAkB;AAClB,MAAM,OAAO,mBAAoB,SAAQ,WAAW;IAChD,YACI,KAAc,EACK,OAAoC;QAEvD,KAAK,CAAC,KAAK,CAAC,CAAC;QAFM,YAAO,GAAP,OAAO,CAA6B;IAG3D,CAAC;IACD;;OAEG;IACO,cAAc,CAAC,QAAgB;QACrC,IAAI,QAAQ,GAAG,QAAQ,EAAE;YACrB,WAAW;YACX,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SACjD;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACrB,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;SACV;QACD,IAAI,QAAQ,GAAG,CAAC,EAAE;YACd,MAAM;YACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAChB,OAAO;SACV;QACD,OAAO;QACP,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ;YAAE,OAAO;QAE7D,UAAU;QACV,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAEnD,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;IACD,aAAa;IACb,MAAM;QACF,IAAI,OAAO,IAAI,CAAC,KAAK,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACvF,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B;aAAM;YACH,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../src/stream-helper/encoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ;AACrC,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,UAAU;AAE9C,kBAAkB;AAClB,MAAM,OAAO,mBAAoB,SAAQ,WAAW;IAChD,YACI,KAAc,EACK,OAAoC;QAEvD,KAAK,CAAC,KAAK,CAAC,CAAC;QAFM,YAAO,GAAP,OAAO,CAA6B;IAG3D,CAAC;IACD;;OAEG;IACO,cAAc,CAAC,QAAgB;QACrC,IAAI,QAAQ,GAAG,QAAQ,EAAE;YACrB,WAAW;YACX,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SACjD;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACrB,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;SACV;QACD,IAAI,QAAQ,GAAG,CAAC,EAAE;YACd,MAAM;YACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAChB,OAAO;SACV;QACD,OAAO;QACP,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ;YAAE,OAAO;QAE7D,UAAU;QACV,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAEnD,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;IACD,aAAa;IACb,MAAM;QACF,IAAI,OAAO,IAAI,CAAC,KAAK,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACvF,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B;aAAM;YACH,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAChC,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B;IACL,CAAC;CACJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudpss/ubjson",
3
- "version": "0.4.33",
3
+ "version": "0.4.34",
4
4
  "author": "CloudPSS",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -17,8 +17,18 @@ export abstract class EncoderBase {
17
17
  * 确保 buffer 还有 capacity 的空闲空间
18
18
  */
19
19
  protected abstract ensureCapacity(capacity: number): void;
20
+
21
+ /** 编码至 ubjson */
22
+ protected writeValue(): void {
23
+ if (this.value === undefined) {
24
+ this.ensureCapacity(1);
25
+ this.buffer[this.length++] = constants.NO_OP;
26
+ return;
27
+ }
28
+ this.write(this.value);
29
+ }
20
30
  /** 写入一个对象 */
21
- protected write(value: unknown): void {
31
+ private write(value: unknown): void {
22
32
  switch (typeof value) {
23
33
  case 'string':
24
34
  if (value.length === 1 && value.charCodeAt(0) < 128) {
@@ -74,24 +84,34 @@ export abstract class EncoderBase {
74
84
  } else if (Array.isArray(value)) {
75
85
  this.ensureCapacity(1);
76
86
  this.buffer[this.length++] = constants.ARRAY;
77
- for (const v of value) {
78
- // 在数组中 undefined 也被视作 null 进行序列化
79
- if (v == null) {
87
+ const size = value.length;
88
+ for (let index = 0; index < size; index++) {
89
+ const element = value[index] as unknown;
90
+ // 在数组中 undefined 和 function 也被视作 null 进行序列化
91
+ if (element == null || typeof element == 'function') {
80
92
  this.ensureCapacity(1);
81
93
  this.buffer[this.length++] = constants.NULL;
82
94
  } else {
83
- this.write(v);
95
+ this.write(element);
84
96
  }
85
97
  }
86
98
  this.ensureCapacity(1);
87
99
  this.buffer[this.length++] = constants.ARRAY_END;
88
100
  } else if (!ArrayBuffer.isView(value)) {
101
+ const toJSON = typeof (value as Record<string, unknown>)['toJSON'] == 'function';
102
+ if (toJSON) {
103
+ this.write((value as { toJSON: () => unknown }).toJSON());
104
+ return;
105
+ }
89
106
  this.ensureCapacity(1);
90
107
  this.buffer[this.length++] = constants.OBJECT;
91
108
  // 生成稳定的结果以便 hash 计算
92
- for (const key of Object.keys(value).sort()) {
109
+ const keys = Object.keys(value).sort();
110
+ const size = keys.length;
111
+ for (let index = 0; index < size; index++) {
112
+ const key = keys[index];
93
113
  const element = (value as Record<string, unknown>)[key];
94
- if (element === undefined) continue;
114
+ if (element === undefined || typeof element == 'function') continue;
95
115
  this.writeStringData(key);
96
116
  this.write(element);
97
117
  }
@@ -111,40 +131,48 @@ export abstract class EncoderBase {
111
131
  this.length += value.byteLength;
112
132
  return;
113
133
  }
114
- /** 用于写入的 setter */
115
- let setValue;
134
+
135
+ const arrayLength = (value as Int16Array | Int32Array | Float32Array | Float64Array).length;
136
+ const elementSize = (value as Int16Array | Int32Array | Float32Array | Float64Array)
137
+ .BYTES_PER_ELEMENT;
116
138
  if (value instanceof Int16Array) {
117
139
  this.buffer[this.length++] = constants.INT16;
118
- /* eslint-disable-next-line @typescript-eslint/unbound-method */
119
- setValue = this.view.setInt16;
140
+ this.buffer[this.length++] = constants.COUNT_MARKER;
141
+ this.setLength(arrayLength);
142
+ for (let i = 0; i < arrayLength; i++) {
143
+ this.view.setInt16(this.length, value[i]);
144
+ this.length += elementSize;
145
+ }
120
146
  } else if (value instanceof Int32Array) {
121
147
  this.buffer[this.length++] = constants.INT32;
122
- /* eslint-disable-next-line @typescript-eslint/unbound-method */
123
- setValue = this.view.setInt32;
148
+ this.buffer[this.length++] = constants.COUNT_MARKER;
149
+ this.setLength(arrayLength);
150
+ for (let i = 0; i < arrayLength; i++) {
151
+ this.view.setInt32(this.length, value[i]);
152
+ this.length += elementSize;
153
+ }
124
154
  } else if (value instanceof Float32Array) {
125
155
  this.buffer[this.length++] = constants.FLOAT32;
126
- /* eslint-disable-next-line @typescript-eslint/unbound-method */
127
- setValue = this.view.setFloat32;
156
+ this.buffer[this.length++] = constants.COUNT_MARKER;
157
+ this.setLength(arrayLength);
158
+ for (let i = 0; i < arrayLength; i++) {
159
+ this.view.setFloat32(this.length, value[i]);
160
+ this.length += elementSize;
161
+ }
128
162
  } else if (value instanceof Float64Array) {
129
163
  this.buffer[this.length++] = constants.FLOAT64;
130
- /* eslint-disable-next-line @typescript-eslint/unbound-method */
131
- setValue = this.view.setFloat64;
164
+ this.buffer[this.length++] = constants.COUNT_MARKER;
165
+ this.setLength(arrayLength);
166
+ for (let i = 0; i < arrayLength; i++) {
167
+ this.view.setFloat64(this.length, value[i]);
168
+ this.length += elementSize;
169
+ }
132
170
  } else {
133
171
  throw new TypeError(`Unsupported typed array type ${Object.prototype.toString.call(value)}`);
134
172
  }
135
- this.buffer[this.length++] = constants.COUNT_MARKER;
136
- this.setLength(value.length);
137
- for (const v of value) {
138
- setValue.call(this.view, this.length, v);
139
- this.length += value.BYTES_PER_ELEMENT;
140
- }
141
173
  }
142
174
  return;
143
175
  }
144
- case 'undefined':
145
- this.ensureCapacity(1);
146
- this.buffer[this.length++] = constants.NO_OP;
147
- return;
148
176
  case 'boolean':
149
177
  this.ensureCapacity(1);
150
178
  this.buffer[this.length++] = value ? constants.TRUE : constants.FALSE;
@@ -155,7 +183,7 @@ export abstract class EncoderBase {
155
183
  }
156
184
 
157
185
  /** writeStringData */
158
- protected writeStringData(value: string): void {
186
+ private writeStringData(value: string): void {
159
187
  const strLength = value.length;
160
188
  const maxUsage =
161
189
  strLength < 65536
@@ -223,7 +251,7 @@ export abstract class EncoderBase {
223
251
  /**
224
252
  * 写入整形数字,选取合适的大小,需提前分配空间
225
253
  */
226
- protected setLength(value: number): number {
254
+ private setLength(value: number): number {
227
255
  // eslint-disable-next-line unicorn/prefer-math-trunc
228
256
  value = value | 0;
229
257
  if ((value & 0x7f) === value) {
@@ -54,9 +54,13 @@ function getCharCodeByteLength(string: string): number {
54
54
  }
55
55
 
56
56
  export const getStringByteLength = (): ((v: string) => number) =>
57
- typeof Buffer?.byteLength == 'function' ? (v) => Buffer.byteLength(v, 'utf8') : getCharCodeByteLength;
57
+ typeof Buffer == 'function' && typeof Buffer.byteLength == 'function'
58
+ ? (v) => Buffer.byteLength(v, 'utf8')
59
+ : getCharCodeByteLength;
58
60
 
59
61
  /* c8 ignore next 1 */
60
62
  const encoder = typeof TextEncoder == 'function' ? new TextEncoder() : undefined;
61
63
  export const getEncodeInto = (): ((v: string, buf: Uint8Array, offset: number) => number) | undefined =>
62
- encoder?.encodeInto ? (v, buf, offset) => encoder.encodeInto(v, buf.subarray(offset)).written : undefined;
64
+ typeof encoder?.encodeInto == 'function'
65
+ ? (v, buf, offset) => encoder.encodeInto(v, buf.subarray(offset)).written
66
+ : undefined;
package/src/encoder.ts CHANGED
@@ -35,7 +35,7 @@ export class Encoder extends EncoderBase {
35
35
  /** 获取写入结果 */
36
36
  encode(): Uint8Array {
37
37
  this.ensureCapacity(BLOCK_SIZE);
38
- this.write(this.value);
38
+ this.writeValue();
39
39
  if (this.flushedBuffers.length === 0) {
40
40
  if (this.buffer.byteLength === this.length) {
41
41
  // 无需再拷贝一次
@@ -48,11 +48,11 @@ export class StreamEncoderHelper extends EncoderBase {
48
48
  encode(): void {
49
49
  if (typeof this.value != 'object' || this.value == null || ArrayBuffer.isView(this.value)) {
50
50
  this.ensureCapacity(20);
51
- this.write(this.value);
51
+ this.writeValue();
52
52
  this.ensureCapacity(-1);
53
53
  } else {
54
54
  this.ensureCapacity(BLOCK_SIZE);
55
- this.write(this.value);
55
+ this.writeValue();
56
56
  this.ensureCapacity(-1);
57
57
  }
58
58
  }
package/tests/encode.js CHANGED
@@ -125,6 +125,10 @@ test('encode array (undefined)', () => {
125
125
  expect(toArray(encode([undefined]))).toEqual(toArray('[', 'Z', ']'));
126
126
  });
127
127
 
128
+ test('encode array (function)', () => {
129
+ expect(toArray(encode([() => 1]))).toEqual(toArray('[', 'Z', ']'));
130
+ });
131
+
128
132
  test('encode array (spares)', () => {
129
133
  const array = Array.from({ length: 3 });
130
134
  array[1] = true;
@@ -326,13 +330,9 @@ test('encode object (skip undefined)', () => {
326
330
  expect(toArray(encode(obj))).toEqual(toArray('{', '}'));
327
331
  });
328
332
 
329
- test('encode object (function) [error]', () => {
330
- const obj = {
331
- a: () => {
332
- // noop
333
- },
334
- };
335
- expect(() => encode(obj)).toThrow(/Unsupported type \[object Function\]/);
333
+ test('encode object (skip function)', () => {
334
+ const obj = { a: 1, b: () => 1 };
335
+ expect(toArray(encode(obj))).toEqual(toArray('{', 'i', 1, 'a', 'U', 1, '}'));
336
336
  });
337
337
 
338
338
  test('encode object (include null)', () => {
@@ -402,3 +402,15 @@ test('encode huge data (256M)', () => {
402
402
  );
403
403
  expect(toArray(encoded.slice(-1))).toEqual(toArray(']'));
404
404
  });
405
+
406
+ test('encode custom toJSON', () => {
407
+ const obj = {
408
+ toJSON: () => ({ a: 1 }),
409
+ };
410
+ expect(toArray(encode(obj))).toEqual(toArray('{', 'i', 1, 'a', 'U', 1, '}'));
411
+ });
412
+
413
+ test('encode Date', () => {
414
+ const obj = new Date(0);
415
+ expect(toArray(encode(obj))).toEqual(toArray('S', 'i', 24, ...'1970-01-01T00:00:00.000Z'));
416
+ });
@@ -329,13 +329,11 @@ test('encode object (skip undefined)', async () => {
329
329
  expect(toArray(await encodeAsync(obj))).toEqual(toArray('{', '}'));
330
330
  });
331
331
 
332
- test('encode object (function) [error]', async () => {
332
+ test('encode object (skip function)', async () => {
333
333
  const obj = {
334
- a: () => {
335
- // noop
336
- },
334
+ a: () => 1,
337
335
  };
338
- await expect(() => encodeAsync(obj)).rejects.toThrow(/Unsupported type \[object Function\]/);
336
+ expect(toArray(await encodeAsync(obj))).toEqual(toArray('{', '}'));
339
337
  });
340
338
 
341
339
  test('encode object (include null)', async () => {
@@ -324,13 +324,13 @@ test('encode object (skip undefined)', async () => {
324
324
  expect(toArray(await encodeAsync(obj))).toEqual(toArray('{', '}'));
325
325
  });
326
326
 
327
- test('encode object (function) [error]', async () => {
327
+ test('encode object (skip function)', async () => {
328
328
  const obj = {
329
329
  a: () => {
330
330
  // noop
331
331
  },
332
332
  };
333
- await expect(() => encodeAsync(obj)).rejects.toThrow(/Unsupported type \[object Function\]/);
333
+ expect(toArray(await encodeAsync(obj))).toEqual(toArray('{', '}'));
334
334
  });
335
335
 
336
336
  test('encode object (include null)', async () => {