const _mergeSchema = (module1, module2) => { const parsedModule1Schema = parse(new Source(module1.schema.join('\n'))) const parsedModule2Schema = parse(new Source(module2.schema.join('\n'))) const mergedSchema = { kind: 'Document', definitions: [ ...parsedModule1Schema.definitions.filter(def => def.kind === 'SchemaDefinition'), ...parsedModule1Schema.definitions .filter(def => def.kind === 'ObjectTypeDefinition') .map(def => { const objectTypeDefsModule2 = parsedModule2Schema.definitions .find(def2 => def2.kind === 'ObjectTypeDefinition' && def2.name.value === def.name.value ) return { ...def, fields: [ ...def.fields, ...objectTypeDefsModule2 ? objectTypeDefsModule2.fields : [] ] } }) ] } return print(mergedSchema) }
const _mergeSchema = (module1, module2) => { const parsedModule1Schema = parse(new Source(module1.schema.join('\n'))) const parsedModule2Schema = parse(new Source(module2.schema.join('\n'))) const mergedSchema = { kind: 'Document', definitions: [ ...parsedModule1Schema.definitions.filter(def => def.kind === 'SchemaDefinition'), ...parsedModule1Schema.definitions .filter(def => def.kind === 'ObjectTypeDefinition') .map(def => { const objectTypeDefsModule2 = parsedModule2Schema.definitions .find(def2 => def2.kind === 'ObjectTypeDefinition' && def2.name.value === def.name.value ) return { ...def, fields: [ ...def.fields, ...objectTypeDefsModule2 ? objectTypeDefsModule2.fields : [] ] } }) ] } return print(mergedSchema) }