@cloudcome/utils-core 1.19.1 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- 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 +105 -103
- package/dist/easing.cjs.map +1 -1
- package/dist/easing.mjs +106 -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 +27 -3
- 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 +2 -2
- 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 +104 -105
- 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/cache.cjs
CHANGED
|
@@ -1,73 +1,85 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
2
|
+
const require_date = require("./date.cjs");
|
|
3
|
+
//#region src/cache.ts
|
|
4
|
+
/**
|
|
5
|
+
* 缓存抽象类
|
|
6
|
+
* @template T 缓存数据的类型
|
|
7
|
+
*/
|
|
8
|
+
var AbstractCache = class {
|
|
9
|
+
isExpired(cached) {
|
|
10
|
+
return cached.expiredAt > 0 && Date.now() > cached.expiredAt;
|
|
11
|
+
}
|
|
12
|
+
normalizeCached(id, data, options) {
|
|
13
|
+
const { expiredAt = 0, maxAge = 0 } = options || {};
|
|
14
|
+
const now = Date.now();
|
|
15
|
+
return {
|
|
16
|
+
id,
|
|
17
|
+
data,
|
|
18
|
+
createdAt: now,
|
|
19
|
+
expiredAt: expiredAt ? require_date.dateParse(expiredAt).getTime() : maxAge > 0 ? now + maxAge : 0
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 获取缓存项
|
|
24
|
+
* @param id 缓存项的唯一标识
|
|
25
|
+
* @returns 返回缓存项或 null
|
|
26
|
+
*/
|
|
27
|
+
get(_id) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 设置缓存项
|
|
32
|
+
* @param id 缓存项的唯一标识
|
|
33
|
+
* @param data 要缓存的数据
|
|
34
|
+
* @param options 缓存选项
|
|
35
|
+
*/
|
|
36
|
+
set(_id, _data, _options) {}
|
|
37
|
+
/**
|
|
38
|
+
* 删除缓存项
|
|
39
|
+
* @param id 缓存项的唯一标识
|
|
40
|
+
*/
|
|
41
|
+
del(_id) {}
|
|
42
|
+
/**
|
|
43
|
+
* 清空缓存
|
|
44
|
+
*/
|
|
45
|
+
clear() {}
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* 内存缓存实现类
|
|
49
|
+
* @template T 缓存数据的类型
|
|
50
|
+
*/
|
|
51
|
+
var MemoryCache = class extends AbstractCache {
|
|
52
|
+
cache = /* @__PURE__ */ new Map();
|
|
53
|
+
get(id) {
|
|
54
|
+
const cached = this.cache.get(id);
|
|
55
|
+
if (!cached) return null;
|
|
56
|
+
if (this.isExpired(cached)) {
|
|
57
|
+
this.del(id);
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
return cached;
|
|
61
|
+
}
|
|
62
|
+
set(id, data, options) {
|
|
63
|
+
this.cache.set(id, this.normalizeCached(id, data, options));
|
|
64
|
+
}
|
|
65
|
+
del(id) {
|
|
66
|
+
this.cache.delete(id);
|
|
67
|
+
}
|
|
68
|
+
clear() {
|
|
69
|
+
this.cache.clear();
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* 创建一个新的内存缓存实例
|
|
74
|
+
* @template T 缓存数据的类型
|
|
75
|
+
* @returns 返回一个新的 MemoryCache 实例
|
|
76
|
+
*/
|
|
67
77
|
function createMemCache() {
|
|
68
|
-
|
|
78
|
+
return new MemoryCache();
|
|
69
79
|
}
|
|
80
|
+
//#endregion
|
|
70
81
|
exports.AbstractCache = AbstractCache;
|
|
71
82
|
exports.MemoryCache = MemoryCache;
|
|
72
83
|
exports.createMemCache = createMemCache;
|
|
73
|
-
|
|
84
|
+
|
|
85
|
+
//# sourceMappingURL=cache.cjs.map
|
package/dist/cache.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.cjs","sources":["../src/cache.ts"],"sourcesContent":["import { type DateValue, dateParse } from './date';\nimport type { MaybePromise } from './types';\n\n/**\n * 缓存选项\n */\nexport type CacheOptions = {\n /**\n * 缓存的最大时长(毫秒),为 0 时表示永久缓存\n */\n maxAge?: number;\n\n /**\n * 缓存的过期时间(时间戳、日期字符串、日期对象等)\n * 优先级比 maxAge 更高\n */\n expiredAt?: DateValue;\n};\n\n/**\n * 缓存项\n * @template T 缓存数据的类型\n */\nexport type Cached<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 Cache<T> = {\n get(id: string): MaybePromise<Cached<T> | null>;\n\n set(id: string, data: T, options?: CacheOptions): MaybePromise<void>;\n\n del(id: string): MaybePromise<void>;\n};\n\n/**\n * 缓存抽象类\n * @template T 缓存数据的类型\n */\nexport class AbstractCache<T> implements Cache<T> {\n isExpired(cached: Cached<T>) {\n return cached.expiredAt > 0 && Date.now() > cached.expiredAt;\n }\n\n normalizeCached(id: string, data: T, options?: CacheOptions): Cached<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
|
|
1
|
+
{"version":3,"file":"cache.cjs","names":[],"sources":["../src/cache.ts"],"sourcesContent":["import { type DateValue, dateParse } from './date';\nimport type { MaybePromise } from './types';\n\n/**\n * 缓存选项\n */\nexport type CacheOptions = {\n /**\n * 缓存的最大时长(毫秒),为 0 时表示永久缓存\n */\n maxAge?: number;\n\n /**\n * 缓存的过期时间(时间戳、日期字符串、日期对象等)\n * 优先级比 maxAge 更高\n */\n expiredAt?: DateValue;\n};\n\n/**\n * 缓存项\n * @template T 缓存数据的类型\n */\nexport type Cached<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 Cache<T> = {\n get(id: string): MaybePromise<Cached<T> | null>;\n\n set(id: string, data: T, options?: CacheOptions): MaybePromise<void>;\n\n del(id: string): MaybePromise<void>;\n};\n\n/**\n * 缓存抽象类\n * @template T 缓存数据的类型\n */\nexport class AbstractCache<T> implements Cache<T> {\n isExpired(cached: Cached<T>) {\n return cached.expiredAt > 0 && Date.now() > cached.expiredAt;\n }\n\n normalizeCached(id: string, data: T, options?: CacheOptions): Cached<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\n ? dateParse(expiredAt).getTime()\n : maxAge > 0\n ? now + maxAge\n : 0,\n };\n }\n\n /**\n * 获取缓存项\n * @param id 缓存项的唯一标识\n * @returns 返回缓存项或 null\n */\n get(_id: string): MaybePromise<Cached<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?: CacheOptions): 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, Cached<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?: CacheOptions) {\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"],"mappings":";;;;;;;AAsDA,IAAa,gBAAb,MAAkD;CAChD,UAAU,QAAmB;EAC3B,OAAO,OAAO,YAAY,KAAK,KAAK,KAAK,GAAG,OAAO;;CAGrD,gBAAgB,IAAY,MAAS,SAAmC;EACtE,MAAM,EAAE,YAAY,GAAG,SAAS,MAAM,WAAW,EAAE;EACnD,MAAM,MAAM,KAAK,KAAK;EACtB,OAAO;GACL;GACA;GACA,WAAW;GACX,WAAW,YACP,aAAA,UAAU,UAAU,CAAC,SAAS,GAC9B,SAAS,IACP,MAAM,SACN;GACP;;;;;;;CAQH,IAAI,KAA6C;EAC/C,OAAO;;;;;;;;CAST,IAAI,KAAa,OAAU,UAA6C;;;;;CAQxE,IAAI,KAAiC;;;;CAOrC,QAA4B;;;;;;AAS9B,IAAa,cAAb,cAAoC,cAAiB;CACnD,wBAAwC,IAAI,KAAK;CAEjD,IAAI,IAAY;EACd,MAAM,SAAS,KAAK,MAAM,IAAI,GAAG;EAEjC,IAAI,CAAC,QAAQ,OAAO;EAEpB,IAAI,KAAK,UAAU,OAAO,EAAE;GAC1B,KAAK,IAAI,GAAG;GACZ,OAAO;;EAGT,OAAO;;CAGT,IAAI,IAAY,MAAS,SAAwB;EAC/C,KAAK,MAAM,IAAI,IAAI,KAAK,gBAAgB,IAAI,MAAM,QAAQ,CAAC;;CAG7D,IAAI,IAAY;EACd,KAAK,MAAM,OAAO,GAAG;;CAGvB,QAAQ;EACN,KAAK,MAAM,OAAO;;;;;;;;AAStB,SAAgB,iBAAoB;CAClC,OAAO,IAAI,aAAgB"}
|
package/dist/cache.d.ts
CHANGED
|
@@ -53,19 +53,19 @@ export declare class AbstractCache<T> implements Cache<T> {
|
|
|
53
53
|
* @param id 缓存项的唯一标识
|
|
54
54
|
* @returns 返回缓存项或 null
|
|
55
55
|
*/
|
|
56
|
-
get(
|
|
56
|
+
get(_id: string): MaybePromise<Cached<T> | null>;
|
|
57
57
|
/**
|
|
58
58
|
* 设置缓存项
|
|
59
59
|
* @param id 缓存项的唯一标识
|
|
60
60
|
* @param data 要缓存的数据
|
|
61
61
|
* @param options 缓存选项
|
|
62
62
|
*/
|
|
63
|
-
set(
|
|
63
|
+
set(_id: string, _data: T, _options?: CacheOptions): MaybePromise<void>;
|
|
64
64
|
/**
|
|
65
65
|
* 删除缓存项
|
|
66
66
|
* @param id 缓存项的唯一标识
|
|
67
67
|
*/
|
|
68
|
-
del(
|
|
68
|
+
del(_id: string): MaybePromise<void>;
|
|
69
69
|
/**
|
|
70
70
|
* 清空缓存
|
|
71
71
|
*/
|
package/dist/cache.mjs
CHANGED
|
@@ -1,73 +1,82 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
1
|
+
import { dateParse } from "./date.mjs";
|
|
2
|
+
//#region src/cache.ts
|
|
3
|
+
/**
|
|
4
|
+
* 缓存抽象类
|
|
5
|
+
* @template T 缓存数据的类型
|
|
6
|
+
*/
|
|
7
|
+
var AbstractCache = class {
|
|
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 ? 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
|
+
* @param id 缓存项的唯一标识
|
|
39
|
+
*/
|
|
40
|
+
del(_id) {}
|
|
41
|
+
/**
|
|
42
|
+
* 清空缓存
|
|
43
|
+
*/
|
|
44
|
+
clear() {}
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* 内存缓存实现类
|
|
48
|
+
* @template T 缓存数据的类型
|
|
49
|
+
*/
|
|
50
|
+
var MemoryCache = class extends AbstractCache {
|
|
51
|
+
cache = /* @__PURE__ */ new Map();
|
|
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
|
+
/**
|
|
72
|
+
* 创建一个新的内存缓存实例
|
|
73
|
+
* @template T 缓存数据的类型
|
|
74
|
+
* @returns 返回一个新的 MemoryCache 实例
|
|
75
|
+
*/
|
|
65
76
|
function createMemCache() {
|
|
66
|
-
|
|
77
|
+
return new MemoryCache();
|
|
67
78
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
};
|
|
73
|
-
//# sourceMappingURL=cache.mjs.map
|
|
79
|
+
//#endregion
|
|
80
|
+
export { AbstractCache, MemoryCache, createMemCache };
|
|
81
|
+
|
|
82
|
+
//# sourceMappingURL=cache.mjs.map
|
package/dist/cache.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.mjs","sources":["../src/cache.ts"],"sourcesContent":["import { type DateValue, dateParse } from './date';\nimport type { MaybePromise } from './types';\n\n/**\n * 缓存选项\n */\nexport type CacheOptions = {\n /**\n * 缓存的最大时长(毫秒),为 0 时表示永久缓存\n */\n maxAge?: number;\n\n /**\n * 缓存的过期时间(时间戳、日期字符串、日期对象等)\n * 优先级比 maxAge 更高\n */\n expiredAt?: DateValue;\n};\n\n/**\n * 缓存项\n * @template T 缓存数据的类型\n */\nexport type Cached<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 Cache<T> = {\n get(id: string): MaybePromise<Cached<T> | null>;\n\n set(id: string, data: T, options?: CacheOptions): MaybePromise<void>;\n\n del(id: string): MaybePromise<void>;\n};\n\n/**\n * 缓存抽象类\n * @template T 缓存数据的类型\n */\nexport class AbstractCache<T> implements Cache<T> {\n isExpired(cached: Cached<T>) {\n return cached.expiredAt > 0 && Date.now() > cached.expiredAt;\n }\n\n normalizeCached(id: string, data: T, options?: CacheOptions): Cached<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
|
|
1
|
+
{"version":3,"file":"cache.mjs","names":[],"sources":["../src/cache.ts"],"sourcesContent":["import { type DateValue, dateParse } from './date';\nimport type { MaybePromise } from './types';\n\n/**\n * 缓存选项\n */\nexport type CacheOptions = {\n /**\n * 缓存的最大时长(毫秒),为 0 时表示永久缓存\n */\n maxAge?: number;\n\n /**\n * 缓存的过期时间(时间戳、日期字符串、日期对象等)\n * 优先级比 maxAge 更高\n */\n expiredAt?: DateValue;\n};\n\n/**\n * 缓存项\n * @template T 缓存数据的类型\n */\nexport type Cached<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 Cache<T> = {\n get(id: string): MaybePromise<Cached<T> | null>;\n\n set(id: string, data: T, options?: CacheOptions): MaybePromise<void>;\n\n del(id: string): MaybePromise<void>;\n};\n\n/**\n * 缓存抽象类\n * @template T 缓存数据的类型\n */\nexport class AbstractCache<T> implements Cache<T> {\n isExpired(cached: Cached<T>) {\n return cached.expiredAt > 0 && Date.now() > cached.expiredAt;\n }\n\n normalizeCached(id: string, data: T, options?: CacheOptions): Cached<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\n ? dateParse(expiredAt).getTime()\n : maxAge > 0\n ? now + maxAge\n : 0,\n };\n }\n\n /**\n * 获取缓存项\n * @param id 缓存项的唯一标识\n * @returns 返回缓存项或 null\n */\n get(_id: string): MaybePromise<Cached<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?: CacheOptions): 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, Cached<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?: CacheOptions) {\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"],"mappings":";;;;;;AAsDA,IAAa,gBAAb,MAAkD;CAChD,UAAU,QAAmB;EAC3B,OAAO,OAAO,YAAY,KAAK,KAAK,KAAK,GAAG,OAAO;;CAGrD,gBAAgB,IAAY,MAAS,SAAmC;EACtE,MAAM,EAAE,YAAY,GAAG,SAAS,MAAM,WAAW,EAAE;EACnD,MAAM,MAAM,KAAK,KAAK;EACtB,OAAO;GACL;GACA;GACA,WAAW;GACX,WAAW,YACP,UAAU,UAAU,CAAC,SAAS,GAC9B,SAAS,IACP,MAAM,SACN;GACP;;;;;;;CAQH,IAAI,KAA6C;EAC/C,OAAO;;;;;;;;CAST,IAAI,KAAa,OAAU,UAA6C;;;;;CAQxE,IAAI,KAAiC;;;;CAOrC,QAA4B;;;;;;AAS9B,IAAa,cAAb,cAAoC,cAAiB;CACnD,wBAAwC,IAAI,KAAK;CAEjD,IAAI,IAAY;EACd,MAAM,SAAS,KAAK,MAAM,IAAI,GAAG;EAEjC,IAAI,CAAC,QAAQ,OAAO;EAEpB,IAAI,KAAK,UAAU,OAAO,EAAE;GAC1B,KAAK,IAAI,GAAG;GACZ,OAAO;;EAGT,OAAO;;CAGT,IAAI,IAAY,MAAS,SAAwB;EAC/C,KAAK,MAAM,IAAI,IAAI,KAAK,gBAAgB,IAAI,MAAM,QAAQ,CAAC;;CAG7D,IAAI,IAAY;EACd,KAAK,MAAM,OAAO,GAAG;;CAGvB,QAAQ;EACN,KAAK,MAAM,OAAO;;;;;;;;AAStB,SAAgB,iBAAoB;CAClC,OAAO,IAAI,aAAgB"}
|