Skip to content

Commit

Permalink
directly use merger function to merge schemas combined using allOf (e…
Browse files Browse the repository at this point in the history
  • Loading branch information
anukul authored Jul 9, 2023
1 parent e0547b0 commit 447e4f3
Showing 1 changed file with 3 additions and 17 deletions.
20 changes: 3 additions & 17 deletions scripts/build.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import fs from "fs";
import yaml from "js-yaml";
import merger from "json-schema-merge-allof";
import mergeAllOf from "json-schema-merge-allof";
import { dereferenceDocument } from "@open-rpc/schema-utils-js";

function sortByMethodName(methods) {
Expand Down Expand Up @@ -102,26 +102,12 @@ let spec = await dereferenceDocument(doc);

spec.components = {};

function recursiveMerge(schema) {
schema = merger(schema);

if("items" in schema && "oneOf" in schema.items) {
schema.items.oneOf = recursiveMerge(schema.items.oneOf);
}
if("oneOf" in schema) {
for(var k=0; k < schema.oneOf.length; k++) {
schema.oneOf[k] = recursiveMerge(schema.oneOf[k]);
}
}
return schema;
}

// Merge instances of `allOf` in methods.
for (var i=0; i < spec.methods.length; i++) {
for (var j=0; j < spec.methods[i].params.length; j++) {
spec.methods[i].params[j].schema = recursiveMerge(spec.methods[i].params[j].schema);
spec.methods[i].params[j].schema = mergeAllOf(spec.methods[i].params[j].schema);
}
spec.methods[i].result.schema = recursiveMerge(spec.methods[i].result.schema);
spec.methods[i].result.schema = mergeAllOf(spec.methods[i].result.schema);
}

let data = JSON.stringify(spec, null, '\t');
Expand Down

0 comments on commit 447e4f3

Please sign in to comment.