@tronsfey/ucli-server 0.5.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.
Files changed (247) hide show
  1. package/README.md +423 -0
  2. package/README.zh.md +404 -0
  3. package/assets/logo.svg +138 -0
  4. package/dist/admin-ui/assets/index-BjdBylCY.css +1 -0
  5. package/dist/admin-ui/assets/index-CDwKIMTJ.js +117 -0
  6. package/dist/admin-ui/assets/remixicon-B25hvfAs.eot +0 -0
  7. package/dist/admin-ui/assets/remixicon-BTtOSOPh.svg +9709 -0
  8. package/dist/admin-ui/assets/remixicon-CZw4FkzQ.woff2 +0 -0
  9. package/dist/admin-ui/assets/remixicon-S6an_USy.woff +0 -0
  10. package/dist/admin-ui/assets/remixicon-sqouR8Ox.ttf +0 -0
  11. package/dist/admin-ui/dist/assets/index-BjdBylCY.css +1 -0
  12. package/dist/admin-ui/dist/assets/index-CDwKIMTJ.js +117 -0
  13. package/dist/admin-ui/dist/assets/index-CppEl63e.css +1 -0
  14. package/dist/admin-ui/dist/assets/index-DBkeGfMQ.js +117 -0
  15. package/dist/admin-ui/dist/assets/index-ss5EmsBH.js +117 -0
  16. package/dist/admin-ui/dist/assets/remixicon-B25hvfAs.eot +0 -0
  17. package/dist/admin-ui/dist/assets/remixicon-BTtOSOPh.svg +9709 -0
  18. package/dist/admin-ui/dist/assets/remixicon-CZw4FkzQ.woff2 +0 -0
  19. package/dist/admin-ui/dist/assets/remixicon-S6an_USy.woff +0 -0
  20. package/dist/admin-ui/dist/assets/remixicon-sqouR8Ox.ttf +0 -0
  21. package/dist/admin-ui/dist/index.html +14 -0
  22. package/dist/admin-ui/index.html +14 -0
  23. package/dist/app.module.d.ts +3 -0
  24. package/dist/app.module.d.ts.map +1 -0
  25. package/dist/app.module.js +65 -0
  26. package/dist/app.module.js.map +1 -0
  27. package/dist/auth/admin.guard.d.ts +8 -0
  28. package/dist/auth/admin.guard.d.ts.map +1 -0
  29. package/dist/auth/admin.guard.js +34 -0
  30. package/dist/auth/admin.guard.js.map +1 -0
  31. package/dist/auth/auth.module.d.ts +3 -0
  32. package/dist/auth/auth.module.d.ts.map +1 -0
  33. package/dist/auth/auth.module.js +24 -0
  34. package/dist/auth/auth.module.js.map +1 -0
  35. package/dist/auth/decorators/jwt-payload.decorator.d.ts +2 -0
  36. package/dist/auth/decorators/jwt-payload.decorator.d.ts.map +1 -0
  37. package/dist/auth/decorators/jwt-payload.decorator.js +10 -0
  38. package/dist/auth/decorators/jwt-payload.decorator.js.map +1 -0
  39. package/dist/auth/group-token.guard.d.ts +11 -0
  40. package/dist/auth/group-token.guard.d.ts.map +1 -0
  41. package/dist/auth/group-token.guard.js +53 -0
  42. package/dist/auth/group-token.guard.js.map +1 -0
  43. package/dist/cache/cache.interface.d.ts +8 -0
  44. package/dist/cache/cache.interface.d.ts.map +1 -0
  45. package/dist/cache/cache.interface.js +3 -0
  46. package/dist/cache/cache.interface.js.map +1 -0
  47. package/dist/cache/cache.module.d.ts +5 -0
  48. package/dist/cache/cache.module.d.ts.map +1 -0
  49. package/dist/cache/cache.module.js +56 -0
  50. package/dist/cache/cache.module.js.map +1 -0
  51. package/dist/cache/cache.token.d.ts +2 -0
  52. package/dist/cache/cache.token.d.ts.map +1 -0
  53. package/dist/cache/cache.token.js +5 -0
  54. package/dist/cache/cache.token.js.map +1 -0
  55. package/dist/cache/memory/memory-cache.adapter.d.ts +15 -0
  56. package/dist/cache/memory/memory-cache.adapter.d.ts.map +1 -0
  57. package/dist/cache/memory/memory-cache.adapter.js +52 -0
  58. package/dist/cache/memory/memory-cache.adapter.js.map +1 -0
  59. package/dist/cache/redis/redis-cache.adapter.d.ts +16 -0
  60. package/dist/cache/redis/redis-cache.adapter.d.ts.map +1 -0
  61. package/dist/cache/redis/redis-cache.adapter.js +63 -0
  62. package/dist/cache/redis/redis-cache.adapter.js.map +1 -0
  63. package/dist/config/app-config.module.d.ts +3 -0
  64. package/dist/config/app-config.module.d.ts.map +1 -0
  65. package/dist/config/app-config.module.js +100 -0
  66. package/dist/config/app-config.module.js.map +1 -0
  67. package/dist/config/app-config.service.d.ts +29 -0
  68. package/dist/config/app-config.service.d.ts.map +1 -0
  69. package/dist/config/app-config.service.js +66 -0
  70. package/dist/config/app-config.service.js.map +1 -0
  71. package/dist/crypto/crypto.module.d.ts +3 -0
  72. package/dist/crypto/crypto.module.d.ts.map +1 -0
  73. package/dist/crypto/crypto.module.js +22 -0
  74. package/dist/crypto/crypto.module.js.map +1 -0
  75. package/dist/crypto/encryption.service.d.ts +9 -0
  76. package/dist/crypto/encryption.service.d.ts.map +1 -0
  77. package/dist/crypto/encryption.service.js +59 -0
  78. package/dist/crypto/encryption.service.js.map +1 -0
  79. package/dist/crypto/jwt.service.d.ts +28 -0
  80. package/dist/crypto/jwt.service.d.ts.map +1 -0
  81. package/dist/crypto/jwt.service.js +72 -0
  82. package/dist/crypto/jwt.service.js.map +1 -0
  83. package/dist/groups/dto/create-group.dto.d.ts +5 -0
  84. package/dist/groups/dto/create-group.dto.d.ts.map +1 -0
  85. package/dist/groups/dto/create-group.dto.js +34 -0
  86. package/dist/groups/dto/create-group.dto.js.map +1 -0
  87. package/dist/groups/groups.controller.d.ts +9 -0
  88. package/dist/groups/groups.controller.d.ts.map +1 -0
  89. package/dist/groups/groups.controller.js +60 -0
  90. package/dist/groups/groups.controller.js.map +1 -0
  91. package/dist/groups/groups.module.d.ts +3 -0
  92. package/dist/groups/groups.module.d.ts.map +1 -0
  93. package/dist/groups/groups.module.js +25 -0
  94. package/dist/groups/groups.module.js.map +1 -0
  95. package/dist/groups/groups.service.d.ts +9 -0
  96. package/dist/groups/groups.service.d.ts.map +1 -0
  97. package/dist/groups/groups.service.js +45 -0
  98. package/dist/groups/groups.service.js.map +1 -0
  99. package/dist/health/health.controller.d.ts +13 -0
  100. package/dist/health/health.controller.d.ts.map +1 -0
  101. package/dist/health/health.controller.js +68 -0
  102. package/dist/health/health.controller.js.map +1 -0
  103. package/dist/health/health.module.d.ts +3 -0
  104. package/dist/health/health.module.d.ts.map +1 -0
  105. package/dist/health/health.module.js +22 -0
  106. package/dist/health/health.module.js.map +1 -0
  107. package/dist/main.d.ts +3 -0
  108. package/dist/main.d.ts.map +1 -0
  109. package/dist/main.js +109 -0
  110. package/dist/main.js.map +1 -0
  111. package/dist/mcp/admin-mcp.controller.d.ts +13 -0
  112. package/dist/mcp/admin-mcp.controller.d.ts.map +1 -0
  113. package/dist/mcp/admin-mcp.controller.js +105 -0
  114. package/dist/mcp/admin-mcp.controller.js.map +1 -0
  115. package/dist/mcp/client-mcp.controller.d.ts +9 -0
  116. package/dist/mcp/client-mcp.controller.d.ts.map +1 -0
  117. package/dist/mcp/client-mcp.controller.js +63 -0
  118. package/dist/mcp/client-mcp.controller.js.map +1 -0
  119. package/dist/mcp/dto/create-mcp.dto.d.ts +11 -0
  120. package/dist/mcp/dto/create-mcp.dto.d.ts.map +1 -0
  121. package/dist/mcp/dto/create-mcp.dto.js +74 -0
  122. package/dist/mcp/dto/create-mcp.dto.js.map +1 -0
  123. package/dist/mcp/dto/update-mcp.dto.d.ts +11 -0
  124. package/dist/mcp/dto/update-mcp.dto.d.ts.map +1 -0
  125. package/dist/mcp/dto/update-mcp.dto.js +71 -0
  126. package/dist/mcp/dto/update-mcp.dto.js.map +1 -0
  127. package/dist/mcp/mcp.module.d.ts +3 -0
  128. package/dist/mcp/mcp.module.d.ts.map +1 -0
  129. package/dist/mcp/mcp.module.js +26 -0
  130. package/dist/mcp/mcp.module.js.map +1 -0
  131. package/dist/mcp/mcp.service.d.ts +16 -0
  132. package/dist/mcp/mcp.service.d.ts.map +1 -0
  133. package/dist/mcp/mcp.service.js +78 -0
  134. package/dist/mcp/mcp.service.js.map +1 -0
  135. package/dist/metrics/metrics.controller.d.ts +12 -0
  136. package/dist/metrics/metrics.controller.d.ts.map +1 -0
  137. package/dist/metrics/metrics.controller.js +71 -0
  138. package/dist/metrics/metrics.controller.js.map +1 -0
  139. package/dist/metrics/metrics.module.d.ts +3 -0
  140. package/dist/metrics/metrics.module.d.ts.map +1 -0
  141. package/dist/metrics/metrics.module.js +20 -0
  142. package/dist/metrics/metrics.module.js.map +1 -0
  143. package/dist/oas/admin-oas.controller.d.ts +12 -0
  144. package/dist/oas/admin-oas.controller.d.ts.map +1 -0
  145. package/dist/oas/admin-oas.controller.js +96 -0
  146. package/dist/oas/admin-oas.controller.js.map +1 -0
  147. package/dist/oas/client-oas.controller.d.ts +9 -0
  148. package/dist/oas/client-oas.controller.d.ts.map +1 -0
  149. package/dist/oas/client-oas.controller.js +63 -0
  150. package/dist/oas/client-oas.controller.js.map +1 -0
  151. package/dist/oas/dto/create-oas.dto.d.ts +12 -0
  152. package/dist/oas/dto/create-oas.dto.d.ts.map +1 -0
  153. package/dist/oas/dto/create-oas.dto.js +82 -0
  154. package/dist/oas/dto/create-oas.dto.js.map +1 -0
  155. package/dist/oas/dto/update-oas.dto.d.ts +12 -0
  156. package/dist/oas/dto/update-oas.dto.d.ts.map +1 -0
  157. package/dist/oas/dto/update-oas.dto.js +77 -0
  158. package/dist/oas/dto/update-oas.dto.js.map +1 -0
  159. package/dist/oas/oas.module.d.ts +3 -0
  160. package/dist/oas/oas.module.d.ts.map +1 -0
  161. package/dist/oas/oas.module.js +26 -0
  162. package/dist/oas/oas.module.js.map +1 -0
  163. package/dist/oas/oas.service.d.ts +16 -0
  164. package/dist/oas/oas.service.d.ts.map +1 -0
  165. package/dist/oas/oas.service.js +79 -0
  166. package/dist/oas/oas.service.js.map +1 -0
  167. package/dist/otel/otel.d.ts +25 -0
  168. package/dist/otel/otel.d.ts.map +1 -0
  169. package/dist/otel/otel.js +61 -0
  170. package/dist/otel/otel.js.map +1 -0
  171. package/dist/storage/interfaces/repos.interface.d.ts +158 -0
  172. package/dist/storage/interfaces/repos.interface.d.ts.map +1 -0
  173. package/dist/storage/interfaces/repos.interface.js +4 -0
  174. package/dist/storage/interfaces/repos.interface.js.map +1 -0
  175. package/dist/storage/memory/memory-group.repo.d.ts +9 -0
  176. package/dist/storage/memory/memory-group.repo.d.ts.map +1 -0
  177. package/dist/storage/memory/memory-group.repo.js +33 -0
  178. package/dist/storage/memory/memory-group.repo.js.map +1 -0
  179. package/dist/storage/memory/memory-mcp.repo.d.ts +13 -0
  180. package/dist/storage/memory/memory-mcp.repo.d.ts.map +1 -0
  181. package/dist/storage/memory/memory-mcp.repo.js +65 -0
  182. package/dist/storage/memory/memory-mcp.repo.js.map +1 -0
  183. package/dist/storage/memory/memory-oas.repo.d.ts +13 -0
  184. package/dist/storage/memory/memory-oas.repo.d.ts.map +1 -0
  185. package/dist/storage/memory/memory-oas.repo.js +55 -0
  186. package/dist/storage/memory/memory-oas.repo.js.map +1 -0
  187. package/dist/storage/memory/memory-token.repo.d.ts +11 -0
  188. package/dist/storage/memory/memory-token.repo.d.ts.map +1 -0
  189. package/dist/storage/memory/memory-token.repo.js +39 -0
  190. package/dist/storage/memory/memory-token.repo.js.map +1 -0
  191. package/dist/storage/storage.module.d.ts +5 -0
  192. package/dist/storage/storage.module.d.ts.map +1 -0
  193. package/dist/storage/storage.module.js +84 -0
  194. package/dist/storage/storage.module.js.map +1 -0
  195. package/dist/storage/storage.tokens.d.ts +5 -0
  196. package/dist/storage/storage.tokens.d.ts.map +1 -0
  197. package/dist/storage/storage.tokens.js +8 -0
  198. package/dist/storage/storage.tokens.js.map +1 -0
  199. package/dist/storage/typeorm/entities/group.entity.d.ts +12 -0
  200. package/dist/storage/typeorm/entities/group.entity.d.ts.map +1 -0
  201. package/dist/storage/typeorm/entities/group.entity.js +57 -0
  202. package/dist/storage/typeorm/entities/group.entity.js.map +1 -0
  203. package/dist/storage/typeorm/entities/mcp-entry.entity.d.ts +16 -0
  204. package/dist/storage/typeorm/entities/mcp-entry.entity.d.ts.map +1 -0
  205. package/dist/storage/typeorm/entities/mcp-entry.entity.js +82 -0
  206. package/dist/storage/typeorm/entities/mcp-entry.entity.js.map +1 -0
  207. package/dist/storage/typeorm/entities/oas-entry.entity.d.ts +17 -0
  208. package/dist/storage/typeorm/entities/oas-entry.entity.d.ts.map +1 -0
  209. package/dist/storage/typeorm/entities/oas-entry.entity.js +87 -0
  210. package/dist/storage/typeorm/entities/oas-entry.entity.js.map +1 -0
  211. package/dist/storage/typeorm/entities/token.entity.d.ts +13 -0
  212. package/dist/storage/typeorm/entities/token.entity.d.ts.map +1 -0
  213. package/dist/storage/typeorm/entities/token.entity.js +68 -0
  214. package/dist/storage/typeorm/entities/token.entity.js.map +1 -0
  215. package/dist/storage/typeorm/typeorm-group.repo.d.ts +12 -0
  216. package/dist/storage/typeorm/typeorm-group.repo.d.ts.map +1 -0
  217. package/dist/storage/typeorm/typeorm-group.repo.js +50 -0
  218. package/dist/storage/typeorm/typeorm-group.repo.js.map +1 -0
  219. package/dist/storage/typeorm/typeorm-mcp.repo.d.ts +15 -0
  220. package/dist/storage/typeorm/typeorm-mcp.repo.d.ts.map +1 -0
  221. package/dist/storage/typeorm/typeorm-mcp.repo.js +88 -0
  222. package/dist/storage/typeorm/typeorm-mcp.repo.js.map +1 -0
  223. package/dist/storage/typeorm/typeorm-oas.repo.d.ts +15 -0
  224. package/dist/storage/typeorm/typeorm-oas.repo.d.ts.map +1 -0
  225. package/dist/storage/typeorm/typeorm-oas.repo.js +92 -0
  226. package/dist/storage/typeorm/typeorm-oas.repo.js.map +1 -0
  227. package/dist/storage/typeorm/typeorm-token.repo.d.ts +13 -0
  228. package/dist/storage/typeorm/typeorm-token.repo.d.ts.map +1 -0
  229. package/dist/storage/typeorm/typeorm-token.repo.js +56 -0
  230. package/dist/storage/typeorm/typeorm-token.repo.js.map +1 -0
  231. package/dist/tokens/dto/issue-token.dto.d.ts +6 -0
  232. package/dist/tokens/dto/issue-token.dto.d.ts.map +1 -0
  233. package/dist/tokens/dto/issue-token.dto.js +41 -0
  234. package/dist/tokens/dto/issue-token.dto.js.map +1 -0
  235. package/dist/tokens/tokens.controller.d.ts +12 -0
  236. package/dist/tokens/tokens.controller.d.ts.map +1 -0
  237. package/dist/tokens/tokens.controller.js +89 -0
  238. package/dist/tokens/tokens.controller.js.map +1 -0
  239. package/dist/tokens/tokens.module.d.ts +3 -0
  240. package/dist/tokens/tokens.module.d.ts.map +1 -0
  241. package/dist/tokens/tokens.module.js +27 -0
  242. package/dist/tokens/tokens.module.js.map +1 -0
  243. package/dist/tokens/tokens.service.d.ts +25 -0
  244. package/dist/tokens/tokens.service.d.ts.map +1 -0
  245. package/dist/tokens/tokens.service.js +69 -0
  246. package/dist/tokens/tokens.service.js.map +1 -0
  247. package/package.json +81 -0
