Socket
Socket
Sign inDemoInstall

optimal-select

Package Overview
Dependencies
0
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 3.3.2 to 3.4.0

6

CHANGELOG.md

@@ -0,1 +1,7 @@

## [v3.4.0]
> November 4, 2016
- enable optimization for selectors of multiple elements
## [v3.3.1]

@@ -2,0 +8,0 @@ > October 28, 2016

160

dist/optimal-select.js

@@ -134,6 +134,6 @@ (function webpackUniversalModuleDefinition(root, factory) {

if (Array.isArray(input)) {
return getMultiSelector(input, options);
if (!input.length) {
return getSingleSelector(input, options);
}
return getSingleSelector(input, options);
return getMultiSelector(input, options);
}

@@ -188,2 +188,6 @@

if (!Array.isArray(elements)) {
elements = [].concat(_toConsumableArray(elements));
}
if (elements.some(function (element) {

@@ -200,7 +204,7 @@ return element.nodeType !== 1;

// TODO: consider usage of multiple selectors + parent-child relation
// TODO: consider usage of multiple selectors + parent-child relation + check for part redundancy
var commonSelectors = getCommonSelectors(elements);
var descendantSelector = commonSelectors[0];
var selector = ancestorSelector + ' ' + descendantSelector;
var selector = (0, _optimize2.default)(ancestorSelector + ' ' + descendantSelector, elements, options);
var selectorMatches = [].concat(_toConsumableArray(document.querySelectorAll(selector)));

@@ -1094,19 +1098,34 @@

function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } /**
* # Optimize
*
* 1.) Improve efficiency through shorter selectors by removing redundancy
* 2.) Improve robustness through selector transformation
*/
/**
* Apply different optimization techniques
*
* @param {string} selector - [description]
* @param {HTMLElement} element - [description]
* @return {string} - [description]
* @param {string} selector - [description]
* @param {HTMLElement|Array.<HTMLElement>} element - [description]
* @param {Object} options - [description]
* @return {string} - [description]
*/
function optimize(selector, element) {
function optimize(selector, elements) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
if (!element || element.nodeType !== 1) {
throw new Error('Invalid input - to compare HTMLElements its necessary to provide a reference of the node! (missing "element")');
// convert single entry and NodeList
if (!Array.isArray(elements)) {
elements = !elements.length ? [elements] : [].concat(_toConsumableArray(elements));
}
var globalModified = (0, _adapt2.default)(element, options);
if (!elements.length || elements.some(function (element) {
return element.nodeType !== 1;
})) {
throw new Error('Invalid input - to compare HTMLElements its necessary to provide a reference of the selected node(s)! (missing "elements")');
}
var globalModified = (0, _adapt2.default)(elements[0], options);
// chunk parts outside of quotes (http://stackoverflow.com/a/25663729)

@@ -1116,3 +1135,3 @@ var path = selector.replace(/> /g, '>').split(/\s+(?=(?:(?:[^"]*"){2})*[^"]*$)/);

if (path.length < 3) {
return optimizePart('', selector, '', element);
return optimizePart('', selector, '', elements);
}

@@ -1128,4 +1147,4 @@

var matches = document.querySelectorAll(pattern);
if (matches.length !== 1) {
shortened.unshift(optimizePart(prePart, current, postPart, element));
if (matches.length !== elements.length) {
shortened.unshift(optimizePart(prePart, current, postPart, elements));
}

@@ -1137,4 +1156,4 @@ }

// optimize start + end
path[0] = optimizePart('', path[0], path.slice(1).join(' '), element);
path[path.length - 1] = optimizePart(path.slice(0, -1).join(' '), path[path.length - 1], '', element);
path[0] = optimizePart('', path[0], path.slice(1).join(' '), elements);
path[path.length - 1] = optimizePart(path.slice(0, -1).join(' '), path[path.length - 1], '', elements);

@@ -1151,16 +1170,9 @@ if (globalModified) {

*
* @param {string} prePart - [description]
* @param {string} current - [description]
* @param {string} postPart - [description]
* @param {HTMLElement} element - [description]
* @return {string} - [description]
* @param {string} prePart - [description]
* @param {string} current - [description]
* @param {string} postPart - [description]
* @param {Array.<HTMLElement>} elements - [description]
* @return {string} - [description]
*/
/**
* # Optimize
*
* 1.) Improve efficiency through shorter selectors by removing redundancy
* 2.) Improve robustness through selector transformation
*/
function optimizePart(prePart, current, postPart, element) {
function optimizePart(prePart, current, postPart, elements) {
if (prePart.length) prePart = prePart + ' ';

@@ -1174,17 +1186,31 @@ if (postPart.length) postPart = ' ' + postPart;

var matches = document.querySelectorAll(pattern);
if (matches.length === 1 && matches[0] === element) {
if (compareResults(matches, elements)) {
current = key;
} else {
// robustness: replace specific key-value with tag (heuristic)
// robustness: replace specific key-value with base tag (heuristic)
var references = document.querySelectorAll('' + prePart + key);
for (var i = 0, l = references.length; i < l; i++) {
if (references[i].contains(element)) {
var description = references[i].tagName.toLowerCase();
var pattern = '' + prePart + description + postPart;
var matches = document.querySelectorAll(pattern);
if (matches.length === 1 && matches[0] === element) {
var _loop = function _loop() {
var reference = references[i];
if (elements.some(function (element) {
return reference.contains(element);
})) {
var description = reference.tagName.toLowerCase();
pattern = '' + prePart + description + postPart;
matches = document.querySelectorAll(pattern);
if (compareResults(matches, elements)) {
current = description;
}
break;
return 'break';
}
};
for (var i = 0, l = references.length; i < l; i++) {
var pattern;
var matches;
var _ret = _loop();
if (_ret === 'break') break;
}

@@ -1199,3 +1225,3 @@ }

var matches = document.querySelectorAll(pattern);
if (matches.length === 1 && matches[0] === element) {
if (compareResults(matches, elements)) {
current = descendant;

@@ -1211,3 +1237,3 @@ }

var matches = document.querySelectorAll(pattern);
if (matches.length === 1 && matches[0] === element) {
if (compareResults(matches, elements)) {
current = type;

@@ -1231,3 +1257,3 @@ }

var matches = document.querySelectorAll(pattern);
if (matches.length === 1 && matches[0] === element) {
if (compareResults(matches, elements)) {
current = partial;

@@ -1239,14 +1265,28 @@ }

var _references = document.querySelectorAll('' + prePart + current);
for (var i = 0, l = _references.length; i < l; i++) {
if (_references[i].contains(element)) {
var _loop2 = function _loop2() {
var reference = _references[i];
if (elements.some(function (element) {
return reference.contains(element);
})) {
// TODO:
// - check using attributes + regard excludes
var _description = _references[i].tagName.toLowerCase();
var pattern = '' + prePart + _description + postPart;
var matches = document.querySelectorAll(pattern);
if (matches.length === 1 && matches[0] === element) {
current = _description;
var description = reference.tagName.toLowerCase();
pattern = '' + prePart + description + postPart;
matches = document.querySelectorAll(pattern);
if (compareResults(matches, elements)) {
current = description;
}
break;
return 'break';
}
};
for (var i = 0, l = _references.length; i < l; i++) {
var pattern;
var matches;
var _ret2 = _loop2();
if (_ret2 === 'break') break;
}

@@ -1258,2 +1298,22 @@ }

}
/**
* Evaluate matches with expected elements
*
* @param {Array.<HTMLElement>} matches - [description]
* @param {Array.<HTMLElement>} elements - [description]
* @return {Boolean} - [description]
*/
function compareResults(matches, elements) {
var length = matches.length;
return length === elements.length && elements.every(function (element) {
for (var i = 0; i < length; i++) {
if (matches[i] === element) {
return true;
}
}
return false;
});
}
module.exports = exports['default'];

@@ -1260,0 +1320,0 @@ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))

@@ -1,2 +0,2 @@

!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.OptimalSelect=e():t.OptimalSelect=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var u=n[r]={exports:{},id:r,loaded:!1};return t[r].call(u.exports,u,u.exports,e),u.loaded=!0,u.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function u(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.common=e.optimize=e.select=void 0;var o=n(5),i=u(o),a=n(3),c=u(a),f=n(2),l=r(f);e.select=i.default,e.optimize=c.default,e.common=l,e.default=i.default},function(t,e){(function(n){"use strict";function r(t){return Array.isArray(t)?t:Array.from(t)}function u(t,e){if(n.document)return!1;var u=e.context;n.document=u||function(){for(var e=t;e.parent;)e=e.parent;return e}();var a=Object.getPrototypeOf(n.document);return Object.getOwnPropertyDescriptor(a,"childTags")||Object.defineProperty(a,"childTags",{enumerable:!0,get:function(){return this.children.filter(function(t){return"tag"===t.type||"script"===t.type||"style"===t.type})}}),Object.getOwnPropertyDescriptor(a,"attributes")||Object.defineProperty(a,"attributes",{enumerable:!0,get:function(){var t=this.attribs,e=Object.keys(t),n=e.reduce(function(e,n,r){return e[r]={name:n,value:t[n]},e},{});return Object.defineProperty(n,"length",{enumerable:!1,configurable:!1,value:e.length}),n}}),a.getAttribute||(a.getAttribute=function(t){return this.attribs[t]||null}),a.getElementsByTagName||(a.getElementsByTagName=function(t){var e=[];return i(this.childTags,function(n){n.name!==t&&"*"!==t||e.push(n)}),e}),a.getElementsByClassName||(a.getElementsByClassName=function(t){var e=t.trim().replace(/\s+/g," ").split(" "),n=[];return i([this],function(t){var r=t.attribs.class;r&&e.every(function(t){return r.indexOf(t)>-1})&&n.push(t)}),n}),a.querySelectorAll||(a.querySelectorAll=function(t){var e=this;t=t.replace(/(>)(\S)/g,"$1 $2").trim();var n=o(t),u=r(n),i=u[0],a=u.slice(1),c=a.length;return i(this).filter(function(t){for(var n=0;n<c;){if(t=a[n](t,e),!t)return!1;n+=1}return!0})}),a.contains||(a.contains=function(t){var e=!1;return i([this],function(n,r){n===t&&(e=!0,r())}),e}),!0}function o(t){return t.split(" ").reverse().map(function(t,e){var n=0===e,r=t.split(":"),u=f(r,2),o=u[0],l=u[1],s=null,d=null;if(function(){switch(!0){case/>/.test(o):d=function(t){return function(e){return e(t.parent)&&t.parent}};break;case/^\./.test(o):var t=o.substr(1).split(".");s=function(e){var n=e.attribs.class;return n&&t.every(function(t){return n.indexOf(t)>-1})},d=function(e,r){return n?e.getElementsByClassName(t.join(" ")):"function"==typeof e?e(s):a(e,r,s)};break;case/^\[/.test(o):var e=o.replace(/\[|\]|"/g,"").split("="),r=f(e,2),u=r[0],l=r[1];s=function(t){var e=Object.keys(t.attribs).indexOf(u)>-1;return!(!e||l&&t.attribs[u]!==l)},d=function(t,e){if(n){var r=function(){var e=[];return i([t],function(t){s(t)&&e.push(t)}),{v:e}}();if("object"===("undefined"==typeof r?"undefined":c(r)))return r.v}return"function"==typeof t?t(s):a(t,e,s)};break;case/^#/.test(o):var p=o.substr(1);s=function(t){return t.attribs.id===p},d=function(t,e){if(n){var r=function(){var e=[];return i([t],function(t,n){s(t)&&(e.push(t),n())}),{v:e}}();if("object"===("undefined"==typeof r?"undefined":c(r)))return r.v}return"function"==typeof t?t(s):a(t,e,s)};break;case/\*/.test(o):s=function(t){return!0},d=function(t,e){if(n){var r=function(){var e=[];return i([t],function(t){return e.push(t)}),{v:e}}();if("object"===("undefined"==typeof r?"undefined":c(r)))return r.v}return"function"==typeof t?t(s):a(t,e,s)};break;default:s=function(t){return t.name===o},d=function(t,e){if(n){var r=function(){var e=[];return i([t],function(t){s(t)&&e.push(t)}),{v:e}}();if("object"===("undefined"==typeof r?"undefined":c(r)))return r.v}return"function"==typeof t?t(s):a(t,e,s)}}}(),!l)return d;var p=l.match(/-(child|type)\((\d+)\)$/),v=p[1],y=parseInt(p[2],10)-1,h=function(t){if(t){var e=t.parent.childTags;"type"===v&&(e=e.filter(s));var n=e.findIndex(function(e){return e===t});if(n===y)return!0}return!1};return function(t){var e=d(t);return n?e.reduce(function(t,e){return h(e)&&t.push(e),t},[]):h(e)&&e}})}function i(t,e){t.forEach(function(t){var n=!0;e(t,function(){return n=!1}),t.childTags&&n&&i(t.childTags,e)})}function a(t,e,n){for(;t.parent;){if(t=t.parent,n(t))return t;if(t===e)break}return null}Object.defineProperty(e,"__esModule",{value:!0});var c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},f=function(){function t(t,e){var n=[],r=!0,u=!1,o=void 0;try{for(var i,a=t[Symbol.iterator]();!(r=(i=a.next()).done)&&(n.push(i.value),!e||n.length!==e);r=!0);}catch(c){u=!0,o=c}finally{try{!r&&a.return&&a.return()}finally{if(u)throw o}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();e.default=u,t.exports=e.default}).call(e,function(){return this}())},function(t,e){"use strict";function n(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.root,r=void 0===n?document:n,u=(e.skip,e.ignore,[]);t.forEach(function(t,e){for(var n=[];t!==r;)t=t.parentNode,n.unshift(t);u[e]=n}),u.sort(function(t,e){return t.length-e.length});for(var o=u.shift(),i=null,a=function(){var t=o[c],e=u.some(function(e){return!e.some(function(e){return e===t})});return e?"break":void(i=t)},c=0,f=o.length;c<f;c++){var l=a();if("break"===l)break}return i}function r(t){var e={classes:[],attributes:{},tag:null};return t.forEach(function(t){var n=e.classes,r=e.attributes,u=e.tag;if(void 0!==n){var o=t.getAttribute("class");o?(o=o.trim().split(" "),n.length?(n=n.filter(function(t){return o.some(function(e){return e===t})}),n.length?e.classes=n:delete e.classes):e.classes=o):delete e.classes}if(void 0!==r&&!function(){var n=t.attributes,u=Object.keys(n).reduce(function(t,e){var r=n[e],u=r.name;return"class"!==u&&(t[u]=r.value),t},{}),o=Object.keys(u),i=Object.keys(r);o.length?i.length?(r=i.reduce(function(t,e){var n=r[e];return n===u[e]&&(t[e]=n),t},{}),Object.keys(r).length?e.attributes=r:delete e.attributes):e.attributes=u:delete e.attributes}(),void 0!==u){var i=t.tagName.toLowerCase();u?i!==u&&delete e.tag:e.tag=i}}),e}Object.defineProperty(e,"__esModule",{value:!0}),e.getCommonAncestor=n,e.getCommonProperties=r},function(t,e,n){(function(r){"use strict";function u(t){return t&&t.__esModule?t:{"default":t}}function o(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!e||1!==e.nodeType)throw new Error('Invalid input - to compare HTMLElements its necessary to provide a reference of the node! (missing "element")');var u=(0,c.default)(e,n),o=t.replace(/> /g,">").split(/\s+(?=(?:(?:[^"]*"){2})*[^"]*$)/);if(o.length<3)return i("",t,"",e);for(var a=[o.pop()];o.length>1;){var f=o.pop(),l=o.join(" "),s=a.join(" "),d=l+" "+s,p=document.querySelectorAll(d);1!==p.length&&a.unshift(i(l,f,s,e))}return a.unshift(o[0]),o=a,o[0]=i("",o[0],o.slice(1).join(" "),e),o[o.length-1]=i(o.slice(0,-1).join(" "),o[o.length-1],"",e),u&&delete r.document,o.join(" ").replace(/>/g,"> ").trim()}function i(t,e,n,r){if(t.length&&(t+=" "),n.length&&(n=" "+n),/\[*\]/.test(e)){var u=e.replace(/=.*$/,"]"),o=""+t+u+n,i=document.querySelectorAll(o);if(1===i.length&&i[0]===r)e=u;else for(var a=document.querySelectorAll(""+t+u),c=0,f=a.length;c<f;c++)if(a[c].contains(r)){var l=a[c].tagName.toLowerCase(),o=""+t+l+n,i=document.querySelectorAll(o);1===i.length&&i[0]===r&&(e=l);break}}if(/>/.test(e)){var s=e.replace(/>/,""),o=""+t+s+n,i=document.querySelectorAll(o);1===i.length&&i[0]===r&&(e=s)}if(/:nth-child/.test(e)){var d=e.replace(/nth-child/g,"nth-of-type"),o=""+t+d+n,i=document.querySelectorAll(o);1===i.length&&i[0]===r&&(e=d)}if(/\.\S+\.\S+/.test(e)){for(var p=e.trim().split(".").slice(1).map(function(t){return"."+t}).sort(function(t,e){return t.length-e.length});p.length;){var v=e.replace(p.shift(),"").trim(),o=""+t+v+n;if(!o||">"===v)break;var i=document.querySelectorAll(o);1===i.length&&i[0]===r&&(e=v)}if(e&&e.match(/\./g).length>2)for(var y=document.querySelectorAll(""+t+e),c=0,f=y.length;c<f;c++)if(y[c].contains(r)){var h=y[c].tagName.toLowerCase(),o=""+t+h+n,i=document.querySelectorAll(o);1===i.length&&i[0]===r&&(e=h);break}}return e}Object.defineProperty(e,"__esModule",{value:!0}),e.default=o;var a=n(1),c=u(a);t.exports=e.default}).call(e,function(){return this}())},function(t,e){"use strict";function n(t,e){var n=e.root,p=void 0===n?document:n,v=e.skip,y=void 0===v?null:v,h=e.ignore,m=void 0===h?{}:h,g=[],b=t,j=g.length,A=y&&(Array.isArray(y)?y:[y]).map(function(t){return"function"!=typeof t?function(e){return e===t}:t}),O=function(t){return y&&A.some(function(e){return e(t)})},S=!1;for(Object.keys(m).forEach(function(t){"class"===t&&(S=!0);var e=m[t];"function"!=typeof e&&("number"==typeof e&&(e=e.toString()),"string"==typeof e&&(e=new RegExp(e)),m[t]=e.test.bind(e))}),S&&!function(){var t=m.attribute;m.attribute=function(e,n,r){return m.class(n)||t&&t(e,n,r)}}();b!==p;){if(O(b)!==!0){if(d(b,g,m))break;if(r(b,g,m,p))break;if(i(b,g,m,p))break;if(f(b,g,m,p))break;u(b,g,m),g.length===j&&a(b,g,m),g.length===j&&l(b,g,m),g.length===j&&o(b,g,m),g.length===j&&c(b,g,m),g.length===j&&s(b,g,m)}b=b.parentNode,j=g.length}return b===p&&g.unshift("*"),g.join(" ")}function r(t,e,n,r){return p(t,e,n,r)}function u(t,e,n){return p(t,e,n,t.parentNode)}function o(t,e,n){var r=t.getAttribute("class");return!m(n.class,r)&&h(t,e,"."+r.trim().replace(/\s+/g,"."))}function i(t,e,n,r){return v(t,e,n,r)}function a(t,e,n){return v(t,e,n,t.parentNode)}function c(t,e,n){var r=t.attributes;return Object.keys(r).some(function(u){var o=r[u],i=o.name,a=o.value;if(m(n.attribute,i,a,g.attribute))return!1;var c="["+i+'="'+a+'"]';return h(t,e,c)})}function f(t,e,n,r){return y(t,e,n,r)}function l(t,e,n){return y(t,e,n,t.parentNode)}function s(t,e,n){var r=t.tagName.toLowerCase();return!m(n.tag,r)&&h(t,e,r)}function d(t,e,n){var r=t.getAttribute("id");return!m(n.id,r)&&(e.unshift("#"+r),!0)}function p(t,e,n,r){var u=t.getAttribute("class");if(m(n.class,u))return!1;var o=r.getElementsByClassName(u);return 1===o.length&&(e.unshift("."+u.trim().replace(/\s+/g,".")),!0)}function v(t,e,n,r){var u=t.attributes;return Object.keys(u).some(function(t){var o=u[t],i=o.name,a=o.value;if(m(n.attribute,i,a,g.attribute))return!1;var c="["+i+'="'+a+'"]',f=r.querySelectorAll(c);return 1===f.length?(e.unshift(c),!0):void 0})}function y(t,e,n,r){var u=t.tagName.toLowerCase();if(m(n.tag,u))return!1;var o=r.getElementsByTagName(u);return 1===o.length&&(e.unshift(u),!0)}function h(t,e,n){for(var r=t.parentNode,u=r.childTags||r.children,o=0,i=u.length;o<i;o++)if(u[o]===t)return e.unshift("> "+n+":nth-child("+(o+1)+")"),!0;return!1}function m(t,e,n,r){if(!e)return!0;var u=t||r;return!!u&&u(e,n||e,r)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=n;var g={attribute:function(t){return["style","data-reactid","data-react-checksum"].indexOf(t)>-1}};t.exports=e.default},function(t,e,n){(function(t){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function u(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}function o(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Array.isArray(t)?a(t,e):i(t,e)}function i(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(3===e.nodeType&&(e=e.parentNode),1!==e.nodeType)throw new Error('Invalid input - only HTMLElements or representations of them are supported! (not "'+("undefined"==typeof e?"undefined":f(e))+'")');var r=(0,s.default)(e,n),u=(0,p.default)(e,n),o=(0,y.default)(u,e,n);return r&&delete t.document,o}function a(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e.some(function(t){return 1!==t.nodeType}))throw new Error("Invalid input - only an Array of HTMLElements or representations of them is supported!");var r=(0,s.default)(e[0],n),o=(0,h.getCommonAncestor)(e,n),a=i(o,n),f=c(e),l=f[0],d=a+" "+l,p=[].concat(u(document.querySelectorAll(d)));return e.every(function(t){return p.some(function(e){return e===t})})?(r&&delete t.document,d):console.warn("\n The selected elements can't be efficiently mapped.\n Its probably best to use multiple single selectors instead!\n ",e)}function c(t){var e=(0,h.getCommonProperties)(t),n=e.classes,r=e.attributes,u=e.tag,o=[];if(u&&o.push(u),n){var i=n.map(function(t){return"."+t}).join("");o.push(i)}if(r){var a=Object.keys(r).reduce(function(t,e){return t.push("["+e+'="'+r[e]+'"]'),t},[]).join("");o.push(a)}return o.length,[o.join("")]}Object.defineProperty(e,"__esModule",{value:!0});var f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t};e.default=o,e.getSingleSelector=i,e.getMultiSelector=a;var l=n(1),s=r(l),d=n(4),p=r(d),v=n(3),y=r(v),h=n(2)}).call(e,function(){return this}())}])});
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.OptimalSelect=e():t.OptimalSelect=e()}(this,function(){return function(t){function e(n){if(r[n])return r[n].exports;var u=r[n]={exports:{},id:n,loaded:!1};return t[n].call(u.exports,u,u.exports,e),u.loaded=!0,u.exports}var r={};return e.m=t,e.c=r,e.p="",e(0)}([function(t,e,r){"use strict";function n(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}function u(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.common=e.optimize=e.select=void 0;var o=r(5),i=u(o),a=r(3),f=u(a),c=r(2),l=n(c);e.select=i.default,e.optimize=f.default,e.common=l,e.default=i.default},function(t,e){(function(r){"use strict";function n(t){return Array.isArray(t)?t:Array.from(t)}function u(t,e){if(r.document)return!1;var u=e.context;r.document=u||function(){for(var e=t;e.parent;)e=e.parent;return e}();var a=Object.getPrototypeOf(r.document);return Object.getOwnPropertyDescriptor(a,"childTags")||Object.defineProperty(a,"childTags",{enumerable:!0,get:function(){return this.children.filter(function(t){return"tag"===t.type||"script"===t.type||"style"===t.type})}}),Object.getOwnPropertyDescriptor(a,"attributes")||Object.defineProperty(a,"attributes",{enumerable:!0,get:function(){var t=this.attribs,e=Object.keys(t),r=e.reduce(function(e,r,n){return e[n]={name:r,value:t[r]},e},{});return Object.defineProperty(r,"length",{enumerable:!1,configurable:!1,value:e.length}),r}}),a.getAttribute||(a.getAttribute=function(t){return this.attribs[t]||null}),a.getElementsByTagName||(a.getElementsByTagName=function(t){var e=[];return i(this.childTags,function(r){r.name!==t&&"*"!==t||e.push(r)}),e}),a.getElementsByClassName||(a.getElementsByClassName=function(t){var e=t.trim().replace(/\s+/g," ").split(" "),r=[];return i([this],function(t){var n=t.attribs.class;n&&e.every(function(t){return n.indexOf(t)>-1})&&r.push(t)}),r}),a.querySelectorAll||(a.querySelectorAll=function(t){var e=this;t=t.replace(/(>)(\S)/g,"$1 $2").trim();var r=o(t),u=n(r),i=u[0],a=u.slice(1),f=a.length;return i(this).filter(function(t){for(var r=0;r<f;){if(t=a[r](t,e),!t)return!1;r+=1}return!0})}),a.contains||(a.contains=function(t){var e=!1;return i([this],function(r,n){r===t&&(e=!0,n())}),e}),!0}function o(t){return t.split(" ").reverse().map(function(t,e){var r=0===e,n=t.split(":"),u=c(n,2),o=u[0],l=u[1],s=null,d=null;if(function(){switch(!0){case/>/.test(o):d=function(t){return function(e){return e(t.parent)&&t.parent}};break;case/^\./.test(o):var t=o.substr(1).split(".");s=function(e){var r=e.attribs.class;return r&&t.every(function(t){return r.indexOf(t)>-1})},d=function(e,n){return r?e.getElementsByClassName(t.join(" ")):"function"==typeof e?e(s):a(e,n,s)};break;case/^\[/.test(o):var e=o.replace(/\[|\]|"/g,"").split("="),n=c(e,2),u=n[0],l=n[1];s=function(t){var e=Object.keys(t.attribs).indexOf(u)>-1;return!(!e||l&&t.attribs[u]!==l)},d=function(t,e){if(r){var n=function(){var e=[];return i([t],function(t){s(t)&&e.push(t)}),{v:e}}();if("object"===("undefined"==typeof n?"undefined":f(n)))return n.v}return"function"==typeof t?t(s):a(t,e,s)};break;case/^#/.test(o):var p=o.substr(1);s=function(t){return t.attribs.id===p},d=function(t,e){if(r){var n=function(){var e=[];return i([t],function(t,r){s(t)&&(e.push(t),r())}),{v:e}}();if("object"===("undefined"==typeof n?"undefined":f(n)))return n.v}return"function"==typeof t?t(s):a(t,e,s)};break;case/\*/.test(o):s=function(t){return!0},d=function(t,e){if(r){var n=function(){var e=[];return i([t],function(t){return e.push(t)}),{v:e}}();if("object"===("undefined"==typeof n?"undefined":f(n)))return n.v}return"function"==typeof t?t(s):a(t,e,s)};break;default:s=function(t){return t.name===o},d=function(t,e){if(r){var n=function(){var e=[];return i([t],function(t){s(t)&&e.push(t)}),{v:e}}();if("object"===("undefined"==typeof n?"undefined":f(n)))return n.v}return"function"==typeof t?t(s):a(t,e,s)}}}(),!l)return d;var p=l.match(/-(child|type)\((\d+)\)$/),v=p[1],y=parseInt(p[2],10)-1,h=function(t){if(t){var e=t.parent.childTags;"type"===v&&(e=e.filter(s));var r=e.findIndex(function(e){return e===t});if(r===y)return!0}return!1};return function(t){var e=d(t);return r?e.reduce(function(t,e){return h(e)&&t.push(e),t},[]):h(e)&&e}})}function i(t,e){t.forEach(function(t){var r=!0;e(t,function(){return r=!1}),t.childTags&&r&&i(t.childTags,e)})}function a(t,e,r){for(;t.parent;){if(t=t.parent,r(t))return t;if(t===e)break}return null}Object.defineProperty(e,"__esModule",{value:!0});var f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},c=function(){function t(t,e){var r=[],n=!0,u=!1,o=void 0;try{for(var i,a=t[Symbol.iterator]();!(n=(i=a.next()).done)&&(r.push(i.value),!e||r.length!==e);n=!0);}catch(f){u=!0,o=f}finally{try{!n&&a.return&&a.return()}finally{if(u)throw o}}return r}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();e.default=u,t.exports=e.default}).call(e,function(){return this}())},function(t,e){"use strict";function r(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=e.root,n=void 0===r?document:r,u=(e.skip,e.ignore,[]);t.forEach(function(t,e){for(var r=[];t!==n;)t=t.parentNode,r.unshift(t);u[e]=r}),u.sort(function(t,e){return t.length-e.length});for(var o=u.shift(),i=null,a=function(){var t=o[f],e=u.some(function(e){return!e.some(function(e){return e===t})});return e?"break":void(i=t)},f=0,c=o.length;f<c;f++){var l=a();if("break"===l)break}return i}function n(t){var e={classes:[],attributes:{},tag:null};return t.forEach(function(t){var r=e.classes,n=e.attributes,u=e.tag;if(void 0!==r){var o=t.getAttribute("class");o?(o=o.trim().split(" "),r.length?(r=r.filter(function(t){return o.some(function(e){return e===t})}),r.length?e.classes=r:delete e.classes):e.classes=o):delete e.classes}if(void 0!==n&&!function(){var r=t.attributes,u=Object.keys(r).reduce(function(t,e){var n=r[e],u=n.name;return"class"!==u&&(t[u]=n.value),t},{}),o=Object.keys(u),i=Object.keys(n);o.length?i.length?(n=i.reduce(function(t,e){var r=n[e];return r===u[e]&&(t[e]=r),t},{}),Object.keys(n).length?e.attributes=n:delete e.attributes):e.attributes=u:delete e.attributes}(),void 0!==u){var i=t.tagName.toLowerCase();u?i!==u&&delete e.tag:e.tag=i}}),e}Object.defineProperty(e,"__esModule",{value:!0}),e.getCommonAncestor=r,e.getCommonProperties=n},function(t,e,r){(function(n){"use strict";function u(t){return t&&t.__esModule?t:{"default":t}}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]=t[e];return r}return Array.from(t)}function i(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(Array.isArray(e)||(e=e.length?[].concat(o(e)):[e]),!e.length||e.some(function(t){return 1!==t.nodeType}))throw new Error('Invalid input - to compare HTMLElements its necessary to provide a reference of the selected node(s)! (missing "elements")');var u=(0,l.default)(e[0],r),i=t.replace(/> /g,">").split(/\s+(?=(?:(?:[^"]*"){2})*[^"]*$)/);if(i.length<3)return a("",t,"",e);for(var f=[i.pop()];i.length>1;){var c=i.pop(),s=i.join(" "),d=f.join(" "),p=s+" "+d,v=document.querySelectorAll(p);v.length!==e.length&&f.unshift(a(s,c,d,e))}return f.unshift(i[0]),i=f,i[0]=a("",i[0],i.slice(1).join(" "),e),i[i.length-1]=a(i.slice(0,-1).join(" "),i[i.length-1],"",e),u&&delete n.document,i.join(" ").replace(/>/g,"> ").trim()}function a(t,e,r,n){if(t.length&&(t+=" "),r.length&&(r=" "+r),/\[*\]/.test(e)){var u=e.replace(/=.*$/,"]"),o=""+t+u+r,i=document.querySelectorAll(o);if(f(i,n))e=u;else for(var a=document.querySelectorAll(""+t+u),c=function(){var u=a[l];if(n.some(function(t){return u.contains(t)})){var c=u.tagName.toLowerCase();return o=""+t+c+r,i=document.querySelectorAll(o),f(i,n)&&(e=c),"break"}},l=0,s=a.length;l<s;l++){var o,i,d=c();if("break"===d)break}}if(/>/.test(e)){var p=e.replace(/>/,""),o=""+t+p+r,i=document.querySelectorAll(o);f(i,n)&&(e=p)}if(/:nth-child/.test(e)){var v=e.replace(/nth-child/g,"nth-of-type"),o=""+t+v+r,i=document.querySelectorAll(o);f(i,n)&&(e=v)}if(/\.\S+\.\S+/.test(e)){for(var y=e.trim().split(".").slice(1).map(function(t){return"."+t}).sort(function(t,e){return t.length-e.length});y.length;){var h=e.replace(y.shift(),"").trim(),o=""+t+h+r;if(!o||">"===h)break;var i=document.querySelectorAll(o);f(i,n)&&(e=h)}if(e&&e.match(/\./g).length>2)for(var m=document.querySelectorAll(""+t+e),g=function(){var u=m[l];if(n.some(function(t){return u.contains(t)})){var a=u.tagName.toLowerCase();return o=""+t+a+r,i=document.querySelectorAll(o),f(i,n)&&(e=a),"break"}},l=0,s=m.length;l<s;l++){var o,i,b=g();if("break"===b)break}}return e}function f(t,e){var r=t.length;return r===e.length&&e.every(function(e){for(var n=0;n<r;n++)if(t[n]===e)return!0;return!1})}Object.defineProperty(e,"__esModule",{value:!0}),e.default=i;var c=r(1),l=u(c);t.exports=e.default}).call(e,function(){return this}())},function(t,e){"use strict";function r(t,e){var r=e.root,p=void 0===r?document:r,v=e.skip,y=void 0===v?null:v,h=e.ignore,m=void 0===h?{}:h,g=[],b=t,j=g.length,A=y&&(Array.isArray(y)?y:[y]).map(function(t){return"function"!=typeof t?function(e){return e===t}:t}),O=function(t){return y&&A.some(function(e){return e(t)})},k=!1;for(Object.keys(m).forEach(function(t){"class"===t&&(k=!0);var e=m[t];"function"!=typeof e&&("number"==typeof e&&(e=e.toString()),"string"==typeof e&&(e=new RegExp(e)),m[t]=e.test.bind(e))}),k&&!function(){var t=m.attribute;m.attribute=function(e,r,n){return m.class(r)||t&&t(e,r,n)}}();b!==p;){if(O(b)!==!0){if(d(b,g,m))break;if(n(b,g,m,p))break;if(i(b,g,m,p))break;if(c(b,g,m,p))break;u(b,g,m),g.length===j&&a(b,g,m),g.length===j&&l(b,g,m),g.length===j&&o(b,g,m),g.length===j&&f(b,g,m),g.length===j&&s(b,g,m)}b=b.parentNode,j=g.length}return b===p&&g.unshift("*"),g.join(" ")}function n(t,e,r,n){return p(t,e,r,n)}function u(t,e,r){return p(t,e,r,t.parentNode)}function o(t,e,r){var n=t.getAttribute("class");return!m(r.class,n)&&h(t,e,"."+n.trim().replace(/\s+/g,"."))}function i(t,e,r,n){return v(t,e,r,n)}function a(t,e,r){return v(t,e,r,t.parentNode)}function f(t,e,r){var n=t.attributes;return Object.keys(n).some(function(u){var o=n[u],i=o.name,a=o.value;if(m(r.attribute,i,a,g.attribute))return!1;var f="["+i+'="'+a+'"]';return h(t,e,f)})}function c(t,e,r,n){return y(t,e,r,n)}function l(t,e,r){return y(t,e,r,t.parentNode)}function s(t,e,r){var n=t.tagName.toLowerCase();return!m(r.tag,n)&&h(t,e,n)}function d(t,e,r){var n=t.getAttribute("id");return!m(r.id,n)&&(e.unshift("#"+n),!0)}function p(t,e,r,n){var u=t.getAttribute("class");if(m(r.class,u))return!1;var o=n.getElementsByClassName(u);return 1===o.length&&(e.unshift("."+u.trim().replace(/\s+/g,".")),!0)}function v(t,e,r,n){var u=t.attributes;return Object.keys(u).some(function(t){var o=u[t],i=o.name,a=o.value;if(m(r.attribute,i,a,g.attribute))return!1;var f="["+i+'="'+a+'"]',c=n.querySelectorAll(f);return 1===c.length?(e.unshift(f),!0):void 0})}function y(t,e,r,n){var u=t.tagName.toLowerCase();if(m(r.tag,u))return!1;var o=n.getElementsByTagName(u);return 1===o.length&&(e.unshift(u),!0)}function h(t,e,r){for(var n=t.parentNode,u=n.childTags||n.children,o=0,i=u.length;o<i;o++)if(u[o]===t)return e.unshift("> "+r+":nth-child("+(o+1)+")"),!0;return!1}function m(t,e,r,n){if(!e)return!0;var u=t||n;return!!u&&u(e,r||e,n)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=r;var g={attribute:function(t){return["style","data-reactid","data-react-checksum"].indexOf(t)>-1}};t.exports=e.default},function(t,e,r){(function(t){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function u(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]=t[e];return r}return Array.from(t)}function o(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.length?a(t,e):i(t,e)}function i(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(3===e.nodeType&&(e=e.parentNode),1!==e.nodeType)throw new Error('Invalid input - only HTMLElements or representations of them are supported! (not "'+("undefined"==typeof e?"undefined":c(e))+'")');var n=(0,s.default)(e,r),u=(0,p.default)(e,r),o=(0,y.default)(u,e,r);return n&&delete t.document,o}function a(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Array.isArray(e)||(e=[].concat(u(e))),e.some(function(t){return 1!==t.nodeType}))throw new Error("Invalid input - only an Array of HTMLElements or representations of them is supported!");var n=(0,s.default)(e[0],r),o=(0,h.getCommonAncestor)(e,r),a=i(o,r),c=f(e),l=c[0],d=(0,y.default)(a+" "+l,e,r),p=[].concat(u(document.querySelectorAll(d)));return e.every(function(t){return p.some(function(e){return e===t})})?(n&&delete t.document,d):console.warn("\n The selected elements can't be efficiently mapped.\n Its probably best to use multiple single selectors instead!\n ",e)}function f(t){var e=(0,h.getCommonProperties)(t),r=e.classes,n=e.attributes,u=e.tag,o=[];if(u&&o.push(u),r){var i=r.map(function(t){return"."+t}).join("");o.push(i)}if(n){var a=Object.keys(n).reduce(function(t,e){return t.push("["+e+'="'+n[e]+'"]'),t},[]).join("");o.push(a)}return o.length,[o.join("")]}Object.defineProperty(e,"__esModule",{value:!0});var c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t};e.default=o,e.getSingleSelector=i,e.getMultiSelector=a;var l=r(1),s=n(l),d=r(4),p=n(d),v=r(3),y=n(v),h=r(2)}).call(e,function(){return this}())}])});
//# sourceMappingURL=optimal-select.min.js.map

@@ -14,19 +14,34 @@ 'use strict';

function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } /**
* # Optimize
*
* 1.) Improve efficiency through shorter selectors by removing redundancy
* 2.) Improve robustness through selector transformation
*/
/**
* Apply different optimization techniques
*
* @param {string} selector - [description]
* @param {HTMLElement} element - [description]
* @return {string} - [description]
* @param {string} selector - [description]
* @param {HTMLElement|Array.<HTMLElement>} element - [description]
* @param {Object} options - [description]
* @return {string} - [description]
*/
function optimize(selector, element) {
function optimize(selector, elements) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
if (!element || element.nodeType !== 1) {
throw new Error('Invalid input - to compare HTMLElements its necessary to provide a reference of the node! (missing "element")');
// convert single entry and NodeList
if (!Array.isArray(elements)) {
elements = !elements.length ? [elements] : [].concat(_toConsumableArray(elements));
}
var globalModified = (0, _adapt2.default)(element, options);
if (!elements.length || elements.some(function (element) {
return element.nodeType !== 1;
})) {
throw new Error('Invalid input - to compare HTMLElements its necessary to provide a reference of the selected node(s)! (missing "elements")');
}
var globalModified = (0, _adapt2.default)(elements[0], options);
// chunk parts outside of quotes (http://stackoverflow.com/a/25663729)

@@ -36,3 +51,3 @@ var path = selector.replace(/> /g, '>').split(/\s+(?=(?:(?:[^"]*"){2})*[^"]*$)/);

if (path.length < 3) {
return optimizePart('', selector, '', element);
return optimizePart('', selector, '', elements);
}

@@ -48,4 +63,4 @@

var matches = document.querySelectorAll(pattern);
if (matches.length !== 1) {
shortened.unshift(optimizePart(prePart, current, postPart, element));
if (matches.length !== elements.length) {
shortened.unshift(optimizePart(prePart, current, postPart, elements));
}

@@ -57,4 +72,4 @@ }

// optimize start + end
path[0] = optimizePart('', path[0], path.slice(1).join(' '), element);
path[path.length - 1] = optimizePart(path.slice(0, -1).join(' '), path[path.length - 1], '', element);
path[0] = optimizePart('', path[0], path.slice(1).join(' '), elements);
path[path.length - 1] = optimizePart(path.slice(0, -1).join(' '), path[path.length - 1], '', elements);

@@ -71,16 +86,9 @@ if (globalModified) {

*
* @param {string} prePart - [description]
* @param {string} current - [description]
* @param {string} postPart - [description]
* @param {HTMLElement} element - [description]
* @return {string} - [description]
* @param {string} prePart - [description]
* @param {string} current - [description]
* @param {string} postPart - [description]
* @param {Array.<HTMLElement>} elements - [description]
* @return {string} - [description]
*/
/**
* # Optimize
*
* 1.) Improve efficiency through shorter selectors by removing redundancy
* 2.) Improve robustness through selector transformation
*/
function optimizePart(prePart, current, postPart, element) {
function optimizePart(prePart, current, postPart, elements) {
if (prePart.length) prePart = prePart + ' ';

@@ -94,17 +102,31 @@ if (postPart.length) postPart = ' ' + postPart;

var matches = document.querySelectorAll(pattern);
if (matches.length === 1 && matches[0] === element) {
if (compareResults(matches, elements)) {
current = key;
} else {
// robustness: replace specific key-value with tag (heuristic)
// robustness: replace specific key-value with base tag (heuristic)
var references = document.querySelectorAll('' + prePart + key);
for (var i = 0, l = references.length; i < l; i++) {
if (references[i].contains(element)) {
var description = references[i].tagName.toLowerCase();
var pattern = '' + prePart + description + postPart;
var matches = document.querySelectorAll(pattern);
if (matches.length === 1 && matches[0] === element) {
var _loop = function _loop() {
var reference = references[i];
if (elements.some(function (element) {
return reference.contains(element);
})) {
var description = reference.tagName.toLowerCase();
pattern = '' + prePart + description + postPart;
matches = document.querySelectorAll(pattern);
if (compareResults(matches, elements)) {
current = description;
}
break;
return 'break';
}
};
for (var i = 0, l = references.length; i < l; i++) {
var pattern;
var matches;
var _ret = _loop();
if (_ret === 'break') break;
}

@@ -119,3 +141,3 @@ }

var matches = document.querySelectorAll(pattern);
if (matches.length === 1 && matches[0] === element) {
if (compareResults(matches, elements)) {
current = descendant;

@@ -131,3 +153,3 @@ }

var matches = document.querySelectorAll(pattern);
if (matches.length === 1 && matches[0] === element) {
if (compareResults(matches, elements)) {
current = type;

@@ -151,3 +173,3 @@ }

var matches = document.querySelectorAll(pattern);
if (matches.length === 1 && matches[0] === element) {
if (compareResults(matches, elements)) {
current = partial;

@@ -159,14 +181,28 @@ }

var _references = document.querySelectorAll('' + prePart + current);
for (var i = 0, l = _references.length; i < l; i++) {
if (_references[i].contains(element)) {
var _loop2 = function _loop2() {
var reference = _references[i];
if (elements.some(function (element) {
return reference.contains(element);
})) {
// TODO:
// - check using attributes + regard excludes
var _description = _references[i].tagName.toLowerCase();
var pattern = '' + prePart + _description + postPart;
var matches = document.querySelectorAll(pattern);
if (matches.length === 1 && matches[0] === element) {
current = _description;
var description = reference.tagName.toLowerCase();
pattern = '' + prePart + description + postPart;
matches = document.querySelectorAll(pattern);
if (compareResults(matches, elements)) {
current = description;
}
break;
return 'break';
}
};
for (var i = 0, l = _references.length; i < l; i++) {
var pattern;
var matches;
var _ret2 = _loop2();
if (_ret2 === 'break') break;
}

@@ -178,3 +214,23 @@ }

}
/**
* Evaluate matches with expected elements
*
* @param {Array.<HTMLElement>} matches - [description]
* @param {Array.<HTMLElement>} elements - [description]
* @return {Boolean} - [description]
*/
function compareResults(matches, elements) {
var length = matches.length;
return length === elements.length && elements.every(function (element) {
for (var i = 0; i < length; i++) {
if (matches[i] === element) {
return true;
}
}
return false;
});
}
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,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R0FBOUMsRUFBbUQ7QUFDakQsWUFBSSxZQUFXLENBQVgsRUFBYyxRQUFkLENBQXVCLE9BQXZCLENBQUosRUFBcUM7OztBQUduQyxjQUFNLGVBQWMsWUFBVyxDQUFYLEVBQWMsT0FBZCxDQUFzQixXQUF0QixFQUFwQjtBQUNBLGNBQUksZUFBYSxPQUFiLEdBQXVCLFlBQXZCLEdBQXFDLFFBQXpDO0FBQ0EsY0FBSSxVQUFVLFNBQVMsZ0JBQVQsQ0FBMEIsT0FBMUIsQ0FBZDtBQUNBLGNBQUksUUFBUSxNQUFSLEtBQW1CLENBQW5CLElBQXdCLFFBQVEsQ0FBUixNQUFlLE9BQTNDLEVBQW9EO0FBQ2xELHNCQUFVLFlBQVY7QUFDRDtBQUNEO0FBQ0Q7QUFDRjtBQUNGO0FBQ0Y7O0FBRUQsU0FBTyxPQUFQO0FBQ0QiLCJmaWxlIjoib3B0aW1pemUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICMgT3B0aW1pemVcbiAqXG4gKiAxLikgSW1wcm92ZSBlZmZpY2llbmN5IHRocm91Z2ggc2hvcnRlciBzZWxlY3RvcnMgYnkgcmVtb3ZpbmcgcmVkdW5kYW5jeVxuICogMi4pIEltcHJvdmUgcm9idXN0bmVzcyB0aHJvdWdoIHNlbGVjdG9yIHRyYW5zZm9ybWF0aW9uXG4gKi9cblxuaW1wb3J0IGFkYXB0IGZyb20gJy4vYWRhcHQnXG5cbi8qKlxuICogQXBwbHkgZGlmZmVyZW50IG9wdGltaXphdGlvbiB0ZWNobmlxdWVzXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSAgICAgIHNlbGVjdG9yIC0gW2Rlc2NyaXB0aW9uXVxuICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IGVsZW1lbnQgIC0gW2Rlc2NyaXB0aW9uXVxuICogQHJldHVybiB7c3RyaW5nfSAgICAgICAgICAgICAgIC0gW2Rlc2NyaXB0aW9uXVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvcHRpbWl6ZSAoc2VsZWN0b3IsIGVsZW1lbnQsIG9wdGlvbnMgPSB7fSkge1xuXG4gIGlmICghZWxlbWVudCB8fCBlbGVtZW50Lm5vZGVUeXBlICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGlucHV0IC0gdG8gY29tcGFyZSBIVE1MRWxlbWVudHMgaXRzIG5lY2Vzc2FyeSB0byBwcm92aWRlIGEgcmVmZXJlbmNlIG9mIHRoZSBub2RlISAobWlzc2luZyBcImVsZW1lbnRcIilgKVxuICB9XG5cbiAgY29uc3QgZ2xvYmFsTW9kaWZpZWQgPSBhZGFwdChlbGVtZW50LCBvcHRpb25zKVxuXG4gIC8vIGNodW5rIHBhcnRzIG91dHNpZGUgb2YgcXVvdGVzIChodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yNTY2MzcyOSlcbiAgdmFyIHBhdGggPSBzZWxlY3Rvci5yZXBsYWNlKC8+IC9nLCAnPicpLnNwbGl0KC9cXHMrKD89KD86KD86W15cIl0qXCIpezJ9KSpbXlwiXSokKS8pXG5cbiAgaWYgKHBhdGgubGVuZ3RoIDwgMykge1xuICAgIHJldHVybiBvcHRpbWl6ZVBhcnQoJycsIHNlbGVjdG9yLCAnJywgZWxlbWVudClcbiAgfVxuXG4gIGNvbnN0IHNob3J0ZW5lZCA9IFtwYXRoLnBvcCgpXVxuICB3aGlsZSAocGF0aC5sZW5ndGggPiAxKSAge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBwYXRoLnBvcCgpXG4gICAgY29uc3QgcHJlUGFydCA9IHBhdGguam9pbignICcpXG4gICAgY29uc3QgcG9zdFBhcnQgPSBzaG9ydGVuZWQuam9pbignICcpXG5cbiAgICBjb25zdCBwYXR0ZXJuID0gYCR7cHJlUGFydH0gJHtwb3N0UGFydH1gXG4gICAgY29uc3QgbWF0Y2hlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwocGF0dGVybilcbiAgICBpZiAobWF0Y2hlcy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHNob3J0ZW5lZC51bnNoaWZ0KG9wdGltaXplUGFydChwcmVQYXJ0LCBjdXJyZW50LCBwb3N0UGFydCwgZWxlbWVudCkpXG4gICAgfVxuICB9XG4gIHNob3J0ZW5lZC51bnNoaWZ0KHBhdGhbMF0pXG4gIHBhdGggPSBzaG9ydGVuZWRcblxuICAvLyBvcHRpbWl6ZSBzdGFydCArIGVuZFxuICBwYXRoWzBdID0gb3B0aW1pemVQYXJ0KCcnLCBwYXRoWzBdLCBwYXRoLnNsaWNlKDEpLmpvaW4oJyAnKSwgZWxlbWVudClcbiAgcGF0aFtwYXRoLmxlbmd0aC0xXSA9IG9wdGltaXplUGFydChwYXRoLnNsaWNlKDAsIC0xKS5qb2luKCcgJyksIHBhdGhbcGF0aC5sZW5ndGgtMV0sICcnLCBlbGVtZW50KVxuXG4gIGlmIChnbG9iYWxNb2RpZmllZCkge1xuICAgIGRlbGV0ZSBnbG9iYWwuZG9jdW1lbnRcbiAgfVxuXG4gIHJldHVybiBwYXRoLmpvaW4oJyAnKS5yZXBsYWNlKC8+L2csICc+ICcpLnRyaW0oKVxufVxuXG4vKipcbiAqIEltcHJvdmUgYSBjaHVuayBvZiB0aGUgc2VsZWN0b3JcbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgICAgcHJlUGFydCAgLSBbZGVzY3JpcHRpb25dXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgICAgY3VycmVudCAgLSBbZGVzY3JpcHRpb25dXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgICAgcG9zdFBhcnQgLSBbZGVzY3JpcHRpb25dXG4gKiBAcGFyYW0gIHtIVE1MRWxlbWVudH0gZWxlbWVudCAgLSBbZGVzY3JpcHRpb25dXG4gKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgICAgICAgICAgLSBbZGVzY3JpcHRpb25dXG4gKi9cbmZ1bmN0aW9uIG9wdGltaXplUGFydCAocHJlUGFydCwgY3VycmVudCwgcG9zdFBhcnQsIGVsZW1lbnQpIHtcbiAgaWYgKHByZVBhcnQubGVuZ3RoKSBwcmVQYXJ0ID0gYCR7cHJlUGFydH0gYFxuICBpZiAocG9zdFBhcnQubGVuZ3RoKSBwb3N0UGFydCA9IGAgJHtwb3N0UGFydH1gXG5cbiAgLy8gcm9idXN0bmVzczogYXR0cmlidXRlIHdpdGhvdXQgdmFsdWUgKGdlbmVyYWxpemF0aW9uKVxuICBpZiAoL1xcWypcXF0vLnRlc3QoY3VycmVudCkpIHtcbiAgICBjb25zdCBrZXkgPSBjdXJyZW50LnJlcGxhY2UoLz0uKiQvLCAnXScpXG4gICAgdmFyIHBhdHRlcm4gPSBgJHtwcmVQYXJ0fSR7a2V5fSR7cG9zdFBhcnR9YFxuICAgIHZhciBtYXRjaGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChwYXR0ZXJuKVxuICAgIGlmIChtYXRjaGVzLmxlbmd0aCA9PT0gMSAmJiBtYXRjaGVzWzBdID09PSBlbGVtZW50KSB7XG4gICAgICBjdXJyZW50ID0ga2V5XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHJvYnVzdG5lc3M6IHJlcGxhY2Ugc3BlY2lmaWMga2V5LXZhbHVlIHdpdGggdGFnIChoZXVyaXN0aWMpXG4gICAgICBjb25zdCByZWZlcmVuY2VzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgJHtwcmVQYXJ0fSR7a2V5fWApXG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IHJlZmVyZW5jZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChyZWZlcmVuY2VzW2ldLmNvbnRhaW5zKGVsZW1lbnQpKSB7XG4gICAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSByZWZlcmVuY2VzW2ldLnRhZ05hbWUudG9Mb3dlckNhc2UoKVxuICAgICAgICAgIHZhciBwYXR0ZXJuID0gYCR7cHJlUGFydH0ke2Rlc2NyaXB0aW9ufSR7cG9zdFBhcnR9YFxuICAgICAgICAgIHZhciBtYXRjaGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChwYXR0ZXJuKVxuICAgICAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCA9PT0gMSAmJiBtYXRjaGVzWzBdID09PSBlbGVtZW50KSB7XG4gICAgICAgICAgICBjdXJyZW50ID0gZGVzY3JpcHRpb25cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIHJvYnVzdG5lc3M6IGRlc2NlbmRhbnQgaW5zdGVhZCBjaGlsZCAoaGV1cmlzdGljKVxuICBpZiAoLz4vLnRlc3QoY3VycmVudCkpIHtcbiAgICBjb25zdCBkZXNjZW5kYW50ID0gY3VycmVudC5yZXBsYWNlKC8+LywgJycpXG4gICAgdmFyIHBhdHRlcm4gPSBgJHtwcmVQYXJ0fSR7ZGVzY2VuZGFudH0ke3Bvc3RQYXJ0fWBcbiAgICB2YXIgbWF0Y2hlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwocGF0dGVybilcbiAgICBpZiAobWF0Y2hlcy5sZW5ndGggPT09IDEgJiYgbWF0Y2hlc1swXSA9PT0gZWxlbWVudCkge1xuICAgICAgY3VycmVudCA9IGRlc2NlbmRhbnRcbiAgICB9XG4gIH1cblxuICAvLyByb2J1c3RuZXNzOiAnbnRoLW9mLXR5cGUnIGluc3RlYWQgJ250aC1jaGlsZCcgKGhldXJpc3RpYylcbiAgaWYgKC86bnRoLWNoaWxkLy50ZXN0KGN1cnJlbnQpKSB7XG4gICAgLy8gVE9ETzogY29uc2lkZXIgY29tcGxldGUgY292ZXJhZ2Ugb2YgJ250aC1vZi10eXBlJyByZXBsYWNlbWVudFxuICAgIGNvbnN0IHR5cGUgPSBjdXJyZW50LnJlcGxhY2UoL250aC1jaGlsZC9nLCAnbnRoLW9mLXR5cGUnKVxuICAgIHZhciBwYXR0ZXJuID0gYCR7cHJlUGFydH0ke3R5cGV9JHtwb3N0UGFydH1gXG4gICAgdmFyIG1hdGNoZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHBhdHRlcm4pXG4gICAgaWYgKG1hdGNoZXMubGVuZ3RoID09PSAxICYmIG1hdGNoZXNbMF0gPT09IGVsZW1lbnQpIHtcbiAgICAgIGN1cnJlbnQgPSB0eXBlXG4gICAgfVxuICB9XG5cbiAgLy8gZWZmaWNpZW5jeTogY29tYmluYXRpb25zIG9mIGNsYXNzbmFtZSAocGFydGlhbCBwZXJtdXRhdGlvbnMpXG4gIGlmICgvXFwuXFxTK1xcLlxcUysvLnRlc3QoY3VycmVudCkpIHtcbiAgICBjb25zdCBuYW1lcyA9IGN1cnJlbnQudHJpbSgpLnNwbGl0KCcuJykuc2xpY2UoMSkubWFwKChuYW1lKSA9PiBgLiR7bmFtZX1gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc29ydCgoY3VyciwgbmV4dCkgPT4gY3Vyci5sZW5ndGggLSBuZXh0Lmxlbmd0aClcbiAgICB3aGlsZSAobmFtZXMubGVuZ3RoKSB7XG4gICAgICB2YXIgcGFydGlhbCA9IGN1cnJlbnQucmVwbGFjZShuYW1lcy5zaGlmdCgpLCAnJykudHJpbSgpXG4gICAgICB2YXIgcGF0dGVybiA9IGAke3ByZVBhcnR9JHtwYXJ0aWFsfSR7cG9zdFBhcnR9YFxuICAgICAgaWYgKCFwYXR0ZXJuIHx8IHBhcnRpYWwgPT09ICc+Jykge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgdmFyIG1hdGNoZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHBhdHRlcm4pXG4gICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPT09IDEgJiYgbWF0Y2hlc1swXSA9PT0gZWxlbWVudCkge1xuICAgICAgICBjdXJyZW50ID0gcGFydGlhbFxuICAgICAgfVxuICAgIH1cbiAgICAvLyByb2J1c3RuZXNzOiBkZWdyYWRlIGNvbXBsZXggY2xhc3NuYW1lIChoZXVyaXN0aWMpXG4gICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudC5tYXRjaCgvXFwuL2cpLmxlbmd0aCA+IDIpIHtcbiAgICAgIGNvbnN0IHJlZmVyZW5jZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAke3ByZVBhcnR9JHtjdXJyZW50fWApXG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IHJlZmVyZW5jZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChyZWZlcmVuY2VzW2ldLmNvbnRhaW5zKGVsZW1lbnQpKSB7XG4gICAgICAgICAgLy8gVE9ETzpcbiAgICAgICAgICAvLyAtIGNoZWNrIHVzaW5nIGF0dHJpYnV0ZXMgKyByZWdhcmQgZXhjbHVkZXNcbiAgICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHJlZmVyZW5jZXNbaV0udGFnTmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgdmFyIHBhdHRlcm4gPSBgJHtwcmVQYXJ0fSR7ZGVzY3JpcHRpb259JHtwb3N0UGFydH1gXG4gICAgICAgICAgdmFyIG1hdGNoZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHBhdHRlcm4pXG4gICAgICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID09PSAxICYmIG1hdGNoZXNbMF0gPT09IGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBkZXNjcmlwdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGN1cnJlbnRcbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
//# sourceMappingURL=data:application/json;base64,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bkIsRUFBNEI7QUFDMUIsZUFBTyxJQUFQO0FBQ0Q7QUFDRjtBQUNELFdBQU8sS0FBUDtBQUNELEdBUG9DLENBQXJDO0FBUUQiLCJmaWxlIjoib3B0aW1pemUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICMgT3B0aW1pemVcbiAqXG4gKiAxLikgSW1wcm92ZSBlZmZpY2llbmN5IHRocm91Z2ggc2hvcnRlciBzZWxlY3RvcnMgYnkgcmVtb3ZpbmcgcmVkdW5kYW5jeVxuICogMi4pIEltcHJvdmUgcm9idXN0bmVzcyB0aHJvdWdoIHNlbGVjdG9yIHRyYW5zZm9ybWF0aW9uXG4gKi9cblxuaW1wb3J0IGFkYXB0IGZyb20gJy4vYWRhcHQnXG5cbi8qKlxuICogQXBwbHkgZGlmZmVyZW50IG9wdGltaXphdGlvbiB0ZWNobmlxdWVzXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgLSBbZGVzY3JpcHRpb25dXG4gKiBAcGFyYW0gIHtIVE1MRWxlbWVudHxBcnJheS48SFRNTEVsZW1lbnQ+fSBlbGVtZW50ICAtIFtkZXNjcmlwdGlvbl1cbiAqIEBwYXJhbSAge09iamVjdH0gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgIC0gW2Rlc2NyaXB0aW9uXVxuICogQHJldHVybiB7c3RyaW5nfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBbZGVzY3JpcHRpb25dXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9wdGltaXplIChzZWxlY3RvciwgZWxlbWVudHMsIG9wdGlvbnMgPSB7fSkge1xuXG4gIC8vIGNvbnZlcnQgc2luZ2xlIGVudHJ5IGFuZCBOb2RlTGlzdFxuICBpZiAoIUFycmF5LmlzQXJyYXkoZWxlbWVudHMpKSB7XG4gICAgZWxlbWVudHMgPSAhZWxlbWVudHMubGVuZ3RoID8gW2VsZW1lbnRzXSA6IFsuLi5lbGVtZW50c11cbiAgfVxuXG4gIGlmICghZWxlbWVudHMubGVuZ3RoIHx8IGVsZW1lbnRzLnNvbWUoKGVsZW1lbnQpID0+IGVsZW1lbnQubm9kZVR5cGUgIT09IDEpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGlucHV0IC0gdG8gY29tcGFyZSBIVE1MRWxlbWVudHMgaXRzIG5lY2Vzc2FyeSB0byBwcm92aWRlIGEgcmVmZXJlbmNlIG9mIHRoZSBzZWxlY3RlZCBub2RlKHMpISAobWlzc2luZyBcImVsZW1lbnRzXCIpYClcbiAgfVxuXG4gIGNvbnN0IGdsb2JhbE1vZGlmaWVkID0gYWRhcHQoZWxlbWVudHNbMF0sIG9wdGlvbnMpXG5cbiAgLy8gY2h1bmsgcGFydHMgb3V0c2lkZSBvZiBxdW90ZXMgKGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI1NjYzNzI5KVxuICB2YXIgcGF0aCA9IHNlbGVjdG9yLnJlcGxhY2UoLz4gL2csICc+Jykuc3BsaXQoL1xccysoPz0oPzooPzpbXlwiXSpcIil7Mn0pKlteXCJdKiQpLylcblxuICBpZiAocGF0aC5sZW5ndGggPCAzKSB7XG4gICAgcmV0dXJuIG9wdGltaXplUGFydCgnJywgc2VsZWN0b3IsICcnLCBlbGVtZW50cylcbiAgfVxuXG4gIGNvbnN0IHNob3J0ZW5lZCA9IFtwYXRoLnBvcCgpXVxuICB3aGlsZSAocGF0aC5sZW5ndGggPiAxKSAge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBwYXRoLnBvcCgpXG4gICAgY29uc3QgcHJlUGFydCA9IHBhdGguam9pbignICcpXG4gICAgY29uc3QgcG9zdFBhcnQgPSBzaG9ydGVuZWQuam9pbignICcpXG5cbiAgICBjb25zdCBwYXR0ZXJuID0gYCR7cHJlUGFydH0gJHtwb3N0UGFydH1gXG4gICAgY29uc3QgbWF0Y2hlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwocGF0dGVybilcbiAgICBpZiAobWF0Y2hlcy5sZW5ndGggIT09IGVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgc2hvcnRlbmVkLnVuc2hpZnQob3B0aW1pemVQYXJ0KHByZVBhcnQsIGN1cnJlbnQsIHBvc3RQYXJ0LCBlbGVtZW50cykpXG4gICAgfVxuICB9XG4gIHNob3J0ZW5lZC51bnNoaWZ0KHBhdGhbMF0pXG4gIHBhdGggPSBzaG9ydGVuZWRcblxuICAvLyBvcHRpbWl6ZSBzdGFydCArIGVuZFxuICBwYXRoWzBdID0gb3B0aW1pemVQYXJ0KCcnLCBwYXRoWzBdLCBwYXRoLnNsaWNlKDEpLmpvaW4oJyAnKSwgZWxlbWVudHMpXG4gIHBhdGhbcGF0aC5sZW5ndGgtMV0gPSBvcHRpbWl6ZVBhcnQocGF0aC5zbGljZSgwLCAtMSkuam9pbignICcpLCBwYXRoW3BhdGgubGVuZ3RoLTFdLCAnJywgZWxlbWVudHMpXG5cbiAgaWYgKGdsb2JhbE1vZGlmaWVkKSB7XG4gICAgZGVsZXRlIGdsb2JhbC5kb2N1bWVudFxuICB9XG5cbiAgcmV0dXJuIHBhdGguam9pbignICcpLnJlcGxhY2UoLz4vZywgJz4gJykudHJpbSgpXG59XG5cbi8qKlxuICogSW1wcm92ZSBhIGNodW5rIG9mIHRoZSBzZWxlY3RvclxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gICAgICAgICAgICAgIHByZVBhcnQgIC0gW2Rlc2NyaXB0aW9uXVxuICogQHBhcmFtICB7c3RyaW5nfSAgICAgICAgICAgICAgY3VycmVudCAgLSBbZGVzY3JpcHRpb25dXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgICAgICAgICAgICBwb3N0UGFydCAtIFtkZXNjcmlwdGlvbl1cbiAqIEBwYXJhbSAge0FycmF5LjxIVE1MRWxlbWVudD59IGVsZW1lbnRzIC0gW2Rlc2NyaXB0aW9uXVxuICogQHJldHVybiB7c3RyaW5nfSAgICAgICAgICAgICAgICAgICAgICAgLSBbZGVzY3JpcHRpb25dXG4gKi9cbmZ1bmN0aW9uIG9wdGltaXplUGFydCAocHJlUGFydCwgY3VycmVudCwgcG9zdFBhcnQsIGVsZW1lbnRzKSB7XG4gIGlmIChwcmVQYXJ0Lmxlbmd0aCkgcHJlUGFydCA9IGAke3ByZVBhcnR9IGBcbiAgaWYgKHBvc3RQYXJ0Lmxlbmd0aCkgcG9zdFBhcnQgPSBgICR7cG9zdFBhcnR9YFxuXG4gIC8vIHJvYnVzdG5lc3M6IGF0dHJpYnV0ZSB3aXRob3V0IHZhbHVlIChnZW5lcmFsaXphdGlvbilcbiAgaWYgKC9cXFsqXFxdLy50ZXN0KGN1cnJlbnQpKSB7XG4gICAgY29uc3Qga2V5ID0gY3VycmVudC5yZXBsYWNlKC89LiokLywgJ10nKVxuICAgIHZhciBwYXR0ZXJuID0gYCR7cHJlUGFydH0ke2tleX0ke3Bvc3RQYXJ0fWBcbiAgICB2YXIgbWF0Y2hlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwocGF0dGVybilcbiAgICBpZiAoY29tcGFyZVJlc3VsdHMobWF0Y2hlcywgZWxlbWVudHMpKSB7XG4gICAgICBjdXJyZW50ID0ga2V5XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHJvYnVzdG5lc3M6IHJlcGxhY2Ugc3BlY2lmaWMga2V5LXZhbHVlIHdpdGggYmFzZSB0YWcgKGhldXJpc3RpYylcbiAgICAgIGNvbnN0IHJlZmVyZW5jZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAke3ByZVBhcnR9JHtrZXl9YClcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gcmVmZXJlbmNlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gcmVmZXJlbmNlc1tpXVxuICAgICAgICBpZiAoZWxlbWVudHMuc29tZSgoZWxlbWVudCkgPT4gcmVmZXJlbmNlLmNvbnRhaW5zKGVsZW1lbnQpKSkge1xuICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gcmVmZXJlbmNlLnRhZ05hbWUudG9Mb3dlckNhc2UoKVxuICAgICAgICAgIHZhciBwYXR0ZXJuID0gYCR7cHJlUGFydH0ke2Rlc2NyaXB0aW9ufSR7cG9zdFBhcnR9YFxuICAgICAgICAgIHZhciBtYXRjaGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChwYXR0ZXJuKVxuICAgICAgICAgIGlmIChjb21wYXJlUmVzdWx0cyhtYXRjaGVzLCBlbGVtZW50cykpIHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBkZXNjcmlwdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gcm9idXN0bmVzczogZGVzY2VuZGFudCBpbnN0ZWFkIGNoaWxkIChoZXVyaXN0aWMpXG4gIGlmICgvPi8udGVzdChjdXJyZW50KSkge1xuICAgIGNvbnN0IGRlc2NlbmRhbnQgPSBjdXJyZW50LnJlcGxhY2UoLz4vLCAnJylcbiAgICB2YXIgcGF0dGVybiA9IGAke3ByZVBhcnR9JHtkZXNjZW5kYW50fSR7cG9zdFBhcnR9YFxuICAgIHZhciBtYXRjaGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChwYXR0ZXJuKVxuICAgIGlmIChjb21wYXJlUmVzdWx0cyhtYXRjaGVzLCBlbGVtZW50cykpIHtcbiAgICAgIGN1cnJlbnQgPSBkZXNjZW5kYW50XG4gICAgfVxuICB9XG5cbiAgLy8gcm9idXN0bmVzczogJ250aC1vZi10eXBlJyBpbnN0ZWFkICdudGgtY2hpbGQnIChoZXVyaXN0aWMpXG4gIGlmICgvOm50aC1jaGlsZC8udGVzdChjdXJyZW50KSkge1xuICAgIC8vIFRPRE86IGNvbnNpZGVyIGNvbXBsZXRlIGNvdmVyYWdlIG9mICdudGgtb2YtdHlwZScgcmVwbGFjZW1lbnRcbiAgICBjb25zdCB0eXBlID0gY3VycmVudC5yZXBsYWNlKC9udGgtY2hpbGQvZywgJ250aC1vZi10eXBlJylcbiAgICB2YXIgcGF0dGVybiA9IGAke3ByZVBhcnR9JHt0eXBlfSR7cG9zdFBhcnR9YFxuICAgIHZhciBtYXRjaGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChwYXR0ZXJuKVxuICAgIGlmIChjb21wYXJlUmVzdWx0cyhtYXRjaGVzLCBlbGVtZW50cykpIHtcbiAgICAgIGN1cnJlbnQgPSB0eXBlXG4gICAgfVxuICB9XG5cbiAgLy8gZWZmaWNpZW5jeTogY29tYmluYXRpb25zIG9mIGNsYXNzbmFtZSAocGFydGlhbCBwZXJtdXRhdGlvbnMpXG4gIGlmICgvXFwuXFxTK1xcLlxcUysvLnRlc3QoY3VycmVudCkpIHtcbiAgICBjb25zdCBuYW1lcyA9IGN1cnJlbnQudHJpbSgpLnNwbGl0KCcuJykuc2xpY2UoMSkubWFwKChuYW1lKSA9PiBgLiR7bmFtZX1gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc29ydCgoY3VyciwgbmV4dCkgPT4gY3Vyci5sZW5ndGggLSBuZXh0Lmxlbmd0aClcbiAgICB3aGlsZSAobmFtZXMubGVuZ3RoKSB7XG4gICAgICB2YXIgcGFydGlhbCA9IGN1cnJlbnQucmVwbGFjZShuYW1lcy5zaGlmdCgpLCAnJykudHJpbSgpXG4gICAgICB2YXIgcGF0dGVybiA9IGAke3ByZVBhcnR9JHtwYXJ0aWFsfSR7cG9zdFBhcnR9YFxuICAgICAgaWYgKCFwYXR0ZXJuIHx8IHBhcnRpYWwgPT09ICc+Jykge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgdmFyIG1hdGNoZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHBhdHRlcm4pXG4gICAgICBpZiAoY29tcGFyZVJlc3VsdHMobWF0Y2hlcywgZWxlbWVudHMpKSB7XG4gICAgICAgIGN1cnJlbnQgPSBwYXJ0aWFsXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHJvYnVzdG5lc3M6IGRlZ3JhZGUgY29tcGxleCBjbGFzc25hbWUgKGhldXJpc3RpYylcbiAgICBpZiAoY3VycmVudCAmJiBjdXJyZW50Lm1hdGNoKC9cXC4vZykubGVuZ3RoID4gMikge1xuICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYCR7cHJlUGFydH0ke2N1cnJlbnR9YClcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gcmVmZXJlbmNlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gcmVmZXJlbmNlc1tpXVxuICAgICAgICBpZiAoZWxlbWVudHMuc29tZSgoZWxlbWVudCkgPT4gcmVmZXJlbmNlLmNvbnRhaW5zKGVsZW1lbnQpICkpIHtcbiAgICAgICAgICAvLyBUT0RPOlxuICAgICAgICAgIC8vIC0gY2hlY2sgdXNpbmcgYXR0cmlidXRlcyArIHJlZ2FyZCBleGNsdWRlc1xuICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gcmVmZXJlbmNlLnRhZ05hbWUudG9Mb3dlckNhc2UoKVxuICAgICAgICAgIHZhciBwYXR0ZXJuID0gYCR7cHJlUGFydH0ke2Rlc2NyaXB0aW9ufSR7cG9zdFBhcnR9YFxuICAgICAgICAgIHZhciBtYXRjaGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChwYXR0ZXJuKVxuICAgICAgICAgIGlmIChjb21wYXJlUmVzdWx0cyhtYXRjaGVzLCBlbGVtZW50cykpIHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBkZXNjcmlwdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGN1cnJlbnRcbn1cblxuLyoqXG4gKiBFdmFsdWF0ZSBtYXRjaGVzIHdpdGggZXhwZWN0ZWQgZWxlbWVudHNcbiAqXG4gKiBAcGFyYW0gIHtBcnJheS48SFRNTEVsZW1lbnQ+fSBtYXRjaGVzICAtIFtkZXNjcmlwdGlvbl1cbiAqIEBwYXJhbSAge0FycmF5LjxIVE1MRWxlbWVudD59IGVsZW1lbnRzIC0gW2Rlc2NyaXB0aW9uXVxuICogQHJldHVybiB7Qm9vbGVhbn0gICAgICAgICAgICAgICAgICAgICAgLSBbZGVzY3JpcHRpb25dXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVSZXN1bHRzIChtYXRjaGVzLCBlbGVtZW50cykge1xuICBjb25zdCB7IGxlbmd0aCB9ID0gbWF0Y2hlc1xuICByZXR1cm4gbGVuZ3RoID09PSBlbGVtZW50cy5sZW5ndGggJiYgZWxlbWVudHMuZXZlcnkoKGVsZW1lbnQpID0+IHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAobWF0Y2hlc1tpXSA9PT0gZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfSlcbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==

@@ -46,6 +46,6 @@ 'use strict';

if (Array.isArray(input)) {
return getMultiSelector(input, options);
if (!input.length) {
return getSingleSelector(input, options);
}
return getSingleSelector(input, options);
return getMultiSelector(input, options);
}

@@ -100,2 +100,6 @@

if (!Array.isArray(elements)) {
elements = [].concat(_toConsumableArray(elements));
}
if (elements.some(function (element) {

@@ -112,7 +116,7 @@ return element.nodeType !== 1;

// TODO: consider usage of multiple selectors + parent-child relation
// TODO: consider usage of multiple selectors + parent-child relation + check for part redundancy
var commonSelectors = getCommonSelectors(elements);
var descendantSelector = commonSelectors[0];
var selector = ancestorSelector + ' ' + descendantSelector;
var selector = (0, _optimize2.default)(ancestorSelector + ' ' + descendantSelector, elements, options);
var selectorMatches = [].concat(_toConsumableArray(document.querySelectorAll(selector)));

@@ -177,2 +181,2 @@

}
//# sourceMappingURL=data:application/json;base64,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QUFJLE9BQUosRUFBYTtBQUNYLFFBQU0sZ0JBQWdCLFFBQVEsR0FBUixDQUFZLFVBQUMsSUFBRDtBQUFBLG1CQUFjLElBQWQ7QUFBQSxLQUFaLEVBQWtDLElBQWxDLENBQXVDLEVBQXZDLENBQXRCO0FBQ0EsaUJBQWEsSUFBYixDQUFrQixhQUFsQjtBQUNEOztBQUVELE1BQUksVUFBSixFQUFnQjtBQUNkLFFBQU0sb0JBQW9CLE9BQU8sSUFBUCxDQUFZLFVBQVosRUFBd0IsTUFBeEIsQ0FBK0IsVUFBQyxLQUFELEVBQVEsSUFBUixFQUFpQjtBQUN4RSxZQUFNLElBQU4sT0FBZSxJQUFmLFVBQXdCLFdBQVcsSUFBWCxDQUF4QjtBQUNBLGFBQU8sS0FBUDtBQUNELEtBSHlCLEVBR3ZCLEVBSHVCLEVBR25CLElBSG1CLENBR2QsRUFIYyxDQUExQjtBQUlBLGlCQUFhLElBQWIsQ0FBa0IsaUJBQWxCO0FBQ0Q7O0FBRUQsTUFBSSxhQUFhLE1BQWpCLEVBQXlCOztBQUV4Qjs7QUFFRCxTQUFPLENBQ0wsYUFBYSxJQUFiLENBQWtCLEVBQWxCLENBREssQ0FBUDtBQUdEIiwiZmlsZSI6InNlbGVjdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIyBTZWxlY3RcbiAqXG4gKiBDb25zdHJ1Y3QgYSB1bmlxdWUgQ1NTIHF1ZXJ5c2VsZWN0b3IgdG8gYWNjZXNzIHRoZSBzZWxlY3RlZCBET00gZWxlbWVudChzKS5cbiAqIEFwcGxpZXMgZGlmZmVyZW50IG1hdGNoaW5nIGFuZCBvcHRpbWl6YXRpb24gc3RyYXRlZ2llcyBmb3IgZWZmaWNpZW5jeS5cbiAqL1xuXG5pbXBvcnQgYWRhcHQgZnJvbSAnLi9hZGFwdCdcbmltcG9ydCBtYXRjaCBmcm9tICcuL21hdGNoJ1xuaW1wb3J0IG9wdGltaXplIGZyb20gJy4vb3B0aW1pemUnXG5pbXBvcnQgeyBnZXRDb21tb25BbmNlc3RvciwgZ2V0Q29tbW9uUHJvcGVydGllcyB9IGZyb20gJy4vY29tbW9uJ1xuXG4vKipcbiAqIENob29zZSBhY3Rpb24gZGVwZW5kaW5nIG9uIHRoZSBpbnB1dCAoc2luZ2xlL211bHRpKVxuICpcbiAqIEBwYXJhbSAge0hUTUxFbGVtZW50fEFycmF5LjxIVE1MRWxlbWVudD59IGlucHV0ICAgLSBbZGVzY3JpcHRpb25dXG4gKiBAcGFyYW0gIHtPYmplY3R9ICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zIC0gW2Rlc2NyaXB0aW9uXVxuICogQHJldHVybiB7c3RyaW5nfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFtkZXNjcmlwdGlvbl1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0UXVlcnlTZWxlY3RvciAoaW5wdXQsIG9wdGlvbnMgPSB7fSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShpbnB1dCkpIHtcbiAgICByZXR1cm4gZ2V0TXVsdGlTZWxlY3RvcihpbnB1dCwgb3B0aW9ucylcbiAgfVxuICByZXR1cm4gZ2V0U2luZ2xlU2VsZWN0b3IoaW5wdXQsIG9wdGlvbnMpXG59XG5cbi8qKlxuICogR2V0IGEgc2VsZWN0b3IgZm9yIHRoZSBwcm92aWRlZCBlbGVtZW50XG4gKlxuICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IGVsZW1lbnQgLSBbZGVzY3JpcHRpb25dXG4gKiBAcGFyYW0gIHtPYmplY3R9ICAgICAgb3B0aW9ucyAtIFtkZXNjcmlwdGlvbl1cbiAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgICAgICAgIC0gW2Rlc2NyaXB0aW9uXVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2luZ2xlU2VsZWN0b3IgKGVsZW1lbnQsIG9wdGlvbnMgPSB7fSkge1xuXG4gIGlmIChlbGVtZW50Lm5vZGVUeXBlID09PSAzKSB7XG4gICAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50Tm9kZVxuICB9XG4gIGlmIChlbGVtZW50Lm5vZGVUeXBlICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGlucHV0IC0gb25seSBIVE1MRWxlbWVudHMgb3IgcmVwcmVzZW50YXRpb25zIG9mIHRoZW0gYXJlIHN1cHBvcnRlZCEgKG5vdCBcIiR7dHlwZW9mIGVsZW1lbnR9XCIpYClcbiAgfVxuXG4gIGNvbnN0IGdsb2JhbE1vZGlmaWVkID0gYWRhcHQoZWxlbWVudCwgb3B0aW9ucylcblxuICBjb25zdCBzZWxlY3RvciA9IG1hdGNoKGVsZW1lbnQsIG9wdGlvbnMpXG4gIGNvbnN0IG9wdGltaXplZCA9IG9wdGltaXplKHNlbGVjdG9yLCBlbGVtZW50LCBvcHRpb25zKVxuXG4gIC8vIGRlYnVnXG4gIC8vIGNvbnNvbGUubG9nKGBcbiAgLy8gICBzZWxlY3RvcjogICR7c2VsZWN0b3J9XG4gIC8vICAgb3B0aW1pemVkOiAke29wdGltaXplZH1cbiAgLy8gYClcblxuICBpZiAoZ2xvYmFsTW9kaWZpZWQpIHtcbiAgICBkZWxldGUgZ2xvYmFsLmRvY3VtZW50XG4gIH1cblxuICByZXR1cm4gb3B0aW1pemVkXG59XG5cbi8qKlxuICogR2V0IGEgc2VsZWN0b3IgdG8gbWF0Y2ggbXVsdGlwbGUgZGVzY2VuZGFudHMgZnJvbSBhbiBhbmNlc3RvclxuICpcbiAqIEBwYXJhbSAge0FycmF5LjxIVE1MRWxlbWVudD59IGVsZW1lbnRzIC0gW2Rlc2NyaXB0aW9uXVxuICogQHBhcmFtICB7T2JqZWN0fSAgICAgICAgICAgICAgb3B0aW9ucyAgLSBbZGVzY3JpcHRpb25dXG4gKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgICAgICAgICAgICAgICAgICAtIFtkZXNjcmlwdGlvbl1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE11bHRpU2VsZWN0b3IgKGVsZW1lbnRzLCBvcHRpb25zID0ge30pIHtcblxuICBpZiAoZWxlbWVudHMuc29tZSgoZWxlbWVudCkgPT4gZWxlbWVudC5ub2RlVHlwZSAhPT0gMSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgaW5wdXQgLSBvbmx5IGFuIEFycmF5IG9mIEhUTUxFbGVtZW50cyBvciByZXByZXNlbnRhdGlvbnMgb2YgdGhlbSBpcyBzdXBwb3J0ZWQhYClcbiAgfVxuXG4gIGNvbnN0IGdsb2JhbE1vZGlmaWVkID0gYWRhcHQoZWxlbWVudHNbMF0sIG9wdGlvbnMpXG5cbiAgY29uc3QgYW5jZXN0b3IgPSBnZXRDb21tb25BbmNlc3RvcihlbGVtZW50cywgb3B0aW9ucylcbiAgY29uc3QgYW5jZXN0b3JTZWxlY3RvciA9IGdldFNpbmdsZVNlbGVjdG9yKGFuY2VzdG9yLCBvcHRpb25zKVxuXG4gIC8vIFRPRE86IGNvbnNpZGVyIHVzYWdlIG9mIG11bHRpcGxlIHNlbGVjdG9ycyArIHBhcmVudC1jaGlsZCByZWxhdGlvblxuICBjb25zdCBjb21tb25TZWxlY3RvcnMgPSBnZXRDb21tb25TZWxlY3RvcnMoZWxlbWVudHMpXG4gIGNvbnN0IGRlc2NlbmRhbnRTZWxlY3RvciA9IGNvbW1vblNlbGVjdG9yc1swXVxuXG4gIGNvbnN0IHNlbGVjdG9yID0gYCR7YW5jZXN0b3JTZWxlY3Rvcn0gJHtkZXNjZW5kYW50U2VsZWN0b3J9YFxuICBjb25zdCBzZWxlY3Rvck1hdGNoZXMgPSBbLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcildXG5cbiAgaWYgKCFlbGVtZW50cy5ldmVyeSgoZWxlbWVudCkgPT4gc2VsZWN0b3JNYXRjaGVzLnNvbWUoKGVudHJ5KSA9PiBlbnRyeSA9PT0gZWxlbWVudCkgKSkge1xuICAgIC8vIFRPRE86IGNsdXN0ZXIgbWF0Y2hlcyB0byBzcGxpdCBpbnRvIHNpbWlsYXIgZ3JvdXBzIGZvciBzdWIgc2VsZWN0aW9uc1xuICAgIHJldHVybiBjb25zb2xlLndhcm4oYFxuICAgICAgVGhlIHNlbGVjdGVkIGVsZW1lbnRzIGNhblxcJ3QgYmUgZWZmaWNpZW50bHkgbWFwcGVkLlxuICAgICAgSXRzIHByb2JhYmx5IGJlc3QgdG8gdXNlIG11bHRpcGxlIHNpbmdsZSBzZWxlY3RvcnMgaW5zdGVhZCFcbiAgICBgLCBlbGVtZW50cylcbiAgfVxuXG4gIGlmIChnbG9iYWxNb2RpZmllZCkge1xuICAgIGRlbGV0ZSBnbG9iYWwuZG9jdW1lbnRcbiAgfVxuXG4gIHJldHVybiBzZWxlY3RvclxufVxuXG4vKipcbiAqIEdldCBzZWxlY3RvcnMgdG8gZGVzY3JpYmUgYSBzZXQgb2YgZWxlbWVudHNcbiAqXG4gKiBAcGFyYW0gIHtBcnJheS48SFRNTEVsZW1lbnRzPn0gZWxlbWVudHMgLSBbZGVzY3JpcHRpb25dXG4gKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgICAgICAgICAgICAgICAgICAgLSBbZGVzY3JpcHRpb25dXG4gKi9cbmZ1bmN0aW9uIGdldENvbW1vblNlbGVjdG9ycyAoZWxlbWVudHMpIHtcblxuICBjb25zdCB7IGNsYXNzZXMsIGF0dHJpYnV0ZXMsIHRhZyB9ID0gZ2V0Q29tbW9uUHJvcGVydGllcyhlbGVtZW50cylcblxuICBjb25zdCBzZWxlY3RvclBhdGggPSBbXVxuXG4gICBpZiAodGFnKSB7XG4gICAgIHNlbGVjdG9yUGF0aC5wdXNoKHRhZylcbiAgIH1cblxuICAgaWYgKGNsYXNzZXMpIHtcbiAgICAgY29uc3QgY2xhc3NTZWxlY3RvciA9IGNsYXNzZXMubWFwKChuYW1lKSA9PiBgLiR7bmFtZX1gKS5qb2luKCcnKVxuICAgICBzZWxlY3RvclBhdGgucHVzaChjbGFzc1NlbGVjdG9yKVxuICAgfVxuXG4gICBpZiAoYXR0cmlidXRlcykge1xuICAgICBjb25zdCBhdHRyaWJ1dGVTZWxlY3RvciA9IE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLnJlZHVjZSgocGFydHMsIG5hbWUpID0+IHtcbiAgICAgICBwYXJ0cy5wdXNoKGBbJHtuYW1lfT1cIiR7YXR0cmlidXRlc1tuYW1lXX1cIl1gKVxuICAgICAgIHJldHVybiBwYXJ0c1xuICAgICB9LCBbXSkuam9pbignJylcbiAgICAgc2VsZWN0b3JQYXRoLnB1c2goYXR0cmlidXRlU2VsZWN0b3IpXG4gICB9XG5cbiAgIGlmIChzZWxlY3RvclBhdGgubGVuZ3RoKSB7XG4gICAgIC8vIFRPRE86IGNoZWNrIGZvciBwYXJlbnQtY2hpbGQgcmVsYXRpb25cbiAgIH1cblxuICAgcmV0dXJuIFtcbiAgICAgc2VsZWN0b3JQYXRoLmpvaW4oJycpXG4gICBdXG4gfVxuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
//# sourceMappingURL=data:application/json;base64,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QkFFUixHQUZROzs7QUFJckMsTUFBTSxlQUFlLEVBQXJCOztBQUVBLE1BQUksR0FBSixFQUFTO0FBQ1AsaUJBQWEsSUFBYixDQUFrQixHQUFsQjtBQUNEOztBQUVELE1BQUksT0FBSixFQUFhO0FBQ1gsUUFBTSxnQkFBZ0IsUUFBUSxHQUFSLENBQVksVUFBQyxJQUFEO0FBQUEsbUJBQWMsSUFBZDtBQUFBLEtBQVosRUFBa0MsSUFBbEMsQ0FBdUMsRUFBdkMsQ0FBdEI7QUFDQSxpQkFBYSxJQUFiLENBQWtCLGFBQWxCO0FBQ0Q7O0FBRUQsTUFBSSxVQUFKLEVBQWdCO0FBQ2QsUUFBTSxvQkFBb0IsT0FBTyxJQUFQLENBQVksVUFBWixFQUF3QixNQUF4QixDQUErQixVQUFDLEtBQUQsRUFBUSxJQUFSLEVBQWlCO0FBQ3hFLFlBQU0sSUFBTixPQUFlLElBQWYsVUFBd0IsV0FBVyxJQUFYLENBQXhCO0FBQ0EsYUFBTyxLQUFQO0FBQ0QsS0FIeUIsRUFHdkIsRUFIdUIsRUFHbkIsSUFIbUIsQ0FHZCxFQUhjLENBQTFCO0FBSUEsaUJBQWEsSUFBYixDQUFrQixpQkFBbEI7QUFDRDs7QUFFRCxNQUFJLGFBQWEsTUFBakIsRUFBeUI7O0FBRXhCOztBQUVELFNBQU8sQ0FDTCxhQUFhLElBQWIsQ0FBa0IsRUFBbEIsQ0FESyxDQUFQO0FBR0QiLCJmaWxlIjoic2VsZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAjIFNlbGVjdFxuICpcbiAqIENvbnN0cnVjdCBhIHVuaXF1ZSBDU1MgcXVlcnlzZWxlY3RvciB0byBhY2Nlc3MgdGhlIHNlbGVjdGVkIERPTSBlbGVtZW50KHMpLlxuICogQXBwbGllcyBkaWZmZXJlbnQgbWF0Y2hpbmcgYW5kIG9wdGltaXphdGlvbiBzdHJhdGVnaWVzIGZvciBlZmZpY2llbmN5LlxuICovXG5cbmltcG9ydCBhZGFwdCBmcm9tICcuL2FkYXB0J1xuaW1wb3J0IG1hdGNoIGZyb20gJy4vbWF0Y2gnXG5pbXBvcnQgb3B0aW1pemUgZnJvbSAnLi9vcHRpbWl6ZSdcbmltcG9ydCB7IGdldENvbW1vbkFuY2VzdG9yLCBnZXRDb21tb25Qcm9wZXJ0aWVzIH0gZnJvbSAnLi9jb21tb24nXG5cbi8qKlxuICogQ2hvb3NlIGFjdGlvbiBkZXBlbmRpbmcgb24gdGhlIGlucHV0IChzaW5nbGUvbXVsdGkpXG4gKlxuICogQHBhcmFtICB7SFRNTEVsZW1lbnR8QXJyYXkuPEhUTUxFbGVtZW50Pn0gaW5wdXQgICAtIFtkZXNjcmlwdGlvbl1cbiAqIEBwYXJhbSAge09iamVjdH0gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgLSBbZGVzY3JpcHRpb25dXG4gKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gW2Rlc2NyaXB0aW9uXVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRRdWVyeVNlbGVjdG9yIChpbnB1dCwgb3B0aW9ucyA9IHt9KSB7XG4gIGlmICghaW5wdXQubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGdldFNpbmdsZVNlbGVjdG9yKGlucHV0LCBvcHRpb25zKVxuICB9XG4gIHJldHVybiBnZXRNdWx0aVNlbGVjdG9yKGlucHV0LCBvcHRpb25zKVxufVxuXG4vKipcbiAqIEdldCBhIHNlbGVjdG9yIGZvciB0aGUgcHJvdmlkZWQgZWxlbWVudFxuICpcbiAqIEBwYXJhbSAge0hUTUxFbGVtZW50fSBlbGVtZW50IC0gW2Rlc2NyaXB0aW9uXVxuICogQHBhcmFtICB7T2JqZWN0fSAgICAgIG9wdGlvbnMgLSBbZGVzY3JpcHRpb25dXG4gKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgICAgICAgICAtIFtkZXNjcmlwdGlvbl1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNpbmdsZVNlbGVjdG9yIChlbGVtZW50LCBvcHRpb25zID0ge30pIHtcblxuICBpZiAoZWxlbWVudC5ub2RlVHlwZSA9PT0gMykge1xuICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGVcbiAgfVxuICBpZiAoZWxlbWVudC5ub2RlVHlwZSAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBpbnB1dCAtIG9ubHkgSFRNTEVsZW1lbnRzIG9yIHJlcHJlc2VudGF0aW9ucyBvZiB0aGVtIGFyZSBzdXBwb3J0ZWQhIChub3QgXCIke3R5cGVvZiBlbGVtZW50fVwiKWApXG4gIH1cblxuICBjb25zdCBnbG9iYWxNb2RpZmllZCA9IGFkYXB0KGVsZW1lbnQsIG9wdGlvbnMpXG5cbiAgY29uc3Qgc2VsZWN0b3IgPSBtYXRjaChlbGVtZW50LCBvcHRpb25zKVxuICBjb25zdCBvcHRpbWl6ZWQgPSBvcHRpbWl6ZShzZWxlY3RvciwgZWxlbWVudCwgb3B0aW9ucylcblxuICAvLyBkZWJ1Z1xuICAvLyBjb25zb2xlLmxvZyhgXG4gIC8vICAgc2VsZWN0b3I6ICAke3NlbGVjdG9yfVxuICAvLyAgIG9wdGltaXplZDogJHtvcHRpbWl6ZWR9XG4gIC8vIGApXG5cbiAgaWYgKGdsb2JhbE1vZGlmaWVkKSB7XG4gICAgZGVsZXRlIGdsb2JhbC5kb2N1bWVudFxuICB9XG5cbiAgcmV0dXJuIG9wdGltaXplZFxufVxuXG4vKipcbiAqIEdldCBhIHNlbGVjdG9yIHRvIG1hdGNoIG11bHRpcGxlIGRlc2NlbmRhbnRzIGZyb20gYW4gYW5jZXN0b3JcbiAqXG4gKiBAcGFyYW0gIHtBcnJheS48SFRNTEVsZW1lbnQ+fSBlbGVtZW50cyAtIFtkZXNjcmlwdGlvbl1cbiAqIEBwYXJhbSAge09iamVjdH0gICAgICAgICAgICAgIG9wdGlvbnMgIC0gW2Rlc2NyaXB0aW9uXVxuICogQHJldHVybiB7c3RyaW5nfSAgICAgICAgICAgICAgICAgICAgICAgLSBbZGVzY3JpcHRpb25dXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNdWx0aVNlbGVjdG9yIChlbGVtZW50cywgb3B0aW9ucyA9IHt9KSB7XG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGVsZW1lbnRzKSkge1xuICAgIGVsZW1lbnRzID0gWy4uLmVsZW1lbnRzXVxuICB9XG5cbiAgaWYgKGVsZW1lbnRzLnNvbWUoKGVsZW1lbnQpID0+IGVsZW1lbnQubm9kZVR5cGUgIT09IDEpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGlucHV0IC0gb25seSBhbiBBcnJheSBvZiBIVE1MRWxlbWVudHMgb3IgcmVwcmVzZW50YXRpb25zIG9mIHRoZW0gaXMgc3VwcG9ydGVkIWApXG4gIH1cblxuICBjb25zdCBnbG9iYWxNb2RpZmllZCA9IGFkYXB0KGVsZW1lbnRzWzBdLCBvcHRpb25zKVxuXG4gIGNvbnN0IGFuY2VzdG9yID0gZ2V0Q29tbW9uQW5jZXN0b3IoZWxlbWVudHMsIG9wdGlvbnMpXG4gIGNvbnN0IGFuY2VzdG9yU2VsZWN0b3IgPSBnZXRTaW5nbGVTZWxlY3RvcihhbmNlc3Rvciwgb3B0aW9ucylcblxuICAvLyBUT0RPOiBjb25zaWRlciB1c2FnZSBvZiBtdWx0aXBsZSBzZWxlY3RvcnMgKyBwYXJlbnQtY2hpbGQgcmVsYXRpb24gKyBjaGVjayBmb3IgcGFydCByZWR1bmRhbmN5XG4gIGNvbnN0IGNvbW1vblNlbGVjdG9ycyA9IGdldENvbW1vblNlbGVjdG9ycyhlbGVtZW50cylcbiAgY29uc3QgZGVzY2VuZGFudFNlbGVjdG9yID0gY29tbW9uU2VsZWN0b3JzWzBdXG5cbiAgY29uc3Qgc2VsZWN0b3IgPSBvcHRpbWl6ZShgJHthbmNlc3RvclNlbGVjdG9yfSAke2Rlc2NlbmRhbnRTZWxlY3Rvcn1gLCBlbGVtZW50cywgb3B0aW9ucylcbiAgY29uc3Qgc2VsZWN0b3JNYXRjaGVzID0gWy4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpXVxuXG4gIGlmICghZWxlbWVudHMuZXZlcnkoKGVsZW1lbnQpID0+IHNlbGVjdG9yTWF0Y2hlcy5zb21lKChlbnRyeSkgPT4gZW50cnkgPT09IGVsZW1lbnQpICkpIHtcbiAgICAvLyBUT0RPOiBjbHVzdGVyIG1hdGNoZXMgdG8gc3BsaXQgaW50byBzaW1pbGFyIGdyb3VwcyBmb3Igc3ViIHNlbGVjdGlvbnNcbiAgICByZXR1cm4gY29uc29sZS53YXJuKGBcbiAgICAgIFRoZSBzZWxlY3RlZCBlbGVtZW50cyBjYW5cXCd0IGJlIGVmZmljaWVudGx5IG1hcHBlZC5cbiAgICAgIEl0cyBwcm9iYWJseSBiZXN0IHRvIHVzZSBtdWx0aXBsZSBzaW5nbGUgc2VsZWN0b3JzIGluc3RlYWQhXG4gICAgYCwgZWxlbWVudHMpXG4gIH1cblxuICBpZiAoZ2xvYmFsTW9kaWZpZWQpIHtcbiAgICBkZWxldGUgZ2xvYmFsLmRvY3VtZW50XG4gIH1cblxuICByZXR1cm4gc2VsZWN0b3Jcbn1cblxuLyoqXG4gKiBHZXQgc2VsZWN0b3JzIHRvIGRlc2NyaWJlIGEgc2V0IG9mIGVsZW1lbnRzXG4gKlxuICogQHBhcmFtICB7QXJyYXkuPEhUTUxFbGVtZW50cz59IGVsZW1lbnRzIC0gW2Rlc2NyaXB0aW9uXVxuICogQHJldHVybiB7c3RyaW5nfSAgICAgICAgICAgICAgICAgICAgICAgIC0gW2Rlc2NyaXB0aW9uXVxuICovXG5mdW5jdGlvbiBnZXRDb21tb25TZWxlY3RvcnMgKGVsZW1lbnRzKSB7XG5cbiAgY29uc3QgeyBjbGFzc2VzLCBhdHRyaWJ1dGVzLCB0YWcgfSA9IGdldENvbW1vblByb3BlcnRpZXMoZWxlbWVudHMpXG5cbiAgY29uc3Qgc2VsZWN0b3JQYXRoID0gW11cblxuICBpZiAodGFnKSB7XG4gICAgc2VsZWN0b3JQYXRoLnB1c2godGFnKVxuICB9XG5cbiAgaWYgKGNsYXNzZXMpIHtcbiAgICBjb25zdCBjbGFzc1NlbGVjdG9yID0gY2xhc3Nlcy5tYXAoKG5hbWUpID0+IGAuJHtuYW1lfWApLmpvaW4oJycpXG4gICAgc2VsZWN0b3JQYXRoLnB1c2goY2xhc3NTZWxlY3RvcilcbiAgfVxuXG4gIGlmIChhdHRyaWJ1dGVzKSB7XG4gICAgY29uc3QgYXR0cmlidXRlU2VsZWN0b3IgPSBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5yZWR1Y2UoKHBhcnRzLCBuYW1lKSA9PiB7XG4gICAgICBwYXJ0cy5wdXNoKGBbJHtuYW1lfT1cIiR7YXR0cmlidXRlc1tuYW1lXX1cIl1gKVxuICAgICAgcmV0dXJuIHBhcnRzXG4gICAgfSwgW10pLmpvaW4oJycpXG4gICAgc2VsZWN0b3JQYXRoLnB1c2goYXR0cmlidXRlU2VsZWN0b3IpXG4gIH1cblxuICBpZiAoc2VsZWN0b3JQYXRoLmxlbmd0aCkge1xuICAgIC8vIFRPRE86IGNoZWNrIGZvciBwYXJlbnQtY2hpbGQgcmVsYXRpb25cbiAgfVxuXG4gIHJldHVybiBbXG4gICAgc2VsZWN0b3JQYXRoLmpvaW4oJycpXG4gIF1cbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
{
"name": "optimal-select",
"description": "Get efficient & robust CSS selectors for HTML elements",
"version": "3.3.2",
"version": "3.4.0",
"author": "Stefan Dühring | Autarc <autarc@gmail.com>",

@@ -6,0 +6,0 @@ "bugs": {

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc