title: What is the difference between assert.deepStrictEqual and assert.deepEqual?
body: <pre class="lang-js prettyprint-override"><code>const assert = require('node:assert')
  
  ...
  
  it('should clone', () =&gt; {
    const input = { foo: 'bar' }
    const clone = structuredClone(input)
    assert.deepEqual(input, clone)
    assert.deepStrictEqual(input, clone)
  })
  </code></pre>
  <p><code>assert.deepEqual</code> passes without errors.</p>
  <p>On <code>assert.deepStrictEqual</code> an error saying:</p>
  <pre><code>operator: 'deepStrictEqual'
  message: 'Values have same structure but are not reference-equal:\n\n{\n  foo: 'bar'\n}\n'
  name: 'AssertionError'
  </code></pre>
  <p>What does that error message mean?</p>
  <p>What are the differences between these functions?</p>
  <p>I am using node.js 18.8.0, jest 29.0.3.</p>