The thing is, that shallow copy only changes first level, but deeper levels are still wrapped into readonly proxy, so I recommend doing like this
getResults(response) {
const {data, error} = response;
if (data) {
this.results = data.map(item => Object.assign({}, item, {
contentNodes: {
source: {
url: 'string'
}
}
}));
console.log ('cms', this.results);
} else if (error) {
// handle error
}
}
so you create a separate object and do not modify returned from the Apex.
Not sure about this deep assignment, you might want to do it via separate variable, but Object.assign will do it's job const tmp= Object.assign({}, item)