@jsonjoy.com/json-pack 1.3.0 → 1.4.0
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/README.md +44 -11
- package/lib/ejson/EjsonDecoder.d.ts +19 -0
- package/lib/ejson/EjsonDecoder.js +449 -0
- package/lib/ejson/EjsonDecoder.js.map +1 -0
- package/lib/ejson/EjsonEncoder.d.ts +41 -0
- package/lib/ejson/EjsonEncoder.js +498 -0
- package/lib/ejson/EjsonEncoder.js.map +1 -0
- package/lib/ejson/index.d.ts +3 -0
- package/lib/ejson/index.js +22 -0
- package/lib/ejson/index.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,18 +2,51 @@
|
|
|
2
2
|
|
|
3
3
|
High performance JSON serialization and deserialization library for JavaScript, Node.js, browser.
|
|
4
4
|
|
|
5
|
-
`json-pack` contains implementations of various JSON codecs into binary,
|
|
6
|
-
formats, such as MessagePack, CBOR and other formats.
|
|
5
|
+
`json-pack` contains implementations of various JSON codecs into binary formats, such as MessagePack, CBOR and other formats.
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
7
|
+
## Supported Formats
|
|
8
|
+
|
|
9
|
+
This library implements the following serialization formats:
|
|
10
|
+
|
|
11
|
+
- **[MessagePack](./src/msgpack/README.md)** - Fast and lean implementation of MessagePack codec
|
|
12
|
+
- **[CBOR](./src/cbor/README.md)** - Concise Binary Object Representation codec
|
|
13
|
+
- **[UBJSON](./src/ubjson/README.md)** - Universal Binary JSON codec
|
|
14
|
+
- **[JSON](./src/json/README.md)** - Enhanced JSON encoder/decoder with additional features
|
|
15
|
+
- **[JSON Binary](./src/json-binary/README.md)** - JSON with binary data support using Uint8Array
|
|
16
|
+
- **[Amazon Ion](./src/ion/README.md)** - Amazon's Ion data serialization format
|
|
17
|
+
- **[BSON](./src/bson/README.md)** - Binary JSON format used by MongoDB
|
|
18
|
+
- **[RESP](./src/resp/README.md)** - Redis Serialization Protocol (v2 and v3)
|
|
19
|
+
- **[Bencode](./src/bencode/README.md)** - BitTorrent's encoding format
|
|
20
|
+
|
|
21
|
+
Each format comes with optimized encoders and decoders designed for maximum performance.
|
|
22
|
+
|
|
23
|
+
## Installation
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install @jsonjoy.com/json-pack
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Quick Start
|
|
30
|
+
|
|
31
|
+
```ts
|
|
32
|
+
import {MessagePackEncoder, MessagePackDecoder} from '@jsonjoy.com/json-pack/lib/msgpack';
|
|
33
|
+
|
|
34
|
+
const encoder = new MessagePackEncoder();
|
|
35
|
+
const decoder = new MessagePackDecoder();
|
|
36
|
+
|
|
37
|
+
const data = {hello: 'world', numbers: [1, 2, 3]};
|
|
38
|
+
const binary = encoder.encode(data);
|
|
39
|
+
const restored = decoder.decode(binary);
|
|
40
|
+
|
|
41
|
+
console.log(restored); // {hello: 'world', numbers: [1, 2, 3]}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Documentation
|
|
45
|
+
|
|
46
|
+
For detailed documentation on each codec, refer to the individual README files in their respective folders:
|
|
47
|
+
|
|
48
|
+
- Individual codec documentation is available in each `src/<codec>/README.md` file
|
|
49
|
+
- Each codec includes comprehensive usage examples, API documentation, and performance benchmarks
|
|
17
50
|
|
|
18
51
|
|
|
19
52
|
## Benchmarks
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { JsonDecoder } from '../json/JsonDecoder';
|
|
2
|
+
export interface EjsonDecoderOptions {
|
|
3
|
+
legacy?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare class EjsonDecoder extends JsonDecoder {
|
|
6
|
+
private options;
|
|
7
|
+
constructor(options?: EjsonDecoderOptions);
|
|
8
|
+
decodeFromString(json: string): unknown;
|
|
9
|
+
readAny(): unknown;
|
|
10
|
+
readArr(): unknown[];
|
|
11
|
+
readObjWithEjsonSupport(): unknown;
|
|
12
|
+
private readValue;
|
|
13
|
+
private readRawObj;
|
|
14
|
+
private transformEjsonObject;
|
|
15
|
+
private parseObjectId;
|
|
16
|
+
private base64ToUint8Array;
|
|
17
|
+
private isValidUuid;
|
|
18
|
+
private uuidToBytes;
|
|
19
|
+
}
|
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EjsonDecoder = void 0;
|
|
4
|
+
const values_1 = require("../bson/values");
|
|
5
|
+
const JsonDecoder_1 = require("../json/JsonDecoder");
|
|
6
|
+
const JsonDecoder_2 = require("../json/JsonDecoder");
|
|
7
|
+
class EjsonDecoder extends JsonDecoder_1.JsonDecoder {
|
|
8
|
+
constructor(options = {}) {
|
|
9
|
+
super();
|
|
10
|
+
this.options = options;
|
|
11
|
+
}
|
|
12
|
+
decodeFromString(json) {
|
|
13
|
+
const bytes = new TextEncoder().encode(json);
|
|
14
|
+
return this.decode(bytes);
|
|
15
|
+
}
|
|
16
|
+
readAny() {
|
|
17
|
+
this.skipWhitespace();
|
|
18
|
+
const reader = this.reader;
|
|
19
|
+
const uint8 = reader.uint8;
|
|
20
|
+
const char = uint8[reader.x];
|
|
21
|
+
switch (char) {
|
|
22
|
+
case 34:
|
|
23
|
+
return this.readStr();
|
|
24
|
+
case 91:
|
|
25
|
+
return this.readArr();
|
|
26
|
+
case 102:
|
|
27
|
+
return this.readFalse();
|
|
28
|
+
case 110:
|
|
29
|
+
return this.readNull();
|
|
30
|
+
case 116:
|
|
31
|
+
return this.readTrue();
|
|
32
|
+
case 123:
|
|
33
|
+
return this.readObjWithEjsonSupport();
|
|
34
|
+
default:
|
|
35
|
+
if ((char >= 48 && char <= 57) || char === 45)
|
|
36
|
+
return this.readNum();
|
|
37
|
+
throw new Error('Invalid JSON');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
readArr() {
|
|
41
|
+
const reader = this.reader;
|
|
42
|
+
if (reader.u8() !== 0x5b)
|
|
43
|
+
throw new Error('Invalid JSON');
|
|
44
|
+
const arr = [];
|
|
45
|
+
const uint8 = reader.uint8;
|
|
46
|
+
let first = true;
|
|
47
|
+
while (true) {
|
|
48
|
+
this.skipWhitespace();
|
|
49
|
+
const char = uint8[reader.x];
|
|
50
|
+
if (char === 0x5d)
|
|
51
|
+
return reader.x++, arr;
|
|
52
|
+
if (char === 0x2c)
|
|
53
|
+
reader.x++;
|
|
54
|
+
else if (!first)
|
|
55
|
+
throw new Error('Invalid JSON');
|
|
56
|
+
this.skipWhitespace();
|
|
57
|
+
arr.push(this.readAny());
|
|
58
|
+
first = false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
readObjWithEjsonSupport() {
|
|
62
|
+
const reader = this.reader;
|
|
63
|
+
if (reader.u8() !== 0x7b)
|
|
64
|
+
throw new Error('Invalid JSON');
|
|
65
|
+
const obj = {};
|
|
66
|
+
const uint8 = reader.uint8;
|
|
67
|
+
let first = true;
|
|
68
|
+
while (true) {
|
|
69
|
+
this.skipWhitespace();
|
|
70
|
+
let char = uint8[reader.x];
|
|
71
|
+
if (char === 0x7d) {
|
|
72
|
+
reader.x++;
|
|
73
|
+
return this.transformEjsonObject(obj);
|
|
74
|
+
}
|
|
75
|
+
if (char === 0x2c)
|
|
76
|
+
reader.x++;
|
|
77
|
+
else if (!first)
|
|
78
|
+
throw new Error('Invalid JSON');
|
|
79
|
+
this.skipWhitespace();
|
|
80
|
+
char = uint8[reader.x++];
|
|
81
|
+
if (char !== 0x22)
|
|
82
|
+
throw new Error('Invalid JSON');
|
|
83
|
+
const key = (0, JsonDecoder_2.readKey)(reader);
|
|
84
|
+
if (key === '__proto__')
|
|
85
|
+
throw new Error('Invalid JSON');
|
|
86
|
+
this.skipWhitespace();
|
|
87
|
+
if (reader.u8() !== 0x3a)
|
|
88
|
+
throw new Error('Invalid JSON');
|
|
89
|
+
this.skipWhitespace();
|
|
90
|
+
obj[key] = this.readValue();
|
|
91
|
+
first = false;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
readValue() {
|
|
95
|
+
this.skipWhitespace();
|
|
96
|
+
const reader = this.reader;
|
|
97
|
+
const uint8 = reader.uint8;
|
|
98
|
+
const char = uint8[reader.x];
|
|
99
|
+
switch (char) {
|
|
100
|
+
case 34:
|
|
101
|
+
return this.readStr();
|
|
102
|
+
case 91:
|
|
103
|
+
return this.readArr();
|
|
104
|
+
case 102:
|
|
105
|
+
return this.readFalse();
|
|
106
|
+
case 110:
|
|
107
|
+
return this.readNull();
|
|
108
|
+
case 116:
|
|
109
|
+
return this.readTrue();
|
|
110
|
+
case 123:
|
|
111
|
+
return this.readRawObj();
|
|
112
|
+
default:
|
|
113
|
+
if ((char >= 48 && char <= 57) || char === 45)
|
|
114
|
+
return this.readNum();
|
|
115
|
+
throw new Error('Invalid JSON');
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
readRawObj() {
|
|
119
|
+
const reader = this.reader;
|
|
120
|
+
if (reader.u8() !== 0x7b)
|
|
121
|
+
throw new Error('Invalid JSON');
|
|
122
|
+
const obj = {};
|
|
123
|
+
const uint8 = reader.uint8;
|
|
124
|
+
let first = true;
|
|
125
|
+
while (true) {
|
|
126
|
+
this.skipWhitespace();
|
|
127
|
+
let char = uint8[reader.x];
|
|
128
|
+
if (char === 0x7d) {
|
|
129
|
+
reader.x++;
|
|
130
|
+
return obj;
|
|
131
|
+
}
|
|
132
|
+
if (char === 0x2c)
|
|
133
|
+
reader.x++;
|
|
134
|
+
else if (!first)
|
|
135
|
+
throw new Error('Invalid JSON');
|
|
136
|
+
this.skipWhitespace();
|
|
137
|
+
char = uint8[reader.x++];
|
|
138
|
+
if (char !== 0x22)
|
|
139
|
+
throw new Error('Invalid JSON');
|
|
140
|
+
const key = (0, JsonDecoder_2.readKey)(reader);
|
|
141
|
+
if (key === '__proto__')
|
|
142
|
+
throw new Error('Invalid JSON');
|
|
143
|
+
this.skipWhitespace();
|
|
144
|
+
if (reader.u8() !== 0x3a)
|
|
145
|
+
throw new Error('Invalid JSON');
|
|
146
|
+
this.skipWhitespace();
|
|
147
|
+
obj[key] = this.readValue();
|
|
148
|
+
first = false;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
transformEjsonObject(obj) {
|
|
152
|
+
const keys = Object.keys(obj);
|
|
153
|
+
const hasExactKeys = (expectedKeys) => {
|
|
154
|
+
if (keys.length !== expectedKeys.length)
|
|
155
|
+
return false;
|
|
156
|
+
return expectedKeys.every((key) => keys.includes(key));
|
|
157
|
+
};
|
|
158
|
+
const specialKeys = keys.filter((key) => key.startsWith('$'));
|
|
159
|
+
if (specialKeys.length > 0) {
|
|
160
|
+
if (specialKeys.includes('$oid')) {
|
|
161
|
+
if (!hasExactKeys(['$oid'])) {
|
|
162
|
+
throw new Error('Invalid ObjectId format: extra keys not allowed');
|
|
163
|
+
}
|
|
164
|
+
const oidStr = obj.$oid;
|
|
165
|
+
if (typeof oidStr === 'string' && /^[0-9a-fA-F]{24}$/.test(oidStr)) {
|
|
166
|
+
return this.parseObjectId(oidStr);
|
|
167
|
+
}
|
|
168
|
+
throw new Error('Invalid ObjectId format');
|
|
169
|
+
}
|
|
170
|
+
if (specialKeys.includes('$numberInt')) {
|
|
171
|
+
if (!hasExactKeys(['$numberInt'])) {
|
|
172
|
+
throw new Error('Invalid Int32 format: extra keys not allowed');
|
|
173
|
+
}
|
|
174
|
+
const intStr = obj.$numberInt;
|
|
175
|
+
if (typeof intStr === 'string') {
|
|
176
|
+
const value = parseInt(intStr, 10);
|
|
177
|
+
if (!isNaN(value) && value >= -2147483648 && value <= 2147483647) {
|
|
178
|
+
return new values_1.BsonInt32(value);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
throw new Error('Invalid Int32 format');
|
|
182
|
+
}
|
|
183
|
+
if (specialKeys.includes('$numberLong')) {
|
|
184
|
+
if (!hasExactKeys(['$numberLong'])) {
|
|
185
|
+
throw new Error('Invalid Int64 format: extra keys not allowed');
|
|
186
|
+
}
|
|
187
|
+
const longStr = obj.$numberLong;
|
|
188
|
+
if (typeof longStr === 'string') {
|
|
189
|
+
const value = parseFloat(longStr);
|
|
190
|
+
if (!isNaN(value)) {
|
|
191
|
+
return new values_1.BsonInt64(value);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
throw new Error('Invalid Int64 format');
|
|
195
|
+
}
|
|
196
|
+
if (specialKeys.includes('$numberDouble')) {
|
|
197
|
+
if (!hasExactKeys(['$numberDouble'])) {
|
|
198
|
+
throw new Error('Invalid Double format: extra keys not allowed');
|
|
199
|
+
}
|
|
200
|
+
const doubleStr = obj.$numberDouble;
|
|
201
|
+
if (typeof doubleStr === 'string') {
|
|
202
|
+
if (doubleStr === 'Infinity')
|
|
203
|
+
return new values_1.BsonFloat(Infinity);
|
|
204
|
+
if (doubleStr === '-Infinity')
|
|
205
|
+
return new values_1.BsonFloat(-Infinity);
|
|
206
|
+
if (doubleStr === 'NaN')
|
|
207
|
+
return new values_1.BsonFloat(NaN);
|
|
208
|
+
const value = parseFloat(doubleStr);
|
|
209
|
+
if (!isNaN(value)) {
|
|
210
|
+
return new values_1.BsonFloat(value);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
throw new Error('Invalid Double format');
|
|
214
|
+
}
|
|
215
|
+
if (specialKeys.includes('$numberDecimal')) {
|
|
216
|
+
if (!hasExactKeys(['$numberDecimal'])) {
|
|
217
|
+
throw new Error('Invalid Decimal128 format: extra keys not allowed');
|
|
218
|
+
}
|
|
219
|
+
const decimalStr = obj.$numberDecimal;
|
|
220
|
+
if (typeof decimalStr === 'string') {
|
|
221
|
+
return new values_1.BsonDecimal128(new Uint8Array(16));
|
|
222
|
+
}
|
|
223
|
+
throw new Error('Invalid Decimal128 format');
|
|
224
|
+
}
|
|
225
|
+
if (specialKeys.includes('$binary')) {
|
|
226
|
+
if (!hasExactKeys(['$binary'])) {
|
|
227
|
+
throw new Error('Invalid Binary format: extra keys not allowed');
|
|
228
|
+
}
|
|
229
|
+
const binaryObj = obj.$binary;
|
|
230
|
+
if (typeof binaryObj === 'object' && binaryObj !== null) {
|
|
231
|
+
const binaryKeys = Object.keys(binaryObj);
|
|
232
|
+
if (binaryKeys.length === 2 && binaryKeys.includes('base64') && binaryKeys.includes('subType')) {
|
|
233
|
+
const base64 = binaryObj.base64;
|
|
234
|
+
const subType = binaryObj.subType;
|
|
235
|
+
if (typeof base64 === 'string' && typeof subType === 'string') {
|
|
236
|
+
const data = this.base64ToUint8Array(base64);
|
|
237
|
+
const subtype = parseInt(subType, 16);
|
|
238
|
+
return new values_1.BsonBinary(subtype, data);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
throw new Error('Invalid Binary format');
|
|
243
|
+
}
|
|
244
|
+
if (specialKeys.includes('$uuid')) {
|
|
245
|
+
if (!hasExactKeys(['$uuid'])) {
|
|
246
|
+
throw new Error('Invalid UUID format: extra keys not allowed');
|
|
247
|
+
}
|
|
248
|
+
const uuidStr = obj.$uuid;
|
|
249
|
+
if (typeof uuidStr === 'string' && this.isValidUuid(uuidStr)) {
|
|
250
|
+
const data = this.uuidToBytes(uuidStr);
|
|
251
|
+
return new values_1.BsonBinary(4, data);
|
|
252
|
+
}
|
|
253
|
+
throw new Error('Invalid UUID format');
|
|
254
|
+
}
|
|
255
|
+
if (specialKeys.includes('$code') && !specialKeys.includes('$scope')) {
|
|
256
|
+
if (!hasExactKeys(['$code'])) {
|
|
257
|
+
throw new Error('Invalid Code format: extra keys not allowed');
|
|
258
|
+
}
|
|
259
|
+
const code = obj.$code;
|
|
260
|
+
if (typeof code === 'string') {
|
|
261
|
+
return new values_1.BsonJavascriptCode(code);
|
|
262
|
+
}
|
|
263
|
+
throw new Error('Invalid Code format');
|
|
264
|
+
}
|
|
265
|
+
if (specialKeys.includes('$code') && specialKeys.includes('$scope')) {
|
|
266
|
+
if (!hasExactKeys(['$code', '$scope'])) {
|
|
267
|
+
throw new Error('Invalid CodeWScope format: extra keys not allowed');
|
|
268
|
+
}
|
|
269
|
+
const code = obj.$code;
|
|
270
|
+
const scope = obj.$scope;
|
|
271
|
+
if (typeof code === 'string' && typeof scope === 'object' && scope !== null) {
|
|
272
|
+
return new values_1.BsonJavascriptCodeWithScope(code, this.transformEjsonObject(scope));
|
|
273
|
+
}
|
|
274
|
+
throw new Error('Invalid CodeWScope format');
|
|
275
|
+
}
|
|
276
|
+
if (specialKeys.includes('$symbol')) {
|
|
277
|
+
if (!hasExactKeys(['$symbol'])) {
|
|
278
|
+
throw new Error('Invalid Symbol format: extra keys not allowed');
|
|
279
|
+
}
|
|
280
|
+
const symbol = obj.$symbol;
|
|
281
|
+
if (typeof symbol === 'string') {
|
|
282
|
+
return new values_1.BsonSymbol(symbol);
|
|
283
|
+
}
|
|
284
|
+
throw new Error('Invalid Symbol format');
|
|
285
|
+
}
|
|
286
|
+
if (specialKeys.includes('$timestamp')) {
|
|
287
|
+
if (!hasExactKeys(['$timestamp'])) {
|
|
288
|
+
throw new Error('Invalid Timestamp format: extra keys not allowed');
|
|
289
|
+
}
|
|
290
|
+
const timestampObj = obj.$timestamp;
|
|
291
|
+
if (typeof timestampObj === 'object' && timestampObj !== null) {
|
|
292
|
+
const timestampKeys = Object.keys(timestampObj);
|
|
293
|
+
if (timestampKeys.length === 2 && timestampKeys.includes('t') && timestampKeys.includes('i')) {
|
|
294
|
+
const t = timestampObj.t;
|
|
295
|
+
const i = timestampObj.i;
|
|
296
|
+
if (typeof t === 'number' && typeof i === 'number' && t >= 0 && i >= 0) {
|
|
297
|
+
return new values_1.BsonTimestamp(i, t);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
throw new Error('Invalid Timestamp format');
|
|
302
|
+
}
|
|
303
|
+
if (specialKeys.includes('$regularExpression')) {
|
|
304
|
+
if (!hasExactKeys(['$regularExpression'])) {
|
|
305
|
+
throw new Error('Invalid RegularExpression format: extra keys not allowed');
|
|
306
|
+
}
|
|
307
|
+
const regexObj = obj.$regularExpression;
|
|
308
|
+
if (typeof regexObj === 'object' && regexObj !== null) {
|
|
309
|
+
const regexKeys = Object.keys(regexObj);
|
|
310
|
+
if (regexKeys.length === 2 && regexKeys.includes('pattern') && regexKeys.includes('options')) {
|
|
311
|
+
const pattern = regexObj.pattern;
|
|
312
|
+
const options = regexObj.options;
|
|
313
|
+
if (typeof pattern === 'string' && typeof options === 'string') {
|
|
314
|
+
return new RegExp(pattern, options);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
throw new Error('Invalid RegularExpression format');
|
|
319
|
+
}
|
|
320
|
+
if (specialKeys.includes('$dbPointer')) {
|
|
321
|
+
if (!hasExactKeys(['$dbPointer'])) {
|
|
322
|
+
throw new Error('Invalid DBPointer format: extra keys not allowed');
|
|
323
|
+
}
|
|
324
|
+
const dbPointerObj = obj.$dbPointer;
|
|
325
|
+
if (typeof dbPointerObj === 'object' && dbPointerObj !== null) {
|
|
326
|
+
const dbPointerKeys = Object.keys(dbPointerObj);
|
|
327
|
+
if (dbPointerKeys.length === 2 && dbPointerKeys.includes('$ref') && dbPointerKeys.includes('$id')) {
|
|
328
|
+
const ref = dbPointerObj.$ref;
|
|
329
|
+
const id = dbPointerObj.$id;
|
|
330
|
+
if (typeof ref === 'string' && id !== undefined) {
|
|
331
|
+
const transformedId = this.transformEjsonObject(id);
|
|
332
|
+
if (transformedId instanceof values_1.BsonObjectId) {
|
|
333
|
+
return new values_1.BsonDbPointer(ref, transformedId);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
throw new Error('Invalid DBPointer format');
|
|
339
|
+
}
|
|
340
|
+
if (specialKeys.includes('$date')) {
|
|
341
|
+
if (!hasExactKeys(['$date'])) {
|
|
342
|
+
throw new Error('Invalid Date format: extra keys not allowed');
|
|
343
|
+
}
|
|
344
|
+
const dateValue = obj.$date;
|
|
345
|
+
if (typeof dateValue === 'string') {
|
|
346
|
+
const date = new Date(dateValue);
|
|
347
|
+
if (!isNaN(date.getTime())) {
|
|
348
|
+
return date;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
else if (typeof dateValue === 'object' && dateValue !== null) {
|
|
352
|
+
const longObj = dateValue;
|
|
353
|
+
const longKeys = Object.keys(longObj);
|
|
354
|
+
if (longKeys.length === 1 && longKeys[0] === '$numberLong' && typeof longObj.$numberLong === 'string') {
|
|
355
|
+
const timestamp = parseFloat(longObj.$numberLong);
|
|
356
|
+
if (!isNaN(timestamp)) {
|
|
357
|
+
return new Date(timestamp);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
throw new Error('Invalid Date format');
|
|
362
|
+
}
|
|
363
|
+
if (specialKeys.includes('$minKey')) {
|
|
364
|
+
if (!hasExactKeys(['$minKey'])) {
|
|
365
|
+
throw new Error('Invalid MinKey format: extra keys not allowed');
|
|
366
|
+
}
|
|
367
|
+
if (obj.$minKey === 1) {
|
|
368
|
+
return new values_1.BsonMinKey();
|
|
369
|
+
}
|
|
370
|
+
throw new Error('Invalid MinKey format');
|
|
371
|
+
}
|
|
372
|
+
if (specialKeys.includes('$maxKey')) {
|
|
373
|
+
if (!hasExactKeys(['$maxKey'])) {
|
|
374
|
+
throw new Error('Invalid MaxKey format: extra keys not allowed');
|
|
375
|
+
}
|
|
376
|
+
if (obj.$maxKey === 1) {
|
|
377
|
+
return new values_1.BsonMaxKey();
|
|
378
|
+
}
|
|
379
|
+
throw new Error('Invalid MaxKey format');
|
|
380
|
+
}
|
|
381
|
+
if (specialKeys.includes('$undefined')) {
|
|
382
|
+
if (!hasExactKeys(['$undefined'])) {
|
|
383
|
+
throw new Error('Invalid Undefined format: extra keys not allowed');
|
|
384
|
+
}
|
|
385
|
+
if (obj.$undefined === true) {
|
|
386
|
+
return undefined;
|
|
387
|
+
}
|
|
388
|
+
throw new Error('Invalid Undefined format');
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
if (keys.includes('$ref') && keys.includes('$id')) {
|
|
392
|
+
const ref = obj.$ref;
|
|
393
|
+
const id = this.transformEjsonObject(obj.$id);
|
|
394
|
+
const result = { $ref: ref, $id: id };
|
|
395
|
+
if (keys.includes('$db')) {
|
|
396
|
+
result.$db = obj.$db;
|
|
397
|
+
}
|
|
398
|
+
for (const key of keys) {
|
|
399
|
+
if (key !== '$ref' && key !== '$id' && key !== '$db') {
|
|
400
|
+
result[key] = this.transformEjsonObject(obj[key]);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
return result;
|
|
404
|
+
}
|
|
405
|
+
const result = {};
|
|
406
|
+
for (const [key, val] of Object.entries(obj)) {
|
|
407
|
+
if (typeof val === 'object' && val !== null && !Array.isArray(val)) {
|
|
408
|
+
result[key] = this.transformEjsonObject(val);
|
|
409
|
+
}
|
|
410
|
+
else if (Array.isArray(val)) {
|
|
411
|
+
result[key] = val.map((item) => typeof item === 'object' && item !== null && !Array.isArray(item)
|
|
412
|
+
? this.transformEjsonObject(item)
|
|
413
|
+
: item);
|
|
414
|
+
}
|
|
415
|
+
else {
|
|
416
|
+
result[key] = val;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
return result;
|
|
420
|
+
}
|
|
421
|
+
parseObjectId(hex) {
|
|
422
|
+
const timestamp = parseInt(hex.slice(0, 8), 16);
|
|
423
|
+
const process = parseInt(hex.slice(8, 18), 16);
|
|
424
|
+
const counter = parseInt(hex.slice(18, 24), 16);
|
|
425
|
+
return new values_1.BsonObjectId(timestamp, process, counter);
|
|
426
|
+
}
|
|
427
|
+
base64ToUint8Array(base64) {
|
|
428
|
+
const binary = atob(base64);
|
|
429
|
+
const bytes = new Uint8Array(binary.length);
|
|
430
|
+
for (let i = 0; i < binary.length; i++) {
|
|
431
|
+
bytes[i] = binary.charCodeAt(i);
|
|
432
|
+
}
|
|
433
|
+
return bytes;
|
|
434
|
+
}
|
|
435
|
+
isValidUuid(uuid) {
|
|
436
|
+
const uuidPattern = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;
|
|
437
|
+
return uuidPattern.test(uuid);
|
|
438
|
+
}
|
|
439
|
+
uuidToBytes(uuid) {
|
|
440
|
+
const hex = uuid.replace(/-/g, '');
|
|
441
|
+
const bytes = new Uint8Array(16);
|
|
442
|
+
for (let i = 0; i < 16; i++) {
|
|
443
|
+
bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);
|
|
444
|
+
}
|
|
445
|
+
return bytes;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
exports.EjsonDecoder = EjsonDecoder;
|
|
449
|
+
//# sourceMappingURL=EjsonDecoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EjsonDecoder.js","sourceRoot":"","sources":["../../src/ejson/EjsonDecoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { JsonEncoder } from '../json/JsonEncoder';
|
|
2
|
+
import type { IWriter, IWriterGrowable } from '@jsonjoy.com/util/lib/buffers';
|
|
3
|
+
export interface EjsonEncoderOptions {
|
|
4
|
+
canonical?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare class EjsonEncoder extends JsonEncoder {
|
|
7
|
+
private options;
|
|
8
|
+
constructor(writer: IWriter & IWriterGrowable, options?: EjsonEncoderOptions);
|
|
9
|
+
encodeToString(value: unknown): string;
|
|
10
|
+
writeUnknown(value: unknown): void;
|
|
11
|
+
writeAny(value: unknown): void;
|
|
12
|
+
writeBin(buf: Uint8Array): void;
|
|
13
|
+
writeStr(str: string): void;
|
|
14
|
+
writeAsciiStr(str: string): void;
|
|
15
|
+
writeArr(arr: unknown[]): void;
|
|
16
|
+
writeObj(obj: Record<string, unknown>): void;
|
|
17
|
+
private writeUndefinedWrapper;
|
|
18
|
+
private writeNumberAsEjson;
|
|
19
|
+
private writeNumberIntWrapper;
|
|
20
|
+
private writeNumberLongWrapper;
|
|
21
|
+
private writeNumberDoubleWrapper;
|
|
22
|
+
private writeDateAsEjson;
|
|
23
|
+
private writeRegExpAsEjson;
|
|
24
|
+
private writeObjectIdAsEjson;
|
|
25
|
+
private writeBsonInt32AsEjson;
|
|
26
|
+
private writeBsonInt64AsEjson;
|
|
27
|
+
private writeBsonFloatAsEjson;
|
|
28
|
+
private writeBsonDecimal128AsEjson;
|
|
29
|
+
private writeBsonBinaryAsEjson;
|
|
30
|
+
private writeBsonCodeAsEjson;
|
|
31
|
+
private writeBsonCodeWScopeAsEjson;
|
|
32
|
+
private writeBsonSymbolAsEjson;
|
|
33
|
+
private writeBsonTimestampAsEjson;
|
|
34
|
+
private writeBsonDbPointerAsEjson;
|
|
35
|
+
private writeBsonMinKeyAsEjson;
|
|
36
|
+
private writeBsonMaxKeyAsEjson;
|
|
37
|
+
private formatNonFinite;
|
|
38
|
+
private objectIdToHex;
|
|
39
|
+
private uint8ArrayToBase64;
|
|
40
|
+
private decimal128ToString;
|
|
41
|
+
}
|
|
@@ -0,0 +1,498 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EjsonEncoder = void 0;
|
|
4
|
+
const values_1 = require("../bson/values");
|
|
5
|
+
const toBase64Bin_1 = require("@jsonjoy.com/base64/lib/toBase64Bin");
|
|
6
|
+
const JsonEncoder_1 = require("../json/JsonEncoder");
|
|
7
|
+
class EjsonEncoder extends JsonEncoder_1.JsonEncoder {
|
|
8
|
+
constructor(writer, options = {}) {
|
|
9
|
+
super(writer);
|
|
10
|
+
this.options = options;
|
|
11
|
+
}
|
|
12
|
+
encodeToString(value) {
|
|
13
|
+
const bytes = this.encode(value);
|
|
14
|
+
return new TextDecoder().decode(bytes);
|
|
15
|
+
}
|
|
16
|
+
writeUnknown(value) {
|
|
17
|
+
this.writeNull();
|
|
18
|
+
}
|
|
19
|
+
writeAny(value) {
|
|
20
|
+
if (value === null || value === undefined) {
|
|
21
|
+
if (value === undefined) {
|
|
22
|
+
return this.writeUndefinedWrapper();
|
|
23
|
+
}
|
|
24
|
+
return this.writeNull();
|
|
25
|
+
}
|
|
26
|
+
if (typeof value === 'boolean') {
|
|
27
|
+
return this.writeBoolean(value);
|
|
28
|
+
}
|
|
29
|
+
if (typeof value === 'string') {
|
|
30
|
+
return this.writeStr(value);
|
|
31
|
+
}
|
|
32
|
+
if (typeof value === 'number') {
|
|
33
|
+
return this.writeNumberAsEjson(value);
|
|
34
|
+
}
|
|
35
|
+
if (Array.isArray(value)) {
|
|
36
|
+
return this.writeArr(value);
|
|
37
|
+
}
|
|
38
|
+
if (value instanceof Date) {
|
|
39
|
+
return this.writeDateAsEjson(value);
|
|
40
|
+
}
|
|
41
|
+
if (value instanceof RegExp) {
|
|
42
|
+
return this.writeRegExpAsEjson(value);
|
|
43
|
+
}
|
|
44
|
+
if (value instanceof values_1.BsonObjectId) {
|
|
45
|
+
return this.writeObjectIdAsEjson(value);
|
|
46
|
+
}
|
|
47
|
+
if (value instanceof values_1.BsonInt32) {
|
|
48
|
+
return this.writeBsonInt32AsEjson(value);
|
|
49
|
+
}
|
|
50
|
+
if (value instanceof values_1.BsonInt64) {
|
|
51
|
+
return this.writeBsonInt64AsEjson(value);
|
|
52
|
+
}
|
|
53
|
+
if (value instanceof values_1.BsonFloat) {
|
|
54
|
+
return this.writeBsonFloatAsEjson(value);
|
|
55
|
+
}
|
|
56
|
+
if (value instanceof values_1.BsonDecimal128) {
|
|
57
|
+
return this.writeBsonDecimal128AsEjson(value);
|
|
58
|
+
}
|
|
59
|
+
if (value instanceof values_1.BsonBinary) {
|
|
60
|
+
return this.writeBsonBinaryAsEjson(value);
|
|
61
|
+
}
|
|
62
|
+
if (value instanceof values_1.BsonJavascriptCode) {
|
|
63
|
+
return this.writeBsonCodeAsEjson(value);
|
|
64
|
+
}
|
|
65
|
+
if (value instanceof values_1.BsonJavascriptCodeWithScope) {
|
|
66
|
+
return this.writeBsonCodeWScopeAsEjson(value);
|
|
67
|
+
}
|
|
68
|
+
if (value instanceof values_1.BsonSymbol) {
|
|
69
|
+
return this.writeBsonSymbolAsEjson(value);
|
|
70
|
+
}
|
|
71
|
+
if (value instanceof values_1.BsonTimestamp) {
|
|
72
|
+
return this.writeBsonTimestampAsEjson(value);
|
|
73
|
+
}
|
|
74
|
+
if (value instanceof values_1.BsonDbPointer) {
|
|
75
|
+
return this.writeBsonDbPointerAsEjson(value);
|
|
76
|
+
}
|
|
77
|
+
if (value instanceof values_1.BsonMinKey) {
|
|
78
|
+
return this.writeBsonMinKeyAsEjson();
|
|
79
|
+
}
|
|
80
|
+
if (value instanceof values_1.BsonMaxKey) {
|
|
81
|
+
return this.writeBsonMaxKeyAsEjson();
|
|
82
|
+
}
|
|
83
|
+
if (typeof value === 'object' && value !== null) {
|
|
84
|
+
return this.writeObj(value);
|
|
85
|
+
}
|
|
86
|
+
return this.writeUnknown(value);
|
|
87
|
+
}
|
|
88
|
+
writeBin(buf) {
|
|
89
|
+
const writer = this.writer;
|
|
90
|
+
const length = buf.length;
|
|
91
|
+
writer.ensureCapacity(38 + 3 + (length << 1));
|
|
92
|
+
const view = writer.view;
|
|
93
|
+
let x = writer.x;
|
|
94
|
+
view.setUint32(x, 577003892);
|
|
95
|
+
x += 4;
|
|
96
|
+
view.setUint32(x, 1631215984);
|
|
97
|
+
x += 4;
|
|
98
|
+
view.setUint32(x, 1886153059);
|
|
99
|
+
x += 4;
|
|
100
|
+
view.setUint32(x, 1635019119);
|
|
101
|
+
x += 4;
|
|
102
|
+
view.setUint32(x, 1848602467);
|
|
103
|
+
x += 4;
|
|
104
|
+
view.setUint32(x, 1952805933);
|
|
105
|
+
x += 4;
|
|
106
|
+
view.setUint32(x, 1937011301);
|
|
107
|
+
x += 4;
|
|
108
|
+
view.setUint32(x, 1634548578);
|
|
109
|
+
x += 4;
|
|
110
|
+
view.setUint32(x, 1634952502);
|
|
111
|
+
x += 4;
|
|
112
|
+
view.setUint16(x, 13356);
|
|
113
|
+
x += 2;
|
|
114
|
+
x = (0, toBase64Bin_1.toBase64Bin)(buf, 0, length, view, x);
|
|
115
|
+
writer.uint8[x++] = 0x22;
|
|
116
|
+
writer.x = x;
|
|
117
|
+
}
|
|
118
|
+
writeStr(str) {
|
|
119
|
+
const writer = this.writer;
|
|
120
|
+
const length = str.length;
|
|
121
|
+
writer.ensureCapacity(length * 4 + 2);
|
|
122
|
+
if (length < 256) {
|
|
123
|
+
let x = writer.x;
|
|
124
|
+
const uint8 = writer.uint8;
|
|
125
|
+
uint8[x++] = 0x22;
|
|
126
|
+
for (let i = 0; i < length; i++) {
|
|
127
|
+
const code = str.charCodeAt(i);
|
|
128
|
+
switch (code) {
|
|
129
|
+
case 34:
|
|
130
|
+
case 92:
|
|
131
|
+
uint8[x++] = 0x5c;
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
if (code < 32 || code > 126) {
|
|
135
|
+
writer.utf8(JSON.stringify(str));
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
else
|
|
139
|
+
uint8[x++] = code;
|
|
140
|
+
}
|
|
141
|
+
uint8[x++] = 0x22;
|
|
142
|
+
writer.x = x;
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
writer.utf8(JSON.stringify(str));
|
|
146
|
+
}
|
|
147
|
+
writeAsciiStr(str) {
|
|
148
|
+
const length = str.length;
|
|
149
|
+
const writer = this.writer;
|
|
150
|
+
writer.ensureCapacity(length * 2 + 2);
|
|
151
|
+
const uint8 = writer.uint8;
|
|
152
|
+
let x = writer.x;
|
|
153
|
+
uint8[x++] = 0x22;
|
|
154
|
+
for (let i = 0; i < length; i++) {
|
|
155
|
+
const code = str.charCodeAt(i);
|
|
156
|
+
switch (code) {
|
|
157
|
+
case 34:
|
|
158
|
+
case 92:
|
|
159
|
+
uint8[x++] = 0x5c;
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
uint8[x++] = code;
|
|
163
|
+
}
|
|
164
|
+
uint8[x++] = 0x22;
|
|
165
|
+
writer.x = x;
|
|
166
|
+
}
|
|
167
|
+
writeArr(arr) {
|
|
168
|
+
const writer = this.writer;
|
|
169
|
+
writer.u8(0x5b);
|
|
170
|
+
const length = arr.length;
|
|
171
|
+
const last = length - 1;
|
|
172
|
+
for (let i = 0; i < last; i++) {
|
|
173
|
+
this.writeAny(arr[i]);
|
|
174
|
+
writer.u8(0x2c);
|
|
175
|
+
}
|
|
176
|
+
if (last >= 0)
|
|
177
|
+
this.writeAny(arr[last]);
|
|
178
|
+
writer.u8(0x5d);
|
|
179
|
+
}
|
|
180
|
+
writeObj(obj) {
|
|
181
|
+
const writer = this.writer;
|
|
182
|
+
const keys = Object.keys(obj);
|
|
183
|
+
const length = keys.length;
|
|
184
|
+
if (!length)
|
|
185
|
+
return writer.u16(0x7b7d);
|
|
186
|
+
writer.u8(0x7b);
|
|
187
|
+
for (let i = 0; i < length; i++) {
|
|
188
|
+
const key = keys[i];
|
|
189
|
+
const value = obj[key];
|
|
190
|
+
this.writeStr(key);
|
|
191
|
+
writer.u8(0x3a);
|
|
192
|
+
this.writeAny(value);
|
|
193
|
+
writer.u8(0x2c);
|
|
194
|
+
}
|
|
195
|
+
writer.uint8[writer.x - 1] = 0x7d;
|
|
196
|
+
}
|
|
197
|
+
writeUndefinedWrapper() {
|
|
198
|
+
const writer = this.writer;
|
|
199
|
+
writer.ensureCapacity(18);
|
|
200
|
+
writer.u8(0x7b);
|
|
201
|
+
writer.u32(0x2224756e);
|
|
202
|
+
writer.u32(0x64656669);
|
|
203
|
+
writer.u32(0x6e656422);
|
|
204
|
+
writer.u8(0x3a);
|
|
205
|
+
writer.u32(0x74727565);
|
|
206
|
+
writer.u8(0x7d);
|
|
207
|
+
}
|
|
208
|
+
writeNumberAsEjson(value) {
|
|
209
|
+
if (this.options.canonical) {
|
|
210
|
+
if (Number.isInteger(value)) {
|
|
211
|
+
if (value >= -2147483648 && value <= 2147483647) {
|
|
212
|
+
this.writeNumberIntWrapper(value);
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
this.writeNumberLongWrapper(value);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
this.writeNumberDoubleWrapper(value);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
if (!isFinite(value)) {
|
|
224
|
+
this.writeNumberDoubleWrapper(value);
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
this.writeNumber(value);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
writeNumberIntWrapper(value) {
|
|
232
|
+
const writer = this.writer;
|
|
233
|
+
writer.u8(0x7b);
|
|
234
|
+
writer.u32(0x22246e75);
|
|
235
|
+
writer.u32(0x6d626572);
|
|
236
|
+
writer.u32(0x496e7422);
|
|
237
|
+
writer.u8(0x3a);
|
|
238
|
+
this.writeStr(value + '');
|
|
239
|
+
writer.u8(0x7d);
|
|
240
|
+
}
|
|
241
|
+
writeNumberLongWrapper(value) {
|
|
242
|
+
const writer = this.writer;
|
|
243
|
+
writer.u8(0x7b);
|
|
244
|
+
writer.u32(0x22246e75);
|
|
245
|
+
writer.u32(0x6d626572);
|
|
246
|
+
writer.u32(0x4c6f6e67);
|
|
247
|
+
writer.u16(0x223a);
|
|
248
|
+
this.writeStr(value + '');
|
|
249
|
+
writer.u8(0x7d);
|
|
250
|
+
}
|
|
251
|
+
writeNumberDoubleWrapper(value) {
|
|
252
|
+
const writer = this.writer;
|
|
253
|
+
writer.u8(0x7b);
|
|
254
|
+
writer.u32(0x22246e75);
|
|
255
|
+
writer.u32(0x6d626572);
|
|
256
|
+
writer.u32(0x446f7562);
|
|
257
|
+
writer.u16(0x6c65);
|
|
258
|
+
writer.u16(0x223a);
|
|
259
|
+
if (!isFinite(value)) {
|
|
260
|
+
this.writeStr(this.formatNonFinite(value));
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
this.writeStr(value + '');
|
|
264
|
+
}
|
|
265
|
+
writer.u8(0x7d);
|
|
266
|
+
}
|
|
267
|
+
writeDateAsEjson(value) {
|
|
268
|
+
const timestamp = value.getTime();
|
|
269
|
+
if (isNaN(timestamp)) {
|
|
270
|
+
throw new Error('Invalid Date');
|
|
271
|
+
}
|
|
272
|
+
const writer = this.writer;
|
|
273
|
+
writer.u8(0x7b);
|
|
274
|
+
writer.u32(0x22246461);
|
|
275
|
+
writer.u16(0x7465);
|
|
276
|
+
writer.u16(0x223a);
|
|
277
|
+
if (this.options.canonical) {
|
|
278
|
+
writer.u8(0x7b);
|
|
279
|
+
writer.u32(0x22246e75);
|
|
280
|
+
writer.u32(0x6d626572);
|
|
281
|
+
writer.u32(0x4c6f6e67);
|
|
282
|
+
writer.u16(0x223a);
|
|
283
|
+
this.writeStr(timestamp + '');
|
|
284
|
+
writer.u8(0x7d);
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
const year = value.getFullYear();
|
|
288
|
+
if (year >= 1970 && year <= 9999) {
|
|
289
|
+
this.writeStr(value.toISOString());
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
writer.u8(0x7b);
|
|
293
|
+
writer.u32(0x22246e75);
|
|
294
|
+
writer.u32(0x6d626572);
|
|
295
|
+
writer.u32(0x4c6f6e67);
|
|
296
|
+
writer.u16(0x223a);
|
|
297
|
+
this.writeStr(timestamp + '');
|
|
298
|
+
writer.u8(0x7d);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
writer.u8(0x7d);
|
|
302
|
+
}
|
|
303
|
+
writeRegExpAsEjson(value) {
|
|
304
|
+
const writer = this.writer;
|
|
305
|
+
writer.u8(0x7b);
|
|
306
|
+
writer.u32(0x22247265);
|
|
307
|
+
writer.u32(0x67756c61);
|
|
308
|
+
writer.u32(0x72457870);
|
|
309
|
+
writer.u32(0x72657373);
|
|
310
|
+
writer.u32(0x696f6e22);
|
|
311
|
+
writer.u16(0x3a7b);
|
|
312
|
+
writer.u32(0x22706174);
|
|
313
|
+
writer.u32(0x7465726e);
|
|
314
|
+
writer.u16(0x223a);
|
|
315
|
+
this.writeStr(value.source);
|
|
316
|
+
writer.u8(0x2c);
|
|
317
|
+
writer.u32(0x226f7074);
|
|
318
|
+
writer.u32(0x696f6e73);
|
|
319
|
+
writer.u16(0x223a);
|
|
320
|
+
this.writeStr(value.flags);
|
|
321
|
+
writer.u16(0x7d7d);
|
|
322
|
+
}
|
|
323
|
+
writeObjectIdAsEjson(value) {
|
|
324
|
+
const writer = this.writer;
|
|
325
|
+
writer.u8(0x7b);
|
|
326
|
+
writer.u32(0x22246f69);
|
|
327
|
+
writer.u16(0x6422);
|
|
328
|
+
writer.u8(0x3a);
|
|
329
|
+
this.writeStr(this.objectIdToHex(value));
|
|
330
|
+
writer.u8(0x7d);
|
|
331
|
+
}
|
|
332
|
+
writeBsonInt32AsEjson(value) {
|
|
333
|
+
if (this.options.canonical) {
|
|
334
|
+
this.writeNumberIntWrapper(value.value);
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
this.writeNumber(value.value);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
writeBsonInt64AsEjson(value) {
|
|
341
|
+
if (this.options.canonical) {
|
|
342
|
+
this.writeNumberLongWrapper(value.value);
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
this.writeNumber(value.value);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
writeBsonFloatAsEjson(value) {
|
|
349
|
+
if (this.options.canonical) {
|
|
350
|
+
this.writeNumberDoubleWrapper(value.value);
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
if (!isFinite(value.value)) {
|
|
354
|
+
this.writeNumberDoubleWrapper(value.value);
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
this.writeNumber(value.value);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
writeBsonDecimal128AsEjson(value) {
|
|
362
|
+
const writer = this.writer;
|
|
363
|
+
writer.u8(0x7b);
|
|
364
|
+
writer.u32(0x22246e75);
|
|
365
|
+
writer.u32(0x6d626572);
|
|
366
|
+
writer.u32(0x44656369);
|
|
367
|
+
writer.u32(0x6d616c22);
|
|
368
|
+
writer.u8(0x3a);
|
|
369
|
+
this.writeStr(this.decimal128ToString(value.data));
|
|
370
|
+
writer.u8(0x7d);
|
|
371
|
+
}
|
|
372
|
+
writeBsonBinaryAsEjson(value) {
|
|
373
|
+
const writer = this.writer;
|
|
374
|
+
writer.u8(0x7b);
|
|
375
|
+
writer.u32(0x22246269);
|
|
376
|
+
writer.u32(0x6e617279);
|
|
377
|
+
writer.u16(0x223a);
|
|
378
|
+
writer.u8(0x7b);
|
|
379
|
+
writer.u32(0x22626173);
|
|
380
|
+
writer.u32(0x65363422);
|
|
381
|
+
writer.u8(0x3a);
|
|
382
|
+
this.writeStr(this.uint8ArrayToBase64(value.data));
|
|
383
|
+
writer.u8(0x2c);
|
|
384
|
+
writer.u32(0x22737562);
|
|
385
|
+
writer.u32(0x54797065);
|
|
386
|
+
writer.u16(0x223a);
|
|
387
|
+
this.writeStr(value.subtype.toString(16).padStart(2, '0'));
|
|
388
|
+
writer.u16(0x7d7d);
|
|
389
|
+
}
|
|
390
|
+
writeBsonCodeAsEjson(value) {
|
|
391
|
+
const writer = this.writer;
|
|
392
|
+
writer.u8(0x7b);
|
|
393
|
+
writer.u32(0x2224636f);
|
|
394
|
+
writer.u16(0x6465);
|
|
395
|
+
writer.u16(0x223a);
|
|
396
|
+
this.writeStr(value.code);
|
|
397
|
+
writer.u8(0x7d);
|
|
398
|
+
}
|
|
399
|
+
writeBsonCodeWScopeAsEjson(value) {
|
|
400
|
+
const writer = this.writer;
|
|
401
|
+
writer.u8(0x7b);
|
|
402
|
+
writer.u32(0x2224636f);
|
|
403
|
+
writer.u16(0x6465);
|
|
404
|
+
writer.u16(0x223a);
|
|
405
|
+
this.writeStr(value.code);
|
|
406
|
+
writer.u8(0x2c);
|
|
407
|
+
writer.u32(0x22247363);
|
|
408
|
+
writer.u32(0x6f706522);
|
|
409
|
+
writer.u8(0x3a);
|
|
410
|
+
this.writeAny(value.scope);
|
|
411
|
+
writer.u8(0x7d);
|
|
412
|
+
}
|
|
413
|
+
writeBsonSymbolAsEjson(value) {
|
|
414
|
+
const writer = this.writer;
|
|
415
|
+
writer.u8(0x7b);
|
|
416
|
+
writer.u32(0x22247379);
|
|
417
|
+
writer.u32(0x6d626f6c);
|
|
418
|
+
writer.u16(0x223a);
|
|
419
|
+
this.writeStr(value.symbol);
|
|
420
|
+
writer.u8(0x7d);
|
|
421
|
+
}
|
|
422
|
+
writeBsonTimestampAsEjson(value) {
|
|
423
|
+
const writer = this.writer;
|
|
424
|
+
writer.u8(0x7b);
|
|
425
|
+
writer.u32(0x22247469);
|
|
426
|
+
writer.u32(0x6d657374);
|
|
427
|
+
writer.u32(0x616d7022);
|
|
428
|
+
writer.u16(0x3a7b);
|
|
429
|
+
writer.u16(0x2274);
|
|
430
|
+
writer.u16(0x223a);
|
|
431
|
+
this.writeNumber(value.timestamp);
|
|
432
|
+
writer.u8(0x2c);
|
|
433
|
+
writer.u16(0x2269);
|
|
434
|
+
writer.u16(0x223a);
|
|
435
|
+
this.writeNumber(value.increment);
|
|
436
|
+
writer.u16(0x7d7d);
|
|
437
|
+
}
|
|
438
|
+
writeBsonDbPointerAsEjson(value) {
|
|
439
|
+
const writer = this.writer;
|
|
440
|
+
writer.u8(0x7b);
|
|
441
|
+
writer.u32(0x22246462);
|
|
442
|
+
writer.u32(0x506f696e);
|
|
443
|
+
writer.u32(0x74657222);
|
|
444
|
+
writer.u16(0x3a7b);
|
|
445
|
+
writer.u32(0x22247265);
|
|
446
|
+
writer.u16(0x6622);
|
|
447
|
+
writer.u8(0x3a);
|
|
448
|
+
this.writeStr(value.name);
|
|
449
|
+
writer.u8(0x2c);
|
|
450
|
+
writer.u32(0x22246964);
|
|
451
|
+
writer.u16(0x223a);
|
|
452
|
+
this.writeAny(value.id);
|
|
453
|
+
writer.u16(0x7d7d);
|
|
454
|
+
}
|
|
455
|
+
writeBsonMinKeyAsEjson() {
|
|
456
|
+
const writer = this.writer;
|
|
457
|
+
writer.u8(0x7b);
|
|
458
|
+
writer.u32(0x22246d69);
|
|
459
|
+
writer.u32(0x6e4b6579);
|
|
460
|
+
writer.u16(0x223a);
|
|
461
|
+
this.writeNumber(1);
|
|
462
|
+
writer.u8(0x7d);
|
|
463
|
+
}
|
|
464
|
+
writeBsonMaxKeyAsEjson() {
|
|
465
|
+
const writer = this.writer;
|
|
466
|
+
writer.u8(0x7b);
|
|
467
|
+
writer.u32(0x22246d61);
|
|
468
|
+
writer.u32(0x784b6579);
|
|
469
|
+
writer.u16(0x223a);
|
|
470
|
+
this.writeNumber(1);
|
|
471
|
+
writer.u8(0x7d);
|
|
472
|
+
}
|
|
473
|
+
formatNonFinite(value) {
|
|
474
|
+
if (value === Infinity)
|
|
475
|
+
return 'Infinity';
|
|
476
|
+
if (value === -Infinity)
|
|
477
|
+
return '-Infinity';
|
|
478
|
+
return 'NaN';
|
|
479
|
+
}
|
|
480
|
+
objectIdToHex(objectId) {
|
|
481
|
+
const timestamp = objectId.timestamp.toString(16).padStart(8, '0');
|
|
482
|
+
const process = objectId.process.toString(16).padStart(10, '0');
|
|
483
|
+
const counter = objectId.counter.toString(16).padStart(6, '0');
|
|
484
|
+
return timestamp + process + counter;
|
|
485
|
+
}
|
|
486
|
+
uint8ArrayToBase64(data) {
|
|
487
|
+
let binary = '';
|
|
488
|
+
for (let i = 0; i < data.length; i++) {
|
|
489
|
+
binary += String.fromCharCode(data[i]);
|
|
490
|
+
}
|
|
491
|
+
return btoa(binary);
|
|
492
|
+
}
|
|
493
|
+
decimal128ToString(data) {
|
|
494
|
+
return '0';
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
exports.EjsonEncoder = EjsonEncoder;
|
|
498
|
+
//# sourceMappingURL=EjsonEncoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EjsonEncoder.js","sourceRoot":"","sources":["../../src/ejson/EjsonEncoder.ts"],"names":[],"mappings":";;;AAAA,2CAcwB;AACxB,qEAAgE;AAEhE,qDAAgD;AAShD,MAAa,YAAa,SAAQ,yBAAW;IAC3C,YACE,MAAiC,EACzB,UAA+B,EAAE;QAEzC,KAAK,CAAC,MAAM,CAAC,CAAC;QAFN,YAAO,GAAP,OAAO,CAA0B;IAG3C,CAAC;IAMM,cAAc,CAAC,KAAc;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAEM,YAAY,CAAC,KAAc;QAChC,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAEM,QAAQ,CAAC,KAAc;QAC5B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACtC,CAAC;YACD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QAGD,IAAI,KAAK,YAAY,qBAAY,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,KAAK,YAAY,kBAAS,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,KAAK,YAAY,kBAAS,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,KAAK,YAAY,kBAAS,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,KAAK,YAAY,uBAAc,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,KAAK,YAAY,mBAAU,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,KAAK,YAAY,2BAAkB,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,KAAK,YAAY,oCAA2B,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,KAAK,YAAY,mBAAU,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,KAAK,YAAY,sBAAa,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,KAAK,YAAY,sBAAa,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,KAAK,YAAY,mBAAU,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACvC,CAAC;QAED,IAAI,KAAK,YAAY,mBAAU,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACvC,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAgC,CAAC,CAAC;QACzD,CAAC;QAGD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAEM,QAAQ,CAAC,GAAe;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,CAAC,cAAc,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QAE9C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAa,CAAC,CAAC;QACjC,CAAC,IAAI,CAAC,CAAC;QACP,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAa,CAAC,CAAC;QACjC,CAAC,IAAI,CAAC,CAAC;QACP,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAa,CAAC,CAAC;QACjC,CAAC,IAAI,CAAC,CAAC;QACP,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAa,CAAC,CAAC;QACjC,CAAC,IAAI,CAAC,CAAC;QACP,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAa,CAAC,CAAC;QACjC,CAAC,IAAI,CAAC,CAAC;QACP,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAa,CAAC,CAAC;QACjC,CAAC,IAAI,CAAC,CAAC;QACP,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAa,CAAC,CAAC;QACjC,CAAC,IAAI,CAAC,CAAC;QACP,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAa,CAAC,CAAC;QACjC,CAAC,IAAI,CAAC,CAAC;QACP,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAa,CAAC,CAAC;QACjC,CAAC,IAAI,CAAC,CAAC;QACP,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAO,CAAC,CAAC;QAC3B,CAAC,IAAI,CAAC,CAAC;QACP,CAAC,GAAG,IAAA,yBAAW,EAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QACzB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAEM,QAAQ,CAAC,GAAW;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACtC,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;YACjB,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC3B,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC/B,QAAQ,IAAI,EAAE,CAAC;oBACb,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE;wBACL,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;wBAClB,MAAM;gBACV,CAAC;gBACD,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;oBAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjC,OAAO;gBACT,CAAC;;oBAAM,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;YAC3B,CAAC;YACD,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;YAClB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;YACb,OAAO;QACT,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IAEM,aAAa,CAAC,GAAW;QAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QACjB,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC/B,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE;oBACL,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;oBAClB,MAAM;YACV,CAAC;YACD,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QAClB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAEM,QAAQ,CAAC,GAAc;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,IAAI,IAAI,CAAC;YAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAEM,QAAQ,CAAC,GAA4B;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACnB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;IACpC,CAAC;IAIO,qBAAqB;QAE3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAEO,kBAAkB,CAAC,KAAa;QACtC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3B,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAE5B,IAAI,KAAK,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;oBAChD,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;aAAM,CAAC;YAEN,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrB,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,KAAa;QAEzC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QAC1B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAEO,sBAAsB,CAAC,KAAa;QAE1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QAC1B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAEO,wBAAwB,CAAC,KAAa;QAE5C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAEO,gBAAgB,CAAC,KAAW;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAElC,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEnB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAE3B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;YAC9B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YAEN,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YACjC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACjC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBAEN,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnB,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;gBAC9B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QACD,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAEO,kBAAkB,CAAC,KAAa;QAEtC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAEO,oBAAoB,CAAC,KAAmB;QAE9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAEO,qBAAqB,CAAC,KAAgB;QAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,KAAgB;QAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,KAAgB;QAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,0BAA0B,CAAC,KAAqB;QAEtD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAEO,sBAAsB,CAAC,KAAiB;QAE9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAEO,oBAAoB,CAAC,KAAyB;QAEpD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAEO,0BAA0B,CAAC,KAAkC;QAEnE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAEO,sBAAsB,CAAC,KAAiB;QAE9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAEO,yBAAyB,CAAC,KAAoB;QAEpD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAEO,yBAAyB,CAAC,KAAoB;QAEpD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAEO,sBAAsB;QAE5B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAEO,sBAAsB;QAE5B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAIO,eAAe,CAAC,KAAa;QACnC,IAAI,KAAK,KAAK,QAAQ;YAAE,OAAO,UAAU,CAAC;QAC1C,IAAI,KAAK,KAAK,CAAC,QAAQ;YAAE,OAAO,WAAW,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,aAAa,CAAC,QAAsB;QAE1C,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/D,OAAO,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IACvC,CAAC;IAEO,kBAAkB,CAAC,IAAgB;QAEzC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAEO,kBAAkB,CAAC,IAAgB;QAIzC,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAtjBD,oCAsjBC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { EjsonEncoder, type EjsonEncoderOptions } from './EjsonEncoder';
|
|
2
|
+
export { EjsonDecoder, type EjsonDecoderOptions } from './EjsonDecoder';
|
|
3
|
+
export { BsonBinary, BsonDbPointer, BsonDecimal128, BsonFloat, BsonInt32, BsonInt64, BsonJavascriptCode, BsonJavascriptCodeWithScope, BsonMaxKey, BsonMinKey, BsonObjectId, BsonSymbol, BsonTimestamp, } from '../bson/values';
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BsonTimestamp = exports.BsonSymbol = exports.BsonObjectId = exports.BsonMinKey = exports.BsonMaxKey = exports.BsonJavascriptCodeWithScope = exports.BsonJavascriptCode = exports.BsonInt64 = exports.BsonInt32 = exports.BsonFloat = exports.BsonDecimal128 = exports.BsonDbPointer = exports.BsonBinary = exports.EjsonDecoder = exports.EjsonEncoder = void 0;
|
|
4
|
+
var EjsonEncoder_1 = require("./EjsonEncoder");
|
|
5
|
+
Object.defineProperty(exports, "EjsonEncoder", { enumerable: true, get: function () { return EjsonEncoder_1.EjsonEncoder; } });
|
|
6
|
+
var EjsonDecoder_1 = require("./EjsonDecoder");
|
|
7
|
+
Object.defineProperty(exports, "EjsonDecoder", { enumerable: true, get: function () { return EjsonDecoder_1.EjsonDecoder; } });
|
|
8
|
+
var values_1 = require("../bson/values");
|
|
9
|
+
Object.defineProperty(exports, "BsonBinary", { enumerable: true, get: function () { return values_1.BsonBinary; } });
|
|
10
|
+
Object.defineProperty(exports, "BsonDbPointer", { enumerable: true, get: function () { return values_1.BsonDbPointer; } });
|
|
11
|
+
Object.defineProperty(exports, "BsonDecimal128", { enumerable: true, get: function () { return values_1.BsonDecimal128; } });
|
|
12
|
+
Object.defineProperty(exports, "BsonFloat", { enumerable: true, get: function () { return values_1.BsonFloat; } });
|
|
13
|
+
Object.defineProperty(exports, "BsonInt32", { enumerable: true, get: function () { return values_1.BsonInt32; } });
|
|
14
|
+
Object.defineProperty(exports, "BsonInt64", { enumerable: true, get: function () { return values_1.BsonInt64; } });
|
|
15
|
+
Object.defineProperty(exports, "BsonJavascriptCode", { enumerable: true, get: function () { return values_1.BsonJavascriptCode; } });
|
|
16
|
+
Object.defineProperty(exports, "BsonJavascriptCodeWithScope", { enumerable: true, get: function () { return values_1.BsonJavascriptCodeWithScope; } });
|
|
17
|
+
Object.defineProperty(exports, "BsonMaxKey", { enumerable: true, get: function () { return values_1.BsonMaxKey; } });
|
|
18
|
+
Object.defineProperty(exports, "BsonMinKey", { enumerable: true, get: function () { return values_1.BsonMinKey; } });
|
|
19
|
+
Object.defineProperty(exports, "BsonObjectId", { enumerable: true, get: function () { return values_1.BsonObjectId; } });
|
|
20
|
+
Object.defineProperty(exports, "BsonSymbol", { enumerable: true, get: function () { return values_1.BsonSymbol; } });
|
|
21
|
+
Object.defineProperty(exports, "BsonTimestamp", { enumerable: true, get: function () { return values_1.BsonTimestamp; } });
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ejson/index.ts"],"names":[],"mappings":";;;AAIA,+CAAsE;AAA9D,4GAAA,YAAY,OAAA;AACpB,+CAAsE;AAA9D,4GAAA,YAAY,OAAA;AAGpB,yCAcwB;AAbtB,oGAAA,UAAU,OAAA;AACV,uGAAA,aAAa,OAAA;AACb,wGAAA,cAAc,OAAA;AACd,mGAAA,SAAS,OAAA;AACT,mGAAA,SAAS,OAAA;AACT,mGAAA,SAAS,OAAA;AACT,4GAAA,kBAAkB,OAAA;AAClB,qHAAA,2BAA2B,OAAA;AAC3B,oGAAA,UAAU,OAAA;AACV,oGAAA,UAAU,OAAA;AACV,sGAAA,YAAY,OAAA;AACZ,oGAAA,UAAU,OAAA;AACV,uGAAA,aAAa,OAAA"}
|