pen-it 1.0.1 → 1.0.3
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 +435 -74
- package/package.json +25 -4
package/README.md
CHANGED
|
@@ -22,106 +22,425 @@ import { isArray, formatFull, deepClone, unique } from 'pen-it'
|
|
|
22
22
|
|
|
23
23
|
### 类型判断 — `is`
|
|
24
24
|
|
|
25
|
-
- **`isArray(value)`** — 判断是否为数组。
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
- **`
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
- **`
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
- **`
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
- **`
|
|
50
|
-
|
|
51
|
-
|
|
25
|
+
- **`isArray(value)`** — 判断是否为数组。
|
|
26
|
+
|
|
27
|
+
```ts
|
|
28
|
+
isArray([1, 2, 3]) // true
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
- **`isObject(value)`** — 判断是否为对象(不含数组)。
|
|
32
|
+
|
|
33
|
+
```ts
|
|
34
|
+
isObject({ a: 1 }) // true
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
- **`is(val, type)`** — 通用类型判断(内部工具)。
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
is([], 'Array') // true
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
- **`isFunction(val)`** — 判断是否为函数。
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
isFunction(() => {}) // true
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
- **`isAsyncFunction(val)`** — 判断是否为异步函数。
|
|
50
|
+
|
|
51
|
+
```ts
|
|
52
|
+
isAsyncFunction(async () => {}) // true
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
- **`isPromise(value)`** — 判断是否为 Promise。
|
|
56
|
+
|
|
57
|
+
```ts
|
|
58
|
+
isPromise(Promise.resolve()) // true
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
- **`isDate(val)`** — 判断是否为 Date 对象。
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
isDate(new Date()) // true
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
- **`isNumber(val)`** — 判断是否为数字(含 NaN/Infinity)。
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
isNumber(42) // true
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
- **`isInt(val)`** — 判断是否为整数。
|
|
74
|
+
|
|
75
|
+
```ts
|
|
76
|
+
isInt(42) // true
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
- **`isFloat(val)`** — 判断是否为浮点数。
|
|
80
|
+
|
|
81
|
+
```ts
|
|
82
|
+
isFloat(3.14) // true
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
- **`isString(val)`** — 判断是否为字符串。
|
|
86
|
+
|
|
87
|
+
```ts
|
|
88
|
+
isString('hello') // true
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
- **`isBoolean(val)`** — 判断是否为布尔值。
|
|
92
|
+
|
|
93
|
+
```ts
|
|
94
|
+
isBoolean(true) // true
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
- **`isSymbol(value)`** — 判断是否为 Symbol。
|
|
98
|
+
|
|
99
|
+
```ts
|
|
100
|
+
isSymbol(Symbol('foo')) // true
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
- **`isPrimitive(value)`** — 判断是否为原始类型。
|
|
104
|
+
|
|
105
|
+
```ts
|
|
106
|
+
isPrimitive(42) // true
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
- **`isNull(val)`** — 判断是否为 null。
|
|
110
|
+
|
|
111
|
+
```ts
|
|
112
|
+
isNull(null) // true
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
- **`isDef(val)`** — 判断是否不是 undefined。
|
|
116
|
+
|
|
117
|
+
```ts
|
|
118
|
+
isDef('hello') // true
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
- **`isUnDef(val)`** — 判断是否为 undefined。
|
|
122
|
+
|
|
123
|
+
```ts
|
|
124
|
+
isUnDef(undefined) // true
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
- **`isNullOrUnDef(val)`** — 判断是否为 null 或 undefined。
|
|
128
|
+
|
|
129
|
+
```ts
|
|
130
|
+
isNullOrUnDef(null) // true
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
- **`isEmpty(value)`** — 判断是否为空(完备版:支持 Date/Map/Set 等)。
|
|
134
|
+
|
|
135
|
+
```ts
|
|
136
|
+
isEmpty('') // true
|
|
137
|
+
isEmpty([]) // true
|
|
138
|
+
isEmpty({}) // true
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
- **`isEmptySv(value)`** — 判断是否为空(简化版)。
|
|
142
|
+
|
|
143
|
+
```ts
|
|
144
|
+
isEmptySv([]) // true
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
- **`isEqual(x, y)`** — 深度相等比较(支持 Date/RegExp)。
|
|
148
|
+
|
|
149
|
+
```ts
|
|
150
|
+
isEqual({ a: 1 }, { a: 1 }) // true
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
- **`isHexColor(str)`** — 判断是否为十六进制颜色。
|
|
154
|
+
|
|
155
|
+
```ts
|
|
156
|
+
isHexColor('#fff') // true
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
- **`isValidEmail(email)`** — 判断是否为有效邮箱。
|
|
160
|
+
|
|
161
|
+
```ts
|
|
162
|
+
isValidEmail('a@b.com') // true
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
- **`isPC()`** — 判断是否为浏览器环境。
|
|
166
|
+
|
|
167
|
+
```ts
|
|
168
|
+
isPC() // true
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
- **`isWindow(val)`** — 判断是否为 window 对象。
|
|
172
|
+
|
|
173
|
+
```ts
|
|
174
|
+
isWindow(window) // true
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
- **`isElement(val)`** — 判断是否为 DOM 元素。
|
|
178
|
+
|
|
179
|
+
```ts
|
|
180
|
+
isElement(document.body) // true
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
- **`isIOS()`** — 判断设备是否为 iOS。
|
|
184
|
+
|
|
185
|
+
```ts
|
|
186
|
+
isIOS() // true
|
|
187
|
+
```
|
|
52
188
|
|
|
53
189
|
---
|
|
54
190
|
|
|
55
191
|
### 日期时间格式化 — `format`
|
|
56
192
|
|
|
57
|
-
- **`formatFull(date)`** — 完整日期时间(斜杠分隔)。
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
193
|
+
- **`formatFull(date)`** — 完整日期时间(斜杠分隔)。
|
|
194
|
+
|
|
195
|
+
```ts
|
|
196
|
+
formatFull(new Date()) // "2026/06/03 14:30:45"
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
- **`formatFullReplace(date)`** — 完整日期时间(短横线分隔)。
|
|
200
|
+
|
|
201
|
+
```ts
|
|
202
|
+
formatFullReplace(new Date()) // "2026-06-03 14:30:45"
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
- **`formatYMD(date)`** — 中文年月日。
|
|
206
|
+
|
|
207
|
+
```ts
|
|
208
|
+
formatYMD(new Date()) // "2026年6月3日"
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
- **`formatWeek(date)`** — 星期几。
|
|
212
|
+
|
|
213
|
+
```ts
|
|
214
|
+
formatWeek(new Date()) // "星期三"
|
|
215
|
+
```
|
|
61
216
|
|
|
62
217
|
---
|
|
63
218
|
|
|
64
219
|
### 数字与货币格式化 — `format`
|
|
65
220
|
|
|
66
|
-
- **`formatRmb(value, options)`** — 货币格式化(人民币)。
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
-
|
|
70
|
-
|
|
71
|
-
|
|
221
|
+
- **`formatRmb(value, options)`** — 货币格式化(人民币)。
|
|
222
|
+
|
|
223
|
+
```ts
|
|
224
|
+
formatRmb(1234.56, { type: 'zh-CN', currency: 'CNY' }) // "¥1,234.56"
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
- **`formatNum(value)`** — 千位分隔符。
|
|
228
|
+
|
|
229
|
+
```ts
|
|
230
|
+
formatNum(1234567) // "1,234,567"
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
- **`percentCN(value, digit)`** — 百分比格式化。
|
|
234
|
+
|
|
235
|
+
```ts
|
|
236
|
+
percentCN(0.1234, 2) // "12.34%"
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
- **`compactEN(value)`** — 大数简化(英文缩写)。
|
|
240
|
+
|
|
241
|
+
```ts
|
|
242
|
+
compactEN(12345) // "12K"
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
- **`compactCN(value)`** — 大数简化(中文缩写)。
|
|
246
|
+
|
|
247
|
+
```ts
|
|
248
|
+
compactCN(12345) // "1.2万"
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
- **`signed(value, digit)`** — 带正负号显示。
|
|
252
|
+
|
|
253
|
+
```ts
|
|
254
|
+
signed(42, 1) // "+42.0"
|
|
255
|
+
```
|
|
72
256
|
|
|
73
257
|
---
|
|
74
258
|
|
|
75
259
|
### 字符串处理 — `format`
|
|
76
260
|
|
|
77
|
-
- **`maskPhone(phone)`** — 手机号脱敏(隐藏中间4位)。
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
- **`
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
261
|
+
- **`maskPhone(phone)`** — 手机号脱敏(隐藏中间4位)。
|
|
262
|
+
|
|
263
|
+
```ts
|
|
264
|
+
maskPhone('13812345678') // "138****5678"
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
- **`spacePhone(phone)`** — 手机号空格分隔。
|
|
268
|
+
|
|
269
|
+
```ts
|
|
270
|
+
spacePhone('13812345678') // "138 1234 5678"
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
- **`capitalize(str)`** — 每个单词首字母大写。
|
|
274
|
+
|
|
275
|
+
```ts
|
|
276
|
+
capitalize('hello world') // "Hello World"
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
- **`kebabToCamel(str)`** — 短横线转小驼峰。
|
|
280
|
+
|
|
281
|
+
```ts
|
|
282
|
+
kebabToCamel('hello-world') // "helloWorld"
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
- **`camelToKebab(str)`** — 驼峰转短横线。
|
|
286
|
+
|
|
287
|
+
```ts
|
|
288
|
+
camelToKebab('helloWorld') // "hello-world"
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
- **`toCamel(str)`** — 下划线转驼峰。
|
|
292
|
+
|
|
293
|
+
```ts
|
|
294
|
+
toCamel('hello_world') // "helloWorld"
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
- **`firstUpper(str)`** — 首字母大写。
|
|
298
|
+
|
|
299
|
+
```ts
|
|
300
|
+
firstUpper('hello') // "Hello"
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
- **`firstLower(str)`** — 首字母小写。
|
|
304
|
+
|
|
305
|
+
```ts
|
|
306
|
+
firstLower('Hello') // "hello"
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
- **`reverse(str)`** — 反转字符串。
|
|
310
|
+
|
|
311
|
+
```ts
|
|
312
|
+
reverse('hello') // "olleh"
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
- **`trimAll(str)`** — 去除所有空格。
|
|
316
|
+
|
|
317
|
+
```ts
|
|
318
|
+
trimAll(' h e l lo ') // "hello"
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
- **`truncate(str, max, suffix?)`** — 超长文本截断。
|
|
322
|
+
|
|
323
|
+
```ts
|
|
324
|
+
truncate('Hello World', 8) // "Hello..."
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
- **`truncateByWords(str, max, suffix?)`** — 按字数截断(中文友好)。
|
|
328
|
+
|
|
329
|
+
```ts
|
|
330
|
+
truncateByWords('你好世界欢迎你', 4) // "你好世界..."
|
|
331
|
+
```
|
|
89
332
|
|
|
90
333
|
---
|
|
91
334
|
|
|
92
335
|
### 存储 — `storage`
|
|
93
336
|
|
|
94
|
-
- **`localGet<T>(key)`** — 获取 localStorage(自动 JSON 解析)。
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
337
|
+
- **`localGet<T>(key)`** — 获取 localStorage(自动 JSON 解析)。
|
|
338
|
+
|
|
339
|
+
```ts
|
|
340
|
+
localGet('user') // { name: '张三' }
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
- **`localSet(key, value)`** — 设置 localStorage(自动 JSON 序列化)。
|
|
344
|
+
|
|
345
|
+
```ts
|
|
346
|
+
localSet('user', { name: '张三' })
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
- **`localRm(key)`** — 移除指定 localStorage。
|
|
350
|
+
|
|
351
|
+
```ts
|
|
352
|
+
localRm('user')
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
- **`localClear()`** — 清除所有 localStorage。
|
|
356
|
+
|
|
357
|
+
```ts
|
|
358
|
+
localClear()
|
|
359
|
+
```
|
|
98
360
|
|
|
99
361
|
---
|
|
100
362
|
|
|
101
363
|
### 拷贝 — `copy`
|
|
102
364
|
|
|
103
|
-
- **`deepClone(obj)`** — 递归深拷贝(支持 Date/RegExp/Map/Set/循环引用)。
|
|
104
|
-
|
|
105
|
-
|
|
365
|
+
- **`deepClone(obj)`** — 递归深拷贝(支持 Date/RegExp/Map/Set/循环引用)。
|
|
366
|
+
|
|
367
|
+
```ts
|
|
368
|
+
deepClone({ a: 1, b: { c: 2 } })
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
- **`deepCloneWithJSON(obj)`** — JSON 深拷贝(仅 JSON 安全类型)。
|
|
372
|
+
|
|
373
|
+
```ts
|
|
374
|
+
deepCloneWithJSON({ a: 1 })
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
- **`shallowClone(obj)`** — 浅拷贝(仅第一层)。
|
|
378
|
+
|
|
379
|
+
```ts
|
|
380
|
+
shallowClone({ a: 1, b: { c: 2 } })
|
|
381
|
+
```
|
|
106
382
|
|
|
107
383
|
---
|
|
108
384
|
|
|
109
385
|
### 数组 — `array`
|
|
110
386
|
|
|
111
|
-
- **`unique(arr)`** — Set 去重。
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
387
|
+
- **`unique(arr)`** — Set 去重。
|
|
388
|
+
|
|
389
|
+
```ts
|
|
390
|
+
unique([1, 2, 2, 3]) // [1, 2, 3]
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
- **`uniqueByKey(arr, key)`** — 对象数组按 key 去重。
|
|
394
|
+
|
|
395
|
+
```ts
|
|
396
|
+
uniqueByKey([{ id: 1 }, { id: 1 }], 'id')
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
- **`sortNumAsc(arr)`** — 数值升序。
|
|
400
|
+
|
|
401
|
+
```ts
|
|
402
|
+
sortNumAsc([3, 1, 2]) // [1, 2, 3]
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
- **`sortNumDesc(arr)`** — 数值降序。
|
|
406
|
+
|
|
407
|
+
```ts
|
|
408
|
+
sortNumDesc([1, 3, 2]) // [3, 2, 1]
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
- **`sortByKey(arr, key, order?)`** — 按对象属性排序。
|
|
412
|
+
|
|
413
|
+
```ts
|
|
414
|
+
sortByKey([{ age: 30 }, { age: 20 }], 'age')
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
- **`toArray(arrayLike)`** — 类数组转数组。
|
|
418
|
+
|
|
419
|
+
```ts
|
|
420
|
+
toArray(document.querySelectorAll('div'))
|
|
421
|
+
```
|
|
117
422
|
|
|
118
423
|
---
|
|
119
424
|
|
|
120
425
|
### Cookie — `cookie`
|
|
121
426
|
|
|
122
|
-
- **`setCookie(name, value, days?)`** — 设置 Cookie(默认7天)。
|
|
123
|
-
|
|
124
|
-
|
|
427
|
+
- **`setCookie(name, value, days?)`** — 设置 Cookie(默认7天)。
|
|
428
|
+
|
|
429
|
+
```ts
|
|
430
|
+
setCookie('token', 'abc123', 30)
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
- **`getCookie(name)`** — 获取 Cookie。
|
|
434
|
+
|
|
435
|
+
```ts
|
|
436
|
+
getCookie('token') // "abc123"
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
- **`delCookie(name)`** — 删除 Cookie。
|
|
440
|
+
|
|
441
|
+
```ts
|
|
442
|
+
delCookie('token')
|
|
443
|
+
```
|
|
125
444
|
|
|
126
445
|
---
|
|
127
446
|
|
|
@@ -129,18 +448,60 @@ import { isArray, formatFull, deepClone, unique } from 'pen-it'
|
|
|
129
448
|
|
|
130
449
|
#### URL 参数
|
|
131
450
|
|
|
132
|
-
- **`getUrlParams(url?)`** — 获取 URL 参数对象。
|
|
133
|
-
|
|
134
|
-
|
|
451
|
+
- **`getUrlParams(url?)`** — 获取 URL 参数对象。
|
|
452
|
+
|
|
453
|
+
```ts
|
|
454
|
+
getUrlParams('?a=1&b=2') // { a: '1', b: '2' }
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
- **`getUrlParam(key, url?)`** — 获取单个 URL 参数。
|
|
458
|
+
|
|
459
|
+
```ts
|
|
460
|
+
getUrlParam('a') // "1"
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
- **`toQueryString(params)`** — 对象转 URL 参数字符串。
|
|
464
|
+
|
|
465
|
+
```ts
|
|
466
|
+
toQueryString({ a: 1, b: 'hello' }) // "a=1&b=hello"
|
|
467
|
+
```
|
|
135
468
|
|
|
136
469
|
#### 剪贴板与文件
|
|
137
470
|
|
|
138
|
-
- **`copyToClipboard(text)`** — 复制文本到剪贴板(支持降级)。
|
|
139
|
-
|
|
140
|
-
|
|
471
|
+
- **`copyToClipboard(text)`** — 复制文本到剪贴板(支持降级)。
|
|
472
|
+
|
|
473
|
+
```ts
|
|
474
|
+
await copyToClipboard('Hello')
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
- **`downloadFile(content, filename, mimeType?)`** — 下载文件(Blob)。
|
|
478
|
+
|
|
479
|
+
```ts
|
|
480
|
+
downloadFile('Hello', 'hello.txt')
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
- **`exportJSON(data, filename?)`** — 导出 JSON 为文件。
|
|
484
|
+
|
|
485
|
+
```ts
|
|
486
|
+
exportJSON({ name: '张三' })
|
|
487
|
+
```
|
|
141
488
|
|
|
142
489
|
#### 页面滚动
|
|
143
490
|
|
|
144
|
-
- **`scrollToTop(behavior?)`** — 滚动到顶部(默认平滑)。
|
|
145
|
-
|
|
146
|
-
|
|
491
|
+
- **`scrollToTop(behavior?)`** — 滚动到顶部(默认平滑)。
|
|
492
|
+
|
|
493
|
+
```ts
|
|
494
|
+
scrollToTop()
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
- **`scrollToBottom(behavior?)`** — 滚动到底部(默认平滑)。
|
|
498
|
+
|
|
499
|
+
```ts
|
|
500
|
+
scrollToBottom()
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
- **`onScroll(callback)`** — 监听滚动(rAF 节流),返回清理函数。
|
|
504
|
+
|
|
505
|
+
```ts
|
|
506
|
+
const off = onScroll(y => console.log(y))
|
|
507
|
+
```
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pen-it",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "用笔锚定记忆中的前端常用工具函数",
|
|
3
|
+
"version": "1.0.3",
|
|
4
|
+
"description": "用笔锚定记忆中的前端常用工具函数 — A lightweight frontend utility library for type checking, date/number formatting, string manipulation, storage, deep clone, array operations, cookies, and browser APIs",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.cjs",
|
|
7
7
|
"module": "dist/index.js",
|
|
@@ -22,12 +22,33 @@
|
|
|
22
22
|
],
|
|
23
23
|
"keywords": [
|
|
24
24
|
"utils",
|
|
25
|
-
"
|
|
25
|
+
"utilities",
|
|
26
26
|
"toolkit",
|
|
27
|
-
"helpers"
|
|
27
|
+
"helpers",
|
|
28
|
+
"frontend",
|
|
29
|
+
"typescript",
|
|
30
|
+
"type-checking",
|
|
31
|
+
"date-format",
|
|
32
|
+
"number-format",
|
|
33
|
+
"deep-clone",
|
|
34
|
+
"string-manipulation",
|
|
35
|
+
"array-operations",
|
|
36
|
+
"cookie",
|
|
37
|
+
"localstorage",
|
|
38
|
+
"browser-api",
|
|
39
|
+
"debounce",
|
|
40
|
+
"throttle"
|
|
28
41
|
],
|
|
29
42
|
"author": "newborn_calf",
|
|
30
43
|
"license": "MIT",
|
|
44
|
+
"repository": {
|
|
45
|
+
"type": "git",
|
|
46
|
+
"url": "https://github.com/Libao-Jun/pen-it"
|
|
47
|
+
},
|
|
48
|
+
"homepage": "https://github.com/Libao-Jun/pen-it#readme",
|
|
49
|
+
"bugs": {
|
|
50
|
+
"url": "https://github.com/Libao-Jun/pen-it/issues"
|
|
51
|
+
},
|
|
31
52
|
"packageManager": "pnpm@10.19.0",
|
|
32
53
|
"devDependencies": {
|
|
33
54
|
"@rollup/plugin-typescript": "^12.3.0",
|