@planarcat/js-toolkit 1.5.0 → 1.5.1

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.
package/README.md CHANGED
@@ -128,6 +128,22 @@ console.log(
128
128
  );
129
129
  // 输出: "12.34%"
130
130
 
131
+ // 函数类型前缀
132
+ console.log(
133
+ toFormattedNumberString(123.456, {
134
+ prefix: num => `$${Math.floor(num)}`,
135
+ })
136
+ );
137
+ // 输出: "$123123.456"
138
+
139
+ // 函数类型后缀
140
+ console.log(
141
+ toFormattedNumberString(123.456, {
142
+ suffix: num => `/${num.toFixed(0)}`,
143
+ })
144
+ );
145
+ // 输出: "123.456/123"
146
+
131
147
  // 处理数组
132
148
  console.log(toFormattedNumberString([123.456, '789.012'], { decimalPlaces: 2 }));
133
149
  // 输出: ["123.46", "789.01"]
@@ -163,7 +179,8 @@ src/
163
179
  ├── function/
164
180
  │ └── debounce.ts # 函数防抖功能
165
181
  ├── object/
166
- └── toFormattedNumber.ts # 数字格式化函数
182
+ ├── toFormattedNumber.ts # 数字格式化函数
183
+ │ └── toFormattedNumberString.ts # 格式化数字字符串函数
167
184
  ├── types/
168
185
  │ ├── date.ts # 日期相关类型定义
169
186
  │ ├── function.ts # 防抖相关类型定义
@@ -231,14 +248,19 @@ npm run test:coverage
231
248
 
232
249
  ## 更新日志
233
250
 
251
+ ### v1.5.0
252
+
253
+ - ✨ 为 `toFormattedNumberString` 函数的前缀后缀添加函数类型支持
254
+ - ✨ 修复 0 值、NaN 值和无数字字符串的前缀后缀处理问题
255
+ - ✨ 完善文档和测试用例,确保覆盖所有功能
256
+ - ✨ 优化项目规则文件结构,采用分层管理
257
+
234
258
  ### v1.4.0
235
259
 
236
260
  - ✨ 优化数字格式化功能,无数字字符串返回 `0` 而不是 `NaN`
237
261
  - ✨ 改进 `toFormattedNumberString` 函数,无数字字符串直接返回 `zeroValue`
238
- - ✨ 为 `toFormattedNumberString` 函数的前缀后缀添加函数类型支持
239
262
  - ✨ 完善文档和测试用例
240
263
  - ✨ 优化深层数组处理逻辑
241
- - ✨ 修复 0 值、NaN 值和无数字字符串的前缀后缀处理问题
242
264
 
243
265
  ### v1.3.0
244
266
 
@@ -1,4 +1,4 @@
1
- declare function toFormattedNumberString(object: unknown[], options?: import('../types/object').ToFormattedNumberStringOptions): string[];
2
- declare function toFormattedNumberString(object: unknown, options?: import('../types/object').ToFormattedNumberStringOptions): string | string[];
1
+ declare function toFormattedNumberString(object: unknown[], options?: import("../types/object").ToFormattedNumberStringOptions): string[];
2
+ declare function toFormattedNumberString(object: unknown, options?: import("../types/object").ToFormattedNumberStringOptions): string | string[];
3
3
  export default toFormattedNumberString;
4
4
  //# sourceMappingURL=toFormattedNumberString.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toFormattedNumberString.d.ts","sourceRoot":"","sources":["../../src/object/toFormattedNumberString.ts"],"names":[],"mappings":"AAuEA,iBAAS,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,iBAAiB,EAAE,8BAA8B,GAAG,MAAM,EAAE,CAAC;AAElI,iBAAS,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,iBAAiB,EAAE,8BAA8B,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;AAyHzI,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"toFormattedNumberString.d.ts","sourceRoot":"","sources":["../../src/object/toFormattedNumberString.ts"],"names":[],"mappings":"AAuEA,iBAAS,uBAAuB,CAC9B,MAAM,EAAE,OAAO,EAAE,EACjB,OAAO,CAAC,EAAE,OAAO,iBAAiB,EAAE,8BAA8B,GACjE,MAAM,EAAE,CAAC;AAEZ,iBAAS,uBAAuB,CAC9B,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,OAAO,iBAAiB,EAAE,8BAA8B,GACjE,MAAM,GAAG,MAAM,EAAE,CAAC;AAuIrB,eAAe,uBAAuB,CAAC"}
@@ -75,7 +75,7 @@ const toFormattedNumber_1 = __importDefault(require("./toFormattedNumber"));
75
75
  // 主函数实现
76
76
  function toFormattedNumberString(object, options) {
77
77
  // 解构并设置默认值
78
- const { decimalPlaces = true, nanValue = 'NaN', zeroValue = '0', useLocalizedFormat = false, preProcessor, prefix = '', suffix = '' } = options || {};
78
+ const { decimalPlaces = true, nanValue = "NaN", zeroValue = "0", useLocalizedFormat = false, preProcessor, prefix = "", suffix = "", } = options || {};
79
79
  /**
80
80
  * 处理前缀或后缀,可以是字符串或函数
81
81
  * @param prefixOrSuffix - 前缀或后缀,可以是字符串或函数
@@ -83,7 +83,7 @@ function toFormattedNumberString(object, options) {
83
83
  * @returns 处理后的前缀或后缀字符串
84
84
  */
85
85
  const processPrefixSuffix = (prefixOrSuffix, num) => {
86
- if (typeof prefixOrSuffix === 'function') {
86
+ if (typeof prefixOrSuffix === "function") {
87
87
  return prefixOrSuffix(num);
88
88
  }
89
89
  return prefixOrSuffix;
@@ -161,7 +161,7 @@ function toFormattedNumberString(object, options) {
161
161
  }
162
162
  else {
163
163
  // 检查是否为无数字的字符串
164
- if (typeof value === 'string' && !hasNumbers(value)) {
164
+ if (typeof value === "string" && !hasNumbers(value)) {
165
165
  // 无数字的字符串返回0
166
166
  return addPrefixSuffix(zeroValue, 0);
167
167
  }
@@ -1 +1 @@
1
- {"version":3,"file":"toFormattedNumberString.js","sourceRoot":"","sources":["../../src/object/toFormattedNumberString.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toFormattedNumberString.js","sourceRoot":"","sources":["../../src/object/toFormattedNumberString.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/types/object.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACjE;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,8BAA+B,SAAQ,mBAAmB;IACvE;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAC9C;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;CACjD"}
1
+ {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/types/object.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACnE;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,8BAA+B,SAAQ,mBAAmB;IACzE;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAC9C;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;CAC/C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@planarcat/js-toolkit",
3
- "version": "1.5.0",
3
+ "version": "1.5.1",
4
4
  "description": "一个自用的带学习性质的(目前)现代化的 JavaScript/TypeScript 实用工具库,提供类型安全、高性能的常用函数,包括对象转换、日期处理、函数优化等开发常用工具。",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",