msgpackr 1.8.0 → 1.8.1
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 +19 -4
- package/dist/{index-no-eval.js → index-no-eval.cjs} +37 -20
- package/dist/index-no-eval.cjs.map +1 -0
- package/dist/index-no-eval.min.js +1 -1
- package/dist/index-no-eval.min.js.map +1 -1
- package/dist/index.js +36 -19
- 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 +36 -19
- package/dist/node.cjs.map +1 -1
- package/dist/test.js +180 -19
- package/dist/test.js.map +1 -1
- package/dist/unpack-no-eval.cjs +1158 -0
- package/dist/unpack-no-eval.cjs.map +1 -0
- package/pack.js +36 -19
- package/package.json +4 -2
- package/rollup.config.js +13 -1
- package/dist/index-no-eval.js.map +0 -1
package/dist/node.cjs
CHANGED
|
@@ -1334,6 +1334,23 @@ class Packr extends Unpackr {
|
|
|
1334
1334
|
position = start;
|
|
1335
1335
|
}
|
|
1336
1336
|
};
|
|
1337
|
+
const packArray = (value) => {
|
|
1338
|
+
var length = value.length;
|
|
1339
|
+
if (length < 0x10) {
|
|
1340
|
+
target[position++] = 0x90 | length;
|
|
1341
|
+
} else if (length < 0x10000) {
|
|
1342
|
+
target[position++] = 0xdc;
|
|
1343
|
+
target[position++] = length >> 8;
|
|
1344
|
+
target[position++] = length & 0xff;
|
|
1345
|
+
} else {
|
|
1346
|
+
target[position++] = 0xdd;
|
|
1347
|
+
targetView.setUint32(position, length);
|
|
1348
|
+
position += 4;
|
|
1349
|
+
}
|
|
1350
|
+
for (let i = 0; i < length; i++) {
|
|
1351
|
+
pack(value[i]);
|
|
1352
|
+
}
|
|
1353
|
+
};
|
|
1337
1354
|
const pack = (value) => {
|
|
1338
1355
|
if (position > safeEnd)
|
|
1339
1356
|
target = makeRoom(position);
|
|
@@ -1516,22 +1533,8 @@ class Packr extends Unpackr {
|
|
|
1516
1533
|
let constructor = value.constructor;
|
|
1517
1534
|
if (constructor === Object) {
|
|
1518
1535
|
writeObject(value, true);
|
|
1519
|
-
} else if (constructor === Array
|
|
1520
|
-
|
|
1521
|
-
if (length < 0x10) {
|
|
1522
|
-
target[position++] = 0x90 | length;
|
|
1523
|
-
} else if (length < 0x10000) {
|
|
1524
|
-
target[position++] = 0xdc;
|
|
1525
|
-
target[position++] = length >> 8;
|
|
1526
|
-
target[position++] = length & 0xff;
|
|
1527
|
-
} else {
|
|
1528
|
-
target[position++] = 0xdd;
|
|
1529
|
-
targetView.setUint32(position, length);
|
|
1530
|
-
position += 4;
|
|
1531
|
-
}
|
|
1532
|
-
for (let i = 0; i < length; i++) {
|
|
1533
|
-
pack(value[i]);
|
|
1534
|
-
}
|
|
1536
|
+
} else if (constructor === Array) {
|
|
1537
|
+
packArray(value);
|
|
1535
1538
|
} else if (constructor === Map) {
|
|
1536
1539
|
length = value.size;
|
|
1537
1540
|
if (length < 0x10) {
|
|
@@ -1560,7 +1563,16 @@ class Packr extends Unpackr {
|
|
|
1560
1563
|
target[position++] = extension.type;
|
|
1561
1564
|
target[position++] = 0;
|
|
1562
1565
|
}
|
|
1563
|
-
|
|
1566
|
+
let writeResult = extension.write.call(this, value);
|
|
1567
|
+
if (writeResult === value) { // avoid infinite recursion
|
|
1568
|
+
if (Array.isArray(value)) {
|
|
1569
|
+
packArray(value);
|
|
1570
|
+
} else {
|
|
1571
|
+
writeObject(value);
|
|
1572
|
+
}
|
|
1573
|
+
} else {
|
|
1574
|
+
pack(writeResult);
|
|
1575
|
+
}
|
|
1564
1576
|
return
|
|
1565
1577
|
}
|
|
1566
1578
|
let currentTarget = target;
|
|
@@ -1597,8 +1609,13 @@ class Packr extends Unpackr {
|
|
|
1597
1609
|
return
|
|
1598
1610
|
}
|
|
1599
1611
|
}
|
|
1600
|
-
//
|
|
1601
|
-
|
|
1612
|
+
// check isArray after extensions, because extensions can extend Array
|
|
1613
|
+
if (Array.isArray(value)) {
|
|
1614
|
+
packArray(value);
|
|
1615
|
+
} else {
|
|
1616
|
+
// no extension found, write as object
|
|
1617
|
+
writeObject(value, !value.hasOwnProperty); // if it doesn't have hasOwnProperty, don't do hasOwnProperty checks
|
|
1618
|
+
}
|
|
1602
1619
|
}
|
|
1603
1620
|
}
|
|
1604
1621
|
} else if (type === 'boolean') {
|