jz-toolkit 1.0.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 +194 -0
- package/dist/array/chunk.d.ts +11 -0
- package/dist/array/chunk.d.ts.map +1 -0
- package/dist/array/chunk.js +23 -0
- package/dist/array/compact.d.ts +11 -0
- package/dist/array/compact.d.ts.map +1 -0
- package/dist/array/compact.js +15 -0
- package/dist/array/index.d.ts +3 -0
- package/dist/array/index.d.ts.map +1 -0
- package/dist/array/index.js +18 -0
- package/dist/esm/array/chunk.d.ts +11 -0
- package/dist/esm/array/chunk.d.ts.map +1 -0
- package/dist/esm/array/chunk.js +20 -0
- package/dist/esm/array/compact.d.ts +11 -0
- package/dist/esm/array/compact.d.ts.map +1 -0
- package/dist/esm/array/compact.js +12 -0
- package/dist/esm/array/index.d.ts +3 -0
- package/dist/esm/array/index.d.ts.map +1 -0
- package/dist/esm/array/index.js +2 -0
- package/dist/esm/index.d.ts +14 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +24 -0
- package/dist/esm/object/index.d.ts +3 -0
- package/dist/esm/object/index.d.ts.map +1 -0
- package/dist/esm/object/index.js +2 -0
- package/dist/esm/object/omit.d.ts +13 -0
- package/dist/esm/object/omit.d.ts.map +1 -0
- package/dist/esm/object/omit.js +21 -0
- package/dist/esm/object/pick.d.ts +13 -0
- package/dist/esm/object/pick.d.ts.map +1 -0
- package/dist/esm/object/pick.js +19 -0
- package/dist/esm/string/camelCase.d.ts +11 -0
- package/dist/esm/string/camelCase.d.ts.map +1 -0
- package/dist/esm/string/camelCase.js +17 -0
- package/dist/esm/string/capitalize.d.ts +10 -0
- package/dist/esm/string/capitalize.d.ts.map +1 -0
- package/dist/esm/string/capitalize.js +14 -0
- package/dist/esm/string/index.d.ts +3 -0
- package/dist/esm/string/index.d.ts.map +1 -0
- package/dist/esm/string/index.js +2 -0
- package/dist/esm/types/index.d.ts +19 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/index.js +4 -0
- package/dist/esm/utility/index.d.ts +3 -0
- package/dist/esm/utility/index.d.ts.map +1 -0
- package/dist/esm/utility/index.js +2 -0
- package/dist/esm/utility/isEmpty.d.ts +13 -0
- package/dist/esm/utility/isEmpty.d.ts.map +1 -0
- package/dist/esm/utility/isEmpty.js +26 -0
- package/dist/esm/utility/isType.d.ts +17 -0
- package/dist/esm/utility/isType.d.ts.map +1 -0
- package/dist/esm/utility/isType.js +42 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +79 -0
- package/dist/object/index.d.ts +3 -0
- package/dist/object/index.d.ts.map +1 -0
- package/dist/object/index.js +18 -0
- package/dist/object/omit.d.ts +13 -0
- package/dist/object/omit.d.ts.map +1 -0
- package/dist/object/omit.js +24 -0
- package/dist/object/pick.d.ts +13 -0
- package/dist/object/pick.d.ts.map +1 -0
- package/dist/object/pick.js +22 -0
- package/dist/string/camelCase.d.ts +11 -0
- package/dist/string/camelCase.d.ts.map +1 -0
- package/dist/string/camelCase.js +20 -0
- package/dist/string/capitalize.d.ts +10 -0
- package/dist/string/capitalize.d.ts.map +1 -0
- package/dist/string/capitalize.js +17 -0
- package/dist/string/index.d.ts +3 -0
- package/dist/string/index.d.ts.map +1 -0
- package/dist/string/index.js +18 -0
- package/dist/types/index.d.ts +19 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/utility/index.d.ts +3 -0
- package/dist/utility/index.d.ts.map +1 -0
- package/dist/utility/index.js +18 -0
- package/dist/utility/isEmpty.d.ts +13 -0
- package/dist/utility/isEmpty.d.ts.map +1 -0
- package/dist/utility/isEmpty.js +29 -0
- package/dist/utility/isType.d.ts +17 -0
- package/dist/utility/isType.d.ts.map +1 -0
- package/dist/utility/isType.js +57 -0
- package/package.json +77 -0
package/README.md
ADDED
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
# jzlib
|
|
2
|
+
|
|
3
|
+
🚀 一个轻量级、功能丰富的 JavaScript/TypeScript 工具库,类似 Lodash,但更小更快。
|
|
4
|
+
|
|
5
|
+
## 特点
|
|
6
|
+
|
|
7
|
+
✨ **类型安全** - 使用 TypeScript 编写,提供完整的类型定义
|
|
8
|
+
|
|
9
|
+
📦 **模块化** - 支持按需导入,减少打包体积
|
|
10
|
+
|
|
11
|
+
⚡ **高性能** - 精心优化的实现
|
|
12
|
+
|
|
13
|
+
🔧 **易于扩展** - 清晰的项目结构,易于添加新功能
|
|
14
|
+
|
|
15
|
+
📚 **良好文档** - 每个函数都有详细的文档和示例
|
|
16
|
+
|
|
17
|
+
## 安装
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install jzlib
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 快速开始
|
|
24
|
+
|
|
25
|
+
### 完整导入
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
import * as _ from 'jzlib';
|
|
29
|
+
|
|
30
|
+
_.chunk([1, 2, 3, 4, 5], 2); // [[1, 2], [3, 4], [5]]
|
|
31
|
+
_.capitalize('hello'); // 'Hello'
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### 按需导入
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
import { chunk, capitalize } from 'jzlib';
|
|
38
|
+
|
|
39
|
+
chunk([1, 2, 3, 4, 5], 2); // [[1, 2], [3, 4], [5]]
|
|
40
|
+
capitalize('hello'); // 'Hello'
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 模块导入
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
import * as array from 'jzlib/array';
|
|
47
|
+
import * as object from 'jzlib/object';
|
|
48
|
+
import * as string from 'jzlib/string';
|
|
49
|
+
|
|
50
|
+
array.chunk([1, 2, 3, 4], 2);
|
|
51
|
+
object.pick({ a: 1, b: 2 }, ['a']);
|
|
52
|
+
string.capitalize('world');
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## 📚 API 文档
|
|
56
|
+
|
|
57
|
+
### 数组 (Array)
|
|
58
|
+
|
|
59
|
+
#### `chunk(array, size)`
|
|
60
|
+
将数组分成指定大小的块。
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
chunk([1, 2, 3, 4, 5], 2);
|
|
64
|
+
// => [[1, 2], [3, 4], [5]]
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
#### `compact(array)`
|
|
68
|
+
移除数组中的虚值。
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
compact([0, 1, false, 2, '', 3, undefined, 4, null, NaN]);
|
|
72
|
+
// => [1, 2, 3, 4]
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 对象 (Object)
|
|
76
|
+
|
|
77
|
+
#### `pick(obj, keys)`
|
|
78
|
+
从对象中选择指定的属性。
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
pick({ a: 1, b: 2, c: 3 }, ['a', 'c']);
|
|
82
|
+
// => { a: 1, c: 3 }
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
#### `omit(obj, keys)`
|
|
86
|
+
从对象中排除指定的属性。
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
omit({ a: 1, b: 2, c: 3 }, ['b']);
|
|
90
|
+
// => { a: 1, c: 3 }
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 字符串 (String)
|
|
94
|
+
|
|
95
|
+
#### `capitalize(str)`
|
|
96
|
+
将字符串首字母转为大写。
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
capitalize('hello');
|
|
100
|
+
// => 'Hello'
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
#### `camelCase(str)`
|
|
104
|
+
将字符串转换为驼峰式命名法。
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
camelCase('hello-world');
|
|
108
|
+
// => 'helloWorld'
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### 工具函数 (Utility)
|
|
112
|
+
|
|
113
|
+
#### 类型检查
|
|
114
|
+
- `isString(value)` - 检查是否为字符串
|
|
115
|
+
- `isNumber(value)` - 检查是否为数字
|
|
116
|
+
- `isBoolean(value)` - 检查是否为布尔值
|
|
117
|
+
- `isArray(value)` - 检查是否为数组
|
|
118
|
+
- `isObject(value)` - 检查是否为对象
|
|
119
|
+
- `isFunction(value)` - 检查是否为函数
|
|
120
|
+
- `isDate(value)` - 检查是否为日期
|
|
121
|
+
- `isRegExp(value)` - 检查是否为正则表达式
|
|
122
|
+
- `isMap(value)` - 检查是否为 Map
|
|
123
|
+
- `isSet(value)` - 检查是否为 Set
|
|
124
|
+
- `isNull(value)` - 检查是否为 null
|
|
125
|
+
- `isUndefined(value)` - 检查是否为 undefined
|
|
126
|
+
- `isNullOrUndefined(value)` - 检查是否为 null 或 undefined
|
|
127
|
+
|
|
128
|
+
#### `isEmpty(value)`
|
|
129
|
+
检查值是否为空。
|
|
130
|
+
|
|
131
|
+
```typescript
|
|
132
|
+
isEmpty([]); // => true
|
|
133
|
+
isEmpty({}); // => true
|
|
134
|
+
isEmpty(''); // => true
|
|
135
|
+
isEmpty(null); // => true
|
|
136
|
+
isEmpty('hello'); // => false
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## 开发
|
|
140
|
+
|
|
141
|
+
### 安装依赖
|
|
142
|
+
```bash
|
|
143
|
+
npm install
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### 构建
|
|
147
|
+
```bash
|
|
148
|
+
npm run build
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### 开发模式(监视文件变化)
|
|
152
|
+
```bash
|
|
153
|
+
npm run dev
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### 运行测试
|
|
157
|
+
```bash
|
|
158
|
+
npm test
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### 查看测试覆盖率
|
|
162
|
+
```bash
|
|
163
|
+
npm run test:coverage
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### 代码格式化
|
|
167
|
+
```bash
|
|
168
|
+
npm run format
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Linting
|
|
172
|
+
```bash
|
|
173
|
+
npm run lint
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## 项目结构
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
src/
|
|
180
|
+
├── index.ts # 主入口
|
|
181
|
+
├── types/ # 类型定义
|
|
182
|
+
├── array/ # 数组模块
|
|
183
|
+
├── object/ # 对象模块
|
|
184
|
+
├── string/ # 字符串模块
|
|
185
|
+
└── utility/ # 工具函数模块
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## 许可证
|
|
189
|
+
|
|
190
|
+
MIT
|
|
191
|
+
|
|
192
|
+
## 贡献
|
|
193
|
+
|
|
194
|
+
欢迎贡献!请提交 PR 或 Issue。
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 将数组分成指定大小的块
|
|
3
|
+
* @param array 输入数组
|
|
4
|
+
* @param size 块的大小
|
|
5
|
+
* @returns 分块后的二维数组
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* chunk([1, 2, 3, 4, 5], 2) // => [[1, 2], [3, 4], [5]]
|
|
9
|
+
*/
|
|
10
|
+
export declare function chunk<T>(array: T[], size: number): T[][];
|
|
11
|
+
//# sourceMappingURL=chunk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk.d.ts","sourceRoot":"","sources":["../../src/array/chunk.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,CAaxD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.chunk = chunk;
|
|
4
|
+
/**
|
|
5
|
+
* 将数组分成指定大小的块
|
|
6
|
+
* @param array 输入数组
|
|
7
|
+
* @param size 块的大小
|
|
8
|
+
* @returns 分块后的二维数组
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* chunk([1, 2, 3, 4, 5], 2) // => [[1, 2], [3, 4], [5]]
|
|
12
|
+
*/
|
|
13
|
+
function chunk(array, size) {
|
|
14
|
+
if (!Array.isArray(array)) {
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
const result = [];
|
|
18
|
+
const chunkSize = Math.max(Math.floor(size), 0) || 1;
|
|
19
|
+
for (let i = 0; i < array.length; i += chunkSize) {
|
|
20
|
+
result.push(array.slice(i, i + chunkSize));
|
|
21
|
+
}
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 移除数组中的虚值(false、null、0、""、undefined 和 NaN)
|
|
3
|
+
* @param array 输入数组
|
|
4
|
+
* @returns 包含真值的新数组
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* compact([0, 1, false, 2, '', 3, undefined, 4, null, NaN])
|
|
8
|
+
* // => [1, 2, 3, 4]
|
|
9
|
+
*/
|
|
10
|
+
export declare function compact<T>(array: (T | null | undefined | false | 0 | '')[]): T[];
|
|
11
|
+
//# sourceMappingURL=compact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../src/array/compact.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAEhF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compact = compact;
|
|
4
|
+
/**
|
|
5
|
+
* 移除数组中的虚值(false、null、0、""、undefined 和 NaN)
|
|
6
|
+
* @param array 输入数组
|
|
7
|
+
* @returns 包含真值的新数组
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* compact([0, 1, false, 2, '', 3, undefined, 4, null, NaN])
|
|
11
|
+
* // => [1, 2, 3, 4]
|
|
12
|
+
*/
|
|
13
|
+
function compact(array) {
|
|
14
|
+
return array.filter((item) => Boolean(item));
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/array/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./chunk"), exports);
|
|
18
|
+
__exportStar(require("./compact"), exports);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 将数组分成指定大小的块
|
|
3
|
+
* @param array 输入数组
|
|
4
|
+
* @param size 块的大小
|
|
5
|
+
* @returns 分块后的二维数组
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* chunk([1, 2, 3, 4, 5], 2) // => [[1, 2], [3, 4], [5]]
|
|
9
|
+
*/
|
|
10
|
+
export declare function chunk<T>(array: T[], size: number): T[][];
|
|
11
|
+
//# sourceMappingURL=chunk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk.d.ts","sourceRoot":"","sources":["../../../src/array/chunk.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,CAaxD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 将数组分成指定大小的块
|
|
3
|
+
* @param array 输入数组
|
|
4
|
+
* @param size 块的大小
|
|
5
|
+
* @returns 分块后的二维数组
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* chunk([1, 2, 3, 4, 5], 2) // => [[1, 2], [3, 4], [5]]
|
|
9
|
+
*/
|
|
10
|
+
export function chunk(array, size) {
|
|
11
|
+
if (!Array.isArray(array)) {
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
const result = [];
|
|
15
|
+
const chunkSize = Math.max(Math.floor(size), 0) || 1;
|
|
16
|
+
for (let i = 0; i < array.length; i += chunkSize) {
|
|
17
|
+
result.push(array.slice(i, i + chunkSize));
|
|
18
|
+
}
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 移除数组中的虚值(false、null、0、""、undefined 和 NaN)
|
|
3
|
+
* @param array 输入数组
|
|
4
|
+
* @returns 包含真值的新数组
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* compact([0, 1, false, 2, '', 3, undefined, 4, null, NaN])
|
|
8
|
+
* // => [1, 2, 3, 4]
|
|
9
|
+
*/
|
|
10
|
+
export declare function compact<T>(array: (T | null | undefined | false | 0 | '')[]): T[];
|
|
11
|
+
//# sourceMappingURL=compact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../../src/array/compact.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAEhF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 移除数组中的虚值(false、null、0、""、undefined 和 NaN)
|
|
3
|
+
* @param array 输入数组
|
|
4
|
+
* @returns 包含真值的新数组
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* compact([0, 1, false, 2, '', 3, undefined, 4, null, NaN])
|
|
8
|
+
* // => [1, 2, 3, 4]
|
|
9
|
+
*/
|
|
10
|
+
export function compact(array) {
|
|
11
|
+
return array.filter((item) => Boolean(item));
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/array/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* jzlib - 轻量级工具库
|
|
3
|
+
* 类似 Lodash 的 JavaScript/TypeScript 工具函数集合
|
|
4
|
+
*/
|
|
5
|
+
export * from './types';
|
|
6
|
+
export * as array from './array';
|
|
7
|
+
export * as object from './object';
|
|
8
|
+
export * as string from './string';
|
|
9
|
+
export * as utility from './utility';
|
|
10
|
+
export { chunk, compact, } from './array';
|
|
11
|
+
export { pick, omit, } from './object';
|
|
12
|
+
export { capitalize, camelCase, } from './string';
|
|
13
|
+
export { isString, isNumber, isBoolean, isNull, isUndefined, isNullOrUndefined, isArray, isObject, isFunction, isDate, isRegExp, isMap, isSet, isEmpty, } from './utility';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,SAAS,CAAC;AAGxB,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAGrC,OAAO,EAEL,KAAK,EACL,OAAO,GACR,MAAM,SAAS,CAAC;AAEjB,OAAO,EAEL,IAAI,EACJ,IAAI,GACL,MAAM,UAAU,CAAC;AAElB,OAAO,EAEL,UAAU,EACV,SAAS,GACV,MAAM,UAAU,CAAC;AAElB,OAAO,EAEL,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,OAAO,EACP,QAAQ,EACR,UAAU,EACV,MAAM,EACN,QAAQ,EACR,KAAK,EACL,KAAK,EACL,OAAO,GACR,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* jzlib - 轻量级工具库
|
|
3
|
+
* 类似 Lodash 的 JavaScript/TypeScript 工具函数集合
|
|
4
|
+
*/
|
|
5
|
+
// 类型导出
|
|
6
|
+
export * from './types';
|
|
7
|
+
// 功能模块导出
|
|
8
|
+
export * as array from './array';
|
|
9
|
+
export * as object from './object';
|
|
10
|
+
export * as string from './string';
|
|
11
|
+
export * as utility from './utility';
|
|
12
|
+
// 直接导出常用函数
|
|
13
|
+
export {
|
|
14
|
+
// 数组
|
|
15
|
+
chunk, compact, } from './array';
|
|
16
|
+
export {
|
|
17
|
+
// 对象
|
|
18
|
+
pick, omit, } from './object';
|
|
19
|
+
export {
|
|
20
|
+
// 字符串
|
|
21
|
+
capitalize, camelCase, } from './string';
|
|
22
|
+
export {
|
|
23
|
+
// 工具类
|
|
24
|
+
isString, isNumber, isBoolean, isNull, isUndefined, isNullOrUndefined, isArray, isObject, isFunction, isDate, isRegExp, isMap, isSet, isEmpty, } from './utility';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/object/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AnyObject } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* 从对象中排除指定的属性
|
|
4
|
+
* @param obj 源对象
|
|
5
|
+
* @param keys 要排除的属性名
|
|
6
|
+
* @returns 不包含排除属性的新对象
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* omit({ a: 1, b: 2, c: 3 }, ['b'])
|
|
10
|
+
* // => { a: 1, c: 3 }
|
|
11
|
+
*/
|
|
12
|
+
export declare function omit<T extends AnyObject, K extends keyof T>(obj: T, keys: K[]): Omit<T, K>;
|
|
13
|
+
//# sourceMappingURL=omit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"omit.d.ts","sourceRoot":"","sources":["../../../src/object/omit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC;;;;;;;;;GASG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,MAAM,CAAC,EACzD,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,EAAE,GACR,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAYZ"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 从对象中排除指定的属性
|
|
3
|
+
* @param obj 源对象
|
|
4
|
+
* @param keys 要排除的属性名
|
|
5
|
+
* @returns 不包含排除属性的新对象
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* omit({ a: 1, b: 2, c: 3 }, ['b'])
|
|
9
|
+
* // => { a: 1, c: 3 }
|
|
10
|
+
*/
|
|
11
|
+
export function omit(obj, keys) {
|
|
12
|
+
const result = { ...obj };
|
|
13
|
+
const keysSet = new Set(keys);
|
|
14
|
+
for (const key of Object.keys(result)) {
|
|
15
|
+
if (keysSet.has(key)) {
|
|
16
|
+
//@ts-ignore
|
|
17
|
+
delete result[key];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AnyObject } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* 从对象中选择指定的属性
|
|
4
|
+
* @param obj 源对象
|
|
5
|
+
* @param keys 要选择的属性名
|
|
6
|
+
* @returns 只包含选定属性的新对象
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* pick({ a: 1, b: 2, c: 3 }, ['a', 'c'])
|
|
10
|
+
* // => { a: 1, c: 3 }
|
|
11
|
+
*/
|
|
12
|
+
export declare function pick<T extends AnyObject, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
|
|
13
|
+
//# sourceMappingURL=pick.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pick.d.ts","sourceRoot":"","sources":["../../../src/object/pick.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC;;;;;;;;;GASG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,MAAM,CAAC,EACzD,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,EAAE,GACR,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAUZ"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 从对象中选择指定的属性
|
|
3
|
+
* @param obj 源对象
|
|
4
|
+
* @param keys 要选择的属性名
|
|
5
|
+
* @returns 只包含选定属性的新对象
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* pick({ a: 1, b: 2, c: 3 }, ['a', 'c'])
|
|
9
|
+
* // => { a: 1, c: 3 }
|
|
10
|
+
*/
|
|
11
|
+
export function pick(obj, keys) {
|
|
12
|
+
const result = {};
|
|
13
|
+
for (const key of keys) {
|
|
14
|
+
if (key in obj) {
|
|
15
|
+
result[key] = obj[key];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 将字符串转换为驼峰式命名法
|
|
3
|
+
* @param str 输入字符串
|
|
4
|
+
* @returns 驼峰式命名的字符串
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* camelCase('hello-world') // => 'helloWorld'
|
|
8
|
+
* camelCase('hello_world') // => 'helloWorld'
|
|
9
|
+
*/
|
|
10
|
+
export declare function camelCase(str: string): string;
|
|
11
|
+
//# sourceMappingURL=camelCase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"camelCase.d.ts","sourceRoot":"","sources":["../../../src/string/camelCase.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQ7C"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 将字符串转换为驼峰式命名法
|
|
3
|
+
* @param str 输入字符串
|
|
4
|
+
* @returns 驼峰式命名的字符串
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* camelCase('hello-world') // => 'helloWorld'
|
|
8
|
+
* camelCase('hello_world') // => 'helloWorld'
|
|
9
|
+
*/
|
|
10
|
+
export function camelCase(str) {
|
|
11
|
+
if (typeof str !== 'string') {
|
|
12
|
+
return '';
|
|
13
|
+
}
|
|
14
|
+
return str
|
|
15
|
+
.replace(/[-_\s]+(.)?/g, (_, char) => (char ? char.toUpperCase() : ''))
|
|
16
|
+
.replace(/^(.)/, (char) => char.toLowerCase());
|
|
17
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capitalize.d.ts","sourceRoot":"","sources":["../../../src/string/capitalize.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK9C"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 将字符串首字母转为大写
|
|
3
|
+
* @param str 输入字符串
|
|
4
|
+
* @returns 首字母大写的字符串
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* capitalize('hello') // => 'Hello'
|
|
8
|
+
*/
|
|
9
|
+
export function capitalize(str) {
|
|
10
|
+
if (typeof str !== 'string' || str.length === 0) {
|
|
11
|
+
return '';
|
|
12
|
+
}
|
|
13
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/string/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 基础类型定义
|
|
3
|
+
*/
|
|
4
|
+
export type Primitive = string | number | boolean | null | undefined;
|
|
5
|
+
export type AnyObject = Record<string, any>;
|
|
6
|
+
export type AnyArray = any[];
|
|
7
|
+
export type Func = (...args: any[]) => any;
|
|
8
|
+
export type DeepPartial<T> = T extends object ? {
|
|
9
|
+
[P in keyof T]?: DeepPartial<T[P]>;
|
|
10
|
+
} : T;
|
|
11
|
+
export type DeepReadonly<T> = T extends object ? {
|
|
12
|
+
readonly [P in keyof T]: DeepReadonly<T[P]>;
|
|
13
|
+
} : T;
|
|
14
|
+
export type Flatten<T> = T extends (infer R)[] ? Flatten<R> | R : T;
|
|
15
|
+
export type Predicate<T> = (value: T, index?: number, array?: T[]) => boolean;
|
|
16
|
+
export type Comparator<T> = (a: T, b: T) => number;
|
|
17
|
+
export type Transform<T, R> = (value: T, index?: number, array?: T[]) => R;
|
|
18
|
+
export type Reducer<T, U> = (accumulator: U, value: T, index?: number, array?: T[]) => U;
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAErE,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE5C,MAAM,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC;AAE7B,MAAM,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAE3C,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GACzC;KACG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACnC,GACD,CAAC,CAAC;AAEN,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAC1C;IACE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5C,GACD,CAAC,CAAC;AAEN,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAC1C,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GACd,CAAC,CAAC;AAEN,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC;AAE9E,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC;AAEnD,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAE3E,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utility/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 检查值是否为空
|
|
3
|
+
* @param value 要检查的值
|
|
4
|
+
* @returns 如果值为空则返回 true
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* isEmpty([]) // => true
|
|
8
|
+
* isEmpty({}) // => true
|
|
9
|
+
* isEmpty('') // => true
|
|
10
|
+
* isEmpty(null) // => true
|
|
11
|
+
*/
|
|
12
|
+
export declare function isEmpty(value: unknown): boolean;
|
|
13
|
+
//# sourceMappingURL=isEmpty.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isEmpty.d.ts","sourceRoot":"","sources":["../../../src/utility/isEmpty.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAkB/C"}
|