@cloudpss/ubjson 0.4.6 → 0.4.8
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/index.d.ts +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/rxjs/decoder.d.ts +1 -1
- package/dist/rxjs/decoder.js +9 -7
- package/dist/rxjs/decoder.js.map +1 -1
- package/dist/utils.d.ts +2 -0
- package/dist/utils.js +8 -0
- package/dist/utils.js.map +1 -0
- package/package.json +6 -2
- package/src/index.ts +3 -2
- package/src/rxjs/decoder.ts +10 -8
- package/src/stream/decoder.ts +1 -1
- package/src/utils.ts +7 -0
- package/tests/e2e.js +10 -0
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** 编码为 UBJSON */
|
|
2
2
|
export declare function encode(value: unknown): Uint8Array;
|
|
3
3
|
/** 解码 UBJSON */
|
|
4
|
-
export declare function decode(value:
|
|
4
|
+
export declare function decode(value: BinaryData): unknown;
|
|
5
5
|
export { StringEncoder } from './common/string-encoder.js';
|
|
6
6
|
export { StringDecoder } from './common/string-decoder.js';
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Encoder } from './encoder.js';
|
|
2
2
|
import { Decoder } from './decoder.js';
|
|
3
|
+
import { toUint8Array } from './utils.js';
|
|
3
4
|
/** 编码为 UBJSON */
|
|
4
5
|
export function encode(value) {
|
|
5
6
|
const encoder = new Encoder(value);
|
|
@@ -7,7 +8,7 @@ export function encode(value) {
|
|
|
7
8
|
}
|
|
8
9
|
/** 解码 UBJSON */
|
|
9
10
|
export function decode(value) {
|
|
10
|
-
const decoder = new Decoder(value);
|
|
11
|
+
const decoder = new Decoder(toUint8Array(value));
|
|
11
12
|
return decoder.decode();
|
|
12
13
|
}
|
|
13
14
|
export { StringEncoder } from './common/string-encoder.js';
|
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;
|
|
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,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,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,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;AAC5B,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC"}
|
package/dist/rxjs/decoder.d.ts
CHANGED
package/dist/rxjs/decoder.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
2
|
import { StreamDecoderHelper, UnexpectedEof } from '../stream-helper/decoder.js';
|
|
3
|
+
import { toUint8Array } from '../utils.js';
|
|
3
4
|
const DEFAULT_BUFFER_SIZE = 16 * 1024 * 1024; // 16 MiB
|
|
4
5
|
const EMPTY_BUFFER = new Uint8Array(0);
|
|
5
6
|
/** 流式解码 UBJSON */
|
|
@@ -12,17 +13,18 @@ export function decode() {
|
|
|
12
13
|
let end = 0;
|
|
13
14
|
return observable.subscribe({
|
|
14
15
|
next(value) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
end
|
|
16
|
+
const data = toUint8Array(value);
|
|
17
|
+
if (buffer.length >= end + data.length) {
|
|
18
|
+
buffer.set(data, end);
|
|
19
|
+
end += data.length;
|
|
18
20
|
}
|
|
19
21
|
else {
|
|
20
|
-
chunkSize = Math.max(chunkSize,
|
|
21
|
-
const newBuffer = new Uint8Array(Math.max(chunkSize,
|
|
22
|
+
chunkSize = Math.max(chunkSize, data.length * 2 + end - begin);
|
|
23
|
+
const newBuffer = new Uint8Array(Math.max(chunkSize, data.length + end - begin));
|
|
22
24
|
newBuffer.set(buffer.subarray(begin, end), 0);
|
|
23
|
-
newBuffer.set(
|
|
25
|
+
newBuffer.set(data, end - begin);
|
|
24
26
|
buffer = newBuffer;
|
|
25
|
-
end = end - begin +
|
|
27
|
+
end = end - begin + data.length;
|
|
26
28
|
begin = 0;
|
|
27
29
|
}
|
|
28
30
|
while (end - begin > 0) {
|
package/dist/rxjs/decoder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src/rxjs/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAoB,MAAM,MAAM,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src/rxjs/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAoB,MAAM,MAAM,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,mBAAmB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,SAAS;AACvD,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AAEvC,kBAAkB;AAClB,MAAM,UAAU,MAAM;IAClB,OAAO,CAAC,UAAU,EAAE,EAAE;QAClB,OAAO,IAAI,UAAU,CAAU,CAAC,UAAU,EAAE,EAAE;YAC1C,IAAI,SAAS,GAAG,mBAAmB,CAAC;YACpC,IAAI,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;YACvC,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,OAAO,UAAU,CAAC,SAAS,CAAC;gBACxB,IAAI,CAAC,KAAK;oBACN,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;oBACjC,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;wBACpC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;wBACtB,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC;qBACtB;yBAAM;wBACH,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;wBAC/D,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;wBACjF,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;wBAC9C,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC;wBACjC,MAAM,GAAG,SAAS,CAAC;wBACnB,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;wBAChC,KAAK,GAAG,CAAC,CAAC;qBACb;oBACD,OAAO,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE;wBACpB,IAAI;4BACA,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;4BACpE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;4BAC/B,IAAI,MAAM,KAAK,SAAS,EAAE;gCACtB,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;6BAC3B;4BACD,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC;yBAC9B;wBAAC,OAAO,EAAE,EAAE;4BACT,IAAI,EAAE,YAAY,aAAa,EAAE;gCAC7B,OAAO;6BACV;iCAAM;gCACH,UAAU,CAAC,KAAK,CAAC,EAAW,CAAC,CAAC;gCAC9B,MAAM,GAAG,YAAY,CAAC;gCACtB,OAAO;6BACV;yBACJ;qBACJ;oBACD,4BAA4B;oBAC5B,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;gBACpB,CAAC;gBACD,KAAK,CAAC,GAAG;oBACL,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM,GAAG,YAAY,CAAC;gBAC1B,CAAC;gBACD,QAAQ;oBACJ,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE;wBACjB,UAAU,CAAC,KAAK,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;qBACzC;yBAAM;wBACH,UAAU,CAAC,QAAQ,EAAE,CAAC;qBACzB;oBACD,MAAM,GAAG,YAAY,CAAC;gBAC1B,CAAC;aACJ,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;AACN,CAAC"}
|
package/dist/utils.d.ts
ADDED
package/dist/utils.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,MAAM,UAAU,YAAY,CAAC,IAAgB;IACzC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QAC1B,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KACxE;IACD,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACpD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudpss/ubjson",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.8",
|
|
4
4
|
"author": "CloudPSS",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
@@ -31,6 +31,10 @@
|
|
|
31
31
|
"./stream": {
|
|
32
32
|
"types": "./dist/stream/index.d.ts",
|
|
33
33
|
"default": "./dist/stream/index.js"
|
|
34
|
+
},
|
|
35
|
+
"./rxjs": {
|
|
36
|
+
"types": "./dist/rxjs/index.d.ts",
|
|
37
|
+
"default": "./dist/rxjs/index.js"
|
|
34
38
|
}
|
|
35
39
|
},
|
|
36
40
|
"scripts": {
|
|
@@ -45,6 +49,6 @@
|
|
|
45
49
|
"@msgpack/msgpack": "^2.8.0"
|
|
46
50
|
},
|
|
47
51
|
"dependencies": {
|
|
48
|
-
"rxjs": "^7.
|
|
52
|
+
"rxjs": "^7.8.0"
|
|
49
53
|
}
|
|
50
54
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Encoder } from './encoder.js';
|
|
2
2
|
import { Decoder } from './decoder.js';
|
|
3
|
+
import { toUint8Array } from './utils.js';
|
|
3
4
|
|
|
4
5
|
/** 编码为 UBJSON */
|
|
5
6
|
export function encode(value: unknown): Uint8Array {
|
|
@@ -8,8 +9,8 @@ export function encode(value: unknown): Uint8Array {
|
|
|
8
9
|
}
|
|
9
10
|
|
|
10
11
|
/** 解码 UBJSON */
|
|
11
|
-
export function decode(value:
|
|
12
|
-
const decoder = new Decoder(value);
|
|
12
|
+
export function decode(value: BinaryData): unknown {
|
|
13
|
+
const decoder = new Decoder(toUint8Array(value));
|
|
13
14
|
return decoder.decode();
|
|
14
15
|
}
|
|
15
16
|
|
package/src/rxjs/decoder.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { Observable, OperatorFunction } from 'rxjs';
|
|
2
2
|
import { StreamDecoderHelper, UnexpectedEof } from '../stream-helper/decoder.js';
|
|
3
|
+
import { toUint8Array } from '../utils.js';
|
|
3
4
|
|
|
4
5
|
const DEFAULT_BUFFER_SIZE = 16 * 1024 * 1024; // 16 MiB
|
|
5
6
|
const EMPTY_BUFFER = new Uint8Array(0);
|
|
6
7
|
|
|
7
8
|
/** 流式解码 UBJSON */
|
|
8
|
-
export function decode(): OperatorFunction<
|
|
9
|
+
export function decode(): OperatorFunction<BinaryData, unknown> {
|
|
9
10
|
return (observable) => {
|
|
10
11
|
return new Observable<unknown>((subscriber) => {
|
|
11
12
|
let chunkSize = DEFAULT_BUFFER_SIZE;
|
|
@@ -14,16 +15,17 @@ export function decode(): OperatorFunction<Uint8Array, unknown> {
|
|
|
14
15
|
let end = 0;
|
|
15
16
|
return observable.subscribe({
|
|
16
17
|
next(value) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
end
|
|
18
|
+
const data = toUint8Array(value);
|
|
19
|
+
if (buffer.length >= end + data.length) {
|
|
20
|
+
buffer.set(data, end);
|
|
21
|
+
end += data.length;
|
|
20
22
|
} else {
|
|
21
|
-
chunkSize = Math.max(chunkSize,
|
|
22
|
-
const newBuffer = new Uint8Array(Math.max(chunkSize,
|
|
23
|
+
chunkSize = Math.max(chunkSize, data.length * 2 + end - begin);
|
|
24
|
+
const newBuffer = new Uint8Array(Math.max(chunkSize, data.length + end - begin));
|
|
23
25
|
newBuffer.set(buffer.subarray(begin, end), 0);
|
|
24
|
-
newBuffer.set(
|
|
26
|
+
newBuffer.set(data, end - begin);
|
|
25
27
|
buffer = newBuffer;
|
|
26
|
-
end = end - begin +
|
|
28
|
+
end = end - begin + data.length;
|
|
27
29
|
begin = 0;
|
|
28
30
|
}
|
|
29
31
|
while (end - begin > 0) {
|
package/src/stream/decoder.ts
CHANGED
|
@@ -9,7 +9,7 @@ export class StreamDecoder extends Transform {
|
|
|
9
9
|
readableObjectMode: true,
|
|
10
10
|
writableObjectMode: false,
|
|
11
11
|
});
|
|
12
|
-
this.buffer = new Subject<
|
|
12
|
+
this.buffer = new Subject<BinaryData>();
|
|
13
13
|
this.buffer.pipe(decode()).subscribe({
|
|
14
14
|
next: (value) => {
|
|
15
15
|
// null is not allowed in a stream
|
package/src/utils.ts
ADDED
package/tests/e2e.js
CHANGED
|
@@ -351,3 +351,13 @@ test('encode/decode object with undefined values', () => {
|
|
|
351
351
|
const obj = { a: 1, b: undefined, c: { d: 2, e: undefined, f: null } };
|
|
352
352
|
expect(decode(encode(obj))).toEqual(obj);
|
|
353
353
|
});
|
|
354
|
+
|
|
355
|
+
test('decode ArrayBuffer', () => {
|
|
356
|
+
const obj = { a: 1, b: undefined, c: { d: 2, e: undefined, f: null } };
|
|
357
|
+
expect(decode(encode(obj).buffer)).toEqual(obj);
|
|
358
|
+
});
|
|
359
|
+
|
|
360
|
+
test('decode Int8Array', () => {
|
|
361
|
+
const obj = { a: 1, b: undefined, c: { d: 2, e: undefined, f: null } };
|
|
362
|
+
expect(decode(new Int8Array(encode(obj).buffer))).toEqual(obj);
|
|
363
|
+
});
|