@cloudpss/ubjson 0.5.55 → 0.6.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base/decoder.js +2 -5
- package/dist/base/decoder.js.map +1 -1
- package/dist/base/encoder.js +6 -8
- package/dist/base/encoder.js.map +1 -1
- package/dist/encoder.js +8 -5
- package/dist/encoder.js.map +1 -1
- package/dist/helper/encode.d.ts.map +1 -1
- package/dist/helper/encode.js +5 -2
- package/dist/helper/encode.js.map +1 -1
- package/dist/helper/string-decoder.d.ts +2 -0
- package/dist/helper/string-decoder.d.ts.map +1 -1
- package/dist/helper/string-decoder.js +16 -4
- package/dist/helper/string-decoder.js.map +1 -1
- package/dist/helper/string-encoder.d.ts +5 -0
- package/dist/helper/string-encoder.d.ts.map +1 -1
- package/dist/helper/string-encoder.js +28 -8
- package/dist/helper/string-encoder.js.map +1 -1
- package/dist/stream/decoder.js +0 -2
- package/dist/stream/decoder.js.map +1 -1
- package/dist/stream/encoder.js +0 -2
- package/dist/stream/encoder.js.map +1 -1
- package/dist/stream-helper/encoder.js +0 -1
- package/dist/stream-helper/encoder.js.map +1 -1
- package/package.json +2 -2
- package/src/helper/encode.ts +5 -2
- package/src/helper/string-decoder.ts +22 -6
- package/src/helper/string-encoder.ts +35 -8
- package/tests/{.utils.js → .utils.ts} +9 -8
- package/tests/{decode.js → decode.ts} +15 -17
- package/tests/e2e/{.data.js → .data.ts} +2 -4
- package/tests/e2e/{no-buffer-text.js → no-buffer-text.ts} +2 -2
- package/tests/e2e/{no-buffer.js → no-buffer.ts} +2 -2
- package/tests/e2e/{no-encode-into.js → no-encode-into.ts} +2 -2
- package/tests/e2e/{no-textencoder-decoder.js → no-textencoder-decoder.ts} +2 -2
- package/tests/e2e/{normal.js → normal.ts} +1 -1
- package/tests/e2e/{stream.js → stream.ts} +6 -6
- package/tests/{encode.js → encode.ts} +6 -6
- package/tests/{huge-string.js → huge-string.ts} +2 -5
- package/tests/rxjs/{decode.js → decode.ts} +18 -21
- package/tests/rxjs/{encode.js → encode.ts} +3 -5
- package/tests/stream/{decode.js → decode.ts} +8 -10
- package/tests/stream/{encode.js → encode.ts} +8 -10
- package/tests/stream/{many.js → many.ts} +19 -30
- package/tests/{string-encoding.js → string-encoding.ts} +7 -4
- package/jest.config.js +0 -3
- package/tests/tsconfig.json +0 -3
- package/tsconfig.json +0 -7
- /package/tests/{many.js → many.ts} +0 -0
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import { Readable } from 'node:stream';
|
|
2
|
+
import type { ReadableStream as ReadableStream2 } from 'node:stream/web';
|
|
2
3
|
import { encodeMany, decodeMany } from '../../dist/stream/index.js';
|
|
3
4
|
import { buffer } from 'node:stream/consumers';
|
|
4
5
|
import { finished } from 'node:stream/promises';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* iterableToAsyncIterable
|
|
8
|
-
* @template T
|
|
9
|
-
* @param {Iterable<T>} iterable - iterable
|
|
10
|
-
* @returns {AsyncIterable<T>} async iterable
|
|
11
9
|
*/
|
|
12
|
-
function iterableToAsyncIterable(iterable) {
|
|
10
|
+
function iterableToAsyncIterable<T>(iterable: Iterable<T>): AsyncIterable<T> {
|
|
13
11
|
return {
|
|
14
12
|
[Symbol.asyncIterator]: () => {
|
|
15
13
|
const iterator = iterable[Symbol.iterator]();
|
|
@@ -23,12 +21,9 @@ function iterableToAsyncIterable(iterable) {
|
|
|
23
21
|
|
|
24
22
|
/**
|
|
25
23
|
* asyncIterableToArray
|
|
26
|
-
* @template T
|
|
27
|
-
* @param {AsyncIterable<T>} asyncIterable - async iterable
|
|
28
|
-
* @returns {Promise<Array<T>>} array
|
|
29
24
|
*/
|
|
30
|
-
async function asyncIterableToArray(asyncIterable) {
|
|
31
|
-
const array = [];
|
|
25
|
+
async function asyncIterableToArray<T>(asyncIterable: AsyncIterable<T>): Promise<T[]> {
|
|
26
|
+
const array: T[] = [];
|
|
32
27
|
for await (const item of asyncIterable) {
|
|
33
28
|
array.push(item);
|
|
34
29
|
}
|
|
@@ -53,7 +48,7 @@ test('encode/decode many', async () => {
|
|
|
53
48
|
];
|
|
54
49
|
const encoded = await buffer(encodeMany(iterableToAsyncIterable(data)));
|
|
55
50
|
const decoded = await asyncIterableToArray(
|
|
56
|
-
decodeMany(
|
|
51
|
+
decodeMany(Readable.toWeb(Readable.from([encoded])) as ReadableStream<Uint8Array<ArrayBuffer>>),
|
|
57
52
|
);
|
|
58
53
|
expect(decoded).toEqual([
|
|
59
54
|
{
|
|
@@ -74,7 +69,7 @@ test('encode/decode many', async () => {
|
|
|
74
69
|
|
|
75
70
|
test('encode/decode many with invalid value', async () => {
|
|
76
71
|
await expect(async () => {
|
|
77
|
-
const readable = Readable.fromWeb(
|
|
72
|
+
const readable = Readable.fromWeb(encodeMany(iterableToAsyncIterable([1, () => 1])) as ReadableStream2);
|
|
78
73
|
const f = finished(readable);
|
|
79
74
|
readable.resume();
|
|
80
75
|
await f;
|
|
@@ -82,31 +77,25 @@ test('encode/decode many with invalid value', async () => {
|
|
|
82
77
|
});
|
|
83
78
|
|
|
84
79
|
test('encode/decode many with error', async () => {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
// }
|
|
98
|
-
// await f;
|
|
99
|
-
// } catch (ex) {
|
|
100
|
-
// console.log(ex);
|
|
101
|
-
// }
|
|
102
|
-
// }).rejects.toThrow('xx');
|
|
80
|
+
await expect(async () => {
|
|
81
|
+
const stream = encodeMany(
|
|
82
|
+
(async function* () {
|
|
83
|
+
yield 1;
|
|
84
|
+
await Promise.resolve();
|
|
85
|
+
throw new Error('test error');
|
|
86
|
+
})(),
|
|
87
|
+
);
|
|
88
|
+
for await (const _ of stream) {
|
|
89
|
+
//
|
|
90
|
+
}
|
|
91
|
+
}).rejects.toThrow('test error');
|
|
103
92
|
});
|
|
104
93
|
|
|
105
94
|
test('encode/decode many with undefined', async () => {
|
|
106
95
|
const data = [1, null, undefined, [undefined]];
|
|
107
96
|
const encoded = await buffer(encodeMany(iterableToAsyncIterable(data)));
|
|
108
97
|
const decoded = await asyncIterableToArray(
|
|
109
|
-
decodeMany(
|
|
98
|
+
decodeMany(Readable.toWeb(Readable.from([encoded])) as ReadableStream<Uint8Array<ArrayBuffer>>),
|
|
110
99
|
);
|
|
111
100
|
expect(decoded).toEqual([
|
|
112
101
|
1,
|
|
@@ -2,11 +2,9 @@ import { Encoder } from '../dist/encoder.js';
|
|
|
2
2
|
import { decode, jsDecode } from '../dist/helper/string-decoder.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
* @param {Pick<TextEncoder, 'encode'>} encoder encoder
|
|
7
|
-
* @param {Pick<TextDecoder, 'decode'>} decoder decoder
|
|
5
|
+
* 测试编码器和解码器
|
|
8
6
|
*/
|
|
9
|
-
function testEncoding(encoder, decoder) {
|
|
7
|
+
function testEncoding(encoder: Pick<TextEncoder, 'encode'>, decoder: Pick<TextDecoder, 'decode'>) {
|
|
10
8
|
expect(decoder.decode(encoder.encode(''))).toEqual('');
|
|
11
9
|
expect(decoder.decode(encoder.encode('a'))).toEqual('a');
|
|
12
10
|
expect(decoder.decode(encoder.encode('p4'))).toEqual('p4');
|
|
@@ -46,6 +44,7 @@ function testEncoding(encoder, decoder) {
|
|
|
46
44
|
bad.fill(0xff);
|
|
47
45
|
expect(decoder.decode(bad)).toEqual('\uFFFD'.repeat(length));
|
|
48
46
|
|
|
47
|
+
// eslint-disable-next-line unicorn/prefer-code-point
|
|
49
48
|
bad.fill('a'.charCodeAt(0), 0, length - 1);
|
|
50
49
|
expect(decoder.decode(bad)).toEqual('a'.repeat(length - 1) + '\uFFFD');
|
|
51
50
|
}
|
|
@@ -55,6 +54,7 @@ function testEncoding(encoder, decoder) {
|
|
|
55
54
|
for (let index = 0; index < 0xffff; index++) {
|
|
56
55
|
// 跳过 Surrogate
|
|
57
56
|
if (index >= 0xd800 && index <= 0xdfff) continue;
|
|
57
|
+
// eslint-disable-next-line unicorn/prefer-code-point
|
|
58
58
|
const expected = String.fromCharCode(index);
|
|
59
59
|
const encoded = encoder.encode(expected);
|
|
60
60
|
const actual = decoder.decode(encoded);
|
|
@@ -77,6 +77,7 @@ function testEncoding(encoder, decoder) {
|
|
|
77
77
|
// 检查所有 2 字节 ASCII
|
|
78
78
|
for (let index = 0; index < 0x80; index++) {
|
|
79
79
|
for (let index2 = 0; index2 < 0x80; index2++) {
|
|
80
|
+
// eslint-disable-next-line unicorn/prefer-code-point
|
|
80
81
|
const expected = String.fromCharCode(index, index2);
|
|
81
82
|
const actual = decoder.decode(encoder.encode(expected));
|
|
82
83
|
if (expected !== actual) expect(actual).toEqual(expected);
|
|
@@ -121,6 +122,8 @@ test('decode string js', () => {
|
|
|
121
122
|
});
|
|
122
123
|
|
|
123
124
|
test('decode malformed', () => {
|
|
125
|
+
// eslint-disable-next-line unicorn/prefer-code-point
|
|
124
126
|
expect(decode(new Uint8Array([0xff, 'a'.charCodeAt(0)]), 0, 2)).toEqual('\uFFFDa');
|
|
127
|
+
// eslint-disable-next-line unicorn/prefer-code-point
|
|
125
128
|
expect(jsDecode(new Uint8Array([0xff, 'a'.charCodeAt(0)]), 0, 2)).toEqual('\uFFFDa');
|
|
126
129
|
});
|
package/jest.config.js
DELETED
package/tests/tsconfig.json
DELETED
package/tsconfig.json
DELETED
|
File without changes
|