@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.
- package/README.md +423 -0
- package/README.zh.md +404 -0
- package/assets/logo.svg +138 -0
- package/dist/admin-ui/assets/index-BjdBylCY.css +1 -0
- package/dist/admin-ui/assets/index-CDwKIMTJ.js +117 -0
- package/dist/admin-ui/assets/remixicon-B25hvfAs.eot +0 -0
- package/dist/admin-ui/assets/remixicon-BTtOSOPh.svg +9709 -0
- package/dist/admin-ui/assets/remixicon-CZw4FkzQ.woff2 +0 -0
- package/dist/admin-ui/assets/remixicon-S6an_USy.woff +0 -0
- package/dist/admin-ui/assets/remixicon-sqouR8Ox.ttf +0 -0
- package/dist/admin-ui/dist/assets/index-BjdBylCY.css +1 -0
- package/dist/admin-ui/dist/assets/index-CDwKIMTJ.js +117 -0
- package/dist/admin-ui/dist/assets/index-CppEl63e.css +1 -0
- package/dist/admin-ui/dist/assets/index-DBkeGfMQ.js +117 -0
- package/dist/admin-ui/dist/assets/index-ss5EmsBH.js +117 -0
- package/dist/admin-ui/dist/assets/remixicon-B25hvfAs.eot +0 -0
- package/dist/admin-ui/dist/assets/remixicon-BTtOSOPh.svg +9709 -0
- package/dist/admin-ui/dist/assets/remixicon-CZw4FkzQ.woff2 +0 -0
- package/dist/admin-ui/dist/assets/remixicon-S6an_USy.woff +0 -0
- package/dist/admin-ui/dist/assets/remixicon-sqouR8Ox.ttf +0 -0
- package/dist/admin-ui/dist/index.html +14 -0
- package/dist/admin-ui/index.html +14 -0
- package/dist/app.module.d.ts +3 -0
- package/dist/app.module.d.ts.map +1 -0
- package/dist/app.module.js +65 -0
- package/dist/app.module.js.map +1 -0
- package/dist/auth/admin.guard.d.ts +8 -0
- package/dist/auth/admin.guard.d.ts.map +1 -0
- package/dist/auth/admin.guard.js +34 -0
- package/dist/auth/admin.guard.js.map +1 -0
- package/dist/auth/auth.module.d.ts +3 -0
- package/dist/auth/auth.module.d.ts.map +1 -0
- package/dist/auth/auth.module.js +24 -0
- package/dist/auth/auth.module.js.map +1 -0
- package/dist/auth/decorators/jwt-payload.decorator.d.ts +2 -0
- package/dist/auth/decorators/jwt-payload.decorator.d.ts.map +1 -0
- package/dist/auth/decorators/jwt-payload.decorator.js +10 -0
- package/dist/auth/decorators/jwt-payload.decorator.js.map +1 -0
- package/dist/auth/group-token.guard.d.ts +11 -0
- package/dist/auth/group-token.guard.d.ts.map +1 -0
- package/dist/auth/group-token.guard.js +53 -0
- package/dist/auth/group-token.guard.js.map +1 -0
- package/dist/cache/cache.interface.d.ts +8 -0
- package/dist/cache/cache.interface.d.ts.map +1 -0
- package/dist/cache/cache.interface.js +3 -0
- package/dist/cache/cache.interface.js.map +1 -0
- package/dist/cache/cache.module.d.ts +5 -0
- package/dist/cache/cache.module.d.ts.map +1 -0
- package/dist/cache/cache.module.js +56 -0
- package/dist/cache/cache.module.js.map +1 -0
- package/dist/cache/cache.token.d.ts +2 -0
- package/dist/cache/cache.token.d.ts.map +1 -0
- package/dist/cache/cache.token.js +5 -0
- package/dist/cache/cache.token.js.map +1 -0
- package/dist/cache/memory/memory-cache.adapter.d.ts +15 -0
- package/dist/cache/memory/memory-cache.adapter.d.ts.map +1 -0
- package/dist/cache/memory/memory-cache.adapter.js +52 -0
- package/dist/cache/memory/memory-cache.adapter.js.map +1 -0
- package/dist/cache/redis/redis-cache.adapter.d.ts +16 -0
- package/dist/cache/redis/redis-cache.adapter.d.ts.map +1 -0
- package/dist/cache/redis/redis-cache.adapter.js +63 -0
- package/dist/cache/redis/redis-cache.adapter.js.map +1 -0
- package/dist/config/app-config.module.d.ts +3 -0
- package/dist/config/app-config.module.d.ts.map +1 -0
- package/dist/config/app-config.module.js +100 -0
- package/dist/config/app-config.module.js.map +1 -0
- package/dist/config/app-config.service.d.ts +29 -0
- package/dist/config/app-config.service.d.ts.map +1 -0
- package/dist/config/app-config.service.js +66 -0
- package/dist/config/app-config.service.js.map +1 -0
- package/dist/crypto/crypto.module.d.ts +3 -0
- package/dist/crypto/crypto.module.d.ts.map +1 -0
- package/dist/crypto/crypto.module.js +22 -0
- package/dist/crypto/crypto.module.js.map +1 -0
- package/dist/crypto/encryption.service.d.ts +9 -0
- package/dist/crypto/encryption.service.d.ts.map +1 -0
- package/dist/crypto/encryption.service.js +59 -0
- package/dist/crypto/encryption.service.js.map +1 -0
- package/dist/crypto/jwt.service.d.ts +28 -0
- package/dist/crypto/jwt.service.d.ts.map +1 -0
- package/dist/crypto/jwt.service.js +72 -0
- package/dist/crypto/jwt.service.js.map +1 -0
- package/dist/groups/dto/create-group.dto.d.ts +5 -0
- package/dist/groups/dto/create-group.dto.d.ts.map +1 -0
- package/dist/groups/dto/create-group.dto.js +34 -0
- package/dist/groups/dto/create-group.dto.js.map +1 -0
- package/dist/groups/groups.controller.d.ts +9 -0
- package/dist/groups/groups.controller.d.ts.map +1 -0
- package/dist/groups/groups.controller.js +60 -0
- package/dist/groups/groups.controller.js.map +1 -0
- package/dist/groups/groups.module.d.ts +3 -0
- package/dist/groups/groups.module.d.ts.map +1 -0
- package/dist/groups/groups.module.js +25 -0
- package/dist/groups/groups.module.js.map +1 -0
- package/dist/groups/groups.service.d.ts +9 -0
- package/dist/groups/groups.service.d.ts.map +1 -0
- package/dist/groups/groups.service.js +45 -0
- package/dist/groups/groups.service.js.map +1 -0
- package/dist/health/health.controller.d.ts +13 -0
- package/dist/health/health.controller.d.ts.map +1 -0
- package/dist/health/health.controller.js +68 -0
- package/dist/health/health.controller.js.map +1 -0
- package/dist/health/health.module.d.ts +3 -0
- package/dist/health/health.module.d.ts.map +1 -0
- package/dist/health/health.module.js +22 -0
- package/dist/health/health.module.js.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +109 -0
- package/dist/main.js.map +1 -0
- package/dist/mcp/admin-mcp.controller.d.ts +13 -0
- package/dist/mcp/admin-mcp.controller.d.ts.map +1 -0
- package/dist/mcp/admin-mcp.controller.js +105 -0
- package/dist/mcp/admin-mcp.controller.js.map +1 -0
- package/dist/mcp/client-mcp.controller.d.ts +9 -0
- package/dist/mcp/client-mcp.controller.d.ts.map +1 -0
- package/dist/mcp/client-mcp.controller.js +63 -0
- package/dist/mcp/client-mcp.controller.js.map +1 -0
- package/dist/mcp/dto/create-mcp.dto.d.ts +11 -0
- package/dist/mcp/dto/create-mcp.dto.d.ts.map +1 -0
- package/dist/mcp/dto/create-mcp.dto.js +74 -0
- package/dist/mcp/dto/create-mcp.dto.js.map +1 -0
- package/dist/mcp/dto/update-mcp.dto.d.ts +11 -0
- package/dist/mcp/dto/update-mcp.dto.d.ts.map +1 -0
- package/dist/mcp/dto/update-mcp.dto.js +71 -0
- package/dist/mcp/dto/update-mcp.dto.js.map +1 -0
- package/dist/mcp/mcp.module.d.ts +3 -0
- package/dist/mcp/mcp.module.d.ts.map +1 -0
- package/dist/mcp/mcp.module.js +26 -0
- package/dist/mcp/mcp.module.js.map +1 -0
- package/dist/mcp/mcp.service.d.ts +16 -0
- package/dist/mcp/mcp.service.d.ts.map +1 -0
- package/dist/mcp/mcp.service.js +78 -0
- package/dist/mcp/mcp.service.js.map +1 -0
- package/dist/metrics/metrics.controller.d.ts +12 -0
- package/dist/metrics/metrics.controller.d.ts.map +1 -0
- package/dist/metrics/metrics.controller.js +71 -0
- package/dist/metrics/metrics.controller.js.map +1 -0
- package/dist/metrics/metrics.module.d.ts +3 -0
- package/dist/metrics/metrics.module.d.ts.map +1 -0
- package/dist/metrics/metrics.module.js +20 -0
- package/dist/metrics/metrics.module.js.map +1 -0
- package/dist/oas/admin-oas.controller.d.ts +12 -0
- package/dist/oas/admin-oas.controller.d.ts.map +1 -0
- package/dist/oas/admin-oas.controller.js +96 -0
- package/dist/oas/admin-oas.controller.js.map +1 -0
- package/dist/oas/client-oas.controller.d.ts +9 -0
- package/dist/oas/client-oas.controller.d.ts.map +1 -0
- package/dist/oas/client-oas.controller.js +63 -0
- package/dist/oas/client-oas.controller.js.map +1 -0
- package/dist/oas/dto/create-oas.dto.d.ts +12 -0
- package/dist/oas/dto/create-oas.dto.d.ts.map +1 -0
- package/dist/oas/dto/create-oas.dto.js +82 -0
- package/dist/oas/dto/create-oas.dto.js.map +1 -0
- package/dist/oas/dto/update-oas.dto.d.ts +12 -0
- package/dist/oas/dto/update-oas.dto.d.ts.map +1 -0
- package/dist/oas/dto/update-oas.dto.js +77 -0
- package/dist/oas/dto/update-oas.dto.js.map +1 -0
- package/dist/oas/oas.module.d.ts +3 -0
- package/dist/oas/oas.module.d.ts.map +1 -0
- package/dist/oas/oas.module.js +26 -0
- package/dist/oas/oas.module.js.map +1 -0
- package/dist/oas/oas.service.d.ts +16 -0
- package/dist/oas/oas.service.d.ts.map +1 -0
- package/dist/oas/oas.service.js +79 -0
- package/dist/oas/oas.service.js.map +1 -0
- package/dist/otel/otel.d.ts +25 -0
- package/dist/otel/otel.d.ts.map +1 -0
- package/dist/otel/otel.js +61 -0
- package/dist/otel/otel.js.map +1 -0
- package/dist/storage/interfaces/repos.interface.d.ts +158 -0
- package/dist/storage/interfaces/repos.interface.d.ts.map +1 -0
- package/dist/storage/interfaces/repos.interface.js +4 -0
- package/dist/storage/interfaces/repos.interface.js.map +1 -0
- package/dist/storage/memory/memory-group.repo.d.ts +9 -0
- package/dist/storage/memory/memory-group.repo.d.ts.map +1 -0
- package/dist/storage/memory/memory-group.repo.js +33 -0
- package/dist/storage/memory/memory-group.repo.js.map +1 -0
- package/dist/storage/memory/memory-mcp.repo.d.ts +13 -0
- package/dist/storage/memory/memory-mcp.repo.d.ts.map +1 -0
- package/dist/storage/memory/memory-mcp.repo.js +65 -0
- package/dist/storage/memory/memory-mcp.repo.js.map +1 -0
- package/dist/storage/memory/memory-oas.repo.d.ts +13 -0
- package/dist/storage/memory/memory-oas.repo.d.ts.map +1 -0
- package/dist/storage/memory/memory-oas.repo.js +55 -0
- package/dist/storage/memory/memory-oas.repo.js.map +1 -0
- package/dist/storage/memory/memory-token.repo.d.ts +11 -0
- package/dist/storage/memory/memory-token.repo.d.ts.map +1 -0
- package/dist/storage/memory/memory-token.repo.js +39 -0
- package/dist/storage/memory/memory-token.repo.js.map +1 -0
- package/dist/storage/storage.module.d.ts +5 -0
- package/dist/storage/storage.module.d.ts.map +1 -0
- package/dist/storage/storage.module.js +84 -0
- package/dist/storage/storage.module.js.map +1 -0
- package/dist/storage/storage.tokens.d.ts +5 -0
- package/dist/storage/storage.tokens.d.ts.map +1 -0
- package/dist/storage/storage.tokens.js +8 -0
- package/dist/storage/storage.tokens.js.map +1 -0
- package/dist/storage/typeorm/entities/group.entity.d.ts +12 -0
- package/dist/storage/typeorm/entities/group.entity.d.ts.map +1 -0
- package/dist/storage/typeorm/entities/group.entity.js +57 -0
- package/dist/storage/typeorm/entities/group.entity.js.map +1 -0
- package/dist/storage/typeorm/entities/mcp-entry.entity.d.ts +16 -0
- package/dist/storage/typeorm/entities/mcp-entry.entity.d.ts.map +1 -0
- package/dist/storage/typeorm/entities/mcp-entry.entity.js +82 -0
- package/dist/storage/typeorm/entities/mcp-entry.entity.js.map +1 -0
- package/dist/storage/typeorm/entities/oas-entry.entity.d.ts +17 -0
- package/dist/storage/typeorm/entities/oas-entry.entity.d.ts.map +1 -0
- package/dist/storage/typeorm/entities/oas-entry.entity.js +87 -0
- package/dist/storage/typeorm/entities/oas-entry.entity.js.map +1 -0
- package/dist/storage/typeorm/entities/token.entity.d.ts +13 -0
- package/dist/storage/typeorm/entities/token.entity.d.ts.map +1 -0
- package/dist/storage/typeorm/entities/token.entity.js +68 -0
- package/dist/storage/typeorm/entities/token.entity.js.map +1 -0
- package/dist/storage/typeorm/typeorm-group.repo.d.ts +12 -0
- package/dist/storage/typeorm/typeorm-group.repo.d.ts.map +1 -0
- package/dist/storage/typeorm/typeorm-group.repo.js +50 -0
- package/dist/storage/typeorm/typeorm-group.repo.js.map +1 -0
- package/dist/storage/typeorm/typeorm-mcp.repo.d.ts +15 -0
- package/dist/storage/typeorm/typeorm-mcp.repo.d.ts.map +1 -0
- package/dist/storage/typeorm/typeorm-mcp.repo.js +88 -0
- package/dist/storage/typeorm/typeorm-mcp.repo.js.map +1 -0
- package/dist/storage/typeorm/typeorm-oas.repo.d.ts +15 -0
- package/dist/storage/typeorm/typeorm-oas.repo.d.ts.map +1 -0
- package/dist/storage/typeorm/typeorm-oas.repo.js +92 -0
- package/dist/storage/typeorm/typeorm-oas.repo.js.map +1 -0
- package/dist/storage/typeorm/typeorm-token.repo.d.ts +13 -0
- package/dist/storage/typeorm/typeorm-token.repo.d.ts.map +1 -0
- package/dist/storage/typeorm/typeorm-token.repo.js +56 -0
- package/dist/storage/typeorm/typeorm-token.repo.js.map +1 -0
- package/dist/tokens/dto/issue-token.dto.d.ts +6 -0
- package/dist/tokens/dto/issue-token.dto.d.ts.map +1 -0
- package/dist/tokens/dto/issue-token.dto.js +41 -0
- package/dist/tokens/dto/issue-token.dto.js.map +1 -0
- package/dist/tokens/tokens.controller.d.ts +12 -0
- package/dist/tokens/tokens.controller.d.ts.map +1 -0
- package/dist/tokens/tokens.controller.js +89 -0
- package/dist/tokens/tokens.controller.js.map +1 -0
- package/dist/tokens/tokens.module.d.ts +3 -0
- package/dist/tokens/tokens.module.d.ts.map +1 -0
- package/dist/tokens/tokens.module.js +27 -0
- package/dist/tokens/tokens.module.js.map +1 -0
- package/dist/tokens/tokens.service.d.ts +25 -0
- package/dist/tokens/tokens.service.d.ts.map +1 -0
- package/dist/tokens/tokens.service.js +69 -0
- package/dist/tokens/tokens.service.js.map +1 -0
- package/package.json +81 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"cache.interface.js","sourceRoot":"","sources":["../../src/cache/cache.interface.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"app-config.module.d.ts","sourceRoot":"","sources":["../../src/config/app-config.module.ts"],"names":[],"mappings":"AAKA,qBAyDa,eAAe;CAAG"}
|