@epxing/utils 5.3.0-beta.2 → 5.3.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/API.md +602 -602
  2. package/README.md +23 -23
  3. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/ai.png.js +4 -0
  4. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/ai_import.png.js +4 -0
  5. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/app.png.js +4 -0
  6. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/approval.png.js +4 -0
  7. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/canvas-editor/option.svg.js +4 -0
  8. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/create_market_system.png.js +4 -0
  9. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/create_system.png.js +4 -0
  10. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/custom.png.js +4 -0
  11. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/default-icon.png.js +4 -0
  12. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/ex_link.png.js +4 -0
  13. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/excel.png.js +4 -0
  14. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/folder.png.js +4 -0
  15. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/hall/form.png.js +4 -0
  16. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/hall/meta.png.js +4 -0
  17. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/hall/process.png.js +4 -0
  18. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/hall/rule.png.js +4 -0
  19. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/hall/service.png.js +4 -0
  20. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/hall/userRole.png.js +4 -0
  21. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/import.png.js +4 -0
  22. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/module.png.js +4 -0
  23. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/null.png.js +4 -0
  24. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/photo.png.js +4 -0
  25. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/single_file.png.js +4 -0
  26. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/snapshot-history.png.js +4 -0
  27. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/snapshot-manual.png.js +4 -0
  28. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/snapshot-realtime.png.js +4 -0
  29. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/staff.png.js +4 -0
  30. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/sync_append.png.js +4 -0
  31. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/sync_append_update.png.js +4 -0
  32. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/sync_loading.png.js +4 -0
  33. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/sync_replace.png.js +4 -0
  34. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/sync_update.png.js +4 -0
  35. package/dist/.cache/route-chart-release/frontend/frame/src/assets/images/user_bg.png.js +4 -0
  36. package/dist/_virtual/jsencrypt.min.js +1 -1
  37. package/dist/{_vendor → frontend/frame/_vendor}/.pnpm/jsencrypt@3.5.4/_vendor/jsencrypt/bin/jsencrypt.min.js +1 -1
  38. package/dist/src/ai-call-method-form.js +55 -0
  39. package/dist/src/asset-images.js +105 -105
  40. package/dist/src/wiki-path.js +111 -0
  41. package/package.json +1 -1
  42. package/src/ai-call-method-form.js +54 -0
  43. package/src/chart-registry.js +41 -41
  44. package/src/fieldFactory.js +3 -3
  45. package/src/index.js +2 -2
  46. package/src/legacy.js +29 -29
  47. package/src/meta.js +2 -2
  48. package/src/pdf.viewer.js +2 -2
  49. package/src/public.js +11 -11
  50. package/src/util.js +2 -2
  51. package/src/wiki-path.js +164 -0
  52. package/dist/src/assets/images/ai.png.js +0 -4
  53. package/dist/src/assets/images/ai_import.png.js +0 -4
  54. package/dist/src/assets/images/app.png.js +0 -4
  55. package/dist/src/assets/images/approval.png.js +0 -4
  56. package/dist/src/assets/images/canvas-editor/option.svg.js +0 -4
  57. package/dist/src/assets/images/create_market_system.png.js +0 -4
  58. package/dist/src/assets/images/create_system.png.js +0 -4
  59. package/dist/src/assets/images/custom.png.js +0 -4
  60. package/dist/src/assets/images/default-icon.png.js +0 -4
  61. package/dist/src/assets/images/ex_link.png.js +0 -4
  62. package/dist/src/assets/images/excel.png.js +0 -4
  63. package/dist/src/assets/images/folder.png.js +0 -4
  64. package/dist/src/assets/images/hall/form.png.js +0 -4
  65. package/dist/src/assets/images/hall/meta.png.js +0 -4
  66. package/dist/src/assets/images/hall/process.png.js +0 -4
  67. package/dist/src/assets/images/hall/rule.png.js +0 -4
  68. package/dist/src/assets/images/hall/service.png.js +0 -4
  69. package/dist/src/assets/images/hall/userRole.png.js +0 -4
  70. package/dist/src/assets/images/import.png.js +0 -4
  71. package/dist/src/assets/images/module.png.js +0 -4
  72. package/dist/src/assets/images/null.png.js +0 -4
  73. package/dist/src/assets/images/photo.png.js +0 -4
  74. package/dist/src/assets/images/single_file.png.js +0 -4
  75. package/dist/src/assets/images/snapshot-history.png.js +0 -4
  76. package/dist/src/assets/images/snapshot-manual.png.js +0 -4
  77. package/dist/src/assets/images/snapshot-realtime.png.js +0 -4
  78. package/dist/src/assets/images/staff.png.js +0 -4
  79. package/dist/src/assets/images/sync_append.png.js +0 -4
  80. package/dist/src/assets/images/sync_append_update.png.js +0 -4
  81. package/dist/src/assets/images/sync_loading.png.js +0 -4
  82. package/dist/src/assets/images/sync_replace.png.js +0 -4
  83. package/dist/src/assets/images/sync_update.png.js +0 -4
  84. package/dist/src/assets/images/user_bg.png.js +0 -4
  85. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/add.png.js +0 -0
  86. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/ai-button.png.js +0 -0
  87. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/book.png.js +0 -0
  88. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/alignment.svg.js +0 -0
  89. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/arrow-left.svg.js +0 -0
  90. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/arrow-right.svg.js +0 -0
  91. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/block.svg.js +0 -0
  92. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/bold.svg.js +0 -0
  93. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/catalog.svg.js +0 -0
  94. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/center.svg.js +0 -0
  95. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/checkbox.svg.js +0 -0
  96. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/close.svg.js +0 -0
  97. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/codeblock.svg.js +0 -0
  98. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/color.svg.js +0 -0
  99. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/control.svg.js +0 -0
  100. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/date.svg.js +0 -0
  101. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/exit-fullscreen.svg.js +0 -0
  102. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/format.svg.js +0 -0
  103. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/highlight.svg.js +0 -0
  104. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/hyperlink.svg.js +0 -0
  105. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/image.svg.js +0 -0
  106. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/italic.svg.js +0 -0
  107. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/justify.svg.js +0 -0
  108. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/latex.svg.js +0 -0
  109. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/left.svg.js +0 -0
  110. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/line-dash-dot-dot.svg.js +0 -0
  111. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/line-dash-dot.svg.js +0 -0
  112. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/line-dash-large-gap.svg.js +0 -0
  113. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/line-dash-small-gap.svg.js +0 -0
  114. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/line-dot.svg.js +0 -0
  115. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/line-double.svg.js +0 -0
  116. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/line-single.svg.js +0 -0
  117. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/line-wavy.svg.js +0 -0
  118. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/list.svg.js +0 -0
  119. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/page-break.svg.js +0 -0
  120. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/page-mode.svg.js +0 -0
  121. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/page-scale-add.svg.js +0 -0
  122. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/page-scale-minus.svg.js +0 -0
  123. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/painter.svg.js +0 -0
  124. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/paper-direction.svg.js +0 -0
  125. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/paper-margin.svg.js +0 -0
  126. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/paper-size.svg.js +0 -0
  127. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/print.svg.js +0 -0
  128. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/radio.svg.js +0 -0
  129. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/redo.svg.js +0 -0
  130. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/request-fullscreen.svg.js +0 -0
  131. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/right.svg.js +0 -0
  132. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/row-margin.svg.js +0 -0
  133. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/search.svg.js +0 -0
  134. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/separator.svg.js +0 -0
  135. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/signature-undo.svg.js +0 -0
  136. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/signature.svg.js +0 -0
  137. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/size-add.svg.js +0 -0
  138. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/size-minus.svg.js +0 -0
  139. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/strikeout.svg.js +0 -0
  140. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/subscript.svg.js +0 -0
  141. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/superscript.svg.js +0 -0
  142. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/table.svg.js +0 -0
  143. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/title.svg.js +0 -0
  144. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/trash.svg.js +0 -0
  145. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/underline.svg.js +0 -0
  146. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/undo.svg.js +0 -0
  147. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/watermark.svg.js +0 -0
  148. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/canvas-editor/word-tool.svg.js +0 -0
  149. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/clear.png.js +0 -0
  150. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/file.png.js +0 -0
  151. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/hr.png.js +0 -0
  152. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/jian.png.js +0 -0
  153. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/qq.png.js +0 -0
  154. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/robot.png.js +0 -0
  155. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/switch_app.png.js +0 -0
  156. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/assets/images/weixin.png.js +0 -0