@@ -0,0 +1,14 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>OAS Gateway — Admin</title>
7
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
8
+ <script type="module" crossorigin src="/admin-ui/assets/index-ss5EmsBH.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/admin-ui/assets/index-CppEl63e.css">
10
+ </head>
11
+ <body>
12
+ <div id="root"></div>
13
+ </body>
14
+ </html>
@@ -0,0 +1,14 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>OAS Gateway — Admin</title>
7
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
8
+ <script type="module" crossorigin src="/admin-ui/assets/index-CDwKIMTJ.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/admin-ui/assets/index-BjdBylCY.css">
10
+ </head>
11
+ <body>
12
+ <div id="root"></div>
13
+ </body>
14
+ </html>
@@ -0,0 +1,3 @@
1
+ export declare class AppModule {
2
+ }
3
+ //# sourceMappingURL=app.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.module.d.ts","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":"AAiBA,qBAkCa,SAAS;CAAG"}
@@ -0,0 +1,65 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AppModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const core_1 = require("@nestjs/core");
12
+ const throttler_1 = require("@nestjs/throttler");
13
+ const nestjs_pino_1 = require("nestjs-pino");
14
+ const app_config_module_1 = require("./config/app-config.module");
15
+ const app_config_service_1 = require("./config/app-config.service");
16
+ const storage_module_1 = require("./storage/storage.module");
17
+ const cache_module_1 = require("./cache/cache.module");
18
+ const crypto_module_1 = require("./crypto/crypto.module");
19
+ const auth_module_1 = require("./auth/auth.module");
20
+ const groups_module_1 = require("./groups/groups.module");
21
+ const tokens_module_1 = require("./tokens/tokens.module");
22
+ const oas_module_1 = require("./oas/oas.module");
23
+ const mcp_module_1 = require("./mcp/mcp.module");
24
+ const health_module_1 = require("./health/health.module");
25
+ const metrics_module_1 = require("./metrics/metrics.module");
26
+ let AppModule = class AppModule {
27
+ };
28
+ exports.AppModule = AppModule;
29
+ exports.AppModule = AppModule = __decorate([
30
+ (0, common_1.Module)({
31
+ imports: [
32
+ app_config_module_1.AppConfigModule,
33
+ nestjs_pino_1.LoggerModule.forRootAsync({
34
+ inject: [app_config_service_1.AppConfigService],
35
+ useFactory: (cfg) => ({
36
+ pinoHttp: {
37
+ level: cfg.logLevel,
38
+ transport: cfg.isDev ? { target: 'pino-pretty', options: { colorize: true } } : undefined,
39
+ },
40
+ }),
41
+ }),
42
+ storage_module_1.StorageModule.forRoot(),
43
+ cache_module_1.CacheModule.forRoot(),
44
+ crypto_module_1.CryptoModule,
45
+ auth_module_1.AuthModule,
46
+ throttler_1.ThrottlerModule.forRootAsync({
47
+ inject: [app_config_service_1.AppConfigService],
48
+ useFactory: (cfg) => ({
49
+ throttlers: [{ ttl: cfg.rateLimitTtl, limit: cfg.rateLimitLimit }],
50
+ }),
51
+ }),
52
+ groups_module_1.GroupsModule,
53
+ tokens_module_1.TokensModule,
54
+ oas_module_1.OASModule,
55
+ mcp_module_1.MCPModule,
56
+ health_module_1.HealthModule,
57
+ metrics_module_1.MetricsModule,
58
+ ],
59
+ providers: [
60
+ { provide: core_1.APP_PIPE, useValue: new common_1.ValidationPipe({ whitelist: true, transform: true }) },
61
+ { provide: core_1.APP_GUARD, useClass: throttler_1.ThrottlerGuard },
62
+ ],
63
+ })
64
+ ], AppModule);
65
+ //# sourceMappingURL=app.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAuD;AACvD,uCAAkD;AAClD,iDAAmE;AACnE,6CAA0C;AAC1C,kEAA4D;AAC5D,oEAA8D;AAC9D,6DAAwD;AACxD,uDAAkD;AAClD,0DAAqD;AACrD,oDAA+C;AAC/C,0DAAqD;AACrD,0DAAqD;AACrD,iDAA4C;AAC5C,iDAA4C;AAC5C,0DAAqD;AACrD,6DAAwD;AAoCjD,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAlCrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,mCAAe;YACf,0BAAY,CAAC,YAAY,CAAC;gBACxB,MAAM,EAAE,CAAC,qCAAgB,CAAC;gBAC1B,UAAU,EAAE,CAAC,GAAqB,EAAE,EAAE,CAAC,CAAC;oBACtC,QAAQ,EAAE;wBACR,KAAK,EAAE,GAAG,CAAC,QAAQ;wBACnB,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS;qBAC1F;iBACF,CAAC;aACH,CAAC;YACF,8BAAa,CAAC,OAAO,EAAE;YACvB,0BAAW,CAAC,OAAO,EAAE;YACrB,4BAAY;YACZ,wBAAU;YACV,2BAAe,CAAC,YAAY,CAAC;gBAC3B,MAAM,EAAE,CAAC,qCAAgB,CAAC;gBAC1B,UAAU,EAAE,CAAC,GAAqB,EAAE,EAAE,CAAC,CAAC;oBACtC,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC;iBACnE,CAAC;aACH,CAAC;YACF,4BAAY;YACZ,4BAAY;YACZ,sBAAS;YACT,sBAAS;YACT,4BAAY;YACZ,8BAAa;SACd;QACD,SAAS,EAAE;YACT,EAAE,OAAO,EAAE,eAAQ,EAAE,QAAQ,EAAE,IAAI,uBAAc,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE;YACzF,EAAE,OAAO,EAAE,gBAAS,EAAE,QAAQ,EAAE,0BAAc,EAAE;SACjD;KACF,CAAC;GACW,SAAS,CAAG"}
@@ -0,0 +1,8 @@
1
+ import { CanActivate, ExecutionContext } from '@nestjs/common';
2
+ import { AppConfigService } from '../config/app-config.service';
3
+ export declare class AdminGuard implements CanActivate {
4
+ private readonly appConfig;
5
+ constructor(appConfig: AppConfigService);
6
+ canActivate(context: ExecutionContext): boolean;
7
+ }
8
+ //# sourceMappingURL=admin.guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.guard.d.ts","sourceRoot":"","sources":["../../src/auth/admin.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAqC,MAAM,gBAAgB,CAAA;AAEjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAE/D,qBACa,UAAW,YAAW,WAAW;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,gBAAgB;IAExD,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;CAQhD"}
@@ -0,0 +1,34 @@
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.AdminGuard = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const app_config_service_1 = require("../config/app-config.service");
15
+ let AdminGuard = class AdminGuard {
16
+ appConfig;
17
+ constructor(appConfig) {
18
+ this.appConfig = appConfig;
19
+ }
20
+ canActivate(context) {
21
+ const request = context.switchToHttp().getRequest();
22
+ const secret = request.headers['x-admin-secret'];
23
+ if (secret !== this.appConfig.adminSecret) {
24
+ throw new common_1.UnauthorizedException('Invalid admin secret');
25
+ }
26
+ return true;
27
+ }
28
+ };
29
+ exports.AdminGuard = AdminGuard;
30
+ exports.AdminGuard = AdminGuard = __decorate([
31
+ (0, common_1.Injectable)(),
32
+ __metadata("design:paramtypes", [app_config_service_1.AppConfigService])
33
+ ], AdminGuard);
34
+ //# sourceMappingURL=admin.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.guard.js","sourceRoot":"","sources":["../../src/auth/admin.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAiG;AAEjG,qEAA+D;AAGxD,IAAM,UAAU,GAAhB,MAAM,UAAU;IACQ;IAA7B,YAA6B,SAA2B;QAA3B,cAAS,GAAT,SAAS,CAAkB;IAAG,CAAC;IAE5D,WAAW,CAAC,OAAyB;QACnC,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAW,CAAA;QAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;QAChD,IAAI,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;YAC1C,MAAM,IAAI,8BAAqB,CAAC,sBAAsB,CAAC,CAAA;QACzD,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA;AAXY,gCAAU;qBAAV,UAAU;IADtB,IAAA,mBAAU,GAAE;qCAE6B,qCAAgB;GAD7C,UAAU,CAWtB"}
@@ -0,0 +1,3 @@
1
+ export declare class AuthModule {
2
+ }
3
+ //# sourceMappingURL=auth.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.module.d.ts","sourceRoot":"","sources":["../../src/auth/auth.module.ts"],"names":[],"mappings":"AAKA,qBAKa,UAAU;CAAG"}
@@ -0,0 +1,24 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AuthModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const crypto_module_1 = require("../crypto/crypto.module");
12
+ const admin_guard_1 = require("./admin.guard");
13
+ const group_token_guard_1 = require("./group-token.guard");
14
+ let AuthModule = class AuthModule {
15
+ };
16
+ exports.AuthModule = AuthModule;
17
+ exports.AuthModule = AuthModule = __decorate([
18
+ (0, common_1.Module)({
19
+ imports: [crypto_module_1.CryptoModule],
20
+ providers: [admin_guard_1.AdminGuard, group_token_guard_1.GroupTokenGuard],
21
+ exports: [admin_guard_1.AdminGuard, group_token_guard_1.GroupTokenGuard],
22
+ })
23
+ ], AuthModule);
24
+ //# sourceMappingURL=auth.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../../src/auth/auth.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAuC;AACvC,2DAAsD;AACtD,+CAA0C;AAC1C,2DAAqD;AAO9C,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IALtB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,4BAAY,CAAC;QACvB,SAAS,EAAE,CAAC,wBAAU,EAAE,mCAAe,CAAC;QACxC,OAAO,EAAE,CAAC,wBAAU,EAAE,mCAAe,CAAC;KACvC,CAAC;GACW,UAAU,CAAG"}
@@ -0,0 +1,2 @@
1
+ export declare const JwtPayloadParam: (...dataOrPipes: unknown[]) => ParameterDecorator;
2
+ //# sourceMappingURL=jwt-payload.decorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-payload.decorator.d.ts","sourceRoot":"","sources":["../../../src/auth/decorators/jwt-payload.decorator.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe,mDAK3B,CAAA"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JwtPayloadParam = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const group_token_guard_1 = require("../group-token.guard");
6
+ exports.JwtPayloadParam = (0, common_1.createParamDecorator)((_data, ctx) => {
7
+ const request = ctx.switchToHttp().getRequest();
8
+ return request[group_token_guard_1.JWT_PAYLOAD_KEY];
9
+ });
10
+ //# sourceMappingURL=jwt-payload.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-payload.decorator.js","sourceRoot":"","sources":["../../../src/auth/decorators/jwt-payload.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAuE;AAEvE,4DAAsD;AAGzC,QAAA,eAAe,GAAG,IAAA,6BAAoB,EACjD,CAAC,KAAc,EAAE,GAAqB,EAAc,EAAE;IACpD,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAW,CAAA;IACxD,OAAQ,OAA8C,CAAC,mCAAe,CAAe,CAAA;AACvF,CAAC,CACF,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { CanActivate, ExecutionContext } from '@nestjs/common';
2
+ import { JwtService } from '../crypto/jwt.service';
3
+ import type { ICacheAdapter } from '../cache/cache.interface';
4
+ export declare const JWT_PAYLOAD_KEY = "__jwtPayload";
5
+ export declare class GroupTokenGuard implements CanActivate {
6
+ private readonly jwtService;
7
+ private readonly cache;
8
+ constructor(jwtService: JwtService, cache: ICacheAdapter);
9
+ canActivate(context: ExecutionContext): Promise<boolean>;
10
+ }
11
+ //# sourceMappingURL=group-token.guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-token.guard.d.ts","sourceRoot":"","sources":["../../src/auth/group-token.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAA6C,MAAM,gBAAgB,CAAA;AAEzG,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAG7D,eAAO,MAAM,eAAe,iBAAiB,CAAA;AAG7C,qBACa,eAAgB,YAAW,WAAW;IAE/C,OAAO,CAAC,QAAQ,CAAC,UAAU;IACJ,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAD5B,UAAU,EAAE,UAAU,EACC,KAAK,EAAE,aAAa;IAGxD,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;CAuB/D"}
@@ -0,0 +1,53 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.GroupTokenGuard = exports.JWT_PAYLOAD_KEY = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const jwt_service_1 = require("../crypto/jwt.service");
18
+ const cache_token_1 = require("../cache/cache.token");
19
+ exports.JWT_PAYLOAD_KEY = '__jwtPayload';
20
+ const BLACKLIST_PREFIX = 'jti:blacklist:';
21
+ let GroupTokenGuard = class GroupTokenGuard {
22
+ jwtService;
23
+ cache;
24
+ constructor(jwtService, cache) {
25
+ this.jwtService = jwtService;
26
+ this.cache = cache;
27
+ }
28
+ async canActivate(context) {
29
+ const request = context.switchToHttp().getRequest();
30
+ const authHeader = request.headers.authorization;
31
+ if (!authHeader?.startsWith('Bearer ')) {
32
+ throw new common_1.UnauthorizedException('Bearer token required');
33
+ }
34
+ const token = authHeader.slice(7);
35
+ const payload = await this.jwtService.verify(token).catch(() => {
36
+ throw new common_1.UnauthorizedException('Invalid or expired token');
37
+ });
38
+ const blacklisted = await this.cache.has(`${BLACKLIST_PREFIX}${payload.jti}`);
39
+ if (blacklisted) {
40
+ throw new common_1.UnauthorizedException('Token has been revoked');
41
+ }
42
+ // Attach payload to request for use in controllers
43
+ request[exports.JWT_PAYLOAD_KEY] = payload;
44
+ return true;
45
+ }
46
+ };
47
+ exports.GroupTokenGuard = GroupTokenGuard;
48
+ exports.GroupTokenGuard = GroupTokenGuard = __decorate([
49
+ (0, common_1.Injectable)(),
50
+ __param(1, (0, common_1.Inject)(cache_token_1.CACHE_ADAPTER)),
51
+ __metadata("design:paramtypes", [jwt_service_1.JwtService, Object])
52
+ ], GroupTokenGuard);
53
+ //# sourceMappingURL=group-token.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-token.guard.js","sourceRoot":"","sources":["../../src/auth/group-token.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAyG;AAEzG,uDAAkD;AAClD,sDAAoD;AAIvC,QAAA,eAAe,GAAG,cAAc,CAAA;AAC7C,MAAM,gBAAgB,GAAG,gBAAgB,CAAA;AAGlC,IAAM,eAAe,GAArB,MAAM,eAAe;IAEP;IACuB;IAF1C,YACmB,UAAsB,EACC,KAAoB;QAD3C,eAAU,GAAV,UAAU,CAAY;QACC,UAAK,GAAL,KAAK,CAAe;IAC3D,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAW,CAAA;QAC5D,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAA;QAEhD,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,8BAAqB,CAAC,uBAAuB,CAAC,CAAA;QAC1D,CAAC;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAEjC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YAC7D,MAAM,IAAI,8BAAqB,CAAC,0BAA0B,CAAC,CAAA;QAC7D,CAAC,CAAC,CAAA;QAEF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAC7E,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,IAAI,8BAAqB,CAAC,wBAAwB,CAAC,CAAA;QAC3D,CAAC;QAED,mDAAmD;QAClD,OAA8C,CAAC,uBAAe,CAAC,GAAG,OAAO,CAAA;QAC1E,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA;AA7BY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;IAIR,WAAA,IAAA,eAAM,EAAC,2BAAa,CAAC,CAAA;qCADO,wBAAU;GAF9B,eAAe,CA6B3B"}
@@ -0,0 +1,8 @@
1
+ export interface ICacheAdapter {
2
+ get<T>(key: string): Promise<T | null>;
3
+ set<T>(key: string, value: T, ttlSec?: number): Promise<void>;
4
+ del(key: string): Promise<void>;
5
+ has(key: string): Promise<boolean>;
6
+ close(): Promise<void>;
7
+ }
8
+ //# sourceMappingURL=cache.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.interface.d.ts","sourceRoot":"","sources":["../../src/cache/cache.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IACtC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7D,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAClC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=cache.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.interface.js","sourceRoot":"","sources":["../../src/cache/cache.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ export declare class CacheModule {
3
+ static forRoot(): DynamicModule;
4
+ }
5
+ //# sourceMappingURL=cache.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.module.d.ts","sourceRoot":"","sources":["../../src/cache/cache.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAA;AAQ9D,qBACa,WAAW;IACtB,MAAM,CAAC,OAAO,IAAI,aAAa;CAmChC"}
@@ -0,0 +1,56 @@
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 CacheModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.CacheModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const app_config_service_1 = require("../config/app-config.service");
13
+ const cache_token_1 = require("./cache.token");
14
+ const memory_cache_adapter_1 = require("./memory/memory-cache.adapter");
15
+ const redis_cache_adapter_1 = require("./redis/redis-cache.adapter");
16
+ const logger = new common_1.Logger('CacheModule');
17
+ let CacheModule = CacheModule_1 = class CacheModule {
18
+ static forRoot() {
19
+ const cacheType = (process.env['CACHE_TYPE'] ?? 'memory');
20
+ if (cacheType === 'memory') {
21
+ logger.log('Cache adapter: memory');
22
+ return {
23
+ global: true,
24
+ module: CacheModule_1,
25
+ providers: [
26
+ memory_cache_adapter_1.MemoryCacheAdapter,
27
+ { provide: cache_token_1.CACHE_ADAPTER, useExisting: memory_cache_adapter_1.MemoryCacheAdapter },
28
+ ],
29
+ exports: [cache_token_1.CACHE_ADAPTER],
30
+ };
31
+ }
32
+ logger.log('Cache adapter: redis');
33
+ return {
34
+ global: true,
35
+ module: CacheModule_1,
36
+ providers: [
37
+ {
38
+ provide: redis_cache_adapter_1.RedisCacheAdapter,
39
+ inject: [app_config_service_1.AppConfigService],
40
+ useFactory: async (cfg) => {
41
+ const adapter = new redis_cache_adapter_1.RedisCacheAdapter(cfg.redisUrl);
42
+ await adapter.connect();
43
+ return adapter;
44
+ },
45
+ },
46
+ { provide: cache_token_1.CACHE_ADAPTER, useExisting: redis_cache_adapter_1.RedisCacheAdapter },
47
+ ],
48
+ exports: [cache_token_1.CACHE_ADAPTER],
49
+ };
50
+ }
51
+ };
52
+ exports.CacheModule = CacheModule;
53
+ exports.CacheModule = CacheModule = CacheModule_1 = __decorate([
54
+ (0, common_1.Module)({})
55
+ ], CacheModule);
56
+ //# sourceMappingURL=cache.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.module.js","sourceRoot":"","sources":["../../src/cache/cache.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA8D;AAC9D,qEAA+D;AAC/D,+CAA6C;AAC7C,wEAAkE;AAClE,qEAA+D;AAE/D,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,aAAa,CAAC,CAAA;AAGjC,IAAM,WAAW,mBAAjB,MAAM,WAAW;IACtB,MAAM,CAAC,OAAO;QACZ,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAuB,CAAA;QAE/E,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;YACnC,OAAO;gBACL,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,aAAW;gBACnB,SAAS,EAAE;oBACT,yCAAkB;oBAClB,EAAE,OAAO,EAAE,2BAAa,EAAE,WAAW,EAAE,yCAAkB,EAAE;iBAC5D;gBACD,OAAO,EAAE,CAAC,2BAAa,CAAC;aACzB,CAAA;QACH,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;QAClC,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,aAAW;YACnB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,uCAAiB;oBAC1B,MAAM,EAAE,CAAC,qCAAgB,CAAC;oBAC1B,UAAU,EAAE,KAAK,EAAE,GAAqB,EAAE,EAAE;wBAC1C,MAAM,OAAO,GAAG,IAAI,uCAAiB,CAAC,GAAG,CAAC,QAAS,CAAC,CAAA;wBACpD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;wBACvB,OAAO,OAAO,CAAA;oBAChB,CAAC;iBACF;gBACD,EAAE,OAAO,EAAE,2BAAa,EAAE,WAAW,EAAE,uCAAiB,EAAE;aAC3D;YACD,OAAO,EAAE,CAAC,2BAAa,CAAC;SACzB,CAAA;IACH,CAAC;CACF,CAAA;AApCY,kCAAW;sBAAX,WAAW;IADvB,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,WAAW,CAoCvB"}
@@ -0,0 +1,2 @@
1
+ export declare const CACHE_ADAPTER: unique symbol;
2
+ //# sourceMappingURL=cache.token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.token.d.ts","sourceRoot":"","sources":["../../src/cache/cache.token.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,eAA0B,CAAA"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CACHE_ADAPTER = void 0;
4
+ exports.CACHE_ADAPTER = Symbol('CACHE_ADAPTER');
5
+ //# sourceMappingURL=cache.token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.token.js","sourceRoot":"","sources":["../../src/cache/cache.token.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { OnModuleDestroy } from '@nestjs/common';
2
+ import type { ICacheAdapter } from '../cache.interface';
3
+ export declare class MemoryCacheAdapter implements ICacheAdapter, OnModuleDestroy {
4
+ private store;
5
+ private sweepTimer;
6
+ constructor();
7
+ get<T>(key: string): Promise<T | null>;
8
+ set<T>(key: string, value: T, ttlSec?: number): Promise<void>;
9
+ del(key: string): Promise<void>;
10
+ has(key: string): Promise<boolean>;
11
+ close(): Promise<void>;
12
+ onModuleDestroy(): void;
13
+ private sweep;
14
+ }
15
+ //# sourceMappingURL=memory-cache.adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-cache.adapter.d.ts","sourceRoot":"","sources":["../../../src/cache/memory/memory-cache.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAOvD,qBACa,kBAAmB,YAAW,aAAa,EAAE,eAAe;IACvE,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,UAAU,CAAgC;;IAO5C,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAUtC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAElC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAE5B,eAAe;IAEf,OAAO,CAAC,KAAK;CAMd"}
@@ -0,0 +1,52 @@
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.MemoryCacheAdapter = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ let MemoryCacheAdapter = class MemoryCacheAdapter {
15
+ store = new Map();
16
+ sweepTimer;
17
+ constructor() {
18
+ this.sweepTimer = setInterval(() => this.sweep(), 60_000);
19
+ if (this.sweepTimer.unref)
20
+ this.sweepTimer.unref();
21
+ }
22
+ async get(key) {
23
+ const entry = this.store.get(key);
24
+ if (!entry)
25
+ return null;
26
+ if (entry.expiresAt !== null && Date.now() > entry.expiresAt) {
27
+ this.store.delete(key);
28
+ return null;
29
+ }
30
+ return entry.value;
31
+ }
32
+ async set(key, value, ttlSec) {
33
+ this.store.set(key, { value, expiresAt: ttlSec != null ? Date.now() + ttlSec * 1000 : null });
34
+ }
35
+ async del(key) { this.store.delete(key); }
36
+ async has(key) { return (await this.get(key)) !== null; }
37
+ async close() { clearInterval(this.sweepTimer); this.store.clear(); }
38
+ onModuleDestroy() { void this.close(); }
39
+ sweep() {
40
+ const now = Date.now();
41
+ for (const [k, e] of this.store.entries()) {
42
+ if (e.expiresAt !== null && now > e.expiresAt)
43
+ this.store.delete(k);
44
+ }
45
+ }
46
+ };
47
+ exports.MemoryCacheAdapter = MemoryCacheAdapter;
48
+ exports.MemoryCacheAdapter = MemoryCacheAdapter = __decorate([
49
+ (0, common_1.Injectable)(),
50
+ __metadata("design:paramtypes", [])
51
+ ], MemoryCacheAdapter);
52
+ //# sourceMappingURL=memory-cache.adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-cache.adapter.js","sourceRoot":"","sources":["../../../src/cache/memory/memory-cache.adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4D;AASrD,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IACrB,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAA;IACzC,UAAU,CAAgC;IAElD;QACE,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAA;QACzD,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK;YAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;IACpD,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,GAAW;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAyB,CAAA;QACzD,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAA;QACvB,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YAC7D,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACtB,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,KAAK,CAAC,KAAK,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,GAAW,EAAE,KAAQ,EAAE,MAAe;QACjD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC/F,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,IAAmB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA,CAAC,CAAC;IAEhE,KAAK,CAAC,GAAG,CAAC,GAAW,IAAsB,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAA,CAAC,CAAC;IAElF,KAAK,CAAC,KAAK,KAAoB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA,CAAC,CAAC;IAEnF,eAAe,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAA,CAAC,CAAC;IAE/B,KAAK;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,SAAS;gBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACrE,CAAC;IACH,CAAC;CACF,CAAA;AArCY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;;GACA,kBAAkB,CAqC9B"}
@@ -0,0 +1,16 @@
1
+ import { OnModuleDestroy } from '@nestjs/common';
2
+ import type { ICacheAdapter } from '../cache.interface';
3
+ export declare class RedisCacheAdapter implements ICacheAdapter, OnModuleDestroy {
4
+ private readonly logger;
5
+ private readonly client;
6
+ constructor(redisUrl: string);
7
+ connect(): Promise<void>;
8
+ get<T>(key: string): Promise<T | null>;
9
+ set<T>(key: string, value: T, ttlSec?: number): Promise<void>;
10
+ del(key: string): Promise<void>;
11
+ has(key: string): Promise<boolean>;
12
+ close(): Promise<void>;
13
+ onModuleDestroy(): void;
14
+ ping(): Promise<boolean>;
15
+ }
16
+ //# sourceMappingURL=redis-cache.adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-cache.adapter.d.ts","sourceRoot":"","sources":["../../../src/cache/redis/redis-cache.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAU,MAAM,gBAAgB,CAAA;AAEpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,qBACa,iBAAkB,YAAW,aAAa,EAAE,eAAe;IACtE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAO;gBAElB,QAAQ,EAAE,MAAM;IAYtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAExB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAKtC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7D,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAElC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAE5B,eAAe;IAET,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;CAG/B"}
@@ -0,0 +1,63 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ var RedisCacheAdapter_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.RedisCacheAdapter = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const ioredis_1 = __importDefault(require("ioredis"));
19
+ let RedisCacheAdapter = RedisCacheAdapter_1 = class RedisCacheAdapter {
20
+ logger = new common_1.Logger(RedisCacheAdapter_1.name);
21
+ client;
22
+ constructor(redisUrl) {
23
+ this.client = new ioredis_1.default(redisUrl, {
24
+ lazyConnect: true,
25
+ maxRetriesPerRequest: 3,
26
+ enableReadyCheck: true,
27
+ connectTimeout: 5000,
28
+ });
29
+ this.client.on('error', (err) => {
30
+ this.logger.error(`Redis connection error: ${err.message}`);
31
+ });
32
+ }
33
+ async connect() { await this.client.connect(); }
34
+ async get(key) {
35
+ const raw = await this.client.get(key);
36
+ return raw !== null ? JSON.parse(raw) : null;
37
+ }
38
+ async set(key, value, ttlSec) {
39
+ const s = JSON.stringify(value);
40
+ if (ttlSec != null && ttlSec > 0)
41
+ await this.client.set(key, s, 'EX', ttlSec);
42
+ else
43
+ await this.client.set(key, s);
44
+ }
45
+ async del(key) { await this.client.del(key); }
46
+ async has(key) { return (await this.client.exists(key)) === 1; }
47
+ async close() { await this.client.quit(); }
48
+ onModuleDestroy() { void this.close(); }
49
+ async ping() {
50
+ try {
51
+ return (await this.client.ping()) === 'PONG';
52
+ }
53
+ catch {
54
+ return false;
55
+ }
56
+ }
57
+ };
58
+ exports.RedisCacheAdapter = RedisCacheAdapter;
59
+ exports.RedisCacheAdapter = RedisCacheAdapter = RedisCacheAdapter_1 = __decorate([
60
+ (0, common_1.Injectable)(),
61
+ __metadata("design:paramtypes", [String])
62
+ ], RedisCacheAdapter);
63
+ //# sourceMappingURL=redis-cache.adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-cache.adapter.js","sourceRoot":"","sources":["../../../src/cache/redis/redis-cache.adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAoE;AACpE,sDAA2B;AAIpB,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IACX,MAAM,GAAG,IAAI,eAAM,CAAC,mBAAiB,CAAC,IAAI,CAAC,CAAA;IAC3C,MAAM,CAAO;IAE9B,YAAY,QAAgB;QAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAK,CAAC,QAAQ,EAAE;YAChC,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,CAAC;YACvB,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,IAAI;SACrB,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;QAC7D,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,KAAoB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA,CAAC,CAAC;IAE9D,KAAK,CAAC,GAAG,CAAI,GAAW;QACtB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACtC,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAO,CAAC,CAAC,CAAC,IAAI,CAAA;IACrD,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,GAAW,EAAE,KAAQ,EAAE,MAAe;QACjD,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC/B,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;;YACxE,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,IAAmB,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,CAAC,CAAC;IAEpE,KAAK,CAAC,GAAG,CAAC,GAAW,IAAsB,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC;IAEzF,KAAK,CAAC,KAAK,KAAoB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA,CAAC,CAAC;IAEzD,eAAe,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAA,CAAC,CAAC;IAEvC,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YAAC,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,KAAK,CAAA;QAAC,CAAC;IAC7E,CAAC;CACF,CAAA;AAxCY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;;GACA,iBAAiB,CAwC7B"}
@@ -0,0 +1,3 @@
1
+ export declare class AppConfigModule {
2
+ }
3
+ //# sourceMappingURL=app-config.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-config.module.d.ts","sourceRoot":"","sources":["../../src/config/app-config.module.ts"],"names":[],"mappings":"AAKA,qBAyDa,eAAe;CAAG"}