UNPKG

@opendoc/openapi-reference-parser

Version:

Get the dependencies of reference in openapi.

79 lines 2.65 kB
(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