Everything else in tests/ compares documents at the model level; nothing checked what a page actually looks like. run.mjs renders the same file through soffice and through the real app in Chromium, reads both back as word boxes, and diffs page count, line count, line text and line position. The corpus stays out of the repo: make-fixtures.mjs authors the baseline .docx files, and real-world documents are whatever you drop into the gitignored fixtures/ yourself.
69 lines
2.2 KiB
JSON
69 lines
2.2 KiB
JSON
{
|
|
"name": "web-odf-editor",
|
|
"version": "0.1.0",
|
|
"type": "module",
|
|
"description": "A fully client-side, serverless rich-text editor that saves documents as .odt",
|
|
"license": "AGPL-3.0-only",
|
|
"author": "Steffen Becker <your-contact-email>",
|
|
"homepage": "https://github.com/",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": ""
|
|
},
|
|
"scripts": {
|
|
"dev": "vite --host",
|
|
"build": "vite build",
|
|
"preview": "vite preview",
|
|
"check": "svelte-check --tsconfig ./tsconfig.json",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:lo": "vitest run tests/lo-roundtrip.test.ts",
|
|
"test:parity": "node tests/render-parity/run.mjs",
|
|
"test:parity:fixtures": "node tests/render-parity/make-fixtures.mjs"
|
|
},
|
|
"devDependencies": {
|
|
"@sveltejs/vite-plugin-svelte": "^7.1.2",
|
|
"@tsconfig/svelte": "^5.0.8",
|
|
"dictionary-de": "^3.0.0",
|
|
"dictionary-en": "^4.0.0",
|
|
"jsdom": "^29.1.1",
|
|
"svelte": "^5.55.9",
|
|
"svelte-check": "^4.7.1",
|
|
"typescript": "^6.0.3",
|
|
"vite": "^8.0.14",
|
|
"vitest": "^4.1.9"
|
|
},
|
|
"dependencies": {
|
|
"@tiptap/core": "^3.23.6",
|
|
"@tiptap/extension-bold": "^3.23.6",
|
|
"@tiptap/extension-bullet-list": "^3.23.6",
|
|
"@tiptap/extension-document": "^3.23.6",
|
|
"@tiptap/extension-font-family": "^3.23.6",
|
|
"@tiptap/extension-hard-break": "^3.23.6",
|
|
"@tiptap/extension-heading": "^3.23.6",
|
|
"@tiptap/extension-highlight": "3.23.6",
|
|
"@tiptap/extension-history": "^3.23.6",
|
|
"@tiptap/extension-italic": "^3.23.6",
|
|
"@tiptap/extension-link": "3.23.6",
|
|
"@tiptap/extension-list-item": "^3.23.6",
|
|
"@tiptap/extension-ordered-list": "^3.23.6",
|
|
"@tiptap/extension-paragraph": "^3.23.6",
|
|
"@tiptap/extension-placeholder": "^3.23.6",
|
|
"@tiptap/extension-strike": "^3.23.6",
|
|
"@tiptap/extension-subscript": "^3.23.6",
|
|
"@tiptap/extension-superscript": "^3.23.6",
|
|
"@tiptap/extension-table": "3.23.6",
|
|
"@tiptap/extension-text": "^3.23.6",
|
|
"@tiptap/extension-text-align": "^3.23.6",
|
|
"@tiptap/extension-text-style": "^3.23.6",
|
|
"@tiptap/extension-underline": "^3.23.6",
|
|
"@tiptap/pm": "^3.23.6",
|
|
"docx": "^9.7.1",
|
|
"html2canvas": "^1.4.1",
|
|
"hunspell-asm": "^4.0.2",
|
|
"jspdf": "^4.2.1",
|
|
"odf-kit": "^0.13.5",
|
|
"utif2": "^4.1.0"
|
|
}
|
|
}
|