[refactor][converter][client] Вставка markdown в редакторе через @docmost/prosemirror-markdown (browser-entry пакета) + удаление editor-ext md-слоя #347
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Контекст
Продолжение #345 (шаги 1–2: серверный экспорт/импорт переводятся на канонический пакет). Этот issue — третий, технически нетривиальный шаг: клиентская вставка markdown (
apps/client/src/features/editor/extensions/markdown-clipboard.ts) сейчас конвертирует через md-слой editor-ext (marked) и не знает канона (^[…],<!--img {…}-->,<!--subpages-->и т.д. при вставке не распознаются).Выполняется ПОСЛЕ #345: к тому моменту paste — последний потребитель
packages/editor-ext/src/lib/markdown/, и по завершении слой удаляется целиком.Почему это отдельная работа (сложность)
@docmost/prosemirror-markdown— marked → HTML → DOM-парсинг на jsdom → generateJSON по схеме. jsdom в браузерный бандл нельзя (размер, среда). Нужен browser-entry: нативныйDOMParserв браузере / jsdom на сервере — через exports-conditions или инжектируемый DOM-парсер. Обязателен контроль, что jsdom не утекает в клиентский бандл транзитивно (проверка сборки и размера бандла — в acceptance).markdown-clipboard.tsи сохраняется — заменяется только вызов конвертации. Регрессии живут именно в этом шве.План
DOMParserв браузере (exports-condition или инжект), jsdom остаётся только в node-пути; тесты обоих путей.markdown-clipboard.ts: конвертация через пакет; fragment-insertion логика и эвристики — без изменений.^[…],<!--img {…}-->,> [!type],$…$,==…==, standalone-комментарии; плюс негативные (plain-текст с$5,==,[^1]— не корёжится).packages/editor-ext/src/lib/markdown/целиком (+ тесты слоя), grep на осиротевшие импорты (htmlToMarkdown,markdownToHtml,*.marked, turndown, зависимость turndown из package.json editor-ext). После этого рукописных md-реализаций в проекте ноль.Acceptance: вставка канонического md даёт те же ноды, что серверный импорт того же текста (общая фикстура с #345 шагом 2); бандл клиента без jsdom; md-слой editor-ext удалён, editor-ext остаётся только схемой/расширениями.
Guardrails (уроки #293/#333)
Зависимости и связанные