@carlonicora/nestjs-neo4jsonapi 1.21.0 → 1.23.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/dist/bootstrap/app.module.factory.d.ts.map +1 -1
- package/dist/bootstrap/app.module.factory.js +3 -0
- package/dist/bootstrap/app.module.factory.js.map +1 -1
- package/dist/bootstrap/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap/bootstrap.js +85 -2
- package/dist/bootstrap/bootstrap.js.map +1 -1
- package/dist/bootstrap/bootstrap.options.d.ts +47 -0
- package/dist/bootstrap/bootstrap.options.d.ts.map +1 -1
- package/dist/bootstrap/index.d.ts +1 -1
- package/dist/bootstrap/index.d.ts.map +1 -1
- package/dist/common/filters/http-exception.filter.d.ts.map +1 -1
- package/dist/common/filters/http-exception.filter.js +83 -13
- package/dist/common/filters/http-exception.filter.js.map +1 -1
- package/dist/core/logging/interceptors/logging.interceptor.d.ts.map +1 -1
- package/dist/core/logging/interceptors/logging.interceptor.js +5 -0
- package/dist/core/logging/interceptors/logging.interceptor.js.map +1 -1
- package/dist/core/logging/interfaces/logging.interface.d.ts +1 -0
- package/dist/core/logging/interfaces/logging.interface.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/openapi/decorators/api-jsonapi-error.decorator.d.ts +52 -0
- package/dist/openapi/decorators/api-jsonapi-error.decorator.d.ts.map +1 -0
- package/dist/openapi/decorators/api-jsonapi-error.decorator.js +105 -0
- package/dist/openapi/decorators/api-jsonapi-error.decorator.js.map +1 -0
- package/dist/openapi/decorators/api-jsonapi-query.decorator.d.ts +43 -0
- package/dist/openapi/decorators/api-jsonapi-query.decorator.d.ts.map +1 -0
- package/dist/openapi/decorators/api-jsonapi-query.decorator.js +117 -0
- package/dist/openapi/decorators/api-jsonapi-query.decorator.js.map +1 -0
- package/dist/openapi/decorators/api-jsonapi-response.decorator.d.ts +38 -0
- package/dist/openapi/decorators/api-jsonapi-response.decorator.d.ts.map +1 -0
- package/dist/openapi/decorators/api-jsonapi-response.decorator.js +84 -0
- package/dist/openapi/decorators/api-jsonapi-response.decorator.js.map +1 -0
- package/dist/openapi/decorators/index.d.ts +4 -0
- package/dist/openapi/decorators/index.d.ts.map +1 -0
- package/dist/openapi/decorators/index.js +20 -0
- package/dist/openapi/decorators/index.js.map +1 -0
- package/dist/openapi/factories/entity-schema.factory.d.ts +21 -0
- package/dist/openapi/factories/entity-schema.factory.d.ts.map +1 -0
- package/dist/openapi/factories/entity-schema.factory.js +177 -0
- package/dist/openapi/factories/entity-schema.factory.js.map +1 -0
- package/dist/openapi/factories/index.d.ts +3 -0
- package/dist/openapi/factories/index.d.ts.map +1 -0
- package/dist/openapi/factories/index.js +19 -0
- package/dist/openapi/factories/index.js.map +1 -0
- package/dist/openapi/factories/request-schema.factory.d.ts +20 -0
- package/dist/openapi/factories/request-schema.factory.d.ts.map +1 -0
- package/dist/openapi/factories/request-schema.factory.js +160 -0
- package/dist/openapi/factories/request-schema.factory.js.map +1 -0
- package/dist/openapi/index.d.ts +7 -0
- package/dist/openapi/index.d.ts.map +1 -0
- package/dist/openapi/index.js +31 -0
- package/dist/openapi/index.js.map +1 -0
- package/dist/openapi/module/index.d.ts +3 -0
- package/dist/openapi/module/index.d.ts.map +1 -0
- package/dist/openapi/module/index.js +8 -0
- package/dist/openapi/module/index.js.map +1 -0
- package/dist/openapi/module/openapi.module.d.ts +20 -0
- package/dist/openapi/module/openapi.module.d.ts.map +1 -0
- package/dist/openapi/module/openapi.module.js +39 -0
- package/dist/openapi/module/openapi.module.js.map +1 -0
- package/dist/openapi/module/openapi.service.d.ts +65 -0
- package/dist/openapi/module/openapi.service.d.ts.map +1 -0
- package/dist/openapi/module/openapi.service.js +127 -0
- package/dist/openapi/module/openapi.service.js.map +1 -0
- package/dist/openapi/schemas/index.d.ts +3 -0
- package/dist/openapi/schemas/index.d.ts.map +1 -0
- package/dist/openapi/schemas/index.js +19 -0
- package/dist/openapi/schemas/index.js.map +1 -0
- package/dist/openapi/schemas/jsonapi-base.schemas.d.ts +54 -0
- package/dist/openapi/schemas/jsonapi-base.schemas.d.ts.map +1 -0
- package/dist/openapi/schemas/jsonapi-base.schemas.js +170 -0
- package/dist/openapi/schemas/jsonapi-base.schemas.js.map +1 -0
- package/dist/openapi/schemas/jsonapi-error.schemas.d.ts +19 -0
- package/dist/openapi/schemas/jsonapi-error.schemas.d.ts.map +1 -0
- package/dist/openapi/schemas/jsonapi-error.schemas.js +200 -0
- package/dist/openapi/schemas/jsonapi-error.schemas.js.map +1 -0
- package/dist/openapi/utils/cypher-to-openapi.util.d.ts +32 -0
- package/dist/openapi/utils/cypher-to-openapi.util.d.ts.map +1 -0
- package/dist/openapi/utils/cypher-to-openapi.util.js +55 -0
- package/dist/openapi/utils/cypher-to-openapi.util.js.map +1 -0
- package/dist/openapi/utils/example-generator.util.d.ts +11 -0
- package/dist/openapi/utils/example-generator.util.d.ts.map +1 -0
- package/dist/openapi/utils/example-generator.util.js +95 -0
- package/dist/openapi/utils/example-generator.util.js.map +1 -0
- package/dist/openapi/utils/index.d.ts +3 -0
- package/dist/openapi/utils/index.d.ts.map +1 -0
- package/dist/openapi/utils/index.js +19 -0
- package/dist/openapi/utils/index.js.map +1 -0
- package/package.json +4 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.module.factory.d.ts","sourceRoot":"","sources":["../../src/bootstrap/app.module.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,IAAI,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"app.module.factory.d.ts","sourceRoot":"","sources":["../../src/bootstrap/app.module.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAmB7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAsHpE"}
|
|
@@ -56,6 +56,7 @@ const discord_module_1 = require("../foundations/discord/discord.module");
|
|
|
56
56
|
const app_mode_module_1 = require("../core/appmode/app.mode.module");
|
|
57
57
|
const core_module_1 = require("../core/core.module");
|
|
58
58
|
const foundations_modules_1 = require("../foundations/foundations.modules");
|
|
59
|
+
const openapi_module_1 = require("../openapi/module/openapi.module");
|
|
59
60
|
/**
|
|
60
61
|
* Creates a dynamic AppModule based on bootstrap options.
|
|
61
62
|
*
|
|
@@ -145,6 +146,8 @@ function createAppModule(options) {
|
|
|
145
146
|
}),
|
|
146
147
|
// Library's AI agents (prompts configured via baseConfig.prompts)
|
|
147
148
|
agents_modules_1.AgentsModule,
|
|
149
|
+
// OpenAPI module for Swagger/Redoc documentation
|
|
150
|
+
openapi_module_1.OpenApiModule,
|
|
148
151
|
// User's app-specific modules (MUST be before NecordModule so Necord can discover handlers)
|
|
149
152
|
...options.appModules,
|
|
150
153
|
// Discord bot (only in worker mode when token is configured)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.module.factory.js","sourceRoot":"","sources":["../../src/bootstrap/app.module.factory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"app.module.factory.js","sourceRoot":"","sources":["../../src/bootstrap/app.module.factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/bootstrap/bootstrap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/bootstrap/bootstrap.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAIvD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBxE"}
|
|
@@ -5,8 +5,10 @@ const common_1 = require("@nestjs/common");
|
|
|
5
5
|
const config_1 = require("@nestjs/config");
|
|
6
6
|
const core_1 = require("@nestjs/core");
|
|
7
7
|
const platform_fastify_1 = require("@nestjs/platform-fastify");
|
|
8
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
8
9
|
const stream_1 = require("stream");
|
|
9
10
|
const http_exception_filter_1 = require("../common/filters/http-exception.filter");
|
|
11
|
+
const openapi_service_1 = require("../openapi/module/openapi.service");
|
|
10
12
|
const app_mode_constant_1 = require("../core/appmode/constants/app.mode.constant");
|
|
11
13
|
const cache_interceptor_1 = require("../core/cache/interceptors/cache.interceptor");
|
|
12
14
|
const cache_service_1 = require("../core/cache/services/cache.service");
|
|
@@ -59,7 +61,7 @@ async function bootstrap(options) {
|
|
|
59
61
|
await bootstrapWorker(AppModule, modeConfig);
|
|
60
62
|
}
|
|
61
63
|
else {
|
|
62
|
-
await bootstrapAPI(AppModule, modeConfig);
|
|
64
|
+
await bootstrapAPI(AppModule, modeConfig, options);
|
|
63
65
|
}
|
|
64
66
|
}
|
|
65
67
|
catch (error) {
|
|
@@ -70,7 +72,7 @@ async function bootstrap(options) {
|
|
|
70
72
|
/**
|
|
71
73
|
* Bootstrap the application in API mode with Fastify
|
|
72
74
|
*/
|
|
73
|
-
async function bootstrapAPI(AppModule, modeConfig) {
|
|
75
|
+
async function bootstrapAPI(AppModule, modeConfig, options) {
|
|
74
76
|
const app = await core_1.NestFactory.create(AppModule.forRoot(modeConfig), new platform_fastify_1.FastifyAdapter(defaults_1.defaultFastifyOptions), { logger: ["error", "warn"] });
|
|
75
77
|
const configService = app.get((config_1.ConfigService));
|
|
76
78
|
const loggingService = app.get(logging_service_1.AppLoggingService);
|
|
@@ -105,6 +107,8 @@ async function bootstrapAPI(AppModule, modeConfig) {
|
|
|
105
107
|
const corsService = app.get(cors_service_1.CorsService);
|
|
106
108
|
corsService.validateConfiguration();
|
|
107
109
|
app.enableCors(corsService.getCorsConfiguration());
|
|
110
|
+
// Setup OpenAPI documentation
|
|
111
|
+
await setupOpenApiDocs(app, options, loggingService);
|
|
108
112
|
// Start server
|
|
109
113
|
const port = configService.get("api").port;
|
|
110
114
|
await app.listen(port, "0.0.0.0");
|
|
@@ -157,6 +161,85 @@ function setupFastifyLoggingHook(app, loggingService) {
|
|
|
157
161
|
return payload;
|
|
158
162
|
});
|
|
159
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* Setup OpenAPI documentation (Swagger UI and/or Redoc)
|
|
166
|
+
*/
|
|
167
|
+
async function setupOpenApiDocs(app, options, loggingService) {
|
|
168
|
+
const openApiConfig = options.openApi;
|
|
169
|
+
if (!openApiConfig?.enableSwagger && !openApiConfig?.enableRedoc) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
const { title = "API Documentation", description = "Auto-generated API documentation", version = "1.0.0", bearerAuth = true, contactEmail, license, licenseUrl, swaggerPath = "/api-docs", redocPath = "/docs", } = openApiConfig;
|
|
173
|
+
// Build OpenAPI document
|
|
174
|
+
const documentBuilder = new swagger_1.DocumentBuilder().setTitle(title).setDescription(description).setVersion(version);
|
|
175
|
+
if (bearerAuth) {
|
|
176
|
+
documentBuilder.addBearerAuth({
|
|
177
|
+
type: "http",
|
|
178
|
+
scheme: "bearer",
|
|
179
|
+
bearerFormat: "JWT",
|
|
180
|
+
description: "Enter your JWT token",
|
|
181
|
+
}, "JWT-auth");
|
|
182
|
+
}
|
|
183
|
+
if (contactEmail) {
|
|
184
|
+
documentBuilder.setContact("API Support", "", contactEmail);
|
|
185
|
+
}
|
|
186
|
+
if (license) {
|
|
187
|
+
documentBuilder.setLicense(license, licenseUrl || "");
|
|
188
|
+
}
|
|
189
|
+
const config = documentBuilder.build();
|
|
190
|
+
// Get schemas from OpenApiService
|
|
191
|
+
let extraSchemas = {};
|
|
192
|
+
try {
|
|
193
|
+
const openApiService = app.get(openapi_service_1.OpenApiService);
|
|
194
|
+
// Register entity descriptors if provided
|
|
195
|
+
if (openApiConfig.entityDescriptors && openApiConfig.entityDescriptors.length > 0) {
|
|
196
|
+
openApiService.registerEntities(openApiConfig.entityDescriptors);
|
|
197
|
+
loggingService.log(`Registered ${openApiConfig.entityDescriptors.length} entities with OpenAPI`);
|
|
198
|
+
}
|
|
199
|
+
extraSchemas = openApiService.getAllSchemas();
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
loggingService.warn("OpenApiService not available, using base schemas only");
|
|
203
|
+
}
|
|
204
|
+
// Create document with extra schemas
|
|
205
|
+
const document = swagger_1.SwaggerModule.createDocument(app, config, {
|
|
206
|
+
extraModels: [],
|
|
207
|
+
});
|
|
208
|
+
// Merge extra schemas into components
|
|
209
|
+
document.components = document.components || {};
|
|
210
|
+
document.components.schemas = {
|
|
211
|
+
...document.components.schemas,
|
|
212
|
+
...extraSchemas,
|
|
213
|
+
};
|
|
214
|
+
// Setup Swagger UI
|
|
215
|
+
if (openApiConfig.enableSwagger) {
|
|
216
|
+
swagger_1.SwaggerModule.setup(swaggerPath, app, document, {
|
|
217
|
+
swaggerOptions: {
|
|
218
|
+
persistAuthorization: true,
|
|
219
|
+
docExpansion: "none",
|
|
220
|
+
filter: true,
|
|
221
|
+
showRequestDuration: true,
|
|
222
|
+
},
|
|
223
|
+
});
|
|
224
|
+
loggingService.log(`Swagger UI available at ${swaggerPath}`);
|
|
225
|
+
}
|
|
226
|
+
// Setup Redoc
|
|
227
|
+
if (openApiConfig.enableRedoc) {
|
|
228
|
+
try {
|
|
229
|
+
const { RedocModule } = await import("nestjs-redoc");
|
|
230
|
+
await RedocModule.setup(redocPath, app, document, {
|
|
231
|
+
title: title,
|
|
232
|
+
sortPropsAlphabetically: true,
|
|
233
|
+
hideDownloadButton: false,
|
|
234
|
+
hideHostname: false,
|
|
235
|
+
});
|
|
236
|
+
loggingService.log(`Redoc available at ${redocPath}`);
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
loggingService.warn("Failed to setup Redoc. Make sure nestjs-redoc is installed.");
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
160
243
|
/**
|
|
161
244
|
* Setup graceful shutdown handlers for SIGTERM and SIGINT
|
|
162
245
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/bootstrap/bootstrap.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/bootstrap/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DynamicModule, Type } from "@nestjs/common";
|
|
2
|
+
import { EntityDescriptor, RelationshipDef } from "../common/interfaces/entity.schema.interface";
|
|
2
3
|
import { ContentExtensionConfig } from "../foundations/content/interfaces/content.extension.interface";
|
|
3
4
|
/**
|
|
4
5
|
* i18n configuration options
|
|
@@ -52,5 +53,51 @@ export interface BootstrapOptions {
|
|
|
52
53
|
* ```
|
|
53
54
|
*/
|
|
54
55
|
contentExtension?: ContentExtensionConfig;
|
|
56
|
+
/**
|
|
57
|
+
* OpenAPI documentation configuration.
|
|
58
|
+
* When provided, sets up Swagger UI and/or Redoc documentation endpoints.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* openApi: {
|
|
63
|
+
* enableSwagger: true,
|
|
64
|
+
* swaggerPath: '/api-docs',
|
|
65
|
+
* enableRedoc: true,
|
|
66
|
+
* redocPath: '/docs',
|
|
67
|
+
* title: 'My API',
|
|
68
|
+
* version: '1.0.0',
|
|
69
|
+
* }
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
openApi?: OpenApiOptions;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* OpenAPI documentation options
|
|
76
|
+
*/
|
|
77
|
+
export interface OpenApiOptions {
|
|
78
|
+
/** Enable Swagger UI endpoint (default: false) */
|
|
79
|
+
enableSwagger?: boolean;
|
|
80
|
+
/** Path for Swagger UI (default: '/api-docs') */
|
|
81
|
+
swaggerPath?: string;
|
|
82
|
+
/** Enable Redoc endpoint (default: false) */
|
|
83
|
+
enableRedoc?: boolean;
|
|
84
|
+
/** Path for Redoc (default: '/docs') */
|
|
85
|
+
redocPath?: string;
|
|
86
|
+
/** API documentation title */
|
|
87
|
+
title?: string;
|
|
88
|
+
/** API documentation description */
|
|
89
|
+
description?: string;
|
|
90
|
+
/** API version */
|
|
91
|
+
version?: string;
|
|
92
|
+
/** Enable JWT Bearer authentication in docs (default: true) */
|
|
93
|
+
bearerAuth?: boolean;
|
|
94
|
+
/** Contact email for API */
|
|
95
|
+
contactEmail?: string;
|
|
96
|
+
/** License name */
|
|
97
|
+
license?: string;
|
|
98
|
+
/** License URL */
|
|
99
|
+
licenseUrl?: string;
|
|
100
|
+
/** Entity descriptors to register for OpenAPI schema generation */
|
|
101
|
+
entityDescriptors?: EntityDescriptor<any, Record<string, RelationshipDef>>[];
|
|
55
102
|
}
|
|
56
103
|
//# sourceMappingURL=bootstrap.options.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.options.d.ts","sourceRoot":"","sources":["../../src/bootstrap/bootstrap.options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+DAA+D,CAAC;AAEvG;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,UAAU,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC;IAE1C;;;OAGG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEnC;;;;;;;;;;;;;OAaG;IACH,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"bootstrap.options.d.ts","sourceRoot":"","sources":["../../src/bootstrap/bootstrap.options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AACjG,OAAO,EAAE,sBAAsB,EAAE,MAAM,+DAA+D,CAAC;AAEvG;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,UAAU,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC;IAE1C;;;OAGG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEnC;;;;;;;;;;;;;OAaG;IACH,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAE1C;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4BAA4B;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,iBAAiB,CAAC,EAAE,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;CAC9E"}
|
|
@@ -42,7 +42,7 @@ import { AppMode, AppModeConfig } from "../core/appmode/constants/app.mode.const
|
|
|
42
42
|
export { AppMode, AppModeConfig };
|
|
43
43
|
export { createAppModule } from "./app.module.factory";
|
|
44
44
|
export { bootstrap } from "./bootstrap";
|
|
45
|
-
export { BootstrapOptions, I18nOptions } from "./bootstrap.options";
|
|
45
|
+
export { BootstrapOptions, I18nOptions, OpenApiOptions } from "./bootstrap.options";
|
|
46
46
|
export { defaultFastifyOptions, defaultMultipartOptions, getAppMode, getAppModeConfig } from "./defaults";
|
|
47
47
|
export { RAW_BODY_ROUTES, setupRawBodyCapture } from "./raw-body.config";
|
|
48
48
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bootstrap/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAErF,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;AAGlC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bootstrap/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAErF,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;AAGlC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGpF,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG1G,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-exception.filter.d.ts","sourceRoot":"","sources":["../../../src/common/filters/http-exception.filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAS,eAAe,EAAuC,MAAM,gBAAgB,CAAC;AAE5G,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"http-exception.filter.d.ts","sourceRoot":"","sources":["../../../src/common/filters/http-exception.filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAS,eAAe,EAAuC,MAAM,gBAAgB,CAAC;AAE5G,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AA0ChF,qBACa,mBAAoB,YAAW,eAAe;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAP,MAAM,CAAC,EAAE,iBAAiB;IAEnE;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAQ/B,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa;CAuG9C"}
|
|
@@ -11,12 +11,49 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
|
-
var HttpExceptionFilter_1;
|
|
15
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
15
|
exports.HttpExceptionFilter = void 0;
|
|
17
16
|
const common_1 = require("@nestjs/common");
|
|
18
17
|
const logging_service_1 = require("../../core/logging/services/logging.service");
|
|
19
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Determine if we're in production mode.
|
|
20
|
+
* Stack traces should be hidden from clients and sanitized in logs in production.
|
|
21
|
+
*/
|
|
22
|
+
function isProduction() {
|
|
23
|
+
return process.env.NODE_ENV === "production";
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Sanitize error message for client response in production.
|
|
27
|
+
* Internal server errors should not expose implementation details.
|
|
28
|
+
*/
|
|
29
|
+
function sanitizeClientMessage(status, message) {
|
|
30
|
+
if (status >= 500 && isProduction()) {
|
|
31
|
+
return "An internal error occurred. Please try again later.";
|
|
32
|
+
}
|
|
33
|
+
return message;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Sanitize stack trace for logging in production.
|
|
37
|
+
* Remove absolute paths and sensitive information.
|
|
38
|
+
*/
|
|
39
|
+
function sanitizeStackTrace(stack) {
|
|
40
|
+
if (!stack)
|
|
41
|
+
return undefined;
|
|
42
|
+
if (!isProduction())
|
|
43
|
+
return stack;
|
|
44
|
+
// In production, keep the stack but remove absolute paths
|
|
45
|
+
return stack
|
|
46
|
+
.split("\n")
|
|
47
|
+
.map((line) => {
|
|
48
|
+
// Remove absolute paths, keep relative structure
|
|
49
|
+
return line
|
|
50
|
+
.replace(/\s+at\s+.+\(\/.+\/node_modules\//g, " at [node_modules]/")
|
|
51
|
+
.replace(/\s+at\s+.+\(\/.+\/packages\//g, " at [packages]/")
|
|
52
|
+
.replace(/\s+at\s+.+\(\/.+\/src\//g, " at [src]/");
|
|
53
|
+
})
|
|
54
|
+
.join("\n");
|
|
55
|
+
}
|
|
56
|
+
let HttpExceptionFilter = class HttpExceptionFilter {
|
|
20
57
|
constructor(logger) {
|
|
21
58
|
this.logger = logger;
|
|
22
59
|
}
|
|
@@ -44,27 +81,58 @@ let HttpExceptionFilter = HttpExceptionFilter_1 = class HttpExceptionFilter {
|
|
|
44
81
|
const request = ctx.getRequest();
|
|
45
82
|
const status = exception instanceof common_1.HttpException ? exception.getStatus() : common_1.HttpStatus.INTERNAL_SERVER_ERROR;
|
|
46
83
|
const message = exception instanceof common_1.HttpException ? exception.getResponse() : "Internal server error";
|
|
84
|
+
const timestamp = new Date().toISOString();
|
|
85
|
+
// Get request context from the logging service (includes userId, companyId, requestId)
|
|
86
|
+
const requestContext = this.logger?.getRequestContext();
|
|
87
|
+
// Build structured error log entry
|
|
88
|
+
const structuredLogEntry = {
|
|
89
|
+
level: status >= 500 ? "error" : "warn",
|
|
90
|
+
timestamp,
|
|
91
|
+
context: "HttpExceptionFilter",
|
|
92
|
+
error: {
|
|
93
|
+
status,
|
|
94
|
+
name: exception instanceof Error ? exception.name : "UnknownError",
|
|
95
|
+
message: exception instanceof Error ? exception.message : String(message),
|
|
96
|
+
stack: sanitizeStackTrace(exception instanceof Error ? exception.stack : undefined),
|
|
97
|
+
},
|
|
98
|
+
request: {
|
|
99
|
+
method: request.method,
|
|
100
|
+
url: request.url,
|
|
101
|
+
requestId: requestContext?.requestId || request.id,
|
|
102
|
+
userId: requestContext?.userId,
|
|
103
|
+
companyId: requestContext?.companyId,
|
|
104
|
+
ip: request.ip,
|
|
105
|
+
userAgent: request.headers["user-agent"],
|
|
106
|
+
},
|
|
107
|
+
};
|
|
47
108
|
// Enhanced logging for validation errors
|
|
48
109
|
if (exception instanceof common_1.HttpException && this.logger) {
|
|
49
110
|
const validationErrors = this.extractValidationErrors(exception);
|
|
50
111
|
if (validationErrors) {
|
|
51
|
-
// Include validation errors
|
|
112
|
+
// Include validation errors in structured log
|
|
52
113
|
const validationErrorsFormatted = validationErrors.map((e) => ` - ${e}`).join("\n");
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
114
|
+
this.logger.warn(`Validation Error: ${status} - ${request.method} ${request.url}\n\nValidation Errors:\n${validationErrorsFormatted}`, "HttpExceptionFilter", {
|
|
115
|
+
...structuredLogEntry,
|
|
116
|
+
validationErrors,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
else if (status >= 500) {
|
|
120
|
+
// Log 5xx errors as error level with full context
|
|
121
|
+
this.logger.error(`Server Error: ${status} - ${request.method} ${request.url}`, exception instanceof Error ? exception : undefined, "HttpExceptionFilter", structuredLogEntry);
|
|
56
122
|
}
|
|
57
123
|
else {
|
|
58
|
-
//
|
|
59
|
-
this.logger.
|
|
124
|
+
// Log 4xx errors as warn level
|
|
125
|
+
this.logger.warn(`Client Error: ${status} - ${request.method} ${request.url}`, "HttpExceptionFilter", structuredLogEntry);
|
|
60
126
|
}
|
|
61
127
|
}
|
|
62
128
|
else if (this.logger) {
|
|
63
|
-
// Non-HttpException errors
|
|
64
|
-
this.logger.error(`Unhandled Exception: ${status} - ${request.method} ${request.url}`, exception instanceof Error ? exception
|
|
129
|
+
// Non-HttpException errors (always 500)
|
|
130
|
+
this.logger.error(`Unhandled Exception: ${status} - ${request.method} ${request.url}`, exception instanceof Error ? exception : undefined, "HttpExceptionFilter", structuredLogEntry);
|
|
65
131
|
}
|
|
66
132
|
// Extract the error detail message for both the JSON:API errors array and the top-level message field
|
|
67
|
-
const
|
|
133
|
+
const rawErrorDetail = typeof message === "string" ? message : message?.message || "An error occurred";
|
|
134
|
+
// Sanitize the client-facing message (hide internal details in production for 5xx)
|
|
135
|
+
const errorDetail = sanitizeClientMessage(status, rawErrorDetail);
|
|
68
136
|
const errorResponse = {
|
|
69
137
|
message: errorDetail, // Top-level message for easy frontend consumption
|
|
70
138
|
errors: [
|
|
@@ -76,9 +144,11 @@ let HttpExceptionFilter = HttpExceptionFilter_1 = class HttpExceptionFilter {
|
|
|
76
144
|
pointer: request.url,
|
|
77
145
|
},
|
|
78
146
|
meta: {
|
|
79
|
-
timestamp
|
|
147
|
+
timestamp,
|
|
80
148
|
path: request.url,
|
|
81
149
|
method: request.method,
|
|
150
|
+
// Only include requestId in response, never userId/companyId
|
|
151
|
+
requestId: requestContext?.requestId || request.id,
|
|
82
152
|
},
|
|
83
153
|
},
|
|
84
154
|
],
|
|
@@ -87,7 +157,7 @@ let HttpExceptionFilter = HttpExceptionFilter_1 = class HttpExceptionFilter {
|
|
|
87
157
|
}
|
|
88
158
|
};
|
|
89
159
|
exports.HttpExceptionFilter = HttpExceptionFilter;
|
|
90
|
-
exports.HttpExceptionFilter = HttpExceptionFilter =
|
|
160
|
+
exports.HttpExceptionFilter = HttpExceptionFilter = __decorate([
|
|
91
161
|
(0, common_1.Catch)(),
|
|
92
162
|
__param(0, (0, common_1.Optional)()),
|
|
93
163
|
__metadata("design:paramtypes", [logging_service_1.AppLoggingService])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-exception.filter.js","sourceRoot":"","sources":["../../../src/common/filters/http-exception.filter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http-exception.filter.js","sourceRoot":"","sources":["../../../src/common/filters/http-exception.filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging.interceptor.d.ts","sourceRoot":"","sources":["../../../../src/core/logging/interceptors/logging.interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAc,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE5F,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAc,UAAU,EAAmB,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"logging.interceptor.d.ts","sourceRoot":"","sources":["../../../../src/core/logging/interceptors/logging.interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAc,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE5F,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAc,UAAU,EAAmB,MAAM,MAAM,CAAC;AAI/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAOhE,qBACa,kBAAmB,YAAW,eAAe;IAItD,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJ7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;gBAGzB,cAAc,EAAE,iBAAiB,EACjC,UAAU,EAAE,UAAU;IAGzC,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC;CAwE9E"}
|
|
@@ -32,6 +32,9 @@ let LoggingInterceptor = class LoggingInterceptor {
|
|
|
32
32
|
const requestMethod = request.method;
|
|
33
33
|
const userIp = request.ip;
|
|
34
34
|
const userAgent = request.headers["user-agent"];
|
|
35
|
+
// Extract user context if authenticated (user may be attached by JWT guard)
|
|
36
|
+
const userId = request.user?.userId;
|
|
37
|
+
const companyId = request.user?.companyId;
|
|
35
38
|
// Set up request context for logging with trace correlation
|
|
36
39
|
const logContext = {
|
|
37
40
|
requestId,
|
|
@@ -39,6 +42,8 @@ let LoggingInterceptor = class LoggingInterceptor {
|
|
|
39
42
|
userAgent,
|
|
40
43
|
method: requestMethod,
|
|
41
44
|
url: requestPath,
|
|
45
|
+
...(userId && { userId }),
|
|
46
|
+
...(companyId && { companyId }),
|
|
42
47
|
};
|
|
43
48
|
// Set context in ClsService for the entire request lifecycle
|
|
44
49
|
this.loggingService.setRequestContext(logContext);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging.interceptor.js","sourceRoot":"","sources":["../../../../src/core/logging/interceptors/logging.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4F;AAE5F,2CAAwC;AACxC,+BAA+D;AAC/D,6DAAyD;
|
|
1
|
+
{"version":3,"file":"logging.interceptor.js","sourceRoot":"","sources":["../../../../src/core/logging/interceptors/logging.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4F;AAE5F,2CAAwC;AACxC,+BAA+D;AAC/D,6DAAyD;AAGzD,iEAAgE;AAQzD,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAG7B,YACmB,cAAiC,EACjC,UAAsB;QADtB,mBAAc,GAAd,cAAc,CAAmB;QACjC,eAAU,GAAV,UAAU,CAAY;QAJxB,cAAS,GAAG,wBAAU,CAAC,GAAG,CAAC;IAKzC,CAAC;IAEJ,SAAS,CAAC,OAAyB,EAAE,IAAsB;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAmB,CAAC;QAErE,sEAAsE;QACrE,OAAe,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAC;QAErD,0BAA0B;QAC1B,MAAM,SAAS,GAAI,OAAO,CAAC,OAAO,CAAC,cAAc,CAAY,IAAI,OAAO,CAAC,EAAE,CAAC;QAC5E,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;QAChC,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;QACrC,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAEhD,4EAA4E;QAC5E,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;QACpC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;QAE1C,4DAA4D;QAC5D,MAAM,UAAU,GAAe;YAC7B,SAAS;YACT,EAAE,EAAE,MAAM;YACV,SAAS;YACT,MAAM,EAAE,aAAa;YACrB,GAAG,EAAE,WAAW;YAChB,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;YACzB,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;SAChC,CAAC;QAEF,6DAA6D;QAC7D,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAElD,8CAA8C;QAC9C,IAAI,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACrD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,MAAM,GAAG,WAAW,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACvB,IAAA,UAAG,EAAC,GAAG,EAAE;YACP,8FAA8F;YAC9F,6CAA6C;QAC/C,CAAC,CAAC,EACF,IAAA,iBAAU,EAAC,CAAC,KAAK,EAAE,EAAE;YACnB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC;YAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE5C,gEAAgE;YAChE,MAAM,gBAAgB,GACpB,KAAK,CAAC,QAAQ,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YAEnG,4GAA4G;YAC5G,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,0EAA0E;gBAC1E,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;gBAE1F,yBAAyB;gBACzB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,KAAK,EAAE,YAAY,EAAE;oBAC1E,YAAY;oBACZ,UAAU;oBACV,SAAS,EAAE,KAAK,CAAC,IAAI;oBACrB,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI;iBAClC,CAAC,CAAC;YACL,CAAC;YAED,4BAA4B;YAC5B,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC;YAE1C,OAAO,IAAA,iBAAU,EAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;CACF,CAAA;AAhFY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAKwB,mCAAiB;QACrB,uBAAU;GAL9B,kBAAkB,CAgF9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging.interface.d.ts","sourceRoot":"","sources":["../../../../src/core/logging/interfaces/logging.interface.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logging.interface.d.ts","sourceRoot":"","sources":["../../../../src/core/logging/interfaces/logging.interface.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,UAAU,CAAC;AAGzB,cAAc,UAAU,CAAC;AAGzB,cAAc,QAAQ,CAAC;AAGvB,cAAc,eAAe,CAAC;AAG9B,cAAc,UAAU,CAAC;AAGzB,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,UAAU,CAAC;AAGzB,cAAc,UAAU,CAAC;AAGzB,cAAc,QAAQ,CAAC;AAGvB,cAAc,eAAe,CAAC;AAG9B,cAAc,UAAU,CAAC;AAGzB,cAAc,aAAa,CAAC;AAG5B,cAAc,WAAW,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -31,4 +31,6 @@ __exportStar(require("./foundations"), exports);
|
|
|
31
31
|
__exportStar(require("./agents"), exports);
|
|
32
32
|
// Bootstrap utilities
|
|
33
33
|
__exportStar(require("./bootstrap"), exports);
|
|
34
|
+
// OpenAPI module exports
|
|
35
|
+
__exportStar(require("./openapi"), exports);
|
|
34
36
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,iBAAiB;AACjB,2CAAyB;AAEzB,iBAAiB;AACjB,2CAAyB;AAEzB,sBAAsB;AACtB,yCAAuB;AAEvB,4BAA4B;AAC5B,gDAA8B;AAE9B,uBAAuB;AACvB,2CAAyB;AAEzB,sBAAsB;AACtB,8CAA4B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,iBAAiB;AACjB,2CAAyB;AAEzB,iBAAiB;AACjB,2CAAyB;AAEzB,sBAAsB;AACtB,yCAAuB;AAEvB,4BAA4B;AAC5B,gDAA8B;AAE9B,uBAAuB;AACvB,2CAAyB;AAEzB,sBAAsB;AACtB,8CAA4B;AAE5B,yBAAyB;AACzB,4CAA0B"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options for @ApiJsonApiErrors decorator.
|
|
3
|
+
*/
|
|
4
|
+
export interface ApiJsonApiErrorsOptions {
|
|
5
|
+
badRequest?: boolean;
|
|
6
|
+
unauthorized?: boolean;
|
|
7
|
+
forbidden?: boolean;
|
|
8
|
+
notFound?: boolean;
|
|
9
|
+
unprocessable?: boolean;
|
|
10
|
+
serverError?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Decorator that adds common JSON:API error responses to an endpoint.
|
|
14
|
+
* By default adds 401 (Unauthorized) and 500 (Server Error).
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* @ApiJsonApiErrors()
|
|
18
|
+
* @Get()
|
|
19
|
+
* findAll() { ... }
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* @ApiJsonApiErrors({ notFound: true })
|
|
23
|
+
* @Get(':id')
|
|
24
|
+
* findById() { ... }
|
|
25
|
+
*/
|
|
26
|
+
export declare function ApiJsonApiErrors(options?: ApiJsonApiErrorsOptions): MethodDecorator;
|
|
27
|
+
/**
|
|
28
|
+
* Convenience decorator for read endpoints (GET by ID).
|
|
29
|
+
* Adds 401, 404, and 500 error responses.
|
|
30
|
+
*/
|
|
31
|
+
export declare function ApiJsonApiReadErrors(): MethodDecorator;
|
|
32
|
+
/**
|
|
33
|
+
* Convenience decorator for list endpoints (GET all).
|
|
34
|
+
* Adds 401 and 500 error responses.
|
|
35
|
+
*/
|
|
36
|
+
export declare function ApiJsonApiListErrors(): MethodDecorator;
|
|
37
|
+
/**
|
|
38
|
+
* Convenience decorator for create endpoints (POST).
|
|
39
|
+
* Adds 400, 401, 422, and 500 error responses.
|
|
40
|
+
*/
|
|
41
|
+
export declare function ApiJsonApiCreateErrors(): MethodDecorator;
|
|
42
|
+
/**
|
|
43
|
+
* Convenience decorator for update endpoints (PUT/PATCH).
|
|
44
|
+
* Adds 400, 401, 404, 422, and 500 error responses.
|
|
45
|
+
*/
|
|
46
|
+
export declare function ApiJsonApiUpdateErrors(): MethodDecorator;
|
|
47
|
+
/**
|
|
48
|
+
* Convenience decorator for delete endpoints (DELETE).
|
|
49
|
+
* Adds 401, 403, 404, and 500 error responses.
|
|
50
|
+
*/
|
|
51
|
+
export declare function ApiJsonApiDeleteErrors(): MethodDecorator;
|
|
52
|
+
//# sourceMappingURL=api-jsonapi-error.decorator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-jsonapi-error.decorator.d.ts","sourceRoot":"","sources":["../../../src/openapi/decorators/api-jsonapi-error.decorator.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,uBAA4B,GAAG,eAAe,CAmEvF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,eAAe,CAEtD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,eAAe,CAEtD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,eAAe,CAExD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,eAAe,CAMxD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,eAAe,CAExD"}
|