Open navigation

Blog/release

LessJS v0.7.0 — 审计修复 + 测试补全 + 部署迁移

P0 审计修复:runtime-shim 一致性、XSS 警告、静默 catch 消除。73 个新测试覆盖 render-dsd.ts 和 island.ts。部署从 GitHub Pages 迁移到 Cloudflare Pages。

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 警告

headExtrasheadFragments 添加 @security / @dangerous JSDoc 标注。当注入内容包含 <script> 标签时,运行时打印 console.warn 提醒开发者注意 XSS 风险。

静默 catch 消除

修复 6 处残余静默 catch 块,改为 console.debugconsole.warn,使错误可观测。涉及文件:island.tsrender-dsd.tscli/build-ssg.tscli/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-lit job
  • publish.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。