fix(lint): 修复 Biome 检查错误

- mermaid-renderer/src/index.ts: import 与后续语句间补空行(organizeImports)
- tiptap-editor footnote.test.ts: 局部 unescape 重命名为 unescapeFootnote,
  避免遮蔽全局 restricted name(noShadowRestrictedNames)
This commit is contained in:
xfy 2026-07-23 13:36:11 +08:00
parent db74a96de1
commit 644db48d17
2 changed files with 8 additions and 7 deletions

View File

@ -5,6 +5,7 @@
// 直接赋给 window.MermaidRenderer 作为构建时副作用,使 window.MermaidRenderer // 直接赋给 window.MermaidRenderer 作为构建时副作用,使 window.MermaidRenderer
// 本身即 mermaid APIinitialize/render // 本身即 mermaid APIinitialize/render
import mermaid from 'mermaid'; import mermaid from 'mermaid';
// 构建时副作用:把 mermaid 挂到全局。ES module 的顶层赋值会被 vite 保留。 // 构建时副作用:把 mermaid 挂到全局。ES module 的顶层赋值会被 vite 保留。
(globalThis as unknown as { MermaidRenderer: typeof mermaid }).MermaidRenderer = mermaid; (globalThis as unknown as { MermaidRenderer: typeof mermaid }).MermaidRenderer = mermaid;

View File

@ -16,7 +16,7 @@ import { beforeEach, describe, expect, it } from 'vitest';
*/ */
const UNESCAPE_RE = /\\\[\^([^\n\\]*?)\\\]/g; const UNESCAPE_RE = /\\\[\^([^\n\\]*?)\\\]/g;
const unescape = (md: string) => md.replace(UNESCAPE_RE, '[^$1]'); const unescapeFootnote = (md: string) => md.replace(UNESCAPE_RE, '[^$1]');
function makeEditor() { function makeEditor() {
return new Editor({ return new Editor({
@ -41,31 +41,31 @@ describe('脚注语法 - escapeMarkdownSyntax 破坏与修复', () => {
}); });
it('unescape 正则还原脚注引用 \\[^1\\] → [^1]', () => { it('unescape 正则还原脚注引用 \\[^1\\] → [^1]', () => {
expect(unescape('\\[^1\\]')).toBe('[^1]'); expect(unescapeFootnote('\\[^1\\]')).toBe('[^1]');
}); });
it('unescape 正则还原含空格的脚注 label', () => { it('unescape 正则还原含空格的脚注 label', () => {
expect(unescape('\\[^my note\\]')).toBe('[^my note]'); expect(unescapeFootnote('\\[^my note\\]')).toBe('[^my note]');
}); });
it('unescape 正则还原脚注定义 \\[^1\\]: → [^1]:', () => { it('unescape 正则还原脚注定义 \\[^1\\]: → [^1]:', () => {
expect(unescape('\\[^1\\]: 定义内容')).toBe('[^1]: 定义内容'); expect(unescapeFootnote('\\[^1\\]: 定义内容')).toBe('[^1]: 定义内容');
}); });
it('unescape 正则不影响普通链接 [text](url)', () => { it('unescape 正则不影响普通链接 [text](url)', () => {
const md = '\\[text\\](https://example.com)'; const md = '\\[text\\](https://example.com)';
// 普通链接的 \[text\] 不以 ^ 开头,不会被误改 // 普通链接的 \[text\] 不以 ^ 开头,不会被误改
expect(unescape(md)).toBe(md); expect(unescapeFootnote(md)).toBe(md);
}); });
it('unescape 正则一次处理多个脚注引用', () => { it('unescape 正则一次处理多个脚注引用', () => {
const md = '引用了\\[^1\\]和\\[^pc\\]和\\[^2\\]'; const md = '引用了\\[^1\\]和\\[^pc\\]和\\[^2\\]';
expect(unescape(md)).toBe('引用了[^1]和[^pc]和[^2]'); expect(unescapeFootnote(md)).toBe('引用了[^1]和[^pc]和[^2]');
}); });
it('完整往返unescape(getMarkdown()) 保留脚注引用语法', () => { it('完整往返unescape(getMarkdown()) 保留脚注引用语法', () => {
editor.commands.setContent('正文[^1]', { contentType: 'markdown' }); editor.commands.setContent('正文[^1]', { contentType: 'markdown' });
const fixed = unescape(editor.getMarkdown()); const fixed = unescapeFootnote(editor.getMarkdown());
expect(fixed).toContain('[^1]'); expect(fixed).toContain('[^1]');
expect(fixed).not.toContain('\\[^1\\]'); expect(fixed).not.toContain('\\[^1\\]');
}); });