Introduce markRaw helper

What does this MR do and why?

This MR introduces markRaw helper, which mimics exact behavior of markRaw helper from Vue.js 3:

It is needed due to different nature of Vue.js 3 reactivity (proxy vs getters-setters) which "wraps" objects. Wrapping objects into proxies is usually transparent, except only one scenario - strict equality ===

Usage of monaco-editor with Vue.js 3 results in infinite loop in this part:

image4

(proxy will never pass deep equality check). In order to solve this problem we need to tell Vue.js that certain objects should not become reactive (editor instances)

Please note, that adding extra field will not affect Vue.js 2 and changes in "reactivity" will be visible only for Vue.js 3, so this should not affect any kind of existing behaviours

This MR is a part of vue3-migration

Merge request reports

Loading