@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 +164 -0
- package/dist/date/formatDate.d.ts +16 -13
- package/dist/date/formatDate.d.ts.map +1 -1
- package/dist/date/formatDate.js +49 -51
- package/dist/date/formatDate.js.map +1 -1
- package/dist/function/debounce.d.ts +11 -0
- package/dist/function/debounce.d.ts.map +1 -0
- package/dist/function/debounce.js +32 -0
- package/dist/function/debounce.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/types/date.d.ts +2 -12
- package/dist/types/date.d.ts.map +1 -1
- package/dist/types/debounce.d.ts +18 -0
- package/dist/types/debounce.d.ts.map +1 -0
- package/dist/types/debounce.js +3 -0
- package/dist/types/debounce.js.map +1 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/utils/constants.d.ts +0 -2
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/constants.js +12 -6
- package/dist/utils/constants.js.map +1 -1
- package/package.json +6 -2
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
|
|
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()
|
|
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'
|
|
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
|
-
* // 返回: "
|
|
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;
|
|
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"}
|
package/dist/date/formatDate.js
CHANGED
|
@@ -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 ===
|
|
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(
|
|
46
|
-
return constants_1.WEEKDAY_MAP[lang]?.[weekday]
|
|
47
|
-
|
|
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()
|
|
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'
|
|
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
|
-
* // 返回: "
|
|
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 =
|
|
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 ?
|
|
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(
|
|
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])`,
|
|
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
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
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])`,
|
|
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
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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])`,
|
|
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":";;AACA,
|
|
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
|
|
7
|
-
export type { DateFormatOptions, DateInput } from
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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 =
|
|
17
|
-
exports.LIBRARY_NAME =
|
|
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
|
|
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"}
|
package/dist/types/date.d.ts
CHANGED
|
@@ -6,22 +6,12 @@ export interface DateFormatOptions {
|
|
|
6
6
|
* 时区设置
|
|
7
7
|
* @default 'local'
|
|
8
8
|
*/
|
|
9
|
-
timeZone?:
|
|
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 =
|
|
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
|
*/
|
package/dist/types/date.d.ts.map
CHANGED
|
@@ -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
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"debounce.js","sourceRoot":"","sources":["../../src/types/debounce.ts"],"names":[],"mappings":""}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -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"}
|
package/dist/types/index.js
CHANGED
|
@@ -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';
|
package/dist/types/index.js.map
CHANGED
|
@@ -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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,2BAA2B
|
|
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"}
|
package/dist/utils/constants.js
CHANGED
|
@@ -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:
|
|
9
|
-
locale:
|
|
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: [
|
|
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;
|
|
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.
|
|
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": {
|