MCPcopy Create free account
hub / github.com/ReAPI-com/mcp-openapi / mergeSchemas

Method mergeSchemas

src/core/SpecProcessor.ts:165–206  ·  view source on GitHub ↗

* Merges multiple schemas into one * @param schemas The schemas to merge * @returns The merged schema

(schemas: SchemaOrRef[])

Source from the content-addressed store, hash-verified

163 * @returns The merged schema
164 */
165 private mergeSchemas(schemas: SchemaOrRef[]): SchemaObject {
166 const merged: SchemaObject = {
167 type: "object",
168 properties: {},
169 required: [] as string[],
170 };
171
172 for (const schema of schemas) {
173 if (!this.isSchemaObject(schema)) continue;
174
175 // Merge properties
176 if (schema.properties) {
177 merged.properties = {
178 ...merged.properties,
179 ...schema.properties,
180 };
181 }
182
183 // Merge required fields
184 if (schema.required) {
185 const requiredSet = new Set([
186 ...(merged.required || []),
187 ...schema.required,
188 ]);
189 merged.required = Array.from(requiredSet);
190 }
191
192 // Merge other fields
193 for (const [key, value] of Object.entries(schema)) {
194 if (key !== "properties" && key !== "required" && key !== "type") {
195 (merged as any)[key] = value;
196 }
197 }
198 }
199
200 // Clean up empty arrays
201 if (merged.required?.length === 0) {
202 delete merged.required;
203 }
204
205 return merged;
206 }
207
208 /**
209 * Type guard to check if a schema is a SchemaObject (not a ReferenceObject)

Callers 1

processSchemaMethod · 0.95

Calls 1

isSchemaObjectMethod · 0.95

Tested by

no test coverage detected