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:
- https://github.com/vuejs/core/blob/main/packages/reactivity/src/reactive.ts#L246
- https://github.com/vuejs/core/blob/main/packages/reactivity/src/reactive.ts#L17
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:
(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
