UNPKG

@ianwalter/peregrin

Version:

Toolkit for converting API Blueprint files to JSON and consuming that JSON

45 lines (41 loc) 4.67 kB
module.exports = (function () { function Blueprint(json) { this.json = json; } Blueprint.prototype.find = function find (filter, prop) { var json = prop ? this.json[prop] : this.json; if (Number.isInteger(filter)) { json = json[filter]; } else if (typeof filter === 'string') { json = json.find(function (o) { return Object.values(o).includes(filter); }); } else if (typeof filter === 'function') { var values = Array.isArray(json) ? json : Object.values(json); json = values.find(filter); } return new Blueprint(json); }; Blueprint.prototype.group = function group (filter) { return this.find(filter); }; Blueprint.prototype.resource = function resource (filter) { return this.find(filter, 'resources'); }; Blueprint.prototype.action = function action (filter) { return this.find(filter, 'actions'); }; Blueprint.prototype.example = function example (filter) { return this.find(filter, 'examples'); }; Blueprint.prototype.request = function request (filter) { return this.find(filter, 'requests'); }; Blueprint.prototype.response = function response (filter) { return this.find(filter, 'responses'); }; Blueprint.prototype.body = function body () { return JSON.parse(this.json.body); }; return Blueprint; }()); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzKG9yaWdpbmFsKSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFBLENBQU8sT0FBUCxDQUFBLENBQUEsQ0FBaUIsTUFBTSxVQUFVO0lBQy9CLFlBQWEsTUFBTTtRQUNqQixJQUFBLENBQUssSUFBTCxDQUFBLENBQUEsQ0FBWTtJQUNoQjtJQUVFLEtBQU0sTUFBUSxFQUFBLE1BQU07UUFFbEIsR0FBQSxDQUFJLE9BQU8sSUFBQSxHQUFPLElBQUEsQ0FBSyxJQUFMLENBQVUsUUFBUSxJQUFBLENBQUs7UUFHekMsSUFBSSxNQUFBLENBQU8sU0FBUCxDQUFpQixTQUFTO1lBQzVCLElBQUEsQ0FBQSxDQUFBLENBQU8sSUFBQSxDQUFLO1FBQ2xCLE9BQVcsSUFBSSxNQUFBLENBQU8sTUFBUCxDQUFBLEdBQUEsQ0FBa0IsVUFBVTtZQUNyQyxJQUFBLENBQUEsQ0FBQSxDQUFPLElBQUEsQ0FBSyxJQUFMLENBQVUsQ0FBQSxJQUFLLE1BQUEsQ0FBTyxNQUFQLENBQWMsRUFBZCxDQUFpQixRQUFqQixDQUEwQjtRQUN0RCxPQUFXLElBQUksTUFBQSxDQUFPLE1BQVAsQ0FBQSxHQUFBLENBQWtCLFlBQVk7WUFDdkMsR0FBQSxDQUFJLFNBQVMsS0FBQSxDQUFNLE9BQU4sQ0FBYyxLQUFkLEdBQXNCLE9BQU8sTUFBQSxDQUFPLE1BQVAsQ0FBYztZQUN4RCxJQUFBLENBQUEsQ0FBQSxDQUFPLE1BQUEsQ0FBTyxJQUFQLENBQVk7UUFDekI7UUFHSSxPQUFPLElBQUksU0FBSixDQUFjO0lBQ3pCO0lBRUUsTUFBTyxRQUFRO1FBQ2IsT0FBTyxJQUFBLENBQUssSUFBTCxDQUFVO0lBQ3JCO0lBRUUsU0FBVSxRQUFRO1FBQ2hCLE9BQU8sSUFBQSxDQUFLLElBQUwsQ0FBVSxRQUFRO0lBQzdCO0lBRUUsT0FBUSxRQUFRO1FBQ2QsT0FBTyxJQUFBLENBQUssSUFBTCxDQUFVLFFBQVE7SUFDN0I7SUFFRSxRQUFTLFFBQVE7UUFDZixPQUFPLElBQUEsQ0FBSyxJQUFMLENBQVUsUUFBUTtJQUM3QjtJQUVFLFFBQVMsUUFBUTtRQUNmLE9BQU8sSUFBQSxDQUFLLElBQUwsQ0FBVSxRQUFRO0lBQzdCO0lBRUUsU0FBVSxRQUFRO1FBQ2hCLE9BQU8sSUFBQSxDQUFLLElBQUwsQ0FBVSxRQUFRO0lBQzdCO0lBRUUsT0FBUTtRQUNOLE9BQU8sSUFBQSxDQUFLLEtBQUwsQ0FBVyxJQUFBLENBQUssSUFBTCxDQUFVO0lBQ2hDO0FBQ0E7QUFsREEiLCJmaWxlIjoiaW5kZXguanMob3JpZ2luYWwpIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBjbGFzcyBCbHVlcHJpbnQge1xuICBjb25zdHJ1Y3RvciAoanNvbikge1xuICAgIHRoaXMuanNvbiA9IGpzb25cbiAgfVxuXG4gIGZpbmQgKGZpbHRlciwgcHJvcCkge1xuICAgIC8vIEdldCBuYW1lc3BhY2VkIG9yIGN1cnJlbnQgSlNPTiBzY2hlbWEuXG4gICAgbGV0IGpzb24gPSBwcm9wID8gdGhpcy5qc29uW3Byb3BdIDogdGhpcy5qc29uXG5cbiAgICAvLyBGaWx0ZXIgdGhlIEpTT04gc2NoZW1hIHVzaW5nIHRoZSBmaWx0ZXIgcGFyYW1ldGVyLlxuICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKGZpbHRlcikpIHtcbiAgICAgIGpzb24gPSBqc29uW2ZpbHRlcl1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBmaWx0ZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgICBqc29uID0ganNvbi5maW5kKG8gPT4gT2JqZWN0LnZhbHVlcyhvKS5pbmNsdWRlcyhmaWx0ZXIpKVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGZpbHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbGV0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkoanNvbikgPyBqc29uIDogT2JqZWN0LnZhbHVlcyhqc29uKVxuICAgICAganNvbiA9IHZhbHVlcy5maW5kKGZpbHRlcilcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdGhpcyBpbnN0YW5jZSBzbyB1c2VyIGNhbiBjaGFpbiBjYWxscy5cbiAgICByZXR1cm4gbmV3IEJsdWVwcmludChqc29uKVxuICB9XG5cbiAgZ3JvdXAgKGZpbHRlcikge1xuICAgIHJldHVybiB0aGlzLmZpbmQoZmlsdGVyKVxuICB9XG5cbiAgcmVzb3VyY2UgKGZpbHRlcikge1xuICAgIHJldHVybiB0aGlzLmZpbmQoZmlsdGVyLCAncmVzb3VyY2VzJylcbiAgfVxuXG4gIGFjdGlvbiAoZmlsdGVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZmluZChmaWx0ZXIsICdhY3Rpb25zJylcbiAgfVxuXG4gIGV4YW1wbGUgKGZpbHRlcikge1xuICAgIHJldHVybiB0aGlzLmZpbmQoZmlsdGVyLCAnZXhhbXBsZXMnKVxuICB9XG5cbiAgcmVxdWVzdCAoZmlsdGVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZmluZChmaWx0ZXIsICdyZXF1ZXN0cycpXG4gIH1cblxuICByZXNwb25zZSAoZmlsdGVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZmluZChmaWx0ZXIsICdyZXNwb25zZXMnKVxuICB9XG5cbiAgYm9keSAoKSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UodGhpcy5qc29uLmJvZHkpXG4gIH1cbn1cbiJdfQ== //# sourceMappingURL=peregrin.m.js.map