@microsoft.azure/openapi-validator-core
Version:
Azure OpenAPI Validator
35 lines • 1.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Resolver = void 0;
const uri_1 = require("@azure-tools/uri");
const utils_1 = require("./utils");
class Resolver {
constructor(innerDoc, currentFile) {
this.innerDoc = innerDoc;
this.currentFile = currentFile;
this.references = new Set();
}
async resolve() {
const references = this.references;
const currentFile = this.currentFile;
await (0, utils_1.traverse)(this.innerDoc, ["/"], new Set(), { references, currentFile }, updateFileRefs);
}
getReferences() {
return Array.from(this.references.values());
}
}
exports.Resolver = Resolver;
const updateFileRefs = (node, path, ctx) => {
if (typeof node === "object" && typeof node.$ref === "string") {
const slices = node.$ref.split("#");
if (slices.length === 2 && slices[0] && !(0, utils_1.isUriAbsolute)(slices[0])) {
const referenceFile = (0, uri_1.resolveUri)(ctx.currentFile, slices[0]);
node.$ref = referenceFile + `#${slices[1]}`;
if (!(0, utils_1.isExample)(referenceFile))
ctx.references.add(referenceFile);
}
return false;
}
return true;
};
//# sourceMappingURL=resolver.js.map