Briefly, this happens:
const obj = {}
const map = new Map([['a', obj], ['b', obj]])
const ok = stringify(map)
// "new Map([['a',{}],['b',{}]])"
const bad = stringify(map, null, null, { references: true })
// "(function(){var x=new Map([['a',{}],['b',undefined]]);x[1][1]=x[0][1];return x;}())"
eval(bad)
// Uncaught TypeError: Cannot read property '1' of undefined
The problem here is that the object type isn't tracked, and therefore isn't taken into account by stringifyPath. The . and [] forms work fine for arrays and objects, but don't for Maps and Sets. The path in those cases is referring to the Array.from() constructions, rather than the resulting objects.
Briefly, this happens:
The problem here is that the object type isn't tracked, and therefore isn't taken into account by
stringifyPath. The.and[]forms work fine for arrays and objects, but don't for Maps and Sets. The path in those cases is referring to theArray.from()constructions, rather than the resulting objects.