@navios/openapi 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/LICENSE +8 -0
  2. package/README.md +260 -0
  3. package/dist/src/__tests__/decorators.spec.d.mts +2 -0
  4. package/dist/src/__tests__/decorators.spec.d.mts.map +1 -0
  5. package/dist/src/__tests__/metadata.spec.d.mts +2 -0
  6. package/dist/src/__tests__/metadata.spec.d.mts.map +1 -0
  7. package/dist/src/__tests__/services.spec.d.mts +2 -0
  8. package/dist/src/__tests__/services.spec.d.mts.map +1 -0
  9. package/dist/src/decorators/api-deprecated.decorator.d.mts +33 -0
  10. package/dist/src/decorators/api-deprecated.decorator.d.mts.map +1 -0
  11. package/dist/src/decorators/api-exclude.decorator.d.mts +26 -0
  12. package/dist/src/decorators/api-exclude.decorator.d.mts.map +1 -0
  13. package/dist/src/decorators/api-operation.decorator.d.mts +58 -0
  14. package/dist/src/decorators/api-operation.decorator.d.mts.map +1 -0
  15. package/dist/src/decorators/api-security.decorator.d.mts +36 -0
  16. package/dist/src/decorators/api-security.decorator.d.mts.map +1 -0
  17. package/dist/src/decorators/api-stream.decorator.d.mts +50 -0
  18. package/dist/src/decorators/api-stream.decorator.d.mts.map +1 -0
  19. package/dist/src/decorators/api-summary.decorator.d.mts +24 -0
  20. package/dist/src/decorators/api-summary.decorator.d.mts.map +1 -0
  21. package/dist/src/decorators/api-tag.decorator.d.mts +42 -0
  22. package/dist/src/decorators/api-tag.decorator.d.mts.map +1 -0
  23. package/dist/src/decorators/index.d.mts +8 -0
  24. package/dist/src/decorators/index.d.mts.map +1 -0
  25. package/dist/src/index.d.mts +5 -0
  26. package/dist/src/index.d.mts.map +1 -0
  27. package/dist/src/metadata/index.d.mts +2 -0
  28. package/dist/src/metadata/index.d.mts.map +1 -0
  29. package/dist/src/metadata/openapi.metadata.d.mts +30 -0
  30. package/dist/src/metadata/openapi.metadata.d.mts.map +1 -0
  31. package/dist/src/services/endpoint-scanner.service.d.mts +42 -0
  32. package/dist/src/services/endpoint-scanner.service.d.mts.map +1 -0
  33. package/dist/src/services/index.d.mts +6 -0
  34. package/dist/src/services/index.d.mts.map +1 -0
  35. package/dist/src/services/metadata-extractor.service.d.mts +19 -0
  36. package/dist/src/services/metadata-extractor.service.d.mts.map +1 -0
  37. package/dist/src/services/openapi-generator.service.d.mts +91 -0
  38. package/dist/src/services/openapi-generator.service.d.mts.map +1 -0
  39. package/dist/src/services/path-builder.service.d.mts +73 -0
  40. package/dist/src/services/path-builder.service.d.mts.map +1 -0
  41. package/dist/src/services/schema-converter.service.d.mts +57 -0
  42. package/dist/src/services/schema-converter.service.d.mts.map +1 -0
  43. package/dist/src/tokens/index.d.mts +18 -0
  44. package/dist/src/tokens/index.d.mts.map +1 -0
  45. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  46. package/dist/tsconfig.spec.tsbuildinfo +1 -0
  47. package/dist/tsconfig.tsbuildinfo +1 -0
  48. package/dist/tsdown.config.d.mts +3 -0
  49. package/dist/tsdown.config.d.mts.map +1 -0
  50. package/dist/vitest.config.d.mts +3 -0
  51. package/dist/vitest.config.d.mts.map +1 -0
  52. package/lib/index.cjs +2120 -0
  53. package/lib/index.cjs.map +1 -0
  54. package/lib/index.d.cts +594 -0
  55. package/lib/index.d.cts.map +1 -0
  56. package/lib/index.d.mts +594 -0
  57. package/lib/index.d.mts.map +1 -0
  58. package/lib/index.mjs +2077 -0
  59. package/lib/index.mjs.map +1 -0
  60. package/package.json +44 -0
  61. package/project.json +66 -0
  62. package/src/__tests__/decorators.spec.mts +185 -0
  63. package/src/__tests__/metadata.spec.mts +207 -0
  64. package/src/__tests__/services.spec.mts +216 -0
  65. package/src/decorators/api-deprecated.decorator.mts +45 -0
  66. package/src/decorators/api-exclude.decorator.mts +29 -0
  67. package/src/decorators/api-operation.decorator.mts +59 -0
  68. package/src/decorators/api-security.decorator.mts +44 -0
  69. package/src/decorators/api-stream.decorator.mts +55 -0
  70. package/src/decorators/api-summary.decorator.mts +33 -0
  71. package/src/decorators/api-tag.decorator.mts +51 -0
  72. package/src/decorators/index.mts +7 -0
  73. package/src/index.mts +42 -0
  74. package/src/metadata/index.mts +2 -0
  75. package/src/metadata/openapi.metadata.mts +30 -0
  76. package/src/services/endpoint-scanner.service.mts +118 -0
  77. package/src/services/index.mts +21 -0
  78. package/src/services/metadata-extractor.service.mts +91 -0
  79. package/src/services/openapi-generator.service.mts +219 -0
  80. package/src/services/path-builder.service.mts +344 -0
  81. package/src/services/schema-converter.service.mts +96 -0
  82. package/src/tokens/index.mts +24 -0
  83. package/tsconfig.json +24 -0
  84. package/tsconfig.lib.json +8 -0
  85. package/tsconfig.spec.json +12 -0
  86. package/tsdown.config.mts +35 -0
  87. package/vitest.config.mts +11 -0
