Socket
Socket
Sign inDemoInstall

cheerio-select

Package Overview
Dependencies
Maintainers
2
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cheerio-select - npm Package Compare versions

Comparing version 1.3.0 to 1.4.0

5

lib/index.d.ts
import { Options as CSSSelectOptions } from "css-select";
import type { Element, Node } from "domhandler";
export { filters, pseudos, aliases } from "css-select";
export declare type Options = CSSSelectOptions<Node, Element>;
export declare function is(element: Element, selector: string | ((el: Element) => boolean), options?: Options): boolean;
export declare function some(elements: Element[], selector: string | ((el: Element) => boolean), options?: Options): boolean;
export declare function filter(selector: string, elements: Element[], options?: Options): Element[];
export declare function select(selector: string | ((el: Element) => boolean), root: Element | Element[], options?: Options): Element[];
export declare function select(selector: string | ((el: Element) => boolean), root: Node | Node[], options?: Options): Element[];
//# sourceMappingURL=index.d.ts.map

100

lib/index.js

@@ -38,3 +38,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.select = exports.filter = void 0;
exports.select = exports.filter = exports.some = exports.is = exports.aliases = exports.pseudos = exports.filters = void 0;
var css_what_1 = require("css-what");

@@ -45,2 +45,7 @@ var css_select_1 = require("css-select");

var positionals_1 = require("./positionals");
// Re-export pseudo extension points
var css_select_2 = require("css-select");
Object.defineProperty(exports, "filters", { enumerable: true, get: function () { return css_select_2.filters; } });
Object.defineProperty(exports, "pseudos", { enumerable: true, get: function () { return css_select_2.pseudos; } });
Object.defineProperty(exports, "aliases", { enumerable: true, get: function () { return css_select_2.aliases; } });
/** Used to indicate a scope should be filtered. Might be ignored when filtering. */

