@veritas-lex/contract-analysis-package 1.2.3
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 +181 -0
- package/dist/auth/auth-core.module.d.ts +21 -0
- package/dist/auth/auth-core.module.d.ts.map +1 -0
- package/dist/auth/auth-core.module.js +56 -0
- package/dist/auth/auth-core.module.js.map +1 -0
- package/dist/auth/decorators/current-user.decorator.d.ts +2 -0
- package/dist/auth/decorators/current-user.decorator.d.ts.map +1 -0
- package/dist/auth/decorators/current-user.decorator.js +9 -0
- package/dist/auth/decorators/current-user.decorator.js.map +1 -0
- package/dist/auth/decorators/public.decorator.d.ts +3 -0
- package/dist/auth/decorators/public.decorator.d.ts.map +1 -0
- package/dist/auth/decorators/public.decorator.js +8 -0
- package/dist/auth/decorators/public.decorator.js.map +1 -0
- package/dist/auth/guards/jwt-auth.guard.d.ts +11 -0
- package/dist/auth/guards/jwt-auth.guard.d.ts.map +1 -0
- package/dist/auth/guards/jwt-auth.guard.js +39 -0
- package/dist/auth/guards/jwt-auth.guard.js.map +1 -0
- package/dist/auth/index.d.ts +7 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +15 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/interfaces/jwt-payload.interface.d.ts +24 -0
- package/dist/auth/interfaces/jwt-payload.interface.d.ts.map +1 -0
- package/dist/auth/interfaces/jwt-payload.interface.js +3 -0
- package/dist/auth/interfaces/jwt-payload.interface.js.map +1 -0
- package/dist/auth/strategies/base-jwt.strategy.d.ts +47 -0
- package/dist/auth/strategies/base-jwt.strategy.d.ts.map +1 -0
- package/dist/auth/strategies/base-jwt.strategy.js +162 -0
- package/dist/auth/strategies/base-jwt.strategy.js.map +1 -0
- package/dist/bootstrap/configure-app.d.ts +50 -0
- package/dist/bootstrap/configure-app.d.ts.map +1 -0
- package/dist/bootstrap/configure-app.js +117 -0
- package/dist/bootstrap/configure-app.js.map +1 -0
- package/dist/bootstrap/index.d.ts +3 -0
- package/dist/bootstrap/index.d.ts.map +1 -0
- package/dist/bootstrap/index.js +6 -0
- package/dist/bootstrap/index.js.map +1 -0
- package/dist/config/app.config.d.ts +37 -0
- package/dist/config/app.config.d.ts.map +1 -0
- package/dist/config/app.config.js +28 -0
- package/dist/config/app.config.js.map +1 -0
- package/dist/config/database.config.d.ts +48 -0
- package/dist/config/database.config.d.ts.map +1 -0
- package/dist/config/database.config.js +34 -0
- package/dist/config/database.config.js.map +1 -0
- package/dist/config/doc.config.d.ts +31 -0
- package/dist/config/doc.config.d.ts.map +1 -0
- package/dist/config/doc.config.js +22 -0
- package/dist/config/doc.config.js.map +1 -0
- package/dist/config/index.d.ts +17 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +26 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/jwt.config.d.ts +19 -0
- package/dist/config/jwt.config.d.ts.map +1 -0
- package/dist/config/jwt.config.js +28 -0
- package/dist/config/jwt.config.js.map +1 -0
- package/dist/config/logging.config.d.ts +33 -0
- package/dist/config/logging.config.d.ts.map +1 -0
- package/dist/config/logging.config.js +106 -0
- package/dist/config/logging.config.js.map +1 -0
- package/dist/config/redis.config.d.ts +19 -0
- package/dist/config/redis.config.d.ts.map +1 -0
- package/dist/config/redis.config.js +16 -0
- package/dist/config/redis.config.js.map +1 -0
- package/dist/config/security.config.d.ts +66 -0
- package/dist/config/security.config.d.ts.map +1 -0
- package/dist/config/security.config.js +66 -0
- package/dist/config/security.config.js.map +1 -0
- package/dist/config/storage.config.d.ts +20 -0
- package/dist/config/storage.config.d.ts.map +1 -0
- package/dist/config/storage.config.js +17 -0
- package/dist/config/storage.config.js.map +1 -0
- package/dist/config/validation.config.d.ts +62 -0
- package/dist/config/validation.config.d.ts.map +1 -0
- package/dist/config/validation.config.js +139 -0
- package/dist/config/validation.config.js.map +1 -0
- package/dist/constants/enums.d.ts +76 -0
- package/dist/constants/enums.d.ts.map +1 -0
- package/dist/constants/enums.js +92 -0
- package/dist/constants/enums.js.map +1 -0
- package/dist/constants/file-validation.constants.d.ts +28 -0
- package/dist/constants/file-validation.constants.d.ts.map +1 -0
- package/dist/constants/file-validation.constants.js +81 -0
- package/dist/constants/file-validation.constants.js.map +1 -0
- package/dist/constants/index.d.ts +6 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +26 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/pii-classifications.constants.d.ts +27 -0
- package/dist/constants/pii-classifications.constants.d.ts.map +1 -0
- package/dist/constants/pii-classifications.constants.js +68 -0
- package/dist/constants/pii-classifications.constants.js.map +1 -0
- package/dist/database/base.entity.d.ts +6 -0
- package/dist/database/base.entity.d.ts.map +1 -0
- package/dist/database/base.entity.js +32 -0
- package/dist/database/base.entity.js.map +1 -0
- package/dist/database/database.module.d.ts +32 -0
- package/dist/database/database.module.d.ts.map +1 -0
- package/dist/database/database.module.js +69 -0
- package/dist/database/database.module.js.map +1 -0
- package/dist/database/entities/base-audit-log.entity.d.ts +21 -0
- package/dist/database/entities/base-audit-log.entity.d.ts.map +1 -0
- package/dist/database/entities/base-audit-log.entity.js +90 -0
- package/dist/database/entities/base-audit-log.entity.js.map +1 -0
- package/dist/database/entities/base-contract-chunk.entity.d.ts +18 -0
- package/dist/database/entities/base-contract-chunk.entity.d.ts.map +1 -0
- package/dist/database/entities/base-contract-chunk.entity.js +71 -0
- package/dist/database/entities/base-contract-chunk.entity.js.map +1 -0
- package/dist/database/entities/base-contract-event.entity.d.ts +16 -0
- package/dist/database/entities/base-contract-event.entity.d.ts.map +1 -0
- package/dist/database/entities/base-contract-event.entity.js +66 -0
- package/dist/database/entities/base-contract-event.entity.js.map +1 -0
- package/dist/database/entities/base-contract-key-date-rule.entity.d.ts +31 -0
- package/dist/database/entities/base-contract-key-date-rule.entity.d.ts.map +1 -0
- package/dist/database/entities/base-contract-key-date-rule.entity.js +140 -0
- package/dist/database/entities/base-contract-key-date-rule.entity.js.map +1 -0
- package/dist/database/entities/base-contract-pii-replacement.entity.d.ts +18 -0
- package/dist/database/entities/base-contract-pii-replacement.entity.d.ts.map +1 -0
- package/dist/database/entities/base-contract-pii-replacement.entity.js +67 -0
- package/dist/database/entities/base-contract-pii-replacement.entity.js.map +1 -0
- package/dist/database/entities/base-contract-red-flag.entity.d.ts +27 -0
- package/dist/database/entities/base-contract-red-flag.entity.d.ts.map +1 -0
- package/dist/database/entities/base-contract-red-flag.entity.js +114 -0
- package/dist/database/entities/base-contract-red-flag.entity.js.map +1 -0
- package/dist/database/entities/base-contract-task.entity.d.ts +20 -0
- package/dist/database/entities/base-contract-task.entity.d.ts.map +1 -0
- package/dist/database/entities/base-contract-task.entity.js +87 -0
- package/dist/database/entities/base-contract-task.entity.js.map +1 -0
- package/dist/database/entities/base-contract-text.entity.d.ts +19 -0
- package/dist/database/entities/base-contract-text.entity.d.ts.map +1 -0
- package/dist/database/entities/base-contract-text.entity.js +77 -0
- package/dist/database/entities/base-contract-text.entity.js.map +1 -0
- package/dist/database/entities/base-contract.entity.d.ts +56 -0
- package/dist/database/entities/base-contract.entity.d.ts.map +1 -0
- package/dist/database/entities/base-contract.entity.js +221 -0
- package/dist/database/entities/base-contract.entity.js.map +1 -0
- package/dist/database/entities/base-job.entity.d.ts +21 -0
- package/dist/database/entities/base-job.entity.d.ts.map +1 -0
- package/dist/database/entities/base-job.entity.js +89 -0
- package/dist/database/entities/base-job.entity.js.map +1 -0
- package/dist/database/entities/base-qna-question.entity.d.ts +22 -0
- package/dist/database/entities/base-qna-question.entity.d.ts.map +1 -0
- package/dist/database/entities/base-qna-question.entity.js +92 -0
- package/dist/database/entities/base-qna-question.entity.js.map +1 -0
- package/dist/database/entities/base-scoring-criteria.entity.d.ts +57 -0
- package/dist/database/entities/base-scoring-criteria.entity.d.ts.map +1 -0
- package/dist/database/entities/base-scoring-criteria.entity.js +376 -0
- package/dist/database/entities/base-scoring-criteria.entity.js.map +1 -0
- package/dist/database/entities/base-users-profile.entity.d.ts +32 -0
- package/dist/database/entities/base-users-profile.entity.d.ts.map +1 -0
- package/dist/database/entities/base-users-profile.entity.js +91 -0
- package/dist/database/entities/base-users-profile.entity.js.map +1 -0
- package/dist/database/entities/index.d.ts +16 -0
- package/dist/database/entities/index.d.ts.map +1 -0
- package/dist/database/entities/index.js +37 -0
- package/dist/database/entities/index.js.map +1 -0
- package/dist/database/entities/qna-question-template.entity.d.ts +30 -0
- package/dist/database/entities/qna-question-template.entity.d.ts.map +1 -0
- package/dist/database/entities/qna-question-template.entity.js +145 -0
- package/dist/database/entities/qna-question-template.entity.js.map +1 -0
- package/dist/database/entities/qna-response.entity.d.ts +29 -0
- package/dist/database/entities/qna-response.entity.d.ts.map +1 -0
- package/dist/database/entities/qna-response.entity.js +129 -0
- package/dist/database/entities/qna-response.entity.js.map +1 -0
- package/dist/database/index.d.ts +7 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +32 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/redis.module.d.ts +12 -0
- package/dist/database/redis.module.d.ts.map +1 -0
- package/dist/database/redis.module.js +40 -0
- package/dist/database/redis.module.js.map +1 -0
- package/dist/database/redis.provider.d.ts +15 -0
- package/dist/database/redis.provider.d.ts.map +1 -0
- package/dist/database/redis.provider.js +42 -0
- package/dist/database/redis.provider.js.map +1 -0
- package/dist/dto/api-response.dto.d.ts +36 -0
- package/dist/dto/api-response.dto.d.ts.map +1 -0
- package/dist/dto/api-response.dto.js +88 -0
- package/dist/dto/api-response.dto.js.map +1 -0
- package/dist/dto/index.d.ts +2 -0
- package/dist/dto/index.d.ts.map +1 -0
- package/dist/dto/index.js +6 -0
- package/dist/dto/index.js.map +1 -0
- package/dist/filters/all-exceptions.filter.d.ts +43 -0
- package/dist/filters/all-exceptions.filter.d.ts.map +1 -0
- package/dist/filters/all-exceptions.filter.js +123 -0
- package/dist/filters/all-exceptions.filter.js.map +1 -0
- package/dist/filters/index.d.ts +3 -0
- package/dist/filters/index.d.ts.map +1 -0
- package/dist/filters/index.js +6 -0
- package/dist/filters/index.js.map +1 -0
- package/dist/helpers/crypto.service.d.ts +53 -0
- package/dist/helpers/crypto.service.d.ts.map +1 -0
- package/dist/helpers/crypto.service.js +153 -0
- package/dist/helpers/crypto.service.js.map +1 -0
- package/dist/helpers/index.d.ts +2 -0
- package/dist/helpers/index.d.ts.map +1 -0
- package/dist/helpers/index.js +6 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +86 -0
- package/dist/index.js.map +1 -0
- package/dist/swagger/index.d.ts +2 -0
- package/dist/swagger/index.d.ts.map +1 -0
- package/dist/swagger/index.js +6 -0
- package/dist/swagger/index.js.map +1 -0
- package/dist/swagger/swagger.d.ts +16 -0
- package/dist/swagger/swagger.d.ts.map +1 -0
- package/dist/swagger/swagger.js +59 -0
- package/dist/swagger/swagger.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-jwt.strategy.js","sourceRoot":"","sources":["../../../src/auth/strategies/base-jwt.strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { LoggerService } from "@nestjs/common";
|
|
2
|
+
import { NestApplication } from "@nestjs/core";
|
|
3
|
+
/**
|
|
4
|
+
* Options for configuring the NestJS application during bootstrap.
|
|
5
|
+
*/
|
|
6
|
+
export interface AppBootstrapOptions {
|
|
7
|
+
/**
|
|
8
|
+
* CORS origin(s). Falls back to `app.corsOrigins` config if not set.
|
|
9
|
+
* Pass `'*'` for any origin, a string for a single origin,
|
|
10
|
+
* or a comma-separated string / array for multiple.
|
|
11
|
+
*/
|
|
12
|
+
corsOrigins?: string | string[];
|
|
13
|
+
/**
|
|
14
|
+
* The pino Logger instance from `nestjs-pino`.
|
|
15
|
+
* Must be resolved by the calling API via `app.get(Logger)` so that
|
|
16
|
+
* the class identity matches the one registered by `LoggerModule`.
|
|
17
|
+
*
|
|
18
|
+
* If omitted the default NestJS logger is kept.
|
|
19
|
+
*/
|
|
20
|
+
logger?: LoggerService;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Shared application bootstrap helper.
|
|
24
|
+
*
|
|
25
|
+
* Applies a standardised set of middleware, pipes, filters, interceptors,
|
|
26
|
+
* and Swagger documentation to a NestJS application.
|
|
27
|
+
*
|
|
28
|
+
* The calling `main.ts` only needs to:
|
|
29
|
+
* 1. Create the app (`NestFactory.create(...)`)
|
|
30
|
+
* 2. Optionally import tracing (OTel/Langfuse) before everything else
|
|
31
|
+
* 3. Call `await configureApp(app)`
|
|
32
|
+
* 4. Call `await app.listen(port)`
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* import { NestFactory, NestApplication } from '@nestjs/core';
|
|
37
|
+
* import { configureApp } from '@veritas-lex/contract-analysis-package';
|
|
38
|
+
* import { MainModule } from './main.module';
|
|
39
|
+
*
|
|
40
|
+
* async function bootstrap() {
|
|
41
|
+
* const app = await NestFactory.create<NestApplication>(MainModule, { bufferLogs: true });
|
|
42
|
+
* await configureApp(app);
|
|
43
|
+
* const port = app.get(ConfigService).get<number>('app.port');
|
|
44
|
+
* await app.listen(port);
|
|
45
|
+
* }
|
|
46
|
+
* bootstrap();
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare function configureApp(app: NestApplication, options?: AppBootstrapOptions): Promise<void>;
|
|
50
|
+
//# sourceMappingURL=configure-app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configure-app.d.ts","sourceRoot":"","sources":["../../src/bootstrap/configure-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAM/C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEhC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,eAAe,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAwGf"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.configureApp = configureApp;
|
|
7
|
+
const common_1 = require("@nestjs/common");
|
|
8
|
+
const config_1 = require("@nestjs/config");
|
|
9
|
+
const compression_1 = __importDefault(require("compression"));
|
|
10
|
+
const helmet_1 = __importDefault(require("helmet"));
|
|
11
|
+
const all_exceptions_filter_1 = require("../filters/all-exceptions.filter");
|
|
12
|
+
const swagger_1 = require("../swagger/swagger");
|
|
13
|
+
/**
|
|
14
|
+
* Shared application bootstrap helper.
|
|
15
|
+
*
|
|
16
|
+
* Applies a standardised set of middleware, pipes, filters, interceptors,
|
|
17
|
+
* and Swagger documentation to a NestJS application.
|
|
18
|
+
*
|
|
19
|
+
* The calling `main.ts` only needs to:
|
|
20
|
+
* 1. Create the app (`NestFactory.create(...)`)
|
|
21
|
+
* 2. Optionally import tracing (OTel/Langfuse) before everything else
|
|
22
|
+
* 3. Call `await configureApp(app)`
|
|
23
|
+
* 4. Call `await app.listen(port)`
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* import { NestFactory, NestApplication } from '@nestjs/core';
|
|
28
|
+
* import { configureApp } from '@veritas-lex/contract-analysis-package';
|
|
29
|
+
* import { MainModule } from './main.module';
|
|
30
|
+
*
|
|
31
|
+
* async function bootstrap() {
|
|
32
|
+
* const app = await NestFactory.create<NestApplication>(MainModule, { bufferLogs: true });
|
|
33
|
+
* await configureApp(app);
|
|
34
|
+
* const port = app.get(ConfigService).get<number>('app.port');
|
|
35
|
+
* await app.listen(port);
|
|
36
|
+
* }
|
|
37
|
+
* bootstrap();
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
async function configureApp(app, options) {
|
|
41
|
+
// Wire up structured pino logger (replaces default NestJS Logger)
|
|
42
|
+
if (options?.logger) {
|
|
43
|
+
app.useLogger(options.logger);
|
|
44
|
+
}
|
|
45
|
+
const configService = app.get(config_1.ConfigService);
|
|
46
|
+
const env = configService.get("app.env", "development");
|
|
47
|
+
process.env.NODE_ENV = env;
|
|
48
|
+
const globalPrefix = configService.get("app.globalPrefix", "/api");
|
|
49
|
+
const version = configService.get("app.versioning.version", "1");
|
|
50
|
+
const versioningPrefix = configService.get("app.versioning.prefix", "v");
|
|
51
|
+
const isProduction = env === "production";
|
|
52
|
+
// ── Security headers ────────────────────────────────────────────────
|
|
53
|
+
app.use((0, helmet_1.default)({
|
|
54
|
+
contentSecurityPolicy: false,
|
|
55
|
+
crossOriginEmbedderPolicy: false,
|
|
56
|
+
crossOriginResourcePolicy: { policy: "cross-origin" },
|
|
57
|
+
frameguard: false,
|
|
58
|
+
ieNoOpen: false,
|
|
59
|
+
dnsPrefetchControl: false,
|
|
60
|
+
noSniff: true,
|
|
61
|
+
hidePoweredBy: true,
|
|
62
|
+
hsts: isProduction
|
|
63
|
+
? { maxAge: 31536000, includeSubDomains: true, preload: true }
|
|
64
|
+
: false,
|
|
65
|
+
}));
|
|
66
|
+
// ── URI versioning ──────────────────────────────────────────────────
|
|
67
|
+
app.enableVersioning({
|
|
68
|
+
type: common_1.VersioningType.URI,
|
|
69
|
+
defaultVersion: version,
|
|
70
|
+
prefix: versioningPrefix,
|
|
71
|
+
});
|
|
72
|
+
// ── CORS ────────────────────────────────────────────────────────────
|
|
73
|
+
const corsOrigins = options?.corsOrigins ??
|
|
74
|
+
configService.get("app.corsOrigins") ??
|
|
75
|
+
"http://localhost:4200";
|
|
76
|
+
const allowedOrigins = typeof corsOrigins === "string"
|
|
77
|
+
? corsOrigins.split(",").map((o) => o.trim())
|
|
78
|
+
: corsOrigins;
|
|
79
|
+
app.enableCors({
|
|
80
|
+
origin: allowedOrigins,
|
|
81
|
+
methods: ["GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"],
|
|
82
|
+
credentials: true,
|
|
83
|
+
exposedHeaders: ["Content-Disposition"],
|
|
84
|
+
maxAge: 86400, // Cache preflight for 24 hours
|
|
85
|
+
});
|
|
86
|
+
// ── Global prefix ──────────────────────────────────────────────────
|
|
87
|
+
app.setGlobalPrefix(globalPrefix);
|
|
88
|
+
// ── Body parser limits ─────────────────────────────────────────────
|
|
89
|
+
app.useBodyParser("json", { limit: "50mb" });
|
|
90
|
+
app.useBodyParser("urlencoded", { limit: "50mb", extended: true });
|
|
91
|
+
// ── Validation ─────────────────────────────────────────────────────
|
|
92
|
+
app.useGlobalPipes(new common_1.ValidationPipe({
|
|
93
|
+
whitelist: true,
|
|
94
|
+
transform: true,
|
|
95
|
+
forbidNonWhitelisted: true,
|
|
96
|
+
forbidUnknownValues: true,
|
|
97
|
+
transformOptions: {
|
|
98
|
+
enableImplicitConversion: true,
|
|
99
|
+
},
|
|
100
|
+
}));
|
|
101
|
+
// ── Exception filter ───────────────────────────────────────────────
|
|
102
|
+
app.useGlobalFilters(new all_exceptions_filter_1.AllExceptionsFilter());
|
|
103
|
+
// ── Swagger docs ───────────────────────────────────────────────────
|
|
104
|
+
(0, swagger_1.SwaggerDocs)(app);
|
|
105
|
+
// ── Compression ────────────────────────────────────────────────────
|
|
106
|
+
app.use((0, compression_1.default)({
|
|
107
|
+
filter: (req, res) => {
|
|
108
|
+
if (req.headers["x-no-compression"]) {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
return compression_1.default.filter(req, res);
|
|
112
|
+
},
|
|
113
|
+
}));
|
|
114
|
+
// ── Graceful shutdown ──────────────────────────────────────────────
|
|
115
|
+
app.enableShutdownHooks();
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=configure-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configure-app.js","sourceRoot":"","sources":["../../src/bootstrap/configure-app.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bootstrap/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.configureApp = void 0;
|
|
4
|
+
var configure_app_1 = require("./configure-app");
|
|
5
|
+
Object.defineProperty(exports, "configureApp", { enumerable: true, get: function () { return configure_app_1.configureApp; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bootstrap/index.ts"],"names":[],"mappings":";;;AAAA,iDAA+C;AAAtC,6GAAA,YAAY,OAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface AppConfigOptions {
|
|
2
|
+
/** Default application name */
|
|
3
|
+
name?: string;
|
|
4
|
+
/** Default HTTP port */
|
|
5
|
+
port?: number;
|
|
6
|
+
/** Default CORS origins (comma-separated) */
|
|
7
|
+
corsOrigins?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Creates an application config factory registered under the `'app'` namespace.
|
|
11
|
+
*
|
|
12
|
+
* @param options - Default values that can be overridden by environment variables
|
|
13
|
+
*/
|
|
14
|
+
export declare function createAppConfig(options?: AppConfigOptions): (() => {
|
|
15
|
+
name: string;
|
|
16
|
+
env: string;
|
|
17
|
+
versioning: {
|
|
18
|
+
enable: boolean;
|
|
19
|
+
prefix: string;
|
|
20
|
+
version: string;
|
|
21
|
+
};
|
|
22
|
+
globalPrefix: string;
|
|
23
|
+
port: number;
|
|
24
|
+
corsOrigins: string;
|
|
25
|
+
}) & import("@nestjs/config").ConfigFactoryKeyHost<{
|
|
26
|
+
name: string;
|
|
27
|
+
env: string;
|
|
28
|
+
versioning: {
|
|
29
|
+
enable: boolean;
|
|
30
|
+
prefix: string;
|
|
31
|
+
version: string;
|
|
32
|
+
};
|
|
33
|
+
globalPrefix: string;
|
|
34
|
+
port: number;
|
|
35
|
+
corsOrigins: string;
|
|
36
|
+
}>;
|
|
37
|
+
//# sourceMappingURL=app.config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.config.d.ts","sourceRoot":"","sources":["../../src/config/app.config.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB;;;;;;;;;;;;;;;;;;;;;;GAqB7D"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createAppConfig = createAppConfig;
|
|
4
|
+
const config_1 = require("@nestjs/config");
|
|
5
|
+
/**
|
|
6
|
+
* Creates an application config factory registered under the `'app'` namespace.
|
|
7
|
+
*
|
|
8
|
+
* @param options - Default values that can be overridden by environment variables
|
|
9
|
+
*/
|
|
10
|
+
function createAppConfig(options = {}) {
|
|
11
|
+
return (0, config_1.registerAs)("app", () => ({
|
|
12
|
+
name: process.env.APP_NAME || options.name || "NestJS API",
|
|
13
|
+
env: process.env.APP_ENV || "development",
|
|
14
|
+
versioning: {
|
|
15
|
+
enable: process.env.HTTP_VERSIONING_ENABLE === "true" || false,
|
|
16
|
+
prefix: "v",
|
|
17
|
+
version: process.env.HTTP_VERSION || "1",
|
|
18
|
+
},
|
|
19
|
+
globalPrefix: "/api",
|
|
20
|
+
port: process.env.HTTP_PORT
|
|
21
|
+
? Number.parseInt(process.env.HTTP_PORT, 10)
|
|
22
|
+
: options.port || 3000,
|
|
23
|
+
corsOrigins: process.env.CORS_ORIGINS ||
|
|
24
|
+
options.corsOrigins ||
|
|
25
|
+
"http://localhost:4200",
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=app.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.config.js","sourceRoot":"","sources":["../../src/config/app.config.ts"],"names":[],"mappings":";;AAgBA,0CAqBC;AArCD,2CAA4C;AAW5C;;;;GAIG;AACH,SAAgB,eAAe,CAAC,UAA4B,EAAE;IAC5D,OAAO,IAAA,mBAAU,EAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,IAAI,YAAY;QAC1D,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,aAAa;QAEzC,UAAU,EAAE;YACV,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,MAAM,IAAI,KAAK;YAC9D,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,GAAG;SACzC;QAED,YAAY,EAAE,MAAM;QACpB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS;YACzB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC;YAC5C,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI;QAExB,WAAW,EACT,OAAO,CAAC,GAAG,CAAC,YAAY;YACxB,OAAO,CAAC,WAAW;YACnB,uBAAuB;KAC1B,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export interface DatabaseConfigOptions {
|
|
2
|
+
/** Default database name */
|
|
3
|
+
defaultDbName?: string;
|
|
4
|
+
/** Default max pool size */
|
|
5
|
+
defaultPoolMax?: number;
|
|
6
|
+
/** Include SSL configuration (default: true) */
|
|
7
|
+
includeSsl?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Creates a database config factory registered under the `'database'` namespace.
|
|
11
|
+
*
|
|
12
|
+
* Reads from standard `DATABASE_*` env vars. Both `DATABASE_LOGGING` and
|
|
13
|
+
* `DB_LOGGING` are supported for backwards compatibility.
|
|
14
|
+
*
|
|
15
|
+
* @param options - Default values that can be overridden by environment variables
|
|
16
|
+
*/
|
|
17
|
+
export declare function createDatabaseConfig(options?: DatabaseConfigOptions): (() => {
|
|
18
|
+
type: "postgres";
|
|
19
|
+
host: string;
|
|
20
|
+
port: number;
|
|
21
|
+
username: string;
|
|
22
|
+
password: string;
|
|
23
|
+
database: string;
|
|
24
|
+
synchronize: boolean;
|
|
25
|
+
logging: boolean;
|
|
26
|
+
ssl: boolean | {
|
|
27
|
+
rejectUnauthorized: boolean;
|
|
28
|
+
};
|
|
29
|
+
poolMax: number;
|
|
30
|
+
poolIdleTimeout: number;
|
|
31
|
+
poolConnectionTimeout: number;
|
|
32
|
+
}) & import("@nestjs/config").ConfigFactoryKeyHost<{
|
|
33
|
+
type: "postgres";
|
|
34
|
+
host: string;
|
|
35
|
+
port: number;
|
|
36
|
+
username: string;
|
|
37
|
+
password: string;
|
|
38
|
+
database: string;
|
|
39
|
+
synchronize: boolean;
|
|
40
|
+
logging: boolean;
|
|
41
|
+
ssl: boolean | {
|
|
42
|
+
rejectUnauthorized: boolean;
|
|
43
|
+
};
|
|
44
|
+
poolMax: number;
|
|
45
|
+
poolIdleTimeout: number;
|
|
46
|
+
poolConnectionTimeout: number;
|
|
47
|
+
}>;
|
|
48
|
+
//# sourceMappingURL=database.config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.config.d.ts","sourceRoot":"","sources":["../../src/config/database.config.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,qBAAqB;IACpC,4BAA4B;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4BAA4B;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BvE"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createDatabaseConfig = createDatabaseConfig;
|
|
4
|
+
const config_1 = require("@nestjs/config");
|
|
5
|
+
/**
|
|
6
|
+
* Creates a database config factory registered under the `'database'` namespace.
|
|
7
|
+
*
|
|
8
|
+
* Reads from standard `DATABASE_*` env vars. Both `DATABASE_LOGGING` and
|
|
9
|
+
* `DB_LOGGING` are supported for backwards compatibility.
|
|
10
|
+
*
|
|
11
|
+
* @param options - Default values that can be overridden by environment variables
|
|
12
|
+
*/
|
|
13
|
+
function createDatabaseConfig(options = {}) {
|
|
14
|
+
return (0, config_1.registerAs)("database", () => ({
|
|
15
|
+
type: "postgres",
|
|
16
|
+
host: process.env.DATABASE_HOST || "localhost",
|
|
17
|
+
port: parseInt(process.env.DATABASE_PORT || "5432", 10),
|
|
18
|
+
username: process.env.DATABASE_USERNAME || "postgres",
|
|
19
|
+
password: process.env.DATABASE_PASSWORD || "postgres",
|
|
20
|
+
database: process.env.DATABASE_NAME || options.defaultDbName || "postgres",
|
|
21
|
+
synchronize: false,
|
|
22
|
+
logging: process.env.DATABASE_LOGGING === "true" ||
|
|
23
|
+
process.env.DB_LOGGING === "true",
|
|
24
|
+
ssl: options.includeSsl !== false
|
|
25
|
+
? process.env.DATABASE_SSL === "true"
|
|
26
|
+
? { rejectUnauthorized: false }
|
|
27
|
+
: false
|
|
28
|
+
: false,
|
|
29
|
+
poolMax: parseInt(process.env.DATABASE_POOL_MAX || String(options.defaultPoolMax || 20), 10),
|
|
30
|
+
poolIdleTimeout: parseInt(process.env.DATABASE_POOL_IDLE_TIMEOUT || "30000", 10),
|
|
31
|
+
poolConnectionTimeout: parseInt(process.env.DATABASE_POOL_CONNECTION_TIMEOUT || "5000", 10),
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=database.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.config.js","sourceRoot":"","sources":["../../src/config/database.config.ts"],"names":[],"mappings":";;AAmBA,oDA+BC;AAlDD,2CAA4C;AAW5C;;;;;;;GAOG;AACH,SAAgB,oBAAoB,CAAC,UAAiC,EAAE;IACtE,OAAO,IAAA,mBAAU,EAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;QACnC,IAAI,EAAE,UAAmB;QACzB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,WAAW;QAC9C,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,MAAM,EAAE,EAAE,CAAC;QACvD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,UAAU;QACrD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,UAAU;QACrD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa,IAAI,UAAU;QAC1E,WAAW,EAAE,KAAK;QAClB,OAAO,EACL,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,MAAM;YACvC,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,MAAM;QACnC,GAAG,EACD,OAAO,CAAC,UAAU,KAAK,KAAK;YAC1B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,MAAM;gBACnC,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE;gBAC/B,CAAC,CAAC,KAAK;YACT,CAAC,CAAC,KAAK;QACX,OAAO,EAAE,QAAQ,CACf,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,EACrE,EAAE,CACH;QACD,eAAe,EAAE,QAAQ,CACvB,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,OAAO,EACjD,EAAE,CACH;QACD,qBAAqB,EAAE,QAAQ,CAC7B,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,MAAM,EACtD,EAAE,CACH;KACF,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface DocConfigOptions {
|
|
2
|
+
/** Default Swagger document name */
|
|
3
|
+
name?: string;
|
|
4
|
+
/** Default Swagger document description */
|
|
5
|
+
description?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Creates a Swagger/OpenAPI doc config factory registered under the `'doc'` namespace.
|
|
9
|
+
*
|
|
10
|
+
* @param options - Default values that can be overridden by environment variables
|
|
11
|
+
*/
|
|
12
|
+
export declare function createDocConfig(options?: DocConfigOptions): (() => {
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
version: string;
|
|
16
|
+
prefix: string;
|
|
17
|
+
auth: {
|
|
18
|
+
username: string;
|
|
19
|
+
password: string;
|
|
20
|
+
};
|
|
21
|
+
}) & import("@nestjs/config").ConfigFactoryKeyHost<{
|
|
22
|
+
name: string;
|
|
23
|
+
description: string;
|
|
24
|
+
version: string;
|
|
25
|
+
prefix: string;
|
|
26
|
+
auth: {
|
|
27
|
+
username: string;
|
|
28
|
+
password: string;
|
|
29
|
+
};
|
|
30
|
+
}>;
|
|
31
|
+
//# sourceMappingURL=doc.config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc.config.d.ts","sourceRoot":"","sources":["../../src/config/doc.config.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB;;;;;;;;;;;;;;;;;;GAW7D"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createDocConfig = createDocConfig;
|
|
4
|
+
const config_1 = require("@nestjs/config");
|
|
5
|
+
/**
|
|
6
|
+
* Creates a Swagger/OpenAPI doc config factory registered under the `'doc'` namespace.
|
|
7
|
+
*
|
|
8
|
+
* @param options - Default values that can be overridden by environment variables
|
|
9
|
+
*/
|
|
10
|
+
function createDocConfig(options = {}) {
|
|
11
|
+
return (0, config_1.registerAs)("doc", () => ({
|
|
12
|
+
name: process.env.DOC_NAME || options.name || "NestJS API Specification",
|
|
13
|
+
description: options.description || "NestJS API documentation",
|
|
14
|
+
version: process.env.DOC_VERSION || "1.0",
|
|
15
|
+
prefix: "/docs",
|
|
16
|
+
auth: {
|
|
17
|
+
username: process.env.SWAGGER_USER || "admin",
|
|
18
|
+
password: process.env.SWAGGER_PASSWORD || "admin",
|
|
19
|
+
},
|
|
20
|
+
}));
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=doc.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc.config.js","sourceRoot":"","sources":["../../src/config/doc.config.ts"],"names":[],"mappings":";;AAcA,0CAWC;AAzBD,2CAA4C;AAS5C;;;;GAIG;AACH,SAAgB,eAAe,CAAC,UAA4B,EAAE;IAC5D,OAAO,IAAA,mBAAU,EAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,IAAI,0BAA0B;QACxE,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,0BAA0B;QAC9D,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,KAAK;QACzC,MAAM,EAAE,OAAO;QACf,IAAI,EAAE;YACJ,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO;YAC7C,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO;SAClD;KACF,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { createAppConfig } from "./app.config";
|
|
2
|
+
export type { AppConfigOptions } from "./app.config";
|
|
3
|
+
export { createDatabaseConfig } from "./database.config";
|
|
4
|
+
export type { DatabaseConfigOptions } from "./database.config";
|
|
5
|
+
export { createDocConfig } from "./doc.config";
|
|
6
|
+
export type { DocConfigOptions } from "./doc.config";
|
|
7
|
+
export { createJwtConfig } from "./jwt.config";
|
|
8
|
+
export type { JwtConfigOptions } from "./jwt.config";
|
|
9
|
+
export { createLoggingConfig, buildPinoParams } from "./logging.config";
|
|
10
|
+
export type { LoggingConfigOptions } from "./logging.config";
|
|
11
|
+
export { default as RedisConfig } from "./redis.config";
|
|
12
|
+
export { createSecurityConfig } from "./security.config";
|
|
13
|
+
export type { SecurityConfigOptions } from "./security.config";
|
|
14
|
+
export { default as StorageConfig } from "./storage.config";
|
|
15
|
+
export { createBaseValidationRules } from "./validation.config";
|
|
16
|
+
export type { BaseValidationOptions } from "./validation.config";
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxE,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createBaseValidationRules = exports.StorageConfig = exports.createSecurityConfig = exports.RedisConfig = exports.buildPinoParams = exports.createLoggingConfig = exports.createJwtConfig = exports.createDocConfig = exports.createDatabaseConfig = exports.createAppConfig = void 0;
|
|
7
|
+
var app_config_1 = require("./app.config");
|
|
8
|
+
Object.defineProperty(exports, "createAppConfig", { enumerable: true, get: function () { return app_config_1.createAppConfig; } });
|
|
9
|
+
var database_config_1 = require("./database.config");
|
|
10
|
+
Object.defineProperty(exports, "createDatabaseConfig", { enumerable: true, get: function () { return database_config_1.createDatabaseConfig; } });
|
|
11
|
+
var doc_config_1 = require("./doc.config");
|
|
12
|
+
Object.defineProperty(exports, "createDocConfig", { enumerable: true, get: function () { return doc_config_1.createDocConfig; } });
|
|
13
|
+
var jwt_config_1 = require("./jwt.config");
|
|
14
|
+
Object.defineProperty(exports, "createJwtConfig", { enumerable: true, get: function () { return jwt_config_1.createJwtConfig; } });
|
|
15
|
+
var logging_config_1 = require("./logging.config");
|
|
16
|
+
Object.defineProperty(exports, "createLoggingConfig", { enumerable: true, get: function () { return logging_config_1.createLoggingConfig; } });
|
|
17
|
+
Object.defineProperty(exports, "buildPinoParams", { enumerable: true, get: function () { return logging_config_1.buildPinoParams; } });
|
|
18
|
+
var redis_config_1 = require("./redis.config");
|
|
19
|
+
Object.defineProperty(exports, "RedisConfig", { enumerable: true, get: function () { return __importDefault(redis_config_1).default; } });
|
|
20
|
+
var security_config_1 = require("./security.config");
|
|
21
|
+
Object.defineProperty(exports, "createSecurityConfig", { enumerable: true, get: function () { return security_config_1.createSecurityConfig; } });
|
|
22
|
+
var storage_config_1 = require("./storage.config");
|
|
23
|
+
Object.defineProperty(exports, "StorageConfig", { enumerable: true, get: function () { return __importDefault(storage_config_1).default; } });
|
|
24
|
+
var validation_config_1 = require("./validation.config");
|
|
25
|
+
Object.defineProperty(exports, "createBaseValidationRules", { enumerable: true, get: function () { return validation_config_1.createBaseValidationRules; } });
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";;;;;;AAAA,2CAA+C;AAAtC,6GAAA,eAAe,OAAA;AAGxB,qDAAyD;AAAhD,uHAAA,oBAAoB,OAAA;AAG7B,2CAA+C;AAAtC,6GAAA,eAAe,OAAA;AAGxB,2CAA+C;AAAtC,6GAAA,eAAe,OAAA;AAGxB,mDAAwE;AAA/D,qHAAA,mBAAmB,OAAA;AAAE,iHAAA,eAAe,OAAA;AAG7C,+CAAwD;AAA/C,4HAAA,OAAO,OAAe;AAE/B,qDAAyD;AAAhD,uHAAA,oBAAoB,OAAA;AAG7B,mDAA4D;AAAnD,gIAAA,OAAO,OAAiB;AAEjC,yDAAgE;AAAvD,8HAAA,yBAAyB,OAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface JwtConfigOptions {
|
|
2
|
+
/** Validate that JWT_SECRET is present and at least 32 characters (default: false) */
|
|
3
|
+
strict?: boolean;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Creates a JWT config factory registered under the `'jwt'` namespace.
|
|
7
|
+
*
|
|
8
|
+
* @param options - Set `strict: true` to enforce secret length validation at startup
|
|
9
|
+
*/
|
|
10
|
+
export declare function createJwtConfig(options?: JwtConfigOptions): (() => {
|
|
11
|
+
secret: string | undefined;
|
|
12
|
+
expiresIn: string;
|
|
13
|
+
issuer: string;
|
|
14
|
+
}) & import("@nestjs/config").ConfigFactoryKeyHost<{
|
|
15
|
+
secret: string | undefined;
|
|
16
|
+
expiresIn: string;
|
|
17
|
+
issuer: string;
|
|
18
|
+
}>;
|
|
19
|
+
//# sourceMappingURL=jwt.config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.config.d.ts","sourceRoot":"","sources":["../../src/config/jwt.config.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,sFAAsF;IACtF,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB;;;;;;;;GAmB7D"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createJwtConfig = createJwtConfig;
|
|
4
|
+
const config_1 = require("@nestjs/config");
|
|
5
|
+
/**
|
|
6
|
+
* Creates a JWT config factory registered under the `'jwt'` namespace.
|
|
7
|
+
*
|
|
8
|
+
* @param options - Set `strict: true` to enforce secret length validation at startup
|
|
9
|
+
*/
|
|
10
|
+
function createJwtConfig(options = {}) {
|
|
11
|
+
return (0, config_1.registerAs)("jwt", () => {
|
|
12
|
+
const secret = process.env.JWT_SECRET;
|
|
13
|
+
if (options.strict) {
|
|
14
|
+
if (!secret) {
|
|
15
|
+
throw new Error("JWT_SECRET environment variable is required");
|
|
16
|
+
}
|
|
17
|
+
if (secret.length < 32) {
|
|
18
|
+
throw new Error("JWT_SECRET must be at least 32 characters long");
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
secret,
|
|
23
|
+
expiresIn: process.env.JWT_EXPIRES_IN || "7d",
|
|
24
|
+
issuer: process.env.JWT_ISSUER || "localhost-ui",
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=jwt.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.config.js","sourceRoot":"","sources":["../../src/config/jwt.config.ts"],"names":[],"mappings":";;AAYA,0CAmBC;AA/BD,2CAA4C;AAO5C;;;;GAIG;AACH,SAAgB,eAAe,CAAC,UAA4B,EAAE;IAC5D,OAAO,IAAA,mBAAU,EAAC,KAAK,EAAE,GAAG,EAAE;QAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QAEtC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YACjE,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM;YACN,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI;YAC7C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,cAAc;SACjD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Params } from "nestjs-pino";
|
|
2
|
+
export interface LoggingConfigOptions {
|
|
3
|
+
/** Default log level when LOG_LEVEL env var is not set */
|
|
4
|
+
defaultLevel?: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Creates a logging config factory registered under the `'logging'` namespace.
|
|
8
|
+
*
|
|
9
|
+
* @param options - Default values that can be overridden by environment variables
|
|
10
|
+
*/
|
|
11
|
+
export declare function createLoggingConfig(options?: LoggingConfigOptions): (() => {
|
|
12
|
+
level: string;
|
|
13
|
+
env: string;
|
|
14
|
+
}) & import("@nestjs/config").ConfigFactoryKeyHost<{
|
|
15
|
+
level: string;
|
|
16
|
+
env: string;
|
|
17
|
+
}>;
|
|
18
|
+
/**
|
|
19
|
+
* Builds nestjs-pino LoggerModule configuration from environment.
|
|
20
|
+
*
|
|
21
|
+
* Features:
|
|
22
|
+
* - Production: JSON output for log aggregation (Datadog, ELK, CloudWatch)
|
|
23
|
+
* - Development: Pretty-printed, colorized output via pino-pretty
|
|
24
|
+
* - Sensitive field redaction (Authorization headers, cookies, passwords)
|
|
25
|
+
* - Health check endpoint noise suppression
|
|
26
|
+
* - Request ID propagation via X-Correlation-Id header
|
|
27
|
+
*
|
|
28
|
+
* @param logLevel - Pino log level (trace, debug, info, warn, error, fatal)
|
|
29
|
+
* @param env - Application environment (development, production, etc.)
|
|
30
|
+
* @param serviceName - Service name tag for log context (e.g. 'ai-analysis-api')
|
|
31
|
+
*/
|
|
32
|
+
export declare function buildPinoParams(logLevel: string, env: string, serviceName?: string): Params;
|
|
33
|
+
//# sourceMappingURL=logging.config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.config.d.ts","sourceRoot":"","sources":["../../src/config/logging.config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,oBAAoB;IACnC,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,oBAAyB;;;;;;GAKrE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,WAAW,SAAe,GACzB,MAAM,CAoFR"}
|