New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

postcss-nested-ancestors

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

postcss-nested-ancestors - npm Package Compare versions

Comparing version 1.0.0 to 2.0.0

.github/ISSUE_TEMPLATE.md

6

CHANGELOG.md

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

## 2.0.0
- Consider `rule` nodes only when when building ancestor selectors
- Use `PostCSS` 6
- Restrict support to `node.js` >= 4
- Remove `object-assign` dependency
## 1.0.0

@@ -2,0 +8,0 @@ - Solve complex nesting scenarios scenarios externalizing parent selectors resolution to [postcss-resolve-nested-selector](https://github.com/davidtheclark/)

44

index.js

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

var postcss = require('postcss'),
resolvedNestedSelector = require('postcss-resolve-nested-selector'),
assign = require('object-assign'),
escRgx = require('escape-string-regexp');
var postcss = require('postcss');
var resolvedNestedSelector = require('postcss-resolve-nested-selector');
var escRgx = require('escape-string-regexp');
module.exports = postcss.plugin('postcss-nested-ancestors', function (opts) {
opts = assign({
opts = Object.assign({
placeholder: '^&',

@@ -13,3 +12,3 @@ replaceDeclarations: false

// Advanced options
opts = assign({
opts = Object.assign({
levelSymbol: opts.levelSymbol || opts.placeholder.charAt(0),

@@ -27,8 +26,27 @@ parentSymbol: opts.parentSymbol || opts.placeholder.charAt(1)

/**
* Climb up PostCSS node parent stack
* Get first parent rule node (no @-rules)
* @param {Object} node PostCSS node object
* @return {Object|false} Parent node or false if no parent rule found
*/
function getParentRule(node) {
var parentNode = node.parent;
if (parentNode.type === 'rule') {
return parentNode;
}
if (parentNode.type === 'root') {
return false;
}
return getParentRule(parentNode);
}
/**
* Climb up PostCSS node parent stack (no @-rules)
* @param {Object} node PostCSS node object
* @param {Number} nestingLevel Number of parent to climb
* @return {Object|false} Parent PostCSS node or false if no matching parent
* @return {Object|false} Parent node or false if no matching parent
*/
function getParentNodeAtLevel(node, nestingLevel) {
function getParentRuleAtLevel(node, nestingLevel) {
var currentNode = node;

@@ -38,6 +56,6 @@ nestingLevel = nestingLevel || 1;

for (var i = 0; i < nestingLevel; i++) {
if (currentNode.parent.type === 'root') {
currentNode = getParentRule(currentNode);
if (!currentNode) {
return false;
} else {
currentNode = currentNode.parent;
}

@@ -61,3 +79,3 @@ }

// Get parent PostCSS node object at requested nesting level
var parentNodeAtLevel = getParentNodeAtLevel(node, nestingLevel + 1);
var parentNodeAtLevel = getParentRuleAtLevel(node, nestingLevel + 1);

@@ -64,0 +82,0 @@ // Iterate each matching parent node selectors and resolve them

{
"name": "postcss-nested-ancestors",
"version": "1.0.0",
"version": "2.0.0",
"description": "PostCSS plugin to reference any ancestor selector in nested CSS",
"engines": {
"node": ">=4.0.0"
},
"keywords": [

@@ -23,4 +26,3 @@ "postcss",

"escape-string-regexp": "^1.0.5",
"object-assign": "^4.1.0",
"postcss": "^5.0.21",
"postcss": "^6.0.0",
"postcss-resolve-nested-selector": "^0.1.1"

@@ -27,0 +29,0 @@ },

# PostCSS Nested ancestors [![Build Status][ci-img]][ci]
[PostCSS] plugin to reference any ancestor selector in nested CSS.
[PostCSS] plugin to reference any parent ancestor selector in nested CSS.

@@ -5,0 +5,0 @@ [PostCSS]: https://github.com/postcss/postcss

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