Unpack failed when `structuredClone: true` and `bundleStrings: true`
yume-chan opened this issue · comments
Repro:
const { Packr } = require('msgpackr')
const packer = new Packr({
structuredClone: true, // both options must be enabled
bundleStrings: true,
});
const v = {};
const shared = {
aaaa: v, // any key length >= 4
b: v,
};
console.log(packer.pack(shared).toString('base64'))
console.log(packer.unpack(packer.pack(shared)));
Actual:
<project_folder>\node_modules\msgpackr\dist\node.cjs:220
throw error
^
Error: Expected string
at readOnlyJSString (<project_folder>\node_modules\msgpackr\dist\node.cjs:848:11)
at Array.currentExtensions.<computed> (<project_folder>\node_modules\msgpackr\dist\node.cjs:1028:20)
at readExt (<project_folder>\node_modules\msgpackr\dist\node.cjs:865:33)
at read (<project_folder>\node_modules\msgpackr\dist\node.cjs:417:12)
at read (<project_folder>\node_modules\msgpackr\dist\node.cjs:271:16)
at recordDefinition (<project_folder>\node_modules\msgpackr\dist\node.cjs:953:15)
at read (<project_folder>\node_modules\msgpackr\dist\node.cjs:392:13)
at checkedRead (<project_folder>\node_modules\msgpackr\dist\node.cjs:193:13)
at Packr.unpack (<project_folder>\node_modules\msgpackr\dist\node.cjs:103:12)
at Object.<anonymous> (<project_folder>\index.js:17:20)
Node version: v16.17.0
msgpackr version: 1.7.0
Published a fix in 1.7.1.
Fix verified in 1.7.1, thanks!
Sorry for reopening, 1.7.1 has a regression on this case, it used to work in 1.7.0:
const { Packr } = require('msgpackr')
const packer = new Packr({
structuredClone: true, // both options must be enabled
bundleStrings: true,
});
const shared = {};
shared.aaaa = shared; // key length >= 4
packer.unpack(packer.pack(shared));
<project_folder>\msgpackr\dist\node.cjs:220
throw error
^
Error: Expected string
at readOnlyJSString (<project_folder>\msgpackr\dist\node.cjs:848:11)
at Array.currentExtensions.<computed> (<project_folder>\msgpackr\dist\node.cjs:1028:20)
at readExt (<project_folder>\msgpackr\dist\node.cjs:865:33)
at read (<project_folder>\msgpackr\dist\node.cjs:417:12)
at read (<project_folder>\msgpackr\dist\node.cjs:271:16)
at recordDefinition (<project_folder>\msgpackr\dist\node.cjs:953:15)
at read (<project_folder>\msgpackr\dist\node.cjs:392:13)
at Array.currentExtensions.<computed> (<project_folder>\msgpackr\dist\node.cjs:991:25)
at readExt (<project_folder>\msgpackr\dist\node.cjs:865:33)
at read (<project_folder>\msgpackr\dist\node.cjs:417:12) {
incomplete: true
}
8b020f0 on master branch still fails.
Should be fixed in v1.7.2, let me know if you see any issues with it.
I don't see any issues now. Thanks again!