msgpackr 1.11.9 → 1.11.11
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 -3
- package/benchmark.md +26 -16
- package/dist/index-no-eval.cjs +11 -11
- 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 +11 -11
- 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 +11 -11
- package/dist/node.cjs.map +1 -1
- package/dist/test.js +11 -11
- package/dist/test.js.map +1 -1
- package/dist/unpack-no-eval.cjs +11 -11
- package/dist/unpack-no-eval.cjs.map +1 -1
- package/index.d.cts +2 -2
- package/index.d.ts +2 -2
- package/package.json +1 -1
- package/unpack.js +11 -11
package/dist/index.js
CHANGED
|
@@ -30,13 +30,6 @@
|
|
|
30
30
|
var sequentialMode = false;
|
|
31
31
|
var inlineObjectReadThreshold = 2;
|
|
32
32
|
var readStruct;
|
|
33
|
-
// no-eval build
|
|
34
|
-
try {
|
|
35
|
-
new Function('');
|
|
36
|
-
} catch(error) {
|
|
37
|
-
// if eval variants are not supported, do not create inline object readers ever
|
|
38
|
-
inlineObjectReadThreshold = Infinity;
|
|
39
|
-
}
|
|
40
33
|
|
|
41
34
|
class Unpackr {
|
|
42
35
|
constructor(options) {
|
|
@@ -502,11 +495,18 @@
|
|
|
502
495
|
function readObject() {
|
|
503
496
|
// This initial function is quick to instantiate, but runs slower. After several iterations pay the cost to build the faster function
|
|
504
497
|
if (readObject.count++ > inlineObjectReadThreshold) {
|
|
505
|
-
let
|
|
506
|
-
|
|
498
|
+
let optimizedReadObject;
|
|
499
|
+
try {
|
|
500
|
+
optimizedReadObject = structure.read = (new Function('r', 'return function(){return ' + (currentUnpackr.freezeData ? 'Object.freeze' : '') +
|
|
501
|
+
'({' + structure.map(key => key === '__proto__' ? '__proto_:r()' : validName.test(key) ? key + ':r()' : ('[' + JSON.stringify(key) + ']:r()')).join(',') + '})}'))(read);
|
|
502
|
+
} catch(error) {
|
|
503
|
+
// in CF workers, the new Function call could begin to fail at any point in time
|
|
504
|
+
inlineObjectReadThreshold = Infinity; // disable going forward
|
|
505
|
+
return readObject(); // recursively try again
|
|
506
|
+
}
|
|
507
507
|
if (structure.highByte === 0)
|
|
508
508
|
structure.read = createSecondByteReader(firstId, structure.read);
|
|
509
|
-
return
|
|
509
|
+
return optimizedReadObject() // second byte is already read, if there is one so immediately read object
|
|
510
510
|
}
|
|
511
511
|
let object = {};
|
|
512
512
|
for (let i = 0, l = structure.length; i < l; i++) {
|
|
@@ -976,7 +976,7 @@
|
|
|
976
976
|
if (length <= 40) {
|
|
977
977
|
let out = view.getBigUint64(start);
|
|
978
978
|
for (let i = start + 8; i < end; i += 8) {
|
|
979
|
-
out <<= BigInt(
|
|
979
|
+
out <<= BigInt(64);
|
|
980
980
|
out |= view.getBigUint64(i);
|
|
981
981
|
}
|
|
982
982
|
return out
|