@cloudpss/ubjson 0.3.0-alpha.21

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.
@@ -0,0 +1,20 @@
1
+ export declare const NULL: number;
2
+ export declare const NO_OP: number;
3
+ export declare const TRUE: number;
4
+ export declare const FALSE: number;
5
+ export declare const INT8: number;
6
+ export declare const UINT8: number;
7
+ export declare const INT16: number;
8
+ export declare const INT32: number;
9
+ export declare const INT64: number;
10
+ export declare const FLOAT32: number;
11
+ export declare const FLOAT64: number;
12
+ export declare const HIGH_PRECISION_NUMBER: number;
13
+ export declare const CHAR: number;
14
+ export declare const STRING: number;
15
+ export declare const ARRAY: number;
16
+ export declare const ARRAY_END: number;
17
+ export declare const OBJECT: number;
18
+ export declare const OBJECT_END: number;
19
+ export declare const TYPE_MARKER: number;
20
+ export declare const COUNT_MARKER: number;
@@ -0,0 +1,21 @@
1
+ export const NULL = 'Z'.charCodeAt(0);
2
+ export const NO_OP = 'N'.charCodeAt(0);
3
+ export const TRUE = 'T'.charCodeAt(0);
4
+ export const FALSE = 'F'.charCodeAt(0);
5
+ export const INT8 = 'i'.charCodeAt(0);
6
+ export const UINT8 = 'U'.charCodeAt(0);
7
+ export const INT16 = 'I'.charCodeAt(0);
8
+ export const INT32 = 'l'.charCodeAt(0);
9
+ export const INT64 = 'L'.charCodeAt(0);
10
+ export const FLOAT32 = 'd'.charCodeAt(0);
11
+ export const FLOAT64 = 'D'.charCodeAt(0);
12
+ export const HIGH_PRECISION_NUMBER = 'H'.charCodeAt(0);
13
+ export const CHAR = 'C'.charCodeAt(0);
14
+ export const STRING = 'S'.charCodeAt(0);
15
+ export const ARRAY = '['.charCodeAt(0);
16
+ export const ARRAY_END = ']'.charCodeAt(0);
17
+ export const OBJECT = '{'.charCodeAt(0);
18
+ export const OBJECT_END = '}'.charCodeAt(0);
19
+ export const TYPE_MARKER = '$'.charCodeAt(0);
20
+ export const COUNT_MARKER = '#'.charCodeAt(0);
21
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACtC,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACtC,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACtC,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACtC,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAExC,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACxC,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAE5C,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ /** 解码 */
2
+ export declare function decode(value: Uint8Array): unknown;
@@ -0,0 +1,270 @@
1
+ import * as constants from './constants.js';
2
+ const textDecoder = new TextDecoder();
3
+ /** decoder */
4
+ class Decoder {
5
+ constructor(data) {
6
+ this.data = data;
7
+ this.offset = 0;
8
+ this.view = new DataView(data.buffer, data.byteOffset, data.byteLength);
9
+ }
10
+ /** 解码 */
11
+ decode() {
12
+ this.offset = 0;
13
+ return this.read();
14
+ }
15
+ /** 检查是否有给定字节数的未读数据 */
16
+ ensureData(byteLength) {
17
+ if (this.offset + byteLength > this.data.byteLength) {
18
+ throw new Error('Unexpected EOF');
19
+ }
20
+ }
21
+ /** 读取 marker,跳过 noop */
22
+ readMarker() {
23
+ let marker = constants.NO_OP;
24
+ do {
25
+ if (this.offset >= this.data.byteLength)
26
+ break;
27
+ marker = this.view.getUint8(this.offset++);
28
+ } while (marker === constants.NO_OP);
29
+ return marker;
30
+ }
31
+ /** 读取数据 */
32
+ read(marker = this.readMarker()) {
33
+ switch (marker) {
34
+ case constants.NO_OP:
35
+ return undefined;
36
+ case constants.NULL:
37
+ return null;
38
+ case constants.TRUE:
39
+ return true;
40
+ case constants.FALSE:
41
+ return false;
42
+ case constants.UINT8:
43
+ return this.readUint8Data();
44
+ case constants.INT8:
45
+ return this.readInt8Data();
46
+ case constants.INT16:
47
+ return this.readInt16Data();
48
+ case constants.INT32:
49
+ return this.readInt32Data();
50
+ case constants.INT64:
51
+ return this.readInt64Data();
52
+ case constants.FLOAT32:
53
+ return this.readFloat32Data();
54
+ case constants.FLOAT64:
55
+ return this.readFloat64Data();
56
+ case constants.HIGH_PRECISION_NUMBER:
57
+ return this.readHighPrecisionNumberData();
58
+ case constants.CHAR:
59
+ return this.readCharData();
60
+ case constants.STRING:
61
+ return this.readStringData();
62
+ case constants.ARRAY:
63
+ return this.readArray();
64
+ case constants.OBJECT:
65
+ return this.readObject();
66
+ }
67
+ throw new Error(`Unexpected marker '${String.fromCharCode(marker)}'(${marker})`);
68
+ }
69
+ /** 读取一个大于 0 的整数 */
70
+ readIntLength() {
71
+ const marker = this.readMarker();
72
+ let length;
73
+ switch (marker) {
74
+ case constants.INT8:
75
+ length = this.readInt8Data();
76
+ break;
77
+ case constants.INT16:
78
+ length = this.readInt16Data();
79
+ break;
80
+ case constants.INT32:
81
+ length = this.readInt32Data();
82
+ break;
83
+ /* c8 ignore next 3 */
84
+ case constants.INT64:
85
+ length = this.readInt64Data();
86
+ break;
87
+ }
88
+ if (length === undefined) {
89
+ throw new Error(`Unexpected marker '${String.fromCharCode(marker)}'(${marker}) for int length`);
90
+ }
91
+ if (length < 0)
92
+ throw new Error('Invalid length');
93
+ return length;
94
+ }
95
+ /** readStringData */
96
+ readStringData() {
97
+ const length = this.readIntLength();
98
+ this.ensureData(length);
99
+ const buffer = this.data.subarray(this.offset, this.offset + length);
100
+ this.offset += length;
101
+ return textDecoder.decode(buffer);
102
+ }
103
+ /** readHighPrecisionNumberData */
104
+ readHighPrecisionNumberData() {
105
+ const length = this.readIntLength();
106
+ this.ensureData(length);
107
+ throw new Error('Unsupported type high precision number');
108
+ // const buffer = this.data.subarray(this.offset, this.offset + length);
109
+ // this.offset += length;
110
+ // return buffer.slice();
111
+ }
112
+ /** readStringData */
113
+ readCharData() {
114
+ return String.fromCharCode(this.readUint8Data());
115
+ }
116
+ /** readInt8Data */
117
+ readInt8Data() {
118
+ this.ensureData(1);
119
+ const result = this.view.getInt8(this.offset);
120
+ this.offset += 1;
121
+ return result;
122
+ }
123
+ /** readUint8Data */
124
+ readUint8Data() {
125
+ this.ensureData(1);
126
+ const result = this.view.getUint8(this.offset);
127
+ this.offset += 1;
128
+ return result;
129
+ }
130
+ /** readInt16Data */
131
+ readInt16Data() {
132
+ this.ensureData(2);
133
+ const result = this.view.getInt16(this.offset);
134
+ this.offset += 2;
135
+ return result;
136
+ }
137
+ /** readInt32Data */
138
+ readInt32Data() {
139
+ this.ensureData(4);
140
+ const result = this.view.getInt32(this.offset);
141
+ this.offset += 4;
142
+ return result;
143
+ }
144
+ /** readInt64Data */
145
+ readInt64Data() {
146
+ this.ensureData(8);
147
+ throw new Error('Unsupported type int64');
148
+ // const result = this.view.getBigInt64(this.offset);
149
+ // this.offset += 8;
150
+ // return result;
151
+ }
152
+ /** readFloat32Data */
153
+ readFloat32Data() {
154
+ this.ensureData(4);
155
+ const result = this.view.getFloat32(this.offset);
156
+ this.offset += 4;
157
+ return result;
158
+ }
159
+ /** readFloat64Data */
160
+ readFloat64Data() {
161
+ this.ensureData(8);
162
+ const result = this.view.getFloat64(this.offset);
163
+ this.offset += 8;
164
+ return result;
165
+ }
166
+ /** 读取 Optimized Format 数据 */
167
+ readOptimizedFormatMarkers() {
168
+ let type;
169
+ let count;
170
+ switch (this.readMarker()) {
171
+ case constants.TYPE_MARKER:
172
+ type = this.readMarker();
173
+ if (this.readMarker() !== constants.COUNT_MARKER) {
174
+ throw new Error('Expected count marker');
175
+ }
176
+ /* fall through */
177
+ case constants.COUNT_MARKER:
178
+ count = this.readIntLength();
179
+ break;
180
+ default:
181
+ // 不是 '$' 或 '#',回溯
182
+ this.offset--;
183
+ return undefined;
184
+ }
185
+ return { type, count };
186
+ }
187
+ /** 读取数组 */
188
+ readArray() {
189
+ const markers = this.readOptimizedFormatMarkers();
190
+ if (markers == null) {
191
+ const array = [];
192
+ // 直到 ']'
193
+ while (this.readMarker() !== constants.ARRAY_END) {
194
+ this.offset--;
195
+ array.push(this.read());
196
+ }
197
+ return array;
198
+ }
199
+ const { count, type } = markers;
200
+ switch (type) {
201
+ case constants.NULL:
202
+ return new Array(count).fill(null);
203
+ case constants.TRUE:
204
+ return new Array(count).fill(true);
205
+ case constants.FALSE:
206
+ return new Array(count).fill(false);
207
+ case constants.UINT8:
208
+ this.ensureData(count);
209
+ this.offset += count;
210
+ return new Uint8Array(this.data.buffer, this.data.byteOffset + this.offset - count, count).slice();
211
+ case constants.INT8:
212
+ this.ensureData(count);
213
+ this.offset += count;
214
+ return new Int8Array(this.data.buffer, this.data.byteOffset + this.offset - count, count).slice();
215
+ case constants.INT16:
216
+ this.ensureData(count * 2);
217
+ return Int16Array.from({ length: count }, () => this.readInt16Data());
218
+ case constants.INT32:
219
+ this.ensureData(count * 4);
220
+ return Int32Array.from({ length: count }, () => this.readInt32Data());
221
+ /* c8 ignore next 3 */
222
+ case constants.INT64:
223
+ this.ensureData(count * 8);
224
+ return BigInt64Array.from({ length: count }, () => this.readInt64Data());
225
+ case constants.FLOAT32:
226
+ this.ensureData(count * 4);
227
+ return Float32Array.from({ length: count }, () => this.readFloat32Data());
228
+ case constants.FLOAT64: {
229
+ this.ensureData(count * 8);
230
+ const result = new Float64Array(count);
231
+ for (let i = 0; i < count; i++) {
232
+ result[i] = this.readFloat64Data();
233
+ }
234
+ return result;
235
+ }
236
+ }
237
+ const array = new Array(count);
238
+ for (let i = 0; i < count; i++) {
239
+ array[i] = this.read(type);
240
+ }
241
+ return array;
242
+ }
243
+ /** 读对象 */
244
+ readObject() {
245
+ const markers = this.readOptimizedFormatMarkers();
246
+ if (markers == null) {
247
+ // 直到 '}'
248
+ const object = [];
249
+ while (this.readMarker() !== constants.OBJECT_END) {
250
+ this.offset--;
251
+ const key = this.readStringData();
252
+ object.push([key, this.read()]);
253
+ }
254
+ return Object.fromEntries(object);
255
+ }
256
+ const { count, type } = markers;
257
+ const object = new Array(count);
258
+ for (let i = 0; i < count; i++) {
259
+ const key = this.readStringData();
260
+ object[i] = [key, this.read(type)];
261
+ }
262
+ return Object.fromEntries(object);
263
+ }
264
+ }
265
+ /** 解码 */
266
+ export function decode(value) {
267
+ const decoder = new Decoder(value);
268
+ return decoder.decode();
269
+ }
270
+ //# sourceMappingURL=decoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decoder.js","sourceRoot":"","sources":["../src/decoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ /** 编码 */
2
+ export declare function encode(value: unknown): Uint8Array;
@@ -0,0 +1,314 @@
1
+ /* eslint-disable @typescript-eslint/unbound-method */
2
+ import * as constants from './constants.js';
3
+ const INITIAL_SIZE = 1024 * 8;
4
+ const MAX_SIZE = 1024 * 1024 * 128;
5
+ const RESIZE_FACTOR = 4;
6
+ const RESIZE_FACTOR_2 = 2;
7
+ const textEncoder = new TextEncoder();
8
+ /* c8 ignore next 3 */
9
+ const hasOwn = Object.hasOwn ??
10
+ Object.prototype.hasOwnProperty.call.bind(Object.prototype.hasOwnProperty);
11
+ /** 编码至 ubjson */
12
+ class Encoder {
13
+ constructor() {
14
+ /** 当前写指针位置 */
15
+ this.length = 0;
16
+ const buffer = new Uint8Array(INITIAL_SIZE);
17
+ this.buffer = buffer;
18
+ this.view = new DataView(buffer.buffer);
19
+ }
20
+ /**
21
+ * 确保 buffer 还有 capacity 的空闲空间
22
+ */
23
+ ensureCapacity(capacity) {
24
+ let nextCapacity = this.length + capacity;
25
+ // 无需扩容
26
+ if (this.buffer.byteLength >= nextCapacity)
27
+ return;
28
+ /* c8 ignore next 3 */
29
+ if (nextCapacity > MAX_SIZE) {
30
+ throw new Error('Buffer has exceed max size');
31
+ }
32
+ if (nextCapacity < this.buffer.byteLength * RESIZE_FACTOR) {
33
+ nextCapacity = (this.buffer.byteLength * RESIZE_FACTOR) | 0;
34
+ }
35
+ else {
36
+ nextCapacity = (this.buffer.byteLength / RESIZE_FACTOR_2 + nextCapacity) | 0;
37
+ }
38
+ /* c8 ignore next 3 */
39
+ if (nextCapacity > MAX_SIZE) {
40
+ nextCapacity = MAX_SIZE;
41
+ }
42
+ const newBuffer = new Uint8Array(nextCapacity);
43
+ newBuffer.set(this.buffer, 0);
44
+ this.buffer = newBuffer;
45
+ this.view = new DataView(newBuffer.buffer);
46
+ }
47
+ /** 获取写入结果 */
48
+ finish() {
49
+ return this.buffer.slice(0, this.length);
50
+ }
51
+ /** 写入一个对象 */
52
+ write(value) {
53
+ switch (typeof value) {
54
+ case 'undefined':
55
+ return this.writeNoOp();
56
+ case 'boolean':
57
+ return this.writeBoolean(value);
58
+ case 'number':
59
+ return this.writeNumber(value);
60
+ case 'string':
61
+ if (value.length === 1 && value.charCodeAt(0) < 255) {
62
+ // 1 byte string
63
+ return this.writeChar(value);
64
+ }
65
+ return this.writeString(value);
66
+ case 'object': {
67
+ if (value === null) {
68
+ return this.writeNull();
69
+ }
70
+ if (Array.isArray(value)) {
71
+ return this.writeArray(value);
72
+ }
73
+ if (ArrayBuffer.isView(value)) {
74
+ return this.writeTypedArray(value);
75
+ }
76
+ return this.writeObject(value);
77
+ }
78
+ }
79
+ throw new Error(`Unsupported type ${Object.prototype.toString.call(value)}`);
80
+ }
81
+ /** 写入 marker */
82
+ writeMarker(marker) {
83
+ this.ensureCapacity(1);
84
+ this.view.setUint8(this.length, marker);
85
+ this.length += 1;
86
+ }
87
+ /** 写入 marker */
88
+ writeNull() {
89
+ this.writeMarker(constants.NULL);
90
+ }
91
+ /** writeNoOp */
92
+ writeNoOp() {
93
+ this.writeMarker(constants.NO_OP);
94
+ }
95
+ /** writeBoolean */
96
+ writeBoolean(value) {
97
+ this.writeMarker(value ? constants.TRUE : constants.FALSE);
98
+ }
99
+ /** writeInt8 */
100
+ writeInt8(value) {
101
+ this.writeMarker(constants.INT8);
102
+ this.writeInt8Data(value);
103
+ }
104
+ /** writeInt8Data */
105
+ writeInt8Data(value) {
106
+ this.ensureCapacity(1);
107
+ this.view.setInt8(this.length, value);
108
+ this.length += 1;
109
+ }
110
+ /** writeUint8 */
111
+ writeUint8(value) {
112
+ this.writeMarker(constants.UINT8);
113
+ this.writeUint8Data(value);
114
+ }
115
+ /** writeUint8Data */
116
+ writeUint8Data(value) {
117
+ this.ensureCapacity(1);
118
+ this.view.setUint8(this.length, value);
119
+ this.length += 1;
120
+ }
121
+ /** writeInt16 */
122
+ writeInt16(value) {
123
+ this.writeMarker(constants.INT16);
124
+ this.writeInt16Data(value);
125
+ }
126
+ /** writeInt16Data */
127
+ writeInt16Data(value) {
128
+ this.ensureCapacity(2);
129
+ this.view.setInt16(this.length, value);
130
+ this.length += 2;
131
+ }
132
+ /** writeInt32 */
133
+ writeInt32(value) {
134
+ this.writeMarker(constants.INT32);
135
+ this.writeInt32Data(value);
136
+ }
137
+ /** writeInt32Data */
138
+ writeInt32Data(value) {
139
+ this.ensureCapacity(4);
140
+ this.view.setInt32(this.length, value);
141
+ this.length += 4;
142
+ }
143
+ /** writeFloat32 */
144
+ writeFloat32(value) {
145
+ this.writeMarker(constants.FLOAT32);
146
+ this.writeFloat32Data(value);
147
+ }
148
+ /** writeFloat32Data */
149
+ writeFloat32Data(value) {
150
+ this.ensureCapacity(4);
151
+ this.view.setFloat32(this.length, value);
152
+ this.length += 4;
153
+ }
154
+ /** writeFloat64 */
155
+ writeFloat64(value) {
156
+ this.writeMarker(constants.FLOAT64);
157
+ this.writeFloat64Data(value);
158
+ }
159
+ /** writeFloat64Data */
160
+ writeFloat64Data(value) {
161
+ this.ensureCapacity(8);
162
+ this.view.setFloat64(this.length, value);
163
+ this.length += 8;
164
+ }
165
+ /** writeChar */
166
+ writeChar(value) {
167
+ this.writeMarker(constants.CHAR);
168
+ this.writeCharData(value);
169
+ }
170
+ /** writeCharData */
171
+ writeCharData(value) {
172
+ this.ensureCapacity(1);
173
+ this.view.setUint8(this.length, value.charCodeAt(0));
174
+ this.length += 1;
175
+ }
176
+ /** writeString */
177
+ writeString(value) {
178
+ this.writeMarker(constants.STRING);
179
+ this.writeStringData(value);
180
+ }
181
+ /** writeStringData */
182
+ writeStringData(value) {
183
+ if (textEncoder.encodeInto != null) {
184
+ const maxUsage = value.length * 3;
185
+ const currentPos = this.length;
186
+ // 先写入最大大小
187
+ const lengthWriter = this.writeInt(maxUsage);
188
+ this.ensureCapacity(maxUsage);
189
+ // 写入文本数据
190
+ const { written } = textEncoder.encodeInto(value, this.buffer.subarray(this.length));
191
+ // 回溯,写入实际大小
192
+ this.length = currentPos;
193
+ lengthWriter.call(this, written);
194
+ // 移动指针到写入末尾
195
+ this.length += written;
196
+ return;
197
+ }
198
+ const data = textEncoder.encode(value);
199
+ this.writeInt(data.length);
200
+ this.ensureCapacity(data.length);
201
+ this.buffer.set(data, this.length);
202
+ this.length += data.length;
203
+ }
204
+ /**
205
+ * 写入整形数字,选取合适的大小
206
+ *
207
+ * @throws 无法在 int32 范围内表示
208
+ */
209
+ writeInt(value) {
210
+ value = value | 0;
211
+ if (value >= -128 && value <= 127) {
212
+ this.writeInt8(value);
213
+ return this.writeInt8;
214
+ }
215
+ if (value >= -32768 && value <= 32767) {
216
+ this.writeInt16(value);
217
+ return this.writeInt16;
218
+ }
219
+ if (value >= -2147483648 && value <= 2147483647) {
220
+ this.writeInt32(value);
221
+ return this.writeInt32;
222
+ }
223
+ /* c8 ignore next 2 */
224
+ throw new Error(`Unsupported int value ${value}: out of range`);
225
+ }
226
+ /** 写入数字,选取合适的大小 */
227
+ writeNumber(value) {
228
+ if (Number.isInteger(value) && value >= -2147483648 && value <= 2147483647) {
229
+ if (value >= 0 && value <= 255)
230
+ return this.writeUint8(value);
231
+ this.writeInt(value);
232
+ return;
233
+ }
234
+ if (!Number.isFinite(value) || Math.fround(value) === value) {
235
+ return this.writeFloat32(value);
236
+ }
237
+ return this.writeFloat64(value);
238
+ }
239
+ /** writeObject */
240
+ writeObject(value) {
241
+ this.writeMarker(constants.OBJECT);
242
+ for (const key in value) {
243
+ if (!hasOwn(value, key))
244
+ continue;
245
+ const element = value[key];
246
+ if (element === undefined)
247
+ continue;
248
+ this.writeStringData(key);
249
+ this.write(element);
250
+ }
251
+ this.writeMarker(constants.OBJECT_END);
252
+ }
253
+ /** writeArray */
254
+ writeArray(value) {
255
+ this.writeMarker(constants.ARRAY);
256
+ for (const v of value) {
257
+ if (v == null)
258
+ this.writeNull();
259
+ else
260
+ this.write(v);
261
+ }
262
+ this.writeMarker(constants.ARRAY_END);
263
+ }
264
+ /** writeArray */
265
+ writeTypedArray(value) {
266
+ this.writeMarker(constants.ARRAY);
267
+ this.writeMarker(constants.TYPE_MARKER);
268
+ if (value instanceof Uint8Array || value instanceof Int8Array) {
269
+ // fast path for typed arrays with `BYTES_PER_ELEMENT` of 1
270
+ this.writeMarker(value instanceof Uint8Array ? constants.UINT8 : constants.INT8);
271
+ this.writeMarker(constants.COUNT_MARKER);
272
+ this.writeInt(value.length);
273
+ this.ensureCapacity(value.byteLength);
274
+ this.buffer.set(value, this.length);
275
+ this.length += value.byteLength;
276
+ return;
277
+ }
278
+ let setValue;
279
+ if (value instanceof Int16Array) {
280
+ this.writeMarker(constants.INT16);
281
+ setValue = this.view.setInt16;
282
+ }
283
+ else if (value instanceof Int32Array) {
284
+ this.writeMarker(constants.INT32);
285
+ setValue = this.view.setInt32;
286
+ }
287
+ else if (value instanceof Float32Array) {
288
+ this.writeMarker(constants.FLOAT32);
289
+ setValue = this.view.setFloat32;
290
+ }
291
+ else if (value instanceof Float64Array) {
292
+ this.writeMarker(constants.FLOAT64);
293
+ setValue = this.view.setFloat64;
294
+ }
295
+ else {
296
+ throw new Error(`Unsupported typed array type ${Object.prototype.toString.call(value)}`);
297
+ }
298
+ this.writeMarker(constants.COUNT_MARKER);
299
+ this.writeInt(value.length);
300
+ this.ensureCapacity(value.byteLength);
301
+ // 不要在前面 bind,this.ensureCapacity 有可能导致 this.view 指向新的对象
302
+ for (const v of value) {
303
+ setValue.call(this.view, this.length, v);
304
+ this.length += value.BYTES_PER_ELEMENT;
305
+ }
306
+ }
307
+ }
308
+ /** 编码 */
309
+ export function encode(value) {
310
+ const encoder = new Encoder();
311
+ encoder.write(value);
312
+ return encoder.finish();
313
+ }
314
+ //# sourceMappingURL=encoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../src/encoder.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC;AAC9B,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;AACnC,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,sBAAsB;AACtB,MAAM,MAAM,GACP,MAAsF,CAAC,MAAM;IAC9F,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;AAE/E,iBAAiB;AACjB,MAAM,OAAO;IAQT;QAPA,cAAc;QACN,WAAM,GAAG,CAAC,CAAC;QAOf,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,QAAgB;QACnC,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QAC1C,OAAO;QACP,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,YAAY;YAAE,OAAO;QACnD,sBAAsB;QACtB,IAAI,YAAY,GAAG,QAAQ,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SACjD;QAED,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,aAAa,EAAE;YACvD,YAAY,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;SAC/D;aAAM;YACH,YAAY,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;SAChF;QACD,sBAAsB;QACtB,IAAI,YAAY,GAAG,QAAQ,EAAE;YACzB,YAAY,GAAG,QAAQ,CAAC;SAC3B;QAED,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;QAC/C,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IACD,aAAa;IACb,MAAM;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IACD,aAAa;IACb,KAAK,CAAC,KAAc;QAChB,QAAQ,OAAO,KAAK,EAAE;YAClB,KAAK,WAAW;gBACZ,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5B,KAAK,SAAS;gBACV,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACpC,KAAK,QAAQ;gBACT,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACnC,KAAK,QAAQ;gBACT,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;oBACjD,gBAAgB;oBAChB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;iBAChC;gBACD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACnC,KAAK,QAAQ,CAAC,CAAC;gBACX,IAAI,KAAK,KAAK,IAAI,EAAE;oBAChB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;iBAC3B;gBACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACtB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;iBACjC;gBACD,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBAC3B,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;iBACtC;gBACD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAgC,CAAC,CAAC;aAC7D;SACJ;QACD,MAAM,IAAI,KAAK,CAAC,oBAAoB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,gBAAgB;IACR,WAAW,CAAC,MAAc;QAC9B,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,gBAAgB;IACR,SAAS;QACb,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,gBAAgB;IACR,SAAS;QACb,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,mBAAmB;IACX,YAAY,CAAC,KAAc;QAC/B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC;IAED,gBAAgB;IACR,SAAS,CAAC,KAAa;QAC3B,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,oBAAoB;IACZ,aAAa,CAAC,KAAa;QAC/B,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,iBAAiB;IACT,UAAU,CAAC,KAAa;QAC5B,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,qBAAqB;IACb,cAAc,CAAC,KAAa;QAChC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,iBAAiB;IACT,UAAU,CAAC,KAAa;QAC5B,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,qBAAqB;IACb,cAAc,CAAC,KAAa;QAChC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,iBAAiB;IACT,UAAU,CAAC,KAAa;QAC5B,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,qBAAqB;IACb,cAAc,CAAC,KAAa;QAChC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,mBAAmB;IACX,YAAY,CAAC,KAAa;QAC9B,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,uBAAuB;IACf,gBAAgB,CAAC,KAAa;QAClC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,mBAAmB;IACX,YAAY,CAAC,KAAa;QAC9B,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,uBAAuB;IACf,gBAAgB,CAAC,KAAa;QAClC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,gBAAgB;IACR,SAAS,CAAC,KAAa;QAC3B,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,oBAAoB;IACZ,aAAa,CAAC,KAAa;QAC/B,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,kBAAkB;IACV,WAAW,CAAC,KAAa;QAC7B,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,sBAAsB;IACd,eAAe,CAAC,KAAa;QACjC,IAAI,WAAW,CAAC,UAAU,IAAI,IAAI,EAAE;YAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAClC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;YAC/B,UAAU;YACV,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC7C,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC9B,SAAS;YACT,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACrF,YAAY;YACZ,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;YACzB,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,OAAiB,CAAC,CAAC;YAC3C,YAAY;YACZ,IAAI,CAAC,MAAM,IAAI,OAAiB,CAAC;YACjC,OAAO;SACV;QACD,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACK,QAAQ,CAAC,KAAa;QAC1B,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;QAClB,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG,EAAE;YAC/B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACtB,OAAO,IAAI,CAAC,SAAS,CAAC;SACzB;QACD,IAAI,KAAK,IAAI,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE;YACnC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC,UAAU,CAAC;SAC1B;QACD,IAAI,KAAK,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,UAAU,EAAE;YAC7C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC,UAAU,CAAC;SAC1B;QACD,sBAAsB;QACtB,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,gBAAgB,CAAC,CAAC;IACpE,CAAC;IAED,mBAAmB;IACX,WAAW,CAAC,KAAa;QAC7B,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,UAAU,EAAE;YACxE,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG;gBAAE,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC9D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO;SACV;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE;YACzD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SACnC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,kBAAkB;IACV,WAAW,CAAC,KAA8B;QAC9C,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;YACrB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC;gBAAE,SAAS;YAClC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,OAAO,KAAK,SAAS;gBAAE,SAAS;YACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SACvB;QACD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,iBAAiB;IACT,UAAU,CAAC,KAAgB;QAC/B,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;YACnB,IAAI,CAAC,IAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;;gBAC3B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACtB;QACD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,iBAAiB;IACT,eAAe,CAAC,KAAsB;QAC1C,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,KAAK,YAAY,UAAU,IAAI,KAAK,YAAY,SAAS,EAAE;YAC3D,2DAA2D;YAC3D,IAAI,CAAC,WAAW,CAAC,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACjF,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC5B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC;YAChC,OAAO;SACV;QACD,IAAI,QAAQ,CAAC;QACb,IAAI,KAAK,YAAY,UAAU,EAAE;YAC7B,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAClC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;SACjC;aAAM,IAAI,KAAK,YAAY,UAAU,EAAE;YACpC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAClC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;SACjC;aAAM,IAAI,KAAK,YAAY,YAAY,EAAE;YACtC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACpC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;SACnC;aAAM,IAAI,KAAK,YAAY,YAAY,EAAE;YACtC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACpC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;SACnC;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SAC5F;QACD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,wDAAwD;QACxD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;YACnB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC;SAC1C;IACL,CAAC;CACJ;AAED,SAAS;AACT,MAAM,UAAU,MAAM,CAAC,KAAc;IACjC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { encode } from './encoder.js';
2
+ export { decode } from './decoder.js';