From 411d0764e8825f52c1217a28a8d343c8bd24b7f8 Mon Sep 17 00:00:00 2001 From: Matt Date: Tue, 12 May 2026 21:11:23 +0200 Subject: [PATCH] feat(document-templates): delete TipTap-to-pdfme bridge MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 1 / commit 12 of 14 — strips out the 571-line tiptap-to-pdfme serializer and every code path that depended on it. TipTap document templates remain as Documenso-template seed bodies; the CRM no longer renders them to PDF in-app. Deleted: src/lib/pdf/tiptap-to-pdfme.ts (571 LOC) src/lib/pdf/templates/eoi-standard-inapp.ts (337 LOC) src/app/api/v1/admin/templates/preview/route.ts src/app/api/v1/document-templates/[id]/generate/route.ts src/app/api/v1/document-templates/[id]/generate-and-send/route.ts src/lib/services/document-templates.ts:generateFromTemplate (~140 LOC) src/lib/services/document-templates.ts:generateAndSend (~40 LOC) src/lib/validators/document-templates.ts:generateAndSendSchema src/lib/validators/document-templates.ts:previewAdminTemplateSchema tests/unit/tiptap-serializer.test.ts (old bridge tests) Preserved as src/lib/pdf/tiptap-validation.ts (~70 LOC): - validateTipTapDocument() — still used to reject unsupported nodes on save in the admin template editor - TEMPLATE_VARIABLES — drives the merge-token picker in the admin template form + preview UI generateAndSign() now throws a clear ValidationError when a non-EOI template tries the in-app pathway. Use a Documenso template, or wait for the deferred AcroForm-fill admin-upload feature. seed-data.ts: "Standard EOI (in-app)" template row now seeds with stub bodyHtml + small MERGE_FIELDS array; the deleted HTML helper was never actually rendered (in-app EOI is pdf-lib AcroForm fill on the source PDF — generateEoiPdfFromTemplate, unchanged). After this commit, pdfme has zero callers left. Commit 14 drops the deps and the generate.ts shim. 1298/1298 vitest green. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../api/v1/admin/templates/preview/route.ts | 74 --- .../[id]/generate-and-send/route.ts | 34 -- .../document-templates/[id]/generate/route.ts | 24 - .../document-templates/template-form.tsx | 2 +- .../document-templates/template-preview.tsx | 2 +- src/lib/db/seed-data.ts | 24 +- src/lib/pdf/templates/eoi-standard-inapp.ts | 337 ----------- src/lib/pdf/tiptap-to-pdfme.ts | 571 ------------------ src/lib/pdf/tiptap-validation.ts | 71 +++ .../services/document-templates.service.ts | 2 +- src/lib/services/document-templates.ts | 220 +------ src/lib/validators/document-templates.ts | 11 - ...cument-templates-generate-and-sign.test.ts | 41 +- tests/unit/tiptap-serializer.test.ts | 221 ------- 14 files changed, 137 insertions(+), 1497 deletions(-) delete mode 100644 src/app/api/v1/admin/templates/preview/route.ts delete mode 100644 src/app/api/v1/document-templates/[id]/generate-and-send/route.ts delete mode 100644 src/app/api/v1/document-templates/[id]/generate/route.ts delete mode 100644 src/lib/pdf/templates/eoi-standard-inapp.ts delete mode 100644 src/lib/pdf/tiptap-to-pdfme.ts create mode 100644 src/lib/pdf/tiptap-validation.ts delete mode 100644 tests/unit/tiptap-serializer.test.ts diff --git a/src/app/api/v1/admin/templates/preview/route.ts b/src/app/api/v1/admin/templates/preview/route.ts deleted file mode 100644 index 64c240fd..00000000 --- a/src/app/api/v1/admin/templates/preview/route.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { NextResponse } from 'next/server'; - -import { withAuth, withPermission } from '@/lib/api/helpers'; -import { parseBody } from '@/lib/api/route-helpers'; -import { errorResponse, ValidationError } from '@/lib/errors'; -import { generatePdf } from '@/lib/pdf/generate'; -import { - validateTipTapDocument, - tipTapToPdfmeTemplate, - buildContentInputsFromDoc, - substituteVariables, - type TipTapNode, -} from '@/lib/pdf/tiptap-to-pdfme'; -import { previewAdminTemplateSchema } from '@/lib/validators/document-templates'; - -/** - * POST /api/v1/admin/templates/preview - * - * Generates a preview PDF from a TipTap JSON content block. - * Returns { data: { pdfBase64: string } } - the client can render this - * in an