@cloudcome/utils-core 1.19.1 → 1.20.1
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 +72 -73
- package/dist/array.cjs +181 -125
- package/dist/array.cjs.map +1 -1
- package/dist/array.mjs +181 -133
- package/dist/array.mjs.map +1 -1
- package/dist/async.cjs +181 -171
- package/dist/async.cjs.map +1 -1
- package/dist/async.mjs +181 -174
- package/dist/async.mjs.map +1 -1
- package/dist/base64.cjs +16 -12
- package/dist/base64.cjs.map +1 -1
- package/dist/base64.mjs +17 -14
- package/dist/base64.mjs.map +1 -1
- package/dist/cache.cjs +79 -67
- package/dist/cache.cjs.map +1 -1
- package/dist/cache.d.ts +3 -3
- package/dist/cache.mjs +80 -71
- package/dist/cache.mjs.map +1 -1
- package/dist/color.cjs +478 -167
- package/dist/color.cjs.map +1 -1
- package/dist/color.d.ts +3 -3
- package/dist/color.mjs +480 -197
- package/dist/color.mjs.map +1 -1
- package/dist/crypto.cjs +474 -687
- package/dist/crypto.cjs.map +1 -1
- package/dist/crypto.mjs +476 -693
- package/dist/crypto.mjs.map +1 -1
- package/dist/date.cjs +972 -161
- package/dist/date.cjs.map +1 -1
- package/dist/date.d.ts +2 -2
- package/dist/date.mjs +962 -191
- package/dist/date.mjs.map +1 -1
- package/dist/dict.cjs +90 -52
- package/dist/dict.cjs.map +1 -1
- package/dist/dict.d.ts +1 -1
- package/dist/dict.mjs +91 -54
- package/dist/dict.mjs.map +1 -1
- package/dist/easing.cjs +104 -103
- package/dist/easing.cjs.map +1 -1
- package/dist/easing.mjs +105 -133
- package/dist/easing.mjs.map +1 -1
- package/dist/emitter.cjs +101 -96
- package/dist/emitter.cjs.map +1 -1
- package/dist/emitter.mjs +101 -97
- package/dist/emitter.mjs.map +1 -1
- package/dist/env.cjs +43 -9
- package/dist/env.cjs.map +1 -1
- package/dist/env.d.ts +1 -1
- package/dist/env.mjs +43 -15
- package/dist/env.mjs.map +1 -1
- package/dist/error.cjs +26 -5
- package/dist/error.cjs.map +1 -1
- package/dist/error.mjs +26 -7
- package/dist/error.mjs.map +1 -1
- package/dist/exception.cjs +38 -20
- package/dist/exception.cjs.map +1 -1
- package/dist/exception.d.ts +5 -5
- package/dist/exception.mjs +38 -21
- package/dist/exception.mjs.map +1 -1
- package/dist/function.cjs +128 -68
- package/dist/function.cjs.map +1 -1
- package/dist/function.mjs +128 -72
- package/dist/function.mjs.map +1 -1
- package/dist/index.cjs +8 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +9 -5
- package/dist/index.mjs.map +1 -1
- package/dist/number.cjs +10 -14
- package/dist/number.mjs +2 -15
- package/dist/object/get-set.d.ts +2 -2
- package/dist/object/merge.d.ts +2 -2
- package/dist/object.cjs +369 -106
- package/dist/object.cjs.map +1 -1
- package/dist/object.mjs +366 -115
- package/dist/object.mjs.map +1 -1
- package/dist/path.cjs +144 -55
- package/dist/path.cjs.map +1 -1
- package/dist/path.mjs +144 -62
- package/dist/path.mjs.map +1 -1
- package/dist/promise.cjs +84 -43
- package/dist/promise.cjs.map +1 -1
- package/dist/promise.mjs +85 -50
- package/dist/promise.mjs.map +1 -1
- package/dist/qs.cjs +63 -39
- package/dist/qs.cjs.map +1 -1
- package/dist/qs.mjs +64 -42
- package/dist/qs.mjs.map +1 -1
- package/dist/regexp.cjs +118 -35
- package/dist/regexp.cjs.map +1 -1
- package/dist/regexp.mjs +119 -46
- package/dist/regexp.mjs.map +1 -1
- package/dist/string.cjs +12 -15
- package/dist/string.mjs +2 -16
- package/dist/string2.cjs +378 -142
- package/dist/string2.cjs.map +1 -1
- package/dist/string2.mjs +259 -143
- package/dist/string2.mjs.map +1 -1
- package/dist/time.cjs +136 -59
- package/dist/time.cjs.map +1 -1
- package/dist/time.mjs +136 -65
- package/dist/time.mjs.map +1 -1
- package/dist/timer.cjs +122 -112
- package/dist/timer.cjs.map +1 -1
- package/dist/timer.mjs +123 -115
- package/dist/timer.mjs.map +1 -1
- package/dist/tree.cjs +207 -112
- package/dist/tree.cjs.map +1 -1
- package/dist/tree.mjs +207 -116
- package/dist/tree.mjs.map +1 -1
- package/dist/try/curry.d.ts +1 -1
- package/dist/try.cjs +36 -37
- package/dist/try.cjs.map +1 -1
- package/dist/try.mjs +35 -37
- package/dist/try.mjs.map +1 -1
- package/dist/type.cjs +126 -24
- package/dist/type.cjs.map +1 -1
- package/dist/type.d.ts +2 -2
- package/dist/type.mjs +128 -45
- package/dist/type.mjs.map +1 -1
- package/dist/types.cjs +0 -2
- package/dist/types.d.ts +1 -1
- package/dist/types.mjs +0 -2
- package/dist/unique.cjs +41 -38
- package/dist/unique.cjs.map +1 -1
- package/dist/unique.mjs +42 -41
- package/dist/unique.mjs.map +1 -1
- package/dist/url.cjs +39 -30
- package/dist/url.cjs.map +1 -1
- package/dist/url.mjs +40 -33
- package/dist/url.mjs.map +1 -1
- package/dist/version.cjs +51 -33
- package/dist/version.cjs.map +1 -1
- package/dist/version.mjs +51 -35
- package/dist/version.mjs.map +1 -1
- package/package.json +109 -110
- package/dist/const.cjs +0 -14
- package/dist/const.cjs.map +0 -1
- package/dist/const.mjs +0 -15
- package/dist/const.mjs.map +0 -1
- package/dist/core.cjs +0 -362
- package/dist/core.cjs.map +0 -1
- package/dist/core.mjs +0 -363
- package/dist/core.mjs.map +0 -1
- package/dist/crypto/md5.d.mts +0 -1
- package/dist/crypto/sha1.d.mts +0 -1
- package/dist/crypto/sha256.d.mts +0 -1
- package/dist/crypto/sha512.d.mts +0 -1
- package/dist/each.cjs +0 -18
- package/dist/each.cjs.map +0 -1
- package/dist/each.mjs +0 -19
- package/dist/each.mjs.map +0 -1
- package/dist/merge.cjs +0 -87
- package/dist/merge.cjs.map +0 -1
- package/dist/merge.mjs +0 -88
- package/dist/merge.mjs.map +0 -1
- package/dist/number.cjs.map +0 -1
- package/dist/number.mjs.map +0 -1
- package/dist/string.cjs.map +0 -1
- package/dist/string.mjs.map +0 -1
- package/dist/types.cjs.map +0 -1
- package/dist/types.mjs.map +0 -1
package/dist/try.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"try.mjs","sources":["../src/try/curry.ts","../src/try/callback.ts","../src/try/function.ts","../src/try/promise.ts","../src/try/main.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"try.mjs","names":[],"sources":["../src/try/curry.ts","../src/try/callback.ts","../src/try/function.ts","../src/try/promise.ts","../src/try/main.ts"],"sourcesContent":["export type Callback<T = void> = (err: null | undefined | undefined | Error, res: T) => unknown;\n\nexport type CallbackFunction0<T = void> = (callback: Callback<T>) => unknown;\nexport type CallbackFunction1<A, T = void> = (a: A, callback: Callback<T>) => unknown;\nexport type CallbackFunction2<A, B, T = void> = (a: A, b: B, callback: Callback<T>) => unknown;\nexport type CallbackFunction3<A, B, C, T = void> = (a: A, b: B, c: C, callback: Callback<T>) => unknown;\nexport type CallbackFunction4<A, B, C, D, T = void> = (a: A, b: B, c: C, d: D, callback: Callback<T>) => unknown;\nexport type CallbackFunction5<A, B, C, D, E, T = void> = (\n a: A,\n b: B,\n c: C,\n d: D,\n e: E,\n callback: Callback<T>,\n) => unknown;\nexport type CallbackFunction6<A, B, C, D, E, F, T = void> = (\n a: A,\n b: B,\n c: C,\n d: D,\n e: E,\n f: F,\n callback: Callback<T>,\n) => unknown;\n\nexport type CallbackCurried<T> = (callback: Callback<T>) => unknown;\n\nexport function callbackCurry<T = void>(cf: CallbackFunction0<T>): CallbackCurried<T>;\nexport function callbackCurry<A, T = void>(cf: CallbackFunction1<A, T>, a: A): CallbackCurried<T>;\nexport function callbackCurry<A, B, T = void>(cf: CallbackFunction2<A, B, T>, a: A, b: B): CallbackCurried<T>;\nexport function callbackCurry<A, B, C, T = void>(\n cf: CallbackFunction3<A, B, C, T>,\n a: A,\n b: B,\n c: C,\n): CallbackCurried<T>;\nexport function callbackCurry<A, B, C, D, T = void>(\n cf: CallbackFunction4<A, B, C, D, T>,\n a: A,\n b: B,\n c: C,\n d: D,\n): CallbackCurried<T>;\nexport function callbackCurry<A, B, C, D, E, T = void>(\n cf: CallbackFunction5<A, B, C, D, E, T>,\n a: A,\n b: B,\n c: C,\n d: D,\n e: E,\n): CallbackCurried<T>;\nexport function callbackCurry<A, B, C, D, E, F, T = void>(\n cf: CallbackFunction6<A, B, C, D, E, F, T>,\n a: A,\n b: B,\n c: C,\n d: D,\n e: E,\n f: F,\n): CallbackCurried<T>;\nexport function callbackCurry(cf: unknown, ...args: unknown[]): CallbackCurried<unknown> {\n return function callbackCurried(callback: Callback<unknown>) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n cf.apply(this, [...args, callback]);\n };\n}\n","import { errorNormalize } from '@/error';\nimport type {\n CallbackFunction0,\n CallbackFunction1,\n CallbackFunction2,\n CallbackFunction3,\n CallbackFunction4,\n CallbackFunction5,\n CallbackFunction6,\n} from './curry';\nimport { callbackCurry } from './curry';\nimport type { FlattenReturn } from './types';\n\nexport function tryCallback(cf: CallbackFunction0): Promise<FlattenReturn>;\nexport function tryCallback<T = void>(cf: CallbackFunction0<T>): Promise<FlattenReturn<T>>;\nexport function tryCallback<A, T = void>(cf: CallbackFunction1<A, T>, a: A): Promise<FlattenReturn<T>>;\nexport function tryCallback<A, B, T = void>(cf: CallbackFunction2<A, B, T>, a: A, b: B): Promise<FlattenReturn<T>>;\nexport function tryCallback<A, B, C, T = void>(\n cf: CallbackFunction3<A, B, C, T>,\n a: A,\n b: B,\n c: C,\n): Promise<FlattenReturn<T>>;\nexport function tryCallback<A, B, C, D, T = void>(\n cf: CallbackFunction4<A, B, C, D>,\n a: A,\n b: B,\n c: C,\n d: D,\n): Promise<FlattenReturn<T>>;\nexport function tryCallback<A, B, C, D, E, T = void>(\n cf: CallbackFunction5<A, B, C, D, E, T>,\n a: A,\n b: B,\n c: C,\n d: D,\n e: E,\n): Promise<FlattenReturn<T>>;\nexport function tryCallback<A, B, C, D, E, F, T = void>(\n cf: CallbackFunction6<A, B, C, D, E, F, T>,\n a: A,\n b: B,\n c: C,\n d: D,\n e: E,\n f: F,\n): Promise<FlattenReturn<T>>;\nexport function tryCallback(cf: unknown, ...args: unknown[]): Promise<FlattenReturn<unknown>> {\n return new Promise((resolve) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n callbackCurry.apply(this, [cf, ...args])((err, res) => {\n if (err) {\n resolve([errorNormalize(err), undefined] as const);\n } else {\n resolve([undefined, res] as const);\n }\n });\n });\n}\n","import { errorNormalize } from '@/error';\nimport type { FlattenReturn } from './types';\n\nexport type SyncFunction<T> = () => T;\n\nexport function trySync<T>(syncFn: SyncFunction<T>): FlattenReturn<T> {\n try {\n return [undefined, syncFn()] as const;\n } catch (err) {\n return [errorNormalize(err), undefined] as const;\n }\n}\n\nexport type AsyncFunction<T> = () => Promise<T>;\n\nexport function tryAsync<T>(asyncFn: AsyncFunction<T>): Promise<FlattenReturn<T>> {\n return asyncFn().then(\n (res) => [undefined, res] as const,\n (err) => [errorNormalize(err), undefined] as const,\n );\n}\n","import { errorNormalize } from '@/error';\nimport type { FlattenReturn } from './types';\n\nexport function tryPromise<T>(promise: PromiseLike<T>): PromiseLike<FlattenReturn<T>> {\n return promise.then(\n (res) => [undefined, res] as const,\n (err) => [errorNormalize(err), undefined] as const,\n );\n}\n","import { isAsyncFunction } from '@/type';\nimport { tryCallback } from './callback';\nimport type { CallbackFunction0 } from './curry';\nimport { type AsyncFunction, type SyncFunction, tryAsync, trySync } from './function';\nimport { tryPromise } from './promise';\nimport type { FlattenReturn } from './types';\n\nexport type FlattenAble<T> = SyncFunction<T> | AsyncFunction<T> | CallbackFunction0<T> | PromiseLike<T>;\n\n// 注意顺序 AsyncFunction > SyncFunction > CallbackFunction0 > PromiseLike\n// 需要先匹配 AsyncFunction,否则会把入参当做同步函数\nexport function tryFlatten<T>(flattenAble: AsyncFunction<T>): Promise<FlattenReturn<T>>;\nexport function tryFlatten<T>(flattenAble: SyncFunction<T>): FlattenReturn<T>;\nexport function tryFlatten<T>(flattenAble: CallbackFunction0<T> | PromiseLike<T>): Promise<FlattenReturn<T>>;\nexport function tryFlatten<T>(flattenAble: FlattenAble<T>): unknown {\n if ('then' in flattenAble) {\n return tryPromise<T>(flattenAble);\n }\n\n // SyncFunction | AsyncFunction\n if (flattenAble.length === 0) {\n if (isAsyncFunction(flattenAble)) return tryAsync<T>(flattenAble as AsyncFunction<T>);\n return trySync<T>(flattenAble as SyncFunction<T>);\n }\n\n return tryCallback<T>(flattenAble);\n}\n"],"mappings":";;;AA4DA,SAAgB,cAAc,IAAa,GAAG,MAA2C;CACvF,OAAO,SAAS,gBAAgB,UAA6B;EAG3D,GAAG,MAAM,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC;;;;;ACjBvC,SAAgB,YAAY,IAAa,GAAG,MAAkD;CAC5F,OAAO,IAAI,SAAS,YAAY;EAG9B,cAAc,MAAM,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,KAAK,QAAQ;GACrD,IAAI,KACF,QAAQ,CAAC,eAAe,IAAI,EAAE,KAAA,EAAU,CAAU;QAElD,QAAQ,CAAC,KAAA,GAAW,IAAI,CAAU;IAEpC;GACF;;;;ACrDJ,SAAgB,QAAW,QAA2C;CACpE,IAAI;EACF,OAAO,CAAC,KAAA,GAAW,QAAQ,CAAC;UACrB,KAAK;EACZ,OAAO,CAAC,eAAe,IAAI,EAAE,KAAA,EAAU;;;AAM3C,SAAgB,SAAY,SAAsD;CAChF,OAAO,SAAS,CAAC,MACd,QAAQ,CAAC,KAAA,GAAW,IAAI,GACxB,QAAQ,CAAC,eAAe,IAAI,EAAE,KAAA,EAAU,CAC1C;;;;AChBH,SAAgB,WAAc,SAAwD;CACpF,OAAO,QAAQ,MACZ,QAAQ,CAAC,KAAA,GAAW,IAAI,GACxB,QAAQ,CAAC,eAAe,IAAI,EAAE,KAAA,EAAU,CAC1C;;;;ACOH,SAAgB,WAAc,aAAsC;CAClE,IAAI,UAAU,aACZ,OAAO,WAAc,YAAY;CAInC,IAAI,YAAY,WAAW,GAAG;EAC5B,IAAI,gBAAgB,YAAY,EAAE,OAAO,SAAY,YAAgC;EACrF,OAAO,QAAW,YAA+B;;CAGnD,OAAO,YAAe,YAAY"}
|
package/dist/type.cjs
CHANGED
|
@@ -1,61 +1,162 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
//#region src/type.ts
|
|
3
|
+
/**
|
|
4
|
+
* 获取未知类型的类型名称
|
|
5
|
+
* @param unknown - 未知类型的值
|
|
6
|
+
* @returns 类型名称字符串
|
|
7
|
+
*/
|
|
3
8
|
function typeIs(unknown) {
|
|
4
|
-
|
|
9
|
+
return Object.prototype.toString.call(unknown).slice(8, -1).toLowerCase();
|
|
5
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* 检查值是否为字符串
|
|
13
|
+
* @param unknown - 未知类型的值
|
|
14
|
+
* @returns 如果值为字符串则返回 true,否则返回 false
|
|
15
|
+
*/
|
|
6
16
|
function isString(unknown) {
|
|
7
|
-
|
|
17
|
+
return typeof unknown === "string";
|
|
8
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* 检查值是否为布尔值
|
|
21
|
+
* @param unknown - 未知类型的值
|
|
22
|
+
* @returns 如果值为布尔值则返回 true,否则返回 false
|
|
23
|
+
*/
|
|
9
24
|
function isBoolean(unknown) {
|
|
10
|
-
|
|
25
|
+
return typeof unknown === "boolean";
|
|
11
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* 检查值是否为符号
|
|
29
|
+
* @param unknown - 未知类型的值
|
|
30
|
+
* @returns 如果值为符号则返回 true,否则返回 false
|
|
31
|
+
*/
|
|
12
32
|
function isSymbol(unknown) {
|
|
13
|
-
|
|
33
|
+
return typeof unknown === "symbol";
|
|
14
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* 检查值是否为大整数
|
|
37
|
+
* @param unknown - 未知类型的值
|
|
38
|
+
* @returns 如果值为大整数则返回 true,否则返回 false
|
|
39
|
+
*/
|
|
15
40
|
function isBigInt(unknown) {
|
|
16
|
-
|
|
41
|
+
return typeof unknown === "bigint";
|
|
17
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* 检查值是否为数字
|
|
45
|
+
* @param unknown - 未知类型的值
|
|
46
|
+
* @returns 如果值为数字且不是 NaN 则返回 true,否则返回 false
|
|
47
|
+
*/
|
|
18
48
|
function isNumber(unknown) {
|
|
19
|
-
|
|
49
|
+
return typeof unknown === "number" && !Number.isNaN(unknown);
|
|
20
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* 检查值是否为 undefined
|
|
53
|
+
* @param unknown - 未知类型的值
|
|
54
|
+
* @returns 如果值为 undefined 则返回 true,否则返回 false
|
|
55
|
+
*/
|
|
21
56
|
function isUndefined(unknown) {
|
|
22
|
-
|
|
57
|
+
return typeof unknown === "undefined";
|
|
23
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* 检查值是否为 void
|
|
61
|
+
* @param unknown - 未知类型的值
|
|
62
|
+
* @returns 如果值为 undefined 则返回 true,否则返回 false
|
|
63
|
+
*/
|
|
24
64
|
function isVoid(unknown) {
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
|
|
65
|
+
return isUndefined(unknown);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* 永不执行,用于 switch-case/if-else 类型断言
|
|
69
|
+
* @param unknown - 永远不会执行的值
|
|
70
|
+
*/
|
|
71
|
+
function isNever(_unknown) {}
|
|
72
|
+
/**
|
|
73
|
+
* 检查值是否为 null
|
|
74
|
+
* @param unknown - 未知类型的值
|
|
75
|
+
* @returns 如果值为 null 则返回 true,否则返回 false
|
|
76
|
+
*/
|
|
29
77
|
function isNull(unknown) {
|
|
30
|
-
|
|
78
|
+
return unknown === null;
|
|
31
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* 检查值是否为 nullish(null 或 undefined 或 void)
|
|
82
|
+
* @param unknown - 未知类型的值
|
|
83
|
+
* @returns 如果值为 null 或 undefined 或 void 则返回 true,否则返回 false
|
|
84
|
+
*/
|
|
32
85
|
function isNullish(unknown) {
|
|
33
|
-
|
|
86
|
+
return isNull(unknown) || isUndefined(unknown) || isVoid(unknown);
|
|
34
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* 检查值是否为原始类型(null 或 非对象)
|
|
90
|
+
* @param unknown - 未知类型的值
|
|
91
|
+
* @returns 如果值为原始类型则返回 true,否则返回 false
|
|
92
|
+
*/
|
|
35
93
|
function isPrimitive(unknown) {
|
|
36
|
-
|
|
94
|
+
return isNull(unknown) || !(typeof unknown === "object" || typeof unknown === "function");
|
|
37
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* 检查值是否为对象,但要注意,此时的对象类型是包含了数组和函数
|
|
98
|
+
* @param unknown - 未知类型的值
|
|
99
|
+
* @returns 如果值为对象则返回 true,否则返回 false
|
|
100
|
+
*/
|
|
38
101
|
function isObject(unknown) {
|
|
39
|
-
|
|
102
|
+
return typeIs(unknown) === "object";
|
|
40
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* 检查值是否为数组
|
|
106
|
+
* @param unknown - 未知类型的值
|
|
107
|
+
* @returns 如果值为数组则返回 true,否则返回 false
|
|
108
|
+
*/
|
|
41
109
|
function isArray(unknown) {
|
|
42
|
-
|
|
110
|
+
return Array.isArray(unknown);
|
|
43
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* 检查值是否为函数
|
|
114
|
+
* @param unknown - 未知类型的值
|
|
115
|
+
* @returns 如果值为函数则返回 true,否则返回 false
|
|
116
|
+
*/
|
|
44
117
|
function isFunction(unknown) {
|
|
45
|
-
|
|
46
|
-
}
|
|
118
|
+
return typeof unknown === "function";
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* 检查值是否为异步函数
|
|
122
|
+
* @param unknown - 需要检查的值
|
|
123
|
+
* @returns 如果值为异步函数则返回 true,否则返回 false
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* async function example() {}
|
|
127
|
+
*
|
|
128
|
+
* isAsyncFunction(example); // true
|
|
129
|
+
* isAsyncFunction(() => {}); // false
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
47
132
|
function isAsyncFunction(unknown) {
|
|
48
|
-
|
|
133
|
+
return isFunction(unknown) && unknown.constructor.name === "AsyncFunction";
|
|
49
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* 检查值是否为 Error 类型
|
|
137
|
+
* @param unknown - 未知类型的值
|
|
138
|
+
* @returns 如果值为 Error 类型则返回 true,否则返回 false
|
|
139
|
+
*/
|
|
50
140
|
function isError(unknown) {
|
|
51
|
-
|
|
141
|
+
return unknown instanceof Error;
|
|
52
142
|
}
|
|
143
|
+
/**
|
|
144
|
+
* 检查值是否为 Promise 类型
|
|
145
|
+
* @param unknown - 未知类型的值
|
|
146
|
+
* @returns 如果值为 Promise 类型则返回 true,否则返回 false
|
|
147
|
+
*/
|
|
53
148
|
function isPromise(unknown) {
|
|
54
|
-
|
|
149
|
+
return typeIs(unknown) === "promise";
|
|
55
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* 检查值是否为 Date 类型
|
|
153
|
+
* @param unknown - 未知类型的值
|
|
154
|
+
* @returns 如果值为 Date 类型则返回 true,否则返回 false
|
|
155
|
+
*/
|
|
56
156
|
function isDate(unknown) {
|
|
57
|
-
|
|
157
|
+
return unknown instanceof Date;
|
|
58
158
|
}
|
|
159
|
+
//#endregion
|
|
59
160
|
exports.isArray = isArray;
|
|
60
161
|
exports.isAsyncFunction = isAsyncFunction;
|
|
61
162
|
exports.isBigInt = isBigInt;
|
|
@@ -75,4 +176,5 @@ exports.isSymbol = isSymbol;
|
|
|
75
176
|
exports.isUndefined = isUndefined;
|
|
76
177
|
exports.isVoid = isVoid;
|
|
77
178
|
exports.typeIs = typeIs;
|
|
78
|
-
|
|
179
|
+
|
|
180
|
+
//# sourceMappingURL=type.cjs.map
|
package/dist/type.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.cjs","sources":["../src/type.ts"],"sourcesContent":["import type { AnyArray, AnyAsyncFunction, AnyFunction, AnyObject } from './types';\n\n/**\n * 获取未知类型的类型名称\n * @param unknown - 未知类型的值\n * @returns 类型名称字符串\n */\nexport function typeIs(\n unknown: unknown,\n):\n | 'string'\n | 'number'\n | 'boolean'\n | 'object'\n | 'array'\n | 'function'\n | 'null'\n | 'undefined'\n | 'symbol'\n | 'bigint'\n | 'error'\n | 'promise'\n | string {\n return Object.prototype.toString.call(unknown).slice(8, -1).toLowerCase();\n}\n\n/**\n * 检查值是否为字符串\n * @param unknown - 未知类型的值\n * @returns 如果值为字符串则返回 true,否则返回 false\n */\nexport function isString(unknown: unknown): unknown is string {\n return typeof unknown === 'string';\n}\n\n/**\n * 检查值是否为布尔值\n * @param unknown - 未知类型的值\n * @returns 如果值为布尔值则返回 true,否则返回 false\n */\nexport function isBoolean(unknown: unknown): unknown is boolean {\n return typeof unknown === 'boolean';\n}\n\n/**\n * 检查值是否为符号\n * @param unknown - 未知类型的值\n * @returns 如果值为符号则返回 true,否则返回 false\n */\nexport function isSymbol(unknown: unknown): unknown is symbol {\n return typeof unknown === 'symbol';\n}\n\n/**\n * 检查值是否为大整数\n * @param unknown - 未知类型的值\n * @returns 如果值为大整数则返回 true,否则返回 false\n */\nexport function isBigInt(unknown: unknown): unknown is bigint {\n return typeof unknown === 'bigint';\n}\n\n/**\n * 检查值是否为数字\n * @param unknown - 未知类型的值\n * @returns 如果值为数字且不是 NaN 则返回 true,否则返回 false\n */\nexport function isNumber(unknown: unknown): unknown is number {\n return typeof unknown === 'number' && !Number.isNaN(unknown);\n}\n\n/**\n * 检查值是否为 undefined\n * @param unknown - 未知类型的值\n * @returns 如果值为 undefined 则返回 true,否则返回 false\n */\nexport function isUndefined(unknown: unknown): unknown is undefined {\n return typeof unknown === 'undefined';\n}\n\n/**\n * 检查值是否为 void\n * @param unknown - 未知类型的值\n * @returns 如果值为 undefined 则返回 true,否则返回 false\n */\n// biome-ignore lint/suspicious/noConfusingVoidType:
|
|
1
|
+
{"version":3,"file":"type.cjs","names":[],"sources":["../src/type.ts"],"sourcesContent":["import type { AnyArray, AnyAsyncFunction, AnyFunction, AnyObject } from './types';\n\n/**\n * 获取未知类型的类型名称\n * @param unknown - 未知类型的值\n * @returns 类型名称字符串\n */\nexport function typeIs(\n unknown: unknown,\n):\n | 'string'\n | 'number'\n | 'boolean'\n | 'object'\n | 'array'\n | 'function'\n | 'null'\n | 'undefined'\n | 'symbol'\n | 'bigint'\n | 'error'\n | 'promise'\n | string {\n return Object.prototype.toString.call(unknown).slice(8, -1).toLowerCase();\n}\n\n/**\n * 检查值是否为字符串\n * @param unknown - 未知类型的值\n * @returns 如果值为字符串则返回 true,否则返回 false\n */\nexport function isString(unknown: unknown): unknown is string {\n return typeof unknown === 'string';\n}\n\n/**\n * 检查值是否为布尔值\n * @param unknown - 未知类型的值\n * @returns 如果值为布尔值则返回 true,否则返回 false\n */\nexport function isBoolean(unknown: unknown): unknown is boolean {\n return typeof unknown === 'boolean';\n}\n\n/**\n * 检查值是否为符号\n * @param unknown - 未知类型的值\n * @returns 如果值为符号则返回 true,否则返回 false\n */\nexport function isSymbol(unknown: unknown): unknown is symbol {\n return typeof unknown === 'symbol';\n}\n\n/**\n * 检查值是否为大整数\n * @param unknown - 未知类型的值\n * @returns 如果值为大整数则返回 true,否则返回 false\n */\nexport function isBigInt(unknown: unknown): unknown is bigint {\n return typeof unknown === 'bigint';\n}\n\n/**\n * 检查值是否为数字\n * @param unknown - 未知类型的值\n * @returns 如果值为数字且不是 NaN 则返回 true,否则返回 false\n */\nexport function isNumber(unknown: unknown): unknown is number {\n return typeof unknown === 'number' && !Number.isNaN(unknown);\n}\n\n/**\n * 检查值是否为 undefined\n * @param unknown - 未知类型的值\n * @returns 如果值为 undefined 则返回 true,否则返回 false\n */\nexport function isUndefined(unknown: unknown): unknown is undefined {\n return typeof unknown === 'undefined';\n}\n\n/**\n * 检查值是否为 void\n * @param unknown - 未知类型的值\n * @returns 如果值为 undefined 则返回 true,否则返回 false\n */\n// biome-ignore lint/suspicious/noConfusingVoidType: 必须使用 void 类型断言\nexport function isVoid(unknown: unknown): unknown is void {\n return isUndefined(unknown);\n}\n\n/**\n * 永不执行,用于 switch-case/if-else 类型断言\n * @param unknown - 永远不会执行的值\n */\nexport function isNever(_unknown: never) {\n //\n}\n\n/**\n * 检查值是否为 null\n * @param unknown - 未知类型的值\n * @returns 如果值为 null 则返回 true,否则返回 false\n */\nexport function isNull(unknown: unknown): unknown is null {\n return unknown === null;\n}\n\n/**\n * 检查值是否为 nullish(null 或 undefined 或 void)\n * @param unknown - 未知类型的值\n * @returns 如果值为 null 或 undefined 或 void 则返回 true,否则返回 false\n */\nexport function isNullish(unknown: unknown): unknown is null | undefined | undefined {\n return isNull(unknown) || isUndefined(unknown) || isVoid(unknown);\n}\n\n/**\n * 检查值是否为原始类型(null 或 非对象)\n * @param unknown - 未知类型的值\n * @returns 如果值为原始类型则返回 true,否则返回 false\n */\nexport function isPrimitive(\n unknown: unknown,\n): unknown is string | number | boolean | symbol | bigint | null | undefined {\n return isNull(unknown) || !(typeof unknown === 'object' || typeof unknown === 'function');\n}\n\n/**\n * 检查值是否为对象,但要注意,此时的对象类型是包含了数组和函数\n * @param unknown - 未知类型的值\n * @returns 如果值为对象则返回 true,否则返回 false\n */\nexport function isObject(unknown: unknown): unknown is AnyObject {\n return typeIs(unknown) === 'object';\n}\n\n/**\n * 检查值是否为数组\n * @param unknown - 未知类型的值\n * @returns 如果值为数组则返回 true,否则返回 false\n */\nexport function isArray(unknown: unknown): unknown is AnyArray {\n return Array.isArray(unknown);\n}\n\n/**\n * 检查值是否为函数\n * @param unknown - 未知类型的值\n * @returns 如果值为函数则返回 true,否则返回 false\n */\nexport function isFunction(unknown: unknown): unknown is AnyFunction {\n return typeof unknown === 'function';\n}\n\n/**\n * 检查值是否为异步函数\n * @param unknown - 需要检查的值\n * @returns 如果值为异步函数则返回 true,否则返回 false\n * @example\n * ```typescript\n * async function example() {}\n *\n * isAsyncFunction(example); // true\n * isAsyncFunction(() => {}); // false\n * ```\n */\nexport function isAsyncFunction(unknown: unknown): unknown is AnyAsyncFunction {\n return isFunction(unknown) && unknown.constructor.name === 'AsyncFunction';\n}\n\n/**\n * 检查值是否为 Error 类型\n * @param unknown - 未知类型的值\n * @returns 如果值为 Error 类型则返回 true,否则返回 false\n */\nexport function isError(unknown: unknown): unknown is Error {\n return unknown instanceof Error;\n}\n\n/**\n * 检查值是否为 Promise 类型\n * @param unknown - 未知类型的值\n * @returns 如果值为 Promise 类型则返回 true,否则返回 false\n */\nexport function isPromise<T>(unknown: unknown): unknown is Promise<T> {\n return typeIs(unknown) === 'promise';\n}\n\n/**\n * 检查值是否为 Date 类型\n * @param unknown - 未知类型的值\n * @returns 如果值为 Date 类型则返回 true,否则返回 false\n */\nexport function isDate(unknown: unknown): unknown is Date {\n return unknown instanceof Date;\n}\n"],"mappings":";;;;;;;AAOA,SAAgB,OACd,SAcS;CACT,OAAO,OAAO,UAAU,SAAS,KAAK,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,aAAa;;;;;;;AAQ3E,SAAgB,SAAS,SAAqC;CAC5D,OAAO,OAAO,YAAY;;;;;;;AAQ5B,SAAgB,UAAU,SAAsC;CAC9D,OAAO,OAAO,YAAY;;;;;;;AAQ5B,SAAgB,SAAS,SAAqC;CAC5D,OAAO,OAAO,YAAY;;;;;;;AAQ5B,SAAgB,SAAS,SAAqC;CAC5D,OAAO,OAAO,YAAY;;;;;;;AAQ5B,SAAgB,SAAS,SAAqC;CAC5D,OAAO,OAAO,YAAY,YAAY,CAAC,OAAO,MAAM,QAAQ;;;;;;;AAQ9D,SAAgB,YAAY,SAAwC;CAClE,OAAO,OAAO,YAAY;;;;;;;AAS5B,SAAgB,OAAO,SAAmC;CACxD,OAAO,YAAY,QAAQ;;;;;;AAO7B,SAAgB,QAAQ,UAAiB;;;;;;AASzC,SAAgB,OAAO,SAAmC;CACxD,OAAO,YAAY;;;;;;;AAQrB,SAAgB,UAAU,SAA2D;CACnF,OAAO,OAAO,QAAQ,IAAI,YAAY,QAAQ,IAAI,OAAO,QAAQ;;;;;;;AAQnE,SAAgB,YACd,SAC2E;CAC3E,OAAO,OAAO,QAAQ,IAAI,EAAE,OAAO,YAAY,YAAY,OAAO,YAAY;;;;;;;AAQhF,SAAgB,SAAS,SAAwC;CAC/D,OAAO,OAAO,QAAQ,KAAK;;;;;;;AAQ7B,SAAgB,QAAQ,SAAuC;CAC7D,OAAO,MAAM,QAAQ,QAAQ;;;;;;;AAQ/B,SAAgB,WAAW,SAA0C;CACnE,OAAO,OAAO,YAAY;;;;;;;;;;;;;;AAe5B,SAAgB,gBAAgB,SAA+C;CAC7E,OAAO,WAAW,QAAQ,IAAI,QAAQ,YAAY,SAAS;;;;;;;AAQ7D,SAAgB,QAAQ,SAAoC;CAC1D,OAAO,mBAAmB;;;;;;;AAQ5B,SAAgB,UAAa,SAAyC;CACpE,OAAO,OAAO,QAAQ,KAAK;;;;;;;AAQ7B,SAAgB,OAAO,SAAmC;CACxD,OAAO,mBAAmB"}
|
package/dist/type.d.ts
CHANGED
|
@@ -51,7 +51,7 @@ export declare function isVoid(unknown: unknown): unknown is void;
|
|
|
51
51
|
* 永不执行,用于 switch-case/if-else 类型断言
|
|
52
52
|
* @param unknown - 永远不会执行的值
|
|
53
53
|
*/
|
|
54
|
-
export declare function isNever(
|
|
54
|
+
export declare function isNever(_unknown: never): void;
|
|
55
55
|
/**
|
|
56
56
|
* 检查值是否为 null
|
|
57
57
|
* @param unknown - 未知类型的值
|
|
@@ -63,7 +63,7 @@ export declare function isNull(unknown: unknown): unknown is null;
|
|
|
63
63
|
* @param unknown - 未知类型的值
|
|
64
64
|
* @returns 如果值为 null 或 undefined 或 void 则返回 true,否则返回 false
|
|
65
65
|
*/
|
|
66
|
-
export declare function isNullish(unknown: unknown): unknown is null | undefined |
|
|
66
|
+
export declare function isNullish(unknown: unknown): unknown is null | undefined | undefined;
|
|
67
67
|
/**
|
|
68
68
|
* 检查值是否为原始类型(null 或 非对象)
|
|
69
69
|
* @param unknown - 未知类型的值
|
package/dist/type.mjs
CHANGED
|
@@ -1,78 +1,161 @@
|
|
|
1
|
+
//#region src/type.ts
|
|
2
|
+
/**
|
|
3
|
+
* 获取未知类型的类型名称
|
|
4
|
+
* @param unknown - 未知类型的值
|
|
5
|
+
* @returns 类型名称字符串
|
|
6
|
+
*/
|
|
1
7
|
function typeIs(unknown) {
|
|
2
|
-
|
|
8
|
+
return Object.prototype.toString.call(unknown).slice(8, -1).toLowerCase();
|
|
3
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* 检查值是否为字符串
|
|
12
|
+
* @param unknown - 未知类型的值
|
|
13
|
+
* @returns 如果值为字符串则返回 true,否则返回 false
|
|
14
|
+
*/
|
|
4
15
|
function isString(unknown) {
|
|
5
|
-
|
|
16
|
+
return typeof unknown === "string";
|
|
6
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* 检查值是否为布尔值
|
|
20
|
+
* @param unknown - 未知类型的值
|
|
21
|
+
* @returns 如果值为布尔值则返回 true,否则返回 false
|
|
22
|
+
*/
|
|
7
23
|
function isBoolean(unknown) {
|
|
8
|
-
|
|
24
|
+
return typeof unknown === "boolean";
|
|
9
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* 检查值是否为符号
|
|
28
|
+
* @param unknown - 未知类型的值
|
|
29
|
+
* @returns 如果值为符号则返回 true,否则返回 false
|
|
30
|
+
*/
|
|
10
31
|
function isSymbol(unknown) {
|
|
11
|
-
|
|
32
|
+
return typeof unknown === "symbol";
|
|
12
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* 检查值是否为大整数
|
|
36
|
+
* @param unknown - 未知类型的值
|
|
37
|
+
* @returns 如果值为大整数则返回 true,否则返回 false
|
|
38
|
+
*/
|
|
13
39
|
function isBigInt(unknown) {
|
|
14
|
-
|
|
40
|
+
return typeof unknown === "bigint";
|
|
15
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* 检查值是否为数字
|
|
44
|
+
* @param unknown - 未知类型的值
|
|
45
|
+
* @returns 如果值为数字且不是 NaN 则返回 true,否则返回 false
|
|
46
|
+
*/
|
|
16
47
|
function isNumber(unknown) {
|
|
17
|
-
|
|
48
|
+
return typeof unknown === "number" && !Number.isNaN(unknown);
|
|
18
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* 检查值是否为 undefined
|
|
52
|
+
* @param unknown - 未知类型的值
|
|
53
|
+
* @returns 如果值为 undefined 则返回 true,否则返回 false
|
|
54
|
+
*/
|
|
19
55
|
function isUndefined(unknown) {
|
|
20
|
-
|
|
56
|
+
return typeof unknown === "undefined";
|
|
21
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* 检查值是否为 void
|
|
60
|
+
* @param unknown - 未知类型的值
|
|
61
|
+
* @returns 如果值为 undefined 则返回 true,否则返回 false
|
|
62
|
+
*/
|
|
22
63
|
function isVoid(unknown) {
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
64
|
+
return isUndefined(unknown);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 永不执行,用于 switch-case/if-else 类型断言
|
|
68
|
+
* @param unknown - 永远不会执行的值
|
|
69
|
+
*/
|
|
70
|
+
function isNever(_unknown) {}
|
|
71
|
+
/**
|
|
72
|
+
* 检查值是否为 null
|
|
73
|
+
* @param unknown - 未知类型的值
|
|
74
|
+
* @returns 如果值为 null 则返回 true,否则返回 false
|
|
75
|
+
*/
|
|
27
76
|
function isNull(unknown) {
|
|
28
|
-
|
|
77
|
+
return unknown === null;
|
|
29
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* 检查值是否为 nullish(null 或 undefined 或 void)
|
|
81
|
+
* @param unknown - 未知类型的值
|
|
82
|
+
* @returns 如果值为 null 或 undefined 或 void 则返回 true,否则返回 false
|
|
83
|
+
*/
|
|
30
84
|
function isNullish(unknown) {
|
|
31
|
-
|
|
85
|
+
return isNull(unknown) || isUndefined(unknown) || isVoid(unknown);
|
|
32
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* 检查值是否为原始类型(null 或 非对象)
|
|
89
|
+
* @param unknown - 未知类型的值
|
|
90
|
+
* @returns 如果值为原始类型则返回 true,否则返回 false
|
|
91
|
+
*/
|
|
33
92
|
function isPrimitive(unknown) {
|
|
34
|
-
|
|
93
|
+
return isNull(unknown) || !(typeof unknown === "object" || typeof unknown === "function");
|
|
35
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* 检查值是否为对象,但要注意,此时的对象类型是包含了数组和函数
|
|
97
|
+
* @param unknown - 未知类型的值
|
|
98
|
+
* @returns 如果值为对象则返回 true,否则返回 false
|
|
99
|
+
*/
|
|
36
100
|
function isObject(unknown) {
|
|
37
|
-
|
|
101
|
+
return typeIs(unknown) === "object";
|
|
38
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* 检查值是否为数组
|
|
105
|
+
* @param unknown - 未知类型的值
|
|
106
|
+
* @returns 如果值为数组则返回 true,否则返回 false
|
|
107
|
+
*/
|
|
39
108
|
function isArray(unknown) {
|
|
40
|
-
|
|
109
|
+
return Array.isArray(unknown);
|
|
41
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* 检查值是否为函数
|
|
113
|
+
* @param unknown - 未知类型的值
|
|
114
|
+
* @returns 如果值为函数则返回 true,否则返回 false
|
|
115
|
+
*/
|
|
42
116
|
function isFunction(unknown) {
|
|
43
|
-
|
|
44
|
-
}
|
|
117
|
+
return typeof unknown === "function";
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* 检查值是否为异步函数
|
|
121
|
+
* @param unknown - 需要检查的值
|
|
122
|
+
* @returns 如果值为异步函数则返回 true,否则返回 false
|
|
123
|
+
* @example
|
|
124
|
+
* ```typescript
|
|
125
|
+
* async function example() {}
|
|
126
|
+
*
|
|
127
|
+
* isAsyncFunction(example); // true
|
|
128
|
+
* isAsyncFunction(() => {}); // false
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
45
131
|
function isAsyncFunction(unknown) {
|
|
46
|
-
|
|
132
|
+
return isFunction(unknown) && unknown.constructor.name === "AsyncFunction";
|
|
47
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* 检查值是否为 Error 类型
|
|
136
|
+
* @param unknown - 未知类型的值
|
|
137
|
+
* @returns 如果值为 Error 类型则返回 true,否则返回 false
|
|
138
|
+
*/
|
|
48
139
|
function isError(unknown) {
|
|
49
|
-
|
|
140
|
+
return unknown instanceof Error;
|
|
50
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* 检查值是否为 Promise 类型
|
|
144
|
+
* @param unknown - 未知类型的值
|
|
145
|
+
* @returns 如果值为 Promise 类型则返回 true,否则返回 false
|
|
146
|
+
*/
|
|
51
147
|
function isPromise(unknown) {
|
|
52
|
-
|
|
148
|
+
return typeIs(unknown) === "promise";
|
|
53
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* 检查值是否为 Date 类型
|
|
152
|
+
* @param unknown - 未知类型的值
|
|
153
|
+
* @returns 如果值为 Date 类型则返回 true,否则返回 false
|
|
154
|
+
*/
|
|
54
155
|
function isDate(unknown) {
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
isBoolean,
|
|
62
|
-
isDate,
|
|
63
|
-
isError,
|
|
64
|
-
isFunction,
|
|
65
|
-
isNever,
|
|
66
|
-
isNull,
|
|
67
|
-
isNullish,
|
|
68
|
-
isNumber,
|
|
69
|
-
isObject,
|
|
70
|
-
isPrimitive,
|
|
71
|
-
isPromise,
|
|
72
|
-
isString,
|
|
73
|
-
isSymbol,
|
|
74
|
-
isUndefined,
|
|
75
|
-
isVoid,
|
|
76
|
-
typeIs
|
|
77
|
-
};
|
|
78
|
-
//# sourceMappingURL=type.mjs.map
|
|
156
|
+
return unknown instanceof Date;
|
|
157
|
+
}
|
|
158
|
+
//#endregion
|
|
159
|
+
export { isArray, isAsyncFunction, isBigInt, isBoolean, isDate, isError, isFunction, isNever, isNull, isNullish, isNumber, isObject, isPrimitive, isPromise, isString, isSymbol, isUndefined, isVoid, typeIs };
|
|
160
|
+
|
|
161
|
+
//# sourceMappingURL=type.mjs.map
|
package/dist/type.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.mjs","sources":["../src/type.ts"],"sourcesContent":["import type { AnyArray, AnyAsyncFunction, AnyFunction, AnyObject } from './types';\n\n/**\n * 获取未知类型的类型名称\n * @param unknown - 未知类型的值\n * @returns 类型名称字符串\n */\nexport function typeIs(\n unknown: unknown,\n):\n | 'string'\n | 'number'\n | 'boolean'\n | 'object'\n | 'array'\n | 'function'\n | 'null'\n | 'undefined'\n | 'symbol'\n | 'bigint'\n | 'error'\n | 'promise'\n | string {\n return Object.prototype.toString.call(unknown).slice(8, -1).toLowerCase();\n}\n\n/**\n * 检查值是否为字符串\n * @param unknown - 未知类型的值\n * @returns 如果值为字符串则返回 true,否则返回 false\n */\nexport function isString(unknown: unknown): unknown is string {\n return typeof unknown === 'string';\n}\n\n/**\n * 检查值是否为布尔值\n * @param unknown - 未知类型的值\n * @returns 如果值为布尔值则返回 true,否则返回 false\n */\nexport function isBoolean(unknown: unknown): unknown is boolean {\n return typeof unknown === 'boolean';\n}\n\n/**\n * 检查值是否为符号\n * @param unknown - 未知类型的值\n * @returns 如果值为符号则返回 true,否则返回 false\n */\nexport function isSymbol(unknown: unknown): unknown is symbol {\n return typeof unknown === 'symbol';\n}\n\n/**\n * 检查值是否为大整数\n * @param unknown - 未知类型的值\n * @returns 如果值为大整数则返回 true,否则返回 false\n */\nexport function isBigInt(unknown: unknown): unknown is bigint {\n return typeof unknown === 'bigint';\n}\n\n/**\n * 检查值是否为数字\n * @param unknown - 未知类型的值\n * @returns 如果值为数字且不是 NaN 则返回 true,否则返回 false\n */\nexport function isNumber(unknown: unknown): unknown is number {\n return typeof unknown === 'number' && !Number.isNaN(unknown);\n}\n\n/**\n * 检查值是否为 undefined\n * @param unknown - 未知类型的值\n * @returns 如果值为 undefined 则返回 true,否则返回 false\n */\nexport function isUndefined(unknown: unknown): unknown is undefined {\n return typeof unknown === 'undefined';\n}\n\n/**\n * 检查值是否为 void\n * @param unknown - 未知类型的值\n * @returns 如果值为 undefined 则返回 true,否则返回 false\n */\n// biome-ignore lint/suspicious/noConfusingVoidType:
|
|
1
|
+
{"version":3,"file":"type.mjs","names":[],"sources":["../src/type.ts"],"sourcesContent":["import type { AnyArray, AnyAsyncFunction, AnyFunction, AnyObject } from './types';\n\n/**\n * 获取未知类型的类型名称\n * @param unknown - 未知类型的值\n * @returns 类型名称字符串\n */\nexport function typeIs(\n unknown: unknown,\n):\n | 'string'\n | 'number'\n | 'boolean'\n | 'object'\n | 'array'\n | 'function'\n | 'null'\n | 'undefined'\n | 'symbol'\n | 'bigint'\n | 'error'\n | 'promise'\n | string {\n return Object.prototype.toString.call(unknown).slice(8, -1).toLowerCase();\n}\n\n/**\n * 检查值是否为字符串\n * @param unknown - 未知类型的值\n * @returns 如果值为字符串则返回 true,否则返回 false\n */\nexport function isString(unknown: unknown): unknown is string {\n return typeof unknown === 'string';\n}\n\n/**\n * 检查值是否为布尔值\n * @param unknown - 未知类型的值\n * @returns 如果值为布尔值则返回 true,否则返回 false\n */\nexport function isBoolean(unknown: unknown): unknown is boolean {\n return typeof unknown === 'boolean';\n}\n\n/**\n * 检查值是否为符号\n * @param unknown - 未知类型的值\n * @returns 如果值为符号则返回 true,否则返回 false\n */\nexport function isSymbol(unknown: unknown): unknown is symbol {\n return typeof unknown === 'symbol';\n}\n\n/**\n * 检查值是否为大整数\n * @param unknown - 未知类型的值\n * @returns 如果值为大整数则返回 true,否则返回 false\n */\nexport function isBigInt(unknown: unknown): unknown is bigint {\n return typeof unknown === 'bigint';\n}\n\n/**\n * 检查值是否为数字\n * @param unknown - 未知类型的值\n * @returns 如果值为数字且不是 NaN 则返回 true,否则返回 false\n */\nexport function isNumber(unknown: unknown): unknown is number {\n return typeof unknown === 'number' && !Number.isNaN(unknown);\n}\n\n/**\n * 检查值是否为 undefined\n * @param unknown - 未知类型的值\n * @returns 如果值为 undefined 则返回 true,否则返回 false\n */\nexport function isUndefined(unknown: unknown): unknown is undefined {\n return typeof unknown === 'undefined';\n}\n\n/**\n * 检查值是否为 void\n * @param unknown - 未知类型的值\n * @returns 如果值为 undefined 则返回 true,否则返回 false\n */\n// biome-ignore lint/suspicious/noConfusingVoidType: 必须使用 void 类型断言\nexport function isVoid(unknown: unknown): unknown is void {\n return isUndefined(unknown);\n}\n\n/**\n * 永不执行,用于 switch-case/if-else 类型断言\n * @param unknown - 永远不会执行的值\n */\nexport function isNever(_unknown: never) {\n //\n}\n\n/**\n * 检查值是否为 null\n * @param unknown - 未知类型的值\n * @returns 如果值为 null 则返回 true,否则返回 false\n */\nexport function isNull(unknown: unknown): unknown is null {\n return unknown === null;\n}\n\n/**\n * 检查值是否为 nullish(null 或 undefined 或 void)\n * @param unknown - 未知类型的值\n * @returns 如果值为 null 或 undefined 或 void 则返回 true,否则返回 false\n */\nexport function isNullish(unknown: unknown): unknown is null | undefined | undefined {\n return isNull(unknown) || isUndefined(unknown) || isVoid(unknown);\n}\n\n/**\n * 检查值是否为原始类型(null 或 非对象)\n * @param unknown - 未知类型的值\n * @returns 如果值为原始类型则返回 true,否则返回 false\n */\nexport function isPrimitive(\n unknown: unknown,\n): unknown is string | number | boolean | symbol | bigint | null | undefined {\n return isNull(unknown) || !(typeof unknown === 'object' || typeof unknown === 'function');\n}\n\n/**\n * 检查值是否为对象,但要注意,此时的对象类型是包含了数组和函数\n * @param unknown - 未知类型的值\n * @returns 如果值为对象则返回 true,否则返回 false\n */\nexport function isObject(unknown: unknown): unknown is AnyObject {\n return typeIs(unknown) === 'object';\n}\n\n/**\n * 检查值是否为数组\n * @param unknown - 未知类型的值\n * @returns 如果值为数组则返回 true,否则返回 false\n */\nexport function isArray(unknown: unknown): unknown is AnyArray {\n return Array.isArray(unknown);\n}\n\n/**\n * 检查值是否为函数\n * @param unknown - 未知类型的值\n * @returns 如果值为函数则返回 true,否则返回 false\n */\nexport function isFunction(unknown: unknown): unknown is AnyFunction {\n return typeof unknown === 'function';\n}\n\n/**\n * 检查值是否为异步函数\n * @param unknown - 需要检查的值\n * @returns 如果值为异步函数则返回 true,否则返回 false\n * @example\n * ```typescript\n * async function example() {}\n *\n * isAsyncFunction(example); // true\n * isAsyncFunction(() => {}); // false\n * ```\n */\nexport function isAsyncFunction(unknown: unknown): unknown is AnyAsyncFunction {\n return isFunction(unknown) && unknown.constructor.name === 'AsyncFunction';\n}\n\n/**\n * 检查值是否为 Error 类型\n * @param unknown - 未知类型的值\n * @returns 如果值为 Error 类型则返回 true,否则返回 false\n */\nexport function isError(unknown: unknown): unknown is Error {\n return unknown instanceof Error;\n}\n\n/**\n * 检查值是否为 Promise 类型\n * @param unknown - 未知类型的值\n * @returns 如果值为 Promise 类型则返回 true,否则返回 false\n */\nexport function isPromise<T>(unknown: unknown): unknown is Promise<T> {\n return typeIs(unknown) === 'promise';\n}\n\n/**\n * 检查值是否为 Date 类型\n * @param unknown - 未知类型的值\n * @returns 如果值为 Date 类型则返回 true,否则返回 false\n */\nexport function isDate(unknown: unknown): unknown is Date {\n return unknown instanceof Date;\n}\n"],"mappings":";;;;;;AAOA,SAAgB,OACd,SAcS;CACT,OAAO,OAAO,UAAU,SAAS,KAAK,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,aAAa;;;;;;;AAQ3E,SAAgB,SAAS,SAAqC;CAC5D,OAAO,OAAO,YAAY;;;;;;;AAQ5B,SAAgB,UAAU,SAAsC;CAC9D,OAAO,OAAO,YAAY;;;;;;;AAQ5B,SAAgB,SAAS,SAAqC;CAC5D,OAAO,OAAO,YAAY;;;;;;;AAQ5B,SAAgB,SAAS,SAAqC;CAC5D,OAAO,OAAO,YAAY;;;;;;;AAQ5B,SAAgB,SAAS,SAAqC;CAC5D,OAAO,OAAO,YAAY,YAAY,CAAC,OAAO,MAAM,QAAQ;;;;;;;AAQ9D,SAAgB,YAAY,SAAwC;CAClE,OAAO,OAAO,YAAY;;;;;;;AAS5B,SAAgB,OAAO,SAAmC;CACxD,OAAO,YAAY,QAAQ;;;;;;AAO7B,SAAgB,QAAQ,UAAiB;;;;;;AASzC,SAAgB,OAAO,SAAmC;CACxD,OAAO,YAAY;;;;;;;AAQrB,SAAgB,UAAU,SAA2D;CACnF,OAAO,OAAO,QAAQ,IAAI,YAAY,QAAQ,IAAI,OAAO,QAAQ;;;;;;;AAQnE,SAAgB,YACd,SAC2E;CAC3E,OAAO,OAAO,QAAQ,IAAI,EAAE,OAAO,YAAY,YAAY,OAAO,YAAY;;;;;;;AAQhF,SAAgB,SAAS,SAAwC;CAC/D,OAAO,OAAO,QAAQ,KAAK;;;;;;;AAQ7B,SAAgB,QAAQ,SAAuC;CAC7D,OAAO,MAAM,QAAQ,QAAQ;;;;;;;AAQ/B,SAAgB,WAAW,SAA0C;CACnE,OAAO,OAAO,YAAY;;;;;;;;;;;;;;AAe5B,SAAgB,gBAAgB,SAA+C;CAC7E,OAAO,WAAW,QAAQ,IAAI,QAAQ,YAAY,SAAS;;;;;;;AAQ7D,SAAgB,QAAQ,SAAoC;CAC1D,OAAO,mBAAmB;;;;;;;AAQ5B,SAAgB,UAAa,SAAyC;CACpE,OAAO,OAAO,QAAQ,KAAK;;;;;;;AAQ7B,SAAgB,OAAO,SAAmC;CACxD,OAAO,mBAAmB"}
|
package/dist/types.cjs
CHANGED
package/dist/types.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ export type AnyArray = Array<unknown>;
|
|
|
26
26
|
* // string | number | boolean | bigint | symbol | null | undefined | void | never
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
|
-
export type PrimitiveValue = string | number | boolean | bigint | symbol | null | undefined |
|
|
29
|
+
export type PrimitiveValue = string | number | boolean | bigint | symbol | null | undefined | undefined | never;
|
|
30
30
|
/**
|
|
31
31
|
* 引用类型值
|
|
32
32
|
* @description 表示所有非原始类型的值,即除了 PrimitiveValue 之外的所有类型
|
package/dist/types.mjs
CHANGED
package/dist/unique.cjs
CHANGED
|
@@ -1,46 +1,49 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
const require_type = require("./type.cjs");
|
|
3
|
+
const require_string = require("./string2.cjs");
|
|
4
|
+
//#region src/unique.ts
|
|
5
|
+
var lastTimestamp = 0;
|
|
6
|
+
var lastSafePadding = 0;
|
|
7
|
+
/**
|
|
8
|
+
* 生成一个唯一的 BigInt 值。
|
|
9
|
+
*
|
|
10
|
+
* @param randomLength - 可选参数,指定随机部分的长度,默认为 0。
|
|
11
|
+
* 如果大于 0,则会在结果中附加指定长度的随机数。
|
|
12
|
+
* @returns 返回一个唯一的 BigInt 值,包含时间戳、随机部分(如果有)以及递增的填充值。
|
|
13
|
+
*/
|
|
7
14
|
function uniqueBigInt(randomLength = 0) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
const now = Date.now();
|
|
16
|
+
if (now !== lastTimestamp) {
|
|
17
|
+
lastTimestamp = now;
|
|
18
|
+
lastSafePadding = 0;
|
|
19
|
+
}
|
|
20
|
+
let randomPart = "";
|
|
21
|
+
if (randomLength > 0) {
|
|
22
|
+
const randomMin = 10 ** (randomLength - 1);
|
|
23
|
+
const randomMax = 10 ** randomLength - 1;
|
|
24
|
+
randomPart = String(require_string.randomNumber(randomMin, randomMax));
|
|
25
|
+
}
|
|
26
|
+
return BigInt(randomPart + lastSafePadding++ + now);
|
|
20
27
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
return dict[poolIndex];
|
|
28
|
+
var _randomChar = (dict) => {
|
|
29
|
+
return dict[require_string.randomNumber(0, dict.length - 1)];
|
|
24
30
|
};
|
|
25
31
|
function uniqueString(minLength, dict) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
if (insertLength <= 0) return uniqueString2;
|
|
39
|
-
while (insertLength--) {
|
|
40
|
-
uniqueString2 += _randomChar(finalDict);
|
|
41
|
-
}
|
|
42
|
-
return uniqueString2;
|
|
32
|
+
let finalLength = 0;
|
|
33
|
+
let finalDict = require_string.STRING_DICT;
|
|
34
|
+
if (require_type.isString(dict)) {
|
|
35
|
+
finalLength = minLength;
|
|
36
|
+
finalDict = dict;
|
|
37
|
+
} else if (require_type.isNumber(minLength)) finalLength = minLength;
|
|
38
|
+
else if (require_type.isString(minLength)) finalDict = minLength;
|
|
39
|
+
let uniqueString = require_string.numberConvert(uniqueBigInt(), finalDict);
|
|
40
|
+
let insertLength = finalLength - uniqueString.length;
|
|
41
|
+
if (insertLength <= 0) return uniqueString;
|
|
42
|
+
while (insertLength--) uniqueString += _randomChar(finalDict);
|
|
43
|
+
return uniqueString;
|
|
43
44
|
}
|
|
45
|
+
//#endregion
|
|
44
46
|
exports.uniqueBigInt = uniqueBigInt;
|
|
45
47
|
exports.uniqueString = uniqueString;
|
|
46
|
-
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=unique.cjs.map
|