Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
@csstools/selector-specificity
Advanced tools
Determine selector specificity with postcss-selector-parser
@csstools/selector-specificity is an npm package designed to calculate the specificity of CSS selectors. This can be useful for developers who need to understand or manipulate the specificity of their CSS rules, ensuring that styles are applied as intended.
Calculate Specificity
This feature allows you to calculate the specificity of a given CSS selector. The output is an object with properties 'a', 'b', and 'c' representing the specificity components.
const { calculate } = require('@csstools/selector-specificity');
const specificity = calculate('div.class#id');
console.log(specificity); // Output: { a: 1, b: 1, c: 1 }
Compare Specificity
This feature allows you to compare the specificity of two CSS selectors. The output is a number indicating which selector has higher specificity.
const { compare } = require('@csstools/selector-specificity');
const result = compare('div.class#id', 'div#id');
console.log(result); // Output: 1
The 'specificity' package is another tool for calculating CSS selector specificity. It provides similar functionality to @csstools/selector-specificity, allowing developers to parse and compare the specificity of CSS selectors. However, it may have a different API and additional features.
The 'css-specificity-calculator' package offers functionality to calculate the specificity of CSS selectors. It is similar to @csstools/selector-specificity but may have a different approach to handling specificity calculations and comparisons.
Add Selector Specificity to your project:
npm install @csstools/selector-specificity --save-dev
import parser from 'postcss-selector-parser';
import { selectorSpecificity } from '@csstools/selector-specificity';
const selectorAST = parser().astSync('#foo:has(> .foo)');
const specificity = selectorSpecificity(selectorAST);
console.log(specificity.a); // 1
console.log(specificity.b); // 1
console.log(specificity.c); // 0
selectorSpecificity
takes a single selector, not a list of selectors (not : a, b, c
).
To compare or otherwise manipulate lists of selectors you need to call selectorSpecificity
on each part.
The package exports a utility function to compare two specificities.
import { selectorSpecificity, compare } from '@csstools/selector-specificity';
const s1 = selectorSpecificity(ast1);
const s2 = selectorSpecificity(ast2);
compare(s1, s2); // -1 | 0 | 1
s1 < s2
then compare(s1, s2)
returns a negative number (< 0
)s1 > s2
then compare(s1, s2)
returns a positive number (> 0
)s1 === s2
then compare(s1, s2)
returns zero (=== 0
)For CSSTools we always use postcss-selector-parser
and want to calculate specificity from this AST.
FAQs
Determine selector specificity with postcss-selector-parser
The npm package @csstools/selector-specificity receives a total of 6,482,643 weekly downloads. As such, @csstools/selector-specificity popularity was classified as popular.
We found that @csstools/selector-specificity demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.