From da45505485c68148f65c4a78b63228390dda53d2 Mon Sep 17 00:00:00 2001 From: Codex Bot Date: Thu, 29 Oct 2026 16:48:42 +0800 Subject: [PATCH] Fix XML entity typing and remove local dependency link --- apps/waterfall-wiki/node_modules | 1 - apps/waterfall-wiki/src/lib/guidance-input.ts | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 120000 apps/waterfall-wiki/node_modules diff --git a/apps/waterfall-wiki/node_modules b/apps/waterfall-wiki/node_modules deleted file mode 120000 index 473f58b..0000000 --- a/apps/waterfall-wiki/node_modules +++ /dev/null @@ -1 +0,0 @@ -/Users/zzyang/ProjectMedia/probably-rendering-one-more-pixel-tonight/apps/waterfall-wiki/node_modules \ No newline at end of file diff --git a/apps/waterfall-wiki/src/lib/guidance-input.ts b/apps/waterfall-wiki/src/lib/guidance-input.ts index 7c320cc..da7993f 100644 --- a/apps/waterfall-wiki/src/lib/guidance-input.ts +++ b/apps/waterfall-wiki/src/lib/guidance-input.ts @@ -7,7 +7,7 @@ export function parseDocumentXml(source:string){ if(Buffer.byteLength(source)>131072)throw Error('XML 过大'); let s=source.replace(/^<\?xml version="1.0" encoding="UTF-8"\?>\s*/, ''); if(/<\?|{if(/&(?!amp;|lt;|gt;|quot;|apos;)/.test(v))throw Error('非法实体');return v.replace(/&(amp|lt|gt|quot|apos);/g,(_,k)=>({amp:'&',lt:'<',gt:'>',quot:'"',apos:"'"}[k] as string));}; + const decode=(v:string)=>{if(/&(?!amp;|lt;|gt;|quot;|apos;)/.test(v))throw Error('非法实体');return v.replace(/&(amp|lt|gt|quot|apos);/g,(_,k)=>({amp:'&',lt:'<',gt:'>',quot:'"',apos:"'"}[k as 'amp'|'lt'|'gt'|'quot'|'apos'] as string));}; const attrs=(v:string)=>{const result:Record={};while(v.trim()){const m=/^\s+([a-z]+)="([^"<]*)"/.exec(v);if(!m||m[1] in result)throw Error('非法或重复属性');result[m[1]]=decode(m[2]);v=v.slice(m[0].length);}return result;}; const root=/^]*)>([\s\S]*)<\/guidance>\s*$/.exec(s);if(!root)throw Error('非法根元素');const a=attrs(root[1]); if(Object.keys(a).sort().join(',')!=='id,kind,lang,revision,xmlns'||a.xmlns!=='urn:linked-guidance:0.1'||a.lang!=='zh-CN'||! /^[1-9][0-9]*$/.test(a.revision))throw Error('不支持的协议或属性');