1
0

refactor: 消除 es-toolkit/compat 依赖,isArray/isObject 替换为原生实现

This commit is contained in:
2026-05-19 14:57:56 +08:00
parent 7a635a0a9f
commit 8d8549d07f
14 changed files with 62 additions and 38 deletions

View File

@@ -94,6 +94,40 @@
- **WHEN** 输入包含不同 intervalMs 值的多个 target
- **THEN** `groupBy(targets, t => t.intervalMs)` SHALL 返回 key 为 intervalMs 值的分组对象,值为对应 target 数组
### Requirement: 使用原生 API 进行数组类型判断
系统 SHALL 使用原生 `Array.isArray()` 替代 `es-toolkit/compat``isArray`,用于 checker 模块中所有数组类型判断场景。
#### Scenario: 数组值判定为数组
- **WHEN** 校验值为数组(如 `[1, 2, 3]`
- **THEN** `Array.isArray(value)` SHALL 返回 true
#### Scenario: 非数组值判定为非数组
- **WHEN** 校验值为对象 `{}`、字符串 `"abc"`、数字 `123`、null 等
- **THEN** `Array.isArray(value)` SHALL 返回 false
### Requirement: 使用原生 API 进行对象类型判断
系统 SHALL 使用原生 `typeof x === 'object' && x !== null` 替代 `es-toolkit/compat``isObject`,用于 checker 模块中需要判断值为对象类型(排除 null的场景。
#### Scenario: 普通对象判定为对象
- **WHEN** 值为普通对象 `{ key: "val" }`
- **THEN** `typeof value === 'object' && value !== null` SHALL 返回 true
#### Scenario: 数组判定为对象
- **WHEN** 值为数组 `[1, 2, 3]`
- **THEN** `typeof value === 'object' && value !== null` SHALL 返回 true
#### Scenario: Headers 实例判定为对象
- **WHEN** 值为 `Headers` 实例
- **THEN** `typeof value === 'object' && value !== null` SHALL 返回 true
#### Scenario: null 判定为非对象
- **WHEN** 值为 null
- **THEN** `typeof value === 'object' && value !== null` SHALL 返回 false
#### Scenario: 原始值判定为非对象
- **WHEN** 值为字符串、数字、布尔值、undefined
- **THEN** `typeof value === 'object' && value !== null` SHALL 返回 false
### Requirement: 使用 Bun 内置 API 进行 Headers 转换
系统 SHALL 使用 `Object.fromEntries(headers)` 标准 Web API 替代手写的 `headersToRecord` 函数,用于将 Fetch API 的 Headers 对象转换为键值对。