我正在使用 yjs 和 milkdown 构建一个协作式 markdown 编辑器,我想将文档存储在磁盘上,而不是像 yjs-websocket 那样存储在数据库中。我可以用通用标记来做,但语法有限。
我的最终目标是拥有这样的东西
import remarkGFM from 'remark-gfm';
import { ParserState, SerializerState } from '@milkdown/transformer';
import { schema, gfm } from '@milkdown/preset-gfm';
import * as Y from 'yjs';
import { prosemirrorToYDoc, yDocToProsemirror } from 'y-prosemirror';
import { Schema } from '@milkdown/prose/model';
/** Build Schema?? */
const S = new Schema({
nodes: {},
marks: {}
});
const remark = remarkGFM() as import('unified').Transformer<
import('mdast').Root,
import('mdast').Root
>;
/** Build a processor?? */
const parser = ParserState.create(S, remark);
const serializer = SerializerState.create(schema, remark);
export function CommonMarkToString(doc: Y.Doc) {
const str = serializer(yDocToProsemirror(schema, doc));
return str;
}
export function CommonMarkToDoc(value: string) {
return prosemirrorToYDoc(parser(value));
}
但是很明显,上面的代码是错误的。我不知道我这样做是否正确。