Handling Circular References Without Recursion
Correctness
Following testcase breaks your code:
const o={};
o.x = o.y = {};

This is due to objectTracker tracks all seen values not all parent values.
Interface Design

initialPathValue looks strange to me. The parameter has no meaning to this function as far as I can tell.
Dot separated path won't work if any .s in keys. For example: { &quot;a.b&quot;: {}, &quot;a&quot;: { &quot;b&quot;: {} } }. To avoid any confusion, I would suggest use string[] instead.

Implementation

objectStack is named as Stack, but you are using it as a Queue. I believe there should be a mistake here. Maybe you want pop() instead of shift().
parentValue is a WeakSet. But I cannot find a reason why any objects in it will be garbage collected during the functions life cycle. So maybe a simple Set would fint your requirement.