fix: v0.7.1 API 修复与防御统一 — static create / 未 open 防护 / 原型污染 / lint 清零
CI / test (22.x) (push) Successful in 17m24s
CI / e2e (push) Successful in 10m39s
CI / test (18.x) (push) Successful in 19m5s
CI / test (20.x) (push) Successful in 18m4s
CI / test (24.x) (push) Successful in 23m19s

- MetonaSqlark.create 静态工厂(README 示例在 ESM/Node 下此前 TypeError),
  独立 create 函数委托静态实现
- close 未初始化防御(engine undefined 不再崩溃)
- AriaEngine hasTable/getTableNames/getTableSchema 统一 ensureOpen
- 事务回滚失败不掩盖原始错误
- __proto__ 列名防护:Executor 列映射 Object.create(null) + schema 校验拒绝
- lint 清零(移除 5 处未使用导入)

测试 1147 → 1155(73 套件);行覆盖率 89.8%;版本 0.7.1
This commit is contained in:
thzxx
2026-08-13 11:14:42 +08:00
parent 57415975ea
commit cbe407eb49
25 changed files with 1620 additions and 1375 deletions
+32
View File
@@ -2,6 +2,38 @@
All notable changes to MetonaSqlark will be documented in this file.
## [0.7.1] - 2026-08-13
### API 修复 / 防御统一 / 工程质量
> 深度审计第四阶段:修复 README 示例 API 缺失、未 open 防护不一致、
> 事务错误掩盖、原型污染防护,lint 清零。
### Fixed
- **`MetonaSqlark.create` 静态工厂缺失(API/文档不一致)** — create 此前仅存在于
api 对象与 window 挂载,README/CONTRIBUTING/site 全部示例的
`MetonaSqlark.create({...})` 在 ESM/Node 下是 undefinedTypeError)。
类增加静态 create(与 connect/disconnect 同入口风格),独立 create 函数委托
- **close 未初始化崩溃** — `new MetonaSqlark(cfg).close()`init 失败/未调用)时
`this.engine` undefined → TypeError。close 增加防御
- **AriaEngine 未 open 防护不一致** — hasTable/getTableNames/getTableSchema 未检查
DB_NOT_OPEN(返回空而非报错,与 KVStoreEngine 及自身其余方法不一致)。
统一 ensureOpen
- **事务回滚失败掩盖原始错误** — rollbackTransaction 抛错会替换掉真正导致事务
失败的异常(定位困难)。回滚失败吞掉,保留原始错误
- **`__proto__` 列名原型污染防护** — SQL CREATE TABLE 的列名 `__proto__` 在普通
对象上触发原型 setter 静默丢列。Executor 列映射改用 Object.create(null)
(键可见),schema 校验层显式拒绝该列名(SCHEMA_ERROR
- **lint 清零** — 移除 5 处未使用导入(backend/file_manager/kvstore_engine/parser
### Changed
- 测试 1147 → **1155**73 套件,+8 个 v0.7.1 回归);新增 `tests/v071-hardening.test.ts`
行覆盖率 89.8%lint 0 error 0 warning
---
## [0.7.0] - 2026-08-13
### 参数化查询 / 事务性能 / 语义硬化