@ampeco/public-api-mcp 0.2.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 (66) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +734 -0
  3. package/dist/build/flattener.d.ts +39 -0
  4. package/dist/build/flattener.d.ts.map +1 -0
  5. package/dist/build/flattener.js +193 -0
  6. package/dist/build/flattener.js.map +1 -0
  7. package/dist/build/index.d.ts +13 -0
  8. package/dist/build/index.d.ts.map +1 -0
  9. package/dist/build/index.js +175 -0
  10. package/dist/build/index.js.map +1 -0
  11. package/dist/build/optimizer.d.ts +32 -0
  12. package/dist/build/optimizer.d.ts.map +1 -0
  13. package/dist/build/optimizer.js +222 -0
  14. package/dist/build/optimizer.js.map +1 -0
  15. package/dist/build/parser.d.ts +35 -0
  16. package/dist/build/parser.d.ts.map +1 -0
  17. package/dist/build/parser.js +83 -0
  18. package/dist/build/parser.js.map +1 -0
  19. package/dist/build/types.d.ts +91 -0
  20. package/dist/build/types.d.ts.map +1 -0
  21. package/dist/build/types.js +5 -0
  22. package/dist/build/types.js.map +1 -0
  23. package/dist/build/zod-generator.d.ts +34 -0
  24. package/dist/build/zod-generator.d.ts.map +1 -0
  25. package/dist/build/zod-generator.js +317 -0
  26. package/dist/build/zod-generator.js.map +1 -0
  27. package/dist/cli/index.d.ts +7 -0
  28. package/dist/cli/index.d.ts.map +1 -0
  29. package/dist/cli/index.js +99 -0
  30. package/dist/cli/index.js.map +1 -0
  31. package/dist/generated/build-stats.json +7 -0
  32. package/dist/generated/endpoints.json +32181 -0
  33. package/dist/generated/schemas.d.ts +8157 -0
  34. package/dist/generated/schemas.d.ts.map +1 -0
  35. package/dist/generated/schemas.js +2726 -0
  36. package/dist/generated/schemas.js.map +1 -0
  37. package/dist/generated/schemas.ts +3171 -0
  38. package/dist/server/factory.d.ts +11 -0
  39. package/dist/server/factory.d.ts.map +1 -0
  40. package/dist/server/factory.js +450 -0
  41. package/dist/server/factory.js.map +1 -0
  42. package/dist/server/factory.test.d.ts +5 -0
  43. package/dist/server/factory.test.d.ts.map +1 -0
  44. package/dist/server/factory.test.js +77 -0
  45. package/dist/server/factory.test.js.map +1 -0
  46. package/dist/server/http.d.ts +10 -0
  47. package/dist/server/http.d.ts.map +1 -0
  48. package/dist/server/http.js +110 -0
  49. package/dist/server/http.js.map +1 -0
  50. package/dist/server/index.d.ts +8 -0
  51. package/dist/server/index.d.ts.map +1 -0
  52. package/dist/server/index.js +1502 -0
  53. package/dist/server/index.js.map +1 -0
  54. package/dist/server/loader.d.ts +10 -0
  55. package/dist/server/loader.d.ts.map +1 -0
  56. package/dist/server/loader.js +19 -0
  57. package/dist/server/loader.js.map +1 -0
  58. package/dist/server/prompts.d.ts +6 -0
  59. package/dist/server/prompts.d.ts.map +1 -0
  60. package/dist/server/prompts.js +462 -0
  61. package/dist/server/prompts.js.map +1 -0
  62. package/dist/server/stdio.d.ts +10 -0
  63. package/dist/server/stdio.d.ts.map +1 -0
  64. package/dist/server/stdio.js +25 -0
  65. package/dist/server/stdio.js.map +1 -0
  66. package/package.json +60 -0
