@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.
- package/LICENSE +21 -0
- package/README.md +734 -0
- package/dist/build/flattener.d.ts +39 -0
- package/dist/build/flattener.d.ts.map +1 -0
- package/dist/build/flattener.js +193 -0
- package/dist/build/flattener.js.map +1 -0
- package/dist/build/index.d.ts +13 -0
- package/dist/build/index.d.ts.map +1 -0
- package/dist/build/index.js +175 -0
- package/dist/build/index.js.map +1 -0
- package/dist/build/optimizer.d.ts +32 -0
- package/dist/build/optimizer.d.ts.map +1 -0
- package/dist/build/optimizer.js +222 -0
- package/dist/build/optimizer.js.map +1 -0
- package/dist/build/parser.d.ts +35 -0
- package/dist/build/parser.d.ts.map +1 -0
- package/dist/build/parser.js +83 -0
- package/dist/build/parser.js.map +1 -0
- package/dist/build/types.d.ts +91 -0
- package/dist/build/types.d.ts.map +1 -0
- package/dist/build/types.js +5 -0
- package/dist/build/types.js.map +1 -0
- package/dist/build/zod-generator.d.ts +34 -0
- package/dist/build/zod-generator.d.ts.map +1 -0
- package/dist/build/zod-generator.js +317 -0
- package/dist/build/zod-generator.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +99 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/generated/build-stats.json +7 -0
- package/dist/generated/endpoints.json +32181 -0
- package/dist/generated/schemas.d.ts +8157 -0
- package/dist/generated/schemas.d.ts.map +1 -0
- package/dist/generated/schemas.js +2726 -0
- package/dist/generated/schemas.js.map +1 -0
- package/dist/generated/schemas.ts +3171 -0
- package/dist/server/factory.d.ts +11 -0
- package/dist/server/factory.d.ts.map +1 -0
- package/dist/server/factory.js +450 -0
- package/dist/server/factory.js.map +1 -0
- package/dist/server/factory.test.d.ts +5 -0
- package/dist/server/factory.test.d.ts.map +1 -0
- package/dist/server/factory.test.js +77 -0
- package/dist/server/factory.test.js.map +1 -0
- package/dist/server/http.d.ts +10 -0
- package/dist/server/http.d.ts.map +1 -0
- package/dist/server/http.js +110 -0
- package/dist/server/http.js.map +1 -0
- package/dist/server/index.d.ts +8 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +1502 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/loader.d.ts +10 -0
- package/dist/server/loader.d.ts.map +1 -0
- package/dist/server/loader.js +19 -0
- package/dist/server/loader.js.map +1 -0
- package/dist/server/prompts.d.ts +6 -0
- package/dist/server/prompts.d.ts.map +1 -0
- package/dist/server/prompts.js +462 -0
- package/dist/server/prompts.js.map +1 -0
- package/dist/server/stdio.d.ts +10 -0
- package/dist/server/stdio.d.ts.map +1 -0
- package/dist/server/stdio.js +25 -0
- package/dist/server/stdio.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema Flattening Module
|
|
3
|
+
*
|
|
4
|
+
* This module handles:
|
|
5
|
+
* - Flattening allOf compositions by merging properties
|
|
6
|
+
* - Resolving nested schemas to reduce complexity
|
|
7
|
+
* - Handling anyOf, oneOf, and other complex schema constructs
|
|
8
|
+
*/
|
|
9
|
+
type JSONSchema = Record<string, any>;
|
|
10
|
+
/**
|
|
11
|
+
* Flatten a JSON schema by resolving allOf, anyOf, oneOf compositions
|
|
12
|
+
*
|
|
13
|
+
* @param schema - JSON schema to flatten
|
|
14
|
+
* @returns Flattened schema
|
|
15
|
+
*/
|
|
16
|
+
export declare function flattenSchema(schema: JSONSchema): JSONSchema;
|
|
17
|
+
/**
|
|
18
|
+
* Flatten all schemas in parameters
|
|
19
|
+
*
|
|
20
|
+
* @param parameters - Array of parameter definitions
|
|
21
|
+
* @returns Parameters with flattened schemas
|
|
22
|
+
*/
|
|
23
|
+
export declare function flattenParameters(parameters: any[]): any[];
|
|
24
|
+
/**
|
|
25
|
+
* Flatten schemas in request body content
|
|
26
|
+
*
|
|
27
|
+
* @param requestBody - Request body definition
|
|
28
|
+
* @returns Request body with flattened schemas
|
|
29
|
+
*/
|
|
30
|
+
export declare function flattenRequestBody(requestBody: any): any;
|
|
31
|
+
/**
|
|
32
|
+
* Flatten schemas in responses
|
|
33
|
+
*
|
|
34
|
+
* @param responses - Response definitions
|
|
35
|
+
* @returns Responses with flattened schemas
|
|
36
|
+
*/
|
|
37
|
+
export declare function flattenResponses(responses: any): any;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=flattener.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flattener.d.ts","sourceRoot":"","sources":["../../src/build/flattener.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEtC;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAwD5D;AA2DD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAc1D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,CAmBxD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG,CA+BpD"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema Flattening Module
|
|
3
|
+
*
|
|
4
|
+
* This module handles:
|
|
5
|
+
* - Flattening allOf compositions by merging properties
|
|
6
|
+
* - Resolving nested schemas to reduce complexity
|
|
7
|
+
* - Handling anyOf, oneOf, and other complex schema constructs
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Flatten a JSON schema by resolving allOf, anyOf, oneOf compositions
|
|
11
|
+
*
|
|
12
|
+
* @param schema - JSON schema to flatten
|
|
13
|
+
* @returns Flattened schema
|
|
14
|
+
*/
|
|
15
|
+
export function flattenSchema(schema) {
|
|
16
|
+
if (!schema || typeof schema !== "object") {
|
|
17
|
+
return schema;
|
|
18
|
+
}
|
|
19
|
+
// Handle allOf - merge all schemas into one
|
|
20
|
+
if (schema.allOf && Array.isArray(schema.allOf)) {
|
|
21
|
+
return flattenAllOf(schema);
|
|
22
|
+
}
|
|
23
|
+
// Handle anyOf - keep as is but flatten nested schemas
|
|
24
|
+
if (schema.anyOf && Array.isArray(schema.anyOf)) {
|
|
25
|
+
return {
|
|
26
|
+
...schema,
|
|
27
|
+
anyOf: schema.anyOf.map((s) => flattenSchema(s)),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
// Handle oneOf - keep as is but flatten nested schemas
|
|
31
|
+
if (schema.oneOf && Array.isArray(schema.oneOf)) {
|
|
32
|
+
return {
|
|
33
|
+
...schema,
|
|
34
|
+
oneOf: schema.oneOf.map((s) => flattenSchema(s)),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
// Handle object properties
|
|
38
|
+
if (schema.type === "object" && schema.properties) {
|
|
39
|
+
return {
|
|
40
|
+
...schema,
|
|
41
|
+
properties: Object.fromEntries(Object.entries(schema.properties).map(([key, value]) => [
|
|
42
|
+
key,
|
|
43
|
+
flattenSchema(value),
|
|
44
|
+
])),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
// Handle array items
|
|
48
|
+
if (schema.type === "array" && schema.items) {
|
|
49
|
+
return {
|
|
50
|
+
...schema,
|
|
51
|
+
items: flattenSchema(schema.items),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
// Handle additionalProperties
|
|
55
|
+
if (schema.additionalProperties && typeof schema.additionalProperties === "object") {
|
|
56
|
+
return {
|
|
57
|
+
...schema,
|
|
58
|
+
additionalProperties: flattenSchema(schema.additionalProperties),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
return schema;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Flatten an allOf composition by merging all schemas
|
|
65
|
+
*
|
|
66
|
+
* @param schema - Schema with allOf property
|
|
67
|
+
* @returns Merged schema
|
|
68
|
+
*/
|
|
69
|
+
function flattenAllOf(schema) {
|
|
70
|
+
const { allOf, ...rest } = schema;
|
|
71
|
+
// Start with the base schema (everything except allOf)
|
|
72
|
+
let merged = { ...rest };
|
|
73
|
+
// Merge each schema in allOf
|
|
74
|
+
for (const subSchema of allOf) {
|
|
75
|
+
const flattened = flattenSchema(subSchema);
|
|
76
|
+
merged = mergeSchemas(merged, flattened);
|
|
77
|
+
}
|
|
78
|
+
return merged;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Deep merge two JSON schemas
|
|
82
|
+
*
|
|
83
|
+
* @param target - Target schema
|
|
84
|
+
* @param source - Source schema to merge into target
|
|
85
|
+
* @returns Merged schema
|
|
86
|
+
*/
|
|
87
|
+
function mergeSchemas(target, source) {
|
|
88
|
+
let result = { ...target };
|
|
89
|
+
for (const [key, value] of Object.entries(source)) {
|
|
90
|
+
if (key === "properties" && target.properties) {
|
|
91
|
+
// Merge properties
|
|
92
|
+
result.properties = {
|
|
93
|
+
...target.properties,
|
|
94
|
+
...value,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
else if (key === "required" && target.required && Array.isArray(value)) {
|
|
98
|
+
// Merge required arrays
|
|
99
|
+
result.required = [...new Set([...target.required, ...value])];
|
|
100
|
+
}
|
|
101
|
+
else if (key === "allOf" && Array.isArray(value)) {
|
|
102
|
+
// Recursively flatten nested allOf
|
|
103
|
+
const nested = flattenAllOf({ allOf: value });
|
|
104
|
+
result = mergeSchemas(result, nested);
|
|
105
|
+
}
|
|
106
|
+
else if (target[key] && typeof value === "object" && !Array.isArray(value)) {
|
|
107
|
+
// Deep merge objects
|
|
108
|
+
result[key] = mergeSchemas(target[key], value);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
// Override with source value
|
|
112
|
+
result[key] = value;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return result;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Flatten all schemas in parameters
|
|
119
|
+
*
|
|
120
|
+
* @param parameters - Array of parameter definitions
|
|
121
|
+
* @returns Parameters with flattened schemas
|
|
122
|
+
*/
|
|
123
|
+
export function flattenParameters(parameters) {
|
|
124
|
+
if (!Array.isArray(parameters)) {
|
|
125
|
+
return parameters;
|
|
126
|
+
}
|
|
127
|
+
return parameters.map((param) => {
|
|
128
|
+
if (param.schema) {
|
|
129
|
+
return {
|
|
130
|
+
...param,
|
|
131
|
+
schema: flattenSchema(param.schema),
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
return param;
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Flatten schemas in request body content
|
|
139
|
+
*
|
|
140
|
+
* @param requestBody - Request body definition
|
|
141
|
+
* @returns Request body with flattened schemas
|
|
142
|
+
*/
|
|
143
|
+
export function flattenRequestBody(requestBody) {
|
|
144
|
+
if (!requestBody || !requestBody.content) {
|
|
145
|
+
return requestBody;
|
|
146
|
+
}
|
|
147
|
+
const content = {};
|
|
148
|
+
for (const [mediaType, mediaTypeObject] of Object.entries(requestBody.content)) {
|
|
149
|
+
const obj = mediaTypeObject;
|
|
150
|
+
content[mediaType] = {
|
|
151
|
+
...obj,
|
|
152
|
+
schema: obj.schema ? flattenSchema(obj.schema) : undefined,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
...requestBody,
|
|
157
|
+
content,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Flatten schemas in responses
|
|
162
|
+
*
|
|
163
|
+
* @param responses - Response definitions
|
|
164
|
+
* @returns Responses with flattened schemas
|
|
165
|
+
*/
|
|
166
|
+
export function flattenResponses(responses) {
|
|
167
|
+
if (!responses || typeof responses !== "object") {
|
|
168
|
+
return responses;
|
|
169
|
+
}
|
|
170
|
+
const flattened = {};
|
|
171
|
+
for (const [statusCode, response] of Object.entries(responses)) {
|
|
172
|
+
const resp = response;
|
|
173
|
+
if (resp.content) {
|
|
174
|
+
const content = {};
|
|
175
|
+
for (const [mediaType, mediaTypeObject] of Object.entries(resp.content)) {
|
|
176
|
+
const obj = mediaTypeObject;
|
|
177
|
+
content[mediaType] = {
|
|
178
|
+
...obj,
|
|
179
|
+
schema: obj.schema ? flattenSchema(obj.schema) : undefined,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
flattened[statusCode] = {
|
|
183
|
+
...resp,
|
|
184
|
+
content,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
flattened[statusCode] = resp;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return flattened;
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=flattener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flattener.js","sourceRoot":"","sources":["../../src/build/flattener.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,MAAkB;IAC9C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,4CAA4C;IAC5C,IAAI,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,uDAAuD;IACvD,IAAI,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO;YACL,GAAG,MAAM;YACT,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SAC7D,CAAC;IACJ,CAAC;IAED,uDAAuD;IACvD,IAAI,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO;YACL,GAAG,MAAM;YACT,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SAC7D,CAAC;IACJ,CAAC;IAED,2BAA2B;IAC3B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QAClD,OAAO;YACL,GAAG,MAAM;YACT,UAAU,EAAE,MAAM,CAAC,WAAW,CAC5B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;gBACtD,GAAG;gBACH,aAAa,CAAC,KAAmB,CAAC;aACnC,CAAC,CACH;SACF,CAAC;IACJ,CAAC;IAED,qBAAqB;IACrB,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5C,OAAO;YACL,GAAG,MAAM;YACT,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;SACnC,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,IAAI,MAAM,CAAC,oBAAoB,IAAI,OAAO,MAAM,CAAC,oBAAoB,KAAK,QAAQ,EAAE,CAAC;QACnF,OAAO;YACL,GAAG,MAAM;YACT,oBAAoB,EAAE,aAAa,CAAC,MAAM,CAAC,oBAAoB,CAAC;SACjE,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAC,MAAkB;IACtC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IAElC,uDAAuD;IACvD,IAAI,MAAM,GAAe,EAAE,GAAG,IAAI,EAAE,CAAC;IAErC,6BAA6B;IAC7B,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,MAAkB,EAAE,MAAkB;IAC1D,IAAI,MAAM,GAAe,EAAE,GAAG,MAAM,EAAE,CAAC;IAEvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,GAAG,KAAK,YAAY,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAC9C,mBAAmB;YACnB,MAAM,CAAC,UAAU,GAAG;gBAClB,GAAG,MAAM,CAAC,UAAU;gBACpB,GAAG,KAAK;aACT,CAAC;QACJ,CAAC;aAAM,IAAI,GAAG,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzE,wBAAwB;YACxB,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACjE,CAAC;aAAM,IAAI,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACnD,mCAAmC;YACnC,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9C,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7E,qBAAqB;YACrB,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,6BAA6B;YAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAiB;IACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO;gBACL,GAAG,KAAK;gBACR,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;aACpC,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAgB;IACjD,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QACzC,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,OAAO,GAAwB,EAAE,CAAC;IAExC,KAAK,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/E,MAAM,GAAG,GAAG,eAAsB,CAAC;QACnC,OAAO,CAAC,SAAS,CAAC,GAAG;YACnB,GAAG,GAAG;YACN,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;SAC3D,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,WAAW;QACd,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAc;IAC7C,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAAwB,EAAE,CAAC;IAE1C,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,GAAG,QAAe,CAAC;QAE7B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,OAAO,GAAwB,EAAE,CAAC;YAExC,KAAK,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxE,MAAM,GAAG,GAAG,eAAsB,CAAC;gBACnC,OAAO,CAAC,SAAS,CAAC,GAAG;oBACnB,GAAG,GAAG;oBACN,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;iBAC3D,CAAC;YACJ,CAAC;YAED,SAAS,CAAC,UAAU,CAAC,GAAG;gBACtB,GAAG,IAAI;gBACP,OAAO;aACR,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build Pipeline Entry Point
|
|
3
|
+
*
|
|
4
|
+
* This module orchestrates the entire build process:
|
|
5
|
+
* 1. Parse and dereference OpenAPI spec
|
|
6
|
+
* 2. Extract endpoints
|
|
7
|
+
* 3. Flatten schemas (allOf, nested objects)
|
|
8
|
+
* 4. Optimize and minify
|
|
9
|
+
* 5. Generate Zod schemas
|
|
10
|
+
* 6. Output build artifacts
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/build/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build Pipeline Entry Point
|
|
3
|
+
*
|
|
4
|
+
* This module orchestrates the entire build process:
|
|
5
|
+
* 1. Parse and dereference OpenAPI spec
|
|
6
|
+
* 2. Extract endpoints
|
|
7
|
+
* 3. Flatten schemas (allOf, nested objects)
|
|
8
|
+
* 4. Optimize and minify
|
|
9
|
+
* 5. Generate Zod schemas
|
|
10
|
+
* 6. Output build artifacts
|
|
11
|
+
*/
|
|
12
|
+
import { writeFile, mkdir } from "fs/promises";
|
|
13
|
+
import { dirname, resolve } from "path";
|
|
14
|
+
import { parseAndDereference, extractEndpoints } from "./parser.js";
|
|
15
|
+
import { flattenParameters, flattenRequestBody, flattenResponses, } from "./flattener.js";
|
|
16
|
+
import { optimizeEndpoint, calculateSizeReduction } from "./optimizer.js";
|
|
17
|
+
import { generateZodSchemasFile } from "./zod-generator.js";
|
|
18
|
+
/**
|
|
19
|
+
* Main build function
|
|
20
|
+
*/
|
|
21
|
+
async function build() {
|
|
22
|
+
console.log("=".repeat(60));
|
|
23
|
+
console.log("Starting OpenAPI MCP Build Pipeline");
|
|
24
|
+
console.log("=".repeat(60));
|
|
25
|
+
const buildStartTime = Date.now();
|
|
26
|
+
// Get input path from command line argument or use default
|
|
27
|
+
const cliInputPath = process.argv[2];
|
|
28
|
+
const defaultInputPath = "../backend/main/docs/public.yaml";
|
|
29
|
+
const inputPath = cliInputPath
|
|
30
|
+
? resolve(process.cwd(), cliInputPath)
|
|
31
|
+
: resolve(process.cwd(), defaultInputPath);
|
|
32
|
+
// Configuration
|
|
33
|
+
const config = {
|
|
34
|
+
inputPath,
|
|
35
|
+
outputPath: resolve(process.cwd(), "src/generated"),
|
|
36
|
+
enableFlattening: true,
|
|
37
|
+
enableOptimization: true,
|
|
38
|
+
enableZodGeneration: true,
|
|
39
|
+
verbose: true,
|
|
40
|
+
};
|
|
41
|
+
// Change to the OpenAPI spec directory to resolve relative references
|
|
42
|
+
const originalCwd = process.cwd();
|
|
43
|
+
const specDir = dirname(inputPath);
|
|
44
|
+
process.chdir(specDir);
|
|
45
|
+
console.log(`Changed working directory to: ${specDir}`);
|
|
46
|
+
console.log(`\nConfiguration:`);
|
|
47
|
+
console.log(` Input: ${config.inputPath}`);
|
|
48
|
+
console.log(` Output: ${config.outputPath}`);
|
|
49
|
+
console.log(` Flattening: ${config.enableFlattening}`);
|
|
50
|
+
console.log(` Optimization: ${config.enableOptimization}`);
|
|
51
|
+
console.log(` Zod Generation: ${config.enableZodGeneration}`);
|
|
52
|
+
console.log("");
|
|
53
|
+
try {
|
|
54
|
+
// Step 1: Parse and dereference OpenAPI spec
|
|
55
|
+
console.log("\n[Step 1/6] Parsing and dereferencing OpenAPI spec...");
|
|
56
|
+
const api = await parseAndDereference(config.inputPath);
|
|
57
|
+
console.log(`✓ Parsed OpenAPI ${api.info.version}: ${api.info.title}`);
|
|
58
|
+
// Step 2: Extract endpoints
|
|
59
|
+
console.log("\n[Step 2/6] Extracting endpoints...");
|
|
60
|
+
const rawEndpoints = extractEndpoints(api);
|
|
61
|
+
console.log(`✓ Extracted ${rawEndpoints.length} endpoints`);
|
|
62
|
+
// Step 3: Process each endpoint through the pipeline
|
|
63
|
+
console.log("\n[Step 3/6] Processing endpoints through pipeline...");
|
|
64
|
+
const optimizedEndpoints = [];
|
|
65
|
+
for (const { path, method, operation } of rawEndpoints) {
|
|
66
|
+
let endpoint = {
|
|
67
|
+
path,
|
|
68
|
+
method,
|
|
69
|
+
operationId: operation.operationId,
|
|
70
|
+
summary: operation.summary,
|
|
71
|
+
description: operation.description,
|
|
72
|
+
deprecated: operation.deprecated,
|
|
73
|
+
tags: operation.tags,
|
|
74
|
+
};
|
|
75
|
+
// Flatten parameters
|
|
76
|
+
if (operation.parameters && config.enableFlattening) {
|
|
77
|
+
endpoint.parameters = flattenParameters(operation.parameters);
|
|
78
|
+
}
|
|
79
|
+
else if (operation.parameters) {
|
|
80
|
+
endpoint.parameters = operation.parameters;
|
|
81
|
+
}
|
|
82
|
+
// Flatten request body
|
|
83
|
+
if (operation.requestBody && config.enableFlattening) {
|
|
84
|
+
endpoint.requestBody = flattenRequestBody(operation.requestBody);
|
|
85
|
+
}
|
|
86
|
+
else if (operation.requestBody) {
|
|
87
|
+
endpoint.requestBody = operation.requestBody;
|
|
88
|
+
}
|
|
89
|
+
// Flatten responses
|
|
90
|
+
if (operation.responses && config.enableFlattening) {
|
|
91
|
+
endpoint.responses = flattenResponses(operation.responses);
|
|
92
|
+
}
|
|
93
|
+
else if (operation.responses) {
|
|
94
|
+
endpoint.responses = operation.responses;
|
|
95
|
+
}
|
|
96
|
+
// Optimize
|
|
97
|
+
if (config.enableOptimization) {
|
|
98
|
+
endpoint = optimizeEndpoint(endpoint);
|
|
99
|
+
}
|
|
100
|
+
optimizedEndpoints.push(endpoint);
|
|
101
|
+
}
|
|
102
|
+
console.log(`✓ Processed ${optimizedEndpoints.length} endpoints`);
|
|
103
|
+
// Step 4: Calculate size reduction
|
|
104
|
+
console.log("\n[Step 4/6] Calculating optimization statistics...");
|
|
105
|
+
const sizeStats = calculateSizeReduction(rawEndpoints, optimizedEndpoints);
|
|
106
|
+
console.log(`✓ Original size: ${sizeStats.originalSize.toLocaleString()} bytes`);
|
|
107
|
+
console.log(`✓ Optimized size: ${sizeStats.optimizedSize.toLocaleString()} bytes`);
|
|
108
|
+
console.log(`✓ Reduction: ${sizeStats.reductionPercent.toFixed(2)}%`);
|
|
109
|
+
// Step 5: Create build output
|
|
110
|
+
console.log("\n[Step 5/6] Creating build output...");
|
|
111
|
+
const buildOutput = {
|
|
112
|
+
endpoints: optimizedEndpoints,
|
|
113
|
+
info: {
|
|
114
|
+
title: api.info.title,
|
|
115
|
+
version: api.info.version,
|
|
116
|
+
description: api.info.description,
|
|
117
|
+
},
|
|
118
|
+
servers: api.servers,
|
|
119
|
+
buildTimestamp: new Date().toISOString(),
|
|
120
|
+
stats: {
|
|
121
|
+
totalEndpoints: optimizedEndpoints.length,
|
|
122
|
+
originalSize: sizeStats.originalSize,
|
|
123
|
+
optimizedSize: sizeStats.optimizedSize,
|
|
124
|
+
reductionPercent: sizeStats.reductionPercent,
|
|
125
|
+
buildDuration: Date.now() - buildStartTime,
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
// Step 6: Generate Zod schemas and write output files
|
|
129
|
+
console.log("\n[Step 6/6] Generating Zod schemas and writing output files...");
|
|
130
|
+
let zodSchemas = "";
|
|
131
|
+
if (config.enableZodGeneration) {
|
|
132
|
+
zodSchemas = generateZodSchemasFile(optimizedEndpoints);
|
|
133
|
+
console.log(`✓ Generated Zod schemas for ${optimizedEndpoints.length} endpoints`);
|
|
134
|
+
}
|
|
135
|
+
await mkdir(config.outputPath, { recursive: true });
|
|
136
|
+
// Write optimized endpoints
|
|
137
|
+
const endpointsPath = resolve(config.outputPath, "endpoints.json");
|
|
138
|
+
await writeFile(endpointsPath, JSON.stringify(buildOutput, null, 2));
|
|
139
|
+
console.log(`✓ Written: ${endpointsPath}`);
|
|
140
|
+
// Write Zod schemas
|
|
141
|
+
if (config.enableZodGeneration) {
|
|
142
|
+
const zodPath = resolve(config.outputPath, "schemas.ts");
|
|
143
|
+
await writeFile(zodPath, zodSchemas);
|
|
144
|
+
console.log(`✓ Written: ${zodPath}`);
|
|
145
|
+
}
|
|
146
|
+
// Write build stats
|
|
147
|
+
const statsPath = resolve(config.outputPath, "build-stats.json");
|
|
148
|
+
await writeFile(statsPath, JSON.stringify(buildOutput.stats, null, 2));
|
|
149
|
+
console.log(`✓ Written: ${statsPath}`);
|
|
150
|
+
const buildDuration = Date.now() - buildStartTime;
|
|
151
|
+
console.log("\n" + "=".repeat(60));
|
|
152
|
+
console.log("Build completed successfully!");
|
|
153
|
+
console.log("=".repeat(60));
|
|
154
|
+
console.log(`Total duration: ${buildDuration}ms`);
|
|
155
|
+
console.log(`Endpoints processed: ${optimizedEndpoints.length}`);
|
|
156
|
+
console.log(`Size reduction: ${sizeStats.reductionPercent.toFixed(2)}%`);
|
|
157
|
+
console.log("=".repeat(60));
|
|
158
|
+
console.log("");
|
|
159
|
+
// Restore original working directory
|
|
160
|
+
process.chdir(originalCwd);
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
console.error("\n" + "=".repeat(60));
|
|
164
|
+
console.error("Build failed!");
|
|
165
|
+
console.error("=".repeat(60));
|
|
166
|
+
console.error(error);
|
|
167
|
+
console.error("=".repeat(60));
|
|
168
|
+
// Restore original working directory
|
|
169
|
+
process.chdir(originalCwd);
|
|
170
|
+
process.exit(1);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// Run the build
|
|
174
|
+
build();
|
|
175
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/build/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
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
|
+
import type { OptimizedEndpoint } from "./types.js";
|
|
13
|
+
/**
|
|
14
|
+
* Optimize an endpoint definition to reduce token count
|
|
15
|
+
*
|
|
16
|
+
* @param endpoint - Endpoint to optimize
|
|
17
|
+
* @returns Optimized endpoint
|
|
18
|
+
*/
|
|
19
|
+
export declare function optimizeEndpoint(endpoint: OptimizedEndpoint): OptimizedEndpoint;
|
|
20
|
+
/**
|
|
21
|
+
* Calculate size reduction statistics
|
|
22
|
+
*
|
|
23
|
+
* @param original - Original data
|
|
24
|
+
* @param optimized - Optimized data
|
|
25
|
+
* @returns Size statistics
|
|
26
|
+
*/
|
|
27
|
+
export declare function calculateSizeReduction(original: any, optimized: any): {
|
|
28
|
+
originalSize: number;
|
|
29
|
+
optimizedSize: number;
|
|
30
|
+
reductionPercent: number;
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=optimizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optimizer.d.ts","sourceRoot":"","sources":["../../src/build/optimizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,iBAAiB,CAc/E;AAmMD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG;IACrE,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAaA"}
|