import assert from 'node:assert/strict'; import { readFile } from 'node:fs/promises'; import test from 'node:test'; import ts from 'typescript'; const source = await readFile(new URL('../src/utils/markdown.ts', import.meta.url), 'utf8'); const compiled = ts.transpileModule(source, { compilerOptions: { module: ts.ModuleKind.ESNext, target: ts.ScriptTarget.ES2020 } }).outputText; const { renderMarkdown } = await import(`data:text/javascript,${encodeURIComponent(compiled)}`); test('全网答案 Markdown 只渲染白名单标签并转义原始 HTML', () => { const html = renderMarkdown('### 标题\n**加粗** 和 *强调*,含 [官网](https://example.com)。\n\n- 一项\n- 二项\n\n> 引用\n\n`行内`\n\n```\n\n```'); assert.match(html, /

标题<\/h3>/); assert.match(html, /加粗<\/strong>/); assert.match(html, /强调<\/em>/); assert.match(html, /href="https:\/\/example\.com\//); assert.match(html, /
  • 一项<\/li>
  • 二项<\/li><\/ul>/); assert.match(html, /
    引用<\/blockquote>/); assert.match(html, /<script>alert\(1\)<\/script>/); assert.equal(renderMarkdown('普通文本'), '

    普通文本

    '); assert.doesNotMatch(renderMarkdown('[危险](javascript:alert(1))'), /href=/); });