UNPKG

ecma-search

Version:
49 lines (39 loc) 2.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.reducer = reducer; exports.unique = unique; function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } function reducer(_ref) { var start = _ref.start, end = _ref.end, loc = _ref.loc, range = _ref.range, extra = _ref.extra, closingElement = _ref.closingElement, selfClosing = _ref.selfClosing, rest = _objectWithoutProperties(_ref, ["start", "end", "loc", "range", "extra", "closingElement", "selfClosing"]); return Object.keys(rest).reduce(function (acc, property) { if (Array.isArray(acc[property])) { acc[property] = acc[property].map(reducer); } else if (acc[property] && _typeof(acc[property]) === 'object') { acc[property] = reducer(acc[property]); } return acc; }, rest); } function unique(nodes) { var lineNumbers = {}; return nodes.reduce(function (acc, node) { var lineNumber = "".concat(node.loc.start.line, ":").concat(node.loc.start.column, "-").concat(node.loc.end.line, ":").concat(node.loc.end.column); if (!(lineNumber in lineNumbers)) { acc.push(node); lineNumbers[lineNumber] = true; } return acc; }, []); } //# sourceMappingURL=utils.js.map