@zenweb/cache 4.2.1 → 4.2.2

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 CHANGED
@@ -1,5 +1,8 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.2.2] - 2023-8-23
4
+ 修改: 除了 Buffer 类型意外全部都使用 JSON 序列化
5
+
3
6
  ## [4.2.1] - 2023-8-23
4
7
  fix: 内容未压缩,客户端支持压缩内容时却标识为压缩内容
5
8
 
package/dist/cache.d.ts CHANGED
@@ -34,10 +34,10 @@ export declare class Cache {
34
34
  /**
35
35
  * 缓存对象
36
36
  * @param key 缓存key
37
- * @param value 缓存值,对象会经过 JSON 序列化
37
+ * @param value 缓存值,除了 `Buffer` 以外的值会经过 JSON 序列化
38
38
  * @param ttlopt 缓存有效时长 (秒),不设置取默认设置 | 缓存选项
39
39
  */
40
- set(key: string, value: object | number | string | Buffer, ttlopt?: number | SetOption): Promise<SetResult>;
40
+ set(key: string, value: any, ttlopt?: number | SetOption): Promise<SetResult>;
41
41
  /**
42
42
  * 直接取得缓存
43
43
  */
@@ -46,7 +46,7 @@ export declare class Cache {
46
46
  * 取得缓存对象
47
47
  * @param key 缓存key
48
48
  */
49
- get<T>(key: string, opt: {
49
+ get(key: string, opt: {
50
50
  parse: false;
51
51
  } & GetOption): Promise<CacheResult | undefined>;
52
52
  get<T = unknown>(key: string, opt?: {
@@ -59,10 +59,10 @@ export declare class Cache {
59
59
  * @param key 缓存KEY
60
60
  * @param fetch 缓存设置方法回调
61
61
  */
62
- lockGet<T extends {} | string>(key: string, fetch: () => Promise<T> | T, _opt: {
62
+ lockGet<T = unknown>(key: string, fetch: () => Promise<T> | T, _opt: {
63
63
  parse: false;
64
64
  } & LockGetOption): Promise<CacheResult>;
65
- lockGet<T extends {} | string>(key: string, fetch: () => Promise<T> | T, _opt?: {
65
+ lockGet<T = unknown>(key: string, fetch: () => Promise<T> | T, _opt?: {
66
66
  parse?: true;
67
67
  } & LockGetOption): Promise<T>;
68
68
  /**
package/dist/cache.js CHANGED
@@ -54,13 +54,13 @@ class Cache {
54
54
  /**
55
55
  * 缓存对象
56
56
  * @param key 缓存key
57
- * @param value 缓存值,对象会经过 JSON 序列化
57
+ * @param value 缓存值,除了 `Buffer` 以外的值会经过 JSON 序列化
58
58
  * @param ttlopt 缓存有效时长 (秒),不设置取默认设置 | 缓存选项
59
59
  */
60
60
  async set(key, value, ttlopt) {
61
61
  var _a;
62
62
  let compressed;
63
- let data = Buffer.isBuffer(value) ? value : typeof value === 'object' ? JSON.stringify(value) : String(value);
63
+ let data = Buffer.isBuffer(value) ? value : JSON.stringify(value);
64
64
  const opt = Object.assign({
65
65
  ttl: 60,
66
66
  compressMinLength: 1024,
@@ -19,14 +19,15 @@ function cached(key, opt) {
19
19
  const decompress = ctx.acceptsEncodings('gzip') === false;
20
20
  const _opt = Object.assign({
21
21
  type: 'json'
22
- }, opt, {
22
+ }, opt);
23
+ const result = await ctx.core.cache2.lockGet(_key, async function () {
24
+ await next();
25
+ return Buffer.isBuffer(ctx.body) ? ctx.body : Buffer.from(ctx.body);
26
+ }, {
27
+ ..._opt,
23
28
  parse: false,
24
29
  decompress,
25
30
  });
26
- const result = await ctx.core.cache2.lockGet(_key, async function () {
27
- await next();
28
- return ctx.body;
29
- }, _opt);
30
31
  if (result.compressed) {
31
32
  ctx.set('Content-Encoding', 'gzip');
32
33
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zenweb/cache",
3
- "version": "4.2.1",
3
+ "version": "4.2.2",
4
4
  "description": "Zenweb Cache module",
5
5
  "exports": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",