feat(export): Chunk #6 Export Pipeline — 7 exporters, ExportDialog & tests

Add the @pubscript/exporters package exporting a flattened ProseMirror
project to Markdown, HTML, EPUB, DOCX, ODT and PDF, plus a deterministic
generatedAt timestamp threaded through every format (ZIP entry dates,
PDF /ID, DOCX dc:created/modified, EPUB id, HTML/XML footers) so golden
files are byte-stable.

Wire an ExportDialog into the web app (Topbar trigger, App route) with
format selection, theme pick, and download helpers.

Add round-trip and golden-file determinism tests (22) covering
non-empty output, byte-identical re-exports, Markdown round-trip through
the editor, and EPUB/ODT ZIP + mimetype + XML validation.
This commit is contained in:
Schwitzz
2026-10-26 23:30:47 -05:00
parent 35b015bb04
commit 978858362d
24 changed files with 3103 additions and 2 deletions
+31
View File
@@ -0,0 +1,31 @@
{
"name": "@pubscript/exporters",
"version": "0.1.0",
"type": "module",
"description": "Format-agnostic export engine for PubScript projects (Markdown, HTML, EPUB, DOCX, ODT, PDF).",
"main": "./src/index.ts",
"types": "./src/index.ts",
"exports": {
".": "./src/index.ts",
"./package.json": "./package.json"
},
"scripts": {
"build": "tsc --noEmit",
"test": "vitest run",
"lint": "eslint .",
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@pubscript/core": "workspace:*",
"docx": "^8.0.0",
"jszip": "^3.10.1",
"jspdf": "^2.5.2"
},
"devDependencies": {
"@pubscript/editor": "workspace:*",
"@types/node": "^22.10.2",
"jsdom": "^25.0.1",
"typescript": "^5.7.2",
"vitest": "^2.1.8"
}
}