ReactMarkdown was running with no plugins, so README headers full of raw <div align=center>, tables, <details>/<summary>, and other GFM markup rendered as escaped text. Wire in remark-gfm for tables and GFM features, rehype-raw for embedded HTML, and rehype-sanitize with an extended schema that permits README-typical tags and attributes (align, target, width/height, picture/source, etc.) while still blocking script/iframe/object — READMEs come from external repos so they need adversarial-input handling. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
36 lines
917 B
JSON
36 lines
917 B
JSON
{
|
|
"name": "moments-ui",
|
|
"private": true,
|
|
"version": "0.1.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "tsc -b && vite build",
|
|
"preview": "vite preview",
|
|
"lint": "tsc --noEmit"
|
|
},
|
|
"dependencies": {
|
|
"@tanstack/react-query": "^5.62.0",
|
|
"bootstrap": "^5.3.3",
|
|
"rc-slider": "^11.1.7",
|
|
"react": "^19.0.0",
|
|
"react-bootstrap": "^2.10.6",
|
|
"react-bootstrap-icons": "^1.11.4",
|
|
"react-dom": "^19.0.0",
|
|
"react-markdown": "^9.0.1",
|
|
"react-router-dom": "^7.14.2",
|
|
"react-vertical-timeline-component": "^3.6.0",
|
|
"rehype-raw": "^7.0.0",
|
|
"rehype-sanitize": "^6.0.0",
|
|
"remark-gfm": "^4.0.1"
|
|
},
|
|
"devDependencies": {
|
|
"@types/react": "^19.0.0",
|
|
"@types/react-dom": "^19.0.0",
|
|
"@types/react-vertical-timeline-component": "^3.3.6",
|
|
"@vitejs/plugin-react-swc": "^3.7.2",
|
|
"typescript": "~5.7.0",
|
|
"vite": "^6.0.0"
|
|
}
|
|
}
|