Skip to content

Repeated references in Maps & Sets produce broken outputΒ #34

@eemeli

Description

@eemeli

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions