@planarcat/js-toolkit 1.0.0 → 1.2.0

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 ADDED
@@ -0,0 +1,164 @@
1
+ # @planarcat/js-toolkit
2
+
3
+ 一个现代化的 JavaScript/TypeScript 实用工具库,提供类型安全、高性能的常用函数。
4
+
5
+ ## 特性
6
+
7
+ - 🚀 **类型安全**: 完整的 TypeScript 支持,提供完整的类型定义
8
+ - 📦 **轻量级**: 零依赖,体积小巧
9
+ - 🎯 **高性能**: 优化的算法实现
10
+ - 🔧 **现代化**: 使用最新的 JavaScript/TypeScript 特性
11
+ - 📚 **学习性质**: 代码清晰,适合学习和参考
12
+
13
+ ## 安装
14
+
15
+ ```bash
16
+ # 使用 npm
17
+ npm install @planarcat/js-toolkit
18
+
19
+ # 使用 yarn
20
+ yarn add @planarcat/js-toolkit
21
+
22
+ # 使用 pnpm
23
+ pnpm add @planarcat/js-toolkit
24
+ ```
25
+
26
+ ## 快速开始
27
+
28
+ ### 日期格式化
29
+
30
+ ```typescript
31
+ import { formatDate } from '@planarcat/js-toolkit';
32
+
33
+ // 基本使用
34
+ console.log(formatDate(new Date()));
35
+ // 输出: "2023-12-25 14:30:45"
36
+
37
+ // 自定义格式
38
+ console.log(formatDate('2023-12-25', 'YYYY年MM月DD日'));
39
+ // 输出: "2023年12月25日"
40
+
41
+ // 使用 dd 标记显示周几
42
+ console.log(formatDate(new Date(), 'dd HH:mm'));
43
+ // 输出: "周一 14:30"
44
+
45
+ // 英文环境
46
+ console.log(formatDate(new Date(), 'dd HH:mm', { locale: 'en-US' }));
47
+ // 输出: "Monday 14:30"
48
+ ```
49
+
50
+ ### 函数防抖
51
+
52
+ ```typescript
53
+ import { debounce } from '@planarcat/js-toolkit';
54
+
55
+ // 创建防抖函数
56
+ const debouncedFn = debounce(() => {
57
+ console.log('函数执行了!');
58
+ }, { delay: 500 });
59
+
60
+ // 多次调用,只会执行最后一次
61
+ debouncedFn();
62
+ debouncedFn();
63
+ debouncedFn();
64
+ // 500ms 后执行一次
65
+ ```
66
+
67
+ ## API 文档
68
+
69
+ 详细的 API 文档请查看 [docs/](docs/) 目录下的模块文档:
70
+
71
+ - [日期格式化](docs/functions/formatDate.md)
72
+ - [函数防抖](docs/functions/debounce.md)
73
+ - [类型定义](docs/interfaces/)
74
+
75
+ ### 生成文档
76
+
77
+ ```bash
78
+ # 生成 API 文档
79
+ npm run docs
80
+
81
+ # 监听模式生成文档
82
+ npm run docs:watch
83
+ ```
84
+
85
+ ## 开发
86
+
87
+ ### 项目结构
88
+
89
+ ```
90
+ src/
91
+ ├── date/
92
+ │ └── formatDate.ts # 日期格式化函数
93
+ ├── types/
94
+ │ ├── date.ts # 日期相关类型定义
95
+ │ └── index.ts # 类型导出
96
+ ├── utils/
97
+ │ └── constants.ts # 常量定义
98
+ └── index.ts # 主入口文件
99
+ ```
100
+
101
+ ### 开发命令
102
+
103
+ ```bash
104
+ # 安装依赖
105
+ npm install
106
+
107
+ # 构建项目
108
+ npm run build
109
+
110
+ # 运行测试
111
+ npm test
112
+
113
+ # 运行测试(监听模式)
114
+ npm run test:watch
115
+
116
+ # 代码检查
117
+ npm run lint
118
+
119
+ # 代码格式化
120
+ npm run format
121
+
122
+ # 清理构建文件
123
+ npm run clean
124
+ ```
125
+
126
+ ### 测试
127
+
128
+ 项目使用 Jest 进行单元测试,测试文件位于 `__tests__/` 目录。
129
+
130
+ ```bash
131
+ # 运行所有测试
132
+ npm test
133
+
134
+ # 生成测试覆盖率报告
135
+ npm run test:coverage
136
+ ```
137
+
138
+ ## 贡献
139
+
140
+ 欢迎贡献代码!请遵循以下步骤:
141
+
142
+ 1. Fork 本仓库
143
+ 2. 创建功能分支 (`git checkout -b feature/amazing-feature`)
144
+ 3. 提交更改 (`git commit -m 'Add some amazing feature'`)
145
+ 4. 推送到分支 (`git push origin feature/amazing-feature`)
146
+ 5. 创建 Pull Request
147
+
148
+ ## 许可证
149
+
150
+ 本项目基于 MIT 许可证开源 - 查看 [LICENSE](LICENSE) 文件了解详情。
151
+
152
+ ## 作者
153
+
154
+ - **planarcat** - [GitHub](https://github.com/planarcat)
155
+
156
+ ## 更新日志
157
+
158
+ ### v1.0.0
159
+
160
+ - ✨ 初始版本发布
161
+ - ✨ 实现日期格式化功能 `formatDate`
162
+ - ✨ 完整的 TypeScript 类型支持
163
+ - ✨ 单元测试覆盖
164
+ - ✨ 构建和发布配置
@@ -1,26 +1,34 @@
1
- import { DateInput, DateFormatOptions } from '../types/date';
1
+ import { DateInput, DateFormatOptions } from "../types/date";
2
2
  /**
3
3
  * 格式化日期对象
4
4
  *
5
+ * @param input - 要格式化的日期输入,可以是 Date 对象、时间戳、日期字符串
6
+ * @param formatStr - 格式化字符串,支持 YYYY-MM-DD HH:mm:ss 等标记,默认为 'YYYY-MM-DD HH:mm:ss'
7
+ * @param options - 格式化选项
8
+ * @param options.timeZone - 时区设置,默认为 'local'
9
+ * @param options.locale - 语言环境,默认为 'zh-CN'
10
+ * @param options.customFormatters - 自定义格式化处理器
11
+ * @returns 格式化后的日期字符串
12
+ *
5
13
  * @example
6
14
  * ```typescript
7
15
  * import { formatDate } from '@planarcat/js-toolkit';
8
16
  *
9
- * // 基本使用
10
- * formatDate(new Date(), 'YYYY-MM-DD HH:mm:ss');
17
+ * // 基本使用(默认格式 'YYYY-MM-DD HH:mm:ss')
18
+ * formatDate(new Date());
11
19
  * // 返回: "2023-12-25 14:30:45"
12
20
  *
13
21
  * // 自定义格式
14
22
  * formatDate('2023-12-25', 'YYYY年MM月DD日');
15
23
  * // 返回: "2023年12月25日"
16
24
  *
17
- * // 显示周几
18
- * formatDate(new Date(), 'HH:mm', { showWeekday: true });
25
+ * // 使用 dd 标记显示周几
26
+ * formatDate(new Date(), 'dd HH:mm');
19
27
  * // 返回: "周一 14:30"
20
28
  *
21
- * // 英文环境
22
- * formatDate(new Date(), 'dd', { locale: 'en-US' });
23
- * // 返回: "Mon"
29
+ * // 英文环境显示周几
30
+ * formatDate(new Date(), 'dd HH:mm', { locale: 'en-US' });
31
+ * // 返回: "Monday 14:30"
24
32
  *
25
33
  * // 自定义格式化器
26
34
  * formatDate(new Date(), '第Q季度', {
@@ -30,11 +38,6 @@ import { DateInput, DateFormatOptions } from '../types/date';
30
38
  * });
31
39
  * // 返回: "第4季度"
32
40
  * ```
33
- *
34
- * @param input - 要格式化的日期输入,可以是 Date 对象、时间戳、日期字符串
35
- * @param formatStr - 格式化字符串,支持 YYYY-MM-DD HH:mm:ss 等标记
36
- * @param options - 格式化选项
37
- * @returns 格式化后的日期字符串
38
41
  */
39
42
  declare function formatDate(input: DateInput, formatStr?: string, options?: Partial<DateFormatOptions>): string;
40
43
  export default formatDate;
@@ -1 +1 @@
1
- {"version":3,"file":"formatDate.d.ts","sourceRoot":"","sources":["../../src/date/formatDate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AA2D7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,iBAAS,UAAU,CACjB,KAAK,EAAE,SAAS,EAChB,SAAS,GAAE,MAA8B,EACzC,OAAO,GAAE,OAAO,CAAC,iBAAiB,CAAM,GACvC,MAAM,CAwFR;AAED,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"formatDate.d.ts","sourceRoot":"","sources":["../../src/date/formatDate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AA4D7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,iBAAS,UAAU,CACjB,KAAK,EAAE,SAAS,EAChB,SAAS,GAAE,MAA8B,EACzC,OAAO,GAAE,OAAO,CAAC,iBAAiB,CAAM,GACvC,MAAM,CAuFR;AAED,eAAe,UAAU,CAAC"}
@@ -11,7 +11,7 @@ function safeParseDate(input) {
11
11
  if (input instanceof Date && !isNaN(input.getTime())) {
12
12
  return input;
13
13
  }
14
- if (typeof input === 'string' || typeof input === 'number') {
14
+ if (typeof input === "string" || typeof input === "number") {
15
15
  const date = new Date(input);
16
16
  if (!isNaN(date.getTime())) {
17
17
  return date;
@@ -42,32 +42,40 @@ function getWeekNumber(date) {
42
42
  * @internal
43
43
  */
44
44
  function getLocalizedWeekday(weekday, options) {
45
- const lang = options.locale?.split('-')[0] || 'zh';
46
- return constants_1.WEEKDAY_MAP[lang]?.[weekday]
47
- || constants_1.WEEKDAY_MAP.zh[weekday];
45
+ const lang = options.locale?.split("-")[0] || "zh";
46
+ return (constants_1.WEEKDAY_MAP[lang]?.[weekday] ||
47
+ constants_1.WEEKDAY_MAP.zh[weekday]);
48
48
  }
49
49
  /**
50
50
  * 格式化日期对象
51
51
  *
52
+ * @param input - 要格式化的日期输入,可以是 Date 对象、时间戳、日期字符串
53
+ * @param formatStr - 格式化字符串,支持 YYYY-MM-DD HH:mm:ss 等标记,默认为 'YYYY-MM-DD HH:mm:ss'
54
+ * @param options - 格式化选项
55
+ * @param options.timeZone - 时区设置,默认为 'local'
56
+ * @param options.locale - 语言环境,默认为 'zh-CN'
57
+ * @param options.customFormatters - 自定义格式化处理器
58
+ * @returns 格式化后的日期字符串
59
+ *
52
60
  * @example
53
61
  * ```typescript
54
62
  * import { formatDate } from '@planarcat/js-toolkit';
55
63
  *
56
- * // 基本使用
57
- * formatDate(new Date(), 'YYYY-MM-DD HH:mm:ss');
64
+ * // 基本使用(默认格式 'YYYY-MM-DD HH:mm:ss')
65
+ * formatDate(new Date());
58
66
  * // 返回: "2023-12-25 14:30:45"
59
67
  *
60
68
  * // 自定义格式
61
69
  * formatDate('2023-12-25', 'YYYY年MM月DD日');
62
70
  * // 返回: "2023年12月25日"
63
71
  *
64
- * // 显示周几
65
- * formatDate(new Date(), 'HH:mm', { showWeekday: true });
72
+ * // 使用 dd 标记显示周几
73
+ * formatDate(new Date(), 'dd HH:mm');
66
74
  * // 返回: "周一 14:30"
67
75
  *
68
- * // 英文环境
69
- * formatDate(new Date(), 'dd', { locale: 'en-US' });
70
- * // 返回: "Mon"
76
+ * // 英文环境显示周几
77
+ * formatDate(new Date(), 'dd HH:mm', { locale: 'en-US' });
78
+ * // 返回: "Monday 14:30"
71
79
  *
72
80
  * // 自定义格式化器
73
81
  * formatDate(new Date(), '第Q季度', {
@@ -77,13 +85,8 @@ function getLocalizedWeekday(weekday, options) {
77
85
  * });
78
86
  * // 返回: "第4季度"
79
87
  * ```
80
- *
81
- * @param input - 要格式化的日期输入,可以是 Date 对象、时间戳、日期字符串
82
- * @param formatStr - 格式化字符串,支持 YYYY-MM-DD HH:mm:ss 等标记
83
- * @param options - 格式化选项
84
- * @returns 格式化后的日期字符串
85
88
  */
86
- function formatDate(input, formatStr = 'YYYY-MM-DD HH:mm:ss', options = {}) {
89
+ function formatDate(input, formatStr = "YYYY-MM-DD HH:mm:ss", options = {}) {
87
90
  const date = safeParseDate(input);
88
91
  const mergedOptions = { ...constants_1.DEFAULT_DATE_FORMAT_OPTIONS, ...options };
89
92
  // 获取日期各部分
@@ -99,66 +102,61 @@ function formatDate(input, formatStr = 'YYYY-MM-DD HH:mm:ss', options = {}) {
99
102
  const weekNumber = getWeekNumber(date);
100
103
  // 12小时制
101
104
  const hours12 = hours % 12 || 12;
102
- const ampm = hours < 12 ? 'AM' : 'PM';
105
+ const ampm = hours < 12 ? "AM" : "PM";
103
106
  const ampmLower = ampm.toLowerCase();
104
107
  // 1. 首先处理完整的单词标记(如 timestamp)
105
108
  let result = formatStr;
106
109
  // 优先替换 timestamp,避免被拆解
107
- if (result.includes('timestamp')) {
110
+ if (result.includes("timestamp")) {
108
111
  result = result.replace(/timestamp/g, date.getTime().toString());
109
112
  }
110
113
  // 2. 应用自定义格式化器(优先级最高)
111
114
  if (mergedOptions.customFormatters) {
112
115
  Object.entries(mergedOptions.customFormatters).forEach(([token, formatter]) => {
113
- const escapedToken = token.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
114
- const regex = new RegExp(`(?<![a-zA-Z0-9])${escapedToken}(?![a-zA-Z0-9])`, 'g');
116
+ const escapedToken = token.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
117
+ const regex = new RegExp(`(?<![a-zA-Z0-9])${escapedToken}(?![a-zA-Z0-9])`, "g");
115
118
  result = result.replace(regex, formatter(date));
116
119
  });
117
120
  }
118
121
  // 3. 替换多字符标记(2-4个字符)
119
122
  const multiCharReplacements = {
120
- 'YYYY': year.toString().padStart(4, '0'),
121
- 'YY': year.toString().slice(-2),
122
- 'MM': month.toString().padStart(2, '0'),
123
- 'DD': day.toString().padStart(2, '0'),
124
- 'HH': hours.toString().padStart(2, '0'),
125
- 'hh': hours12.toString().padStart(2, '0'),
126
- 'mm': minutes.toString().padStart(2, '0'),
127
- 'ss': seconds.toString().padStart(2, '0'),
128
- 'SSS': milliseconds.toString().padStart(3, '0'),
129
- 'WW': weekNumber.toString().padStart(2, '0'),
130
- 'dd': getLocalizedWeekday(weekday, mergedOptions),
123
+ YYYY: year.toString().padStart(4, "0"),
124
+ YY: year.toString().slice(-2),
125
+ MM: month.toString().padStart(2, "0"),
126
+ DD: day.toString().padStart(2, "0"),
127
+ HH: hours.toString().padStart(2, "0"),
128
+ hh: hours12.toString().padStart(2, "0"),
129
+ mm: minutes.toString().padStart(2, "0"),
130
+ ss: seconds.toString().padStart(2, "0"),
131
+ SSS: milliseconds.toString().padStart(3, "0"),
132
+ WW: weekNumber.toString().padStart(2, "0"),
133
+ dd: getLocalizedWeekday(weekday, mergedOptions),
131
134
  };
132
135
  Object.entries(multiCharReplacements).forEach(([token, value]) => {
133
136
  // 使用单词边界或字符串边界来确保精确匹配
134
- const regex = new RegExp(`\\b${token}\\b|${token}(?![a-zA-Z0-9])`, 'g');
137
+ const regex = new RegExp(`\\b${token}\\b|${token}(?![a-zA-Z0-9])`, "g");
135
138
  result = result.replace(regex, value);
136
139
  });
137
140
  // 4. 替换单字符标记(使用更精确的匹配)
138
141
  const singleCharReplacements = {
139
- 'Y': year.toString(),
140
- 'M': month.toString(),
141
- 'D': day.toString(),
142
- 'H': hours.toString(),
143
- 'h': hours12.toString(),
144
- 'm': minutes.toString(),
145
- 's': seconds.toString(),
146
- 'W': weekNumber.toString(),
147
- 'd': weekday.toString(),
148
- 'Q': quarter.toString(),
149
- 'A': ampm,
150
- 'a': ampmLower,
142
+ Y: year.toString(),
143
+ M: month.toString(),
144
+ D: day.toString(),
145
+ H: hours.toString(),
146
+ h: hours12.toString(),
147
+ m: minutes.toString(),
148
+ s: seconds.toString(),
149
+ W: weekNumber.toString(),
150
+ d: weekday.toString(),
151
+ Q: quarter.toString(),
152
+ A: ampm,
153
+ a: ampmLower,
151
154
  };
152
155
  Object.entries(singleCharReplacements).forEach(([token, value]) => {
153
156
  // 单字符需要更精确的匹配:前面是边界或特定字符,后面不是相同字符
154
- const regex = new RegExp(`(?<![a-zA-Z0-9])${token}(?![a-zA-Z0-9])`, 'g');
157
+ const regex = new RegExp(`(?<![a-zA-Z0-9])${token}(?![a-zA-Z0-9])`, "g");
155
158
  result = result.replace(regex, value);
156
159
  });
157
- // 添加周几前缀
158
- if (mergedOptions.showWeekday) {
159
- const weekdayStr = getLocalizedWeekday(weekday, mergedOptions);
160
- result = `${mergedOptions.weekdayFormat}${weekdayStr} ${result}`;
161
- }
162
160
  return result;
163
161
  }
164
162
  exports.default = formatDate;
@@ -1 +1 @@
1
- {"version":3,"file":"formatDate.js","sourceRoot":"","sources":["../../src/date/formatDate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formatDate.js","sourceRoot":"","sources":["../../src/date/formatDate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { DebounceOptions, DebouncedFunction } from "@/types/debounce";
2
+ /**
3
+ * 将函数进行防抖处理
4
+ * @param fn - 需要防抖处理的函数
5
+ * @param options - 配置选项
6
+ * @param options.delay - 防抖延迟时间,默认500ms
7
+ * @returns 防抖处理后的函数,带有cancel方法
8
+ */
9
+ declare function debounce<T extends (...args: unknown[]) => unknown>(fn: T, options?: DebounceOptions): DebouncedFunction<T>;
10
+ export default debounce;
11
+ //# sourceMappingURL=debounce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debounce.d.ts","sourceRoot":"","sources":["../../src/function/debounce.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEtE;;;;;;GAMG;AACH,iBAAS,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EACzD,EAAE,EAAE,CAAC,EACL,OAAO,GAAE,eAAoB,GAC5B,iBAAiB,CAAC,CAAC,CAAC,CA4BtB;AAED,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * 将函数进行防抖处理
5
+ * @param fn - 需要防抖处理的函数
6
+ * @param options - 配置选项
7
+ * @param options.delay - 防抖延迟时间,默认500ms
8
+ * @returns 防抖处理后的函数,带有cancel方法
9
+ */
10
+ function debounce(fn, options = {}) {
11
+ const { delay = 500 } = options;
12
+ let timer = null;
13
+ const debounced = function (...args) {
14
+ if (timer) {
15
+ clearTimeout(timer);
16
+ timer = null;
17
+ }
18
+ const self = this;
19
+ timer = setTimeout(() => {
20
+ fn.apply(self, args);
21
+ }, delay);
22
+ };
23
+ debounced.cancel = () => {
24
+ if (timer) {
25
+ clearTimeout(timer);
26
+ timer = null;
27
+ }
28
+ };
29
+ return debounced;
30
+ }
31
+ exports.default = debounce;
32
+ //# sourceMappingURL=debounce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debounce.js","sourceRoot":"","sources":["../../src/function/debounce.ts"],"names":[],"mappings":";;AAEA;;;;;;GAMG;AACH,SAAS,QAAQ,CACf,EAAK,EACL,UAA2B,EAAE;IAE7B,MAAM,EAAE,KAAK,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;IAEhC,IAAI,KAAK,GAA0B,IAAI,CAAC;IAExC,MAAM,SAAS,GAAG,UAEhB,GAAG,IAAmB;QAEtB,IAAI,KAAK,EAAE,CAAC;YACV,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvB,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAyB,CAAC;IAE1B,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE;QACtB,IAAI,KAAK,EAAE,CAAC;YACV,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,kBAAe,QAAQ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -3,8 +3,10 @@
3
3
  *
4
4
  * @module @planarcat/js-toolkit
5
5
  */
6
- export { default as formatDate } from './date/formatDate';
7
- export type { DateFormatOptions, DateInput } from './types/date';
6
+ export { default as formatDate } from "./date/formatDate";
7
+ export type { DateFormatOptions, DateInput } from "./types/date";
8
+ export { default as debounce } from "./function/debounce";
9
+ export type { DebounceOptions, DebouncedFunction } from "./types/debounce";
8
10
  export declare const VERSION = "__VERSION__";
9
11
  export declare const LIBRARY_NAME = "@planarcat/js-toolkit";
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGjE,eAAO,MAAM,OAAO,gBAAgB,CAAC;AACrC,eAAO,MAAM,YAAY,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGjE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG3E,eAAO,MAAM,OAAO,gBAAgB,CAAC;AACrC,eAAO,MAAM,YAAY,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -8,14 +8,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
8
8
  return (mod && mod.__esModule) ? mod : { "default": mod };
9
9
  };
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.LIBRARY_NAME = exports.VERSION = exports.formatDate = void 0;
11
+ exports.LIBRARY_NAME = exports.VERSION = exports.debounce = exports.formatDate = void 0;
12
12
  // 日期相关工具
13
13
  var formatDate_1 = require("./date/formatDate");
14
14
  Object.defineProperty(exports, "formatDate", { enumerable: true, get: function () { return __importDefault(formatDate_1).default; } });
15
+ // 函数相关工具
16
+ var debounce_1 = require("./function/debounce");
17
+ Object.defineProperty(exports, "debounce", { enumerable: true, get: function () { return __importDefault(debounce_1).default; } });
15
18
  // 工具库元数据
16
- exports.VERSION = '__VERSION__'; // 构建时替换
17
- exports.LIBRARY_NAME = '@planarcat/js-toolkit';
19
+ exports.VERSION = "__VERSION__"; // 构建时替换
20
+ exports.LIBRARY_NAME = "@planarcat/js-toolkit";
18
21
  // 工具函数(后续添加)
19
22
  // export { default as toNumber } from './number/toNumber';
20
- // export { default as debounce } from './function/debounce';
21
23
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,SAAS;AACT,gDAA0D;AAAjD,yHAAA,OAAO,OAAc;AAG9B,SAAS;AACI,QAAA,OAAO,GAAG,aAAa,CAAC,CAAC,QAAQ;AACjC,QAAA,YAAY,GAAG,uBAAuB,CAAC;AAEpD,aAAa;AACb,2DAA2D;AAC3D,6DAA6D"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,SAAS;AACT,gDAA0D;AAAjD,yHAAA,OAAO,OAAc;AAG9B,SAAS;AACT,gDAA0D;AAAjD,qHAAA,OAAO,OAAY;AAG5B,SAAS;AACI,QAAA,OAAO,GAAG,aAAa,CAAC,CAAC,QAAQ;AACjC,QAAA,YAAY,GAAG,uBAAuB,CAAC;AAEpD,aAAa;AACb,2DAA2D"}
@@ -6,22 +6,12 @@ export interface DateFormatOptions {
6
6
  * 时区设置
7
7
  * @default 'local'
8
8
  */
9
- timeZone?: 'local' | 'utc';
9
+ timeZone?: "local" | "utc";
10
10
  /**
11
11
  * 语言环境
12
12
  * @default 'zh-CN'
13
13
  */
14
14
  locale?: string;
15
- /**
16
- * 是否显示周几
17
- * @default false
18
- */
19
- showWeekday?: boolean;
20
- /**
21
- * 自定义周几显示格式
22
- * @default '周'
23
- */
24
- weekdayFormat?: string;
25
15
  /**
26
16
  * 自定义格式化处理器
27
17
  */
@@ -30,7 +20,7 @@ export interface DateFormatOptions {
30
20
  /**
31
21
  * 支持的格式化标记
32
22
  */
33
- export type DateFormatToken = 'YYYY' | 'YY' | 'MM' | 'M' | 'DD' | 'D' | 'HH' | 'H' | 'hh' | 'h' | 'mm' | 'm' | 'ss' | 's' | 'SSS' | 'A' | 'a' | 'd' | 'dd' | 'WW' | 'W' | 'Q' | 'timestamp';
23
+ export type DateFormatToken = "YYYY" | "YY" | "MM" | "M" | "DD" | "D" | "HH" | "H" | "hh" | "h" | "mm" | "m" | "ss" | "s" | "SSS" | "A" | "a" | "d" | "dd" | "WW" | "W" | "Q" | "timestamp";
34
24
  /**
35
25
  * 可接受的日期输入类型
36
26
  */
@@ -1 +1 @@
1
- {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/types/date.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAE3B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC;CAC3D;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,MAAM,GAAG,IAAI,GACb,IAAI,GAAG,GAAG,GACV,IAAI,GAAG,GAAG,GACV,IAAI,GAAG,GAAG,GACV,IAAI,GAAG,GAAG,GACV,IAAI,GAAG,GAAG,GACV,IAAI,GAAG,GAAG,GACV,KAAK,GACL,GAAG,GAAG,GAAG,GACT,GAAG,GACH,IAAI,GACJ,IAAI,GAAG,GAAG,GACV,GAAG,GACH,WAAW,CAAC;AAEhB;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,IAAI,GACJ,MAAM,GACN,MAAM,GACN,IAAI,GACJ,SAAS,CAAC"}
1
+ {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/types/date.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAE3B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC;CAC3D;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,IAAI,GACJ,IAAI,GACJ,GAAG,GACH,IAAI,GACJ,GAAG,GACH,IAAI,GACJ,GAAG,GACH,IAAI,GACJ,GAAG,GACH,IAAI,GACJ,GAAG,GACH,IAAI,GACJ,GAAG,GACH,KAAK,GACL,GAAG,GACH,GAAG,GACH,GAAG,GACH,IAAI,GACJ,IAAI,GACJ,GAAG,GACH,GAAG,GACH,WAAW,CAAC;AAEhB;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC"}
@@ -0,0 +1,18 @@
1
+ export interface DebounceOptions {
2
+ /**
3
+ * 防抖延迟时间,默认500ms
4
+ */
5
+ delay?: number;
6
+ }
7
+ /**
8
+ * 防抖处理后的函数接口
9
+ * @template T - 函数类型
10
+ */
11
+ export interface DebouncedFunction<T extends (...args: unknown[]) => unknown> {
12
+ (...args: Parameters<T>): void;
13
+ /**
14
+ * 取消当前正在执行的函数调用
15
+ */
16
+ cancel(): void;
17
+ }
18
+ //# sourceMappingURL=debounce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debounce.d.ts","sourceRoot":"","sources":["../../src/types/debounce.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO;IAC1E,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/B;;OAEG;IACH,MAAM,IAAI,IAAI,CAAC;CAChB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=debounce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debounce.js","sourceRoot":"","sources":["../../src/types/debounce.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
- export * from './date';
1
+ export * from "./date";
2
+ export * from "./debounce";
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
@@ -16,6 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  // 导出所有类型
18
18
  __exportStar(require("./date"), exports);
19
+ __exportStar(require("./debounce"), exports);
19
20
  // 后续添加更多类型
20
21
  // export * from './number';
21
22
  // export * from './function';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,SAAS;AACT,yCAAuB;AACvB,WAAW;AACX,4BAA4B;AAC5B,8BAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,SAAS;AACT,yCAAuB;AACvB,6CAA2B;AAC3B,WAAW;AACX,4BAA4B;AAC5B,8BAA8B"}
@@ -4,8 +4,6 @@
4
4
  export declare const DEFAULT_DATE_FORMAT_OPTIONS: {
5
5
  timeZone: "local";
6
6
  locale: string;
7
- showWeekday: boolean;
8
- weekdayFormat: string;
9
7
  };
10
8
  /**
11
9
  * 周几中英文映射
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;CAKvC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAGhD,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;CAGvC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAWhD,CAAC"}
@@ -5,16 +5,22 @@ exports.WEEKDAY_MAP = exports.DEFAULT_DATE_FORMAT_OPTIONS = void 0;
5
5
  * 默认格式化选项
6
6
  */
7
7
  exports.DEFAULT_DATE_FORMAT_OPTIONS = {
8
- timeZone: 'local',
9
- locale: 'zh-CN',
10
- showWeekday: false,
11
- weekdayFormat: '周',
8
+ timeZone: "local",
9
+ locale: "zh-CN",
12
10
  };
13
11
  /**
14
12
  * 周几中英文映射
15
13
  */
16
14
  exports.WEEKDAY_MAP = {
17
- zh: ['日', '一', '二', '三', '四', '五', '六'],
18
- en: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
15
+ zh: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"],
16
+ en: [
17
+ "Sunday",
18
+ "Monday",
19
+ "Tuesday",
20
+ "Wednesday",
21
+ "Thursday",
22
+ "Friday",
23
+ "Saturday",
24
+ ],
19
25
  };
20
26
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,2BAA2B,GAAG;IACzC,QAAQ,EAAE,OAAgB;IAC1B,MAAM,EAAE,OAAO;IACf,WAAW,EAAE,KAAK;IAClB,aAAa,EAAE,GAAG;CACnB,CAAC;AAEF;;GAEG;AACU,QAAA,WAAW,GAA6B;IACnD,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACvC,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;CACtD,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,2BAA2B,GAAG;IACzC,QAAQ,EAAE,OAAgB;IAC1B,MAAM,EAAE,OAAO;CAChB,CAAC;AAEF;;GAEG;AACU,QAAA,WAAW,GAA6B;IACnD,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC9C,EAAE,EAAE;QACF,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,WAAW;QACX,UAAU;QACV,QAAQ;QACR,UAAU;KACX;CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@planarcat/js-toolkit",
3
- "version": "1.0.0",
3
+ "version": "1.2.0",
4
4
  "description": "一个自用的带学习性质的(目前)现代化的 JavaScript/TypeScript 实用工具库,提供类型安全、高性能的常用函数,包括对象转换、日期处理、函数优化等开发常用工具。",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -21,7 +21,9 @@
21
21
  "format:check": "prettier --check \"src/**/*.ts\" \"__tests__/**/*.ts\"",
22
22
  "prepare": "husky",
23
23
  "prepublishOnly": "npm run lint && npm test && npm run build",
24
- "clean": "rimraf dist coverage"
24
+ "clean": "rimraf dist coverage",
25
+ "docs": "typedoc",
26
+ "docs:watch": "typedoc --watch"
25
27
  },
26
28
  "keywords": [
27
29
  "javascript",
@@ -57,6 +59,8 @@
57
59
  "ts-jest": "^29.4.6",
58
60
  "ts-node": "^10.9.2",
59
61
  "ts-node-dev": "^2.0.0",
62
+ "typedoc": "^0.28.16",
63
+ "typedoc-plugin-markdown": "^4.9.0",
60
64
  "typescript": "^5.3.3"
61
65
  },
62
66
  "lint-staged": {