diff --git a/src/multiaddr.ts b/src/multiaddr.ts index 919a194b..8063c65d 100644 --- a/src/multiaddr.ts +++ b/src/multiaddr.ts @@ -86,7 +86,7 @@ export class Multiaddr implements MultiaddrInterface { getComponents (): Component[] { return [ - ...this.#components + ...this.#components.map(c => ({ ...c })) ] } diff --git a/test/index.spec.ts b/test/index.spec.ts index f73f274a..8b28688a 100644 --- a/test/index.spec.ts +++ b/test/index.spec.ts @@ -423,6 +423,14 @@ describe('.getComponents', () => { expect(ma.getComponents()).to.have.nested.property('[0].code', CODE_IP4) }) + + it('does not allow modifying individual parts', () => { + const ma = multiaddr('/ip4/0.0.0.0/tcp/1234') + const components = ma.getComponents() + components[0].value = '1.1.1.1' + + expect(ma.getComponents()).to.have.nested.property('[0].value', '0.0.0.0') + }) }) describe('.decapsulate', () => {