@@ -0,0 +1,222 @@
1
+ /**
2
+ * Optimization and Minification Module
3
+ *
4
+ * This module handles:
5
+ * - Aggressive minification techniques
6
+ * - Removing redundant whitespace and empty keys
7
+ * - Using efficient property naming conventions
8
+ * - Custom abbreviations for common OpenAPI terms
9
+ *
10
+ * Target: 50-70% reduction in token count
11
+ */
12
+ /**
13
+ * Optimize an endpoint definition to reduce token count
14
+ *
15
+ * @param endpoint - Endpoint to optimize
16
+ * @returns Optimized endpoint
17
+ */
18
+ export function optimizeEndpoint(endpoint) {
19
+ return {
20
+ ...endpoint,
21
+ // Keep essential fields
22
+ path: endpoint.path,
23
+ method: endpoint.method,
24
+ operationId: endpoint.operationId,
25
+ summary: endpoint.summary,
26
+ description: optimizeDescription(endpoint.description),
27
+ parameters: endpoint.parameters ? optimizeParameters(endpoint.parameters) : undefined,
28
+ requestBody: endpoint.requestBody ? optimizeRequestBody(endpoint.requestBody) : undefined,
29
+ responses: endpoint.responses ? optimizeResponses(endpoint.responses) : undefined,
30
+ tags: endpoint.tags,
31
+ };
32
+ }
33
+ /**
34
+ * Optimize description by removing redundant whitespace
35
+ *
36
+ * @param description - Description text
37
+ * @returns Optimized description
38
+ */
39
+ function optimizeDescription(description) {
40
+ if (!description)
41
+ return undefined;
42
+ return description
43
+ .replace(/\s+/g, " ") // Replace multiple spaces with single space
44
+ .replace(/\n\s*\n/g, "\n") // Remove empty lines
45
+ .trim();
46
+ }
47
+ /**
48
+ * Optimize parameters by removing unnecessary fields
49
+ *
50
+ * @param parameters - Array of parameters
51
+ * @returns Optimized parameters
52
+ */
53
+ function optimizeParameters(parameters) {
54
+ return parameters.map((param) => {
55
+ const optimized = {
56
+ name: param.name,
57
+ in: param.in,
58
+ };
59
+ if (param.description) {
60
+ optimized.description = optimizeDescription(param.description);
61
+ }
62
+ if (param.required) {
63
+ optimized.required = true; // Only include if true
64
+ }
65
+ if (param.schema) {
66
+ optimized.schema = optimizeSchema(param.schema);
67
+ }
68
+ if (param.example !== undefined) {
69
+ optimized.example = param.example;
70
+ }
71
+ return optimized;
72
+ });
73
+ }
74
+ /**
75
+ * Optimize request body by removing unnecessary fields
76
+ *
77
+ * @param requestBody - Request body definition
78
+ * @returns Optimized request body
79
+ */
80
+ function optimizeRequestBody(requestBody) {
81
+ const optimized = {};
82
+ if (requestBody.description) {
83
+ optimized.description = optimizeDescription(requestBody.description);
84
+ }
85
+ if (requestBody.required) {
86
+ optimized.required = true;
87
+ }
88
+ if (requestBody.content) {
89
+ optimized.content = {};
90
+ for (const [mediaType, content] of Object.entries(requestBody.content)) {
91
+ optimized.content[mediaType] = optimizeMediaType(content);
92
+ }
93
+ }
94
+ return optimized;
95
+ }
96
+ /**
97
+ * Optimize media type definition
98
+ *
99
+ * @param mediaType - Media type object
100
+ * @returns Optimized media type
101
+ */
102
+ function optimizeMediaType(mediaType) {
103
+ const optimized = {};
104
+ if (mediaType.schema) {
105
+ optimized.schema = optimizeSchema(mediaType.schema);
106
+ }
107
+ if (mediaType.example !== undefined) {
108
+ optimized.example = mediaType.example;
109
+ }
110
+ if (mediaType.examples) {
111
+ optimized.examples = mediaType.examples;
112
+ }
113
+ return optimized;
114
+ }
115
+ /**
116
+ * Optimize responses by removing unnecessary fields
117
+ *
118
+ * @param responses - Response definitions
119
+ * @returns Optimized responses
120
+ */
121
+ function optimizeResponses(responses) {
122
+ const optimized = {};
123
+ for (const [statusCode, response] of Object.entries(responses)) {
124
+ optimized[statusCode] = {
125
+ description: optimizeDescription(response.description),
126
+ };
127
+ if (response.content) {
128
+ optimized[statusCode].content = {};
129
+ for (const [mediaType, content] of Object.entries(response.content)) {
130
+ optimized[statusCode].content[mediaType] = optimizeMediaType(content);
131
+ }
132
+ }
133
+ }
134
+ return optimized;
135
+ }
136
+ /**
137
+ * Optimize JSON schema by removing unnecessary fields
138
+ *
139
+ * @param schema - JSON schema
140
+ * @returns Optimized schema
141
+ */
142
+ function optimizeSchema(schema) {
143
+ if (!schema || typeof schema !== "object") {
144
+ return schema;
145
+ }
146
+ const optimized = {};
147
+ // Keep essential schema fields
148
+ const essentialFields = [
149
+ "type",
150
+ "format",
151
+ "enum",
152
+ "items",
153
+ "properties",
154
+ "required",
155
+ "additionalProperties",
156
+ "minimum",
157
+ "maximum",
158
+ "minLength",
159
+ "maxLength",
160
+ "pattern",
161
+ "minItems",
162
+ "maxItems",
163
+ "uniqueItems",
164
+ "default",
165
+ "example",
166
+ "nullable",
167
+ "oneOf",
168
+ "anyOf",
169
+ "allOf",
170
+ ];
171
+ for (const field of essentialFields) {
172
+ if (schema[field] !== undefined) {
173
+ if (field === "properties" && typeof schema[field] === "object") {
174
+ // Recursively optimize nested properties
175
+ optimized[field] = {};
176
+ for (const [propName, propSchema] of Object.entries(schema[field])) {
177
+ optimized[field][propName] = optimizeSchema(propSchema);
178
+ }
179
+ }
180
+ else if (field === "items") {
181
+ // Recursively optimize array items
182
+ optimized[field] = optimizeSchema(schema[field]);
183
+ }
184
+ else if (field === "additionalProperties" && typeof schema[field] === "object") {
185
+ // Recursively optimize additionalProperties
186
+ optimized[field] = optimizeSchema(schema[field]);
187
+ }
188
+ else if (["oneOf", "anyOf", "allOf"].includes(field) && Array.isArray(schema[field])) {
189
+ // Recursively optimize composition schemas
190
+ optimized[field] = schema[field].map((s) => optimizeSchema(s));
191
+ }
192
+ else {
193
+ optimized[field] = schema[field];
194
+ }
195
+ }
196
+ }
197
+ // Add optimized description if present
198
+ if (schema.description) {
199
+ optimized.description = optimizeDescription(schema.description);
200
+ }
201
+ return optimized;
202
+ }
203
+ /**
204
+ * Calculate size reduction statistics
205
+ *
206
+ * @param original - Original data
207
+ * @param optimized - Optimized data
208
+ * @returns Size statistics
209
+ */
210
+ export function calculateSizeReduction(original, optimized) {
211
+ const originalStr = JSON.stringify(original);
212
+ const optimizedStr = JSON.stringify(optimized);
213
+ const originalSize = originalStr.length;
214
+ const optimizedSize = optimizedStr.length;
215
+ const reductionPercent = ((originalSize - optimizedSize) / originalSize) * 100;
216
+ return {
217
+ originalSize,
218
+ optimizedSize,
219
+ reductionPercent: Math.round(reductionPercent * 100) / 100,
220
+ };
221
+ }
222
+ //# sourceMappingURL=optimizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimizer.js","sourceRoot":"","sources":["../../src/build/optimizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * OpenAPI Parsing Module with Dereferencing
3
+ *
4
+ * This module handles:
5
+ * - Loading OpenAPI specs (JSON/YAML)
6
+ * - Dereferencing all $ref pointers
7
+ * - Handling circular references
8
+ * - Creating self-contained schemas
9
+ */
10
+ /**
11
+ * Parse and dereference an OpenAPI specification
12
+ *
13
+ * @param filePath - Path to the OpenAPI specification file
14
+ * @returns Fully dereferenced OpenAPI document
15
+ */
16
+ export declare function parseAndDereference(filePath: string): Promise<any>;
17
+ /**
18
+ * Get all endpoints from the dereferenced OpenAPI document
19
+ *
20
+ * @param api - Dereferenced OpenAPI document
21
+ * @returns Array of endpoint definitions with path, method, and operation
22
+ */
23
+ export declare function extractEndpoints(api: any): Array<{
24
+ path: string;
25
+ method: string;
26
+ operation: any;
27
+ }>;
28
+ /**
29
+ * Get security schemes from the OpenAPI document
30
+ *
31
+ * @param api - OpenAPI document
32
+ * @returns Map of security scheme names to definitions
33
+ */
34
+ export declare function extractSecuritySchemes(api: any): Map<string, any>;
35
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/build/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAsBxE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,CAAC;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,GAAG,CAAC;CAChB,CAAC,CA2BD;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAWjE"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * OpenAPI Parsing Module with Dereferencing
3
+ *
4
+ * This module handles:
5
+ * - Loading OpenAPI specs (JSON/YAML)
6
+ * - Dereferencing all $ref pointers
7
+ * - Handling circular references
8
+ * - Creating self-contained schemas
9
+ */
10
+ import OpenAPIParser from "@readme/openapi-parser";
11
+ /**
12
+ * Parse and dereference an OpenAPI specification
13
+ *
14
+ * @param filePath - Path to the OpenAPI specification file
15
+ * @returns Fully dereferenced OpenAPI document
16
+ */
17
+ export async function parseAndDereference(filePath) {
18
+ console.log(`[Parser] Loading OpenAPI spec from: ${filePath}`);
19
+ console.log(`[Parser] Current working directory: ${process.cwd()}`);
20
+ const startTime = Date.now();
21
+ const filename = "public.yaml";
22
+ try {
23
+ // Try bundle first - this resolves external references but keeps internal ones
24
+ console.log(`[Parser] Bundling OpenAPI spec (resolving external references)...`);
25
+ const api = await OpenAPIParser.bundle(filename);
26
+ const duration = Date.now() - startTime;
27
+ console.log(`[Parser] Successfully bundled spec in ${duration}ms`);
28
+ console.log(`[Parser] Note: Using bundled spec (internal $refs preserved for manual handling)`);
29
+ return api;
30
+ }
31
+ catch (error) {
32
+ console.error(`[Parser] Failed to parse OpenAPI spec:`);
33
+ console.error(error);
34
+ throw new Error(`Failed to parse OpenAPI specification: ${error}`);
35
+ }
36
+ }
37
+ /**
38
+ * Get all endpoints from the dereferenced OpenAPI document
39
+ *
40
+ * @param api - Dereferenced OpenAPI document
41
+ * @returns Array of endpoint definitions with path, method, and operation
42
+ */
43
+ export function extractEndpoints(api) {
44
+ const endpoints = [];
45
+ if (!api.paths) {
46
+ console.warn("[Parser] No paths found in OpenAPI spec");
47
+ return endpoints;
48
+ }
49
+ for (const [path, pathItem] of Object.entries(api.paths)) {
50
+ if (!pathItem)
51
+ continue;
52
+ const methods = ["get", "post", "put", "delete", "patch", "options", "head", "trace"];
53
+ for (const method of methods) {
54
+ const operation = pathItem[method];
55
+ if (operation) {
56
+ endpoints.push({
57
+ path,
58
+ method: method.toUpperCase(),
59
+ operation,
60
+ });
61
+ }
62
+ }
63
+ }
64
+ console.log(`[Parser] Extracted ${endpoints.length} endpoints from spec`);
65
+ return endpoints;
66
+ }
67
+ /**
68
+ * Get security schemes from the OpenAPI document
69
+ *
70
+ * @param api - OpenAPI document
71
+ * @returns Map of security scheme names to definitions
72
+ */
73
+ export function extractSecuritySchemes(api) {
74
+ const schemes = new Map();
75
+ if (api.components?.securitySchemes) {
76
+ for (const [name, scheme] of Object.entries(api.components.securitySchemes)) {
77
+ schemes.set(name, scheme);
78
+ }
79
+ console.log(`[Parser] Extracted ${schemes.size} security schemes`);
80
+ }
81
+ return schemes;
82
+ }
83
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/build/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,aAAa,MAAM,wBAAwB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,QAAgB;IACxD,OAAO,CAAC,GAAG,CAAC,uCAAuC,QAAQ,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,uCAAuC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAEpE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,aAAa,CAAC;IAE/B,IAAI,CAAC;QACH,+EAA+E;QAC/E,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;QACjF,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEjD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,yCAAyC,QAAQ,IAAI,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC;QAEhG,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,0CAA0C,KAAK,EAAE,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAQ;IAKvC,MAAM,SAAS,GAA4D,EAAE,CAAC;IAE9E,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACxD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,QAAQ;YAAE,SAAS;QAExB,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAEtF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAI,QAAgB,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,IAAI,CAAC;oBACb,IAAI;oBACJ,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;oBAC5B,SAAS;iBACV,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,sBAAsB,SAAS,CAAC,MAAM,sBAAsB,CAAC,CAAC;IAC1E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAQ;IAC7C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAe,CAAC;IAEvC,IAAI,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YAC5E,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,CAAC,IAAI,mBAAmB,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Types for the build pipeline
3
+ */
4
+ /**
5
+ * Optimized endpoint definition that will be bundled with the server
6
+ */
7
+ export interface OptimizedEndpoint {
8
+ path: string;
9
+ method: string;
10
+ operationId?: string;
11
+ summary?: string;
12
+ description?: string;
13
+ deprecated?: boolean;
14
+ parameters?: OptimizedParameter[];
15
+ requestBody?: OptimizedRequestBody;
16
+ responses?: Record<string, OptimizedResponse>;
17
+ tags?: string[];
18
+ }
19
+ /**
20
+ * Optimized parameter definition (fully dereferenced)
21
+ */
22
+ export interface OptimizedParameter {
23
+ name: string;
24
+ in: "query" | "header" | "path" | "cookie";
25
+ description?: string;
26
+ required?: boolean;
27
+ schema?: any;
28
+ example?: any;
29
+ }
30
+ /**
31
+ * Optimized request body definition
32
+ */
33
+ export interface OptimizedRequestBody {
34
+ description?: string;
35
+ required?: boolean;
36
+ content?: Record<string, OptimizedMediaType>;
37
+ }
38
+ /**
39
+ * Optimized media type definition
40
+ */
41
+ export interface OptimizedMediaType {
42
+ schema?: any;
43
+ example?: any;
44
+ examples?: Record<string, any>;
45
+ }
46
+ /**
47
+ * Optimized response definition
48
+ */
49
+ export interface OptimizedResponse {
50
+ description: string;
51
+ content?: Record<string, OptimizedMediaType>;
52
+ }
53
+ /**
54
+ * Build output that will be saved and bundled with the server
55
+ */
56
+ export interface BuildOutput {
57
+ endpoints: OptimizedEndpoint[];
58
+ info: {
59
+ title: string;
60
+ version: string;
61
+ description?: string;
62
+ };
63
+ servers?: Array<{
64
+ url: string;
65
+ description?: string;
66
+ }>;
67
+ buildTimestamp: string;
68
+ stats: BuildStats;
69
+ }
70
+ /**
71
+ * Build statistics for monitoring optimization effectiveness
72
+ */
73
+ export interface BuildStats {
74
+ totalEndpoints: number;
75
+ originalSize: number;
76
+ optimizedSize: number;
77
+ reductionPercent: number;
78
+ buildDuration: number;
79
+ }
80
+ /**
81
+ * Configuration for the build pipeline
82
+ */
83
+ export interface BuildConfig {
84
+ inputPath: string;
85
+ outputPath: string;
86
+ enableFlattening: boolean;
87
+ enableOptimization: boolean;
88
+ enableZodGeneration: boolean;
89
+ verbose: boolean;
90
+ }
91
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/build/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC9C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,OAAO,CAAC,EAAE,GAAG,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,UAAU,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Types for the build pipeline
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/build/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Zod Schema Generation Module
3
+ *
4
+ * This module handles:
5
+ * - Converting OpenAPI schemas to Zod validation schemas
6
+ * - Supporting complex types, enums, unions, and validation rules
7
+ * - Enabling runtime type safety and parameter validation
8
+ */
9
+ /**
10
+ * Generate Zod schema code from OpenAPI JSON schema
11
+ *
12
+ * @param schema - OpenAPI JSON schema
13
+ * @returns Zod schema as a string of TypeScript code
14
+ */
15
+ export declare function generateZodSchema(schema: any): string;
16
+ /**
17
+ * Generate Zod schema for request parameters
18
+ *
19
+ * @param parameters - Array of parameter definitions
20
+ * @returns Object with Zod schemas for different parameter locations
21
+ */
22
+ export declare function generateParameterSchemas(parameters: any[]): {
23
+ path?: string;
24
+ query?: string;
25
+ header?: string;
26
+ };
27
+ /**
28
+ * Generate complete Zod schemas file for all endpoints
29
+ *
30
+ * @param endpoints - Array of optimized endpoints
31
+ * @returns TypeScript code for Zod schemas
32
+ */
33
+ export declare function generateZodSchemasFile(endpoints: any[]): string;
34
+ //# sourceMappingURL=zod-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod-generator.d.ts","sourceRoot":"","sources":["../../src/build/zod-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAsBrD;AAuOD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CA0CA;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,MAAM,CA2C/D"}