@navios/openapi 0.9.1 → 1.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/legacy-compat/__type-tests__/tsconfig.tsbuildinfo +1 -1
  3. package/dist/src/services/endpoint-scanner.service.d.mts +2 -2
  4. package/dist/src/services/endpoint-scanner.service.d.mts.map +1 -1
  5. package/dist/src/services/path-builder.service.d.mts +13 -1
  6. package/dist/src/services/path-builder.service.d.mts.map +1 -1
  7. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  8. package/dist/tsconfig.spec.tsbuildinfo +1 -1
  9. package/dist/tsconfig.tsbuildinfo +1 -1
  10. package/lib/{index-BYd1gzJQ.d.cts → index-COmVnnSM.d.mts} +17 -5
  11. package/lib/{index-BYd1gzJQ.d.cts.map → index-COmVnnSM.d.mts.map} +1 -1
  12. package/lib/{index-KzCwlPFD.d.mts → index-Dz-4huer.d.cts} +17 -5
  13. package/lib/{index-KzCwlPFD.d.mts.map → index-Dz-4huer.d.cts.map} +1 -1
  14. package/lib/index.cjs +1 -1
  15. package/lib/index.d.cts +1 -1
  16. package/lib/index.d.mts +1 -1
  17. package/lib/index.mjs +1 -1
  18. package/lib/legacy-compat/index.cjs +1 -1
  19. package/lib/legacy-compat/index.d.cts +1 -1
  20. package/lib/legacy-compat/index.d.mts +7 -7
  21. package/lib/legacy-compat/index.mjs +1 -1
  22. package/lib/{services-kEHEZqLZ.cjs → services-B16xN1Kh.cjs} +44 -12
  23. package/lib/services-B16xN1Kh.cjs.map +1 -0
  24. package/lib/{services-MFCyRMd8.mjs → services-B7UR1D1X.mjs} +45 -13
  25. package/lib/services-B7UR1D1X.mjs.map +1 -0
  26. package/package.json +4 -4
  27. package/src/services/endpoint-scanner.service.mts +14 -8
  28. package/src/services/path-builder.service.mts +85 -27
  29. package/lib/services-MFCyRMd8.mjs.map +0 -1
  30. package/lib/services-kEHEZqLZ.cjs.map +0 -1
@@ -1,8 +1,8 @@
1
- import { ZodType, z } from "zod/v4";
2
1
  import * as _navios_core0 from "@navios/core";
3
2
  import { ControllerMetadata, HandlerMetadata, ModuleMetadata } from "@navios/core";
4
- import { BaseEndpointConfig } from "@navios/builder";
3
+ import { ZodType, z } from "zod/v4";
5
4
  import { oas31 } from "zod-openapi";
5
+ import { BaseEndpointOptions, EndpointOptions } from "@navios/builder";
6
6
 
7
7
  //#region src/decorators/api-tag.decorator.d.mts
