Please save me some time and use the following template. In 90% of all issues I can't reproduce the problem because I don't know what exactly you are doing, in which environment, or which y-* version is responsible. Just use the following template even if you think the problem is obvious.
Checklist
[x] Are you reporting a bug? Use github issues for bug reports and feature requests. For general questions, please use https://discuss.yjs.dev/
[x] Try to report your issue in the correct repository. Yjs consists of many modules. When in doubt, report it to https://github.com/yjs/yjs/issues/
Describe the bug
A clear and concise description of what the bug is.
When converting from a Prosemirror Node to a YXmlFragment, y-prosemirror doesn't check that attributes it sets are actually strings.
const type = new Y.XmlElement(node.type.name)
for (const key in node.attrs) {
const val = node.attrs[key]
if (val !== null && key !== 'ychange') {
type.setAttribute(key, val)[Kevin Jahns, 2 years ago: • revert toms refactor](https://sourcegraph.com/github.com/yjs/y-prosemirror/-/commit/e39c91e45e113220b5d66311a24c9397b7af0a25)
}
}
This is problematic because a Prosemirror Node can have a non-string attribute, such as a number. Using YXmlElement.getElement(...) can therefore return a non-string which claims to be a string.
To Reproduce
Steps to reproduce the behavior:
Go to '...'
Click on '....'
Open console
See error
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Environment Information
Browser / Node.js [e.g. Chrome, Firefox, Node.js]
Yjs version and the versions of the y-* modules you are using [e.g. yjs v13.0.1, y-webrtc v1.2.1]. Use npm ls yjs to find out the exact version you are using.
Additional context
Add any other context about the problem here.
Checklist
Describe the bug A clear and concise description of what the bug is.
When converting from a Prosemirror Node to a YXmlFragment,
y-prosemirror
doesn't check that attributes it sets are actually strings.This is problematic because a Prosemirror Node can have a non-string attribute, such as a
number
. UsingYXmlElement.getElement(...)
can therefore return a non-string which claims to be a string.To Reproduce Steps to reproduce the behavior:
Expected behavior A clear and concise description of what you expected to happen.
Screenshots If applicable, add screenshots to help explain your problem.
Environment Information
npm ls yjs
to find out the exact version you are using.Additional context Add any other context about the problem here.