MCPcopy Create free account
hub / github.com/loopbackio/loopback-next / toJsonSchema

Function toJsonSchema

packages/cli/generators/openapi/utils.js:257–293  ·  view source on GitHub ↗

* Convert OpenAPI schema to JSON Schema Draft 7 * @param {object} oasSchema - OpenAPI schema

(oasSchema)

Source from the content-addressed store, hash-verified

255 * @param {object} oasSchema - OpenAPI schema
256 */
257function toJsonSchema(oasSchema) {
258 oasSchema = restoreSpecObject(oasSchema);
259 let jsonSchema = openapiSchemaToJsonSchema(oasSchema);
260 delete jsonSchema['$schema'];
261 // See https://json-schema.org/draft-06/json-schema-release-notes.html
262 if (jsonSchema.id) {
263 // id => $id
264 jsonSchema.$id = jsonSchema.id;
265 delete jsonSchema.id;
266 }
267 jsonSchema = _.cloneDeepWith(jsonSchema, value => {
268 if (value == null) return value;
269 let changed = false;
270 if (typeof value.exclusiveMinimum === 'boolean') {
271 // exclusiveMinimum + minimum (boolean + number) => exclusiveMinimum (number)
272 if (value.exclusiveMinimum) {
273 value.exclusiveMinimum = value.minimum;
274 delete value.minimum;
275 } else {
276 delete value.exclusiveMinimum;
277 }
278 changed = true;
279 }
280 if (typeof value.exclusiveMaximum === 'boolean') {
281 // exclusiveMaximum + maximum (boolean + number) => exclusiveMaximum (number)
282 if (value.exclusiveMaximum) {
283 value.exclusiveMaximum = value.maximum;
284 delete value.maximum;
285 } else {
286 delete value.exclusiveMaximum;
287 }
288 changed = true;
289 }
290 return changed ? value : undefined;
291 });
292 return jsonSchema;
293}
294
295/**
296 * Convert OpenAPI schema to JSON schema draft 7 and print it as a JavaScript

Callers 2

printJsonSchemaFunction · 0.85
convertToJsonSchemaFunction · 0.85

Calls 1

restoreSpecObjectFunction · 0.85

Tested by

no test coverage detected