cbor-x 1.5.3 → 1.5.5
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 +1 -1
- package/decode.js +24 -4
- package/dist/decode-no-eval.cjs +24 -4
- package/dist/decode-no-eval.cjs.map +1 -1
- package/dist/index-no-eval.cjs +32 -5
- package/dist/index-no-eval.cjs.map +1 -1
- package/dist/index-no-eval.min.js +1 -1
- package/dist/index-no-eval.min.js.map +1 -1
- package/dist/index.js +32 -5
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/node.cjs +41 -12
- package/dist/node.cjs.map +1 -1
- package/encode.js +8 -1
- package/index.d.ts +2 -0
- package/package.json +1 -1
- package/stream.js +9 -7
package/dist/node.cjs
CHANGED
|
@@ -860,9 +860,18 @@ currentExtensions[27] = (data) => { // http://cbor.schmorp.de/generic-object
|
|
|
860
860
|
return (glbl[data[0]] || Error)(data[1], data[2])
|
|
861
861
|
};
|
|
862
862
|
const packedTable = (read) => {
|
|
863
|
-
if (src[position$1++] != 0x84)
|
|
864
|
-
|
|
863
|
+
if (src[position$1++] != 0x84) {
|
|
864
|
+
let error = new Error('Packed values structure must be followed by a 4 element array');
|
|
865
|
+
if (src.length < position$1)
|
|
866
|
+
error.incomplete = true;
|
|
867
|
+
throw error
|
|
868
|
+
}
|
|
865
869
|
let newPackedValues = read(); // packed values
|
|
870
|
+
if (!newPackedValues || !newPackedValues.length) {
|
|
871
|
+
let error = new Error('Packed values structure must be followed by a 4 element array');
|
|
872
|
+
error.incomplete = true;
|
|
873
|
+
throw error
|
|
874
|
+
}
|
|
866
875
|
packedValues = packedValues ? newPackedValues.concat(packedValues.slice(newPackedValues.length)) : newPackedValues;
|
|
867
876
|
packedValues.prefixes = read();
|
|
868
877
|
packedValues.suffixes = read();
|
|
@@ -880,7 +889,10 @@ currentExtensions[PACKED_REFERENCE_TAG_ID] = (data) => { // packed reference
|
|
|
880
889
|
}
|
|
881
890
|
if (typeof data == 'number')
|
|
882
891
|
return packedValues[16 + (data >= 0 ? 2 * data : (-2 * data - 1))]
|
|
883
|
-
|
|
892
|
+
let error = new Error('No support for non-integer packed references yet');
|
|
893
|
+
if (data === undefined)
|
|
894
|
+
error.incomplete = true;
|
|
895
|
+
throw error
|
|
884
896
|
};
|
|
885
897
|
|
|
886
898
|
// The following code is an incomplete implementation of http://cbor.schmorp.de/stringref
|
|
@@ -1006,7 +1018,15 @@ function registerTypedArray(TypedArray, tag) {
|
|
|
1006
1018
|
currentExtensions[littleEndian ? tag : (tag - 4)] = (bytesPerElement == 1 || littleEndian == isLittleEndianMachine$1) ? (buffer) => {
|
|
1007
1019
|
if (!TypedArray)
|
|
1008
1020
|
throw new Error('Could not find typed array for code ' + tag)
|
|
1009
|
-
|
|
1021
|
+
if (!currentDecoder.copyBuffers) {
|
|
1022
|
+
// try provide a direct view, but will only work if we are byte-aligned
|
|
1023
|
+
if (bytesPerElement === 1 ||
|
|
1024
|
+
bytesPerElement === 2 && !(buffer.byteOffset & 1) ||
|
|
1025
|
+
bytesPerElement === 4 && !(buffer.byteOffset & 3) ||
|
|
1026
|
+
bytesPerElement === 8 && !(buffer.byteOffset & 7))
|
|
1027
|
+
return new TypedArray(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
1028
|
+
}
|
|
1029
|
+
// we have to slice/copy here to get a new ArrayBuffer, if we are not word/byte aligned
|
|
1010
1030
|
return new TypedArray(Uint8Array.prototype.slice.call(buffer, 0).buffer)
|
|
1011
1031
|
} : buffer => {
|
|
1012
1032
|
if (!TypedArray)
|
|
@@ -1696,6 +1716,13 @@ class Encoder extends Decoder {
|
|
|
1696
1716
|
error.iteratorNotHandled = true;
|
|
1697
1717
|
throw error;
|
|
1698
1718
|
}
|
|
1719
|
+
if (this.useToJSON && value.toJSON) {
|
|
1720
|
+
const json = value.toJSON();
|
|
1721
|
+
// if for some reason value.toJSON returns itself it'll loop forever
|
|
1722
|
+
if (json !== value)
|
|
1723
|
+
return encode(json)
|
|
1724
|
+
}
|
|
1725
|
+
|
|
1699
1726
|
// no extension found, write as object
|
|
1700
1727
|
writeObject(value, !value.hasOwnProperty); // if it doesn't have hasOwnProperty, don't do hasOwnProperty checks
|
|
1701
1728
|
}
|
|
@@ -1749,7 +1776,7 @@ class Encoder extends Decoder {
|
|
|
1749
1776
|
}
|
|
1750
1777
|
if (encoder.keyMap) {
|
|
1751
1778
|
for (let i = 0; i < length; i++) {
|
|
1752
|
-
encode(encodeKey(keys[i]));
|
|
1779
|
+
encode(encoder.encodeKey(keys[i]));
|
|
1753
1780
|
encode(vals[i]);
|
|
1754
1781
|
}
|
|
1755
1782
|
} else {
|
|
@@ -2355,10 +2382,12 @@ class EncoderStream extends stream.Transform {
|
|
|
2355
2382
|
this.encoder = options.encoder || new Encoder(options);
|
|
2356
2383
|
}
|
|
2357
2384
|
async _transform(value, encoding, callback) {
|
|
2358
|
-
|
|
2359
|
-
this.
|
|
2360
|
-
|
|
2361
|
-
|
|
2385
|
+
try {
|
|
2386
|
+
for await (let chunk of this.encoder.encodeAsAsyncIterable(value)) {
|
|
2387
|
+
this.push(chunk);
|
|
2388
|
+
}
|
|
2389
|
+
callback();
|
|
2390
|
+
} catch(error) { callback (error); }
|
|
2362
2391
|
}
|
|
2363
2392
|
}
|
|
2364
2393
|
|
|
@@ -2379,13 +2408,14 @@ class DecoderStream extends stream.Transform {
|
|
|
2379
2408
|
let values;
|
|
2380
2409
|
try {
|
|
2381
2410
|
values = this.decoder.decodeMultiple(chunk);
|
|
2411
|
+
callback();
|
|
2382
2412
|
} catch(error) {
|
|
2383
2413
|
if (error.incomplete) {
|
|
2384
2414
|
this.incompleteBuffer = chunk.slice(error.lastPosition);
|
|
2385
2415
|
values = error.values;
|
|
2416
|
+
} else {
|
|
2417
|
+
callback(error);
|
|
2386
2418
|
}
|
|
2387
|
-
else
|
|
2388
|
-
throw error
|
|
2389
2419
|
} finally {
|
|
2390
2420
|
for (let value of values || []) {
|
|
2391
2421
|
if (value === null)
|
|
@@ -2393,7 +2423,6 @@ class DecoderStream extends stream.Transform {
|
|
|
2393
2423
|
this.push(value);
|
|
2394
2424
|
}
|
|
2395
2425
|
}
|
|
2396
|
-
if (callback) callback();
|
|
2397
2426
|
}
|
|
2398
2427
|
getNullValue() {
|
|
2399
2428
|
return Symbol.for(null)
|