@jsonjoy.com/json-pack 1.2.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.
@@ -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":"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"}
@@ -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"}
@@ -0,0 +1,7 @@
1
+ import { IonDecoderBase } from './IonDecoderBase';
2
+ import type { IReader, IReaderResettable } from '@jsonjoy.com/util/lib/buffers';
3
+ export declare class IonDecoder<R extends IReader & IReaderResettable = IReader & IReaderResettable> extends IonDecoderBase<R> {
4
+ constructor(reader?: R);
5
+ decode(data: Uint8Array): unknown;
6
+ read(): unknown;
7
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IonDecoder = void 0;
4
+ const IonDecoderBase_1 = require("./IonDecoderBase");
5
+ const Import_1 = require("./Import");
6
+ const symbols_1 = require("./symbols");
7
+ class IonDecoder extends IonDecoderBase_1.IonDecoderBase {
8
+ constructor(reader) {
9
+ super(reader);
10
+ }
11
+ decode(data) {
12
+ this.reader.reset(data);
13
+ this.symbols = new Import_1.Import(symbols_1.systemSymbolImport, []);
14
+ this.validateBVM();
15
+ this.readSymbolTable();
16
+ return this.val();
17
+ }
18
+ read() {
19
+ return this.val();
20
+ }
21
+ }
22
+ exports.IonDecoder = IonDecoder;
23
+ //# sourceMappingURL=IonDecoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IonDecoder.js","sourceRoot":"","sources":["../../src/ion/IonDecoder.ts"],"names":[],"mappings":";;;AACA,qDAAgD;AAChD,qCAAgC;AAChC,uCAA6C;AAG7C,MAAa,UAAgF,SAAQ,+BAAiB;IACpH,YAAY,MAAU;QACpB,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,IAAgB;QAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAGxB,IAAI,CAAC,OAAO,GAAG,IAAI,eAAM,CAAC,4BAAkB,EAAE,EAAE,CAAC,CAAC;QAGlD,IAAI,CAAC,WAAW,EAAE,CAAC;QAGnB,IAAI,CAAC,eAAe,EAAE,CAAC;QAGvB,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;IAEM,IAAI;QACT,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;CACF;AAxBD,gCAwBC"}
@@ -0,0 +1,25 @@
1
+ import type { CachedUtf8Decoder } from '@jsonjoy.com/util/lib/buffers/utf8/CachedUtf8Decoder';
2
+ import type { IReader, IReaderResettable } from '@jsonjoy.com/util/lib/buffers';
3
+ import { Import } from './Import';
4
+ export declare class IonDecoderBase<R extends IReader & IReaderResettable = IReader & IReaderResettable> {
5
+ readonly reader: R;
6
+ readonly utf8Decoder: CachedUtf8Decoder;
7
+ protected symbols?: Import;
8
+ constructor(reader?: R);
9
+ val(): unknown;
10
+ protected readNull(length: number): null;
11
+ protected readBool(length: number): boolean | null;
12
+ protected readUint(length: number): number | null;
13
+ protected readNint(length: number): number | null;
14
+ protected readFloat(length: number): number | null;
15
+ protected readString(length: number): string | null;
16
+ protected readBinary(length: number): Uint8Array | null;
17
+ protected readList(length: number): unknown[] | null;
18
+ protected readStruct(length: number): Record<string, unknown> | null;
19
+ protected readAnnotation(length: number): unknown;
20
+ protected readVUint(): number;
21
+ protected readVInt(): number;
22
+ protected getSymbolText(symbolId: number): string;
23
+ protected validateBVM(): void;
24
+ protected readSymbolTable(): void;
25
+ }