@cloudcome/utils-core 1.1.0 → 1.1.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/CHANGELOG.md +52 -0
- package/LICENSE +21 -0
- package/package.json +279 -1
- package/src/array.ts +312 -0
- package/src/async.ts +379 -0
- package/src/base64.ts +20 -0
- package/src/cache.ts +146 -0
- package/{dist/color/contrast.d.ts → src/color/contrast.ts} +12 -2
- package/src/color/distance.ts +28 -0
- package/src/color/helpers.ts +23 -0
- package/src/color/hex-hsl.ts +11 -0
- package/{dist/color/hex-hsv.d.ts → src/color/hex-hsv.ts} +11 -3
- package/{dist/color/hex-hwb.d.ts → src/color/hex-hwb.ts} +11 -3
- package/src/color/hex-rgb.ts +39 -0
- package/{dist/color/hsl-lighten.d.ts → src/color/hsl-lighten.ts} +7 -2
- package/{dist/color/hsv-brighten.d.ts → src/color/hsv-brighten.ts} +7 -2
- package/{dist/color/luminance.d.ts → src/color/luminance.ts} +9 -2
- package/{dist/color/mix.d.ts → src/color/mix.ts} +10 -2
- package/src/color/rgb-hsl.ts +53 -0
- package/{dist/color/rgb-hsv.d.ts → src/color/rgb-hsv.ts} +30 -3
- package/src/color/rgb-hwb.ts +56 -0
- package/{dist/color/rgb-lab.d.ts → src/color/rgb-lab.ts} +11 -3
- package/src/color/rgb-whiter.ts +22 -0
- package/src/color/rgb-xyz.ts +62 -0
- package/{dist/color/types.d.ts → src/color/types.ts} +12 -30
- package/{dist/color/xyz-lab.d.ts → src/color/xyz-lab.ts} +32 -3
- package/src/crypto/md5.mjs +357 -0
- package/src/crypto/sha1.mjs +300 -0
- package/src/crypto/sha256.mjs +310 -0
- package/src/crypto/sha512.mjs +459 -0
- package/{dist/crypto.d.ts → src/crypto.ts} +20 -4
- package/src/date/const.ts +6 -0
- package/src/date/core.ts +162 -0
- package/src/date/days.ts +51 -0
- package/{dist/date/is.d.ts → src/date/is.ts} +102 -8
- package/src/date/relative.ts +92 -0
- package/src/date/start-end.ts +246 -0
- package/src/date/timezone.ts +220 -0
- package/src/date/weeks.ts +100 -0
- package/src/dts/global.d.ts +27 -0
- package/src/easing.ts +166 -0
- package/src/emitter.ts +117 -0
- package/src/enum.ts +171 -0
- package/{dist/env.d.ts → src/env.ts} +30 -6
- package/{dist/error.d.ts → src/error.ts} +12 -3
- package/src/exception.ts +68 -0
- package/src/fn.ts +197 -0
- package/src/index.ts +1 -0
- package/src/number.ts +236 -0
- package/{dist/object/each.d.ts → src/object/each.ts} +23 -3
- package/src/object/get-set.ts +273 -0
- package/src/object/is.ts +128 -0
- package/src/object/merge.ts +180 -0
- package/{dist/object/process.d.ts → src/object/process.ts} +38 -4
- package/src/path.ts +188 -0
- package/{dist/promise.d.ts → src/promise.ts} +67 -6
- package/{dist/qs.d.ts → src/qs.ts} +60 -3
- package/src/regexp.ts +156 -0
- package/src/string.ts +146 -0
- package/src/time/from.ts +57 -0
- package/src/time/to.ts +106 -0
- package/{dist/timer.mjs → src/timer.ts} +124 -17
- package/{dist/tree.d.ts → src/tree.ts} +225 -41
- package/{dist/type.d.ts → src/type.ts} +96 -20
- package/{dist/types.d.ts → src/types.ts} +33 -12
- package/src/unique.ts +77 -0
- package/src/url.ts +93 -0
- package/src/version.ts +71 -0
- package/test/array.test.ts +332 -0
- package/test/async-real.test.ts +39 -0
- package/test/async.test.ts +375 -0
- package/test/base64.test.ts +32 -0
- package/test/cache.test.ts +83 -0
- package/test/color.test.ts +163 -0
- package/test/crypto.test.ts +34 -0
- package/test/date-tz.test.ts +206 -0
- package/test/date.test.ts +353 -0
- package/test/easing.test.ts +33 -0
- package/test/emitter.test.ts +71 -0
- package/test/enum.test.ts +113 -0
- package/test/env.test.ts +69 -0
- package/test/error.test.ts +58 -0
- package/test/exception.test.ts +43 -0
- package/test/fn.test.ts +263 -0
- package/test/helpers.ts +23 -0
- package/test/index.test.ts +6 -0
- package/test/number.test.ts +213 -0
- package/test/object.test.ts +309 -0
- package/test/path.test.ts +156 -0
- package/test/promise.test.ts +199 -0
- package/test/qs.test.ts +79 -0
- package/test/regexp.test.ts +97 -0
- package/test/string.test.ts +150 -0
- package/test/time.test.ts +214 -0
- package/test/timer.test.ts +114 -0
- package/test/tree.test.ts +348 -0
- package/test/type.test.ts +226 -0
- package/test/unique.test.ts +71 -0
- package/test/url.test.ts +136 -0
- package/test/version.test.ts +52 -0
- package/tsconfig.json +31 -0
- package/vite.config.mts +114 -0
- package/dist/array.cjs +0 -129
- package/dist/array.cjs.map +0 -1
- package/dist/array.d.ts +0 -171
- package/dist/array.mjs +0 -129
- package/dist/array.mjs.map +0 -1
- package/dist/async.cjs +0 -219
- package/dist/async.cjs.map +0 -1
- package/dist/async.d.ts +0 -137
- package/dist/async.mjs +0 -219
- package/dist/async.mjs.map +0 -1
- package/dist/base64.cjs +0 -16
- package/dist/base64.cjs.map +0 -1
- package/dist/base64.d.ts +0 -7
- package/dist/base64.mjs +0 -16
- package/dist/base64.mjs.map +0 -1
- package/dist/cache.cjs +0 -79
- package/dist/cache.cjs.map +0 -1
- package/dist/cache.d.ts +0 -90
- package/dist/cache.mjs +0 -79
- package/dist/cache.mjs.map +0 -1
- package/dist/color/distance.d.ts +0 -8
- package/dist/color/helpers.d.ts +0 -2
- package/dist/color/hex-hsl.d.ts +0 -3
- package/dist/color/hex-rgb.d.ts +0 -18
- package/dist/color/rgb-hsl.d.ts +0 -23
- package/dist/color/rgb-hwb.d.ts +0 -29
- package/dist/color/rgb-whiter.d.ts +0 -12
- package/dist/color/rgb-xyz.d.ts +0 -22
- package/dist/color.cjs +0 -250
- package/dist/color.cjs.map +0 -1
- package/dist/color.mjs +0 -250
- package/dist/color.mjs.map +0 -1
- 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 -250
- package/dist/core.cjs.map +0 -1
- package/dist/core.mjs +0 -251
- 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/crypto.cjs +0 -812
- package/dist/crypto.cjs.map +0 -1
- package/dist/crypto.mjs +0 -812
- package/dist/crypto.mjs.map +0 -1
- package/dist/date/const.d.ts +0 -6
- package/dist/date/core.d.ts +0 -52
- package/dist/date/days.d.ts +0 -23
- package/dist/date/relative.d.ts +0 -44
- package/dist/date/start-end.d.ts +0 -73
- package/dist/date/timezone.d.ts +0 -67
- package/dist/date/weeks.d.ts +0 -72
- package/dist/date.cjs +0 -239
- package/dist/date.cjs.map +0 -1
- package/dist/date.mjs +0 -241
- package/dist/date.mjs.map +0 -1
- package/dist/dict.cjs +0 -2
- package/dist/dict.cjs.map +0 -1
- package/dist/dict.mjs +0 -2
- package/dist/dict.mjs.map +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/easing.cjs +0 -151
- package/dist/easing.cjs.map +0 -1
- package/dist/easing.d.ts +0 -46
- package/dist/easing.mjs +0 -151
- package/dist/easing.mjs.map +0 -1
- package/dist/emitter.cjs +0 -94
- package/dist/emitter.cjs.map +0 -1
- package/dist/emitter.d.ts +0 -68
- package/dist/emitter.mjs +0 -94
- package/dist/emitter.mjs.map +0 -1
- package/dist/enum.cjs +0 -58
- package/dist/enum.cjs.map +0 -1
- package/dist/enum.d.ts +0 -68
- package/dist/enum.mjs +0 -58
- package/dist/enum.mjs.map +0 -1
- package/dist/env.cjs +0 -28
- package/dist/env.cjs.map +0 -1
- package/dist/env.mjs +0 -28
- package/dist/env.mjs.map +0 -1
- package/dist/error.cjs +0 -12
- package/dist/error.cjs.map +0 -1
- package/dist/error.mjs +0 -12
- package/dist/error.mjs.map +0 -1
- package/dist/exception.cjs +0 -22
- package/dist/exception.cjs.map +0 -1
- package/dist/exception.d.ts +0 -31
- package/dist/exception.mjs +0 -22
- package/dist/exception.mjs.map +0 -1
- package/dist/fn.cjs +0 -76
- package/dist/fn.cjs.map +0 -1
- package/dist/fn.d.ts +0 -102
- package/dist/fn.mjs +0 -76
- package/dist/fn.mjs.map +0 -1
- package/dist/index.cjs +0 -5
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.mjs +0 -5
- package/dist/index.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 +0 -11
- package/dist/number.cjs.map +0 -1
- package/dist/number.d.ts +0 -137
- package/dist/number.mjs +0 -11
- package/dist/number.mjs.map +0 -1
- package/dist/object/get-set.d.ts +0 -111
- package/dist/object/is.d.ts +0 -32
- package/dist/object/merge.d.ts +0 -72
- package/dist/object.cjs +0 -130
- package/dist/object.cjs.map +0 -1
- package/dist/object.mjs +0 -130
- package/dist/object.mjs.map +0 -1
- package/dist/path.cjs +0 -77
- package/dist/path.cjs.map +0 -1
- package/dist/path.d.ts +0 -82
- package/dist/path.mjs +0 -77
- package/dist/path.mjs.map +0 -1
- package/dist/promise.cjs +0 -62
- package/dist/promise.cjs.map +0 -1
- package/dist/promise.mjs +0 -62
- package/dist/promise.mjs.map +0 -1
- package/dist/qs.cjs +0 -47
- package/dist/qs.cjs.map +0 -1
- package/dist/qs.mjs +0 -47
- package/dist/qs.mjs.map +0 -1
- package/dist/regexp.cjs +0 -66
- package/dist/regexp.cjs.map +0 -1
- package/dist/regexp.d.ts +0 -65
- package/dist/regexp.mjs +0 -66
- package/dist/regexp.mjs.map +0 -1
- package/dist/string.cjs +0 -16
- package/dist/string.cjs.map +0 -1
- package/dist/string.d.ts +0 -80
- package/dist/string.mjs +0 -16
- package/dist/string.mjs.map +0 -1
- package/dist/string2.cjs +0 -147
- package/dist/string2.cjs.map +0 -1
- package/dist/string2.mjs +0 -148
- package/dist/string2.mjs.map +0 -1
- package/dist/time/from.d.ts +0 -14
- package/dist/time/to.d.ts +0 -38
- package/dist/time.cjs +0 -82
- package/dist/time.cjs.map +0 -1
- package/dist/time.mjs +0 -82
- package/dist/time.mjs.map +0 -1
- package/dist/timer.cjs +0 -119
- package/dist/timer.cjs.map +0 -1
- package/dist/timer.d.ts +0 -96
- package/dist/timer.mjs.map +0 -1
- package/dist/tree.cjs +0 -125
- package/dist/tree.cjs.map +0 -1
- package/dist/tree.mjs +0 -125
- package/dist/tree.mjs.map +0 -1
- package/dist/type.cjs +0 -78
- package/dist/type.cjs.map +0 -1
- package/dist/type.mjs +0 -78
- package/dist/type.mjs.map +0 -1
- package/dist/types.cjs +0 -2
- package/dist/types.cjs.map +0 -1
- package/dist/types.mjs +0 -2
- package/dist/types.mjs.map +0 -1
- package/dist/unique.cjs +0 -46
- package/dist/unique.cjs.map +0 -1
- package/dist/unique.d.ts +0 -22
- package/dist/unique.mjs +0 -46
- package/dist/unique.mjs.map +0 -1
- package/dist/url.cjs +0 -37
- package/dist/url.cjs.map +0 -1
- package/dist/url.d.ts +0 -53
- package/dist/url.mjs +0 -37
- package/dist/url.mjs.map +0 -1
- package/dist/version.cjs +0 -33
- package/dist/version.cjs.map +0 -1
- package/dist/version.d.ts +0 -32
- package/dist/version.mjs +0 -33
- package/dist/version.mjs.map +0 -1
- /package/{dist/color.d.ts → src/color.ts} +0 -0
- /package/{dist/date.d.ts → src/date.ts} +0 -0
- /package/{dist/dict.d.ts → src/dict.ts} +0 -0
- /package/{dist/object.d.ts → src/object.ts} +0 -0
- /package/{dist/time.d.ts → src/time.ts} +0 -0
package/dist/base64.mjs
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
function base64toBlob(base64) {
|
|
2
|
-
const byteString = atob(base64.split(",")[1]);
|
|
3
|
-
const mimeString = base64.split(",")[0].split(":")[1].split(";")[0];
|
|
4
|
-
const ab = new ArrayBuffer(byteString.length);
|
|
5
|
-
const ua = new Uint8Array(ab);
|
|
6
|
-
for (let i = 0; i < byteString.length; i++) {
|
|
7
|
-
ua[i] = byteString.charCodeAt(i);
|
|
8
|
-
}
|
|
9
|
-
return new Blob([ab], {
|
|
10
|
-
type: mimeString
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
export {
|
|
14
|
-
base64toBlob
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=base64.mjs.map
|
package/dist/base64.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base64.mjs","sources":["../src/base64.ts"],"sourcesContent":["/**\n * base64 转换为 Blob 实例\n * @ref http://stackoverflow.com/q/18253378\n * @param base64 {String} base64 编码\n * @returns {Blob}\n */\nexport function base64toBlob(base64: string): Blob {\n const byteString = atob(base64.split(',')[1]);\n const mimeString = base64.split(',')[0].split(':')[1].split(';')[0];\n const ab = new ArrayBuffer(byteString.length);\n const ua = new Uint8Array(ab);\n\n for (let i = 0; i < byteString.length; i++) {\n ua[i] = byteString.charCodeAt(i);\n }\n\n return new Blob([ab], {\n type: mimeString,\n });\n}\n"],"names":[],"mappings":"AAMO,SAAS,aAAa,QAAsB;AACjD,QAAM,aAAa,KAAK,OAAO,MAAM,GAAG,EAAE,CAAC,CAAC;AAC5C,QAAM,aAAa,OAAO,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC;AAClE,QAAM,KAAK,IAAI,YAAY,WAAW,MAAM;AACtC,QAAA,KAAK,IAAI,WAAW,EAAE;AAE5B,WAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AAC1C,OAAG,CAAC,IAAI,WAAW,WAAW,CAAC;AAAA,EAAA;AAGjC,SAAO,IAAI,KAAK,CAAC,EAAE,GAAG;AAAA,IACpB,MAAM;AAAA,EAAA,CACP;AACH;"}
|
package/dist/cache.cjs
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
6
|
-
const core = require("./core.cjs");
|
|
7
|
-
class AbstractCache {
|
|
8
|
-
isExpired(cached) {
|
|
9
|
-
return cached.expiredAt > 0 && Date.now() > cached.expiredAt;
|
|
10
|
-
}
|
|
11
|
-
normalizeCached(id, data, options) {
|
|
12
|
-
const { expiredAt = 0, maxAge = 0 } = options || {};
|
|
13
|
-
const now = Date.now();
|
|
14
|
-
return {
|
|
15
|
-
id,
|
|
16
|
-
data,
|
|
17
|
-
createdAt: now,
|
|
18
|
-
expiredAt: expiredAt ? core.dateParse(expiredAt).getTime() : maxAge > 0 ? now + maxAge : 0
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* 获取缓存项
|
|
23
|
-
* @param id 缓存项的唯一标识
|
|
24
|
-
* @returns 返回缓存项或 null
|
|
25
|
-
*/
|
|
26
|
-
get(id) {
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* 设置缓存项
|
|
31
|
-
* @param id 缓存项的唯一标识
|
|
32
|
-
* @param data 要缓存的数据
|
|
33
|
-
* @param options 缓存选项
|
|
34
|
-
*/
|
|
35
|
-
set(id, data, options) {
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* 删除缓存项
|
|
39
|
-
* @param id 缓存项的唯一标识
|
|
40
|
-
*/
|
|
41
|
-
del(id) {
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* 清空缓存
|
|
45
|
-
*/
|
|
46
|
-
clear() {
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
class MemoryCache extends AbstractCache {
|
|
50
|
-
constructor() {
|
|
51
|
-
super(...arguments);
|
|
52
|
-
__publicField(this, "cache", /* @__PURE__ */ new Map());
|
|
53
|
-
}
|
|
54
|
-
get(id) {
|
|
55
|
-
const cached = this.cache.get(id);
|
|
56
|
-
if (!cached) return null;
|
|
57
|
-
if (this.isExpired(cached)) {
|
|
58
|
-
this.del(id);
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
|
-
return cached;
|
|
62
|
-
}
|
|
63
|
-
set(id, data, options) {
|
|
64
|
-
this.cache.set(id, this.normalizeCached(id, data, options));
|
|
65
|
-
}
|
|
66
|
-
del(id) {
|
|
67
|
-
this.cache.delete(id);
|
|
68
|
-
}
|
|
69
|
-
clear() {
|
|
70
|
-
this.cache.clear();
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
function createMemCache() {
|
|
74
|
-
return new MemoryCache();
|
|
75
|
-
}
|
|
76
|
-
exports.AbstractCache = AbstractCache;
|
|
77
|
-
exports.MemoryCache = MemoryCache;
|
|
78
|
-
exports.createMemCache = createMemCache;
|
|
79
|
-
//# sourceMappingURL=cache.cjs.map
|
package/dist/cache.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cache.cjs","sources":["../src/cache.ts"],"sourcesContent":["import { type TDateValue, dateParse } from './date';\nimport type { MaybePromise } from './types';\n\n/**\n * 缓存选项\n */\nexport type TCacheOptions = {\n /**\n * 缓存的最大时长(毫秒),为 0 时表示永久缓存\n */\n maxAge?: number;\n\n /**\n * 缓存的过期时间(时间戳、日期字符串、日期对象等)\n * 优先级比 maxAge 更高\n */\n expiredAt?: TDateValue;\n};\n\n/**\n * 缓存项\n * @template T 缓存数据的类型\n */\nexport type TCached<T> = {\n /**\n * 缓存项的唯一标识\n */\n id: string;\n /**\n * 缓存的数据\n */\n data: T;\n /**\n * 缓存项的创建时间(时间戳)\n */\n createdAt: number;\n /**\n * 缓存项的过期时间(时间戳)\n */\n expiredAt: number;\n};\n\nexport type TCache<T> = {\n get(id: string): MaybePromise<TCached<T> | null>;\n\n set(id: string, data: T, options?: TCacheOptions): MaybePromise<void>;\n\n del(id: string): MaybePromise<void>;\n};\n\n/**\n * 缓存抽象类\n * @template T 缓存数据的类型\n */\nexport class AbstractCache<T> implements TCache<T> {\n isExpired(cached: TCached<T>) {\n return cached.expiredAt > 0 && Date.now() > cached.expiredAt;\n }\n\n normalizeCached(id: string, data: T, options?: TCacheOptions): TCached<T> {\n const { expiredAt = 0, maxAge = 0 } = options || {};\n const now = Date.now();\n return {\n id,\n data,\n createdAt: now,\n expiredAt: expiredAt ? dateParse(expiredAt).getTime() : maxAge > 0 ? now + maxAge : 0,\n };\n }\n\n /**\n * 获取缓存项\n * @param id 缓存项的唯一标识\n * @returns 返回缓存项或 null\n */\n get(id: string): MaybePromise<TCached<T> | null> {\n return null;\n }\n\n /**\n * 设置缓存项\n * @param id 缓存项的唯一标识\n * @param data 要缓存的数据\n * @param options 缓存选项\n */\n set(id: string, data: T, options?: TCacheOptions): MaybePromise<void> {\n //\n }\n\n /**\n * 删除缓存项\n * @param id 缓存项的唯一标识\n */\n del(id: string): MaybePromise<void> {\n //\n }\n\n /**\n * 清空缓存\n */\n clear(): MaybePromise<void> {\n //\n }\n}\n\n/**\n * 内存缓存实现类\n * @template T 缓存数据的类型\n */\nexport class MemoryCache<T> extends AbstractCache<T> {\n private cache: Map<string, TCached<T>> = new Map();\n\n get(id: string) {\n const cached = this.cache.get(id);\n\n if (!cached) return null;\n\n if (this.isExpired(cached)) {\n this.del(id);\n return null;\n }\n\n return cached;\n }\n\n set(id: string, data: T, options?: TCacheOptions) {\n this.cache.set(id, this.normalizeCached(id, data, options));\n }\n\n del(id: string) {\n this.cache.delete(id);\n }\n\n clear() {\n this.cache.clear();\n }\n}\n\n/**\n * 创建一个新的内存缓存实例\n * @template T 缓存数据的类型\n * @returns 返回一个新的 MemoryCache 实例\n */\nexport function createMemCache<T>() {\n return new MemoryCache<T>();\n}\n"],"names":["dateParse"],"mappings":";;;;;;AAsDO,MAAM,cAAsC;AAAA,EACjD,UAAU,QAAoB;AAC5B,WAAO,OAAO,YAAY,KAAK,KAAK,IAAA,IAAQ,OAAO;AAAA,EAAA;AAAA,EAGrD,gBAAgB,IAAY,MAAS,SAAqC;AACxE,UAAM,EAAE,YAAY,GAAG,SAAS,EAAE,IAAI,WAAW,CAAC;AAC5C,UAAA,MAAM,KAAK,IAAI;AACd,WAAA;AAAA,MACL;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX,WAAW,YAAYA,KAAA,UAAU,SAAS,EAAE,QAAY,IAAA,SAAS,IAAI,MAAM,SAAS;AAAA,IACtF;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQF,IAAI,IAA6C;AACxC,WAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAST,IAAI,IAAY,MAAS,SAA6C;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQtE,IAAI,IAAgC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAOpC,QAA4B;AAAA,EAAA;AAG9B;AAMO,MAAM,oBAAuB,cAAiB;AAAA,EAA9C;AAAA;AACG,qDAAqC,IAAI;AAAA;AAAA,EAEjD,IAAI,IAAY;AACd,UAAM,SAAS,KAAK,MAAM,IAAI,EAAE;AAE5B,QAAA,CAAC,OAAe,QAAA;AAEhB,QAAA,KAAK,UAAU,MAAM,GAAG;AAC1B,WAAK,IAAI,EAAE;AACJ,aAAA;AAAA,IAAA;AAGF,WAAA;AAAA,EAAA;AAAA,EAGT,IAAI,IAAY,MAAS,SAAyB;AAC3C,SAAA,MAAM,IAAI,IAAI,KAAK,gBAAgB,IAAI,MAAM,OAAO,CAAC;AAAA,EAAA;AAAA,EAG5D,IAAI,IAAY;AACT,SAAA,MAAM,OAAO,EAAE;AAAA,EAAA;AAAA,EAGtB,QAAQ;AACN,SAAK,MAAM,MAAM;AAAA,EAAA;AAErB;AAOO,SAAS,iBAAoB;AAClC,SAAO,IAAI,YAAe;AAC5B;;;;"}
|
package/dist/cache.d.ts
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { TDateValue } from './date';
|
|
2
|
-
import { MaybePromise } from './types';
|
|
3
|
-
/**
|
|
4
|
-
* 缓存选项
|
|
5
|
-
*/
|
|
6
|
-
export type TCacheOptions = {
|
|
7
|
-
/**
|
|
8
|
-
* 缓存的最大时长(毫秒),为 0 时表示永久缓存
|
|
9
|
-
*/
|
|
10
|
-
maxAge?: number;
|
|
11
|
-
/**
|
|
12
|
-
* 缓存的过期时间(时间戳、日期字符串、日期对象等)
|
|
13
|
-
* 优先级比 maxAge 更高
|
|
14
|
-
*/
|
|
15
|
-
expiredAt?: TDateValue;
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* 缓存项
|
|
19
|
-
* @template T 缓存数据的类型
|
|
20
|
-
*/
|
|
21
|
-
export type TCached<T> = {
|
|
22
|
-
/**
|
|
23
|
-
* 缓存项的唯一标识
|
|
24
|
-
*/
|
|
25
|
-
id: string;
|
|
26
|
-
/**
|
|
27
|
-
* 缓存的数据
|
|
28
|
-
*/
|
|
29
|
-
data: T;
|
|
30
|
-
/**
|
|
31
|
-
* 缓存项的创建时间(时间戳)
|
|
32
|
-
*/
|
|
33
|
-
createdAt: number;
|
|
34
|
-
/**
|
|
35
|
-
* 缓存项的过期时间(时间戳)
|
|
36
|
-
*/
|
|
37
|
-
expiredAt: number;
|
|
38
|
-
};
|
|
39
|
-
export type TCache<T> = {
|
|
40
|
-
get(id: string): MaybePromise<TCached<T> | null>;
|
|
41
|
-
set(id: string, data: T, options?: TCacheOptions): MaybePromise<void>;
|
|
42
|
-
del(id: string): MaybePromise<void>;
|
|
43
|
-
};
|
|
44
|
-
/**
|
|
45
|
-
* 缓存抽象类
|
|
46
|
-
* @template T 缓存数据的类型
|
|
47
|
-
*/
|
|
48
|
-
export declare class AbstractCache<T> implements TCache<T> {
|
|
49
|
-
isExpired(cached: TCached<T>): boolean;
|
|
50
|
-
normalizeCached(id: string, data: T, options?: TCacheOptions): TCached<T>;
|
|
51
|
-
/**
|
|
52
|
-
* 获取缓存项
|
|
53
|
-
* @param id 缓存项的唯一标识
|
|
54
|
-
* @returns 返回缓存项或 null
|
|
55
|
-
*/
|
|
56
|
-
get(id: string): MaybePromise<TCached<T> | null>;
|
|
57
|
-
/**
|
|
58
|
-
* 设置缓存项
|
|
59
|
-
* @param id 缓存项的唯一标识
|
|
60
|
-
* @param data 要缓存的数据
|
|
61
|
-
* @param options 缓存选项
|
|
62
|
-
*/
|
|
63
|
-
set(id: string, data: T, options?: TCacheOptions): MaybePromise<void>;
|
|
64
|
-
/**
|
|
65
|
-
* 删除缓存项
|
|
66
|
-
* @param id 缓存项的唯一标识
|
|
67
|
-
*/
|
|
68
|
-
del(id: string): MaybePromise<void>;
|
|
69
|
-
/**
|
|
70
|
-
* 清空缓存
|
|
71
|
-
*/
|
|
72
|
-
clear(): MaybePromise<void>;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* 内存缓存实现类
|
|
76
|
-
* @template T 缓存数据的类型
|
|
77
|
-
*/
|
|
78
|
-
export declare class MemoryCache<T> extends AbstractCache<T> {
|
|
79
|
-
private cache;
|
|
80
|
-
get(id: string): TCached<T> | null;
|
|
81
|
-
set(id: string, data: T, options?: TCacheOptions): void;
|
|
82
|
-
del(id: string): void;
|
|
83
|
-
clear(): void;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* 创建一个新的内存缓存实例
|
|
87
|
-
* @template T 缓存数据的类型
|
|
88
|
-
* @returns 返回一个新的 MemoryCache 实例
|
|
89
|
-
*/
|
|
90
|
-
export declare function createMemCache<T>(): MemoryCache<T>;
|
package/dist/cache.mjs
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
-
import { d as dateParse } from "./core.mjs";
|
|
5
|
-
class AbstractCache {
|
|
6
|
-
isExpired(cached) {
|
|
7
|
-
return cached.expiredAt > 0 && Date.now() > cached.expiredAt;
|
|
8
|
-
}
|
|
9
|
-
normalizeCached(id, data, options) {
|
|
10
|
-
const { expiredAt = 0, maxAge = 0 } = options || {};
|
|
11
|
-
const now = Date.now();
|
|
12
|
-
return {
|
|
13
|
-
id,
|
|
14
|
-
data,
|
|
15
|
-
createdAt: now,
|
|
16
|
-
expiredAt: expiredAt ? dateParse(expiredAt).getTime() : maxAge > 0 ? now + maxAge : 0
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* 获取缓存项
|
|
21
|
-
* @param id 缓存项的唯一标识
|
|
22
|
-
* @returns 返回缓存项或 null
|
|
23
|
-
*/
|
|
24
|
-
get(id) {
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* 设置缓存项
|
|
29
|
-
* @param id 缓存项的唯一标识
|
|
30
|
-
* @param data 要缓存的数据
|
|
31
|
-
* @param options 缓存选项
|
|
32
|
-
*/
|
|
33
|
-
set(id, data, options) {
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* 删除缓存项
|
|
37
|
-
* @param id 缓存项的唯一标识
|
|
38
|
-
*/
|
|
39
|
-
del(id) {
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* 清空缓存
|
|
43
|
-
*/
|
|
44
|
-
clear() {
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
class MemoryCache extends AbstractCache {
|
|
48
|
-
constructor() {
|
|
49
|
-
super(...arguments);
|
|
50
|
-
__publicField(this, "cache", /* @__PURE__ */ new Map());
|
|
51
|
-
}
|
|
52
|
-
get(id) {
|
|
53
|
-
const cached = this.cache.get(id);
|
|
54
|
-
if (!cached) return null;
|
|
55
|
-
if (this.isExpired(cached)) {
|
|
56
|
-
this.del(id);
|
|
57
|
-
return null;
|
|
58
|
-
}
|
|
59
|
-
return cached;
|
|
60
|
-
}
|
|
61
|
-
set(id, data, options) {
|
|
62
|
-
this.cache.set(id, this.normalizeCached(id, data, options));
|
|
63
|
-
}
|
|
64
|
-
del(id) {
|
|
65
|
-
this.cache.delete(id);
|
|
66
|
-
}
|
|
67
|
-
clear() {
|
|
68
|
-
this.cache.clear();
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
function createMemCache() {
|
|
72
|
-
return new MemoryCache();
|
|
73
|
-
}
|
|
74
|
-
export {
|
|
75
|
-
AbstractCache,
|
|
76
|
-
MemoryCache,
|
|
77
|
-
createMemCache
|
|
78
|
-
};
|
|
79
|
-
//# sourceMappingURL=cache.mjs.map
|
package/dist/cache.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cache.mjs","sources":["../src/cache.ts"],"sourcesContent":["import { type TDateValue, dateParse } from './date';\nimport type { MaybePromise } from './types';\n\n/**\n * 缓存选项\n */\nexport type TCacheOptions = {\n /**\n * 缓存的最大时长(毫秒),为 0 时表示永久缓存\n */\n maxAge?: number;\n\n /**\n * 缓存的过期时间(时间戳、日期字符串、日期对象等)\n * 优先级比 maxAge 更高\n */\n expiredAt?: TDateValue;\n};\n\n/**\n * 缓存项\n * @template T 缓存数据的类型\n */\nexport type TCached<T> = {\n /**\n * 缓存项的唯一标识\n */\n id: string;\n /**\n * 缓存的数据\n */\n data: T;\n /**\n * 缓存项的创建时间(时间戳)\n */\n createdAt: number;\n /**\n * 缓存项的过期时间(时间戳)\n */\n expiredAt: number;\n};\n\nexport type TCache<T> = {\n get(id: string): MaybePromise<TCached<T> | null>;\n\n set(id: string, data: T, options?: TCacheOptions): MaybePromise<void>;\n\n del(id: string): MaybePromise<void>;\n};\n\n/**\n * 缓存抽象类\n * @template T 缓存数据的类型\n */\nexport class AbstractCache<T> implements TCache<T> {\n isExpired(cached: TCached<T>) {\n return cached.expiredAt > 0 && Date.now() > cached.expiredAt;\n }\n\n normalizeCached(id: string, data: T, options?: TCacheOptions): TCached<T> {\n const { expiredAt = 0, maxAge = 0 } = options || {};\n const now = Date.now();\n return {\n id,\n data,\n createdAt: now,\n expiredAt: expiredAt ? dateParse(expiredAt).getTime() : maxAge > 0 ? now + maxAge : 0,\n };\n }\n\n /**\n * 获取缓存项\n * @param id 缓存项的唯一标识\n * @returns 返回缓存项或 null\n */\n get(id: string): MaybePromise<TCached<T> | null> {\n return null;\n }\n\n /**\n * 设置缓存项\n * @param id 缓存项的唯一标识\n * @param data 要缓存的数据\n * @param options 缓存选项\n */\n set(id: string, data: T, options?: TCacheOptions): MaybePromise<void> {\n //\n }\n\n /**\n * 删除缓存项\n * @param id 缓存项的唯一标识\n */\n del(id: string): MaybePromise<void> {\n //\n }\n\n /**\n * 清空缓存\n */\n clear(): MaybePromise<void> {\n //\n }\n}\n\n/**\n * 内存缓存实现类\n * @template T 缓存数据的类型\n */\nexport class MemoryCache<T> extends AbstractCache<T> {\n private cache: Map<string, TCached<T>> = new Map();\n\n get(id: string) {\n const cached = this.cache.get(id);\n\n if (!cached) return null;\n\n if (this.isExpired(cached)) {\n this.del(id);\n return null;\n }\n\n return cached;\n }\n\n set(id: string, data: T, options?: TCacheOptions) {\n this.cache.set(id, this.normalizeCached(id, data, options));\n }\n\n del(id: string) {\n this.cache.delete(id);\n }\n\n clear() {\n this.cache.clear();\n }\n}\n\n/**\n * 创建一个新的内存缓存实例\n * @template T 缓存数据的类型\n * @returns 返回一个新的 MemoryCache 实例\n */\nexport function createMemCache<T>() {\n return new MemoryCache<T>();\n}\n"],"names":[],"mappings":";;;;AAsDO,MAAM,cAAsC;AAAA,EACjD,UAAU,QAAoB;AAC5B,WAAO,OAAO,YAAY,KAAK,KAAK,IAAA,IAAQ,OAAO;AAAA,EAAA;AAAA,EAGrD,gBAAgB,IAAY,MAAS,SAAqC;AACxE,UAAM,EAAE,YAAY,GAAG,SAAS,EAAE,IAAI,WAAW,CAAC;AAC5C,UAAA,MAAM,KAAK,IAAI;AACd,WAAA;AAAA,MACL;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX,WAAW,YAAY,UAAU,SAAS,EAAE,QAAY,IAAA,SAAS,IAAI,MAAM,SAAS;AAAA,IACtF;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQF,IAAI,IAA6C;AACxC,WAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAST,IAAI,IAAY,MAAS,SAA6C;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQtE,IAAI,IAAgC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAOpC,QAA4B;AAAA,EAAA;AAG9B;AAMO,MAAM,oBAAuB,cAAiB;AAAA,EAA9C;AAAA;AACG,qDAAqC,IAAI;AAAA;AAAA,EAEjD,IAAI,IAAY;AACd,UAAM,SAAS,KAAK,MAAM,IAAI,EAAE;AAE5B,QAAA,CAAC,OAAe,QAAA;AAEhB,QAAA,KAAK,UAAU,MAAM,GAAG;AAC1B,WAAK,IAAI,EAAE;AACJ,aAAA;AAAA,IAAA;AAGF,WAAA;AAAA,EAAA;AAAA,EAGT,IAAI,IAAY,MAAS,SAAyB;AAC3C,SAAA,MAAM,IAAI,IAAI,KAAK,gBAAgB,IAAI,MAAM,OAAO,CAAC;AAAA,EAAA;AAAA,EAG5D,IAAI,IAAY;AACT,SAAA,MAAM,OAAO,EAAE;AAAA,EAAA;AAAA,EAGtB,QAAQ;AACN,SAAK,MAAM,MAAM;AAAA,EAAA;AAErB;AAOO,SAAS,iBAAoB;AAClC,SAAO,IAAI,YAAe;AAC5B;"}
|
package/dist/color/distance.d.ts
DELETED
package/dist/color/helpers.d.ts
DELETED
package/dist/color/hex-hsl.d.ts
DELETED
package/dist/color/hex-rgb.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { HEX, RGB } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* 将HEX颜色字符串转换为RGB颜色对象
|
|
4
|
-
* @param hex HEX颜色字符串,支持3位或6位格式(例如#f00或#ff0000)
|
|
5
|
-
* @returns {RGB} 对应的RGB颜色对象
|
|
6
|
-
* @throws {SyntaxError} 当颜色格式不符合规范时抛出
|
|
7
|
-
* @example
|
|
8
|
-
* hexToRgb('#f00') // returns {r: 255, g: 0, b: 0}
|
|
9
|
-
*/
|
|
10
|
-
export declare function hexToRgb(hex: HEX): RGB;
|
|
11
|
-
/**
|
|
12
|
-
* 将RGB颜色对象转换为HEX颜色字符串
|
|
13
|
-
* @param rgb RGB颜色对象
|
|
14
|
-
* @returns {HEX} 6位HEX颜色字符串(带#前缀)
|
|
15
|
-
* @example
|
|
16
|
-
* rgbToHex({r: 255, g: 0, b: 0}) // returns '#ff0000'
|
|
17
|
-
*/
|
|
18
|
-
export declare function rgbToHex(rgb: RGB): HEX;
|
package/dist/color/rgb-hsl.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { HSL, RGB } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* 将RGB颜色转换为HSL颜色空间
|
|
4
|
-
* @param rgb RGB颜色对象(分量范围0-255)
|
|
5
|
-
* @returns {HSL} HSL颜色对象,其中:
|
|
6
|
-
* h: 色相(0-360度)
|
|
7
|
-
* s: 饱和度(0-100%)
|
|
8
|
-
* l: 亮度(0-100%)
|
|
9
|
-
* @example
|
|
10
|
-
* rgbToHsl({r: 255, g: 0, b: 0}) // returns {h: 0, s: 100, l: 50}
|
|
11
|
-
*/
|
|
12
|
-
export declare function rgbToHsl(rgb: RGB): HSL;
|
|
13
|
-
/**
|
|
14
|
-
* 将HSL颜色转换回RGB颜色空间
|
|
15
|
-
* @param hsl HSL颜色对象
|
|
16
|
-
* @param hsl.h 色相(0-360度)
|
|
17
|
-
* @param hsl.s 饱和度(0-100%)
|
|
18
|
-
* @param hsl.l 亮度(0-100%)
|
|
19
|
-
* @returns {RGB} RGB颜色对象(分量范围0-255)
|
|
20
|
-
* @example
|
|
21
|
-
* hslToRgb({h: 0, s: 100, l: 50}) // returns {r: 255, g: 0, b: 0}
|
|
22
|
-
*/
|
|
23
|
-
export declare function hslToRgb({ h, s, l }: HSL): RGB;
|
package/dist/color/rgb-hwb.d.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { HWB, RGB } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* 将RGB颜色转换为HWB颜色空间
|
|
4
|
-
* @param rgb RGB颜色对象(分量范围0-255)
|
|
5
|
-
* @returns {HWB} HWB颜色对象:
|
|
6
|
-
* h: 色相(0-360度)
|
|
7
|
-
* w: 白度(0-100%)
|
|
8
|
-
* b: 黑度(0-100%)
|
|
9
|
-
* @see https://www.w3.org/TR/css-color-4/#hwb-to-rgb
|
|
10
|
-
* @example
|
|
11
|
-
* rgbToHwb({r: 255, g: 0, b: 0}) // {h: 0, w: 0, b: 0}
|
|
12
|
-
*/
|
|
13
|
-
export declare function rgbToHwb(rgb: RGB): HWB;
|
|
14
|
-
/**
|
|
15
|
-
* 将HWB颜色转换回RGB颜色空间
|
|
16
|
-
* @param hwb HWB颜色对象
|
|
17
|
-
* @param hwb.h 色相(0-360度)
|
|
18
|
-
* @param hwb.w 白度(0-100%)
|
|
19
|
-
* @param hwb.b 黑度(0-100%)
|
|
20
|
-
* @returns {RGB} RGB颜色对象(分量范围0-255)
|
|
21
|
-
* @see https://en.wikipedia.org/wiki/HWB_color_model
|
|
22
|
-
* @example
|
|
23
|
-
* hwbToRgb({h: 0, w: 0, b: 0}) // {r: 255, g: 0, b: 0}
|
|
24
|
-
*/
|
|
25
|
-
export declare function hwbToRgb({ h, w: white, b: black }: HWB): {
|
|
26
|
-
r: number;
|
|
27
|
-
g: number;
|
|
28
|
-
b: number;
|
|
29
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { RGB } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* 通过混合颜色调整明暗度
|
|
4
|
-
* @param rgb 原始RGB颜色对象
|
|
5
|
-
* @param value 调整强度(-1到1之间):
|
|
6
|
-
* - 正值时与黑色混合(增加暗度)
|
|
7
|
-
* - 负值时与白色混合(增加亮度)
|
|
8
|
-
* @returns {RGB} 调整后的RGB颜色对象
|
|
9
|
-
* @example
|
|
10
|
-
* rgbDarken({r: 100, g: 150, b: 200}, 0.2) // 变暗20%
|
|
11
|
-
*/
|
|
12
|
-
export declare function rgbWhiter(rgb: RGB, value: number): RGB;
|
package/dist/color/rgb-xyz.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { RGB, XYZ } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* 将RGB颜色转换为CIE 1931 XYZ颜色空间(D65白点,2°观察者)
|
|
4
|
-
* @param rgb RGB颜色对象(分量范围0-255)
|
|
5
|
-
* @returns {XYZ} XYZ颜色对象:
|
|
6
|
-
* x: 约0-95.047
|
|
7
|
-
* y: 约0-100.0
|
|
8
|
-
* z: 约0-108.883
|
|
9
|
-
* @see https://en.wikipedia.org/wiki/CIE_1931_color_space
|
|
10
|
-
* @example
|
|
11
|
-
* rgbToXyz({r: 255, g: 255, b: 255}) // {x: 95.047, y: 100.0, z: 108.883}
|
|
12
|
-
*/
|
|
13
|
-
export declare function rgbToXyz(rgb: RGB): XYZ;
|
|
14
|
-
/**
|
|
15
|
-
* 将XYZ颜色转换回RGB颜色空间(可能超出常规范围)
|
|
16
|
-
* @param xyz XYZ颜色对象
|
|
17
|
-
* @returns {RGB} RGB颜色对象(分量可能超出0-255范围)
|
|
18
|
-
* @see https://www.brucelindbloom.com/index.html?Eqn_XYZ_to_RGB.html
|
|
19
|
-
* @example
|
|
20
|
-
* xyzToRgb({x: 95.047, y: 100.0, z: 108.883}) // {r: 255, g: 255, b: 255}
|
|
21
|
-
*/
|
|
22
|
-
export declare function xyzToRgb(xyz: XYZ): RGB;
|
package/dist/color.cjs
DELETED
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
function luminance({ r, g, b }) {
|
|
4
|
-
const a = [r, g, b].map((v) => {
|
|
5
|
-
const vFinal = v / 255;
|
|
6
|
-
return vFinal <= 0.03928 ? vFinal / 12.92 : ((vFinal + 0.055) / 1.055) ** 2.4;
|
|
7
|
-
});
|
|
8
|
-
return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722;
|
|
9
|
-
}
|
|
10
|
-
function contrast(rgb1, rgb2) {
|
|
11
|
-
const lum1 = luminance(rgb1);
|
|
12
|
-
const lum2 = luminance(rgb2);
|
|
13
|
-
const brightest = Math.max(lum1, lum2);
|
|
14
|
-
const darkest = Math.min(lum1, lum2);
|
|
15
|
-
return (brightest + 0.05) / (darkest + 0.05);
|
|
16
|
-
}
|
|
17
|
-
function distance(labA, labB) {
|
|
18
|
-
const deltaL = labA.l - labB.l;
|
|
19
|
-
const deltaA = labA.a - labB.a;
|
|
20
|
-
const deltaB = labA.b - labB.b;
|
|
21
|
-
const c1 = Math.sqrt(labA.a * labA.a + labA.b * labA.b);
|
|
22
|
-
const c2 = Math.sqrt(labB.a * labB.a + labB.b * labB.b);
|
|
23
|
-
const deltaC = c1 - c2;
|
|
24
|
-
let deltaH = deltaA * deltaA + deltaB * deltaB - deltaC * deltaC;
|
|
25
|
-
deltaH = deltaH < 0 ? 0 : Math.sqrt(deltaH);
|
|
26
|
-
const sc = 1 + 0.045 * c1;
|
|
27
|
-
const sh = 1 + 0.015 * c1;
|
|
28
|
-
const deltaLKlsl = deltaL / 1;
|
|
29
|
-
const deltaCkcsc = deltaC / sc;
|
|
30
|
-
const deltaHkhsh = deltaH / sh;
|
|
31
|
-
const i = deltaLKlsl * deltaLKlsl + deltaCkcsc * deltaCkcsc + deltaHkhsh * deltaHkhsh;
|
|
32
|
-
return (i < 0 ? 0 : Math.sqrt(i)) / 100;
|
|
33
|
-
}
|
|
34
|
-
function hexToRgb(hex) {
|
|
35
|
-
const reg = hex.length === 4 ? /^#(.)(.)(.)$/ : /^#(.{2})(.{2})(.{2})$/;
|
|
36
|
-
const result = reg.exec(hex);
|
|
37
|
-
if (!result) throw new SyntaxError(`颜色(${hex})表达式有误`);
|
|
38
|
-
const [_, r, g, b] = result;
|
|
39
|
-
return {
|
|
40
|
-
r: Number.parseInt(r.padEnd(2, r), 16),
|
|
41
|
-
g: Number.parseInt(g.padEnd(2, g), 16),
|
|
42
|
-
b: Number.parseInt(b.padEnd(2, b), 16)
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
function to16(n) {
|
|
46
|
-
return Math.round(n).toString(16).padStart(2, "0");
|
|
47
|
-
}
|
|
48
|
-
function rgbToHex(rgb) {
|
|
49
|
-
return `#${to16(rgb.r)}${to16(rgb.g)}${to16(rgb.b)}`;
|
|
50
|
-
}
|
|
51
|
-
const { min: min$2, max: max$2 } = Math;
|
|
52
|
-
function rgbToHue({ r, g, b }) {
|
|
53
|
-
r /= 255;
|
|
54
|
-
g /= 255;
|
|
55
|
-
b /= 255;
|
|
56
|
-
const rgbMax = max$2(r, g, b);
|
|
57
|
-
const rgbMin = min$2(r, g, b);
|
|
58
|
-
const rgbDiff = rgbMax - rgbMin;
|
|
59
|
-
const h = rgbDiff === 0 ? 0 : rgbDiff && rgbMax === r ? (g - b) / rgbDiff : rgbMax === g ? 2 + (b - r) / rgbDiff : 4 + (r - g) / rgbDiff;
|
|
60
|
-
return [60 * (h < 0 ? h + 6 : h), rgbMax, rgbMin, rgbDiff];
|
|
61
|
-
}
|
|
62
|
-
const { min: min$1, max: max$1 } = Math;
|
|
63
|
-
function rgbToHsl(rgb) {
|
|
64
|
-
const [hue, max2, min2, diff] = rgbToHue(rgb);
|
|
65
|
-
const l = (2 * max2 - diff) / 2;
|
|
66
|
-
const s = min2 === max2 ? 0 : l < 0.5 ? (max2 - min2) / (max2 + min2) : (max2 - min2) / (2 - max2 - min2);
|
|
67
|
-
return {
|
|
68
|
-
h: hue,
|
|
69
|
-
s: s * 100,
|
|
70
|
-
l: l * 100
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
function hslToRgb({ h, s, l }) {
|
|
74
|
-
s /= 100;
|
|
75
|
-
l /= 100;
|
|
76
|
-
const a = s * min$1(l, 1 - l);
|
|
77
|
-
const k = (n) => (n + h / 30) % 12;
|
|
78
|
-
const f = (n) => l - a * max$1(-1, min$1(k(n) - 3, min$1(9 - k(n), 1)));
|
|
79
|
-
return {
|
|
80
|
-
r: 255 * f(0),
|
|
81
|
-
g: 255 * f(8),
|
|
82
|
-
b: 255 * f(4)
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
function hslToHex(hsl) {
|
|
86
|
-
return rgbToHex(hslToRgb(hsl));
|
|
87
|
-
}
|
|
88
|
-
function hexToHsl(hex) {
|
|
89
|
-
return rgbToHsl(hexToRgb(hex));
|
|
90
|
-
}
|
|
91
|
-
const { min, max } = Math;
|
|
92
|
-
function rgbToHsv(rgb) {
|
|
93
|
-
const [hue, max2, min2, diff] = rgbToHue(rgb);
|
|
94
|
-
return {
|
|
95
|
-
h: hue,
|
|
96
|
-
s: max2 && diff / max2 * 100,
|
|
97
|
-
v: max2 * 100
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
function hsvToRgb({ h, s, v }) {
|
|
101
|
-
s /= 100;
|
|
102
|
-
v /= 100;
|
|
103
|
-
const k = (n) => (n + h / 60) % 6;
|
|
104
|
-
const f = (n) => v * (1 - s * max(0, min(k(n), 4 - k(n), 1)));
|
|
105
|
-
return {
|
|
106
|
-
r: 255 * f(5),
|
|
107
|
-
g: 255 * f(3),
|
|
108
|
-
b: 255 * f(1)
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
function hexToHsv(hex) {
|
|
112
|
-
return rgbToHsv(hexToRgb(hex));
|
|
113
|
-
}
|
|
114
|
-
function hsvToHex(hsv) {
|
|
115
|
-
return rgbToHex(hsvToRgb(hsv));
|
|
116
|
-
}
|
|
117
|
-
function rgbToHwb(rgb) {
|
|
118
|
-
const [hue, max2, min2, diff] = rgbToHue(rgb);
|
|
119
|
-
return {
|
|
120
|
-
h: hue,
|
|
121
|
-
w: min2 * 100,
|
|
122
|
-
b: (1 - max2) * 100
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
function hwbToRgb({ h, w: white, b: black }) {
|
|
126
|
-
white /= 100;
|
|
127
|
-
black /= 100;
|
|
128
|
-
const { r, g, b } = hslToRgb({ h, s: 100, l: 50 });
|
|
129
|
-
const tot = white + black;
|
|
130
|
-
if (tot > 1) {
|
|
131
|
-
white = white / tot;
|
|
132
|
-
black = black / tot;
|
|
133
|
-
}
|
|
134
|
-
const f = (n) => (n / 255 * (1 - white - black) + white) * 255;
|
|
135
|
-
return {
|
|
136
|
-
r: f(r),
|
|
137
|
-
g: f(g),
|
|
138
|
-
b: f(b)
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
function hwbToHex(hwb) {
|
|
142
|
-
return rgbToHex(hwbToRgb(hwb));
|
|
143
|
-
}
|
|
144
|
-
function hexToHwb(hex) {
|
|
145
|
-
return rgbToHwb(hexToRgb(hex));
|
|
146
|
-
}
|
|
147
|
-
function hslLighten(hsl, value) {
|
|
148
|
-
const hslFinal = { ...hsl };
|
|
149
|
-
hslFinal.l = hslFinal.l * (1 + value);
|
|
150
|
-
return hslFinal;
|
|
151
|
-
}
|
|
152
|
-
function hsvBrighten(hsv, value) {
|
|
153
|
-
const hsvFinal = { ...hsv };
|
|
154
|
-
hsvFinal.v = hsvFinal.v * (1 + value);
|
|
155
|
-
return hsvFinal;
|
|
156
|
-
}
|
|
157
|
-
function mix(a, b, weight = 0.5) {
|
|
158
|
-
return Object.keys(a).reduce((acc, key) => {
|
|
159
|
-
acc[key] = (b[key] - a[key]) * weight + a[key];
|
|
160
|
-
return acc;
|
|
161
|
-
}, {});
|
|
162
|
-
}
|
|
163
|
-
function rgbToXyz(rgb) {
|
|
164
|
-
const { r, g, b } = rgb;
|
|
165
|
-
const [var_R, var_G, var_B] = [r, g, b].map((x) => x / 255).map((x) => x > 0.04045 ? ((x + 0.055) / 1.055) ** 2.4 : x / 12.92).map((x) => x * 100);
|
|
166
|
-
return {
|
|
167
|
-
// Observer. = 2°, Illuminant = D65
|
|
168
|
-
x: var_R * 0.4124 + var_G * 0.3576 + var_B * 0.1805,
|
|
169
|
-
y: var_R * 0.2126 + var_G * 0.7152 + var_B * 0.0722,
|
|
170
|
-
z: var_R * 0.0193 + var_G * 0.1192 + var_B * 0.9505
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
function xyzToRgb(xyz) {
|
|
174
|
-
const { x, y, z } = xyz;
|
|
175
|
-
const var_X = x / 100;
|
|
176
|
-
const var_Y = y / 100;
|
|
177
|
-
const var_Z = z / 100;
|
|
178
|
-
const var_R = var_X * 3.2406 + var_Y * -1.5372 + var_Z * -0.4986;
|
|
179
|
-
const var_G = var_X * -0.9689 + var_Y * 1.8758 + var_Z * 0.0415;
|
|
180
|
-
const var_B = var_X * 0.0557 + var_Y * -0.204 + var_Z * 1.057;
|
|
181
|
-
const [r, g, b] = [var_R, var_G, var_B].map((n) => n > 31308e-7 ? 1.055 * n ** (1 / 2.4) - 0.055 : 12.92 * n).map((n) => n * 255);
|
|
182
|
-
return {
|
|
183
|
-
r,
|
|
184
|
-
g,
|
|
185
|
-
b
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
const ref_X = 95.047;
|
|
189
|
-
const ref_Y = 100;
|
|
190
|
-
const ref_Z = 108.883;
|
|
191
|
-
function xyzToLab(xyz) {
|
|
192
|
-
const { x, y, z } = xyz;
|
|
193
|
-
const [var_X, var_Y, var_Z] = [x / ref_X, y / ref_Y, z / ref_Z].map(
|
|
194
|
-
(a2) => a2 > 8856e-6 ? a2 ** (1 / 3) : 7.787 * a2 + 16 / 116
|
|
195
|
-
);
|
|
196
|
-
const l = 116 * var_Y - 16;
|
|
197
|
-
const a = 500 * (var_X - var_Y);
|
|
198
|
-
const b = 200 * (var_Y - var_Z);
|
|
199
|
-
return { l, a, b };
|
|
200
|
-
}
|
|
201
|
-
function labToXyz(lab) {
|
|
202
|
-
const { l, a, b } = lab;
|
|
203
|
-
const var_Y = (l + 16) / 116;
|
|
204
|
-
const var_X = a / 500 + var_Y;
|
|
205
|
-
const var_Z = var_Y - b / 200;
|
|
206
|
-
const [X, Y, Z] = [var_X, var_Y, var_Z].map((n) => n ** 3 > 8856e-6 ? n ** 3 : (n - 16 / 116) / 7.787);
|
|
207
|
-
return { x: X * ref_X, y: Y * ref_Y, z: Z * ref_Z };
|
|
208
|
-
}
|
|
209
|
-
function rgbToLab(rgb) {
|
|
210
|
-
return xyzToLab(rgbToXyz(rgb));
|
|
211
|
-
}
|
|
212
|
-
function labToRgb(lab) {
|
|
213
|
-
return xyzToRgb(labToXyz(lab));
|
|
214
|
-
}
|
|
215
|
-
const { abs } = Math;
|
|
216
|
-
const whiteRGB = { r: 0, g: 0, b: 0 };
|
|
217
|
-
const blackRGB = { r: 255, g: 255, b: 255 };
|
|
218
|
-
function rgbWhiter(rgb, value) {
|
|
219
|
-
const rgb2 = value > 0 ? whiteRGB : blackRGB;
|
|
220
|
-
return mix(rgb, rgb2, abs(value));
|
|
221
|
-
}
|
|
222
|
-
exports.contrast = contrast;
|
|
223
|
-
exports.distance = distance;
|
|
224
|
-
exports.hexToHsl = hexToHsl;
|
|
225
|
-
exports.hexToHsv = hexToHsv;
|
|
226
|
-
exports.hexToHwb = hexToHwb;
|
|
227
|
-
exports.hexToRgb = hexToRgb;
|
|
228
|
-
exports.hslLighten = hslLighten;
|
|
229
|
-
exports.hslToHex = hslToHex;
|
|
230
|
-
exports.hslToRgb = hslToRgb;
|
|
231
|
-
exports.hsvBrighten = hsvBrighten;
|
|
232
|
-
exports.hsvToHex = hsvToHex;
|
|
233
|
-
exports.hsvToRgb = hsvToRgb;
|
|
234
|
-
exports.hwbToHex = hwbToHex;
|
|
235
|
-
exports.hwbToRgb = hwbToRgb;
|
|
236
|
-
exports.labToRgb = labToRgb;
|
|
237
|
-
exports.labToXyz = labToXyz;
|
|
238
|
-
exports.luminance = luminance;
|
|
239
|
-
exports.mix = mix;
|
|
240
|
-
exports.rgbToHex = rgbToHex;
|
|
241
|
-
exports.rgbToHsl = rgbToHsl;
|
|
242
|
-
exports.rgbToHsv = rgbToHsv;
|
|
243
|
-
exports.rgbToHue = rgbToHue;
|
|
244
|
-
exports.rgbToHwb = rgbToHwb;
|
|
245
|
-
exports.rgbToLab = rgbToLab;
|
|
246
|
-
exports.rgbToXyz = rgbToXyz;
|
|
247
|
-
exports.rgbWhiter = rgbWhiter;
|
|
248
|
-
exports.xyzToLab = xyzToLab;
|
|
249
|
-
exports.xyzToRgb = xyzToRgb;
|
|
250
|
-
//# sourceMappingURL=color.cjs.map
|