{ "name": "markdown-preview-editor", "version": "1.0.0", "private": true, "description": "Self-hosted, privacy-first Markdown editor and live previewer. Documents never leave the browser: no backend, no tracking, strict CSP, sandboxed preview.", "keywords": [ "markdown", "markdown-editor", "markdown-preview", "markdown-viewer", "live-preview", "privacy", "self-hosted", "offline", "client-side", "content-security-policy", "sandbox", "xss", "dompurify", "codemirror", "mermaid", "katex", "static-site", "drag-and-drop" ], "license": "MIT", "type": "module", "engines": { "node": ">=20" }, "scripts": { "prepare-assets": "node scripts/prepare-assets.mjs", "dev": "npm run prepare-assets && vite", "build": "npm run prepare-assets && tsc --noEmit && vite build && node scripts/package.mjs", "preview": "vite preview --port 4173 --strictPort", "test": "vitest run", "test:e2e": "playwright test", "check": "npm run build && npm test && npm run test:e2e" }, "dependencies": { "@codemirror/commands": "^6.11.1", "@codemirror/lang-markdown": "^6.5.2", "@codemirror/language": "^6.12.4", "@codemirror/language-data": "^6.5.2", "@codemirror/search": "^6.7.2", "@codemirror/state": "^6.7.6", "@codemirror/view": "^6.43.13", "@lezer/highlight": "^1.2.4", "codemirror": "^6.0.2", "dompurify": "^3.4.16", "github-markdown-css": "^5.9.0", "highlight.js": "^11.12.0", "ipaddr.js": "^2.5.0", "katex": "^0.18.9", "lucide": "^1.48.0", "markdown-it": "^15.0.2", "markdown-it-emoji": "^3.1.0", "markdown-it-footnote": "^4.0.0", "markdown-it-front-matter": "^0.2.4", "markdown-it-github-alerts": "^1.0.1", "markdown-it-mark": "^4.0.0", "markdown-it-sub": "^2.0.0", "markdown-it-sup": "^2.0.0", "markdown-it-task-lists": "^2.1.1", "mermaid": "^12.0.0", "tldts": "^7.4.15" }, "devDependencies": { "@axe-core/playwright": "^4.13.0", "@playwright/test": "^1.63.0", "axe-core": "^4.13.0", "fflate": "^0.8.3", "jsdom": "^30.1.1", "typescript": "^7.0.2", "vite": "^8.3.1", "vitest": "^5.0.2" } }