@cloudcome/utils-browser 1.2.16 → 1.2.18
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/base64.cjs +21 -8
- package/dist/base64.cjs.map +1 -1
- package/dist/base64.mjs +22 -11
- package/dist/base64.mjs.map +1 -1
- package/dist/cache.cjs +91 -79
- package/dist/cache.cjs.map +1 -1
- package/dist/cache.d.ts +1 -1
- package/dist/cache.mjs +91 -82
- package/dist/cache.mjs.map +1 -1
- package/dist/canvas.cjs +64 -48
- package/dist/canvas.cjs.map +1 -1
- package/dist/canvas.mjs +64 -51
- package/dist/canvas.mjs.map +1 -1
- package/dist/clipboard.cjs +34 -15
- package/dist/clipboard.cjs.map +1 -1
- package/dist/clipboard.mjs +35 -17
- package/dist/clipboard.mjs.map +1 -1
- package/dist/cookie.cjs +42 -41
- package/dist/cookie.cjs.map +1 -1
- package/dist/cookie.mjs +42 -44
- package/dist/cookie.mjs.map +1 -1
- package/dist/dom.cjs +30 -11
- package/dist/dom.cjs.map +1 -1
- package/dist/dom.mjs +30 -13
- package/dist/dom.mjs.map +1 -1
- package/dist/download.cjs +24 -12
- package/dist/download.cjs.map +1 -1
- package/dist/download.mjs +25 -15
- package/dist/download.mjs.map +1 -1
- package/dist/image.cjs +45 -34
- package/dist/image.cjs.map +1 -1
- package/dist/image.mjs +45 -35
- package/dist/image.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/timer.cjs +40 -37
- package/dist/timer.cjs.map +1 -1
- package/dist/timer.mjs +40 -38
- package/dist/timer.mjs.map +1 -1
- package/dist/video.cjs +25 -14
- package/dist/video.cjs.map +1 -1
- package/dist/video.mjs +26 -16
- package/dist/video.mjs.map +1 -1
- package/package.json +51 -52
package/README.md
CHANGED
|
@@ -9,15 +9,15 @@
|
|
|
9
9
|
|
|
10
10
|
## 包列表
|
|
11
11
|
|
|
12
|
-
| 名称
|
|
13
|
-
|
|
|
14
|
-
| [@cloudcome/utils-core](./packages/utils-core)
|
|
12
|
+
| 名称 | 版本 | 描述 |
|
|
13
|
+
| ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- |
|
|
14
|
+
| [@cloudcome/utils-core](./packages/utils-core) | [](https://npmjs.com/package/@cloudcome/utils-core) | 核心工具库,与运行环境无关的通用工具 |
|
|
15
15
|
| [@cloudcome/utils-browser](./packages/utils-browser) | [](https://npmjs.com/package/@cloudcome/utils-browser) | 浏览器端工具(DOM、Canvas、Cookie、剪贴板等) |
|
|
16
|
-
| [@cloudcome/utils-node](./packages/utils-node)
|
|
17
|
-
| [@cloudcome/utils-vue](./packages/utils-vue)
|
|
18
|
-
| [@cloudcome/utils-react](./packages/utils-react)
|
|
19
|
-
| [@cloudcome/utils-uni](./packages/utils-uni)
|
|
20
|
-
| [@cloudcome/docs](./packages/docs)
|
|
16
|
+
| [@cloudcome/utils-node](./packages/utils-node) | [](https://npmjs.com/package/@cloudcome/utils-node) | Node.js 端工具(Base64、加密、JSONL 等) |
|
|
17
|
+
| [@cloudcome/utils-vue](./packages/utils-vue) | [](https://npmjs.com/package/@cloudcome/utils-vue) | Vue 3 工具库(组合式函数、组件、请求等) |
|
|
18
|
+
| [@cloudcome/utils-react](./packages/utils-react) | [](https://npmjs.com/package/@cloudcome/utils-react) | React 工具库 |
|
|
19
|
+
| [@cloudcome/utils-uni](./packages/utils-uni) | [](https://npmjs.com/package/@cloudcome/utils-uni) | UniApp 工具库(云函数、数据库、页面等) |
|
|
20
|
+
| [@cloudcome/docs](./packages/docs) | - | VitePress 文档站点 |
|
|
21
21
|
|
|
22
22
|
## 功能概览
|
|
23
23
|
|
|
@@ -25,79 +25,80 @@
|
|
|
25
25
|
|
|
26
26
|
核心工具库,提供以下子模块:
|
|
27
27
|
|
|
28
|
-
| 子模块
|
|
29
|
-
|
|
|
30
|
-
| array
|
|
31
|
-
| async
|
|
32
|
-
| base64
|
|
33
|
-
| cache
|
|
34
|
-
| color
|
|
35
|
-
| crypto
|
|
36
|
-
| date
|
|
37
|
-
| dict
|
|
38
|
-
| easing
|
|
39
|
-
| emitter
|
|
40
|
-
| env
|
|
41
|
-
| error
|
|
42
|
-
| exception | `@cloudcome/utils-core/exception` | 异常处理
|
|
43
|
-
| function
|
|
44
|
-
| number
|
|
45
|
-
| object
|
|
46
|
-
| path
|
|
47
|
-
| promise
|
|
48
|
-
| qs
|
|
49
|
-
| regexp
|
|
50
|
-
| string
|
|
51
|
-
| time
|
|
52
|
-
| timer
|
|
53
|
-
| tree
|
|
54
|
-
| try
|
|
55
|
-
| type
|
|
56
|
-
| types
|
|
57
|
-
| unique
|
|
58
|
-
| url
|
|
59
|
-
| version
|
|
28
|
+
| 子模块 | 导入路径 | 功能 |
|
|
29
|
+
| --------- | --------------------------------- | ------------------------------------------------------- |
|
|
30
|
+
| array | `@cloudcome/utils-core/array` | 数组操作 |
|
|
31
|
+
| async | `@cloudcome/utils-core/async` | 异步工具 |
|
|
32
|
+
| base64 | `@cloudcome/utils-core/base64` | Base64 编解码 |
|
|
33
|
+
| cache | `@cloudcome/utils-core/cache` | 缓存工具 |
|
|
34
|
+
| color | `@cloudcome/utils-core/color` | 颜色转换(RGB/HSL/HSV/HWB/LAB/XYZ)、对比度、亮度、混合 |
|
|
35
|
+
| crypto | `@cloudcome/utils-core/crypto` | 加密(MD5、SHA1、SHA256、SHA512) |
|
|
36
|
+
| date | `@cloudcome/utils-core/date` | 日期解析、格式化、时区、相对时间、周/天计算 |
|
|
37
|
+
| dict | `@cloudcome/utils-core/dict` | 字典/映射工具 |
|
|
38
|
+
| easing | `@cloudcome/utils-core/easing` | 缓动函数 |
|
|
39
|
+
| emitter | `@cloudcome/utils-core/emitter` | 事件发射器 |
|
|
40
|
+
| env | `@cloudcome/utils-core/env` | 环境检测 |
|
|
41
|
+
| error | `@cloudcome/utils-core/error` | 错误处理 |
|
|
42
|
+
| exception | `@cloudcome/utils-core/exception` | 异常处理 |
|
|
43
|
+
| function | `@cloudcome/utils-core/function` | 函数工具 |
|
|
44
|
+
| number | `@cloudcome/utils-core/number` | 数字工具 |
|
|
45
|
+
| object | `@cloudcome/utils-core/object` | 对象遍历、深层 get/set、合并、类型判断 |
|
|
46
|
+
| path | `@cloudcome/utils-core/path` | 路径工具 |
|
|
47
|
+
| promise | `@cloudcome/utils-core/promise` | Promise 工具 |
|
|
48
|
+
| qs | `@cloudcome/utils-core/qs` | 查询字符串解析与序列化 |
|
|
49
|
+
| regexp | `@cloudcome/utils-core/regexp` | 正则表达式工具 |
|
|
50
|
+
| string | `@cloudcome/utils-core/string` | 字符串工具 |
|
|
51
|
+
| time | `@cloudcome/utils-core/time` | 时间单位转换 |
|
|
52
|
+
| timer | `@cloudcome/utils-core/timer` | 定时器工具 |
|
|
53
|
+
| tree | `@cloudcome/utils-core/tree` | 树结构操作 |
|
|
54
|
+
| try | `@cloudcome/utils-core/try` | 安全调用(try-catch 包装,支持同步/异步/柯里化) |
|
|
55
|
+
| type | `@cloudcome/utils-core/type` | 类型判断 |
|
|
56
|
+
| types | `@cloudcome/utils-core/types` | 公共类型定义 |
|
|
57
|
+
| unique | `@cloudcome/utils-core/unique` | 唯一 ID 生成 |
|
|
58
|
+
| url | `@cloudcome/utils-core/url` | URL 解析与构建 |
|
|
59
|
+
| version | `@cloudcome/utils-core/version` | 版本号比较 |
|
|
60
60
|
|
|
61
61
|
### @cloudcome/utils-browser
|
|
62
62
|
|
|
63
63
|
浏览器端工具库,依赖 `@cloudcome/utils-core`:
|
|
64
64
|
|
|
65
|
-
| 子模块
|
|
66
|
-
|
|
|
67
|
-
| base64
|
|
68
|
-
| cache
|
|
69
|
-
| canvas
|
|
70
|
-
| clipboard | `@cloudcome/utils-browser/clipboard` | 剪贴板读写
|
|
71
|
-
| cookie
|
|
72
|
-
| dom
|
|
73
|
-
| download
|
|
74
|
-
| image
|
|
75
|
-
| timer
|
|
76
|
-
| video
|
|
65
|
+
| 子模块 | 导入路径 | 功能 |
|
|
66
|
+
| --------- | ------------------------------------ | ----------------------------------------- |
|
|
67
|
+
| base64 | `@cloudcome/utils-browser/base64` | 浏览器端 Base64 编解码 |
|
|
68
|
+
| cache | `@cloudcome/utils-browser/cache` | 浏览器缓存(localStorage/sessionStorage) |
|
|
69
|
+
| canvas | `@cloudcome/utils-browser/canvas` | Canvas 操作 |
|
|
70
|
+
| clipboard | `@cloudcome/utils-browser/clipboard` | 剪贴板读写 |
|
|
71
|
+
| cookie | `@cloudcome/utils-browser/cookie` | Cookie 读写 |
|
|
72
|
+
| dom | `@cloudcome/utils-browser/dom` | DOM 操作 |
|
|
73
|
+
| download | `@cloudcome/utils-browser/download` | 文件下载 |
|
|
74
|
+
| image | `@cloudcome/utils-browser/image` | 图片处理 |
|
|
75
|
+
| timer | `@cloudcome/utils-browser/timer` | 浏览器端定时器 |
|
|
76
|
+
| video | `@cloudcome/utils-browser/video` | 视频处理 |
|
|
77
77
|
|
|
78
78
|
### @cloudcome/utils-node
|
|
79
79
|
|
|
80
80
|
Node.js 端工具库:
|
|
81
81
|
|
|
82
|
-
| 子模块 | 导入路径
|
|
83
|
-
|
|
|
82
|
+
| 子模块 | 导入路径 | 功能 |
|
|
83
|
+
| ------ | ------------------------------ | ------------------------ |
|
|
84
84
|
| base64 | `@cloudcome/utils-node/base64` | Node.js 端 Base64 编解码 |
|
|
85
|
-
| crypto | `@cloudcome/utils-node/crypto` | Node.js 端加密工具
|
|
85
|
+
| crypto | `@cloudcome/utils-node/crypto` | Node.js 端加密工具 |
|
|
86
|
+
| jsonl | `@cloudcome/utils-node/jsonl` | JSONL 文件读写 |
|
|
86
87
|
|
|
87
88
|
### @cloudcome/utils-vue
|
|
88
89
|
|
|
89
90
|
Vue 3 工具库,依赖 `@cloudcome/utils-core` 和 `vue`:
|
|
90
91
|
|
|
91
|
-
| 子模块
|
|
92
|
-
|
|
|
93
|
-
| async
|
|
94
|
-
| component | `@cloudcome/utils-vue/component` | 组件工具(生命周期等)
|
|
95
|
-
| event
|
|
96
|
-
| request
|
|
97
|
-
| shared
|
|
98
|
-
| state
|
|
99
|
-
| time
|
|
100
|
-
| types
|
|
92
|
+
| 子模块 | 导入路径 | 功能 |
|
|
93
|
+
| --------- | -------------------------------- | ---------------------------- |
|
|
94
|
+
| async | `@cloudcome/utils-vue/async` | Vue 异步组合式函数 |
|
|
95
|
+
| component | `@cloudcome/utils-vue/component` | 组件工具(生命周期等) |
|
|
96
|
+
| event | `@cloudcome/utils-vue/event` | 事件工具 |
|
|
97
|
+
| request | `@cloudcome/utils-vue/request` | 请求组合式函数(useRequest) |
|
|
98
|
+
| shared | `@cloudcome/utils-vue/shared` | 共享工具 |
|
|
99
|
+
| state | `@cloudcome/utils-vue/state` | 状态管理工具 |
|
|
100
|
+
| time | `@cloudcome/utils-vue/time` | 时间相关组合式函数 |
|
|
101
|
+
| types | `@cloudcome/utils-vue/types` | 类型定义 |
|
|
101
102
|
|
|
102
103
|
### @cloudcome/utils-react
|
|
103
104
|
|
|
@@ -107,17 +108,15 @@ React 工具库。
|
|
|
107
108
|
|
|
108
109
|
UniApp 工具库,依赖 `@cloudcome/utils-core`、`@cloudcome/utils-vue`:
|
|
109
110
|
|
|
110
|
-
| 子模块
|
|
111
|
-
|
|
|
112
|
-
|
|
|
113
|
-
|
|
|
114
|
-
|
|
|
115
|
-
| database | `@cloudcome/utils-uni/database` | 数据库操作(CRUD、事务、分页、upsert 等) |
|
|
116
|
-
| page | `@cloudcome/utils-uni/page` | 页面相关工具 |
|
|
111
|
+
| 子模块 | 导入路径 | 功能 |
|
|
112
|
+
| -------- | ------------------------------- | ---------------------------------------------------- |
|
|
113
|
+
| client | `@cloudcome/utils-uni/client` | 客户端工具(App/页面生命周期、消息提示、异步工具等) |
|
|
114
|
+
| cloud | `@cloudcome/utils-uni/cloud` | 云函数工具(调用、错误处理、uni-id 等) |
|
|
115
|
+
| database | `@cloudcome/utils-uni/database` | 数据库操作(CRUD、事务、分页、upsert 等) |
|
|
117
116
|
|
|
118
117
|
## 开发
|
|
119
118
|
|
|
120
|
-
详见 [
|
|
119
|
+
详见 [CONTRIBUTING.md](./CONTRIBUTING.md)。
|
|
121
120
|
|
|
122
121
|
## 许可
|
|
123
122
|
|
package/dist/base64.cjs
CHANGED
|
@@ -1,15 +1,28 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
//#region src/base64.ts
|
|
3
|
+
/**
|
|
4
|
+
* 【浏览器环境】将字符串编码为 Base64 格式
|
|
5
|
+
* @param input 要编码的字符串
|
|
6
|
+
* @returns 编码后的 Base64 字符串
|
|
7
|
+
* @remarks
|
|
8
|
+
* 在 Node.js 环境中使用 Buffer 实现,在浏览器环境中使用 TextEncoder 和 btoa 实现
|
|
9
|
+
*/
|
|
3
10
|
function encodeBase64(input) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
return btoa(String.fromCharCode(...unit8Array));
|
|
11
|
+
const unit8Array = new TextEncoder().encode(input);
|
|
12
|
+
return btoa(String.fromCharCode(...unit8Array));
|
|
7
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* 【浏览器环境】 将 Base64 字符串解码为原始字符串
|
|
16
|
+
* @param input 要解码的 Base64 字符串
|
|
17
|
+
* @returns 解码后的原始字符串
|
|
18
|
+
*/
|
|
8
19
|
function decodeBase64(input) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
20
|
+
const decoder = new TextDecoder();
|
|
21
|
+
const unit8Array = Uint8Array.from(atob(input), (c) => c.charCodeAt(0));
|
|
22
|
+
return decoder.decode(unit8Array);
|
|
12
23
|
}
|
|
24
|
+
//#endregion
|
|
13
25
|
exports.decodeBase64 = decodeBase64;
|
|
14
26
|
exports.encodeBase64 = encodeBase64;
|
|
15
|
-
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=base64.cjs.map
|
package/dist/base64.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base64.cjs","sources":["../src/base64.ts"],"sourcesContent":["// @ref https://blog.csdn.net/m0_72642319/article/details/139743196\n\n/**\n * 【浏览器环境】将字符串编码为 Base64 格式\n * @param input 要编码的字符串\n * @returns 编码后的 Base64 字符串\n * @remarks\n * 在 Node.js 环境中使用 Buffer 实现,在浏览器环境中使用 TextEncoder 和 btoa 实现\n */\nexport function encodeBase64(input: string) {\n const encoder = new TextEncoder();\n const unit8Array = encoder.encode(input);\n return btoa(String.fromCharCode(...unit8Array));\n}\n\n/**\n * 【浏览器环境】 将 Base64 字符串解码为原始字符串\n * @param input 要解码的 Base64 字符串\n * @returns 解码后的原始字符串\n */\nexport function decodeBase64(input: string) {\n const decoder = new TextDecoder();\n const unit8Array = Uint8Array.from(atob(input), (c) => c.charCodeAt(0));\n return decoder.decode(unit8Array);\n}\n"],"
|
|
1
|
+
{"version":3,"file":"base64.cjs","names":[],"sources":["../src/base64.ts"],"sourcesContent":["// @ref https://blog.csdn.net/m0_72642319/article/details/139743196\n\n/**\n * 【浏览器环境】将字符串编码为 Base64 格式\n * @param input 要编码的字符串\n * @returns 编码后的 Base64 字符串\n * @remarks\n * 在 Node.js 环境中使用 Buffer 实现,在浏览器环境中使用 TextEncoder 和 btoa 实现\n */\nexport function encodeBase64(input: string) {\n const encoder = new TextEncoder();\n const unit8Array = encoder.encode(input);\n return btoa(String.fromCharCode(...unit8Array));\n}\n\n/**\n * 【浏览器环境】 将 Base64 字符串解码为原始字符串\n * @param input 要解码的 Base64 字符串\n * @returns 解码后的原始字符串\n */\nexport function decodeBase64(input: string) {\n const decoder = new TextDecoder();\n const unit8Array = Uint8Array.from(atob(input), (c) => c.charCodeAt(0));\n return decoder.decode(unit8Array);\n}\n"],"mappings":";;;;;;;;;AASA,SAAgB,aAAa,OAAe;CAE1C,MAAM,aAAa,IADC,aACD,CAAQ,OAAO,MAAM;CACxC,OAAO,KAAK,OAAO,aAAa,GAAG,WAAW,CAAC;;;;;;;AAQjD,SAAgB,aAAa,OAAe;CAC1C,MAAM,UAAU,IAAI,aAAa;CACjC,MAAM,aAAa,WAAW,KAAK,KAAK,MAAM,GAAG,MAAM,EAAE,WAAW,EAAE,CAAC;CACvE,OAAO,QAAQ,OAAO,WAAW"}
|
package/dist/base64.mjs
CHANGED
|
@@ -1,15 +1,26 @@
|
|
|
1
|
+
//#region src/base64.ts
|
|
2
|
+
/**
|
|
3
|
+
* 【浏览器环境】将字符串编码为 Base64 格式
|
|
4
|
+
* @param input 要编码的字符串
|
|
5
|
+
* @returns 编码后的 Base64 字符串
|
|
6
|
+
* @remarks
|
|
7
|
+
* 在 Node.js 环境中使用 Buffer 实现,在浏览器环境中使用 TextEncoder 和 btoa 实现
|
|
8
|
+
*/
|
|
1
9
|
function encodeBase64(input) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
return btoa(String.fromCharCode(...unit8Array));
|
|
10
|
+
const unit8Array = new TextEncoder().encode(input);
|
|
11
|
+
return btoa(String.fromCharCode(...unit8Array));
|
|
5
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* 【浏览器环境】 将 Base64 字符串解码为原始字符串
|
|
15
|
+
* @param input 要解码的 Base64 字符串
|
|
16
|
+
* @returns 解码后的原始字符串
|
|
17
|
+
*/
|
|
6
18
|
function decodeBase64(input) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
19
|
+
const decoder = new TextDecoder();
|
|
20
|
+
const unit8Array = Uint8Array.from(atob(input), (c) => c.charCodeAt(0));
|
|
21
|
+
return decoder.decode(unit8Array);
|
|
10
22
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
//# sourceMappingURL=base64.mjs.map
|
|
23
|
+
//#endregion
|
|
24
|
+
export { decodeBase64, encodeBase64 };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=base64.mjs.map
|
package/dist/base64.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base64.mjs","sources":["../src/base64.ts"],"sourcesContent":["// @ref https://blog.csdn.net/m0_72642319/article/details/139743196\n\n/**\n * 【浏览器环境】将字符串编码为 Base64 格式\n * @param input 要编码的字符串\n * @returns 编码后的 Base64 字符串\n * @remarks\n * 在 Node.js 环境中使用 Buffer 实现,在浏览器环境中使用 TextEncoder 和 btoa 实现\n */\nexport function encodeBase64(input: string) {\n const encoder = new TextEncoder();\n const unit8Array = encoder.encode(input);\n return btoa(String.fromCharCode(...unit8Array));\n}\n\n/**\n * 【浏览器环境】 将 Base64 字符串解码为原始字符串\n * @param input 要解码的 Base64 字符串\n * @returns 解码后的原始字符串\n */\nexport function decodeBase64(input: string) {\n const decoder = new TextDecoder();\n const unit8Array = Uint8Array.from(atob(input), (c) => c.charCodeAt(0));\n return decoder.decode(unit8Array);\n}\n"],"
|
|
1
|
+
{"version":3,"file":"base64.mjs","names":[],"sources":["../src/base64.ts"],"sourcesContent":["// @ref https://blog.csdn.net/m0_72642319/article/details/139743196\n\n/**\n * 【浏览器环境】将字符串编码为 Base64 格式\n * @param input 要编码的字符串\n * @returns 编码后的 Base64 字符串\n * @remarks\n * 在 Node.js 环境中使用 Buffer 实现,在浏览器环境中使用 TextEncoder 和 btoa 实现\n */\nexport function encodeBase64(input: string) {\n const encoder = new TextEncoder();\n const unit8Array = encoder.encode(input);\n return btoa(String.fromCharCode(...unit8Array));\n}\n\n/**\n * 【浏览器环境】 将 Base64 字符串解码为原始字符串\n * @param input 要解码的 Base64 字符串\n * @returns 解码后的原始字符串\n */\nexport function decodeBase64(input: string) {\n const decoder = new TextDecoder();\n const unit8Array = Uint8Array.from(atob(input), (c) => c.charCodeAt(0));\n return decoder.decode(unit8Array);\n}\n"],"mappings":";;;;;;;;AASA,SAAgB,aAAa,OAAe;CAE1C,MAAM,aAAa,IADC,aACD,CAAQ,OAAO,MAAM;CACxC,OAAO,KAAK,OAAO,aAAa,GAAG,WAAW,CAAC;;;;;;;AAQjD,SAAgB,aAAa,OAAe;CAC1C,MAAM,UAAU,IAAI,aAAa;CACjC,MAAM,aAAa,WAAW,KAAK,KAAK,MAAM,GAAG,MAAM,EAAE,WAAW,EAAE,CAAC;CACvE,OAAO,QAAQ,OAAO,WAAW"}
|
package/dist/cache.cjs
CHANGED
|
@@ -1,87 +1,99 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
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
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
2
|
+
let _cloudcome_utils_core_cache = require("@cloudcome/utils-core/cache");
|
|
3
|
+
//#region src/cache.ts
|
|
4
|
+
/**
|
|
5
|
+
* 使用浏览器存储(localStorage 或 sessionStorage)实现的缓存类
|
|
6
|
+
* @template T - 缓存数据的类型
|
|
7
|
+
*/
|
|
8
|
+
var StorageCache = class extends _cloudcome_utils_core_cache.AbstractCache {
|
|
9
|
+
/**
|
|
10
|
+
* 创建一个新的 StorageCache 实例
|
|
11
|
+
* @param storage - 使用的存储实现(localStorage 或 sessionStorage)
|
|
12
|
+
* @param namespace - 可选,用于为缓存键添加前缀的命名空间
|
|
13
|
+
*/
|
|
14
|
+
constructor(storage, namespace = "") {
|
|
15
|
+
super();
|
|
16
|
+
this.storage = storage;
|
|
17
|
+
this.namespace = namespace;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 通过ID获取缓存数据
|
|
21
|
+
* @param id - 要获取的缓存键
|
|
22
|
+
* @returns 如果找到且未过期则返回缓存数据,否则返回null
|
|
23
|
+
*/
|
|
24
|
+
get(id) {
|
|
25
|
+
const { storage, namespace } = this;
|
|
26
|
+
const fullId = namespace ? `${namespace}:${id}` : id;
|
|
27
|
+
try {
|
|
28
|
+
const cachedString = storage.getItem(fullId);
|
|
29
|
+
if (!cachedString) return null;
|
|
30
|
+
const cached = JSON.parse(cachedString);
|
|
31
|
+
if (cached.createdAt + cached.maxAge < Date.now()) {
|
|
32
|
+
this.del(id);
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
return cached;
|
|
36
|
+
} catch {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* 将数据存储到缓存中
|
|
42
|
+
* @param id - 存储数据使用的缓存键
|
|
43
|
+
* @param data - 要缓存的数据
|
|
44
|
+
* @param options - 可选的缓存配置
|
|
45
|
+
* @returns 成功返回true,存储失败返回false
|
|
46
|
+
*/
|
|
47
|
+
set(id, data, options) {
|
|
48
|
+
const { storage, namespace } = this;
|
|
49
|
+
const fullId = namespace ? `${namespace}:${id}` : id;
|
|
50
|
+
try {
|
|
51
|
+
storage.setItem(fullId, JSON.stringify({
|
|
52
|
+
id,
|
|
53
|
+
data,
|
|
54
|
+
createdAt: Date.now(),
|
|
55
|
+
maxAge: options?.maxAge || 0
|
|
56
|
+
}));
|
|
57
|
+
} catch {}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* 通过ID删除缓存数据
|
|
61
|
+
* @param id - 要删除的缓存键
|
|
62
|
+
*/
|
|
63
|
+
del(id) {
|
|
64
|
+
const { storage, namespace } = this;
|
|
65
|
+
const fullId = namespace ? `${namespace}:${id}` : id;
|
|
66
|
+
try {
|
|
67
|
+
storage.removeItem(fullId);
|
|
68
|
+
} catch {}
|
|
69
|
+
}
|
|
70
|
+
clear() {
|
|
71
|
+
try {
|
|
72
|
+
this.storage.clear();
|
|
73
|
+
} catch {}
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* 创建一个使用 localStorage 的缓存实例
|
|
78
|
+
* @template T - 缓存数据的类型
|
|
79
|
+
* @param namespace - 可选,用于为缓存键添加前缀的命名空间
|
|
80
|
+
* @returns 使用 localStorage 的新 StorageCache 实例
|
|
81
|
+
*/
|
|
78
82
|
function createLocalCache(namespace) {
|
|
79
|
-
|
|
83
|
+
return new StorageCache(localStorage, namespace);
|
|
80
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* 创建一个使用 sessionStorage 的缓存实例
|
|
87
|
+
* @template T - 缓存数据的类型
|
|
88
|
+
* @param namespace - 可选,用于为缓存键添加前缀的命名空间
|
|
89
|
+
* @returns 使用 sessionStorage 的新 StorageCache 实例
|
|
90
|
+
*/
|
|
81
91
|
function createSessionCache(namespace) {
|
|
82
|
-
|
|
92
|
+
return new StorageCache(sessionStorage, namespace);
|
|
83
93
|
}
|
|
94
|
+
//#endregion
|
|
84
95
|
exports.StorageCache = StorageCache;
|
|
85
96
|
exports.createLocalCache = createLocalCache;
|
|
86
97
|
exports.createSessionCache = createSessionCache;
|
|
87
|
-
|
|
98
|
+
|
|
99
|
+
//# sourceMappingURL=cache.cjs.map
|
package/dist/cache.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.cjs","sources":["../src/cache.ts"],"sourcesContent":["import { AbstractCache, type
|
|
1
|
+
{"version":3,"file":"cache.cjs","names":[],"sources":["../src/cache.ts"],"sourcesContent":["import { AbstractCache, type Cached, type CacheOptions } from '@cloudcome/utils-core/cache';\n\n/**\n * 使用浏览器存储(localStorage 或 sessionStorage)实现的缓存类\n * @template T - 缓存数据的类型\n */\nexport class StorageCache<T> extends AbstractCache<T> {\n /**\n * 创建一个新的 StorageCache 实例\n * @param storage - 使用的存储实现(localStorage 或 sessionStorage)\n * @param namespace - 可选,用于为缓存键添加前缀的命名空间\n */\n constructor(\n readonly storage: Storage,\n readonly namespace = '',\n ) {\n super();\n }\n\n /**\n * 通过ID获取缓存数据\n * @param id - 要获取的缓存键\n * @returns 如果找到且未过期则返回缓存数据,否则返回null\n */\n get(id: string): Cached<T> | null {\n const { storage, namespace } = this;\n const fullId = namespace ? `${namespace}:${id}` : id;\n\n try {\n const cachedString = storage.getItem(fullId);\n if (!cachedString) return null;\n\n const cached = JSON.parse(cachedString);\n\n if (cached.createdAt + cached.maxAge < Date.now()) {\n this.del(id);\n return null;\n }\n\n return cached;\n } catch {\n return null;\n }\n }\n\n /**\n * 将数据存储到缓存中\n * @param id - 存储数据使用的缓存键\n * @param data - 要缓存的数据\n * @param options - 可选的缓存配置\n * @returns 成功返回true,存储失败返回false\n */\n set(id: string, data: T, options?: CacheOptions) {\n const { storage, namespace } = this;\n const fullId = namespace ? `${namespace}:${id}` : id;\n\n try {\n storage.setItem(\n fullId,\n JSON.stringify({\n id,\n data,\n createdAt: Date.now(),\n maxAge: options?.maxAge || 0,\n }),\n );\n } catch {\n //\n }\n }\n\n /**\n * 通过ID删除缓存数据\n * @param id - 要删除的缓存键\n */\n del(id: string) {\n const { storage, namespace } = this;\n const fullId = namespace ? `${namespace}:${id}` : id;\n\n try {\n storage.removeItem(fullId);\n } catch {\n //\n }\n }\n\n clear() {\n try {\n this.storage.clear();\n } catch {\n //\n }\n }\n}\n\n/**\n * 创建一个使用 localStorage 的缓存实例\n * @template T - 缓存数据的类型\n * @param namespace - 可选,用于为缓存键添加前缀的命名空间\n * @returns 使用 localStorage 的新 StorageCache 实例\n */\nexport function createLocalCache<T>(namespace?: string): AbstractCache<T> {\n return new StorageCache<T>(localStorage, namespace);\n}\n\n/**\n * 创建一个使用 sessionStorage 的缓存实例\n * @template T - 缓存数据的类型\n * @param namespace - 可选,用于为缓存键添加前缀的命名空间\n * @returns 使用 sessionStorage 的新 StorageCache 实例\n */\nexport function createSessionCache<T>(namespace?: string): AbstractCache<T> {\n return new StorageCache<T>(sessionStorage, namespace);\n}\n"],"mappings":";;;;;;;AAMA,IAAa,eAAb,cAAqC,4BAAA,cAAiB;;;;;;CAMpD,YACE,SACA,YAAqB,IACrB;EACA,OAAO;EAHE,KAAA,UAAA;EACA,KAAA,YAAA;;;;;;;CAUX,IAAI,IAA8B;EAChC,MAAM,EAAE,SAAS,cAAc;EAC/B,MAAM,SAAS,YAAY,GAAG,UAAU,GAAG,OAAO;EAElD,IAAI;GACF,MAAM,eAAe,QAAQ,QAAQ,OAAO;GAC5C,IAAI,CAAC,cAAc,OAAO;GAE1B,MAAM,SAAS,KAAK,MAAM,aAAa;GAEvC,IAAI,OAAO,YAAY,OAAO,SAAS,KAAK,KAAK,EAAE;IACjD,KAAK,IAAI,GAAG;IACZ,OAAO;;GAGT,OAAO;UACD;GACN,OAAO;;;;;;;;;;CAWX,IAAI,IAAY,MAAS,SAAwB;EAC/C,MAAM,EAAE,SAAS,cAAc;EAC/B,MAAM,SAAS,YAAY,GAAG,UAAU,GAAG,OAAO;EAElD,IAAI;GACF,QAAQ,QACN,QACA,KAAK,UAAU;IACb;IACA;IACA,WAAW,KAAK,KAAK;IACrB,QAAQ,SAAS,UAAU;IAC5B,CAAC,CACH;UACK;;;;;;CASV,IAAI,IAAY;EACd,MAAM,EAAE,SAAS,cAAc;EAC/B,MAAM,SAAS,YAAY,GAAG,UAAU,GAAG,OAAO;EAElD,IAAI;GACF,QAAQ,WAAW,OAAO;UACpB;;CAKV,QAAQ;EACN,IAAI;GACF,KAAK,QAAQ,OAAO;UACd;;;;;;;;;AAYZ,SAAgB,iBAAoB,WAAsC;CACxE,OAAO,IAAI,aAAgB,cAAc,UAAU;;;;;;;;AASrD,SAAgB,mBAAsB,WAAsC;CAC1E,OAAO,IAAI,aAAgB,gBAAgB,UAAU"}
|
package/dist/cache.d.ts
CHANGED