UNPKG

vulpes

Version:
50 lines (40 loc) 2.31 kB
"use strict"; var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var nested = require("nested-property"); function jobMatches(job, query) { var keys = Object.keys(query); if (keys.length <= 0) { return true; } return keys.every(function (key) { var value = nested.get(job, key); var validator = query[key]; if (validator instanceof RegExp) { return validator.test(value); } else if (typeof validator === "function") { return !!validator(value); } else if (["number", "string", "boolean"].includes(typeof validator === "undefined" ? "undefined" : _typeof(validator))) { return validator === value; } throw new Error("Failed validating job query: Invalid query property '" + key + "' is of an unrecognised type"); }); } function selectJob(jobs) { var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _selectJobs = selectJobs(jobs, query), _selectJobs2 = _slicedToArray(_selectJobs, 1), job = _selectJobs2[0]; return job || null; } function selectJobs(jobs) { var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return jobs.filter(function (job) { return jobMatches(job, query); }); } module.exports = { jobMatches: jobMatches, selectJob: selectJob, selectJobs: selectJobs };