@nest-omni/core 3.1.1-12 → 3.1.1-13
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/cache/cache-metrics.service.d.ts +83 -0
- package/cache/cache-metrics.service.js +298 -0
- package/cache/cache-serialization.service.d.ts +29 -0
- package/cache/cache-serialization.service.js +217 -0
- package/cache/cache.health.d.ts +35 -0
- package/cache/cache.health.js +193 -0
- package/cache/cache.module.d.ts +24 -0
- package/cache/cache.module.js +105 -0
- package/cache/cache.service.d.ts +35 -0
- package/cache/cache.service.js +280 -0
- package/cache/cache.warmup.service.d.ts +34 -0
- package/cache/cache.warmup.service.js +199 -0
- package/cache/decorators/cache-evict.decorator.d.ts +2 -0
- package/cache/decorators/cache-evict.decorator.js +72 -0
- package/cache/decorators/cache-put.decorator.d.ts +2 -0
- package/cache/decorators/cache-put.decorator.js +48 -0
- package/cache/decorators/cacheable.decorator.d.ts +4 -0
- package/cache/decorators/cacheable.decorator.js +68 -0
- package/cache/decorators/index.d.ts +3 -0
- package/cache/decorators/index.js +11 -0
- package/cache/dependencies/callback.dependency.d.ts +11 -0
- package/cache/dependencies/callback.dependency.js +92 -0
- package/cache/dependencies/chain.dependency.d.ts +20 -0
- package/cache/dependencies/chain.dependency.js +113 -0
- package/cache/dependencies/db.dependency.d.ts +15 -0
- package/cache/dependencies/db.dependency.js +71 -0
- package/cache/dependencies/file.dependency.d.ts +17 -0
- package/cache/dependencies/file.dependency.js +63 -0
- package/cache/dependencies/index.d.ts +6 -0
- package/cache/dependencies/index.js +22 -0
- package/cache/dependencies/tag.dependency.d.ts +16 -0
- package/cache/dependencies/tag.dependency.js +75 -0
- package/cache/dependencies/time.dependency.d.ts +19 -0
- package/cache/dependencies/time.dependency.js +71 -0
- package/cache/examples/quick-start.d.ts +5 -0
- package/cache/examples/quick-start.js +341 -0
- package/cache/index.d.ts +14 -0
- package/cache/index.js +41 -0
- package/cache/interfaces/cache-dependency.interface.d.ts +11 -0
- package/cache/interfaces/cache-dependency.interface.js +2 -0
- package/cache/interfaces/cache-options.interface.d.ts +32 -0
- package/cache/interfaces/cache-options.interface.js +9 -0
- package/cache/interfaces/cache-provider.interface.d.ts +28 -0
- package/cache/interfaces/cache-provider.interface.js +2 -0
- package/cache/interfaces/index.d.ts +3 -0
- package/cache/interfaces/index.js +19 -0
- package/cache/providers/base-cache.provider.d.ts +16 -0
- package/cache/providers/base-cache.provider.js +32 -0
- package/cache/providers/cls-cache.provider.d.ts +16 -0
- package/cache/providers/cls-cache.provider.js +140 -0
- package/cache/providers/index.d.ts +4 -0
- package/cache/providers/index.js +23 -0
- package/cache/providers/memory-cache.provider.d.ts +23 -0
- package/cache/providers/memory-cache.provider.js +130 -0
- package/cache/providers/redis-cache.provider.d.ts +23 -0
- package/cache/providers/redis-cache.provider.js +215 -0
- package/cache/utils/dependency-manager.util.d.ts +15 -0
- package/cache/utils/dependency-manager.util.js +141 -0
- package/cache/utils/index.d.ts +2 -0
- package/cache/utils/index.js +18 -0
- package/cache/utils/key-generator.util.d.ts +13 -0
- package/cache/utils/key-generator.util.js +74 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/package.json +4 -17
- package/redis-lock/index.d.ts +4 -0
- package/redis-lock/index.js +13 -0
- package/{setup → redis-lock}/redis-lock.decorator.d.ts +3 -0
- package/{setup → redis-lock}/redis-lock.decorator.js +25 -14
- package/redis-lock/redis-lock.examples.d.ts +13 -0
- package/redis-lock/redis-lock.examples.js +159 -0
- package/redis-lock/redis-lock.module.d.ts +23 -0
- package/redis-lock/redis-lock.module.js +117 -0
- package/{setup → redis-lock}/redis-lock.service.d.ts +9 -21
- package/{setup → redis-lock}/redis-lock.service.js +29 -103
- package/setup/index.d.ts +1 -2
- package/setup/index.js +1 -2
- package/setup/schedule.decorator.js +1 -1
- package/shared/serviceRegistryModule.js +63 -4
- package/shared/services/api-config.service.d.ts +0 -5
- package/shared/services/api-config.service.js +3 -27
|
@@ -0,0 +1,341 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.UserModule = exports.ExampleAppModule = exports.AppModule = void 0;
|
|
25
|
+
const common_1 = require("@nestjs/common");
|
|
26
|
+
const index_1 = require("../index");
|
|
27
|
+
let AppModule = class AppModule {
|
|
28
|
+
};
|
|
29
|
+
exports.AppModule = AppModule;
|
|
30
|
+
exports.ExampleAppModule = AppModule;
|
|
31
|
+
exports.ExampleAppModule = exports.AppModule = AppModule = __decorate([
|
|
32
|
+
(0, common_1.Module)({
|
|
33
|
+
imports: [
|
|
34
|
+
index_1.CacheModule.forRoot({
|
|
35
|
+
memoryTtl: 300000,
|
|
36
|
+
}),
|
|
37
|
+
],
|
|
38
|
+
})
|
|
39
|
+
], AppModule);
|
|
40
|
+
let UserService = class UserService {
|
|
41
|
+
constructor(cacheService) {
|
|
42
|
+
this.cacheService = cacheService;
|
|
43
|
+
}
|
|
44
|
+
getUserDirect(id) {
|
|
45
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
46
|
+
return yield this.cacheService.getOrSet(`user:${id}`, () => __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
yield new Promise((resolve) => setTimeout(resolve, 50));
|
|
48
|
+
return { id, name: `User ${id}`, email: `user${id}@example.com` };
|
|
49
|
+
}), {
|
|
50
|
+
ttl: 300000,
|
|
51
|
+
dependencies: [new index_1.TagDependency(['user-data'])],
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
getUserWithDecorator(id) {
|
|
56
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
yield new Promise((resolve) => setTimeout(resolve, 50));
|
|
58
|
+
return { id, name: `User ${id}`, email: `user${id}@example.com` };
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
getUserProfile(id) {
|
|
62
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
const user = yield this.getUserWithDecorator(id);
|
|
64
|
+
return Object.assign(Object.assign({}, user), { profile: {
|
|
65
|
+
bio: `Bio for ${user.name}`,
|
|
66
|
+
avatar: `https://avatar.com/${id}.jpg`,
|
|
67
|
+
settings: { theme: 'dark' },
|
|
68
|
+
} });
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
getUserFull(id) {
|
|
72
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
73
|
+
const user = yield this.getUserWithDecorator(id);
|
|
74
|
+
const profile = yield this.getUserProfile(id);
|
|
75
|
+
return Object.assign(Object.assign({}, user), { profile, permissions: ['read', 'write'], lastLogin: new Date() });
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
getUserList() {
|
|
79
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
80
|
+
yield new Promise((resolve) => setTimeout(resolve, 100));
|
|
81
|
+
return [
|
|
82
|
+
{ id: '1', name: 'John Doe', email: 'john@example.com' },
|
|
83
|
+
{ id: '2', name: 'Jane Smith', email: 'jane@example.com' },
|
|
84
|
+
{ id: '3', name: 'Bob Johnson', email: 'bob@example.com' },
|
|
85
|
+
];
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
searchUsers(query) {
|
|
89
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
90
|
+
const users = yield this.getUserList();
|
|
91
|
+
return users.filter((user) => user.name.toLowerCase().includes(query.toLowerCase()) ||
|
|
92
|
+
user.email.toLowerCase().includes(query.toLowerCase()));
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
updateUser(id, data) {
|
|
96
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
97
|
+
yield new Promise((resolve) => setTimeout(resolve, 50));
|
|
98
|
+
const existing = yield this.getUserWithDecorator(id);
|
|
99
|
+
return Object.assign(Object.assign(Object.assign({}, existing), data), { updatedAt: new Date() });
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
deleteUser(id) {
|
|
103
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
104
|
+
yield new Promise((resolve) => setTimeout(resolve, 20));
|
|
105
|
+
return true;
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
clearAllUserCache() {
|
|
109
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
batchGetUsers(ids) {
|
|
113
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
114
|
+
const keys = ids.map((id) => `user:${id}:decorated`);
|
|
115
|
+
const cached = yield this.cacheService.mget(keys);
|
|
116
|
+
const uncachedIds = ids.filter((id, index) => !cached[index]);
|
|
117
|
+
if (uncachedIds.length > 0) {
|
|
118
|
+
const uncachedUsers = yield Promise.all(uncachedIds.map((id) => this.getUserWithDecorator(id)));
|
|
119
|
+
const items = uncachedIds.map((id, index) => ({
|
|
120
|
+
key: `user:${id}:decorated`,
|
|
121
|
+
value: uncachedUsers[index],
|
|
122
|
+
}));
|
|
123
|
+
yield this.cacheService.mset(items, { ttl: 300000 });
|
|
124
|
+
}
|
|
125
|
+
return cached.filter(Boolean);
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
getCacheStats() {
|
|
129
|
+
return this.cacheService.getStats();
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
__decorate([
|
|
133
|
+
(0, index_1.Cacheable)({
|
|
134
|
+
key: (id) => `user:${id}:decorated`,
|
|
135
|
+
ttl: 300000,
|
|
136
|
+
layers: [index_1.CacheLayer.MEMORY, index_1.CacheLayer.REDIS],
|
|
137
|
+
dependencies: [
|
|
138
|
+
new index_1.TagDependency(['user-data']),
|
|
139
|
+
new index_1.CallbackDependency(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
140
|
+
return 'user-version-1';
|
|
141
|
+
})),
|
|
142
|
+
],
|
|
143
|
+
}),
|
|
144
|
+
__metadata("design:type", Function),
|
|
145
|
+
__metadata("design:paramtypes", [String]),
|
|
146
|
+
__metadata("design:returntype", Promise)
|
|
147
|
+
], UserService.prototype, "getUserWithDecorator", null);
|
|
148
|
+
__decorate([
|
|
149
|
+
(0, index_1.Cacheable)({
|
|
150
|
+
key: (id) => `user:${id}:profile`,
|
|
151
|
+
condition: (id) => id !== 'admin',
|
|
152
|
+
dependencies: [new index_1.TagDependency(['user-profile'])],
|
|
153
|
+
}),
|
|
154
|
+
__metadata("design:type", Function),
|
|
155
|
+
__metadata("design:paramtypes", [String]),
|
|
156
|
+
__metadata("design:returntype", Promise)
|
|
157
|
+
], UserService.prototype, "getUserProfile", null);
|
|
158
|
+
__decorate([
|
|
159
|
+
(0, index_1.Cacheable)({
|
|
160
|
+
key: (id) => `user:${id}:full`,
|
|
161
|
+
dependencies: [
|
|
162
|
+
new index_1.DbDependency('SELECT updated_at FROM users WHERE id = ?', (id) => [id]),
|
|
163
|
+
],
|
|
164
|
+
}),
|
|
165
|
+
__metadata("design:type", Function),
|
|
166
|
+
__metadata("design:paramtypes", [String]),
|
|
167
|
+
__metadata("design:returntype", Promise)
|
|
168
|
+
], UserService.prototype, "getUserFull", null);
|
|
169
|
+
__decorate([
|
|
170
|
+
(0, index_1.Cacheable)({
|
|
171
|
+
key: 'users:list',
|
|
172
|
+
ttl: 600000,
|
|
173
|
+
dependencies: [new index_1.TagDependency(['user-list', 'all-users'])],
|
|
174
|
+
}),
|
|
175
|
+
__metadata("design:type", Function),
|
|
176
|
+
__metadata("design:paramtypes", []),
|
|
177
|
+
__metadata("design:returntype", Promise)
|
|
178
|
+
], UserService.prototype, "getUserList", null);
|
|
179
|
+
__decorate([
|
|
180
|
+
(0, index_1.Cacheable)({
|
|
181
|
+
key: (query) => `users:search:${query.toLowerCase()}`,
|
|
182
|
+
condition: (query) => query.length >= 2,
|
|
183
|
+
ttl: 1800000,
|
|
184
|
+
}),
|
|
185
|
+
__metadata("design:type", Function),
|
|
186
|
+
__metadata("design:paramtypes", [String]),
|
|
187
|
+
__metadata("design:returntype", Promise)
|
|
188
|
+
], UserService.prototype, "searchUsers", null);
|
|
189
|
+
__decorate([
|
|
190
|
+
(0, index_1.CachePut)({
|
|
191
|
+
key: (id) => `user:${id}:decorated`,
|
|
192
|
+
dependencies: [new index_1.TagDependency(['user-data'])],
|
|
193
|
+
}),
|
|
194
|
+
__metadata("design:type", Function),
|
|
195
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
196
|
+
__metadata("design:returntype", Promise)
|
|
197
|
+
], UserService.prototype, "updateUser", null);
|
|
198
|
+
__decorate([
|
|
199
|
+
(0, index_1.CacheEvict)({
|
|
200
|
+
keys: [
|
|
201
|
+
(id) => `user:${id}`,
|
|
202
|
+
(id) => `user:${id}:decorated`,
|
|
203
|
+
(id) => `user:${id}:profile`,
|
|
204
|
+
(id) => `user:${id}:full`,
|
|
205
|
+
],
|
|
206
|
+
tags: ['user-data'],
|
|
207
|
+
}),
|
|
208
|
+
__metadata("design:type", Function),
|
|
209
|
+
__metadata("design:paramtypes", [String]),
|
|
210
|
+
__metadata("design:returntype", Promise)
|
|
211
|
+
], UserService.prototype, "deleteUser", null);
|
|
212
|
+
__decorate([
|
|
213
|
+
(0, index_1.CacheEvict)({
|
|
214
|
+
patterns: ['user:*', 'users:*'],
|
|
215
|
+
tags: ['user-data', 'user-list', 'all-users'],
|
|
216
|
+
}),
|
|
217
|
+
__metadata("design:type", Function),
|
|
218
|
+
__metadata("design:paramtypes", []),
|
|
219
|
+
__metadata("design:returntype", Promise)
|
|
220
|
+
], UserService.prototype, "clearAllUserCache", null);
|
|
221
|
+
UserService = __decorate([
|
|
222
|
+
(0, common_1.Injectable)(),
|
|
223
|
+
__metadata("design:paramtypes", [index_1.CacheService])
|
|
224
|
+
], UserService);
|
|
225
|
+
let UserController = class UserController {
|
|
226
|
+
constructor(userService) {
|
|
227
|
+
this.userService = userService;
|
|
228
|
+
}
|
|
229
|
+
getUser(id) {
|
|
230
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
231
|
+
return yield this.userService.getUserWithDecorator(id);
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
getUserProfile(id) {
|
|
235
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
236
|
+
return yield this.userService.getUserProfile(id);
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
getUserList() {
|
|
240
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
241
|
+
return yield this.userService.getUserList();
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
searchUsers(query) {
|
|
245
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
246
|
+
return yield this.userService.searchUsers(query);
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
updateUser(id, data) {
|
|
250
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
251
|
+
return yield this.userService.updateUser(id, data);
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
deleteUser(id) {
|
|
255
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
256
|
+
const deleted = yield this.userService.deleteUser(id);
|
|
257
|
+
return { success: deleted };
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
clearCache() {
|
|
261
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
262
|
+
yield this.userService.clearAllUserCache();
|
|
263
|
+
return { message: 'User cache cleared' };
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
getCacheStats() {
|
|
267
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
268
|
+
return this.userService.getCacheStats();
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
__decorate([
|
|
273
|
+
(0, common_1.Get)(':id'),
|
|
274
|
+
__param(0, (0, common_1.Param)('id')),
|
|
275
|
+
__metadata("design:type", Function),
|
|
276
|
+
__metadata("design:paramtypes", [String]),
|
|
277
|
+
__metadata("design:returntype", Promise)
|
|
278
|
+
], UserController.prototype, "getUser", null);
|
|
279
|
+
__decorate([
|
|
280
|
+
(0, common_1.Get)(':id/profile'),
|
|
281
|
+
__param(0, (0, common_1.Param)('id')),
|
|
282
|
+
__metadata("design:type", Function),
|
|
283
|
+
__metadata("design:paramtypes", [String]),
|
|
284
|
+
__metadata("design:returntype", Promise)
|
|
285
|
+
], UserController.prototype, "getUserProfile", null);
|
|
286
|
+
__decorate([
|
|
287
|
+
(0, common_1.Get)(),
|
|
288
|
+
__metadata("design:type", Function),
|
|
289
|
+
__metadata("design:paramtypes", []),
|
|
290
|
+
__metadata("design:returntype", Promise)
|
|
291
|
+
], UserController.prototype, "getUserList", null);
|
|
292
|
+
__decorate([
|
|
293
|
+
(0, common_1.Get)('search/:query'),
|
|
294
|
+
__param(0, (0, common_1.Param)('query')),
|
|
295
|
+
__metadata("design:type", Function),
|
|
296
|
+
__metadata("design:paramtypes", [String]),
|
|
297
|
+
__metadata("design:returntype", Promise)
|
|
298
|
+
], UserController.prototype, "searchUsers", null);
|
|
299
|
+
__decorate([
|
|
300
|
+
(0, common_1.Post)(':id'),
|
|
301
|
+
__param(0, (0, common_1.Param)('id')),
|
|
302
|
+
__param(1, (0, common_1.Body)()),
|
|
303
|
+
__metadata("design:type", Function),
|
|
304
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
305
|
+
__metadata("design:returntype", Promise)
|
|
306
|
+
], UserController.prototype, "updateUser", null);
|
|
307
|
+
__decorate([
|
|
308
|
+
(0, common_1.Post)(':id/delete'),
|
|
309
|
+
__param(0, (0, common_1.Param)('id')),
|
|
310
|
+
__metadata("design:type", Function),
|
|
311
|
+
__metadata("design:paramtypes", [String]),
|
|
312
|
+
__metadata("design:returntype", Promise)
|
|
313
|
+
], UserController.prototype, "deleteUser", null);
|
|
314
|
+
__decorate([
|
|
315
|
+
(0, common_1.Post)('clear-cache'),
|
|
316
|
+
__metadata("design:type", Function),
|
|
317
|
+
__metadata("design:paramtypes", []),
|
|
318
|
+
__metadata("design:returntype", Promise)
|
|
319
|
+
], UserController.prototype, "clearCache", null);
|
|
320
|
+
__decorate([
|
|
321
|
+
(0, common_1.Get)('cache/stats'),
|
|
322
|
+
__metadata("design:type", Function),
|
|
323
|
+
__metadata("design:paramtypes", []),
|
|
324
|
+
__metadata("design:returntype", Promise)
|
|
325
|
+
], UserController.prototype, "getCacheStats", null);
|
|
326
|
+
UserController = __decorate([
|
|
327
|
+
(0, common_1.Controller)('users'),
|
|
328
|
+
__metadata("design:paramtypes", [UserService])
|
|
329
|
+
], UserController);
|
|
330
|
+
let UserModuleInternal = class UserModuleInternal {
|
|
331
|
+
};
|
|
332
|
+
UserModuleInternal = __decorate([
|
|
333
|
+
(0, common_1.Module)({
|
|
334
|
+
imports: [AppModule],
|
|
335
|
+
controllers: [UserController],
|
|
336
|
+
providers: [UserService],
|
|
337
|
+
})
|
|
338
|
+
], UserModuleInternal);
|
|
339
|
+
class UserModule {
|
|
340
|
+
}
|
|
341
|
+
exports.UserModule = UserModule;
|
package/cache/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { CacheModule, type CacheModuleOptions, CACHE_SERVICE, } from './cache.module';
|
|
2
|
+
export { CacheService } from './cache.service';
|
|
3
|
+
export { CacheHealthChecker, type CacheHealthResult } from './cache.health';
|
|
4
|
+
export { CacheWarmupService, type CacheWarmupConfig, type CacheWarmupResult, } from './cache.warmup.service';
|
|
5
|
+
export { CacheMetricsService, type CacheMetrics, type CacheOperationRecord, } from './cache-metrics.service';
|
|
6
|
+
export { CacheSerializationService, type CacheSerializationOptions, } from './cache-serialization.service';
|
|
7
|
+
export { Cacheable, CacheEvict, CachePut, getCacheService, setCacheService, } from './decorators';
|
|
8
|
+
export { ClsCacheProvider, MemoryCacheProvider, RedisCacheProvider, BaseCacheProvider, } from './providers';
|
|
9
|
+
export { REDIS_CLIENT } from './providers/redis-cache.provider';
|
|
10
|
+
export type { CacheProvider } from './interfaces/cache-provider.interface';
|
|
11
|
+
export { CallbackDependency, ChainDependency, DbDependency, FileDependency, TagDependency, TimeDependency, } from './dependencies';
|
|
12
|
+
export { CacheLayer, type CacheDependency, type CacheEvictOptions, type CacheOptions, type CachePutOptions, type CacheableOptions, type CacheStats, type DependencyData, } from './interfaces';
|
|
13
|
+
export { DependencyManager, KeyGenerator, type CachedValueWithDependencies, } from './utils';
|
|
14
|
+
export type { CacheDependency as ICacheDependency, CacheProvider as ICacheProvider, } from './interfaces';
|
package/cache/index.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KeyGenerator = exports.DependencyManager = exports.CacheLayer = exports.TimeDependency = exports.TagDependency = exports.FileDependency = exports.DbDependency = exports.ChainDependency = exports.CallbackDependency = exports.REDIS_CLIENT = exports.BaseCacheProvider = exports.RedisCacheProvider = exports.MemoryCacheProvider = exports.ClsCacheProvider = exports.setCacheService = exports.getCacheService = exports.CachePut = exports.CacheEvict = exports.Cacheable = exports.CacheSerializationService = exports.CacheMetricsService = exports.CacheWarmupService = exports.CacheHealthChecker = exports.CacheService = exports.CACHE_SERVICE = exports.CacheModule = void 0;
|
|
4
|
+
var cache_module_1 = require("./cache.module");
|
|
5
|
+
Object.defineProperty(exports, "CacheModule", { enumerable: true, get: function () { return cache_module_1.CacheModule; } });
|
|
6
|
+
Object.defineProperty(exports, "CACHE_SERVICE", { enumerable: true, get: function () { return cache_module_1.CACHE_SERVICE; } });
|
|
7
|
+
var cache_service_1 = require("./cache.service");
|
|
8
|
+
Object.defineProperty(exports, "CacheService", { enumerable: true, get: function () { return cache_service_1.CacheService; } });
|
|
9
|
+
var cache_health_1 = require("./cache.health");
|
|
10
|
+
Object.defineProperty(exports, "CacheHealthChecker", { enumerable: true, get: function () { return cache_health_1.CacheHealthChecker; } });
|
|
11
|
+
var cache_warmup_service_1 = require("./cache.warmup.service");
|
|
12
|
+
Object.defineProperty(exports, "CacheWarmupService", { enumerable: true, get: function () { return cache_warmup_service_1.CacheWarmupService; } });
|
|
13
|
+
var cache_metrics_service_1 = require("./cache-metrics.service");
|
|
14
|
+
Object.defineProperty(exports, "CacheMetricsService", { enumerable: true, get: function () { return cache_metrics_service_1.CacheMetricsService; } });
|
|
15
|
+
var cache_serialization_service_1 = require("./cache-serialization.service");
|
|
16
|
+
Object.defineProperty(exports, "CacheSerializationService", { enumerable: true, get: function () { return cache_serialization_service_1.CacheSerializationService; } });
|
|
17
|
+
var decorators_1 = require("./decorators");
|
|
18
|
+
Object.defineProperty(exports, "Cacheable", { enumerable: true, get: function () { return decorators_1.Cacheable; } });
|
|
19
|
+
Object.defineProperty(exports, "CacheEvict", { enumerable: true, get: function () { return decorators_1.CacheEvict; } });
|
|
20
|
+
Object.defineProperty(exports, "CachePut", { enumerable: true, get: function () { return decorators_1.CachePut; } });
|
|
21
|
+
Object.defineProperty(exports, "getCacheService", { enumerable: true, get: function () { return decorators_1.getCacheService; } });
|
|
22
|
+
Object.defineProperty(exports, "setCacheService", { enumerable: true, get: function () { return decorators_1.setCacheService; } });
|
|
23
|
+
var providers_1 = require("./providers");
|
|
24
|
+
Object.defineProperty(exports, "ClsCacheProvider", { enumerable: true, get: function () { return providers_1.ClsCacheProvider; } });
|
|
25
|
+
Object.defineProperty(exports, "MemoryCacheProvider", { enumerable: true, get: function () { return providers_1.MemoryCacheProvider; } });
|
|
26
|
+
Object.defineProperty(exports, "RedisCacheProvider", { enumerable: true, get: function () { return providers_1.RedisCacheProvider; } });
|
|
27
|
+
Object.defineProperty(exports, "BaseCacheProvider", { enumerable: true, get: function () { return providers_1.BaseCacheProvider; } });
|
|
28
|
+
var redis_cache_provider_1 = require("./providers/redis-cache.provider");
|
|
29
|
+
Object.defineProperty(exports, "REDIS_CLIENT", { enumerable: true, get: function () { return redis_cache_provider_1.REDIS_CLIENT; } });
|
|
30
|
+
var dependencies_1 = require("./dependencies");
|
|
31
|
+
Object.defineProperty(exports, "CallbackDependency", { enumerable: true, get: function () { return dependencies_1.CallbackDependency; } });
|
|
32
|
+
Object.defineProperty(exports, "ChainDependency", { enumerable: true, get: function () { return dependencies_1.ChainDependency; } });
|
|
33
|
+
Object.defineProperty(exports, "DbDependency", { enumerable: true, get: function () { return dependencies_1.DbDependency; } });
|
|
34
|
+
Object.defineProperty(exports, "FileDependency", { enumerable: true, get: function () { return dependencies_1.FileDependency; } });
|
|
35
|
+
Object.defineProperty(exports, "TagDependency", { enumerable: true, get: function () { return dependencies_1.TagDependency; } });
|
|
36
|
+
Object.defineProperty(exports, "TimeDependency", { enumerable: true, get: function () { return dependencies_1.TimeDependency; } });
|
|
37
|
+
var interfaces_1 = require("./interfaces");
|
|
38
|
+
Object.defineProperty(exports, "CacheLayer", { enumerable: true, get: function () { return interfaces_1.CacheLayer; } });
|
|
39
|
+
var utils_1 = require("./utils");
|
|
40
|
+
Object.defineProperty(exports, "DependencyManager", { enumerable: true, get: function () { return utils_1.DependencyManager; } });
|
|
41
|
+
Object.defineProperty(exports, "KeyGenerator", { enumerable: true, get: function () { return utils_1.KeyGenerator; } });
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { CacheDependency } from './cache-dependency.interface';
|
|
2
|
+
export declare enum CacheLayer {
|
|
3
|
+
CLS = "cls",
|
|
4
|
+
MEMORY = "memory",
|
|
5
|
+
REDIS = "redis"
|
|
6
|
+
}
|
|
7
|
+
export interface CacheOptions {
|
|
8
|
+
ttl?: number;
|
|
9
|
+
layers?: CacheLayer[];
|
|
10
|
+
prefix?: string;
|
|
11
|
+
condition?: (...args: any[]) => boolean | Promise<boolean>;
|
|
12
|
+
dependencies?: CacheDependency[];
|
|
13
|
+
backfill?: boolean;
|
|
14
|
+
namespace?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface CacheKeyOptions {
|
|
17
|
+
key?: string | ((...args: any[]) => string);
|
|
18
|
+
prefix?: string;
|
|
19
|
+
includeAllArgs?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface CacheableOptions extends CacheOptions, CacheKeyOptions {
|
|
22
|
+
}
|
|
23
|
+
export interface CacheEvictOptions {
|
|
24
|
+
keys?: Array<string | ((...args: any[]) => string)>;
|
|
25
|
+
patterns?: string[];
|
|
26
|
+
tags?: string[];
|
|
27
|
+
layers?: CacheLayer[];
|
|
28
|
+
condition?: (...args: any[]) => boolean | Promise<boolean>;
|
|
29
|
+
timing?: 'before' | 'after';
|
|
30
|
+
}
|
|
31
|
+
export interface CachePutOptions extends CacheOptions, CacheKeyOptions {
|
|
32
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CacheLayer = void 0;
|
|
4
|
+
var CacheLayer;
|
|
5
|
+
(function (CacheLayer) {
|
|
6
|
+
CacheLayer["CLS"] = "cls";
|
|
7
|
+
CacheLayer["MEMORY"] = "memory";
|
|
8
|
+
CacheLayer["REDIS"] = "redis";
|
|
9
|
+
})(CacheLayer || (exports.CacheLayer = CacheLayer = {}));
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface CacheProvider {
|
|
2
|
+
get<T>(key: string): Promise<T | null>;
|
|
3
|
+
set<T>(key: string, value: T, ttl?: number): Promise<void>;
|
|
4
|
+
delete(key: string | string[]): Promise<void>;
|
|
5
|
+
deletePattern?(pattern: string): Promise<number>;
|
|
6
|
+
clear(): Promise<void>;
|
|
7
|
+
has(key: string): Promise<boolean>;
|
|
8
|
+
mget<T>(keys: string[]): Promise<(T | null)[]>;
|
|
9
|
+
mset(items: Array<{
|
|
10
|
+
key: string;
|
|
11
|
+
value: any;
|
|
12
|
+
}>, ttl?: number): Promise<void>;
|
|
13
|
+
getName(): string;
|
|
14
|
+
}
|
|
15
|
+
export interface CacheStats {
|
|
16
|
+
totalGets: number;
|
|
17
|
+
hits: number;
|
|
18
|
+
misses: number;
|
|
19
|
+
hitRate: number;
|
|
20
|
+
byLayer: Record<string, {
|
|
21
|
+
hits: number;
|
|
22
|
+
misses: number;
|
|
23
|
+
hitRate: number;
|
|
24
|
+
}>;
|
|
25
|
+
totalSets: number;
|
|
26
|
+
totalDeletes: number;
|
|
27
|
+
totalClears: number;
|
|
28
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./cache-dependency.interface"), exports);
|
|
18
|
+
__exportStar(require("./cache-options.interface"), exports);
|
|
19
|
+
__exportStar(require("./cache-provider.interface"), exports);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CacheProvider } from '../interfaces/cache-provider.interface';
|
|
2
|
+
export declare abstract class BaseCacheProvider implements CacheProvider {
|
|
3
|
+
abstract get<T>(key: string): Promise<T | null>;
|
|
4
|
+
abstract set<T>(key: string, value: T, ttl?: number): Promise<void>;
|
|
5
|
+
abstract delete(key: string | string[]): Promise<void>;
|
|
6
|
+
abstract deletePattern?(pattern: string): Promise<number>;
|
|
7
|
+
abstract clear(): Promise<void>;
|
|
8
|
+
abstract has(key: string): Promise<boolean>;
|
|
9
|
+
abstract getName(): string;
|
|
10
|
+
mget<T>(keys: string[]): Promise<(T | null)[]>;
|
|
11
|
+
mset(items: Array<{
|
|
12
|
+
key: string;
|
|
13
|
+
value: any;
|
|
14
|
+
}>, ttl?: number): Promise<void>;
|
|
15
|
+
protected patternToRegex(pattern: string): RegExp;
|
|
16
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.BaseCacheProvider = void 0;
|
|
13
|
+
class BaseCacheProvider {
|
|
14
|
+
mget(keys) {
|
|
15
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
16
|
+
const promises = keys.map((key) => this.get(key));
|
|
17
|
+
return Promise.all(promises);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
mset(items, ttl) {
|
|
21
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
const promises = items.map((item) => this.set(item.key, item.value, ttl));
|
|
23
|
+
yield Promise.all(promises);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
patternToRegex(pattern) {
|
|
27
|
+
const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, '\\$&');
|
|
28
|
+
const regexPattern = escaped.replace(/\*/g, '.*');
|
|
29
|
+
return new RegExp(`^${regexPattern}$`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.BaseCacheProvider = BaseCacheProvider;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseCacheProvider } from './base-cache.provider';
|
|
2
|
+
export declare class ClsCacheProvider extends BaseCacheProvider {
|
|
3
|
+
private static readonly CACHE_PREFIX;
|
|
4
|
+
private static readonly KEYS_SET;
|
|
5
|
+
getName(): string;
|
|
6
|
+
get<T>(key: string): Promise<T | null>;
|
|
7
|
+
set<T>(key: string, value: T, ttl?: number): Promise<void>;
|
|
8
|
+
delete(key: string | string[]): Promise<void>;
|
|
9
|
+
deletePattern(pattern: string): Promise<number>;
|
|
10
|
+
clear(): Promise<void>;
|
|
11
|
+
has(key: string): Promise<boolean>;
|
|
12
|
+
private getFullKey;
|
|
13
|
+
private addKeyToSet;
|
|
14
|
+
private removeKeyFromSet;
|
|
15
|
+
private getAllKeys;
|
|
16
|
+
}
|