# @hzab/data-model

## 2.0.7

### Patch Changes

- feat(data-model):本地数据模型支持批量添加数据
  feat(list-render-mobile):feat:支持hasMore从分页接口获取

## 2.0.7

 feat:本地数据模型支持批量添加数据

## 2.0.6

### Patch Changes

- 89dff4a: 全局态加固：顶层初始化幂等 + `sideEffects` 按源码实况声明
  
  - `utils` / `form-render` / `form-render-mobile` 的 `globalConfig`、以及 `utils` 的 `formily/global-components`，模块顶层赋值改为幂等（`window.x = window.x || {}`）：消费方打包器把模块**求值两次**时（webpack 4 忽略 `exports` 导致包根与深路径各一份、或懒加载 chunk 晚于 `app.js`）不再清空已写入的 serve 配置与已注册的全局组件表——原来是静默丢失（构建通过、运行期配置/组件缺失）。
  - setter 补键存在性保护：`setGlobalServeConfigs` 现在写回 `window`（原来 `window.x` 缺失时 `Object.assign({}, data)` 的结果被丢进临时对象，配置**静默丢失**）；单键 `setGlobalServeConfig(key, data)` 不再在键缺失时抛错。
  - 新增显式重置：`resetGlobalServeConfig()` / `resetFormRenderPCGlobalServeConfig()` / `resetFormRenderGlobalServeConfig()` / `resetFormilyGlobalComponents()`；幂等化后不再有「模块求值即重置」的隐式行为。
  - `data-model` 的 `sideEffects` 由 `false` 改为 `["./src/axios.ts"]`（`src/axios.ts:10` 顶层 `axiosDef.create()`、`:89` `temp.axiosList` 单例、`:215` 顶层注册响应拦截器均为真实副作用，声明 `false` 会被消费方打包器摇掉）；`utils` / `form-render` / `form-render-mobile` 补列各自的顶层全局赋值文件。
  - 门禁：`check-package` 新增 `checkTopLevelGlobalSideEffects()`（模块顶层 `window.<name> = ...` 文件必须逐条列入 `sideEffects`），`checkModuleSingletonContract()` 增第 4 条（单例源文件必须在 `sideEffects` 中声明，不得为 `false`）；两条规则均经反证实测。

## 2.0.5

### Patch Changes

- bb45682: 移除 `package.json` 的 `"type": "module"`，修复 webpack 消费方「升级即构建失败」。
  
  **症状**：消费方用 webpack 构建时报一批 `Module not found`，并附带
  
  ```
  BREAKING CHANGE: The request '@hzab/utils/src/upload/ossUpload' failed to resolve only because
  it was resolved as fully specified … The extension in the request is mandatory for it to be fully specified.
  ```
  
  **根因**：`"type": "module"` 让包内 `.js` 文件被 webpack 判为 **strict ESM**（`javascript/esm`，默认
  `fullySpecified: true`）⇒ 这些文件里**所有省略扩展名的 import 都必须带扩展名**。而本仓源码大量使用
  无扩展名 import（`@hzab/utils/src/upload/ossUpload`、`./formily-utils`、`dayjs/plugin/advancedFormat` …）。
  
  **关键事实**：这个字段是**本仓迁移时新增的**——源仓各包 `package.json` **都没有** `type`，消费线既有的
  老版本（`utils@1.1.6` / `form-render@1.7.17` / `list-render@1.12.1` …）也都没有。所以老消费方一直正常，
  只有升级到本仓版本的项目才撞上（webpack 5.111 实测复现）。
  
  **改动**：**12 个 src 直出包**移除该字段，恢复到与源仓一致的语义（webpack 回落到 `javascript/auto`，
  无扩展名 import 照常解析）。**3 个 dist 发布包**（`biz-utils` / `formily-utils` / `data-model-core`）**保留**
  该字段——它们的 `exports` 直接引用 `./dist/index.cjs` / `./dist/index.js`，而 tsup 的输出扩展名受此字段影响。
  
  **验证**：`check-package` 20 包全绿；`pnpm build` 18/18；`pnpm typecheck` 27/27；playground 模块图冒烟
  （171 模块）通过。产物命名：vite 包（`createLibraryViteConfig` 硬编码 `index.cjs`）不变；tsup 包 ESM 由
  `index.js` 变为 `index.mjs`，但无任何 `exports`/`main` 引用它，`types: ./dist/index.d.ts` 仍在。
  
  **消费方提示**：升级到本版本前若暂时无法升级，可在 webpack 配置加
  `{ test: /\.m?js$/, include: /[\\/]node_modules[\\/]@hzab[\\/]/, resolve: { fullySpecified: false } }` 兜底。

