@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
JavaScript
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;
;