v0.7.0 是 v0.6.0 审计的直接成果。核心变化:零覆盖模块补齐测试,安全标注补全,部署流程现代化。
测试补全
render-dsd.ts:44 个新测试
770 行的核心 DSD 渲染器此前零覆盖。新增测试涵盖:
escapeHtml/escapeAttr/escapeAttrValue安全函数serializeAttributes属性序列化renderDSD全路径(static/interactive/pure-island 三层)- L2 Nested DSD 渲染
- XSS 安全(恶意属性值、JavaScript URI)
- DSD options(delegatesFocus、serializable、slotAssignment)
- pure-island layer 不输出 DSD 模板
- Adapter protocol 和 edge cases
island.ts:29 个新测试
321 行的 Island 系统此前零覆盖。新增测试涵盖:
- tagName 验证(必须含连字符)
- 元数据标记(
__island/__tagName/__layer) - DSD opt-out(
dsd: false→ pure island) - 四种策略实现(eager/lazy/idle/visible)
- 幂等注册(重复 define 不报错)
- connectedCallback 包装
- getSSRProps 属性传递
- lessBind 框架无关绑定
安全修复
runtime-shim 一致性
serializeAttributes() 改用 escapeAttrValue(),与 render-dsd.ts 保持一致。此前 runtime-shim 的 serializeAttributes 直接调用 escapeAttr,跳过了 null/undefined 处理逻辑。
headExtras/headFragments XSS 警告
headExtras 和 headFragments 添加 @security / @dangerous JSDoc 标注。当注入内容包含 <script> 标签时,运行时打印 console.warn 提醒开发者注意 XSS 风险。
静默 catch 消除
修复 6 处残余静默 catch 块,改为 console.debug 或 console.warn,使错误可观测。涉及文件:island.ts、render-dsd.ts、cli/build-ssg.ts、cli/build-client.ts。
工程改进
Pre-commit Hooks
.githooks/pre-commit 自动运行 deno fmt --check + deno lint + deno check,阻止格式/lint/类型错误进入仓库。通过 deno task hooks:install 启用。
CI 增强
test.yml新增test-adapter-litjobpublish.yml添加needs: [test]依赖,确保测试通过后才能发布
部署迁移至 Cloudflare Pages
从 GitHub Pages 迁移到 Cloudflare Pages Connect GitHub 模式。main → Production(lessjs.com),dev → Preview(自动分配 URL)。
版本更新
- @openelement/core: 0.7.0
- @openelement/adapter-lit: 0.6.3
测试覆盖
354 个单元测试全部通过(+73 新增)。零 P0/P1 级已知 Bug。