UNPKG

elliptical

Version:

Interactive natural-language interfaces

63 lines (47 loc) 2.1 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkAgainstUniqueSet = checkAgainstUniqueSet; exports.checkAgainstResultList = checkAgainstResultList; exports.addToUniqueSet = addToUniqueSet; var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _jsonStableStringify = require('json-stable-stringify'); var _jsonStableStringify2 = _interopRequireDefault(_jsonStableStringify); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const unique = Symbol.for('lacona-unique-key'); exports.default = unique; function getUniqueValue(result) { if (!_lodash2.default.isObject(result)) { return result; } else if (result[unique] != null) { if (_lodash2.default.isFunction(result[unique])) { return result[unique](result); } else { return result[unique]; } } else { return (0, _jsonStableStringify2.default)(result); } } function checkAgainstUniqueSet(uniqueSet) { for (var _len = arguments.length, results = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { results[_key - 1] = arguments[_key]; } return !_lodash2.default.chain(results).reject(result => result == null).map(getUniqueValue).every(value => uniqueSet.has(value)).value(); } function checkAgainstResultList(resultList) { for (var _len2 = arguments.length, results = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { results[_key2 - 1] = arguments[_key2]; } return !_lodash2.default.chain(results).reject(result => result == null).map(getUniqueValue).every(value => _lodash2.default.some(resultList, compareResult => getUniqueValue(compareResult) === value)).value(); } function addToUniqueSet(uniqueSet) { for (var _len3 = arguments.length, results = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { results[_key3 - 1] = arguments[_key3]; } _lodash2.default.chain(results).reject(result => result == null).map(getUniqueValue).forEach(value => { uniqueSet.add(value); }).value(); }