From 254272262a87b95027efc37f714931207c302e31 Mon Sep 17 00:00:00 2001 From: Baptiste Leproux Date: Thu, 26 Feb 2026 18:35:17 +0100 Subject: [PATCH 1/7] feat(mdc): move to comark --- .gitignore | 2 +- package.json | 3 +- pnpm-lock.yaml | 29 +- .../content/editor/ContentEditor.vue | 18 +- .../content/editor/ContentEditorTipTap.vue | 48 +- .../editor/ContentEditorTipTapDebug.vue | 16 +- src/app/src/types/database.ts | 4 +- src/app/src/utils/ai/completion.ts | 64 +- src/app/src/utils/comarkBridge.ts | 71 + src/app/src/utils/tiptap/comarkToTiptap.ts | 438 ++++++ src/app/src/utils/tiptap/mdcToTiptap.ts | 418 ----- src/app/src/utils/tiptap/tiptapToComark.ts | 473 ++++++ src/app/src/utils/tiptap/tiptapToMdc.ts | 579 ------- src/app/test/integration/actions.test.ts | 20 +- src/app/test/integration/tiptap.test.ts | 1362 +++++------------ src/app/test/mocks/database.ts | 14 +- src/app/test/mocks/document.ts | 7 +- src/app/test/mocks/draft.ts | 65 +- src/app/test/mocks/host.ts | 8 +- .../test/unit/composables/draft-base.test.ts | 5 +- .../unit/utils/tiptap/comarkToTiptap.test.ts | 64 + .../unit/utils/tiptap/mdcToTiptap.test.ts | 206 --- src/app/vite.config.ts | 2 +- src/module/src/runtime/host.ts | 30 +- .../runtime/server/routes/ai/analyze.post.ts | 6 +- .../src/runtime/utils/document/compare.ts | 29 +- .../src/runtime/utils/document/generate.ts | 139 +- .../src/runtime/utils/document/index.ts | 23 +- .../src/runtime/utils/document/legacy.ts | 49 + 29 files changed, 1719 insertions(+), 2473 deletions(-) create mode 100644 src/app/src/utils/comarkBridge.ts create mode 100644 src/app/src/utils/tiptap/comarkToTiptap.ts delete mode 100644 src/app/src/utils/tiptap/mdcToTiptap.ts create mode 100644 src/app/src/utils/tiptap/tiptapToComark.ts delete mode 100644 src/app/src/utils/tiptap/tiptapToMdc.ts create mode 100644 src/app/test/unit/utils/tiptap/comarkToTiptap.test.ts delete mode 100644 src/app/test/unit/utils/tiptap/mdcToTiptap.test.ts create mode 100644 src/module/src/runtime/utils/document/legacy.ts diff --git a/.gitignore b/.gitignore index 0628ce84..7ce8a3e7 100644 --- a/.gitignore +++ b/.gitignore @@ -63,4 +63,4 @@ components.d.ts .cursor playground/docus/.data -docs/.data \ No newline at end of file +docs/.data diff --git a/package.json b/package.json index e856b4e1..9c618f36 100644 --- a/package.json +++ b/package.json @@ -51,15 +51,14 @@ "@ai-sdk/gateway": "^3.0.55", "@ai-sdk/vue": "^3.0.101", "@iconify-json/lucide": "^1.2.94", - "@nuxtjs/mdc": "^0.20.1", "@vueuse/core": "^14.2.1", "ai": "^6.0.101", + "comark": "https://pkg.pr.new/comarkdown/comark@bc4f4cf", "defu": "^6.1.4", "destr": "^2.0.5", "js-yaml": "^4.1.1", "minimatch": "^10.2.4", "nuxt-component-meta": "^0.17.2", - "remark-mdc": "^3.10.0", "shiki": "^3.23.0", "unstorage": "1.17.4", "zod": "^4.3.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f2941f15..b6be6b0d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,15 +20,15 @@ importers: '@iconify-json/lucide': specifier: ^1.2.94 version: 1.2.94 - '@nuxtjs/mdc': - specifier: ^0.20.1 - version: 0.20.1(magicast@0.5.2) '@vueuse/core': specifier: ^14.2.1 version: 14.2.1(vue@3.5.29(typescript@5.9.3)) ai: specifier: ^6.0.101 version: 6.0.101(zod@4.3.6) + comark: + specifier: https://pkg.pr.new/comarkdown/comark@bc4f4cf + version: https://pkg.pr.new/comarkdown/comark@bc4f4cf(shiki@3.23.0)(vue@3.5.29(typescript@5.9.3)) defu: specifier: ^6.1.4 version: 6.1.4 @@ -44,9 +44,6 @@ importers: nuxt-component-meta: specifier: ^0.17.2 version: 0.17.2(magicast@0.5.2) - remark-mdc: - specifier: ^3.10.0 - version: 3.10.0 shiki: specifier: ^3.23.0 version: 3.23.0 @@ -4177,6 +4174,21 @@ packages: colortranslator@5.0.0: resolution: {integrity: sha512-Z3UPUKasUVDFCDYAjP2fmlVRf1jFHJv1izAmPjiOa0OCIw1W7iC8PZ2GsoDa8uZv+mKyWopxxStT9q05+27h7w==} + comark@https://pkg.pr.new/comarkdown/comark@bc4f4cf: + resolution: {integrity: sha512-ZlDYq1Ao0i/v5qiSB5iyqvL3HmtJyj7clTbst+u4DjPcJPZ3iUtZPUsbDy+auJ9QmxitF+S8Karufj4ulGtHhQ==, tarball: https://pkg.pr.new/comarkdown/comark@bc4f4cf} + version: 1.0.0 + peerDependencies: + react: ^19.2.4 + shiki: ^3.22.0 + vue: ^3.5.27 + peerDependenciesMeta: + react: + optional: true + shiki: + optional: true + vue: + optional: true + comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} @@ -12707,6 +12719,11 @@ snapshots: colortranslator@5.0.0: {} + comark@https://pkg.pr.new/comarkdown/comark@bc4f4cf(shiki@3.23.0)(vue@3.5.29(typescript@5.9.3)): + optionalDependencies: + shiki: 3.23.0 + vue: 3.5.29(typescript@5.9.3) + comma-separated-tokens@2.0.3: {} commander@11.1.0: {} diff --git a/src/app/src/components/content/editor/ContentEditor.vue b/src/app/src/components/content/editor/ContentEditor.vue index 49ffe5e5..8a317ac6 100644 --- a/src/app/src/components/content/editor/ContentEditor.vue +++ b/src/app/src/components/content/editor/ContentEditor.vue @@ -1,7 +1,5 @@