package/API.md CHANGED
@@ -1,602 +1,602 @@
1
- # @epxing/utils API
2
-
3
- 独立的配置模型、日期、集合、占位符、DOM 与浏览器存储工具;根入口不需要安装 Vue 或 core。
4
-
5
- 本页对应包版本 `5.3.0-beta.2`。导出名、子路径和签名从当前源码、package.json 与类型声明生成。
6
-
7
- ## 安装与使用
8
-
9
-
10
- ```sh
11
- pnpm add @epxing/utils@5.3.0-beta.2
12
- ```
13
-
14
-
15
- ```js
16
- import { cloneDeep, moment, resolvePlaceholders, storage, Page } from '@epxing/utils'
17
- import { nextMonth } from '@epxing/utils/date'
18
-
19
- const draft = cloneDeep({ name: '张三' })
20
- const date = moment('2026-10-22').add(1, 'day').format('YYYY-MM-DD')
21
- const text = resolvePlaceholders('用户:#{name}', [draft])
22
- storage.set('last-date', date)
23
- const page = new Page({ label: '员工列表' })
24
- ```
25
-
26
- ## 接入约定
27
-
28
- 根入口没有 default 导出,请使用具名导入。日期纯函数的 month 使用 0–11。storage/cookie 操作的是 localStorage/sessionStorage;DOM 和存储方法在浏览器中调用。moment 是 Day.js 兼容层,兼容方法以本包类型声明为准。平台相关的 util、Meta、FieldFactory、PdfViewer 从 @epxing/core 导入。
29
-
30
- ## 根入口完整导出
31
-
32
- | 导出名 | 形态 | 用途 | 参数 / 配置 / 事件 |
33
- | --- | --- | --- | --- |
34
- | `PLACEHOLDER_RE` | 对象 / 常量 | 匹配全部 #{path} 占位符的全局正则;复用 RegExp.test/exec 时注意 lastIndex。 | [详细参考](../../docs/revision/utils/api/placeholder.md) |
35
- | `lookup` | 函数 | 在一个对象中按点号/方括号路径读取,返回 { found, value },保留 0、false、空串和 undefined 的存在语义。 | [详细参考](../../docs/revision/utils/api/placeholder.md) |
36
- | `resolveKey` | 函数 | 按 sources 的顺序查找第一个拥有路径的对象,返回 { found, value, index }。 | [详细参考](../../docs/revision/utils/api/placeholder.md) |
37
- | `resolvePlaceholders` | 函数 | 替换字符串中全部 #{path};默认缺失值替换为空串,onMissing: keep 时保留占位符。 | [详细参考](../../docs/revision/utils/api/placeholder.md) |
38
- | `isDate` | 函数 | 判断输入是否可转换为有效日期,明确拒绝数组、null 和 undefined。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
39
- | `getDayCountOfMonth` | 函数 | 返回指定年/月的天数;month 使用 0–11。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
40
- | `getDayCountOfYear` | 函数 | 根据闰年规则返回 365 或 366。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
41
- | `nextDate` | 函数 | 返回增加 amount 天后的新 Date,默认增加一天。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
42
- | `nextMonth` | 函数 | 返回下个月的 Date,并把月末日期夹紧到目标月的有效天数。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
43
- | `prevYear` | 函数 | 返回向前 amount 年的 Date,并夹紧月末日期。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
44
- | `nextYear` | 函数 | 返回向后 amount 年的 Date,并夹紧月末日期。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
45
- | `range` | 函数 | 生成从 0 到 n - 1 的整数数组。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
46
- | `modifyDate` | 函数 | 替换年、月、日,保留时、分、秒和毫秒;月份从 0 开始。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
47
- | `modifyTime` | 函数 | 替换时、分、秒,保留日期和毫秒。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
48
- | `modifyWithTimeString` | 函数 | 用 HH:mm:ss 字符串替换时间;没有匹配时保留输入日期。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
49
- | `hasClass` | 函数 | 检查 DOM 元素是否具有单个 class;class 参数包含空格时抛错。 | [详细参考](../../docs/revision/utils/api/dom-helper.md) |
50
- | `arrayFindIndex` | 函数 | 返回第一个满足 pred 的数组元素下标,没有匹配时返回 -1。 | [详细参考](../../docs/revision/utils/api/dom-helper.md) |
51
- | `coerceTruthyValueToArray` | 函数 | 数组原样返回;其他真值包装为单项数组;假值返回空数组。 | [详细参考](../../docs/revision/utils/api/dom-helper.md) |
52
- | `cloneDeep` | 函数 | 深复制数据,适合隔离表单和页面配置。 | 见下方签名或接入约定 |
53
- | `isNil` | 函数 | 判断值是否为 null 或 undefined。 | 见下方签名或接入约定 |
54
- | `isEmpty` | 函数 | 按 lodash 语义判断集合、字符串或对象是否为空。 | 见下方签名或接入约定 |
55
- | `isObject` | 函数 | 判断是否为对象或函数;null 返回 false。 | 见下方签名或接入约定 |
56
- | `isEqual` | 函数 | 按 lodash 语义比较两个值的深层结构是否相等。 | 见下方签名或接入约定 |
57
- | `assignWith` | 函数 | 合并来源对象属性到目标对象,并允许自定义合并规则;会修改目标对象。 | 见下方签名或接入约定 |
58
- | `debounce` | 函数 | 创建防抖函数,支持 cancel/flush 及前沿、后沿调用选项。 | 见下方签名或接入约定 |
59
- | `throttle` | 函数 | 创建节流函数,支持 cancel/flush 及前沿、后沿调用选项。 | 见下方签名或接入约定 |
60
- | `get` | 函数 | 按属性路径读取值,未定义时可返回默认值。 | 见下方签名或接入约定 |
61
- | `set` | 函数 | 按属性路径写入值并返回目标对象;会修改目标对象。 | 见下方签名或接入约定 |
62
- | `Config` | 类 | 配置模型类;new Config() 后通过 set(config) 合并配置,对象浅合并、数组复制。 | [详细参考](../../docs/revision/utils/api/Config.md) |
63
- | `Page` | 类 | 页面配置模型类,封装页面标识、元数据及属性查询方法。 | [详细参考](../../docs/revision/utils/api/page.md) |
64
- | `placeholder` | 对象 / 常量 | 占位符工具集合,包含 PLACEHOLDER_RE、lookup、resolveKey、resolvePlaceholders。 | [详细参考](../../docs/revision/utils/api/placeholder.md) |
65
- | `storage` | 对象 / 常量 | 浏览器存储适配器,提供 get/set/remove,支持 session 与 expires 选项。 | [详细参考](../../docs/revision/utils/api/storage.md) |
66
- | `getXsrfToken` | 函数 | 从存储中读取 XSRF token。 | [详细参考](../../docs/revision/utils/api/storage.md) |
67
- | `setXsrfToken` | 函数 | 保存或清理 XSRF token。 | [详细参考](../../docs/revision/utils/api/storage.md) |
68
- | `cookie` | 对象 / 常量 | storage 的兼容别名,使用浏览器存储适配器。 | [详细参考](../../docs/revision/utils/api/storage.md) |
69
- | `moment` | 对象 / 常量 | 基于 Day.js 的 Moment 兼容工厂;支持 format/add/subtract/startOf/endOf/diff 等常用链式调用。 | [详细参考](../../docs/revision/utils/api/moment-compat.md) |
70
- | `dateTime` | 对象 / 常量 | moment 的同一对象别名,适合新产品中明确表达日期工具用途。 | [详细参考](../../docs/revision/utils/api/moment-compat.md) |
71
- | `createMoment` | 对象 / 常量 | 创建 Moment 兼容日期对象;moment/dateTime 的底层工厂。 | [详细参考](../../docs/revision/utils/api/moment-compat.md) |
72
- | `lodash` | 对象 / 常量 | 集合工具对象,包含本包具名导出的十个 lodash-es 方法。 | 见下方签名或接入约定 |
73
-
74
- ## 函数、类与工具对象
75
-
76
- 签名中的 any 表示现有声明未进一步限定结构;源代码方法签名保留默认参数。异步结果与泛型以声明为准。
77
-
78
- ### lookup
79
-
80
- 在一个对象中按点号/方括号路径读取,返回 { found, value },保留 0、false、空串和 undefined 的存在语义。
81
-
82
- ```ts
83
- lookup(path: any, source: any): { found: boolean; value: any; }
84
- ```
85
-
86
- [详细参考](../../docs/revision/utils/api/placeholder.md),包括参数、返回值与运行约束。
87
-
88
- ### resolveKey
89
-
90
- 按 sources 的顺序查找第一个拥有路径的对象,返回 { found, value, index }。
91
-
92
- ```ts
93
- resolveKey(path: string, sources?: object[]): { found: boolean; value: any; index: number; }
94
- ```
95
-
96
- [详细参考](../../docs/revision/utils/api/placeholder.md),包括参数、返回值与运行约束。
97
-
98
- ### resolvePlaceholders
99
-
100
- 替换字符串中全部 #{path};默认缺失值替换为空串,onMissing: keep 时保留占位符。
101
-
102
- ```ts
103
- resolvePlaceholders(text: string, sources?: object[], options?: { onMissing?: "empty" | "keep"; }): string
104
- ```
105
-
106
- [详细参考](../../docs/revision/utils/api/placeholder.md),包括参数、返回值与运行约束。
107
-
108
- ### isDate
109
-
110
- 判断输入是否可转换为有效日期,明确拒绝数组、null 和 undefined。
111
-
112
- ```ts
113
- isDate(date: any): boolean
114
- ```
115
-
116
- [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
117
-
118
- ### getDayCountOfMonth
119
-
120
- 返回指定年/月的天数;month 使用 0–11。
121
-
122
- ```ts
123
- getDayCountOfMonth(year: any, month: any): number
124
- ```
125
-
126
- [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
127
-
128
- ### getDayCountOfYear
129
-
130
- 根据闰年规则返回 365 或 366。
131
-
132
- ```ts
133
- getDayCountOfYear(year: any): 366 | 365
134
- ```
135
-
136
- [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
137
-
138
- ### nextDate
139
-
140
- 返回增加 amount 天后的新 Date,默认增加一天。
141
-
142
- ```ts
143
- nextDate(date: any, amount?: number): Date
144
- ```
145
-
146
- [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
147
-
148
- ### nextMonth
149
-
150
- 返回下个月的 Date,并把月末日期夹紧到目标月的有效天数。
151
-
152
- ```ts
153
- nextMonth(date: any): Date
154
- ```
155
-
156
- [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
157
-
158
- ### prevYear
159
-
160
- 返回向前 amount 年的 Date,并夹紧月末日期。
161
-
162
- ```ts
163
- prevYear(date: any, amount?: number): Date
164
- ```
165
-
166
- [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
167
-
168
- ### nextYear
169
-
170
- 返回向后 amount 年的 Date,并夹紧月末日期。
171
-
172
- ```ts
173
- nextYear(date: any, amount?: number): Date
174
- ```
175
-
176
- [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
177
-
178
- ### range
179
-
180
- 生成从 0 到 n - 1 的整数数组。
181
-
182
- ```ts
183
- range(n: any): any
184
- ```
185
-
186
- [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
187
-
188
- ### modifyDate
189
-
190
- 替换年、月、日,保留时、分、秒和毫秒;月份从 0 开始。
191
-
192
- ```ts
193
- modifyDate(date: any, y: any, m: any, d: any): Date
194
- ```
195
-
196
- [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
197
-
198
- ### modifyTime
199
-
200
- 替换时、分、秒,保留日期和毫秒。
201
-
202
- ```ts
203
- modifyTime(date: any, h: any, m: any, s: any): Date
204
- ```
205
-
206
- [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
207
-
208
- ### modifyWithTimeString
209
-
210
- 用 HH:mm:ss 字符串替换时间;没有匹配时保留输入日期。
211
-
212
- ```ts
213
- modifyWithTimeString(date: any, time: any): any
214
- ```
215
-
216
- [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
217
-
218
- ### hasClass
219
-
220
- 检查 DOM 元素是否具有单个 class;class 参数包含空格时抛错。
221
-
222
- ```ts
223
- hasClass(el: any, cls: any): any
224
- ```
225
-
226
- [详细参考](../../docs/revision/utils/api/dom-helper.md),包括参数、返回值与运行约束。
227
-
228
- ### arrayFindIndex
229
-
230
- 返回第一个满足 pred 的数组元素下标,没有匹配时返回 -1。
231
-
232
- ```ts
233
- arrayFindIndex(arr: any, pred: any): number
234
- ```
235
-
236
- [详细参考](../../docs/revision/utils/api/dom-helper.md),包括参数、返回值与运行约束。
237
-
238
- ### coerceTruthyValueToArray
239
-
240
- 数组原样返回;其他真值包装为单项数组;假值返回空数组。
241
-
242
- ```ts
243
- coerceTruthyValueToArray(val: any): any[]
244
- ```
245
-
246
- [详细参考](../../docs/revision/utils/api/dom-helper.md),包括参数、返回值与运行约束。
247
-
248
- ### cloneDeep
249
-
250
- 深复制数据,适合隔离表单和页面配置。
251
-
252
- ```ts
253
- cloneDeep<T>(value: T): T
254
- ```
255
-
256
- ### isNil
257
-
258
- 判断值是否为 null 或 undefined。
259
-
260
- ```ts
261
- isNil(value: unknown): value is null
262
- ```
263
-
264
- ### isEmpty
265
-
266
- 按 lodash 语义判断集合、字符串或对象是否为空。
267
-
268
- ```ts
269
- isEmpty(value: unknown): boolean
270
- ```
271
-
272
- ### isObject
273
-
274
- 判断是否为对象或函数;null 返回 false。
275
-
276
- ```ts
277
- isObject(value: unknown): value is object
278
- ```
279
-
280
- ### isEqual
281
-
282
- 按 lodash 语义比较两个值的深层结构是否相等。
283
-
284
- ```ts
285
- isEqual(value: unknown, other: unknown): boolean
286
- ```
287
-
288
- ### assignWith
289
-
290
- 合并来源对象属性到目标对象,并允许自定义合并规则;会修改目标对象。
291
-
292
- ```ts
293
- assignWith<T extends object>(object: T, ...sources: any[]): T
294
- ```
295
-
296
- ### debounce
297
-
298
- 创建防抖函数,支持 cancel/flush 及前沿、后沿调用选项。
299
-
300
- ```ts
301
- debounce<T extends (...args: any[]) => any>(func: T, wait?: number, options?: { leading?: boolean; trailing?: boolean; maxWait?: number; }): T & { cancel(): void; flush(): ReturnType<T>; }
302
- ```
303
-
304
- ### throttle
305
-
306
- 创建节流函数,支持 cancel/flush 及前沿、后沿调用选项。
307
-
308
- ```ts
309
- throttle<T extends (...args: any[]) => any>(func: T, wait?: number, options?: { leading?: boolean; trailing?: boolean; maxWait?: number; }): T & { cancel(): void; flush(): ReturnType<T>; }
310
- ```
311
-
312
- ### get
313
-
314
- 按属性路径读取值,未定义时可返回默认值。
315
-
316
- ```ts
317
- get(object: unknown, path: string | (string | number)[], defaultValue?: any): any
318
- ```
319
-
320
- ### set
321
-
322
- 按属性路径写入值并返回目标对象;会修改目标对象。
323
-
324
- ```ts
325
- set<T extends object>(object: T, path: string | (string | number)[], value: any): T
326
- ```
327
-
328
- ### Config
329
-
330
- 配置模型类;new Config() 后通过 set(config) 合并配置,对象浅合并、数组复制。
331
-
332
- ```js
333
- new Config
334
- ```
335
-
336
- | 方法 | 说明 |
337
- | --- | --- |
338
- | `set(config)` | 按属性路径写入值并返回目标对象;会修改目标对象。 |
339
-
340
- [详细参考](../../docs/revision/utils/api/Config.md),包括参数、返回值与运行约束。
341
-
342
- ### Page
343
-
344
- 页面配置模型类,封装页面标识、元数据及属性查询方法。
345
-
346
- ```js
347
- new Page(props)
348
- ```
349
-
350
- | 方法 | 说明 |
351
- | --- | --- |
352
- | `getPageId()` | 返回页面 ID。 |
353
- | `getLabel()` | 返回页面标签字段。 |
354
- | `getMetaId()` | 返回页面绑定的元数据 ID。 |
355
- | `getFlag()` | 返回页面标识。 |
356
- | `getPagePath()` | 返回页面路径。 |
357
- | `getConfig()` | 返回页面配置。 |
358
- | `getKey()` | 返回页面对象的主键。 |
359
- | `getAttris()` | 返回页面字段属性。 |
360
- | `getIdLabelAttris()` | ID对应LAVEL |
361
- | `getNameLabelAttris()` | NAME对应LAVEL |
362
- | `getAttriNameById(attriId)` | 按属性 ID 查询字段名。 |
363
- | `getLabelByField(field)` | 取得字段显示标签。 |
364
-
365
- [详细参考](../../docs/revision/utils/api/page.md),包括参数、返回值与运行约束。
366
-
367
- ### placeholder
368
-
369
- 占位符工具集合,包含 PLACEHOLDER_RE、lookup、resolveKey、resolvePlaceholders。
370
-
371
- | 方法 | 说明 |
372
- | --- | --- |
373
- | `lookup(path, source)` | 在一个对象中按点号/方括号路径读取,返回 { found, value },保留 0、false、空串和 undefined 的存在语义。 |
374
- | `resolveKey(path, sources = [])` | 按 sources 的顺序查找第一个拥有路径的对象,返回 { found, value, index }。 |
375
- | `resolvePlaceholders(text, sources = [], options = {})` | 替换字符串中全部 #{path};默认缺失值替换为空串,onMissing: keep 时保留占位符。 |
376
-
377
- [详细参考](../../docs/revision/utils/api/placeholder.md),包括参数、返回值与运行约束。
378
-
379
- ### storage
380
-
381
- 浏览器存储适配器,提供 get/set/remove,支持 session 与 expires 选项。
382
-
383
- | 方法 | 说明 |
384
- | --- | --- |
385
- | `get(key)` | 读取指定键,过期数据按实现移除。 |
386
- | `set(key, value, options)` | 序列化并保存值,expires 可为天数或 Date。 |
387
- | `remove(key)` | 移除键及对应过期记录。 |
388
-
389
- [详细参考](../../docs/revision/utils/api/storage.md),包括参数、返回值与运行约束。
390
-
391
- ### getXsrfToken
392
-
393
- 从存储中读取 XSRF token。
394
-
395
- ```ts
396
- getXsrfToken(): string
397
- ```
398
-
399
- [详细参考](../../docs/revision/utils/api/storage.md),包括参数、返回值与运行约束。
400
-
401
- ### setXsrfToken
402
-
403
- 保存或清理 XSRF token。
404
-
405
- ```ts
406
- setXsrfToken(token: any): void
407
- ```
408
-
409
- [详细参考](../../docs/revision/utils/api/storage.md),包括参数、返回值与运行约束。
410
-
411
- ### cookie
412
-
413
- storage 的兼容别名,使用浏览器存储适配器。
414
-
415
- 与 `storage` 共用实现,方法见该节。
416
-
417
- [详细参考](../../docs/revision/utils/api/storage.md),包括参数、返回值与运行约束。
418
-
419
- ### moment
420
-
421
- 基于 Day.js 的 Moment 兼容工厂;支持 format/add/subtract/startOf/endOf/diff 等常用链式调用。
422
-
423
- ```ts
424
- moment(input?: unknown, ...formatAndOptions: any[]): MomentLike
425
- ```
426
-
427
- [详细参考](../../docs/revision/utils/api/moment-compat.md),包括参数、返回值与运行约束。
428
-
429
- ### dateTime
430
-
431
- moment 的同一对象别名,适合新产品中明确表达日期工具用途。
432
-
433
- ```ts
434
- dateTime(input?: unknown, ...formatAndOptions: any[]): MomentLike
435
- ```
436
-
437
- [详细参考](../../docs/revision/utils/api/moment-compat.md),包括参数、返回值与运行约束。
438
-
439
- ### createMoment
440
-
441
- 创建 Moment 兼容日期对象;moment/dateTime 的底层工厂。
442
-
443
- ```ts
444
- createMoment(input?: unknown, ...formatAndOptions: any[]): MomentLike
445
- ```
446
-
447
- [详细参考](../../docs/revision/utils/api/moment-compat.md),包括参数、返回值与运行约束。
448
-
449
- ## 稳定子路径
450
-
451
- 下表按实际 package.json 的公开入口列出。default 使用默认导入,其他名称使用具名导入;类型接口用 import type。
452
-
453
- | 导入路径 | 完整导出名 | 用途 / 详细说明 |
454
- | --- | --- | --- |
455
- | `@epxing/utils/config` | `default` | 配置模型类;new Config() 后通过 set(config) 合并配置,对象浅合并、数组复制。 [详细参考](../../docs/revision/utils/api/Config.md) |
456
- | `@epxing/utils/page` | `default` | 页面配置模型类,封装页面标识、元数据及属性查询方法。 [详细参考](../../docs/revision/utils/api/page.md) |
457
- | `@epxing/utils/placeholder` | `PLACEHOLDER_RE`、`lookup`、`resolveKey`、`resolvePlaceholders`、`default` | 占位符工具集合,包含 PLACEHOLDER_RE、lookup、resolveKey、resolvePlaceholders。 [详细参考](../../docs/revision/utils/api/placeholder.md) |
458
- | `@epxing/utils/storage` | `XSRF_TOKEN_KEY`、`getXsrfToken`、`setXsrfToken`、`clearXsrfToken`、`default` | 浏览器存储适配器,提供 get/set/remove,支持 session 与 expires 选项。 [详细参考](../../docs/revision/utils/api/storage.md) |
459
- | `@epxing/utils/date` | `isDate`、`getDayCountOfMonth`、`getDayCountOfYear`、`nextDate`、`nextMonth`、`prevYear`、`nextYear`、`range`、`modifyDate`、`modifyTime`、`modifyWithTimeString` | 判断输入是否可转换为有效日期,明确拒绝数组、null 和 undefined。 [详细参考](../../docs/revision/utils/api/date-helper.md) |
460
- | `@epxing/utils/dom` | `hasClass`、`arrayFindIndex`、`coerceTruthyValueToArray` | 检查 DOM 元素是否具有单个 class;class 参数包含空格时抛错。 [详细参考](../../docs/revision/utils/api/dom-helper.md) |
461
- | `@epxing/utils/date-time` | `READ_METHODS`、`WRITE_METHODS`、`DUAL_METHODS`、`PASSTHROUGH`、`UNSUPPORTED_FORMAT_TOKENS`、`preprocessFormat`、`createMoment`、`default`、`MomentLike`(类型)、`MomentFactory`(类型) | 基于 Day.js 的 Moment 兼容工厂;支持 format/add/subtract/startOf/endOf/diff 等常用链式调用。 [详细参考](../../docs/revision/utils/api/moment-compat.md) |
462
- | `@epxing/utils/collection` | `cloneDeep`、`isNil`、`isEmpty`、`isObject`、`isEqual`、`assignWith`、`debounce`、`throttle`、`get`、`set`、`default` | 集合工具对象,包含本包具名导出的十个 lodash-es 方法。 |
463
-
464
- ## 子路径补充导出
465
-
466
- 本节列出仅在稳定子路径中提供的具名 API;从本节标题对应路径导入。
467
-
468
- ### @epxing/utils/storage
469
-
470
- | 导出 / 调用签名 | 用途 | 详细接口 |
471
- | --- | --- | --- |
472
- | `XSRF_TOKEN_KEY` | 提供 get/set/remove 及过期规则,并维护 xsrf token。保留 cookie 风格 API,但不操作浏览器 Cookie。 | [详细参考](../../docs/revision/utils/api/storage.md) |
473
- | `clearXsrfToken(): void` | 提供 get/set/remove 及过期规则,并维护 xsrf token。保留 cookie 风格 API,但不操作浏览器 Cookie。 | [详细参考](../../docs/revision/utils/api/storage.md) |
474
-
475
- ### @epxing/utils/date-time
476
-
477
- | 导出 / 调用签名 | 用途 | 详细接口 |
478
- | --- | --- | --- |
479
- | `READ_METHODS` | 以 dayjs 实现常用 Moment API、可变链式操作和 duration 补足,导出兼容方法/格式集合。罕用 token 与插件需专门确认。 | [详细参考](../../docs/revision/utils/api/moment-compat.md) |
480
- | `WRITE_METHODS` | 以 dayjs 实现常用 Moment API、可变链式操作和 duration 补足,导出兼容方法/格式集合。罕用 token 与插件需专门确认。 | [详细参考](../../docs/revision/utils/api/moment-compat.md) |
481
- | `DUAL_METHODS` | 以 dayjs 实现常用 Moment API、可变链式操作和 duration 补足,导出兼容方法/格式集合。罕用 token 与插件需专门确认。 | [详细参考](../../docs/revision/utils/api/moment-compat.md) |
482
- | `PASSTHROUGH` | 以 dayjs 实现常用 Moment API、可变链式操作和 duration 补足,导出兼容方法/格式集合。罕用 token 与插件需专门确认。 | [详细参考](../../docs/revision/utils/api/moment-compat.md) |
483
- | `UNSUPPORTED_FORMAT_TOKENS` | 以 dayjs 实现常用 Moment API、可变链式操作和 duration 补足,导出兼容方法/格式集合。罕用 token 与插件需专门确认。 | [详细参考](../../docs/revision/utils/api/moment-compat.md) |
484
- | `preprocessFormat(format: string, milliseconds?: number, year?: number): string` | 以 dayjs 实现常用 Moment API、可变链式操作和 duration 补足,导出兼容方法/格式集合。罕用 token 与插件需专门确认。 | [详细参考](../../docs/revision/utils/api/moment-compat.md) |
485
-
486
- ## 导出的 TypeScript 类型
487
-
488
- 以下名称仅存在于类型系统,用 import type 导入,不作为运行时对象使用。
489
-
490
- ### MomentLike
491
-
492
- ```ts
493
- interface MomentLike {
494
- format(format?: string): string
495
- valueOf(): number
496
- unix(): number
497
- toDate(): Date
498
- toISOString(): string | null
499
- toJSON(): string | null
500
- toString(): string
501
- toArray(): number[]
502
- toObject(): Record<string, number>
503
- isValid(): boolean
504
- clone(): MomentLike
505
- diff(input?: unknown, unit?: string, precise?: boolean): number
506
- isBefore(input?: unknown, unit?: string): boolean
507
- isAfter(input?: unknown, unit?: string): boolean
508
- isSame(input?: unknown, unit?: string): boolean
509
- isSameOrBefore(input?: unknown, unit?: string): boolean
510
- isSameOrAfter(input?: unknown, unit?: string): boolean
511
- isBetween(start: unknown, end: unknown, unit?: string | null, inclusivity?: string): boolean
512
- isLeapYear(): boolean
513
- daysInMonth(): number
514
- get(unit: string): number
515
- from(input: unknown, withoutSuffix?: boolean): string
516
- to(input: unknown, withoutSuffix?: boolean): string
517
- fromNow(withoutSuffix?: boolean): string
518
- toNow(withoutSuffix?: boolean): string
519
- calendar(reference?: unknown, formats?: Record<string, string | ((...args: any[]) => string)>): string
520
- utcOffset(): number
521
- utcOffset(offset: number | string, keepLocalTime?: boolean): MomentLike
522
- weekday(): number
523
- weekday(value: number): MomentLike
524
- isoWeekday(): number
525
- isoWeekday(value: number): MomentLike
526
- add(amount: number | Duration, unit?: string): this
527
- subtract(amount: number | Duration, unit?: string): this
528
- startOf(unit: string): this
529
- endOf(unit: string): this
530
- set(unit: string, value: number): this
531
- set(values: Record<string, number>): this
532
- local(): this
533
- utc(keepLocalTime?: boolean): this
534
- locale(): string
535
- locale(name: string): this
536
- year(): number
537
- year(value: number): this
538
- month(): number
539
- month(value: number): this
540
- date(): number
541
- date(value: number): this
542
- day(): number
543
- day(value: number): this
544
- hour(): number
545
- hour(value: number): this
546
- minute(): number
547
- minute(value: number): this
548
- second(): number
549
- second(value: number): this
550
- millisecond(): number
551
- millisecond(value: number): this
552
- quarter(): number
553
- quarter(value: number): this
554
- week(): number
555
- week(value: number): this
556
- isoWeek(): number
557
- isoWeek(value: number): this
558
- dayOfYear(): number
559
- dayOfYear(value: number): this
560
- }
561
- ```
562
-
563
- ### MomentFactory
564
-
565
- ```ts
566
- interface MomentFactory {
567
- (input?: unknown, ...formatAndOptions: any[]): MomentLike
568
- duration(input?: unknown, ...unit: any[]): Duration
569
- locale(name?: string): string
570
- isMoment(value: unknown): value is MomentLike
571
- unix(seconds: number): MomentLike
572
- utc(input?: unknown, ...formatAndOptions: any[]): MomentLike
573
- max(...dates: (MomentLike | Dayjs | (MomentLike | Dayjs)[])[]): MomentLike
574
- min(...dates: (MomentLike | Dayjs | (MomentLike | Dayjs)[])[]): MomentLike
575
- }
576
- ```
577
-
578
- ## 源码兼容与其他入口
579
-
580
- /src 路径保留给已有产品和源码级扩展,可能包含平台内部实现;新产品优先采用上方根导出与稳定子路径。通配符表示按实际文件名匹配,不代表所有源码都属于根入口。
581
-
582
- | 公开路径模式 | 实际目标 |
583
- | --- | --- |
584
- | `@epxing/utils/src` | `./dist/src/legacy.js` |
585
- | `@epxing/utils/src/*.css` | `./src/*.css` |
586
- | `@epxing/utils/src/*.scss` | `./src/*.scss` |
587
- | `@epxing/utils/src/*.png` | `./src/*.png` |
588
- | `@epxing/utils/src/*.svg` | `./src/*.svg` |
589
- | `@epxing/utils/src/*.jpg` | `./src/*.jpg` |
590
- | `@epxing/utils/src/*.gif` | `./src/*.gif` |
591
- | `@epxing/utils/src/*.woff` | `./src/*.woff` |
592
- | `@epxing/utils/src/*.woff2` | `./src/*.woff2` |
593
- | `@epxing/utils/src/*.ttf` | `./src/*.ttf` |
594
- | `@epxing/utils/src/*.js` | `./dist/src/*.js` |
595
- | `@epxing/utils/src/*.jsx` | `./dist/src/*.js` |
596
- | `@epxing/utils/src/*.vue` | `./dist/src/*.js` |
597
- | `@epxing/utils/src/*` | `./dist/src/*.js` |
598
- | `@epxing/utils/package.json` | `./package.json` |
599
-
600
- ## 文档维护
601
-
602
- 本页由 build/gen-package-api-docs.mjs 生成。修改公开入口并更新构建产物和类型声明后,在框架根运行 `pnpm docs:api`;`pnpm docs:api:check` 检查清单、类型、包内文档与站点镜像是否同步,同时验证页面编译和文档链接。用途和示例维护在 build/package-api-notes.mjs,组件和源码方法的详细参考位于 docs/revision。
1
+ # @epxing/utils API
2
+
3
+ 独立的配置模型、日期、集合、占位符、DOM 与浏览器存储工具;根入口不需要安装 Vue 或 core。
4
+
5
+ 本页对应包版本 `5.3.0-beta.4`。导出名、子路径和签名从当前源码、package.json 与类型声明生成。
6
+
7
+ ## 安装与使用
8
+
9
+
10
+ ```sh
11
+ pnpm add @epxing/utils@5.3.0-beta.2
12
+ ```
13
+
14
+
15
+ ```js
16
+ import { cloneDeep, moment, resolvePlaceholders, storage, Page } from '@epxing/utils'
17
+ import { nextMonth } from '@epxing/utils/date'
18
+
19
+ const draft = cloneDeep({ name: '张三' })
20
+ const date = moment('2026-10-22').add(1, 'day').format('YYYY-MM-DD')
21
+ const text = resolvePlaceholders('用户:#{name}', [draft])
22
+ storage.set('last-date', date)
23
+ const page = new Page({ label: '员工列表' })
24
+ ```
25
+
26
+ ## 接入约定
27
+
28
+ 根入口没有 default 导出,请使用具名导入。日期纯函数的 month 使用 0–11。storage/cookie 操作的是 localStorage/sessionStorage;DOM 和存储方法在浏览器中调用。moment 是 Day.js 兼容层,兼容方法以本包类型声明为准。平台相关的 util、Meta、FieldFactory、PdfViewer 从 @epxing/core 导入。
29
+
30
+ ## 根入口完整导出
31
+
32
+ | 导出名 | 形态 | 用途 | 参数 / 配置 / 事件 |
33
+ | --- | --- | --- | --- |
34
+ | `PLACEHOLDER_RE` | 对象 / 常量 | 匹配全部 #{path} 占位符的全局正则;复用 RegExp.test/exec 时注意 lastIndex。 | [详细参考](../../docs/revision/utils/api/placeholder.md) |
35
+ | `lookup` | 函数 | 在一个对象中按点号/方括号路径读取,返回 { found, value },保留 0、false、空串和 undefined 的存在语义。 | [详细参考](../../docs/revision/utils/api/placeholder.md) |
36
+ | `resolveKey` | 函数 | 按 sources 的顺序查找第一个拥有路径的对象,返回 { found, value, index }。 | [详细参考](../../docs/revision/utils/api/placeholder.md) |
37
+ | `resolvePlaceholders` | 函数 | 替换字符串中全部 #{path};默认缺失值替换为空串,onMissing: keep 时保留占位符。 | [详细参考](../../docs/revision/utils/api/placeholder.md) |
38
+ | `isDate` | 函数 | 判断输入是否可转换为有效日期,明确拒绝数组、null 和 undefined。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
39
+ | `getDayCountOfMonth` | 函数 | 返回指定年/月的天数;month 使用 0–11。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
40
+ | `getDayCountOfYear` | 函数 | 根据闰年规则返回 365 或 366。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
41
+ | `nextDate` | 函数 | 返回增加 amount 天后的新 Date,默认增加一天。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
42
+ | `nextMonth` | 函数 | 返回下个月的 Date,并把月末日期夹紧到目标月的有效天数。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
43
+ | `prevYear` | 函数 | 返回向前 amount 年的 Date,并夹紧月末日期。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
44
+ | `nextYear` | 函数 | 返回向后 amount 年的 Date,并夹紧月末日期。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
45
+ | `range` | 函数 | 生成从 0 到 n - 1 的整数数组。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
46
+ | `modifyDate` | 函数 | 替换年、月、日,保留时、分、秒和毫秒;月份从 0 开始。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
47
+ | `modifyTime` | 函数 | 替换时、分、秒,保留日期和毫秒。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
48
+ | `modifyWithTimeString` | 函数 | 用 HH:mm:ss 字符串替换时间;没有匹配时保留输入日期。 | [详细参考](../../docs/revision/utils/api/date-helper.md) |
49
+ | `hasClass` | 函数 | 检查 DOM 元素是否具有单个 class;class 参数包含空格时抛错。 | [详细参考](../../docs/revision/utils/api/dom-helper.md) |
50
+ | `arrayFindIndex` | 函数 | 返回第一个满足 pred 的数组元素下标,没有匹配时返回 -1。 | [详细参考](../../docs/revision/utils/api/dom-helper.md) |
51
+ | `coerceTruthyValueToArray` | 函数 | 数组原样返回;其他真值包装为单项数组;假值返回空数组。 | [详细参考](../../docs/revision/utils/api/dom-helper.md) |
52
+ | `cloneDeep` | 函数 | 深复制数据,适合隔离表单和页面配置。 | 见下方签名或接入约定 |
53
+ | `isNil` | 函数 | 判断值是否为 null 或 undefined。 | 见下方签名或接入约定 |
54
+ | `isEmpty` | 函数 | 按 lodash 语义判断集合、字符串或对象是否为空。 | 见下方签名或接入约定 |
55
+ | `isObject` | 函数 | 判断是否为对象或函数;null 返回 false。 | 见下方签名或接入约定 |
56
+ | `isEqual` | 函数 | 按 lodash 语义比较两个值的深层结构是否相等。 | 见下方签名或接入约定 |
57
+ | `assignWith` | 函数 | 合并来源对象属性到目标对象,并允许自定义合并规则;会修改目标对象。 | 见下方签名或接入约定 |
58
+ | `debounce` | 函数 | 创建防抖函数,支持 cancel/flush 及前沿、后沿调用选项。 | 见下方签名或接入约定 |
59
+ | `throttle` | 函数 | 创建节流函数,支持 cancel/flush 及前沿、后沿调用选项。 | 见下方签名或接入约定 |
60
+ | `get` | 函数 | 按属性路径读取值,未定义时可返回默认值。 | 见下方签名或接入约定 |
61
+ | `set` | 函数 | 按属性路径写入值并返回目标对象;会修改目标对象。 | 见下方签名或接入约定 |
62
+ | `Config` | 类 | 配置模型类;new Config() 后通过 set(config) 合并配置,对象浅合并、数组复制。 | [详细参考](../../docs/revision/utils/api/Config.md) |
63
+ | `Page` | 类 | 页面配置模型类,封装页面标识、元数据及属性查询方法。 | [详细参考](../../docs/revision/utils/api/page.md) |
64
+ | `placeholder` | 对象 / 常量 | 占位符工具集合,包含 PLACEHOLDER_RE、lookup、resolveKey、resolvePlaceholders。 | [详细参考](../../docs/revision/utils/api/placeholder.md) |
65
+ | `storage` | 对象 / 常量 | 浏览器存储适配器,提供 get/set/remove,支持 session 与 expires 选项。 | [详细参考](../../docs/revision/utils/api/storage.md) |
66
+ | `getXsrfToken` | 函数 | 从存储中读取 XSRF token。 | [详细参考](../../docs/revision/utils/api/storage.md) |
67
+ | `setXsrfToken` | 函数 | 保存或清理 XSRF token。 | [详细参考](../../docs/revision/utils/api/storage.md) |
68
+ | `cookie` | 对象 / 常量 | storage 的兼容别名,使用浏览器存储适配器。 | [详细参考](../../docs/revision/utils/api/storage.md) |
69
+ | `moment` | 对象 / 常量 | 基于 Day.js 的 Moment 兼容工厂;支持 format/add/subtract/startOf/endOf/diff 等常用链式调用。 | [详细参考](../../docs/revision/utils/api/moment-compat.md) |
70
+ | `dateTime` | 对象 / 常量 | moment 的同一对象别名,适合新产品中明确表达日期工具用途。 | [详细参考](../../docs/revision/utils/api/moment-compat.md) |
71
+ | `createMoment` | 对象 / 常量 | 创建 Moment 兼容日期对象;moment/dateTime 的底层工厂。 | [详细参考](../../docs/revision/utils/api/moment-compat.md) |
72
+ | `lodash` | 对象 / 常量 | 集合工具对象,包含本包具名导出的十个 lodash-es 方法。 | 见下方签名或接入约定 |
73
+
74
+ ## 函数、类与工具对象
75
+
76
+ 签名中的 any 表示现有声明未进一步限定结构;源代码方法签名保留默认参数。异步结果与泛型以声明为准。
77
+
78
+ ### lookup
79
+
80
+ 在一个对象中按点号/方括号路径读取,返回 { found, value },保留 0、false、空串和 undefined 的存在语义。
81
+
82
+ ```ts
83
+ lookup(path: any, source: any): { found: boolean; value: any; }
84
+ ```
85
+
86
+ [详细参考](../../docs/revision/utils/api/placeholder.md),包括参数、返回值与运行约束。
87
+
88
+ ### resolveKey
89
+
90
+ 按 sources 的顺序查找第一个拥有路径的对象,返回 { found, value, index }。
91
+
92
+ ```ts
93
+ resolveKey(path: string, sources?: object[]): { found: boolean; value: any; index: number; }
94
+ ```
95
+
96
+ [详细参考](../../docs/revision/utils/api/placeholder.md),包括参数、返回值与运行约束。
97
+
98
+ ### resolvePlaceholders
99
+
100
+ 替换字符串中全部 #{path};默认缺失值替换为空串,onMissing: keep 时保留占位符。
101
+
102
+ ```ts
103
+ resolvePlaceholders(text: string, sources?: object[], options?: { onMissing?: "empty" | "keep"; }): string
104
+ ```
105
+
106
+ [详细参考](../../docs/revision/utils/api/placeholder.md),包括参数、返回值与运行约束。
107
+
108
+ ### isDate
109
+
110
+ 判断输入是否可转换为有效日期,明确拒绝数组、null 和 undefined。
111
+
112
+ ```ts
113
+ isDate(date: any): boolean
114
+ ```
115
+
116
+ [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
117
+
118
+ ### getDayCountOfMonth
119
+
120
+ 返回指定年/月的天数;month 使用 0–11。
121
+
122
+ ```ts
123
+ getDayCountOfMonth(year: any, month: any): number
124
+ ```
125
+
126
+ [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
127
+
128
+ ### getDayCountOfYear
129
+
130
+ 根据闰年规则返回 365 或 366。
131
+
132
+ ```ts
133
+ getDayCountOfYear(year: any): 366 | 365
134
+ ```
135
+
136
+ [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
137
+
138
+ ### nextDate
139
+
140
+ 返回增加 amount 天后的新 Date,默认增加一天。
141
+
142
+ ```ts
143
+ nextDate(date: any, amount?: number): Date
144
+ ```
145
+
146
+ [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
147
+
148
+ ### nextMonth
149
+
150
+ 返回下个月的 Date,并把月末日期夹紧到目标月的有效天数。
151
+
152
+ ```ts
153
+ nextMonth(date: any): Date
154
+ ```
155
+
156
+ [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
157
+
158
+ ### prevYear
159
+
160
+ 返回向前 amount 年的 Date,并夹紧月末日期。
161
+
162
+ ```ts
163
+ prevYear(date: any, amount?: number): Date
164
+ ```
165
+
166
+ [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
167
+
168
+ ### nextYear
169
+
170
+ 返回向后 amount 年的 Date,并夹紧月末日期。
171
+
172
+ ```ts
173
+ nextYear(date: any, amount?: number): Date
174
+ ```
175
+
176
+ [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
177
+
178
+ ### range
179
+
180
+ 生成从 0 到 n - 1 的整数数组。
181
+
182
+ ```ts
183
+ range(n: any): any
184
+ ```
185
+
186
+ [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
187
+
188
+ ### modifyDate
189
+
190
+ 替换年、月、日,保留时、分、秒和毫秒;月份从 0 开始。
191
+
192
+ ```ts
193
+ modifyDate(date: any, y: any, m: any, d: any): Date
194
+ ```
195
+
196
+ [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
197
+
198
+ ### modifyTime
199
+
200
+ 替换时、分、秒,保留日期和毫秒。
201
+
202
+ ```ts
203
+ modifyTime(date: any, h: any, m: any, s: any): Date
204
+ ```
205
+
206
+ [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
207
+
208
+ ### modifyWithTimeString
209
+
210
+ 用 HH:mm:ss 字符串替换时间;没有匹配时保留输入日期。
211
+
212
+ ```ts
213
+ modifyWithTimeString(date: any, time: any): any
214
+ ```
215
+
216
+ [详细参考](../../docs/revision/utils/api/date-helper.md),包括参数、返回值与运行约束。
217
+
218
+ ### hasClass
219
+
220
+ 检查 DOM 元素是否具有单个 class;class 参数包含空格时抛错。
221
+
222
+ ```ts
223
+ hasClass(el: any, cls: any): any
224
+ ```
225
+
226
+ [详细参考](../../docs/revision/utils/api/dom-helper.md),包括参数、返回值与运行约束。
227
+
228
+ ### arrayFindIndex
229
+
230
+ 返回第一个满足 pred 的数组元素下标,没有匹配时返回 -1。
231
+
232
+ ```ts
233
+ arrayFindIndex(arr: any, pred: any): number
234
+ ```
235
+
236
+ [详细参考](../../docs/revision/utils/api/dom-helper.md),包括参数、返回值与运行约束。
237
+
238
+ ### coerceTruthyValueToArray
239
+
240
+ 数组原样返回;其他真值包装为单项数组;假值返回空数组。
241
+
242
+ ```ts
243
+ coerceTruthyValueToArray(val: any): any[]
244
+ ```
245
+
246
+ [详细参考](../../docs/revision/utils/api/dom-helper.md),包括参数、返回值与运行约束。
247
+
248
+ ### cloneDeep
249
+
250
+ 深复制数据,适合隔离表单和页面配置。
251
+
252
+ ```ts
253
+ cloneDeep<T>(value: T): T
254
+ ```
255
+
256
+ ### isNil
257
+
258
+ 判断值是否为 null 或 undefined。
259
+
260
+ ```ts
261
+ isNil(value: unknown): value is null
262
+ ```
263
+
264
+ ### isEmpty
265
+
266
+ 按 lodash 语义判断集合、字符串或对象是否为空。
267
+
268
+ ```ts
269
+ isEmpty(value: unknown): boolean
270
+ ```
271
+
272
+ ### isObject
273
+
274
+ 判断是否为对象或函数;null 返回 false。
275
+
276
+ ```ts
277
+ isObject(value: unknown): value is object
278
+ ```
279
+
280
+ ### isEqual
281
+
282
+ 按 lodash 语义比较两个值的深层结构是否相等。
283
+
284
+ ```ts
285
+ isEqual(value: unknown, other: unknown): boolean
286
+ ```
287
+
288
+ ### assignWith
289
+
290
+ 合并来源对象属性到目标对象,并允许自定义合并规则;会修改目标对象。
291
+
292
+ ```ts
293
+ assignWith<T extends object>(object: T, ...sources: any[]): T
294
+ ```
295
+
296
+ ### debounce
297
+
298
+ 创建防抖函数,支持 cancel/flush 及前沿、后沿调用选项。
299
+
300
+ ```ts
301
+ debounce<T extends (...args: any[]) => any>(func: T, wait?: number, options?: { leading?: boolean; trailing?: boolean; maxWait?: number; }): T & { cancel(): void; flush(): ReturnType<T>; }
302
+ ```
303
+
304
+ ### throttle
305
+
306
+ 创建节流函数,支持 cancel/flush 及前沿、后沿调用选项。
307
+
308
+ ```ts
309
+ throttle<T extends (...args: any[]) => any>(func: T, wait?: number, options?: { leading?: boolean; trailing?: boolean; maxWait?: number; }): T & { cancel(): void; flush(): ReturnType<T>; }
310
+ ```
311
+
312
+ ### get
313
+
314
+ 按属性路径读取值,未定义时可返回默认值。
315
+
316
+ ```ts
317
+ get(object: unknown, path: string | (string | number)[], defaultValue?: any): any
318
+ ```
319
+
320
+ ### set
321
+
322
+ 按属性路径写入值并返回目标对象;会修改目标对象。
323
+
324
+ ```ts
325
+ set<T extends object>(object: T, path: string | (string | number)[], value: any): T
326
+ ```
327
+
328
+ ### Config
329
+
330
+ 配置模型类;new Config() 后通过 set(config) 合并配置,对象浅合并、数组复制。
331
+
332
+ ```js
333
+ new Config
334
+ ```
335
+
336
+ | 方法 | 说明 |
337
+ | --- | --- |
338
+ | `set(config)` | 按属性路径写入值并返回目标对象;会修改目标对象。 |
339
+
340
+ [详细参考](../../docs/revision/utils/api/Config.md),包括参数、返回值与运行约束。
341
+
342
+ ### Page
343
+
344
+ 页面配置模型类,封装页面标识、元数据及属性查询方法。
345
+
346
+ ```js
347
+ new Page(props)
348
+ ```
349
+
350
+ | 方法 | 说明 |
351
+ | --- | --- |
352
+ | `getPageId()` | 返回页面 ID。 |
353
+ | `getLabel()` | 返回页面标签字段。 |
354
+ | `getMetaId()` | 返回页面绑定的元数据 ID。 |
355
+ | `getFlag()` | 返回页面标识。 |
356
+ | `getPagePath()` | 返回页面路径。 |
357
+ | `getConfig()` | 返回页面配置。 |
358
+ | `getKey()` | 返回页面对象的主键。 |
359
+ | `getAttris()` | 返回页面字段属性。 |
360
+ | `getIdLabelAttris()` | ID对应LAVEL |
361
+ | `getNameLabelAttris()` | NAME对应LAVEL |
362
+ | `getAttriNameById(attriId)` | 按属性 ID 查询字段名。 |
363
+ | `getLabelByField(field)` | 取得字段显示标签。 |
364
+
365
+ [详细参考](../../docs/revision/utils/api/page.md),包括参数、返回值与运行约束。
366
+
367
+ ### placeholder
368
+
369
+ 占位符工具集合,包含 PLACEHOLDER_RE、lookup、resolveKey、resolvePlaceholders。
370
+
371
+ | 方法 | 说明 |
372
+ | --- | --- |
373
+ | `lookup(path, source)` | 在一个对象中按点号/方括号路径读取,返回 { found, value },保留 0、false、空串和 undefined 的存在语义。 |
374
+ | `resolveKey(path, sources = [])` | 按 sources 的顺序查找第一个拥有路径的对象,返回 { found, value, index }。 |
375
+ | `resolvePlaceholders(text, sources = [], options = {})` | 替换字符串中全部 #{path};默认缺失值替换为空串,onMissing: keep 时保留占位符。 |
376
+
377
+ [详细参考](../../docs/revision/utils/api/placeholder.md),包括参数、返回值与运行约束。
378
+
379
+ ### storage
380
+
381
+ 浏览器存储适配器,提供 get/set/remove,支持 session 与 expires 选项。
382
+
383
+ | 方法 | 说明 |
384
+ | --- | --- |
385
+ | `get(key)` | 读取指定键,过期数据按实现移除。 |
386
+ | `set(key, value, options)` | 序列化并保存值,expires 可为天数或 Date。 |
387
+ | `remove(key)` | 移除键及对应过期记录。 |
388
+
389
+ [详细参考](../../docs/revision/utils/api/storage.md),包括参数、返回值与运行约束。
390
+
391
+ ### getXsrfToken
392
+
393
+ 从存储中读取 XSRF token。
394
+
395
+ ```ts
396
+ getXsrfToken(): string
397
+ ```
398
+
399
+ [详细参考](../../docs/revision/utils/api/storage.md),包括参数、返回值与运行约束。
400
+
401
+ ### setXsrfToken
402
+
403
+ 保存或清理 XSRF token。
404
+
405
+ ```ts
406
+ setXsrfToken(token: any): void
407
+ ```
408
+
409
+ [详细参考](../../docs/revision/utils/api/storage.md),包括参数、返回值与运行约束。
410
+
411
+ ### cookie
412
+
413
+ storage 的兼容别名,使用浏览器存储适配器。
414
+
415
+ 与 `storage` 共用实现,方法见该节。
416
+
417
+ [详细参考](../../docs/revision/utils/api/storage.md),包括参数、返回值与运行约束。
418
+
419
+ ### moment
420
+
421
+ 基于 Day.js 的 Moment 兼容工厂;支持 format/add/subtract/startOf/endOf/diff 等常用链式调用。
422
+
423
+ ```ts
424
+ moment(input?: unknown, ...formatAndOptions: any[]): MomentLike
425
+ ```
426
+
427
+ [详细参考](../../docs/revision/utils/api/moment-compat.md),包括参数、返回值与运行约束。
428
+
429
+ ### dateTime
430
+
431
+ moment 的同一对象别名,适合新产品中明确表达日期工具用途。
432
+
433
+ ```ts
434
+ dateTime(input?: unknown, ...formatAndOptions: any[]): MomentLike
435
+ ```
436
+
437
+ [详细参考](../../docs/revision/utils/api/moment-compat.md),包括参数、返回值与运行约束。
438
+
439
+ ### createMoment
440
+
441
+ 创建 Moment 兼容日期对象;moment/dateTime 的底层工厂。
442
+
443
+ ```ts
444
+ createMoment(input?: unknown, ...formatAndOptions: any[]): MomentLike
445
+ ```
446
+
447
+ [详细参考](../../docs/revision/utils/api/moment-compat.md),包括参数、返回值与运行约束。
448
+
449
+ ## 稳定子路径
450
+
451
+ 下表按实际 package.json 的公开入口列出。default 使用默认导入,其他名称使用具名导入;类型接口用 import type。
452
+
453
+ | 导入路径 | 完整导出名 | 用途 / 详细说明 |
454
+ | --- | --- | --- |
455
+ | `@epxing/utils/config` | `default` | 配置模型类;new Config() 后通过 set(config) 合并配置,对象浅合并、数组复制。 [详细参考](../../docs/revision/utils/api/Config.md) |
456
+ | `@epxing/utils/page` | `default` | 页面配置模型类,封装页面标识、元数据及属性查询方法。 [详细参考](../../docs/revision/utils/api/page.md) |
457
+ | `@epxing/utils/placeholder` | `PLACEHOLDER_RE`、`lookup`、`resolveKey`、`resolvePlaceholders`、`default` | 占位符工具集合,包含 PLACEHOLDER_RE、lookup、resolveKey、resolvePlaceholders。 [详细参考](../../docs/revision/utils/api/placeholder.md) |
458
+ | `@epxing/utils/storage` | `XSRF_TOKEN_KEY`、`getXsrfToken`、`setXsrfToken`、`clearXsrfToken`、`default` | 浏览器存储适配器,提供 get/set/remove,支持 session 与 expires 选项。 [详细参考](../../docs/revision/utils/api/storage.md) |
459
+ | `@epxing/utils/date` | `isDate`、`getDayCountOfMonth`、`getDayCountOfYear`、`nextDate`、`nextMonth`、`prevYear`、`nextYear`、`range`、`modifyDate`、`modifyTime`、`modifyWithTimeString` | 判断输入是否可转换为有效日期,明确拒绝数组、null 和 undefined。 [详细参考](../../docs/revision/utils/api/date-helper.md) |
460
+ | `@epxing/utils/dom` | `hasClass`、`arrayFindIndex`、`coerceTruthyValueToArray` | 检查 DOM 元素是否具有单个 class;class 参数包含空格时抛错。 [详细参考](../../docs/revision/utils/api/dom-helper.md) |
461
+ | `@epxing/utils/date-time` | `READ_METHODS`、`WRITE_METHODS`、`DUAL_METHODS`、`PASSTHROUGH`、`UNSUPPORTED_FORMAT_TOKENS`、`preprocessFormat`、`createMoment`、`default`、`MomentLike`(类型)、`MomentFactory`(类型) | 基于 Day.js 的 Moment 兼容工厂;支持 format/add/subtract/startOf/endOf/diff 等常用链式调用。 [详细参考](../../docs/revision/utils/api/moment-compat.md) |
462
+ | `@epxing/utils/collection` | `cloneDeep`、`isNil`、`isEmpty`、`isObject`、`isEqual`、`assignWith`、`debounce`、`throttle`、`get`、`set`、`default` | 集合工具对象,包含本包具名导出的十个 lodash-es 方法。 |
463
+
464
+ ## 子路径补充导出
465
+
466
+ 本节列出仅在稳定子路径中提供的具名 API;从本节标题对应路径导入。
467
+
468
+ ### @epxing/utils/storage
469
+
470
+ | 导出 / 调用签名 | 用途 | 详细接口 |
471
+ | --- | --- | --- |
472
+ | `XSRF_TOKEN_KEY` | 提供 get/set/remove 及过期规则,并维护 xsrf token。保留 cookie 风格 API,但不操作浏览器 Cookie。 | [详细参考](../../docs/revision/utils/api/storage.md) |
473
+ | `clearXsrfToken(): void` | 提供 get/set/remove 及过期规则,并维护 xsrf token。保留 cookie 风格 API,但不操作浏览器 Cookie。 | [详细参考](../../docs/revision/utils/api/storage.md) |
474
+
475
+ ### @epxing/utils/date-time
476
+
477
+ | 导出 / 调用签名 | 用途 | 详细接口 |
478
+ | --- | --- | --- |
479
+ | `READ_METHODS` | 以 dayjs 实现常用 Moment API、可变链式操作和 duration 补足,导出兼容方法/格式集合。罕用 token 与插件需专门确认。 | [详细参考](../../docs/revision/utils/api/moment-compat.md) |
480
+ | `WRITE_METHODS` | 以 dayjs 实现常用 Moment API、可变链式操作和 duration 补足,导出兼容方法/格式集合。罕用 token 与插件需专门确认。 | [详细参考](../../docs/revision/utils/api/moment-compat.md) |
481
+ | `DUAL_METHODS` | 以 dayjs 实现常用 Moment API、可变链式操作和 duration 补足,导出兼容方法/格式集合。罕用 token 与插件需专门确认。 | [详细参考](../../docs/revision/utils/api/moment-compat.md) |
482
+ | `PASSTHROUGH` | 以 dayjs 实现常用 Moment API、可变链式操作和 duration 补足,导出兼容方法/格式集合。罕用 token 与插件需专门确认。 | [详细参考](../../docs/revision/utils/api/moment-compat.md) |
483
+ | `UNSUPPORTED_FORMAT_TOKENS` | 以 dayjs 实现常用 Moment API、可变链式操作和 duration 补足,导出兼容方法/格式集合。罕用 token 与插件需专门确认。 | [详细参考](../../docs/revision/utils/api/moment-compat.md) |
484
+ | `preprocessFormat(format: string, milliseconds?: number, year?: number): string` | 以 dayjs 实现常用 Moment API、可变链式操作和 duration 补足,导出兼容方法/格式集合。罕用 token 与插件需专门确认。 | [详细参考](../../docs/revision/utils/api/moment-compat.md) |
485
+
486
+ ## 导出的 TypeScript 类型
487
+
488
+ 以下名称仅存在于类型系统,用 import type 导入,不作为运行时对象使用。
489
+
490
+ ### MomentLike
491
+
492
+ ```ts
493
+ interface MomentLike {
494
+ format(format?: string): string
495
+ valueOf(): number
496
+ unix(): number
497
+ toDate(): Date
498
+ toISOString(): string | null
499
+ toJSON(): string | null
500
+ toString(): string
501
+ toArray(): number[]
502
+ toObject(): Record<string, number>
503
+ isValid(): boolean
504
+ clone(): MomentLike
505
+ diff(input?: unknown, unit?: string, precise?: boolean): number
506
+ isBefore(input?: unknown, unit?: string): boolean
507
+ isAfter(input?: unknown, unit?: string): boolean
508
+ isSame(input?: unknown, unit?: string): boolean
509
+ isSameOrBefore(input?: unknown, unit?: string): boolean
510
+ isSameOrAfter(input?: unknown, unit?: string): boolean
511
+ isBetween(start: unknown, end: unknown, unit?: string | null, inclusivity?: string): boolean
512
+ isLeapYear(): boolean
513
+ daysInMonth(): number
514
+ get(unit: string): number
515
+ from(input: unknown, withoutSuffix?: boolean): string
516
+ to(input: unknown, withoutSuffix?: boolean): string
517
+ fromNow(withoutSuffix?: boolean): string
518
+ toNow(withoutSuffix?: boolean): string
519
+ calendar(reference?: unknown, formats?: Record<string, string | ((...args: any[]) => string)>): string
520
+ utcOffset(): number
521
+ utcOffset(offset: number | string, keepLocalTime?: boolean): MomentLike
522
+ weekday(): number
523
+ weekday(value: number): MomentLike
524
+ isoWeekday(): number
525
+ isoWeekday(value: number): MomentLike
526
+ add(amount: number | Duration, unit?: string): this
527
+ subtract(amount: number | Duration, unit?: string): this
528
+ startOf(unit: string): this
529
+ endOf(unit: string): this
530
+ set(unit: string, value: number): this
531
+ set(values: Record<string, number>): this
532
+ local(): this
533
+ utc(keepLocalTime?: boolean): this
534
+ locale(): string
535
+ locale(name: string): this
536
+ year(): number
537
+ year(value: number): this
538
+ month(): number
539
+ month(value: number): this
540
+ date(): number
541
+ date(value: number): this
542
+ day(): number
543
+ day(value: number): this
544
+ hour(): number
545
+ hour(value: number): this
546
+ minute(): number
547
+ minute(value: number): this
548
+ second(): number
549
+ second(value: number): this
550
+ millisecond(): number
551
+ millisecond(value: number): this
552
+ quarter(): number
553
+ quarter(value: number): this
554
+ week(): number
555
+ week(value: number): this
556
+ isoWeek(): number
557
+ isoWeek(value: number): this
558
+ dayOfYear(): number
559
+ dayOfYear(value: number): this
560
+ }
561
+ ```
562
+
563
+ ### MomentFactory
564
+
565
+ ```ts
566
+ interface MomentFactory {
567
+ (input?: unknown, ...formatAndOptions: any[]): MomentLike
568
+ duration(input?: unknown, ...unit: any[]): Duration
569
+ locale(name?: string): string
570
+ isMoment(value: unknown): value is MomentLike
571
+ unix(seconds: number): MomentLike
572
+ utc(input?: unknown, ...formatAndOptions: any[]): MomentLike
573
+ max(...dates: (MomentLike | Dayjs | (MomentLike | Dayjs)[])[]): MomentLike
574
+ min(...dates: (MomentLike | Dayjs | (MomentLike | Dayjs)[])[]): MomentLike
575
+ }
576
+ ```
577
+
578
+ ## 源码兼容与其他入口
579
+
580
+ /src 路径保留给已有产品和源码级扩展,可能包含平台内部实现;新产品优先采用上方根导出与稳定子路径。通配符表示按实际文件名匹配,不代表所有源码都属于根入口。
581
+
582
+ | 公开路径模式 | 实际目标 |
583
+ | --- | --- |
584
+ | `@epxing/utils/src` | `./dist/src/legacy.js` |
585
+ | `@epxing/utils/src/*.css` | `./src/*.css` |
586
+ | `@epxing/utils/src/*.scss` | `./src/*.scss` |
587
+ | `@epxing/utils/src/*.png` | `./src/*.png` |
588
+ | `@epxing/utils/src/*.svg` | `./src/*.svg` |
589
+ | `@epxing/utils/src/*.jpg` | `./src/*.jpg` |
590
+ | `@epxing/utils/src/*.gif` | `./src/*.gif` |
591
+ | `@epxing/utils/src/*.woff` | `./src/*.woff` |
592
+ | `@epxing/utils/src/*.woff2` | `./src/*.woff2` |
593
+ | `@epxing/utils/src/*.ttf` | `./src/*.ttf` |
594
+ | `@epxing/utils/src/*.js` | `./dist/src/*.js` |
595
+ | `@epxing/utils/src/*.jsx` | `./dist/src/*.js` |
596
+ | `@epxing/utils/src/*.vue` | `./dist/src/*.js` |
597
+ | `@epxing/utils/src/*` | `./dist/src/*.js` |
598
+ | `@epxing/utils/package.json` | `./package.json` |
599
+
600
+ ## 文档维护
601
+
602
+ 本页由 build/gen-package-api-docs.mjs 生成。修改公开入口并更新构建产物和类型声明后,在框架根运行 `pnpm docs:api`;`pnpm docs:api:check` 检查清单、类型、包内文档与站点镜像是否同步,同时验证页面编译和文档链接。用途和示例维护在 build/package-api-notes.mjs,组件和源码方法的详细参考位于 docs/revision。