refactor: lodash 改为 lodash-es
feat: RequestCache 接口缓存工具类

# @hzab/data-model@2.0.2

fix: getList \_data.content total == 0 情况处理

# @hzab/data-model@2.0.1

feat: ReqMap 支持异步

# @hzab/data-model@2.0.0

break: axios 默认导出实例化后的 axios 实例，axios 源对象通过 axiosDef 导出
refactor: js 文件改为 js 文件

# @hzab/data-model@1.8.8

feat: array-data-model 支持 query 过滤

# @hzab/data-model@1.8.6

fix: getToken opt.hasCookie 是否读取 cookie 的 token。默认不读取 cookie 的 token
fix: setToken 默认不设置到 cookie 上

# @hzab/data-model@1.8.4

fix: response undefined 兼容处理

# @hzab/data-model@1.8.3

fix: 无 response 默认返回网络异常文案

# @hzab/data-model@1.8.2

fix: errorHandler err 为 undefined 的情况兼容

# @hzab/data-model@1.8.1

fix: handleMsg 新增 response.message 获取

# @hzab/data-model@1.8.0

fix: public utils getPublicUrl 多层目录问题修复 isFullPath

# @hzab/data-model@1.7.6

feat: getPublicUrl 获取 public 文件路径（自动拼接 hash 数据）

# @hzab/data-model@1.7.5

fix: array-data-model 数据报错异常处理

# @hzab/data-model@1.7.4

fix: axios 拦截优化，解决请求取消异常问题

# @hzab/data-model@1.7.3

fix: axios 统一

# @hzab/data-model@1.7.2

feat: axios.js getCancelTokenSource 获取 axios.CancelToken.source， 用于取消请求

# @hzab/data-model@1.7.1

feat: sortKey/orderByColumn 支持对象格式，支持定义数据类型、自定义数据处理函数；自定义数据对比函数

# @hzab/data-model@1.7.0

feat: 本地数据支持排序查询列表数据

# @hzab/data-model@1.6.1

fix: array-data-modal getMap getListMap 修复；getListMap、getListResMap 逻辑优化

# @hzab/data-model@1.6.0

fix: 注释；通用函数抽离
feat: ArrayDataModel 本地数据 DataModel

# @hzab/data-model@1.5.0

- feat: 增加 patch 请求方式函数

# @hzab/data-model@1.4.1

- fix: handleMsg useStatusText 问题修复

# @hzab/data-model@1.4.0

- 兼容分页列表是 content 及相关数据同层的问题 data: { content: [], pageNumber: 1, pageSize: 10, total: 0 }
- handleResponse 统一 response 回调，用于处理定制 response 格式

# @hzab/data-model@1.3.1

- fix: useStatusText: true 问题修复

# @hzab/data-model@1.3.0

- feat: 网络情况判断
- feat: 新增参数 isResponseData 是否返回完整的接口数据（response.data）； isResponse 是否直接返回 response

# @hzab/data-model@1.2.1

- fix: setAxTimeout default timeout 0

# @hzab/data-model@1.2.0

- feat: 增删改查 axiosConf 允许独立配置 xxxAxiosConf。如： createAxiosConf

# @hzab/data-model@1.1.1

- fix: formData header 覆盖问题修复

# @hzab/data-model@1.1.0

- formData 问题修复

# @hzab/data-model@1.0.2

- fix: getApiUrl 增加调用来源，错误提示增加入参展示

# @hzab/data-model@1.0.1

- fix: 修复 delete 入参问题
- fix: getApiUrl :xx 参数替换正则处理

# @hzab/data-model@0.2.3

- fix: axios delete 入参写法问题修复

# @hzab/data-model@0.2.2

- feat: useDataModel，解决 hooks 写法 model 重复实例化导致 query 丢失的问题

# @hzab/data-model@0.1.2

- 错误信息逻辑修复
- status 错误信息
- 默认错误信息

# @hzab/data-model@0.1.0

- token 设置在 cookie 中

# @hzab/data-model@0.0.1

组件初始化
