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;

41 lines (40 loc) 2.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDereferencedJSONSchemaFromOperations = void 0; const json_machete_1 = require("json-machete"); const cross_helpers_1 = require("@graphql-mesh/cross-helpers"); const string_interpolation_1 = require("@graphql-mesh/string-interpolation"); const utils_1 = require("@graphql-mesh/utils"); const getReferencedJSONSchemaFromOperations_js_1 = require("./getReferencedJSONSchemaFromOperations.js"); async function getDereferencedJSONSchemaFromOperations({ operations, cwd = cross_helpers_1.process.cwd(), logger, fetchFn, schemaHeaders, ignoreErrorResponses, endpoint, operationHeaders, queryParams, }) { const referencedJSONSchema = await (0, getReferencedJSONSchemaFromOperations_js_1.getReferencedJSONSchemaFromOperations)({ operations, cwd, schemaHeaders, ignoreErrorResponses, fetchFn, endpoint, operationHeaders, queryParams, }); logger.debug(`Dereferencing JSON Schema to resolve all $refs`); const schemaHeadersFactory = (0, string_interpolation_1.getInterpolatedHeadersFactory)(schemaHeaders); const dereferenceObjectLogger = logger.child('dereferenceObject'); const readFileOrUrlForJsonMachete = (path, opts) => (0, utils_1.readFileOrUrl)(path, { cwd: opts.cwd, fetch: fetchFn, logger: dereferenceObjectLogger, headers: schemaHeadersFactory({ env: cross_helpers_1.process.env }), importFn: utils_1.defaultImportFn, }); const fullyDeferencedSchema = await (0, json_machete_1.dereferenceObject)(referencedJSONSchema, { cwd, debugLogFn: dereferenceObjectLogger.debug.bind(dereferenceObjectLogger), readFileOrUrl: readFileOrUrlForJsonMachete, }); logger.debug(`Healing JSON Schema`); const healJSONSchemaLogger = logger.child('healJSONSchema'); const healedSchema = await (0, json_machete_1.healJSONSchema)(fullyDeferencedSchema, healJSONSchemaLogger.debug.bind(healJSONSchemaLogger)); return healedSchema; } exports.getDereferencedJSONSchemaFromOperations = getDereferencedJSONSchemaFromOperations;