@@ -0,0 +1,42 @@
1
+ import type { ControllerMetadata, HandlerMetadata, ModuleMetadata } from '@navios/core';
2
+ import type { BaseEndpointConfig } from '@navios/builder';
3
+ import type { OpenApiEndpointMetadata } from '../metadata/openapi.metadata.mjs';
4
+ /**
5
+ * Represents a discovered endpoint with all its metadata
6
+ */
7
+ export interface DiscoveredEndpoint {
8
+ /** Module metadata */
9
+ module: ModuleMetadata;
10
+ /** Controller class */
11
+ controllerClass: any;
12
+ /** Controller metadata */
13
+ controller: ControllerMetadata;
14
+ /** Handler (endpoint) metadata */
15
+ handler: HandlerMetadata<any>;
16
+ /** Endpoint configuration from @navios/builder */
17
+ config: BaseEndpointConfig;
18
+ /** Extracted OpenAPI metadata */
19
+ openApiMetadata: OpenApiEndpointMetadata;
20
+ }
21
+ /**
22
+ * Service responsible for scanning modules and discovering endpoints.
23
+ *
24
+ * Iterates through all modules, controllers, and endpoints,
25
+ * extracting OpenAPI metadata from decorators.
26
+ */
27
+ export declare class EndpointScannerService {
28
+ private readonly logger;
29
+ private readonly metadataExtractor;
30
+ /**
31
+ * Scans all loaded modules and discovers endpoints.
32
+ *
33
+ * @param modules - Map of loaded modules from NaviosApplication
34
+ * @returns Array of discovered endpoints
35
+ */
36
+ scan(modules: Map<string, ModuleMetadata>): DiscoveredEndpoint[];
37
+ /**
38
+ * Scans a controller and returns its endpoints
39
+ */
40
+ private scanController;
41
+ }
42
+ //# sourceMappingURL=endpoint-scanner.service.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-scanner.service.d.mts","sourceRoot":"","sources":["../../../src/services/endpoint-scanner.service.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,cAAc,EACf,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAIzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAI/E;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sBAAsB;IACtB,MAAM,EAAE,cAAc,CAAA;IACtB,uBAAuB;IACvB,eAAe,EAAE,GAAG,CAAA;IACpB,0BAA0B;IAC1B,UAAU,EAAE,kBAAkB,CAAA;IAC9B,kCAAkC;IAClC,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,CAAA;IAC7B,kDAAkD;IAClD,MAAM,EAAE,kBAAkB,CAAA;IAC1B,iCAAiC;IACjC,eAAe,EAAE,uBAAuB,CAAA;CACzC;AAED;;;;;GAKG;AACH,qBACa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAErB;IAEF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmC;IAErE;;;;;OAKG;IACH,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,kBAAkB,EAAE;IAyBhE;;OAEG;IACH,OAAO,CAAC,cAAc;CAsCvB"}
@@ -0,0 +1,6 @@
1
+ export { EndpointScannerService, type DiscoveredEndpoint, } from './endpoint-scanner.service.mjs';
2
+ export { MetadataExtractorService } from './metadata-extractor.service.mjs';
3
+ export { SchemaConverterService, type SchemaConversionResult, } from './schema-converter.service.mjs';
4
+ export { PathBuilderService, type PathItemResult, } from './path-builder.service.mjs';
5
+ export { OpenApiGeneratorService, type OpenApiGeneratorOptions, } from './openapi-generator.service.mjs';
6
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/services/index.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,KAAK,kBAAkB,GACxB,MAAM,gCAAgC,CAAA;AAEvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAA;AAE3E,OAAO,EACL,sBAAsB,EACtB,KAAK,sBAAsB,GAC5B,MAAM,gCAAgC,CAAA;AAEvC,OAAO,EACL,kBAAkB,EAClB,KAAK,cAAc,GACpB,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EACL,uBAAuB,EACvB,KAAK,uBAAuB,GAC7B,MAAM,iCAAiC,CAAA"}
@@ -0,0 +1,19 @@
1
+ import type { ControllerMetadata, HandlerMetadata } from '@navios/core';
2
+ import type { OpenApiEndpointMetadata } from '../metadata/openapi.metadata.mjs';
3
+ /**
4
+ * Service responsible for extracting OpenAPI metadata from decorators.
5
+ *
6
+ * Merges controller-level and handler-level metadata to produce
7
+ * a complete OpenAPI metadata object for each endpoint.
8
+ */
9
+ export declare class MetadataExtractorService {
10
+ /**
11
+ * Extracts and merges OpenAPI metadata from controller and handler.
12
+ *
13
+ * @param controller - Controller metadata
14
+ * @param handler - Handler metadata
15
+ * @returns Merged OpenAPI metadata
16
+ */
17
+ extract(controller: ControllerMetadata, handler: HandlerMetadata<any>): OpenApiEndpointMetadata;
18
+ }
19
+ //# sourceMappingURL=metadata-extractor.service.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-extractor.service.d.mts","sourceRoot":"","sources":["../../../src/services/metadata-extractor.service.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAIvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAY/E;;;;;GAKG;AACH,qBACa,wBAAwB;IACnC;;;;;;OAMG;IACH,OAAO,CACL,UAAU,EAAE,kBAAkB,EAC9B,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,GAC5B,uBAAuB;CAwD3B"}
@@ -0,0 +1,91 @@
1
+ import type { ModuleMetadata } from '@navios/core';
2
+ import type { oas31 } from 'zod-openapi';
3
+ type OpenAPIObject = oas31.OpenAPIObject;
4
+ type SecuritySchemeObject = oas31.SecuritySchemeObject;
5
+ type TagObject = oas31.TagObject;
6
+ /**
7
+ * Options for generating the OpenAPI document
8
+ */
9
+ export interface OpenApiGeneratorOptions {
10
+ /**
11
+ * OpenAPI document info
12
+ */
13
+ info: {
14
+ title: string;
15
+ version: string;
16
+ description?: string;
17
+ termsOfService?: string;
18
+ contact?: {
19
+ name?: string;
20
+ url?: string;
21
+ email?: string;
22
+ };
23
+ license?: {
24
+ name: string;
25
+ url?: string;
26
+ };
27
+ };
28
+ /**
29
+ * External documentation
30
+ */
31
+ externalDocs?: {
32
+ url: string;
33
+ description?: string;
34
+ };
35
+ /**
36
+ * Server definitions
37
+ */
38
+ servers?: Array<{
39
+ url: string;
40
+ description?: string;
41
+ variables?: Record<string, {
42
+ default: string;
43
+ enum?: string[];
44
+ description?: string;
45
+ }>;
46
+ }>;
47
+ /**
48
+ * Security scheme definitions
49
+ */
50
+ securitySchemes?: Record<string, SecuritySchemeObject>;
51
+ /**
52
+ * Global security requirements
53
+ */
54
+ security?: Array<Record<string, string[]>>;
55
+ /**
56
+ * Tag definitions with descriptions
57
+ */
58
+ tags?: TagObject[];
59
+ }
60
+ /**
61
+ * Service responsible for generating the complete OpenAPI document.
62
+ *
63
+ * Orchestrates endpoint discovery, path generation, and document assembly.
64
+ */
65
+ export declare class OpenApiGeneratorService {
66
+ private readonly logger;
67
+ private readonly scanner;
68
+ private readonly pathBuilder;
69
+ /**
70
+ * Generates an OpenAPI document from loaded modules.
71
+ *
72
+ * @param modules - Map of loaded modules
73
+ * @param options - OpenAPI generation options
74
+ * @returns Complete OpenAPI document
75
+ */
76
+ generate(modules: Map<string, ModuleMetadata>, options: OpenApiGeneratorOptions): OpenAPIObject;
77
+ /**
78
+ * Builds paths object from discovered endpoints
79
+ */
80
+ private buildPaths;
81
+ /**
82
+ * Collects unique tags from endpoints
83
+ */
84
+ private collectTags;
85
+ /**
86
+ * Merges discovered tags with configured tags
87
+ */
88
+ private mergeTags;
89
+ }
90
+ export {};
91
+ //# sourceMappingURL=openapi-generator.service.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi-generator.service.d.mts","sourceRoot":"","sources":["../../../src/services/openapi-generator.service.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AASxC,KAAK,aAAa,GAAG,KAAK,CAAC,aAAa,CAAA;AAExC,KAAK,oBAAoB,GAAG,KAAK,CAAC,oBAAoB,CAAA;AACtD,KAAK,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;AAEhC;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,EAAE,MAAM,CAAA;YACb,GAAG,CAAC,EAAE,MAAM,CAAA;YACZ,KAAK,CAAC,EAAE,MAAM,CAAA;SACf,CAAA;QACD,OAAO,CAAC,EAAE;YACR,IAAI,EAAE,MAAM,CAAA;YACZ,GAAG,CAAC,EAAE,MAAM,CAAA;SACb,CAAA;KACF,CAAA;IAED;;OAEG;IACH,YAAY,CAAC,EAAE;QACb,GAAG,EAAE,MAAM,CAAA;QACX,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;IAED;;OAEG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,GAAG,EAAE,MAAM,CAAA;QACX,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,SAAS,CAAC,EAAE,MAAM,CAChB,MAAM,EACN;YACE,OAAO,EAAE,MAAM,CAAA;YACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;YACf,WAAW,CAAC,EAAE,MAAM,CAAA;SACrB,CACF,CAAA;KACF,CAAC,CAAA;IAEF;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;IAEtD;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;IAE1C;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,EAAE,CAAA;CACnB;AAED;;;;GAIG;AACH,qBACa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAErB;IAEF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IAEzD;;;;;;OAMG;IACH,QAAQ,CACN,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,EACpC,OAAO,EAAE,uBAAuB,GAC/B,aAAa;IAqDhB;;OAEG;IACH,OAAO,CAAC,UAAU;IAoBlB;;OAEG;IACH,OAAO,CAAC,WAAW;IAYnB;;OAEG;IACH,OAAO,CAAC,SAAS;CAsBlB"}
@@ -0,0 +1,73 @@
1
+ import type { HandlerMetadata } from '@navios/core';
2
+ import type { oas31 } from 'zod-openapi';
3
+ import type { DiscoveredEndpoint } from './endpoint-scanner.service.mjs';
4
+ type PathItemObject = oas31.PathItemObject;
5
+ /**
6
+ * Result of path item generation
7
+ */
8
+ export interface PathItemResult {
9
+ path: string;
10
+ pathItem: PathItemObject;
11
+ }
12
+ /**
13
+ * Service responsible for building OpenAPI path items from endpoints.
14
+ *
15
+ * Handles URL parameter conversion, request body generation,
16
+ * and response schema generation for different endpoint types.
17
+ */
18
+ export declare class PathBuilderService {
19
+ private readonly schemaConverter;
20
+ /**
21
+ * Generates an OpenAPI path item for a discovered endpoint.
22
+ *
23
+ * @param endpoint - Discovered endpoint with metadata
24
+ * @returns Path string and path item object
25
+ */
26
+ build(endpoint: DiscoveredEndpoint): PathItemResult;
27
+ /**
28
+ * Converts Navios URL param format ($param) to OpenAPI format ({param})
29
+ */
30
+ convertUrlParams(url: string): string;
31
+ /**
32
+ * Extracts URL parameter names from a URL pattern
33
+ */
34
+ extractUrlParamNames(url: string): string[];
35
+ /**
36
+ * Gets the endpoint type based on the adapter token
37
+ */
38
+ getEndpointType(handler: HandlerMetadata<any>): 'endpoint' | 'multipart' | 'stream';
39
+ /**
40
+ * Builds OpenAPI parameters from endpoint config
41
+ */
42
+ private buildParameters;
43
+ /**
44
+ * Builds request body based on endpoint type
45
+ */
46
+ private buildRequestBody;
47
+ /**
48
+ * Builds request body for JSON endpoints
49
+ */
50
+ private buildJsonRequestBody;
51
+ /**
52
+ * Builds request body for multipart endpoints
53
+ */
54
+ private buildMultipartRequestBody;
55
+ /**
56
+ * Builds responses based on endpoint type
57
+ */
58
+ private buildResponses;
59
+ /**
60
+ * Builds responses for JSON endpoints
61
+ */
62
+ private buildJsonResponses;
63
+ /**
64
+ * Builds responses for stream endpoints
65
+ */
66
+ private buildStreamResponses;
67
+ /**
68
+ * Gets content object for different stream types
69
+ */
70
+ private getStreamContent;
71
+ }
72
+ export {};
73
+ //# sourceMappingURL=path-builder.service.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-builder.service.d.mts","sourceRoot":"","sources":["../../../src/services/path-builder.service.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAUxC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAOxE,KAAK,cAAc,GAAG,KAAK,CAAC,cAAc,CAAA;AAK1C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,cAAc,CAAA;CACzB;AAED;;;;;GAKG;AACH,qBACa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiC;IAEjE;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,EAAE,kBAAkB,GAAG,cAAc;IAgCnD;;OAEG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIrC;;OAEG;IACH,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAK3C;;OAEG;IACH,eAAe,CACb,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,GAC5B,UAAU,GAAG,WAAW,GAAG,QAAQ;IAUtC;;OAEG;IACH,OAAO,CAAC,eAAe;IAoCvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmB5B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAmCjC;;OAEG;IACH,OAAO,CAAC,cAAc;IActB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4B1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmB5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAyCzB"}
@@ -0,0 +1,57 @@
1
+ import type { ZodType } from 'zod/v4';
2
+ import type { oas31 } from 'zod-openapi';
3
+ type SchemaObject = oas31.SchemaObject;
4
+ type ReferenceObject = oas31.ReferenceObject;
5
+ /**
6
+ * Result of schema conversion
7
+ */
8
+ export interface SchemaConversionResult {
9
+ schema: SchemaObject | ReferenceObject;
10
+ components: Record<string, SchemaObject>;
11
+ }
12
+ /**
13
+ * Service responsible for converting Zod schemas to OpenAPI schemas.
14
+ *
15
+ * Uses zod-openapi library which supports Zod 4's native `.meta()` method
16
+ * for OpenAPI-specific metadata.
17
+ */
18
+ export declare class SchemaConverterService {
19
+ /**
20
+ * Converts a Zod schema to an OpenAPI schema object.
21
+ *
22
+ * @param schema - Zod schema to convert
23
+ * @returns OpenAPI schema object with any component schemas
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const userSchema = z.object({
28
+ * id: z.string().meta({ openapi: { example: 'usr_123' } }),
29
+ * name: z.string(),
30
+ * })
31
+ *
32
+ * const result = schemaConverter.convert(userSchema)
33
+ * // { schema: { type: 'object', properties: { ... } }, components: {} }
34
+ * ```
35
+ */
36
+ convert(schema: ZodType): SchemaConversionResult;
37
+ /**
38
+ * Checks if a schema property represents a File type.
39
+ *
40
+ * Used for multipart form handling to convert File types to binary format.
41
+ *
42
+ * @param schema - Schema object to check
43
+ * @returns true if the schema represents a file
44
+ */
45
+ isFileSchema(schema: SchemaObject): boolean;
46
+ /**
47
+ * Transforms schema properties to handle File/Blob types for multipart.
48
+ *
49
+ * Converts File types to OpenAPI binary format and handles arrays of files.
50
+ *
51
+ * @param properties - Schema properties object
52
+ * @returns Transformed properties with file types as binary
53
+ */
54
+ transformFileProperties(properties: Record<string, SchemaObject>): Record<string, SchemaObject>;
55
+ }
56
+ export {};
57
+ //# sourceMappingURL=schema-converter.service.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-converter.service.d.mts","sourceRoot":"","sources":["../../../src/services/schema-converter.service.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAKxC,KAAK,YAAY,GAAG,KAAK,CAAC,YAAY,CAAA;AACtC,KAAK,eAAe,GAAG,KAAK,CAAC,eAAe,CAAA;AAE5C;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,YAAY,GAAG,eAAe,CAAA;IACtC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CACzC;AAED;;;;;GAKG;AACH,qBACa,sBAAsB;IACjC;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,sBAAsB;IAIhD;;;;;;;OAOG;IACH,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO;IAI3C;;;;;;;OAOG;IACH,uBAAuB,CACrB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GACvC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;CA2BhC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Tokens for OpenAPI metadata attributes
3
+ */
4
+ /** Token for @ApiTag decorator */
5
+ export declare const ApiTagToken: unique symbol;
6
+ /** Token for @ApiOperation decorator */
7
+ export declare const ApiOperationToken: unique symbol;
8
+ /** Token for @ApiSummary decorator */
9
+ export declare const ApiSummaryToken: unique symbol;
10
+ /** Token for @ApiDeprecated decorator */
11
+ export declare const ApiDeprecatedToken: unique symbol;
12
+ /** Token for @ApiSecurity decorator */
13
+ export declare const ApiSecurityToken: unique symbol;
14
+ /** Token for @ApiExclude decorator */
15
+ export declare const ApiExcludeToken: unique symbol;
16
+ /** Token for @ApiStream decorator */
17
+ export declare const ApiStreamToken: unique symbol;
18
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/tokens/index.mts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,kCAAkC;AAClC,eAAO,MAAM,WAAW,eAAmC,CAAA;AAE3D,wCAAwC;AACxC,eAAO,MAAM,iBAAiB,eAAyC,CAAA;AAEvE,sCAAsC;AACtC,eAAO,MAAM,eAAe,eAAuC,CAAA;AAEnE,yCAAyC;AACzC,eAAO,MAAM,kBAAkB,eAA0C,CAAA;AAEzE,uCAAuC;AACvC,eAAO,MAAM,gBAAgB,eAAwC,CAAA;AAErE,sCAAsC;AACtC,eAAO,MAAM,eAAe,eAAuC,CAAA;AAEnE,qCAAqC;AACrC,eAAO,MAAM,cAAc,eAAsC,CAAA"}