@@ -55,2 +60,20 @@ var SCOPE_PSEUDO = {

var UNIVERSAL_SELECTOR = { type: "universal", namespace: null };
function is(element, selector, options) {
if (options === void 0) { options = {}; }
if (typeof selector === "function")
return selector(element);
var _a = helpers_1.groupSelectors(css_what_1.parse(selector, options)), plain = _a[0], filtered = _a[1];
return ((plain.length > 0 && css_select_1.is(element, plain, options)) ||
filtered.some(function (sel) { return filterBySelector(sel, [element], options).length > 0; }));
}
exports.is = is;
function some(elements, selector, options) {
if (options === void 0) { options = {}; }
if (typeof selector === "function")
return elements.some(selector);
var _a = helpers_1.groupSelectors(css_what_1.parse(selector, options)), plain = _a[0], filtered = _a[1];
return ((plain.length > 0 && elements.some(css_select_1._compileToken(plain, options))) ||
filtered.some(function (sel) { return filterBySelector(sel, elements, options).length > 0; }));
}
exports.some = some;
function filterByPosition(filter, elems, data, options) {

@@ -112,3 +135,3 @@ var num = typeof data === "string" ? parseInt(data, 10) : NaN;

}
for (var i = 0; i < filteredSelectors.length; i++) {
for (var i = 0; i < filteredSelectors.length && (found === null || found === void 0 ? void 0 : found.size) !== elements.length; i++) {
var filteredSelector = filteredSelectors[i];

@@ -120,36 +143,38 @@ var missing = found

break;
var filtered = void 0;
if (filteredSelector.some(css_what_1.isTraversal)) {
/*
* Get one root node, run selector with the scope
* set to all of our nodes.
*/
var root = helpers_1.getDocumentRoot(elements[0]);
var sel = __spreadArray(__spreadArray([], filteredSelector), [CUSTOM_SCOPE_PSEUDO]);
filtered = findFilterElements(root, sel, options, true, elements);
}
else {
// Performance optimization: If we don't have to traverse, just filter set.
filtered = findFilterElements(elements, filteredSelector, options, false);
}
if (!found) {
/*
* If we haven't found anything before the last selector,
* just return what we found now.
*/
if (i === filteredSelectors.length - 1) {
return filtered;
}
if (filtered.length) {
var filtered = filterBySelector(filteredSelector, elements, options);
if (filtered.length) {
if (!found) {
/*
* If we haven't found anything before the last selector,
* just return what we found now.
*/
if (i === filteredSelectors.length - 1) {
return filtered;
}
found = new Set(filtered);
}
else {
filtered.forEach(function (el) { return found.add(el); });
}
}
else if (filtered.length) {
filtered.forEach(function (el) { return found.add(el); });
}
}
return typeof found !== "undefined"
? elements.filter(function (el) { return found.has(el); })
? found.size === elements.length
? elements
: elements.filter(function (el) { return found.has(el); })
: [];
}
function filterBySelector(selector, elements, options) {
if (selector.some(css_what_1.isTraversal)) {
/*
* Get one root node, run selector with the scope
* set to all of our nodes.
*/
var root = helpers_1.getDocumentRoot(elements[0]);
var sel = __spreadArray(__spreadArray([], selector), [CUSTOM_SCOPE_PSEUDO]);
return findFilterElements(root, sel, options, true, elements);
}
// Performance optimization: If we don't have to traverse, just filter set.
return findFilterElements(elements, selector, options, false);
}
function select(selector, root, options) {

@@ -216,9 +241,6 @@ if (options === void 0) { options = {}; }

: sub.length === 0 || (sub.length === 1 && sub[0] === SCOPE_PSEUDO)
? Array.isArray(root)
? root
: [root]
? (Array.isArray(root) ? root : [root]).filter(DomUtils.isTag)
: queryForSelector || sub.some(css_what_1.isTraversal)
? findElements(root, [sub], subOpts, limit)
: // We know that this cannot be reached with root not being an array.
filterElements(root, [sub], subOpts);
: filterElements(root, [sub], subOpts);
var elems = elemsNoLimit.slice(0, limit);

@@ -266,5 +288,3 @@ var result = filterByPosition(filter.name, elems, filter.data, options);

return [];
var query = css_select_1._compileToken(sel,
// @ts-expect-error TS seems to mess up the type here ¯\_(ツ)_/¯
options, root);
var query = css_select_1._compileToken(sel, options, root);
return find(root, query, limit);

@@ -278,5 +298,7 @@ }

function filterElements(elements, sel, options) {
// @ts-expect-error TS seems to mess up the type here ¯\_(ツ)_/¯
var els = (Array.isArray(elements) ? elements : [elements]).filter(DomUtils.isTag);
if (els.length === 0)
return els;
var query = css_select_1._compileToken(sel, options);
return elements.filter(query);
return els.filter(query);
}
{
"name": "cheerio-select",
"description": "CSS selector engine supporting jQuery selectors",
"version": "1.3.0",
"version": "1.4.0",
"author": "Felix Boehm <me@feedic.com>",

@@ -37,19 +37,19 @@ "funding": {

"dependencies": {
"css-select": "^4.0.0",
"css-select": "^4.1.2",
"css-what": "^5.0.0",
"domelementtype": "^2.2.0",
"domhandler": "^4.1.0",
"domutils": "^2.5.2"
"domhandler": "^4.2.0",
"domutils": "^2.6.0"
},
"devDependencies": {
"@types/jest": "^26.0.22",
"@typescript-eslint/eslint-plugin": "^4.21.0",
"@typescript-eslint/parser": "^4.21.0",
"@typescript-eslint/eslint-plugin": "^4.22.0",
"@typescript-eslint/parser": "^4.22.0",
"coveralls": "^3.1.0",
"eslint": "^7.23.0",
"eslint-config-prettier": "^8.1.0",
"eslint": "^7.24.0",
"eslint-config-prettier": "^8.2.0",
"htmlparser2": "^6.1.0",
"jest": "^26.6.3",
"prettier": "^2.2.1",
"ts-jest": "^26.5.4",
"ts-jest": "^26.5.5",
"typescript": "^4.2.4"

@@ -56,0 +56,0 @@ },

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc