@zcrkey/js-utils 0.0.11 → 0.0.15

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.
@@ -0,0 +1,481 @@
1
+ /**
2
+ * 文件类型
3
+ * - `UNKNOWN` 未知
4
+ * - `IMAGE` 图片
5
+ * - `VIDEO` 视频
6
+ * - `AUDIO` 音频
7
+ * - `DOCUMENT` 文档
8
+ * - `CAD` CAD / 工程图
9
+ * - `MODEL_3D` 3D 模型
10
+ * - `DIAGRAM` 流程图 / 思维导图
11
+ * - `ARCHIVE` 压缩包
12
+ */
13
+ export declare enum FileTypeEnum {
14
+ /** 未知类型 */
15
+ UNKNOWN = "unknown",
16
+ /** 图片,如 jpg、png、svg */
17
+ IMAGE = "image",
18
+ /** 视频,如 mp4、webm、avi */
19
+ VIDEO = "video",
20
+ /** 音频,如 mp3、wav、flac */
21
+ AUDIO = "audio",
22
+ /** 文档,如 Office、PDF、代码、配置、电子书 */
23
+ DOCUMENT = "document",
24
+ /** 压缩包,如 zip、rar、7z */
25
+ ARCHIVE = "archive",
26
+ /** CAD / 工程图,如 dwg、dxf */
27
+ CAD = "cad",
28
+ /** 3D 模型,如 glb、obj、stl */
29
+ MODEL_3D = "model_3d",
30
+ /** 流程图 / 思维导图,如 vsdx、drawio、xmind */
31
+ DIAGRAM = "diagram"
32
+ }
33
+ /**
34
+ * 图片细分类型。
35
+ */
36
+ export declare enum ImageTypeEnum {
37
+ JPG = "jpg",
38
+ JPEG = "jpeg",
39
+ PNG = "png",
40
+ WEBP = "webp",
41
+ GIF = "gif",
42
+ SVG = "svg",
43
+ BMP = "bmp",
44
+ PSD = "psd",
45
+ TIF = "tif",
46
+ TIFF = "tiff",
47
+ TGA = "tga",
48
+ EMF = "emf",
49
+ WMF = "wmf",
50
+ ICO = "ico",
51
+ HEIC = "heic",
52
+ AVIF = "avif",
53
+ UNKNOWN = "unknown"
54
+ }
55
+ /**
56
+ * 视频细分类型。
57
+ */
58
+ export declare enum VideoTypeEnum {
59
+ MP4 = "mp4",
60
+ WEBM = "webm",
61
+ AVI = "avi",
62
+ M4V = "m4v",
63
+ MPG = "mpg",
64
+ MPEG = "mpeg",
65
+ M2V = "m2v",
66
+ M4P = "m4p",
67
+ OGV = "ogv",
68
+ WMV = "wmv",
69
+ MKV = "mkv",
70
+ MOV = "mov",
71
+ FLV = "flv",
72
+ UNKNOWN = "unknown"
73
+ }
74
+ /**
75
+ * 音频细分类型。
76
+ */
77
+ export declare enum AudioTypeEnum {
78
+ MP3 = "mp3",
79
+ M4A = "m4a",
80
+ WAV = "wav",
81
+ AAC = "aac",
82
+ OGG = "ogg",
83
+ FLAC = "flac",
84
+ AC3 = "ac3",
85
+ AU = "au",
86
+ WMA = "wma",
87
+ AIF = "aif",
88
+ AIFC = "aifc",
89
+ AIFF = "aiff",
90
+ UNKNOWN = "unknown"
91
+ }
92
+ /**
93
+ * 文档细分类型。
94
+ */
95
+ export declare enum DocumentTypeEnum {
96
+ PDF = "pdf",
97
+ OFD = "ofd",
98
+ DOC = "doc",
99
+ DOCX = "docx",
100
+ DOT = "dot",
101
+ DOTX = "dotx",
102
+ DOTM = "dotm",
103
+ DOCM = "docm",
104
+ WPS = "wps",
105
+ WPT = "wpt",
106
+ RTF = "rtf",
107
+ XLS = "xls",
108
+ XLSX = "xlsx",
109
+ XLSM = "xlsm",
110
+ XLT = "xlt",
111
+ XLTX = "xltx",
112
+ XLTM = "xltm",
113
+ ODS = "ods",
114
+ OTS = "ots",
115
+ FODS = "fods",
116
+ XLA = "xla",
117
+ XLAM = "xlam",
118
+ ET = "et",
119
+ ETT = "ett",
120
+ CSV = "csv",
121
+ PPT = "ppt",
122
+ PPTX = "pptx",
123
+ DPS = "dps",
124
+ DPT = "dpt",
125
+ PPTM = "pptm",
126
+ POT = "pot",
127
+ POTX = "potx",
128
+ POTM = "potm",
129
+ ODP = "odp",
130
+ OTP = "otp",
131
+ FODP = "fodp",
132
+ TXT = "txt",
133
+ MD = "md",
134
+ MARKDOWN = "markdown",
135
+ MDOWN = "mdown",
136
+ MKD = "mkd",
137
+ MKDN = "mkdn",
138
+ MDWN = "mdwn",
139
+ MDTXT = "mdtxt",
140
+ MDX = "mdx",
141
+ HTML = "html",
142
+ HTM = "htm",
143
+ XML = "xml",
144
+ XSD = "xsd",
145
+ XSL = "xsl",
146
+ XSLT = "xslt",
147
+ TEX = "tex",
148
+ LTX = "ltx",
149
+ BIB = "bib",
150
+ CLS = "cls",
151
+ STY = "sty",
152
+ INS = "ins",
153
+ DTX = "dtx",
154
+ RST = "rst",
155
+ LOG = "log",
156
+ CONF = "conf",
157
+ JS = "js",
158
+ JSX = "jsx",
159
+ MJS = "mjs",
160
+ CJS = "cjs",
161
+ TS = "ts",
162
+ TSX = "tsx",
163
+ VUE = "vue",
164
+ SVELTE = "svelte",
165
+ CSS = "css",
166
+ SCSS = "scss",
167
+ SASS = "sass",
168
+ LESS = "less",
169
+ JAVA = "java",
170
+ JSP = "jsp",
171
+ JSPX = "jspx",
172
+ JHTML = "jhtml",
173
+ TAG = "tag",
174
+ GROOVY = "groovy",
175
+ GVY = "gvy",
176
+ GSH = "gsh",
177
+ GRVY = "grvy",
178
+ SCALA = "scala",
179
+ SC = "sc",
180
+ KT = "kt",
181
+ KTS = "kts",
182
+ C = "c",
183
+ CPP = "cpp",
184
+ CC = "cc",
185
+ CXX = "cxx",
186
+ H = "h",
187
+ HPP = "hpp",
188
+ HXX = "hxx",
189
+ HH = "hh",
190
+ CS = "cs",
191
+ CSHTML = "cshtml",
192
+ RAZOR = "razor",
193
+ PY = "py",
194
+ PYW = "pyw",
195
+ PYT = "pyt",
196
+ PYX = "pyx",
197
+ PYO = "pyo",
198
+ RPY = "rpy",
199
+ GO = "go",
200
+ GOMOD = "gomod",
201
+ GOHTML = "gohtml",
202
+ PHP = "php",
203
+ PHP3 = "php3",
204
+ PHP4 = "php4",
205
+ PHP5 = "php5",
206
+ PHTML = "phtml",
207
+ PHPT = "phpt",
208
+ RB = "rb",
209
+ RAKE = "rake",
210
+ THOR = "thor",
211
+ RU = "ru",
212
+ LUA = "lua",
213
+ R = "r",
214
+ RMD = "rmd",
215
+ RNW = "rnw",
216
+ RS = "rs",
217
+ SWIFT = "swift",
218
+ DART = "dart",
219
+ PL = "pl",
220
+ PM = "pm",
221
+ T = "t",
222
+ POD = "pod",
223
+ ERL = "erl",
224
+ HRL = "hrl",
225
+ EX = "ex",
226
+ EXS = "exs",
227
+ HS = "hs",
228
+ LHS = "lhs",
229
+ SH = "sh",
230
+ BASH = "bash",
231
+ ZSH = "zsh",
232
+ FISH = "fish",
233
+ KSH = "ksh",
234
+ CSH = "csh",
235
+ TCSH = "tcsh",
236
+ BASHRC = "bashrc",
237
+ BASH_PROFILE = "bash_profile",
238
+ CMD = "cmd",
239
+ ASM = "asm",
240
+ S = "s",
241
+ M = "m",
242
+ MM = "mm",
243
+ OBJC = "objc",
244
+ OBJCPP = "objcpp",
245
+ JSON = "json",
246
+ GEOJSON = "geojson",
247
+ LDJSON = "ldjson",
248
+ JSON5 = "json5",
249
+ YAML = "yaml",
250
+ YML = "yml",
251
+ SQL = "sql",
252
+ PGSQL = "pgsql",
253
+ SQLITE = "sqlite",
254
+ DB = "db",
255
+ DB3 = "db3",
256
+ DSQL = "dsql",
257
+ GRADLE = "gradle",
258
+ CMAKE = "cmake",
259
+ GYP = "gyp",
260
+ TF = "tf",
261
+ TFVARS = "tfvars",
262
+ HCL = "hcl",
263
+ DOCKERFILE = "dockerfile",
264
+ GITIGNORE = "gitignore",
265
+ NGINX = "nginx",
266
+ EJS = "ejs",
267
+ JADE = "jade",
268
+ PUG = "pug",
269
+ VBHTML = "vbhtml",
270
+ SCHEMA = "schema",
271
+ HTTP = "http",
272
+ REST = "rest",
273
+ EPUB = "epub",
274
+ UNKNOWN = "unknown"
275
+ }
276
+ /**
277
+ * 压缩包细分类型。
278
+ */
279
+ export declare enum ArchiveTypeEnum {
280
+ ZIP = "zip",
281
+ JAR = "jar",
282
+ RAR = "rar",
283
+ SEVEN_Z = "7z",
284
+ TAR = "tar",
285
+ TAR_GZ = "tar.gz",
286
+ TGZ = "tgz",
287
+ GZ = "gz",
288
+ UNKNOWN = "unknown"
289
+ }
290
+ /**
291
+ * CAD / 工程图细分类型。
292
+ */
293
+ export declare enum CadTypeEnum {
294
+ DWG = "dwg",
295
+ DXF = "dxf",
296
+ UNKNOWN = "unknown"
297
+ }
298
+ /**
299
+ * 3D 模型细分类型。
300
+ */
301
+ export declare enum Model3DTypeEnum {
302
+ GLTF = "gltf",
303
+ GLB = "glb",
304
+ OBJ = "obj",
305
+ STL = "stl",
306
+ FBX = "fbx",
307
+ PLY = "ply",
308
+ DAE = "dae",
309
+ WRL = "wrl",
310
+ THREE_DS = "3ds",
311
+ THREE_MF = "3mf",
312
+ THREE_DM = "3dm",
313
+ UNKNOWN = "unknown"
314
+ }
315
+ /**
316
+ * 流程图 / 思维导图细分类型。
317
+ */
318
+ export declare enum DiagramTypeEnum {
319
+ VSD = "vsd",
320
+ VSDM = "vsdm",
321
+ VSDX = "vsdx",
322
+ VSSM = "vssm",
323
+ VSSX = "vssx",
324
+ VSTM = "vstm",
325
+ VSTX = "vstx",
326
+ BPMN = "bpmn",
327
+ DRAWIO = "drawio",
328
+ XMIND = "xmind",
329
+ UNKNOWN = "unknown"
330
+ }
331
+ /**
332
+ * 所有文件细分类型的统一联合类型。
333
+ */
334
+ export type CrFileSubType = ImageTypeEnum | VideoTypeEnum | AudioTypeEnum | DocumentTypeEnum | ArchiveTypeEnum | CadTypeEnum | Model3DTypeEnum | DiagramTypeEnum;
335
+ /**
336
+ * 文件元信息。
337
+ */
338
+ export interface CrFileMeta {
339
+ /** 归一化后的扩展名,不包含点;复合后缀保留为 tar.gz */
340
+ ext: string;
341
+ /** 文件大类 */
342
+ type: FileTypeEnum;
343
+ /** 图片细分类,仅 IMAGE 类型有效 */
344
+ imageType?: ImageTypeEnum;
345
+ /** 视频细分类,仅 VIDEO 类型有效 */
346
+ videoType?: VideoTypeEnum;
347
+ /** 音频细分类,仅 AUDIO 类型有效 */
348
+ audioType?: AudioTypeEnum;
349
+ /** 文档细分类,仅 DOCUMENT 类型有效 */
350
+ documentType?: DocumentTypeEnum;
351
+ /** 压缩包细分类,仅 ARCHIVE 类型有效 */
352
+ archiveType?: ArchiveTypeEnum;
353
+ /** CAD 细分类,仅 CAD 类型有效 */
354
+ cadType?: CadTypeEnum;
355
+ /** 3D 模型细分类,仅 MODEL_3D 类型有效 */
356
+ model3DType?: Model3DTypeEnum;
357
+ /** 流程图 / 思维导图细分类,仅 DIAGRAM 类型有效 */
358
+ diagramType?: DiagramTypeEnum;
359
+ /** 统一细分类入口,等于当前大类对应的 xxxType 字段 */
360
+ subType?: CrFileSubType;
361
+ }
362
+ export declare class CrFileUtil {
363
+ /**
364
+ * 提取文件扩展名,不包含点。
365
+ *
366
+ * 未知或空文件名返回空字符串;复合后缀 tar.gz 会完整保留。
367
+ */
368
+ static getExt(filename?: string): string;
369
+ /**
370
+ * 获取文件完整元信息。
371
+ *
372
+ * 未识别扩展名会返回 UNKNOWN 大类,并保留原始扩展名。
373
+ */
374
+ static getMeta(filename: string): CrFileMeta;
375
+ /**
376
+ * 获取文件大类。
377
+ */
378
+ static getType(filename: string): FileTypeEnum;
379
+ /**
380
+ * 获取统一细分类型。
381
+ *
382
+ * 未知格式返回 undefined。
383
+ */
384
+ static getSubType(filename: string): CrFileSubType | undefined;
385
+ /**
386
+ * 获取文档细分类型。
387
+ *
388
+ * 非文档或未知格式返回 DocumentTypeEnum.UNKNOWN。
389
+ */
390
+ static getDocumentType(filename: string): DocumentTypeEnum;
391
+ /**
392
+ * 获取图片细分类型。
393
+ *
394
+ * 非图片或未知格式返回 ImageTypeEnum.UNKNOWN。
395
+ */
396
+ static getImageType(filename: string): ImageTypeEnum;
397
+ /**
398
+ * 获取视频细分类型。
399
+ *
400
+ * 非视频或未知格式返回 VideoTypeEnum.UNKNOWN。
401
+ */
402
+ static getVideoType(filename: string): VideoTypeEnum;
403
+ /**
404
+ * 获取音频细分类型。
405
+ *
406
+ * 非音频或未知格式返回 AudioTypeEnum.UNKNOWN。
407
+ */
408
+ static getAudioType(filename: string): AudioTypeEnum;
409
+ /**
410
+ * 获取压缩包细分类型。
411
+ *
412
+ * 非压缩包或未知格式返回 ArchiveTypeEnum.UNKNOWN。
413
+ */
414
+ static getArchiveType(filename: string): ArchiveTypeEnum;
415
+ /**
416
+ * 获取 CAD 细分类型。
417
+ *
418
+ * 非 CAD 或未知格式返回 CadTypeEnum.UNKNOWN。
419
+ */
420
+ static getCadType(filename: string): CadTypeEnum;
421
+ /**
422
+ * 获取 3D 模型细分类型。
423
+ *
424
+ * 非 3D 模型或未知格式返回 Model3DTypeEnum.UNKNOWN。
425
+ */
426
+ static getModel3DType(filename: string): Model3DTypeEnum;
427
+ /**
428
+ * 获取流程图 / 思维导图细分类型。
429
+ *
430
+ * 非流程图或未知格式返回 DiagramTypeEnum.UNKNOWN。
431
+ */
432
+ static getDiagramType(filename: string): DiagramTypeEnum;
433
+ /**
434
+ * 格式化文件大小。
435
+ *
436
+ * @param bytes 文件字节数
437
+ * @param fixed 小数位数
438
+ *
439
+ * @example
440
+ * 0 => 0 B
441
+ * 123 => 123.00B
442
+ * 1024 => 1.00KB
443
+ * 1500 => 1.46KB
444
+ * 1024 * 1024 => 1.00MB
445
+ * 1024 * 1024 * 3.5 => 3.50MB
446
+ * 1024 * 1024 * 1024 => 1.00GB
447
+ */
448
+ static formatFileSize(bytes: number, fixed?: number): string;
449
+ /**
450
+ * 判断是否为图片。
451
+ */
452
+ static isImage(filename: string): boolean;
453
+ /**
454
+ * 判断是否为视频。
455
+ */
456
+ static isVideo(filename: string): boolean;
457
+ /**
458
+ * 判断是否为音频。
459
+ */
460
+ static isAudio(filename: string): boolean;
461
+ /**
462
+ * 判断是否为文档。
463
+ */
464
+ static isDocument(filename: string): boolean;
465
+ /**
466
+ * 判断是否为压缩包。
467
+ */
468
+ static isArchive(filename: string): boolean;
469
+ /**
470
+ * 判断是否为 CAD / 工程图。
471
+ */
472
+ static isCad(filename: string): boolean;
473
+ /**
474
+ * 判断是否为 3D 模型。
475
+ */
476
+ static is3DModel(filename: string): boolean;
477
+ /**
478
+ * 判断是否为流程图 / 思维导图。
479
+ */
480
+ static isDiagram(filename: string): boolean;
481
+ }
@@ -0,0 +1,7 @@
1
+ export * from './color';
2
+ export * from './eventCenter';
3
+ export * from './file';
4
+ export * from './obj';
5
+ export * from './storage';
6
+ export * from './tree';
7
+ export * from './util';
@@ -0,0 +1,20 @@
1
+ import { PropertyPath } from 'lodash';
2
+ export type { PropertyPath };
3
+ export declare class CrObjUtil {
4
+ /**
5
+ * 根据字段路径获取对象值
6
+ * @param obj { 'a': [{ 'b': { 'c': 3 } }] }
7
+ * @param path 'a[0].b.c' | ['a', '0', 'b', 'c']
8
+ * @param defaultValue 找不到时返回的默认值
9
+ * @returns
10
+ */
11
+ static getValueByPath(obj: Record<string | number | symbol, any>, propertyPath: PropertyPath, defaultValue?: any): any;
12
+ /**
13
+ * 根据字段路径设置对象值(可变更新,直接修改原对象)
14
+ * @param obj 要修改的原对象 { 'a': [{ 'b': { 'c': 3 } }] }
15
+ * @param propertyPath 路径 'a[0].b.c' | ['a', '0', 'b', 'c']
16
+ * @param value 要设置的值
17
+ * @returns 修改后的原对象(和入参obj是同一个引用)
18
+ */
19
+ static setValueByPath(obj: Record<string | number | symbol, any>, propertyPath: PropertyPath, value: any): Record<string | number | symbol, any>;
20
+ }
@@ -1,4 +1,4 @@
1
- export default class CrStorage {
1
+ export declare class CrStorage {
2
2
  /**
3
3
  * 设置本地存储
4
4
  * @param key
@@ -1,4 +1,4 @@
1
- export default class CrTreeUtil {
1
+ export declare class CrTreeUtil {
2
2
  /**
3
3
  * 列表数据转树形数据
4
4
  * @param list
@@ -1,4 +1,4 @@
1
- export default class CrUtil {
1
+ export declare class CrUtil {
2
2
  /**
3
3
  * 判断是否为数组
4
4
  * @param value
@@ -17,6 +17,12 @@ export default class CrUtil {
17
17
  * @returns boolean
18
18
  */
19
19
  static isEmptyObject(value: object): value is Record<string | number, never>;
20
+ /**
21
+ * 判断是否为空
22
+ * @param value
23
+ * @returns boolean
24
+ */
25
+ static isEmptyVal(value: unknown): boolean;
20
26
  /**
21
27
  * 判断是否对象的属性是否全部为空
22
28
  * @param value
@@ -59,6 +65,18 @@ export default class CrUtil {
59
65
  * @returns boolean
60
66
  */
61
67
  static isFunction(value: unknown): value is (...args: any[]) => any;
68
+ /**
69
+ * 是否为 URL
70
+ * @param path
71
+ * @returns boolean
72
+ */
73
+ static isUrl(path: string): boolean;
74
+ /**
75
+ * 是否为十六进制颜色值
76
+ * @param color 十六进制颜色值(#fff000、#f00)
77
+ * @returns boolean
78
+ */
79
+ static isHexColor(color: string): boolean;
62
80
  /**
63
81
  * 去掉字符串前后所有空格
64
82
  * @param str
@@ -74,14 +92,14 @@ export default class CrUtil {
74
92
  /**
75
93
  * 深拷贝
76
94
  * @param value
77
- * @returns
95
+ * @returns T
78
96
  */
79
97
  static cloneDeep<T>(value: T): T;
80
98
  /**
81
99
  * 深拷贝
82
100
  * @param target
83
101
  * @deprecated 即将移除,使用 {@link CrUtil.cloneDeep} 替代
84
- * @returns
102
+ * @returns T
85
103
  */
86
104
  static deepCopy<T = any>(target: T): T;
87
105
  /**
@@ -176,7 +194,9 @@ export default class CrUtil {
176
194
  * 根据 ids 获取相对应的数据名称
177
195
  * @param data
178
196
  * @param ids
179
- * @param settings
197
+ * @param settings.sep
198
+ * @param settings.nameField
199
+ * @param settings.idField
180
200
  * @returns string
181
201
  */
182
202
  static getDataNameByIds<T extends Record<string, any>>(data: T[], ids: (string | number)[], settings?: {
@@ -197,7 +217,7 @@ export default class CrUtil {
197
217
  * 比较数据差异
198
218
  * @param data1
199
219
  * @param data2
200
- * @returns
220
+ * @returns Record<string, "added" | "removed" | "modified">
201
221
  */
202
222
  static compareDataDiff(data1: any, data2: any): Record<string, "added" | "removed" | "modified">;
203
223
  /**
@@ -209,13 +229,13 @@ export default class CrUtil {
209
229
  /**
210
230
  * 格式化为千分位格式
211
231
  * @param value
212
- * @returns
232
+ * @returns 12345.6789 => 12,345.6789
213
233
  */
214
234
  static formatThousands(value?: string | number): string;
215
235
  /**
216
236
  * 解析千分位格式
217
237
  * @param value
218
- * @returns
238
+ * @returns 12,345.6789 => 12345.6789
219
239
  */
220
240
  static parseThousands(value?: string | number): string;
221
241
  }
package/package.json CHANGED
@@ -1,35 +1,30 @@
1
1
  {
2
2
  "name": "@zcrkey/js-utils",
3
- "version": "0.0.11",
3
+ "version": "0.0.15",
4
+ "private": false,
4
5
  "description": "一个 javascript 实用函数库",
5
6
  "keywords": [
6
7
  "js"
7
8
  ],
8
- "repository": {
9
- "type": "git",
10
- "url": "https://cnb.cool/cnbkey/zcrkey/js-utils.git"
11
- },
12
- "license": "MIT",
13
9
  "exports": {
14
10
  ".": {
15
- "require": "./dist/cjs/index.js",
16
- "import": "./dist/esm/index.js"
11
+ "types": "./dist/types/index.d.ts",
12
+ "import": "./dist/index.es.js",
13
+ "require": "./dist/index.cjs.js"
17
14
  }
18
15
  },
19
- "main": "dist/cjs/index.js",
20
- "unpkg": "dist/umd/index.umd.js",
21
- "module": "dist/esm/index.js",
22
- "types": "dist/esm/index.d.ts",
16
+ "main": "dist/index.cjs.js",
17
+ "module": "dist/index.es.js",
18
+ "unpkg": "dist/index.umd.js",
19
+ "types": "dist/types/index.d.ts",
20
+ "source": "src/index.ts",
23
21
  "files": [
24
- "dist",
25
- "README.html"
22
+ "README.html",
23
+ "dist"
26
24
  ],
27
25
  "dependencies": {
28
- "lodash": "^4.17.21",
29
- "qs": "^6.11.2"
30
- },
31
- "publishConfig": {
32
- "access": "public"
26
+ "lodash": "^4.18.1",
27
+ "qs": "^6.15.1"
33
28
  },
34
29
  "authors": [
35
30
  "zcr[774508556@qq.com]"