mormati-redis 0.1.2 → 0.1.4
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/dist/modules/cache/cache.controller.d.ts +11 -0
- package/dist/modules/cache/cache.controller.js +47 -0
- package/dist/modules/cache/cache.controller.js.map +1 -0
- package/dist/modules/cache/cache.interceptor.js.map +1 -1
- package/dist/modules/cache/cache.module.js +3 -1
- package/dist/modules/cache/cache.module.js.map +1 -1
- package/dist/modules/cache/cache.service.d.ts +6 -1
- package/dist/modules/cache/cache.service.js +41 -4
- package/dist/modules/cache/cache.service.js.map +1 -1
- package/dist/modules/cache/cache.type.d.ts +12 -0
- package/dist/modules/cache/cache.utils.js +5 -7
- package/dist/modules/cache/cache.utils.js.map +1 -1
- package/dist/modules/cache/index.d.ts +1 -0
- package/dist/modules/cache/index.js +1 -0
- package/dist/modules/cache/index.js.map +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CacheService } from './cache.service';
|
|
2
|
+
import { CacheStats } from './cache.type';
|
|
3
|
+
export declare class CacheController {
|
|
4
|
+
private readonly cacheService;
|
|
5
|
+
constructor(cacheService: CacheService);
|
|
6
|
+
getCacheStats(): CacheStats;
|
|
7
|
+
resetCacheStats(): {
|
|
8
|
+
message: string;
|
|
9
|
+
stats: CacheStats;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.CacheController = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const cache_service_1 = require("./cache.service");
|
|
15
|
+
let CacheController = class CacheController {
|
|
16
|
+
constructor(cacheService) {
|
|
17
|
+
this.cacheService = cacheService;
|
|
18
|
+
}
|
|
19
|
+
getCacheStats() {
|
|
20
|
+
return this.cacheService.getCacheStats();
|
|
21
|
+
}
|
|
22
|
+
resetCacheStats() {
|
|
23
|
+
this.cacheService.resetCacheStats();
|
|
24
|
+
return {
|
|
25
|
+
message: 'Cache statistics have been reset successfully',
|
|
26
|
+
stats: this.cacheService.getCacheStats(),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
exports.CacheController = CacheController;
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, common_1.Get)('stats'),
|
|
33
|
+
__metadata("design:type", Function),
|
|
34
|
+
__metadata("design:paramtypes", []),
|
|
35
|
+
__metadata("design:returntype", Object)
|
|
36
|
+
], CacheController.prototype, "getCacheStats", null);
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, common_1.Get)('stats/reset'),
|
|
39
|
+
__metadata("design:type", Function),
|
|
40
|
+
__metadata("design:paramtypes", []),
|
|
41
|
+
__metadata("design:returntype", Object)
|
|
42
|
+
], CacheController.prototype, "resetCacheStats", null);
|
|
43
|
+
exports.CacheController = CacheController = __decorate([
|
|
44
|
+
(0, common_1.Controller)('cache'),
|
|
45
|
+
__metadata("design:paramtypes", [cache_service_1.CacheService])
|
|
46
|
+
], CacheController);
|
|
47
|
+
//# sourceMappingURL=cache.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.controller.js","sourceRoot":"","sources":["../../../../../libs/redis/src/modules/cache/cache.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAuD;AACvD,mDAA+C;AAIxC,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,YAA6B,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IAAG,CAAC;IAO3D,aAAa;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC;IAOD,eAAe;QACb,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC;QACpC,OAAO;YACL,OAAO,EAAE,+CAA+C;YACxD,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;SACzC,CAAC;IACJ,CAAC;CACF,CAAA;AAxBY,0CAAe;AAQ1B;IADC,IAAA,YAAG,EAAC,OAAO,CAAC;;;;oDAGZ;AAOD;IADC,IAAA,YAAG,EAAC,aAAa,CAAC;;;;sDAOlB;0BAvBU,eAAe;IAD3B,IAAA,mBAAU,EAAC,OAAO,CAAC;qCAEyB,4BAAY;GAD5C,eAAe,CAwB3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.interceptor.js","sourceRoot":"","sources":["../../../../../libs/redis/src/modules/cache/cache.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAKwB;AACxB,uCAAyC;AACzC,+BAAsC;AACtC,8CAAqC;AACrC,mDAA+C;AAE/C,+CAAoE;AAG7D,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IACzB,YACqB,SAAoB,EACpB,YAA0B;QAD1B,cAAS,GAAT,SAAS,CAAW;QACpB,iBAAY,GAAZ,YAAY,CAAc;IAC3C,CAAC;IAEL,KAAK,CAAC,SAAS,CAAC,OAAyB,EAAE,IAAiB;QAGxD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAClC,8BAAgB,EAChB,OAAO,CAAC,UAAU,EAAE,CACvB,CAAC;QACF,IAAI,CAAC,WAAW;YACZ,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QAEzB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,+BAAiB,EAAE,GAAG,WAAW,CAAC;QACjE,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,CAAC;QAEtD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC;QACpD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;QAEhC,IAAI,KAAK,IAAI,UAAU;YACnB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QAGzB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC;YAChD,OAAO;YACP,MAAM;YACN,MAAM;YACN,GAAG;YACH,QAAQ;YACR,KAAK;YACL,IAAI;SACP,CAAC,CAAC;QAGH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC3E,IAAI,WAAW,IAAI,KAAK,IAAI,kBAAkB,EAAE,CAAC;YAC7C,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC;YAC5C,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACpD,OAAO,IAAA,SAAE,EAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QAGD,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACrB,IAAA,eAAG,EAAC,KAAK,EAAE,YAAY,EAAE,EAAE;YAEvB,MAAM,QAAQ,GAAG;gBACb,GAAG;gBACH,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;aACvB,CAAC;YACF,MAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QACnF,CAAC,CAAC,CACL,CAAC;IACN,CAAC;IAEO,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"cache.interceptor.js","sourceRoot":"","sources":["../../../../../libs/redis/src/modules/cache/cache.interceptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,13 +11,14 @@ const common_1 = require("@nestjs/common");
|
|
|
11
11
|
const core_1 = require("@nestjs/core");
|
|
12
12
|
const cache_service_1 = require("./cache.service");
|
|
13
13
|
const cache_interceptor_1 = require("./cache.interceptor");
|
|
14
|
+
const cache_controller_1 = require("./cache.controller");
|
|
14
15
|
let CacheModule = class CacheModule {
|
|
15
16
|
};
|
|
16
17
|
exports.CacheModule = CacheModule;
|
|
17
18
|
exports.CacheModule = CacheModule = __decorate([
|
|
18
19
|
(0, common_1.Module)({
|
|
19
20
|
imports: [],
|
|
20
|
-
controllers: [],
|
|
21
|
+
controllers: [cache_controller_1.CacheController],
|
|
21
22
|
providers: [
|
|
22
23
|
cache_service_1.CacheService,
|
|
23
24
|
{
|
|
@@ -25,6 +26,7 @@ exports.CacheModule = CacheModule = __decorate([
|
|
|
25
26
|
useClass: cache_interceptor_1.CacheInterceptor,
|
|
26
27
|
},
|
|
27
28
|
],
|
|
29
|
+
exports: [cache_service_1.CacheService],
|
|
28
30
|
})
|
|
29
31
|
], CacheModule);
|
|
30
32
|
//# sourceMappingURL=cache.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.module.js","sourceRoot":"","sources":["../../../../../libs/redis/src/modules/cache/cache.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,uCAA+C;AAC/C,mDAA+C;AAC/C,2DAAuD;
|
|
1
|
+
{"version":3,"file":"cache.module.js","sourceRoot":"","sources":["../../../../../libs/redis/src/modules/cache/cache.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,uCAA+C;AAC/C,mDAA+C;AAC/C,2DAAuD;AACvD,yDAAqD;AAc9C,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAI,CAAA;AAAf,kCAAW;sBAAX,WAAW;IAZvB,IAAA,eAAM,EAAC;QACJ,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,CAAC,kCAAe,CAAC;QAC9B,SAAS,EAAE;YACP,4BAAY;YACZ;gBACI,OAAO,EAAE,sBAAe;gBACxB,QAAQ,EAAE,oCAAgB;aAC7B;SACJ;QACD,OAAO,EAAE,CAAC,4BAAY,CAAC;KAC1B,CAAC;GACW,WAAW,CAAI"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { RedisService } from '../redis/redis.service';
|
|
2
|
-
import { CacheKeyProps, CacheMetadata, CacheResultWithMetadata } from './cache.type';
|
|
2
|
+
import { CacheKeyProps, CacheMetadata, CacheResultWithMetadata, CacheStats } from './cache.type';
|
|
3
3
|
export declare class CacheService {
|
|
4
4
|
private readonly redisService;
|
|
5
5
|
private readonly hashPrefix;
|
|
6
|
+
private cacheHits;
|
|
7
|
+
private cacheMisses;
|
|
8
|
+
private cacheErrors;
|
|
6
9
|
constructor(redisService: RedisService);
|
|
7
10
|
generateCacheKey(props: CacheKeyProps): string;
|
|
8
11
|
setCache<T>(key: string, data: T): Promise<boolean>;
|
|
@@ -16,4 +19,6 @@ export declare class CacheService {
|
|
|
16
19
|
deleteAllCache(): Promise<string[]>;
|
|
17
20
|
setCacheWithMetadata<T>(key: string, data: T, metaData: CacheMetadata): Promise<boolean>;
|
|
18
21
|
getCacheWithMetadata<T>(key: string): Promise<CacheResultWithMetadata<T> | null>;
|
|
22
|
+
getCacheStats(): CacheStats;
|
|
23
|
+
resetCacheStats(): void;
|
|
19
24
|
}
|
|
@@ -18,11 +18,14 @@ let CacheService = class CacheService {
|
|
|
18
18
|
constructor(redisService) {
|
|
19
19
|
this.redisService = redisService;
|
|
20
20
|
this.hashPrefix = cache_const_1.CACHE_HASH_PREFIX;
|
|
21
|
+
this.cacheHits = 0;
|
|
22
|
+
this.cacheMisses = 0;
|
|
23
|
+
this.cacheErrors = 0;
|
|
21
24
|
}
|
|
22
25
|
generateCacheKey(props) {
|
|
26
|
+
const { service, module, method, url, language, query, body, } = props;
|
|
27
|
+
const hashs = [this.hashPrefix, service, module];
|
|
23
28
|
try {
|
|
24
|
-
const { service, module, method, url, language, query, body, } = props;
|
|
25
|
-
const hashs = [this.hashPrefix, service, module];
|
|
26
29
|
if (method)
|
|
27
30
|
hashs.push(method);
|
|
28
31
|
if (url)
|
|
@@ -41,6 +44,8 @@ let CacheService = class CacheService {
|
|
|
41
44
|
}
|
|
42
45
|
catch (error) {
|
|
43
46
|
console.log("## Error: 'generateCacheKey' in CacheService", error);
|
|
47
|
+
this.cacheErrors++;
|
|
48
|
+
return `${this.hashPrefix}:error:${Date.now()}:${hashs.join(':')}`;
|
|
44
49
|
}
|
|
45
50
|
}
|
|
46
51
|
async setCache(key, data) {
|
|
@@ -51,6 +56,7 @@ let CacheService = class CacheService {
|
|
|
51
56
|
}
|
|
52
57
|
catch (error) {
|
|
53
58
|
console.log("## Error: 'setCache' in CacheService", error);
|
|
59
|
+
this.cacheErrors++;
|
|
54
60
|
return false;
|
|
55
61
|
}
|
|
56
62
|
}
|
|
@@ -63,6 +69,7 @@ let CacheService = class CacheService {
|
|
|
63
69
|
}
|
|
64
70
|
catch (error) {
|
|
65
71
|
console.log("## Error: 'getCache' in CacheService", error);
|
|
72
|
+
this.cacheErrors++;
|
|
66
73
|
return null;
|
|
67
74
|
}
|
|
68
75
|
}
|
|
@@ -82,6 +89,7 @@ let CacheService = class CacheService {
|
|
|
82
89
|
}
|
|
83
90
|
catch (error) {
|
|
84
91
|
console.log("## Error: 'getCacheKeys' in CacheService", error);
|
|
92
|
+
this.cacheErrors++;
|
|
85
93
|
return result;
|
|
86
94
|
}
|
|
87
95
|
}
|
|
@@ -98,6 +106,7 @@ let CacheService = class CacheService {
|
|
|
98
106
|
}
|
|
99
107
|
catch (error) {
|
|
100
108
|
console.log("## Error: 'deleteCache' in CacheService", error);
|
|
109
|
+
this.cacheErrors++;
|
|
101
110
|
return false;
|
|
102
111
|
}
|
|
103
112
|
}
|
|
@@ -110,6 +119,7 @@ let CacheService = class CacheService {
|
|
|
110
119
|
}
|
|
111
120
|
catch (error) {
|
|
112
121
|
console.log("## Error: 'deleteAllCacheByPattern' in CacheService", error);
|
|
122
|
+
this.cacheErrors++;
|
|
113
123
|
return [];
|
|
114
124
|
}
|
|
115
125
|
}
|
|
@@ -122,6 +132,7 @@ let CacheService = class CacheService {
|
|
|
122
132
|
}
|
|
123
133
|
catch (error) {
|
|
124
134
|
console.log("## Error: 'deleteAllCache' in CacheService", error);
|
|
135
|
+
this.cacheErrors++;
|
|
125
136
|
return [];
|
|
126
137
|
}
|
|
127
138
|
}
|
|
@@ -135,31 +146,57 @@ let CacheService = class CacheService {
|
|
|
135
146
|
}
|
|
136
147
|
catch (error) {
|
|
137
148
|
console.log("## Error: 'setCacheWithMetadata' in CacheService", error);
|
|
149
|
+
this.cacheErrors++;
|
|
138
150
|
return false;
|
|
139
151
|
}
|
|
140
152
|
}
|
|
141
153
|
async getCacheWithMetadata(key) {
|
|
142
154
|
try {
|
|
143
155
|
const dataWithMetaData = await this.getCache(key);
|
|
144
|
-
if (!dataWithMetaData)
|
|
156
|
+
if (!dataWithMetaData) {
|
|
157
|
+
this.cacheMisses++;
|
|
145
158
|
return null;
|
|
159
|
+
}
|
|
146
160
|
const { data, ...metadata } = dataWithMetaData;
|
|
147
161
|
const ttl = metadata.ttl;
|
|
148
|
-
if (ttl == 'no-ttl')
|
|
162
|
+
if (ttl == 'no-ttl') {
|
|
163
|
+
this.cacheHits++;
|
|
149
164
|
return dataWithMetaData;
|
|
165
|
+
}
|
|
150
166
|
const timeElapsed = Math.floor((Date.now() - metadata.cachedAt) / 1000);
|
|
151
167
|
if (!ttl || timeElapsed > ttl) {
|
|
168
|
+
this.cacheMisses++;
|
|
152
169
|
await this.deleteCache(key);
|
|
153
170
|
return null;
|
|
154
171
|
}
|
|
172
|
+
this.cacheHits++;
|
|
155
173
|
dataWithMetaData.ttl = Math.max(0, ttl - timeElapsed);
|
|
156
174
|
return dataWithMetaData;
|
|
157
175
|
}
|
|
158
176
|
catch (error) {
|
|
159
177
|
console.log("## Error: 'getCacheWithMetadata' in CacheService", error);
|
|
178
|
+
this.cacheErrors++;
|
|
160
179
|
return null;
|
|
161
180
|
}
|
|
162
181
|
}
|
|
182
|
+
getCacheStats() {
|
|
183
|
+
const totalRequests = this.cacheHits + this.cacheMisses;
|
|
184
|
+
const missRate = totalRequests > 0 ? this.cacheMisses / totalRequests : 0;
|
|
185
|
+
const hitRate = totalRequests > 0 ? this.cacheHits / totalRequests : 0;
|
|
186
|
+
return {
|
|
187
|
+
totalRequests,
|
|
188
|
+
misses: this.cacheMisses,
|
|
189
|
+
missRate: Math.round(missRate * 10000) / 100,
|
|
190
|
+
hits: this.cacheHits,
|
|
191
|
+
hitRate: Math.round(hitRate * 10000) / 100,
|
|
192
|
+
errors: this.cacheErrors,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
resetCacheStats() {
|
|
196
|
+
this.cacheHits = 0;
|
|
197
|
+
this.cacheMisses = 0;
|
|
198
|
+
this.cacheErrors = 0;
|
|
199
|
+
}
|
|
163
200
|
};
|
|
164
201
|
exports.CacheService = CacheService;
|
|
165
202
|
exports.CacheService = CacheService = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.service.js","sourceRoot":"","sources":["../../../../../libs/redis/src/modules/cache/cache.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,0DAAsD;AAEtD,+CAA2C;AAC3C,+CAAkD;AAG3C,IAAM,YAAY,GAAlB,MAAM,YAAY;
|
|
1
|
+
{"version":3,"file":"cache.service.js","sourceRoot":"","sources":["../../../../../libs/redis/src/modules/cache/cache.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,3 +19,15 @@ export interface CacheMetadata {
|
|
|
19
19
|
export interface CacheResultWithMetadata<T = any> extends CacheMetadata {
|
|
20
20
|
data: T;
|
|
21
21
|
}
|
|
22
|
+
export interface CacheStats {
|
|
23
|
+
totalRequests: number;
|
|
24
|
+
misses: number;
|
|
25
|
+
missRate: number;
|
|
26
|
+
hits: number;
|
|
27
|
+
hitRate: number;
|
|
28
|
+
errors: number;
|
|
29
|
+
}
|
|
30
|
+
export interface SetCacheHeaderOption {
|
|
31
|
+
type: 'HIT' | 'MISS';
|
|
32
|
+
ttl: number | 'no-ttl';
|
|
33
|
+
}
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.hashObject = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
4
5
|
const hashObject = (obj) => {
|
|
5
6
|
const sortedKeys = Object.keys(obj).sort();
|
|
6
7
|
const parts = sortedKeys.map(key => `${key}=${JSON.stringify(obj[key])}`);
|
|
7
8
|
const str = parts.join('&');
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
hash = hash & hash;
|
|
13
|
-
}
|
|
14
|
-
return Math.abs(hash).toString(36);
|
|
9
|
+
return (0, crypto_1.createHash)('sha256')
|
|
10
|
+
.update(str)
|
|
11
|
+
.digest('hex')
|
|
12
|
+
.substring(0, 16);
|
|
15
13
|
};
|
|
16
14
|
exports.hashObject = hashObject;
|
|
17
15
|
//# sourceMappingURL=cache.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.utils.js","sourceRoot":"","sources":["../../../../../libs/redis/src/modules/cache/cache.utils.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"cache.utils.js","sourceRoot":"","sources":["../../../../../libs/redis/src/modules/cache/cache.utils.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAM7B,MAAM,UAAU,GAAG,CAAC,GAAwB,EAAU,EAAE;IAE3D,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAG5B,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC;SACtB,MAAM,CAAC,GAAG,CAAC;SACX,MAAM,CAAC,KAAK,CAAC;SACb,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1B,CAAC,CAAA;AAXY,QAAA,UAAU,cAWtB"}
|
|
@@ -16,6 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./cache.module"), exports);
|
|
18
18
|
__exportStar(require("./cache.service"), exports);
|
|
19
|
+
__exportStar(require("./cache.controller"), exports);
|
|
19
20
|
__exportStar(require("./cache.decorator"), exports);
|
|
20
21
|
__exportStar(require("./cache.interceptor"), exports);
|
|
21
22
|
__exportStar(require("./cache.utils"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/redis/src/modules/cache/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,kDAAgC;AAChC,oDAAkC;AAClC,sDAAoC;AACpC,gDAA8B;AAC9B,gDAA8B;AAC9B,+CAA6B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/redis/src/modules/cache/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,kDAAgC;AAChC,qDAAmC;AACnC,oDAAkC;AAClC,sDAAoC;AACpC,gDAA8B;AAC9B,gDAA8B;AAC9B,+CAA6B"}
|