UNPKG

@omnigraph/json-schema

Version:

This package generates GraphQL Schema from JSON Schema and sample JSON request and responses. You can define your root field endpoints like below in your GraphQL Config for example;

30 lines (29 loc) 1.33 kB
import { dereferenceObject, healJSONSchema } from 'json-machete'; import { process } from '@graphql-mesh/cross-helpers'; import { getInterpolatedHeadersFactory } from '@graphql-mesh/string-interpolation'; import { getReferencedJSONSchemaFromOperations } from './getReferencedJSONSchemaFromOperations.js'; export async function getDereferencedJSONSchemaFromOperations({ operations, cwd = process.cwd(), logger, fetchFn, schemaHeaders, ignoreErrorResponses, endpoint, operationHeaders, queryParams, }) { const referencedJSONSchema = await getReferencedJSONSchemaFromOperations({ operations, cwd, schemaHeaders, ignoreErrorResponses, fetchFn, endpoint, operationHeaders, queryParams, }); logger.debug(`Dereferencing JSON Schema to resolve all $refs`); const schemaHeadersFactory = getInterpolatedHeadersFactory(schemaHeaders); const fullyDeferencedSchema = await dereferenceObject(referencedJSONSchema, { cwd, fetchFn, logger: logger.child('dereferenceObject'), headers: schemaHeadersFactory({ env: process.env }), }); logger.debug(`Healing JSON Schema`); const healedSchema = await healJSONSchema(fullyDeferencedSchema, { logger: logger.child('healJSONSchema'), }); return healedSchema; }