@opendoc/openapi-reference-parser
Version:
Get the dependencies of reference in openapi.
79 lines • 2.65 kB
JavaScript
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports", "ramda", "object-path"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AbsoluteReference = exports.RelativeReference = exports.Reference = void 0;
const R = require("ramda");
const ObjectPath = require("object-path");
class Reference {
static from($ref) {
if (typeof $ref === 'string') {
if ($ref.startsWith('#'))
return new RelativeReference($ref.split('/').slice(1));
return new AbsoluteReference($ref);
}
return new RelativeReference($ref);
}
}
exports.Reference = Reference;
class RelativeReference extends Reference {
paths;
constructor(paths) {
super();
this.paths = paths;
}
async resolve(object) {
return R.pathOr(undefined, this.paths, object);
}
toString() {
return `#/${this.paths.join('/')}`;
}
set(storage, value) {
ObjectPath.set(storage, this.paths, value);
}
get(storage) {
return R.path(this.paths, storage);
}
equals(ref) {
if (!(ref instanceof RelativeReference))
return false;
return R.equals(this.paths, ref.paths);
}
}
exports.RelativeReference = RelativeReference;
class AbsoluteReference extends Reference {
address;
constructor(address) {
super();
this.address = address;
}
async resolve() {
throw new Error('Not implemented');
}
toString() {
return this.address;
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
set(storage, value) {
throw new Error('AbsoluteReference is not supported');
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
get(storage) {
throw new Error('AbsoluteReference is not supported');
}
equals(ref) {
if (!(ref instanceof AbsoluteReference))
return false;
return this.address === ref.address;
}
}
exports.AbsoluteReference = AbsoluteReference;
});
//# sourceMappingURL=reference.js.map