8
8
  declare const ApiTagSchema: z.ZodObject<{
@@ -313,7 +313,7 @@ interface DiscoveredEndpoint {
313
313
  /** Handler (endpoint) metadata */
314
314
  handler: HandlerMetadata<any>;
315
315
  /** Endpoint configuration from @navios/builder */
316
- config: BaseEndpointConfig;
316
+ config: EndpointOptions | BaseEndpointOptions;
317
317
  /** Extracted OpenAPI metadata */
318
318
  openApiMetadata: OpenApiEndpointMetadata;
319
319
  }
@@ -447,7 +447,7 @@ declare class PathBuilderService {
447
447
  /**
448
448
  * Gets the endpoint type based on the adapter token
449
449
  */
450
- getEndpointType(handler: HandlerMetadata<any>): 'endpoint' | 'multipart' | 'stream';
450
+ getEndpointType(handler: HandlerMetadata<any>): 'endpoint' | 'multipart' | 'stream' | 'unknown';
451
451
  /**
452
452
  * Builds OpenAPI parameters from endpoint config
453
453
  */
@@ -468,6 +468,13 @@ declare class PathBuilderService {
468
468
  * Builds responses based on endpoint type
469
469
  */
470
470
  private buildResponses;
471
+ /**
472
+ * Builds error responses from errorSchema
473
+ *
474
+ * @param errorSchema - Optional record mapping status codes to Zod schemas
475
+ * @returns ResponsesObject with error responses, or empty object if no errorSchema
476
+ */
477
+ private buildErrorResponses;
471
478
  /**
472
479
  * Builds responses for JSON endpoints
473
480
  */
@@ -476,6 +483,11 @@ declare class PathBuilderService {
476
483
  * Builds responses for stream endpoints
477
484
  */
478
485
  private buildStreamResponses;
486
+ /**
487
+ * Builds responses for unknown endpoint types.
488
+ * Unknown types have no success response but can have error responses.
489
+ */
490
+ private buildUnknownResponses;
479
491
  /**
480
492
  * Gets content object for different stream types
481
493
  */
@@ -591,4 +603,4 @@ declare const ApiExcludeToken: unique symbol;
591
603
  declare const ApiStreamToken: unique symbol;
592
604
  //#endregion
593
605
  export { ApiDeprecated as C, ApiOperationOptions as D, ApiOperation as E, ApiTag as O, ApiSecurityRequirement as S, ApiSummary as T, OpenApiEndpointMetadata as _, ApiStreamToken as a, ApiExclude as b, OpenApiGeneratorOptions as c, PathItemResult as d, SchemaConversionResult as f, EndpointScannerService as g, DiscoveredEndpoint as h, ApiSecurityToken as i, ApiTagOptions as k, OpenApiGeneratorService as l, MetadataExtractorService as m, ApiExcludeToken as n, ApiSummaryToken as o, SchemaConverterService as p, ApiOperationToken as r, ApiTagToken as s, ApiDeprecatedToken as t, PathBuilderService as u, ApiStream as v, ApiDeprecatedOptions as w, ApiSecurity as x, ApiStreamOptions as y };
594
- //# sourceMappingURL=index-BYd1gzJQ.d.cts.map
606
+ //# sourceMappingURL=index-COmVnnSM.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-BYd1gzJQ.d.cts","names":[],"sources":["../src/decorators/api-tag.decorator.mts","../src/decorators/api-operation.decorator.mts","../src/decorators/api-summary.decorator.mts","../src/decorators/api-deprecated.decorator.mts","../src/decorators/api-security.decorator.mts","../src/decorators/api-exclude.decorator.mts","../src/decorators/api-stream.decorator.mts","../src/metadata/openapi.metadata.mts","../src/services/endpoint-scanner.service.mts","../src/services/metadata-extractor.service.mts","../src/services/schema-converter.service.mts","../src/services/path-builder.service.mts","../src/services/openapi-generator.service.mts","../src/tokens/index.mts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index-COmVnnSM.d.mts","names":[],"sources":["../src/decorators/api-tag.decorator.mts","../src/decorators/api-operation.decorator.mts","../src/decorators/api-summary.decorator.mts","../src/decorators/api-deprecated.decorator.mts","../src/decorators/api-security.decorator.mts","../src/decorators/api-exclude.decorator.mts","../src/decorators/api-stream.decorator.mts","../src/metadata/openapi.metadata.mts","../src/services/endpoint-scanner.service.mts","../src/services/metadata-extractor.service.mts","../src/services/schema-converter.service.mts","../src/services/path-builder.service.mts","../src/services/openapi-generator.service.mts","../src/tokens/index.mts"],"sourcesContent":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
+ import { ZodType, z } from "zod/v4";
1
2
  import * as _navios_core0 from "@navios/core";
2
3
  import { ControllerMetadata, HandlerMetadata, ModuleMetadata } from "@navios/core";
3
- import { ZodType, z } from "zod/v4";
4
+ import { BaseEndpointOptions, EndpointOptions } from "@navios/builder";
4
5
  import { oas31 } from "zod-openapi";
5
- import { BaseEndpointConfig } from "@navios/builder";
6
6
 
7
7
  //#region src/decorators/api-tag.decorator.d.mts
8
8
  declare const ApiTagSchema: z.ZodObject<{
@@ -313,7 +313,7 @@ interface DiscoveredEndpoint {
313
313
  /** Handler (endpoint) metadata */
314
314
  handler: HandlerMetadata<any>;
315
315
  /** Endpoint configuration from @navios/builder */
316
- config: BaseEndpointConfig;
316
+ config: EndpointOptions | BaseEndpointOptions;
317
317
  /** Extracted OpenAPI metadata */
318
318
  openApiMetadata: OpenApiEndpointMetadata;
319
319
  }
@@ -447,7 +447,7 @@ declare class PathBuilderService {
447
447
  /**
448
448
  * Gets the endpoint type based on the adapter token
449
449
  */
450
- getEndpointType(handler: HandlerMetadata<any>): 'endpoint' | 'multipart' | 'stream';
450
+ getEndpointType(handler: HandlerMetadata<any>): 'endpoint' | 'multipart' | 'stream' | 'unknown';
451
451
  /**
452
452
  * Builds OpenAPI parameters from endpoint config
453
453
  */
@@ -468,6 +468,13 @@ declare class PathBuilderService {
468
468
  * Builds responses based on endpoint type
469
469
  */
470
470
  private buildResponses;
471
+ /**
472
+ * Builds error responses from errorSchema
473
+ *
474
+ * @param errorSchema - Optional record mapping status codes to Zod schemas
475
+ * @returns ResponsesObject with error responses, or empty object if no errorSchema
476
+ */
477
+ private buildErrorResponses;
471
478
  /**
472
479
  * Builds responses for JSON endpoints
473
480
  */
@@ -476,6 +483,11 @@ declare class PathBuilderService {
476
483
  * Builds responses for stream endpoints
477
484
  */
478
485
  private buildStreamResponses;
486
+ /**
487
+ * Builds responses for unknown endpoint types.
488
+ * Unknown types have no success response but can have error responses.
489
+ */
490
+ private buildUnknownResponses;
479
491
  /**
480
492
  * Gets content object for different stream types
481
493
  */
@@ -591,4 +603,4 @@ declare const ApiExcludeToken: unique symbol;
591
603
  declare const ApiStreamToken: unique symbol;
592
604
  //#endregion
593
605
  export { ApiDeprecated as C, ApiOperationOptions as D, ApiOperation as E, ApiTag as O, ApiSecurityRequirement as S, ApiSummary as T, OpenApiEndpointMetadata as _, ApiStreamToken as a, ApiExclude as b, OpenApiGeneratorOptions as c, PathItemResult as d, SchemaConversionResult as f, EndpointScannerService as g, DiscoveredEndpoint as h, ApiSecurityToken as i, ApiTagOptions as k, OpenApiGeneratorService as l, MetadataExtractorService as m, ApiExcludeToken as n, ApiSummaryToken as o, SchemaConverterService as p, ApiOperationToken as r, ApiTagToken as s, ApiDeprecatedToken as t, PathBuilderService as u, ApiStream as v, ApiDeprecatedOptions as w, ApiSecurity as x, ApiStreamOptions as y };
594
- //# sourceMappingURL=index-KzCwlPFD.d.mts.map
606
+ //# sourceMappingURL=index-Dz-4huer.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-KzCwlPFD.d.mts","names":[],"sources":["../src/decorators/api-tag.decorator.mts","../src/decorators/api-operation.decorator.mts","../src/decorators/api-summary.decorator.mts","../src/decorators/api-deprecated.decorator.mts","../src/decorators/api-security.decorator.mts","../src/decorators/api-exclude.decorator.mts","../src/decorators/api-stream.decorator.mts","../src/metadata/openapi.metadata.mts","../src/services/endpoint-scanner.service.mts","../src/services/metadata-extractor.service.mts","../src/services/schema-converter.service.mts","../src/services/path-builder.service.mts","../src/services/openapi-generator.service.mts","../src/tokens/index.mts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index-Dz-4huer.d.cts","names":[],"sources":["../src/decorators/api-tag.decorator.mts","../src/decorators/api-operation.decorator.mts","../src/decorators/api-summary.decorator.mts","../src/decorators/api-deprecated.decorator.mts","../src/decorators/api-security.decorator.mts","../src/decorators/api-exclude.decorator.mts","../src/decorators/api-stream.decorator.mts","../src/metadata/openapi.metadata.mts","../src/services/endpoint-scanner.service.mts","../src/services/metadata-extractor.service.mts","../src/services/schema-converter.service.mts","../src/services/path-builder.service.mts","../src/services/openapi-generator.service.mts","../src/tokens/index.mts"],"sourcesContent":[],"mappings":"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"}
package/lib/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- const require_services = require('./services-kEHEZqLZ.cjs');
1
+ const require_services = require('./services-B16xN1Kh.cjs');
2
2
  let _navios_core = require("@navios/core");
3
3
  let zod_v4 = require("zod/v4");
4
4
 
package/lib/index.d.cts CHANGED
@@ -1,2 +1,2 @@
1
- import { C as ApiDeprecated, D as ApiOperationOptions, E as ApiOperation, O as ApiTag, S as ApiSecurityRequirement, T as ApiSummary, _ as OpenApiEndpointMetadata, a as ApiStreamToken, b as ApiExclude, c as OpenApiGeneratorOptions, d as PathItemResult, f as SchemaConversionResult, g as EndpointScannerService, h as DiscoveredEndpoint, i as ApiSecurityToken, k as ApiTagOptions, l as OpenApiGeneratorService, m as MetadataExtractorService, n as ApiExcludeToken, o as ApiSummaryToken, p as SchemaConverterService, r as ApiOperationToken, s as ApiTagToken, t as ApiDeprecatedToken, u as PathBuilderService, v as ApiStream, w as ApiDeprecatedOptions, x as ApiSecurity, y as ApiStreamOptions } from "./index-BYd1gzJQ.cjs";
1
+ import { C as ApiDeprecated, D as ApiOperationOptions, E as ApiOperation, O as ApiTag, S as ApiSecurityRequirement, T as ApiSummary, _ as OpenApiEndpointMetadata, a as ApiStreamToken, b as ApiExclude, c as OpenApiGeneratorOptions, d as PathItemResult, f as SchemaConversionResult, g as EndpointScannerService, h as DiscoveredEndpoint, i as ApiSecurityToken, k as ApiTagOptions, l as OpenApiGeneratorService, m as MetadataExtractorService, n as ApiExcludeToken, o as ApiSummaryToken, p as SchemaConverterService, r as ApiOperationToken, s as ApiTagToken, t as ApiDeprecatedToken, u as PathBuilderService, v as ApiStream, w as ApiDeprecatedOptions, x as ApiSecurity, y as ApiStreamOptions } from "./index-Dz-4huer.cjs";
2
2
  export { ApiDeprecated, type ApiDeprecatedOptions, ApiDeprecatedToken, ApiExclude, ApiExcludeToken, ApiOperation, type ApiOperationOptions, ApiOperationToken, ApiSecurity, type ApiSecurityRequirement, ApiSecurityToken, ApiStream, type ApiStreamOptions, ApiStreamToken, ApiSummary, ApiSummaryToken, ApiTag, type ApiTagOptions, ApiTagToken, type DiscoveredEndpoint, EndpointScannerService, MetadataExtractorService, type OpenApiEndpointMetadata, type OpenApiGeneratorOptions, OpenApiGeneratorService, PathBuilderService, type PathItemResult, type SchemaConversionResult, SchemaConverterService };
package/lib/index.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { C as ApiDeprecated, D as ApiOperationOptions, E as ApiOperation, O as ApiTag, S as ApiSecurityRequirement, T as ApiSummary, _ as OpenApiEndpointMetadata, a as ApiStreamToken, b as ApiExclude, c as OpenApiGeneratorOptions, d as PathItemResult, f as SchemaConversionResult, g as EndpointScannerService, h as DiscoveredEndpoint, i as ApiSecurityToken, k as ApiTagOptions, l as OpenApiGeneratorService, m as MetadataExtractorService, n as ApiExcludeToken, o as ApiSummaryToken, p as SchemaConverterService, r as ApiOperationToken, s as ApiTagToken, t as ApiDeprecatedToken, u as PathBuilderService, v as ApiStream, w as ApiDeprecatedOptions, x as ApiSecurity, y as ApiStreamOptions } from "./index-KzCwlPFD.mjs";
1
+ import { C as ApiDeprecated, D as ApiOperationOptions, E as ApiOperation, O as ApiTag, S as ApiSecurityRequirement, T as ApiSummary, _ as OpenApiEndpointMetadata, a as ApiStreamToken, b as ApiExclude, c as OpenApiGeneratorOptions, d as PathItemResult, f as SchemaConversionResult, g as EndpointScannerService, h as DiscoveredEndpoint, i as ApiSecurityToken, k as ApiTagOptions, l as OpenApiGeneratorService, m as MetadataExtractorService, n as ApiExcludeToken, o as ApiSummaryToken, p as SchemaConverterService, r as ApiOperationToken, s as ApiTagToken, t as ApiDeprecatedToken, u as PathBuilderService, v as ApiStream, w as ApiDeprecatedOptions, x as ApiSecurity, y as ApiStreamOptions } from "./index-COmVnnSM.mjs";
2
2
  export { ApiDeprecated, type ApiDeprecatedOptions, ApiDeprecatedToken, ApiExclude, ApiExcludeToken, ApiOperation, type ApiOperationOptions, ApiOperationToken, ApiSecurity, type ApiSecurityRequirement, ApiSecurityToken, ApiStream, type ApiStreamOptions, ApiStreamToken, ApiSummary, ApiSummaryToken, ApiTag, type ApiTagOptions, ApiTagToken, type DiscoveredEndpoint, EndpointScannerService, MetadataExtractorService, type OpenApiEndpointMetadata, type OpenApiGeneratorOptions, OpenApiGeneratorService, PathBuilderService, type PathItemResult, type SchemaConversionResult, SchemaConverterService };
package/lib/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { a as _MetadataExtractorService, c as ApiOperationToken, d as ApiSummaryToken, f as ApiTagToken, i as _EndpointScannerService, l as ApiSecurityToken, n as _PathBuilderService, o as ApiDeprecatedToken, r as _SchemaConverterService, s as ApiExcludeToken, t as _OpenApiGeneratorService, u as ApiStreamToken } from "./services-MFCyRMd8.mjs";
1
+ import { a as _MetadataExtractorService, c as ApiOperationToken, d as ApiSummaryToken, f as ApiTagToken, i as _EndpointScannerService, l as ApiSecurityToken, n as _PathBuilderService, o as ApiDeprecatedToken, r as _SchemaConverterService, s as ApiExcludeToken, t as _OpenApiGeneratorService, u as ApiStreamToken } from "./services-B7UR1D1X.mjs";
2
2
  import { AttributeFactory } from "@navios/core";
3
3
  import { z } from "zod/v4";
4
4
 
@@ -1,4 +1,4 @@
1
- const require_services = require('../services-kEHEZqLZ.cjs');
1
+ const require_services = require('../services-B16xN1Kh.cjs');
2
2
  let zod_v4 = require("zod/v4");
3
3
  let _navios_core_legacy_compat = require("@navios/core/legacy-compat");
4
4
 
@@ -1,4 +1,4 @@
1
- import { _ as OpenApiEndpointMetadata, a as ApiStreamToken, g as EndpointScannerService, i as ApiSecurityToken, l as OpenApiGeneratorService, m as MetadataExtractorService, n as ApiExcludeToken, o as ApiSummaryToken, p as SchemaConverterService, r as ApiOperationToken, s as ApiTagToken, t as ApiDeprecatedToken, u as PathBuilderService } from "../index-BYd1gzJQ.cjs";
1
+ import { _ as OpenApiEndpointMetadata, a as ApiStreamToken, g as EndpointScannerService, i as ApiSecurityToken, l as OpenApiGeneratorService, m as MetadataExtractorService, n as ApiExcludeToken, o as ApiSummaryToken, p as SchemaConverterService, r as ApiOperationToken, s as ApiTagToken, t as ApiDeprecatedToken, u as PathBuilderService } from "../index-Dz-4huer.cjs";
2
2
  import { z } from "zod/v4";
3
3
  import * as _navios_core_legacy_compat0 from "@navios/core/legacy-compat";
4
4
 
@@ -1,6 +1,6 @@
1
- import { _ as OpenApiEndpointMetadata, a as ApiStreamToken, g as EndpointScannerService, i as ApiSecurityToken, l as OpenApiGeneratorService, m as MetadataExtractorService, n as ApiExcludeToken, o as ApiSummaryToken, p as SchemaConverterService, r as ApiOperationToken, s as ApiTagToken, t as ApiDeprecatedToken, u as PathBuilderService } from "../index-KzCwlPFD.mjs";
1
+ import { _ as OpenApiEndpointMetadata, a as ApiStreamToken, g as EndpointScannerService, i as ApiSecurityToken, l as OpenApiGeneratorService, m as MetadataExtractorService, n as ApiExcludeToken, o as ApiSummaryToken, p as SchemaConverterService, r as ApiOperationToken, s as ApiTagToken, t as ApiDeprecatedToken, u as PathBuilderService } from "../index-COmVnnSM.mjs";
2
2
  import { z } from "zod/v4";
3
- import * as _navios_core_legacy_compat0 from "@navios/core/legacy-compat";
3
+ import * as _navios_core_legacy_compat1 from "@navios/core/legacy-compat";
4
4
 
5
5
  //#region src/legacy-compat/decorators/api-tag.decorator.d.mts
6
6
  declare const ApiTagSchema: z.ZodObject<{
@@ -93,7 +93,7 @@ type ApiOperationOptions = z.infer<typeof ApiOperationSchema>;
93
93
  * }
94
94
  * ```
95
95
  */
96
- declare const ApiOperation: _navios_core_legacy_compat0.LegacyClassSchemaAttribute<z.ZodObject<{
96
+ declare const ApiOperation: _navios_core_legacy_compat1.LegacyClassSchemaAttribute<z.ZodObject<{
97
97
  summary: z.ZodOptional<z.ZodString>;
98
98
  description: z.ZodOptional<z.ZodString>;
99
99
  operationId: z.ZodOptional<z.ZodString>;
@@ -128,7 +128,7 @@ declare const ApiOperation: _navios_core_legacy_compat0.LegacyClassSchemaAttribu
128
128
  * }
129
129
  * ```
130
130
  */
131
- declare const ApiSummary: _navios_core_legacy_compat0.LegacyClassSchemaAttribute<z.ZodString>;
131
+ declare const ApiSummary: _navios_core_legacy_compat1.LegacyClassSchemaAttribute<z.ZodString>;
132
132
  //#endregion
133
133
  //#region src/legacy-compat/decorators/api-deprecated.decorator.d.mts
134
134
  declare const ApiDeprecatedSchema: z.ZodObject<{
@@ -199,7 +199,7 @@ type ApiSecurityRequirement = z.infer<typeof ApiSecuritySchema>;
199
199
  * }
200
200
  * ```
201
201
  */
202
- declare const ApiSecurity: _navios_core_legacy_compat0.LegacyClassSchemaAttribute<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
202
+ declare const ApiSecurity: _navios_core_legacy_compat1.LegacyClassSchemaAttribute<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
203
203
  //#endregion
204
204
  //#region src/legacy-compat/decorators/api-exclude.decorator.d.mts
205
205
  /**
@@ -228,7 +228,7 @@ declare const ApiSecurity: _navios_core_legacy_compat0.LegacyClassSchemaAttribut
228
228
  * }
229
229
  * ```
230
230
  */
231
- declare const ApiExclude: _navios_core_legacy_compat0.LegacyClassAttribute;
231
+ declare const ApiExclude: _navios_core_legacy_compat1.LegacyClassAttribute;
232
232
  //#endregion
233
233
  //#region src/legacy-compat/decorators/api-stream.decorator.d.mts
234
234
  declare const ApiStreamSchema: z.ZodObject<{
@@ -276,7 +276,7 @@ type ApiStreamOptions = z.infer<typeof ApiStreamSchema>;
276
276
  * }
277
277
  * ```
278
278
  */
279
- declare const ApiStream: _navios_core_legacy_compat0.LegacyClassSchemaAttribute<z.ZodObject<{
279
+ declare const ApiStream: _navios_core_legacy_compat1.LegacyClassSchemaAttribute<z.ZodObject<{
280
280
  contentType: z.ZodString;
281
281
  description: z.ZodOptional<z.ZodString>;
282
282
  }, z.core.$strip>>;
@@ -1,4 +1,4 @@
1
- import { a as _MetadataExtractorService, c as ApiOperationToken, d as ApiSummaryToken, f as ApiTagToken, i as _EndpointScannerService, l as ApiSecurityToken, n as _PathBuilderService, o as ApiDeprecatedToken, r as _SchemaConverterService, s as ApiExcludeToken, t as _OpenApiGeneratorService, u as ApiStreamToken } from "../services-MFCyRMd8.mjs";
1
+ import { a as _MetadataExtractorService, c as ApiOperationToken, d as ApiSummaryToken, f as ApiTagToken, i as _EndpointScannerService, l as ApiSecurityToken, n as _PathBuilderService, o as ApiDeprecatedToken, r as _SchemaConverterService, s as ApiExcludeToken, t as _OpenApiGeneratorService, u as ApiStreamToken } from "../services-B7UR1D1X.mjs";
2
2
  import { z } from "zod/v4";
3
3
  import { LegacyAttributeFactory } from "@navios/core/legacy-compat";
4
4
 
@@ -1340,9 +1340,10 @@ var PathBuilderService = class {
1340
1340
  /**
1341
1341
  * Gets the endpoint type based on the adapter token
1342
1342
  */ getEndpointType(handler) {
1343
+ if (handler.adapterToken === _navios_core.EndpointAdapterToken) return "endpoint";
1343
1344
  if (handler.adapterToken === _navios_core.MultipartAdapterToken) return "multipart";
1344
1345
  if (handler.adapterToken === _navios_core.StreamAdapterToken) return "stream";
1345
- return "endpoint";
1346
+ return "unknown";
1346
1347
  }
1347
1348
  /**
1348
1349
  * Builds OpenAPI parameters from endpoint config
@@ -1413,33 +1414,64 @@ var PathBuilderService = class {
1413
1414
  switch (this.getEndpointType(handler)) {
1414
1415
  case "stream": return this.buildStreamResponses(endpoint);
1415
1416
  case "multipart":
1416
- case "endpoint":
1417
- default: return this.buildJsonResponses(config, handler);
1417
+ case "endpoint": return this.buildJsonResponses(config, handler);
1418
+ case "unknown": return this.buildUnknownResponses(config);
1419
+ default: return this.buildUnknownResponses(config);
1418
1420
  }
1419
1421
  }
1420
1422
  /**
1423
+ * Builds error responses from errorSchema
1424
+ *
1425
+ * @param errorSchema - Optional record mapping status codes to Zod schemas
1426
+ * @returns ResponsesObject with error responses, or empty object if no errorSchema
1427
+ */ buildErrorResponses(errorSchema) {
1428
+ if (!errorSchema) return {};
1429
+ const errorResponses = {};
1430
+ for (const [statusCode, schema] of Object.entries(errorSchema)) {
1431
+ const { schema: convertedSchema } = this.schemaConverter.convert(schema);
1432
+ errorResponses[statusCode] = {
1433
+ description: `Error response (${statusCode})`,
1434
+ content: { "application/json": { schema: convertedSchema } }
1435
+ };
1436
+ }
1437
+ return errorResponses;
1438
+ }
1439
+ /**
1421
1440
  * Builds responses for JSON endpoints
1422
1441
  */ buildJsonResponses(config, handler) {
1423
1442
  const successCode = handler.successStatusCode?.toString() ?? "200";
1424
- if (!config.responseSchema) return { [successCode]: { description: "Successful response" } };
1425
- const { schema } = this.schemaConverter.convert(config.responseSchema);
1426
- return { [successCode]: {
1427
- description: "Successful response",
1428
- content: { "application/json": { schema } }
1429
- } };
1443
+ const responses = {};
1444
+ if (!config.responseSchema) responses[successCode] = { description: "Successful response" };
1445
+ else {
1446
+ const { schema } = this.schemaConverter.convert(config.responseSchema);
1447
+ responses[successCode] = {
1448
+ description: "Successful response",
1449
+ content: { "application/json": { schema } }
1450
+ };
1451
+ }
1452
+ Object.assign(responses, this.buildErrorResponses(config.errorSchema));
1453
+ return responses;
1430
1454
  }
1431
1455
  /**
1432
1456
  * Builds responses for stream endpoints
1433
1457
  */ buildStreamResponses(endpoint) {
1434
- const { openApiMetadata, handler } = endpoint;
1458
+ const { config, openApiMetadata, handler } = endpoint;
1435
1459
  const successCode = handler.successStatusCode?.toString() ?? "200";
1436
1460
  const contentType = openApiMetadata.stream?.contentType ?? "application/octet-stream";
1437
1461
  const description = openApiMetadata.stream?.description ?? "Stream response";
1438
1462
  const content = this.getStreamContent(contentType);
1439
- return { [successCode]: {
1463
+ const responses = { [successCode]: {
1440
1464
  description,
1441
1465
  content
1442
1466
  } };
1467
+ Object.assign(responses, this.buildErrorResponses(config.errorSchema));
1468
+ return responses;
1469
+ }
1470
+ /**
1471
+ * Builds responses for unknown endpoint types.
1472
+ * Unknown types have no success response but can have error responses.
1473
+ */ buildUnknownResponses(config) {
1474
+ return this.buildErrorResponses(config.errorSchema);
1443
1475
  }
1444
1476
  /**
1445
1477
  * Gets content object for different stream types
@@ -1893,4 +1925,4 @@ Object.defineProperty(exports, '_SchemaConverterService', {
1893
1925
  return _SchemaConverterService;
1894
1926
  }
1895
1927
  });
1896
- //# sourceMappingURL=services-kEHEZqLZ.cjs.map
1928
+ //# sourceMappingURL=services-B16xN1Kh.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services-B16xN1Kh.cjs","names":["ApiTagToken","Symbol","for","ApiOperationToken","ApiSummaryToken","ApiDeprecatedToken","ApiSecurityToken","ApiExcludeToken","ApiStreamToken","Injectable","ApiDeprecatedToken","ApiExcludeToken","ApiOperationToken","ApiSecurityToken","ApiStreamToken","ApiSummaryToken","ApiTagToken","MetadataExtractorService","extract","controller","handler","controllerTag","customAttributes","get","handlerTag","operation","summary","deprecated","security","excluded","stream","tags","name","push","description","operationId","undefined","externalDocs","extractControllerMetadata","inject","Injectable","Logger","MetadataExtractorService","EndpointScannerService","logger","context","name","metadataExtractor","scan","modules","endpoints","moduleName","moduleMetadata","controllers","size","debug","controllerClass","controllerMeta","controllerEndpoints","scanController","push","length","module","handler","config","openApiMetadata","extract","excluded","classMethod","controller","Injectable","createSchema","SchemaConverterService","convert","schema","isFileSchema","type","format","transformFileProperties","properties","result","key","prop","Object","entries","description","items","EndpointAdapterToken","inject","Injectable","MultipartAdapterToken","StreamAdapterToken","SchemaConverterService","PathBuilderService","schemaConverter","build","endpoint","config","handler","openApiMetadata","path","convertUrlParams","url","operation","tags","length","undefined","summary","description","operationId","deprecated","externalDocs","security","parameters","buildParameters","requestBody","buildRequestBody","responses","buildResponses","cleanOperation","Object","fromEntries","entries","filter","v","pathItem","method","toLowerCase","replace","extractUrlParamNames","matches","matchAll","Array","from","m","getEndpointType","adapterToken","params","urlParams","param","push","name","in","required","schema","type","querySchema","convert","schemaObj","properties","includes","buildMultipartRequestBody","buildJsonRequestBody","requestSchema","content","transformFileProperties","buildStreamResponses","buildJsonResponses","buildUnknownResponses","buildErrorResponses","errorSchema","errorResponses","statusCode","convertedSchema","successCode","successStatusCode","toString","responseSchema","assign","contentType","stream","getStreamContent","format","inject","Injectable","Logger","EndpointScannerService","PathBuilderService","OpenApiGeneratorService","logger","context","name","scanner","pathBuilder","generate","modules","options","debug","endpoints","scan","paths","buildPaths","discoveredTags","collectTags","tags","mergeTags","document","openapi","info","servers","length","externalDocs","security","securitySchemes","components","Object","keys","endpoint","path","pathItem","build","Set","tag","openApiMetadata","add","configuredTags","tagMap","Map","set","tagName","has","Array","from","values"],"sources":["../src/tokens/index.mts","../src/services/metadata-extractor.service.mts","../src/services/endpoint-scanner.service.mts","../src/services/schema-converter.service.mts","../src/services/path-builder.service.mts","../src/services/openapi-generator.service.mts"],"sourcesContent":["/**\n * Tokens for OpenAPI metadata attributes\n */\n\n/** Token for @ApiTag decorator */\nexport const ApiTagToken = Symbol.for('navios:openapi:tag')\n\n/** Token for @ApiOperation decorator */\nexport const ApiOperationToken = Symbol.for('navios:openapi:operation')\n\n/** Token for @ApiSummary decorator */\nexport const ApiSummaryToken = Symbol.for('navios:openapi:summary')\n\n/** Token for @ApiDeprecated decorator */\nexport const ApiDeprecatedToken = Symbol.for('navios:openapi:deprecated')\n\n/** Token for @ApiSecurity decorator */\nexport const ApiSecurityToken = Symbol.for('navios:openapi:security')\n\n/** Token for @ApiExclude decorator */\nexport const ApiExcludeToken = Symbol.for('navios:openapi:exclude')\n\n/** Token for @ApiStream decorator */\nexport const ApiStreamToken = Symbol.for('navios:openapi:stream')\n","import type { ControllerMetadata, HandlerMetadata } from '@navios/core'\n\nimport { Injectable } from '@navios/core'\n\nimport type { OpenApiEndpointMetadata } from '../metadata/openapi.metadata.mjs'\n\nimport {\n ApiDeprecatedToken,\n ApiExcludeToken,\n ApiOperationToken,\n ApiSecurityToken,\n ApiStreamToken,\n ApiSummaryToken,\n ApiTagToken,\n} from '../tokens/index.mjs'\n\n/**\n * Service responsible for extracting OpenAPI metadata from decorators.\n *\n * Merges controller-level and handler-level metadata to produce\n * a complete OpenAPI metadata object for each endpoint.\n */\n@Injectable()\nexport class MetadataExtractorService {\n /**\n * Extracts and merges OpenAPI metadata from controller and handler.\n *\n * @param controller - Controller metadata\n * @param handler - Handler metadata\n * @returns Merged OpenAPI metadata\n */\n extract(\n controller: ControllerMetadata,\n handler: HandlerMetadata<any>,\n ): OpenApiEndpointMetadata {\n // Extract controller-level metadata\n const controllerTag = controller.customAttributes.get(ApiTagToken) as\n | { name: string; description?: string }\n | undefined\n\n // Extract handler-level metadata\n const handlerTag = handler.customAttributes.get(ApiTagToken) as\n | { name: string; description?: string }\n | undefined\n const operation = handler.customAttributes.get(ApiOperationToken) as\n | {\n summary?: string\n description?: string\n operationId?: string\n deprecated?: boolean\n externalDocs?: { url: string; description?: string }\n }\n | undefined\n const summary = handler.customAttributes.get(ApiSummaryToken) as\n | string\n | undefined\n const deprecated = handler.customAttributes.get(ApiDeprecatedToken) as\n | { message?: string }\n | undefined\n const security = handler.customAttributes.get(ApiSecurityToken) as\n | Record<string, string[]>\n | undefined\n const excluded = handler.customAttributes.get(ApiExcludeToken) as\n | boolean\n | undefined\n const stream = handler.customAttributes.get(ApiStreamToken) as\n | { contentType: string; description?: string }\n | undefined\n\n // Build tags array (handler tag takes precedence but both are included)\n const tags: string[] = []\n if (controllerTag?.name) {\n tags.push(controllerTag.name)\n }\n if (handlerTag?.name && handlerTag.name !== controllerTag?.name) {\n tags.push(handlerTag.name)\n }\n\n return {\n tags,\n summary: operation?.summary ?? summary,\n description: operation?.description,\n operationId: operation?.operationId,\n deprecated: deprecated !== undefined || operation?.deprecated === true,\n externalDocs: operation?.externalDocs,\n security: security ? [security] : undefined,\n excluded: excluded === true,\n stream,\n }\n }\n}\n","import type { BaseEndpointOptions, EndpointOptions } from '@navios/builder'\nimport type {\n ControllerMetadata,\n HandlerMetadata,\n ModuleMetadata,\n} from '@navios/core'\n\nimport {\n extractControllerMetadata,\n inject,\n Injectable,\n Logger,\n} from '@navios/core'\n\nimport type { OpenApiEndpointMetadata } from '../metadata/openapi.metadata.mjs'\n\nimport { MetadataExtractorService } from './metadata-extractor.service.mjs'\n\n/**\n * Represents a discovered endpoint with all its metadata\n */\nexport interface DiscoveredEndpoint {\n /** Module metadata */\n module: ModuleMetadata\n /** Controller class */\n controllerClass: any\n /** Controller metadata */\n controller: ControllerMetadata\n /** Handler (endpoint) metadata */\n handler: HandlerMetadata<any>\n /** Endpoint configuration from @navios/builder */\n config: EndpointOptions | BaseEndpointOptions\n /** Extracted OpenAPI metadata */\n openApiMetadata: OpenApiEndpointMetadata\n}\n\n/**\n * Service responsible for scanning modules and discovering endpoints.\n *\n * Iterates through all modules, controllers, and endpoints,\n * extracting OpenAPI metadata from decorators.\n */\n@Injectable()\nexport class EndpointScannerService {\n private readonly logger = inject(Logger, {\n context: EndpointScannerService.name,\n })\n\n private readonly metadataExtractor = inject(MetadataExtractorService)\n\n /**\n * Scans all loaded modules and discovers endpoints.\n *\n * @param modules - Map of loaded modules from NaviosApplication\n * @returns Array of discovered endpoints\n */\n scan(modules: Map<string, ModuleMetadata>): DiscoveredEndpoint[] {\n const endpoints: DiscoveredEndpoint[] = []\n\n for (const [moduleName, moduleMetadata] of modules) {\n if (\n !moduleMetadata.controllers ||\n moduleMetadata.controllers.size === 0\n ) {\n continue\n }\n\n this.logger.debug(`Scanning module: ${moduleName}`)\n\n for (const controllerClass of moduleMetadata.controllers) {\n const controllerMeta = extractControllerMetadata(controllerClass)\n const controllerEndpoints = this.scanController(\n moduleMetadata,\n controllerClass,\n controllerMeta,\n )\n endpoints.push(...controllerEndpoints)\n }\n }\n\n this.logger.debug(`Discovered ${endpoints.length} endpoints`)\n return endpoints\n }\n\n /**\n * Scans a controller and returns its endpoints\n */\n private scanController(\n module: ModuleMetadata,\n controllerClass: any,\n controllerMeta: ControllerMetadata,\n ): DiscoveredEndpoint[] {\n const endpoints: DiscoveredEndpoint[] = []\n\n for (const handler of controllerMeta.endpoints) {\n // Skip endpoints without config (non-builder endpoints)\n if (!handler.config) {\n continue\n }\n\n const openApiMetadata = this.metadataExtractor.extract(\n controllerMeta,\n handler,\n )\n\n // Skip excluded endpoints\n if (openApiMetadata.excluded) {\n this.logger.debug(`Skipping excluded endpoint: ${handler.classMethod}`)\n continue\n }\n\n endpoints.push({\n module,\n controllerClass,\n controller: controllerMeta,\n handler,\n config: handler.config as EndpointOptions | BaseEndpointOptions,\n openApiMetadata,\n })\n }\n\n return endpoints\n }\n}\n","import type { ZodType } from 'zod/v4'\nimport type { oas31 } from 'zod-openapi'\n\nimport { Injectable } from '@navios/core'\nimport { createSchema } from 'zod-openapi'\n\ntype SchemaObject = oas31.SchemaObject\ntype ReferenceObject = oas31.ReferenceObject\n\n/**\n * Result of schema conversion\n */\nexport interface SchemaConversionResult {\n schema: SchemaObject | ReferenceObject\n components: Record<string, SchemaObject>\n}\n\n/**\n * Service responsible for converting Zod schemas to OpenAPI schemas.\n *\n * Uses zod-openapi library which supports Zod 4's native `.meta()` method\n * for OpenAPI-specific metadata.\n */\n@Injectable()\nexport class SchemaConverterService {\n /**\n * Converts a Zod schema to an OpenAPI schema object.\n *\n * @param schema - Zod schema to convert\n * @returns OpenAPI schema object with any component schemas\n *\n * @example\n * ```typescript\n * const userSchema = z.object({\n * id: z.string().meta({ openapi: { example: 'usr_123' } }),\n * name: z.string(),\n * })\n *\n * const result = schemaConverter.convert(userSchema)\n * // { schema: { type: 'object', properties: { ... } }, components: {} }\n * ```\n */\n convert(schema: ZodType): SchemaConversionResult {\n return createSchema(schema)\n }\n\n /**\n * Checks if a schema property represents a File type.\n *\n * Used for multipart form handling to convert File types to binary format.\n *\n * @param schema - Schema object to check\n * @returns true if the schema represents a file\n */\n isFileSchema(schema: SchemaObject): boolean {\n return schema.type === 'string' && schema.format === 'binary'\n }\n\n /**\n * Transforms schema properties to handle File/Blob types for multipart.\n *\n * Converts File types to OpenAPI binary format and handles arrays of files.\n *\n * @param properties - Schema properties object\n * @returns Transformed properties with file types as binary\n */\n transformFileProperties(\n properties: Record<string, SchemaObject>,\n ): Record<string, SchemaObject> {\n const result: Record<string, SchemaObject> = {}\n\n for (const [key, prop] of Object.entries(properties)) {\n if (this.isFileSchema(prop)) {\n result[key] = {\n type: 'string',\n format: 'binary',\n description: prop.description,\n }\n } else if (\n prop.type === 'array' &&\n prop.items &&\n this.isFileSchema(prop.items as SchemaObject)\n ) {\n result[key] = {\n type: 'array',\n items: { type: 'string', format: 'binary' },\n description: prop.description,\n }\n } else {\n result[key] = prop\n }\n }\n\n return result\n }\n}\n","import type {\n BaseEndpointOptions,\n EndpointOptions,\n ErrorSchemaRecord,\n} from '@navios/builder'\nimport type { HandlerMetadata } from '@navios/core'\nimport type { oas31 } from 'zod-openapi'\n\nimport {\n EndpointAdapterToken,\n inject,\n Injectable,\n MultipartAdapterToken,\n StreamAdapterToken,\n} from '@navios/core'\n\nimport type { DiscoveredEndpoint } from './endpoint-scanner.service.mjs'\n\nimport { SchemaConverterService } from './schema-converter.service.mjs'\n\ntype ContentObject = oas31.ContentObject\ntype OperationObject = oas31.OperationObject\ntype ParameterObject = oas31.ParameterObject\ntype PathItemObject = oas31.PathItemObject\ntype RequestBodyObject = oas31.RequestBodyObject\ntype ResponsesObject = oas31.ResponsesObject\ntype SchemaObject = oas31.SchemaObject\n\n/**\n * Result of path item generation\n */\nexport interface PathItemResult {\n path: string\n pathItem: PathItemObject\n}\n\n/**\n * Service responsible for building OpenAPI path items from endpoints.\n *\n * Handles URL parameter conversion, request body generation,\n * and response schema generation for different endpoint types.\n */\n@Injectable()\nexport class PathBuilderService {\n private readonly schemaConverter = inject(SchemaConverterService)\n\n /**\n * Generates an OpenAPI path item for a discovered endpoint.\n *\n * @param endpoint - Discovered endpoint with metadata\n * @returns Path string and path item object\n */\n build(endpoint: DiscoveredEndpoint): PathItemResult {\n const { config, handler, openApiMetadata } = endpoint\n\n // Convert $param to {param} format for OpenAPI\n const path = this.convertUrlParams(config.url)\n\n const operation: OperationObject = {\n tags: openApiMetadata.tags.length > 0 ? openApiMetadata.tags : undefined,\n summary: openApiMetadata.summary,\n description: openApiMetadata.description,\n operationId: openApiMetadata.operationId,\n deprecated: openApiMetadata.deprecated || undefined,\n externalDocs: openApiMetadata.externalDocs,\n security: openApiMetadata.security,\n parameters: this.buildParameters(config as EndpointOptions),\n requestBody: this.buildRequestBody(config as EndpointOptions, handler),\n responses: this.buildResponses(endpoint),\n }\n\n // Remove undefined properties\n const cleanOperation = Object.fromEntries(\n Object.entries(operation).filter(([, v]) => v !== undefined),\n ) as OperationObject\n\n return {\n path,\n pathItem: {\n [config.method.toLowerCase()]: cleanOperation,\n },\n }\n }\n\n /**\n * Converts Navios URL param format ($param) to OpenAPI format ({param})\n */\n convertUrlParams(url: string): string {\n return url.replace(/\\$(\\w+)/g, '{$1}')\n }\n\n /**\n * Extracts URL parameter names from a URL pattern\n */\n extractUrlParamNames(url: string): string[] {\n const matches = url.matchAll(/\\$(\\w+)/g)\n return Array.from(matches, (m) => m[1])\n }\n\n /**\n * Gets the endpoint type based on the adapter token\n */\n getEndpointType(\n handler: HandlerMetadata<any>,\n ): 'endpoint' | 'multipart' | 'stream' | 'unknown' {\n if (handler.adapterToken === EndpointAdapterToken) {\n return 'endpoint'\n }\n if (handler.adapterToken === MultipartAdapterToken) {\n return 'multipart'\n }\n if (handler.adapterToken === StreamAdapterToken) {\n return 'stream'\n }\n return 'unknown'\n }\n\n /**\n * Builds OpenAPI parameters from endpoint config\n */\n private buildParameters(config: EndpointOptions): ParameterObject[] {\n const params: ParameterObject[] = []\n\n // URL parameters (from $paramName in URL)\n const urlParams = this.extractUrlParamNames(config.url)\n for (const param of urlParams) {\n params.push({\n name: param,\n in: 'path',\n required: true,\n schema: { type: 'string' },\n })\n }\n\n // Query parameters (from querySchema)\n if (config.querySchema) {\n const { schema: querySchema } = this.schemaConverter.convert(\n config.querySchema,\n )\n const schemaObj = querySchema as SchemaObject\n if (schemaObj.properties) {\n for (const [name, schema] of Object.entries(schemaObj.properties)) {\n params.push({\n name,\n in: 'query',\n required: schemaObj.required?.includes(name) ?? false,\n schema: schema as SchemaObject,\n description: (schema as SchemaObject).description,\n })\n }\n }\n }\n\n return params\n }\n\n /**\n * Builds request body based on endpoint type\n */\n private buildRequestBody(\n config: EndpointOptions,\n handler: HandlerMetadata<any>,\n ): RequestBodyObject | undefined {\n const type = this.getEndpointType(handler)\n\n switch (type) {\n case 'multipart':\n return this.buildMultipartRequestBody(config)\n case 'stream':\n return undefined // Streams typically don't have request bodies\n case 'endpoint':\n default:\n return this.buildJsonRequestBody(config)\n }\n }\n\n /**\n * Builds request body for JSON endpoints\n */\n private buildJsonRequestBody(\n config: EndpointOptions,\n ): RequestBodyObject | undefined {\n if (!config.requestSchema) {\n return undefined\n }\n\n const { schema } = this.schemaConverter.convert(config.requestSchema)\n\n return {\n required: true,\n content: {\n 'application/json': {\n schema,\n },\n },\n }\n }\n\n /**\n * Builds request body for multipart endpoints\n */\n private buildMultipartRequestBody(\n config: EndpointOptions,\n ): RequestBodyObject {\n if (!config.requestSchema) {\n return {\n required: true,\n content: {\n 'multipart/form-data': {\n schema: { type: 'object' },\n },\n },\n }\n }\n\n const schema = this.schemaConverter.convert(config.requestSchema)\n .schema as SchemaObject\n\n // Transform schema properties to handle File types\n const properties = this.schemaConverter.transformFileProperties(\n (schema.properties as Record<string, SchemaObject>) || {},\n )\n\n return {\n required: true,\n content: {\n 'multipart/form-data': {\n schema: {\n type: 'object',\n properties,\n required: schema.required,\n },\n },\n },\n }\n }\n\n /**\n * Builds responses based on endpoint type\n */\n private buildResponses(endpoint: DiscoveredEndpoint): ResponsesObject {\n const { config, handler } = endpoint\n const type = this.getEndpointType(handler)\n\n switch (type) {\n case 'stream':\n return this.buildStreamResponses(endpoint)\n case 'multipart':\n case 'endpoint':\n return this.buildJsonResponses(config as EndpointOptions, handler)\n case 'unknown':\n return this.buildUnknownResponses(config)\n default:\n return this.buildUnknownResponses(config)\n }\n }\n\n /**\n * Builds error responses from errorSchema\n *\n * @param errorSchema - Optional record mapping status codes to Zod schemas\n * @returns ResponsesObject with error responses, or empty object if no errorSchema\n */\n private buildErrorResponses(\n errorSchema?: ErrorSchemaRecord,\n ): ResponsesObject {\n if (!errorSchema) {\n return {}\n }\n\n const errorResponses: ResponsesObject = {}\n\n for (const [statusCode, schema] of Object.entries(errorSchema)) {\n const { schema: convertedSchema } = this.schemaConverter.convert(schema)\n errorResponses[statusCode] = {\n description: `Error response (${statusCode})`,\n content: {\n 'application/json': {\n schema: convertedSchema,\n },\n },\n }\n }\n\n return errorResponses\n }\n\n /**\n * Builds responses for JSON endpoints\n */\n private buildJsonResponses(\n config: EndpointOptions,\n handler: HandlerMetadata<any>,\n ): ResponsesObject {\n const successCode = handler.successStatusCode?.toString() ?? '200'\n const responses: ResponsesObject = {}\n\n // Build success response\n if (!config.responseSchema) {\n responses[successCode] = {\n description: 'Successful response',\n }\n } else {\n const { schema } = this.schemaConverter.convert(config.responseSchema)\n responses[successCode] = {\n description: 'Successful response',\n content: {\n 'application/json': {\n schema,\n },\n },\n }\n }\n\n // Add error responses from errorSchema\n Object.assign(responses, this.buildErrorResponses(config.errorSchema))\n\n return responses\n }\n\n /**\n * Builds responses for stream endpoints\n */\n private buildStreamResponses(endpoint: DiscoveredEndpoint): ResponsesObject {\n const { config, openApiMetadata, handler } = endpoint\n const successCode = handler.successStatusCode?.toString() ?? '200'\n\n const contentType =\n openApiMetadata.stream?.contentType ?? 'application/octet-stream'\n const description = openApiMetadata.stream?.description ?? 'Stream response'\n\n const content: ContentObject = this.getStreamContent(contentType)\n\n const responses: ResponsesObject = {\n [successCode]: {\n description,\n content,\n },\n }\n\n // Add error responses from errorSchema\n Object.assign(responses, this.buildErrorResponses(config.errorSchema))\n\n return responses\n }\n\n /**\n * Builds responses for unknown endpoint types.\n * Unknown types have no success response but can have error responses.\n */\n private buildUnknownResponses(\n config: EndpointOptions | BaseEndpointOptions,\n ): ResponsesObject {\n // Only include error responses, no success response\n return this.buildErrorResponses(config.errorSchema)\n }\n\n /**\n * Gets content object for different stream types\n */\n private getStreamContent(contentType: string): ContentObject {\n switch (contentType) {\n case 'text/event-stream':\n return {\n 'text/event-stream': {\n schema: {\n type: 'string',\n description: 'Server-Sent Events stream',\n },\n },\n }\n\n case 'application/octet-stream':\n return {\n 'application/octet-stream': {\n schema: {\n type: 'string',\n format: 'binary',\n description: 'Binary file download',\n },\n },\n }\n\n case 'application/json':\n return {\n 'application/json': {\n schema: {\n type: 'string',\n description: 'Newline-delimited JSON stream',\n },\n },\n }\n\n default:\n return {\n [contentType]: {\n schema: { type: 'string', format: 'binary' },\n },\n }\n }\n }\n}\n","import type { ModuleMetadata } from '@navios/core'\nimport type { oas31 } from 'zod-openapi'\n\nimport { inject, Injectable, Logger } from '@navios/core'\n\nimport type { DiscoveredEndpoint } from './endpoint-scanner.service.mjs'\n\nimport { EndpointScannerService } from './endpoint-scanner.service.mjs'\nimport { PathBuilderService } from './path-builder.service.mjs'\n\ntype OpenAPIObject = oas31.OpenAPIObject\ntype PathsObject = oas31.PathsObject\ntype SecuritySchemeObject = oas31.SecuritySchemeObject\ntype TagObject = oas31.TagObject\n\n/**\n * Options for generating the OpenAPI document\n */\nexport interface OpenApiGeneratorOptions {\n /**\n * OpenAPI document info\n */\n info: {\n title: string\n version: string\n description?: string\n termsOfService?: string\n contact?: {\n name?: string\n url?: string\n email?: string\n }\n license?: {\n name: string\n url?: string\n }\n }\n\n /**\n * External documentation\n */\n externalDocs?: {\n url: string\n description?: string\n }\n\n /**\n * Server definitions\n */\n servers?: Array<{\n url: string\n description?: string\n variables?: Record<\n string,\n {\n default: string\n enum?: string[]\n description?: string\n }\n >\n }>\n\n /**\n * Security scheme definitions\n */\n securitySchemes?: Record<string, SecuritySchemeObject>\n\n /**\n * Global security requirements\n */\n security?: Array<Record<string, string[]>>\n\n /**\n * Tag definitions with descriptions\n */\n tags?: TagObject[]\n}\n\n/**\n * Service responsible for generating the complete OpenAPI document.\n *\n * Orchestrates endpoint discovery, path generation, and document assembly.\n */\n@Injectable()\nexport class OpenApiGeneratorService {\n private readonly logger = inject(Logger, {\n context: OpenApiGeneratorService.name,\n })\n\n private readonly scanner = inject(EndpointScannerService)\n private readonly pathBuilder = inject(PathBuilderService)\n\n /**\n * Generates an OpenAPI document from loaded modules.\n *\n * @param modules - Map of loaded modules\n * @param options - OpenAPI generation options\n * @returns Complete OpenAPI document\n */\n generate(\n modules: Map<string, ModuleMetadata>,\n options: OpenApiGeneratorOptions,\n ): OpenAPIObject {\n this.logger.debug('Generating OpenAPI document')\n\n // Discover all endpoints\n const endpoints = this.scanner.scan(modules)\n\n // Generate paths\n const paths = this.buildPaths(endpoints)\n\n // Collect unique tags from endpoints\n const discoveredTags = this.collectTags(endpoints)\n\n // Merge discovered tags with configured tags\n const tags = this.mergeTags(discoveredTags, options.tags)\n\n // Build the OpenAPI document\n const document: OpenAPIObject = {\n openapi: '3.1.0',\n info: options.info,\n paths,\n }\n\n // Add optional fields\n if (options.servers && options.servers.length > 0) {\n document.servers = options.servers\n }\n\n if (options.externalDocs) {\n document.externalDocs = options.externalDocs\n }\n\n if (tags.length > 0) {\n document.tags = tags\n }\n\n if (options.security) {\n document.security = options.security\n }\n\n if (options.securitySchemes) {\n document.components = {\n ...document.components,\n securitySchemes: options.securitySchemes,\n }\n }\n\n this.logger.debug(\n `Generated OpenAPI document with ${Object.keys(paths).length} paths`,\n )\n\n return document\n }\n\n /**\n * Builds paths object from discovered endpoints\n */\n private buildPaths(endpoints: DiscoveredEndpoint[]): PathsObject {\n const paths: PathsObject = {}\n\n for (const endpoint of endpoints) {\n const { path, pathItem } = this.pathBuilder.build(endpoint)\n\n // Merge with existing path if methods differ\n if (paths[path]) {\n paths[path] = {\n ...paths[path],\n ...pathItem,\n }\n } else {\n paths[path] = pathItem\n }\n }\n\n return paths\n }\n\n /**\n * Collects unique tags from endpoints\n */\n private collectTags(endpoints: DiscoveredEndpoint[]): Set<string> {\n const tags = new Set<string>()\n\n for (const endpoint of endpoints) {\n for (const tag of endpoint.openApiMetadata.tags) {\n tags.add(tag)\n }\n }\n\n return tags\n }\n\n /**\n * Merges discovered tags with configured tags\n */\n private mergeTags(\n discoveredTags: Set<string>,\n configuredTags?: TagObject[],\n ): TagObject[] {\n const tagMap = new Map<string, TagObject>()\n\n // Add configured tags first (they have descriptions)\n if (configuredTags) {\n for (const tag of configuredTags) {\n tagMap.set(tag.name, tag)\n }\n }\n\n // Add discovered tags that aren't already configured\n for (const tagName of discoveredTags) {\n if (!tagMap.has(tagName)) {\n tagMap.set(tagName, { name: tagName })\n }\n }\n\n return Array.from(tagMap.values())\n }\n}\n"],"mappings":";;;;;;;mCAKA,MAAaA,cAAcC,OAAOC,IAAI,qBAAA;yCAGtC,MAAaC,oBAAoBF,OAAOC,IAAI,2BAAA;uCAG5C,MAAaE,kBAAkBH,OAAOC,IAAI,yBAAA;0CAG1C,MAAaG,qBAAqBJ,OAAOC,IAAI,4BAAA;wCAG7C,MAAaI,mBAAmBL,OAAOC,IAAI,0BAAA;uCAG3C,MAAaK,kBAAkBN,OAAOC,IAAI,yBAAA;sCAG1C,MAAaM,iBAAiBP,OAAOC,IAAI,wBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCCDxCO;AACM,IAAMQ,2BAAN,MAAMA;;;;;;;;;;IAQXC,QACEC,YACAC,SACyB;EAEzB,MAAMC,gBAAgBF,WAAWG,iBAAiBC,IAAIP,YAAAA;EAKtD,MAAMQ,aAAaJ,QAAQE,iBAAiBC,IAAIP,YAAAA;EAGhD,MAAMS,YAAYL,QAAQE,iBAAiBC,IAAIX,kBAAAA;EAS/C,MAAMc,UAAUN,QAAQE,iBAAiBC,IAAIR,gBAAAA;EAG7C,MAAMY,aAAaP,QAAQE,iBAAiBC,IAAIb,mBAAAA;EAGhD,MAAMkB,WAAWR,QAAQE,iBAAiBC,IAAIV,iBAAAA;EAG9C,MAAMgB,WAAWT,QAAQE,iBAAiBC,IAAIZ,gBAAAA;EAG9C,MAAMmB,SAASV,QAAQE,iBAAiBC,IAAIT,eAAAA;EAK5C,MAAMiB,OAAiB,EAAE;AACzB,MAAIV,eAAeW,KACjBD,MAAKE,KAAKZ,cAAcW,KAAI;AAE9B,MAAIR,YAAYQ,QAAQR,WAAWQ,SAASX,eAAeW,KACzDD,MAAKE,KAAKT,WAAWQ,KAAI;AAG3B,SAAO;GACLD;GACAL,SAASD,WAAWC,WAAWA;GAC/BQ,aAAaT,WAAWS;GACxBC,aAAaV,WAAWU;GACxBR,YAAYA,eAAeS,UAAaX,WAAWE,eAAe;GAClEU,cAAcZ,WAAWY;GACzBT,UAAUA,WAAW,CAACA,SAAS,GAAGQ;GAClCP,UAAUA,aAAa;GACvBC;GACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCC9CHU;AACM,IAAMG,yBAAN,MAAMA;;;;CACMC,kCAAgBH,qBAAQ,EACvCI,SAASF,wBAAuBG,MAClC,CAAA;CAEiBC,6CAA2BL,0BAAAA;;;;;;IAQ5CM,KAAKC,SAA4D;EAC/D,MAAMC,YAAkC,EAAE;AAE1C,OAAK,MAAM,CAACC,YAAYC,mBAAmBH,SAAS;AAClD,OACE,CAACG,eAAeC,eAChBD,eAAeC,YAAYC,SAAS,EAEpC;AAGF,QAAKV,OAAOW,MAAM,oBAAoBJ,aAAY;AAElD,QAAK,MAAMK,mBAAmBJ,eAAeC,aAAa;IACxD,MAAMI,6DAA2CD,gBAAAA;IACjD,MAAME,sBAAsB,KAAKC,eAC/BP,gBACAI,iBACAC,eAAAA;AAEFP,cAAUU,KAAI,GAAIF,oBAAAA;;;AAItB,OAAKd,OAAOW,MAAM,cAAcL,UAAUW,OAAO,YAAW;AAC5D,SAAOX;;;;IAMT,eACEY,UACAN,iBACAC,gBACsB;EACtB,MAAMP,YAAkC,EAAE;AAE1C,OAAK,MAAMa,WAAWN,eAAeP,WAAW;AAE9C,OAAI,CAACa,QAAQC,OACX;GAGF,MAAMC,kBAAkB,KAAKlB,kBAAkBmB,QAC7CT,gBACAM,QAAAA;AAIF,OAAIE,gBAAgBE,UAAU;AAC5B,SAAKvB,OAAOW,MAAM,+BAA+BQ,QAAQK,cAAa;AACtE;;AAGFlB,aAAUU,KAAK;IACbE;IACAN;IACAa,YAAYZ;IACZM;IACAC,QAAQD,QAAQC;IAChBC;IACF,CAAA;;AAGF,SAAOf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCClGVoB;AACM,IAAME,yBAAN,MAAMA;;;;;;;;;;;;;;;;;;;;IAkBXC,QAAQC,QAAyC;AAC/C,uCAAoBA,OAAAA;;;;;;;;;IAWtBC,aAAaD,QAA+B;AAC1C,SAAOA,OAAOE,SAAS,YAAYF,OAAOG,WAAW;;;;;;;;;IAWvDC,wBACEC,YAC8B;EAC9B,MAAMC,SAAuC,EAAC;AAE9C,OAAK,MAAM,CAACC,KAAKC,SAASC,OAAOC,QAAQL,WAAAA,CACvC,KAAI,KAAKJ,aAAaO,KAAAA,CACpBF,QAAOC,OAAO;GACZL,MAAM;GACNC,QAAQ;GACRQ,aAAaH,KAAKG;GACpB;WAEAH,KAAKN,SAAS,WACdM,KAAKI,SACL,KAAKX,aAAaO,KAAKI,MAAK,CAE5BN,QAAOC,OAAO;GACZL,MAAM;GACNU,OAAO;IAAEV,MAAM;IAAUC,QAAQ;IAAS;GAC1CQ,aAAaH,KAAKG;GACpB;MAEAL,QAAOC,OAAOC;AAIlB,SAAOF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCCnDVS;AACM,IAAMI,qBAAN,MAAMA;;;;CACMC,2CAAyBF,wBAAAA;;;;;;IAQ1CG,MAAMC,UAA8C;EAClD,MAAM,EAAEC,QAAQC,SAASC,oBAAoBH;EAG7C,MAAMI,OAAO,KAAKC,iBAAiBJ,OAAOK,IAAG;EAE7C,MAAMC,YAA6B;GACjCC,MAAML,gBAAgBK,KAAKC,SAAS,IAAIN,gBAAgBK,OAAOE;GAC/DC,SAASR,gBAAgBQ;GACzBC,aAAaT,gBAAgBS;GAC7BC,aAAaV,gBAAgBU;GAC7BC,YAAYX,gBAAgBW,cAAcJ;GAC1CK,cAAcZ,gBAAgBY;GAC9BC,UAAUb,gBAAgBa;GAC1BC,YAAY,KAAKC,gBAAgBjB,OAAAA;GACjCkB,aAAa,KAAKC,iBAAiBnB,QAA2BC,QAAAA;GAC9DmB,WAAW,KAAKC,eAAetB,SAAAA;GACjC;EAGA,MAAMuB,iBAAiBC,OAAOC,YAC5BD,OAAOE,QAAQnB,UAAAA,CAAWoB,QAAQ,GAAGC,OAAOA,MAAMlB,OAAAA,CAAAA;AAGpD,SAAO;GACLN;GACAyB,UAAU,GACP5B,OAAO6B,OAAOC,aAAW,GAAKR,gBACjC;GACF;;;;IAMFlB,iBAAiBC,KAAqB;AACpC,SAAOA,IAAI0B,QAAQ,YAAY,OAAA;;;;IAMjCC,qBAAqB3B,KAAuB;EAC1C,MAAM4B,UAAU5B,IAAI6B,SAAS,WAAA;AAC7B,SAAOC,MAAMC,KAAKH,UAAUI,MAAMA,EAAE,GAAE;;;;IAMxCC,gBACErC,SACiD;AACjD,MAAIA,QAAQsC,iBAAiBjD,kCAC3B,QAAO;AAET,MAAIW,QAAQsC,iBAAiB9C,mCAC3B,QAAO;AAET,MAAIQ,QAAQsC,iBAAiB7C,gCAC3B,QAAO;AAET,SAAO;;;;IAMT,gBAAwBM,QAA4C;EAClE,MAAMwC,SAA4B,EAAE;EAGpC,MAAMC,YAAY,KAAKT,qBAAqBhC,OAAOK,IAAG;AACtD,OAAK,MAAMqC,SAASD,UAClBD,QAAOG,KAAK;GACVC,MAAMF;GACNG,IAAI;GACJC,UAAU;GACVC,QAAQ,EAAEC,MAAM,UAAS;GAC3B,CAAA;AAIF,MAAIhD,OAAOiD,aAAa;GACtB,MAAM,EAAEF,QAAQE,gBAAgB,KAAKpD,gBAAgBqD,QACnDlD,OAAOiD,YAAW;GAEpB,MAAME,YAAYF;AAClB,OAAIE,UAAUC,WACZ,MAAK,MAAM,CAACR,MAAMG,WAAWxB,OAAOE,QAAQ0B,UAAUC,WAAU,CAC9DZ,QAAOG,KAAK;IACVC;IACAC,IAAI;IACJC,UAAUK,UAAUL,UAAUO,SAAST,KAAAA,IAAS;IACxCG;IACRpC,aAAa,OAAyBA;IACxC,CAAA;;AAKN,SAAO6B;;;;IAMT,iBACExC,QACAC,SAC+B;AAG/B,UAFa,KAAKqC,gBAAgBrC,QAAAA,EAElC;GACE,KAAK,YACH,QAAO,KAAKqD,0BAA0BtD,OAAAA;GACxC,KAAK,SACH;GACF,KAAK;GACL,QACE,QAAO,KAAKuD,qBAAqBvD,OAAAA;;;;;IAOvC,qBACEA,QAC+B;AAC/B,MAAI,CAACA,OAAOwD,cACV;EAGF,MAAM,EAAET,WAAW,KAAKlD,gBAAgBqD,QAAQlD,OAAOwD,cAAa;AAEpE,SAAO;GACLV,UAAU;GACVW,SAAS,EACP,oBAAoB,EAClBV,QACF,EACF;GACF;;;;IAMF,0BACE/C,QACmB;AACnB,MAAI,CAACA,OAAOwD,cACV,QAAO;GACLV,UAAU;GACVW,SAAS,EACP,uBAAuB,EACrBV,QAAQ,EAAEC,MAAM,UAAS,EAC3B,EACF;GACF;EAGF,MAAMD,SAAS,KAAKlD,gBAAgBqD,QAAQlD,OAAOwD,cAAa,CAC7DT;EAGH,MAAMK,aAAa,KAAKvD,gBAAgB6D,wBACtC,OAAQN,cAA+C,EAAC,CAAA;AAG1D,SAAO;GACLN,UAAU;GACVW,SAAS,EACP,uBAAuB,EACrBV,QAAQ;IACNC,MAAM;IACNI;IACAN,UAAUC,OAAOD;IACnB,EACF,EACF;GACF;;;;IAMF,eAAuB/C,UAA+C;EACpE,MAAM,EAAEC,QAAQC,YAAYF;AAG5B,UAFa,KAAKuC,gBAAgBrC,QAAAA,EAElC;GACE,KAAK,SACH,QAAO,KAAK0D,qBAAqB5D,SAAAA;GACnC,KAAK;GACL,KAAK,WACH,QAAO,KAAK6D,mBAAmB5D,QAA2BC,QAAAA;GAC5D,KAAK,UACH,QAAO,KAAK4D,sBAAsB7D,OAAAA;GACpC,QACE,QAAO,KAAK6D,sBAAsB7D,OAAAA;;;;;;;;IAUxC,oBACE+D,aACiB;AACjB,MAAI,CAACA,YACH,QAAO,EAAC;EAGV,MAAMC,iBAAkC,EAAC;AAEzC,OAAK,MAAM,CAACC,YAAYlB,WAAWxB,OAAOE,QAAQsC,YAAAA,EAAc;GAC9D,MAAM,EAAEhB,QAAQmB,oBAAoB,KAAKrE,gBAAgBqD,QAAQH,OAAAA;AACjEiB,kBAAeC,cAAc;IAC3BtD,aAAa,mBAAmBsD,WAAW;IAC3CR,SAAS,EACP,oBAAoB,EAClBV,QAAQmB,iBACV,EACF;IACF;;AAGF,SAAOF;;;;IAMT,mBACEhE,QACAC,SACiB;EACjB,MAAMkE,cAAclE,QAAQmE,mBAAmBC,UAAAA,IAAc;EAC7D,MAAMjD,YAA6B,EAAC;AAGpC,MAAI,CAACpB,OAAOsE,eACVlD,WAAU+C,eAAe,EACvBxD,aAAa,uBACf;OACK;GACL,MAAM,EAAEoC,WAAW,KAAKlD,gBAAgBqD,QAAQlD,OAAOsE,eAAc;AACrElD,aAAU+C,eAAe;IACvBxD,aAAa;IACb8C,SAAS,EACP,oBAAoB,EAClBV,QACF,EACF;IACF;;AAIFxB,SAAOgD,OAAOnD,WAAW,KAAK0C,oBAAoB9D,OAAO+D,YAAW,CAAA;AAEpE,SAAO3C;;;;IAMT,qBAA6BrB,UAA+C;EAC1E,MAAM,EAAEC,QAAQE,iBAAiBD,YAAYF;EAC7C,MAAMoE,cAAclE,QAAQmE,mBAAmBC,UAAAA,IAAc;EAE7D,MAAMG,cACJtE,gBAAgBuE,QAAQD,eAAe;EACzC,MAAM7D,cAAcT,gBAAgBuE,QAAQ9D,eAAe;EAE3D,MAAM8C,UAAyB,KAAKiB,iBAAiBF,YAAAA;EAErD,MAAMpD,YAA6B,GAChC+C,cAAc;GACbxD;GACA8C;GACF,EACF;AAGAlC,SAAOgD,OAAOnD,WAAW,KAAK0C,oBAAoB9D,OAAO+D,YAAW,CAAA;AAEpE,SAAO3C;;;;;IAOT,sBACEpB,QACiB;AAEjB,SAAO,KAAK8D,oBAAoB9D,OAAO+D,YAAW;;;;IAMpD,iBAAyBS,aAAoC;AAC3D,UAAQA,aAAR;GACE,KAAK,oBACH,QAAO,EACL,qBAAqB,EACnBzB,QAAQ;IACNC,MAAM;IACNrC,aAAa;IACf,EACF,EACF;GAEF,KAAK,2BACH,QAAO,EACL,4BAA4B,EAC1BoC,QAAQ;IACNC,MAAM;IACN2B,QAAQ;IACRhE,aAAa;IACf,EACF,EACF;GAEF,KAAK,mBACH,QAAO,EACL,oBAAoB,EAClBoC,QAAQ;IACNC,MAAM;IACNrC,aAAa;IACf,EACF,EACF;GAEF,QACE,QAAO,GACJ6D,cAAc,EACbzB,QAAQ;IAAEC,MAAM;IAAU2B,QAAQ;IAAS,EAC7C,EACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCC3TPE;AACM,IAAMI,0BAAN,MAAMA;;;;CACMC,kCAAgBJ,qBAAQ,EACvCK,SAASF,yBAAwBG,MACnC,CAAA;CAEiBC,mCAAiBN,wBAAAA;CACjBO,uCAAqBN,oBAAAA;;;;;;;IAStCO,SACEC,SACAC,SACe;AACf,OAAKP,OAAOQ,MAAM,8BAAA;EAGlB,MAAMC,YAAY,KAAKN,QAAQO,KAAKJ,QAAAA;EAGpC,MAAMK,QAAQ,KAAKC,WAAWH,UAAAA;EAG9B,MAAMI,iBAAiB,KAAKC,YAAYL,UAAAA;EAGxC,MAAMM,OAAO,KAAKC,UAAUH,gBAAgBN,QAAQQ,KAAI;EAGxD,MAAME,WAA0B;GAC9BC,SAAS;GACTC,MAAMZ,QAAQY;GACdR;GACF;AAGA,MAAIJ,QAAQa,WAAWb,QAAQa,QAAQC,SAAS,EAC9CJ,UAASG,UAAUb,QAAQa;AAG7B,MAAIb,QAAQe,aACVL,UAASK,eAAef,QAAQe;AAGlC,MAAIP,KAAKM,SAAS,EAChBJ,UAASF,OAAOA;AAGlB,MAAIR,QAAQgB,SACVN,UAASM,WAAWhB,QAAQgB;AAG9B,MAAIhB,QAAQiB,gBACVP,UAASQ,aAAa;GACpB,GAAGR,SAASQ;GACZD,iBAAiBjB,QAAQiB;GAC3B;AAGF,OAAKxB,OAAOQ,MACV,mCAAmCkB,OAAOC,KAAKhB,MAAAA,CAAOU,OAAO,QAAO;AAGtE,SAAOJ;;;;IAMT,WAAmBR,WAA8C;EAC/D,MAAME,QAAqB,EAAC;AAE5B,OAAK,MAAMiB,YAAYnB,WAAW;GAChC,MAAM,EAAEoB,MAAMC,aAAa,KAAK1B,YAAY2B,MAAMH,SAAAA;AAGlD,OAAIjB,MAAMkB,MACRlB,OAAMkB,QAAQ;IACZ,GAAGlB,MAAMkB;IACT,GAAGC;IACL;OAEAnB,OAAMkB,QAAQC;;AAIlB,SAAOnB;;;;IAMT,YAAoBF,WAA8C;EAChE,MAAMM,uBAAO,IAAIiB,KAAAA;AAEjB,OAAK,MAAMJ,YAAYnB,UACrB,MAAK,MAAMwB,OAAOL,SAASM,gBAAgBnB,KACzCA,MAAKoB,IAAIF,IAAAA;AAIb,SAAOlB;;;;IAMT,UACEF,gBACAuB,gBACa;EACb,MAAMC,yBAAS,IAAIC,KAAAA;AAGnB,MAAIF,eACF,MAAK,MAAMH,OAAOG,eAChBC,QAAOE,IAAIN,IAAI/B,MAAM+B,IAAAA;AAKzB,OAAK,MAAMO,WAAW3B,eACpB,KAAI,CAACwB,OAAOI,IAAID,QAAAA,CACdH,QAAOE,IAAIC,SAAS,EAAEtC,MAAMsC,SAAQ,CAAA;AAIxC,SAAOE,MAAMC,KAAKN,OAAOO,QAAM,CAAA"}
@@ -1,4 +1,4 @@
1
- import { Injectable, Logger, MultipartAdapterToken, StreamAdapterToken, extractControllerMetadata, inject } from "@navios/core";
1
+ import { EndpointAdapterToken, Injectable, Logger, MultipartAdapterToken, StreamAdapterToken, extractControllerMetadata, inject } from "@navios/core";
2
2
  import { createSchema } from "zod-openapi";
3
3
 
4
4
  //#region src/tokens/index.mts
@@ -1340,9 +1340,10 @@ var PathBuilderService = class {
1340
1340
  /**
1341
1341
  * Gets the endpoint type based on the adapter token
1342
1342
  */ getEndpointType(handler) {
1343
+ if (handler.adapterToken === EndpointAdapterToken) return "endpoint";
1343
1344
  if (handler.adapterToken === MultipartAdapterToken) return "multipart";
1344
1345
  if (handler.adapterToken === StreamAdapterToken) return "stream";
1345
- return "endpoint";
1346
+ return "unknown";
1346
1347
  }
1347
1348
  /**
1348
1349
  * Builds OpenAPI parameters from endpoint config
@@ -1413,33 +1414,64 @@ var PathBuilderService = class {
1413
1414
  switch (this.getEndpointType(handler)) {
1414
1415
  case "stream": return this.buildStreamResponses(endpoint);
1415
1416
  case "multipart":
1416
- case "endpoint":
1417
- default: return this.buildJsonResponses(config, handler);
1417
+ case "endpoint": return this.buildJsonResponses(config, handler);
1418
+ case "unknown": return this.buildUnknownResponses(config);
1419
+ default: return this.buildUnknownResponses(config);
1418
1420
  }
1419
1421
  }
1420
1422
  /**
1423
+ * Builds error responses from errorSchema
1424
+ *
1425
+ * @param errorSchema - Optional record mapping status codes to Zod schemas
1426
+ * @returns ResponsesObject with error responses, or empty object if no errorSchema
1427
+ */ buildErrorResponses(errorSchema) {
1428
+ if (!errorSchema) return {};
1429
+ const errorResponses = {};
1430
+ for (const [statusCode, schema] of Object.entries(errorSchema)) {
1431
+ const { schema: convertedSchema } = this.schemaConverter.convert(schema);
1432
+ errorResponses[statusCode] = {
1433
+ description: `Error response (${statusCode})`,
1434
+ content: { "application/json": { schema: convertedSchema } }
1435
+ };
1436
+ }
1437
+ return errorResponses;
1438
+ }
1439
+ /**
1421
1440
  * Builds responses for JSON endpoints
1422
1441
  */ buildJsonResponses(config, handler) {
1423
1442
  const successCode = handler.successStatusCode?.toString() ?? "200";
1424
- if (!config.responseSchema) return { [successCode]: { description: "Successful response" } };
1425
- const { schema } = this.schemaConverter.convert(config.responseSchema);
1426
- return { [successCode]: {
1427
- description: "Successful response",
1428
- content: { "application/json": { schema } }
1429
- } };
1443
+ const responses = {};
1444
+ if (!config.responseSchema) responses[successCode] = { description: "Successful response" };
1445
+ else {
1446
+ const { schema } = this.schemaConverter.convert(config.responseSchema);
1447
+ responses[successCode] = {
1448
+ description: "Successful response",
1449
+ content: { "application/json": { schema } }
1450
+ };
1451
+ }
1452
+ Object.assign(responses, this.buildErrorResponses(config.errorSchema));
1453
+ return responses;
1430
1454
  }
1431
1455
  /**
1432
1456
  * Builds responses for stream endpoints
1433
1457
  */ buildStreamResponses(endpoint) {
1434
- const { openApiMetadata, handler } = endpoint;
1458
+ const { config, openApiMetadata, handler } = endpoint;
1435
1459
  const successCode = handler.successStatusCode?.toString() ?? "200";
1436
1460
  const contentType = openApiMetadata.stream?.contentType ?? "application/octet-stream";
1437
1461
  const description = openApiMetadata.stream?.description ?? "Stream response";
1438
1462
  const content = this.getStreamContent(contentType);
1439
- return { [successCode]: {
1463
+ const responses = { [successCode]: {
1440
1464
  description,
1441
1465
  content
1442
1466
  } };
1467
+ Object.assign(responses, this.buildErrorResponses(config.errorSchema));
1468
+ return responses;
1469
+ }
1470
+ /**
1471
+ * Builds responses for unknown endpoint types.
1472
+ * Unknown types have no success response but can have error responses.
1473
+ */ buildUnknownResponses(config) {
1474
+ return this.buildErrorResponses(config.errorSchema);
1443
1475
  }
1444
1476
  /**
1445
1477
  * Gets content object for different stream types
@@ -1822,4 +1854,4 @@ var OpenApiGeneratorService = class {
1822
1854
 
1823
1855
  //#endregion
1824
1856
  export { _MetadataExtractorService as a, ApiOperationToken as c, ApiSummaryToken as d, ApiTagToken as f, _EndpointScannerService as i, ApiSecurityToken as l, _PathBuilderService as n, ApiDeprecatedToken as o, _SchemaConverterService as r, ApiExcludeToken as s, _OpenApiGeneratorService as t, ApiStreamToken as u };
1825
- //# sourceMappingURL=services-MFCyRMd8.mjs.map
1857
+ //# sourceMappingURL=services-B7UR1D1X.mjs.map