Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit d6bbb04

Browse files
authoredJul 13, 2024··
update dependencies (#1432)
1 parent 204fa45 commit d6bbb04

File tree

14 files changed

+425
-697
lines changed

14 files changed

+425
-697
lines changed
 
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
"use strict";var e=require("postcss-selector-parser");function ampersandToScope(t,n){let r,o=t.parent;for(;o;){if("rule"===o.type)return;o=o.parent}try{r=e().astSync(t.selector)}catch(e){if(!(e instanceof Error))throw e;return void t.warn(n,`Failed to parse selector : "${t.selector}" with message: "${e.message}"`)}r&&(r.walkNesting((t=>{"root"===t.parent?.parent?.type?t.replaceWith(e.pseudo({value:":scope"})):t.replaceWith(e.pseudo({value:":is",nodes:[e.pseudo({value:":root"}),e.pseudo({value:":host"})]}))})),t.selector=r.toString())}function cleanupParent(e){if(!e.nodes.length)return void e.remove();const t=e.nodes.filter((e=>"comment"===e.type));t.length===e.nodes.length&&e.replaceWith(...t)}function shiftNodesBeforeParent(e,t){const n=t.index(e);if(n){const e=t.cloneBefore().removeAll().append(t.nodes.slice(0,n));e.raws.semicolon=!0,cleanupParent(e)}t.before(e),t.raws.semicolon=!0}function mergeSelectors(t,n,r,o){const s=[];if(0===o.length)return;const i=e().astSync(`:is(${r.join(",")})`);for(let r=0;r<o.length;r++){const l=e().astSync(o[r]);if(!l)continue;let a=!1;if(l.walk((e=>{"nesting"===e.type&&(a=!0)})),!a){const s=l.nodes[0];let i=!1;if(s.each((e=>"combinator"===e.type&&(i=!0,!1))),0===r){let e=!1;s.each((t=>"tag"===t.type&&(e=!0,!1))),e&&t.warn(n,`Invalid nested rule : "${o[r]}"`)}i||s.insertBefore(s.at(0),e.combinator({value:" "})),s.insertBefore(s.at(0),e.nesting({}))}l.walk((e=>{"nesting"===e.type&&e.replaceWith(i.clone({}))})),s.push(l.toString())}return s}function groupDeclarations(e){let t=-1;e.each(((n,r)=>{if("decl"===n.type){if(-1===t)return void(t=r);if(t===r-1)return void(t=r);n.remove(),e.insertAfter(t,n),t=e.index(n)}}))}function transformRuleWithinRule(e,t,n){let r=[];try{r=mergeSelectors(e,n,t.selectors,e.selectors)}catch(r){if(!(r instanceof Error))throw r;return void e.warn(n,`Failed to transform selectors : "${t.selector}" / "${e.selector}" with message: "${r.message}"`)}groupDeclarations(t),shiftNodesBeforeParent(e,t),e.selectors=r;"rule"===e.type&&"rule"===t.type&&e.selector===t.selector&&e.append(...t.nodes),cleanupParent(t)}var t=["container","document","media","supports","layer"];function atruleWithinRule(e,t,n,r){if(groupDeclarations(t),shiftNodesBeforeParent(e,t),e.nodes){const o=t.clone().removeAll().append(e.nodes);e.append(o),cleanupParent(t),r(o,n)}}function isAtruleWithinRule(e){return t.includes(e.name)}function comma(e){const t=[];let n="",r=!1,o=0,s=!1,i=!1;for(const l of e)i?i=!1:"\\"===l?i=!0:s?l===s&&(s=!1):'"'===l||"'"===l?s=l:"("===l?o+=1:")"===l?o>0&&(o-=1):0===o&&","===l&&(r=!0),r?(""!==n&&t.push(n.trim()),n="",r=!1):n+=l;return t.push(n.trim()),t}function transformAtruleWithinAtrule(e,t){var n,r;groupDeclarations(t),shiftNodesBeforeParent(e,t),e.params=(n=t.params,r=e.params,comma(n).map((e=>comma(r).map((t=>`${e} and ${t}`)).join(", "))).join(", ")),cleanupParent(t)}function isAtruleWithinAtrule(e,n){return t.includes(e.name)&&e.name===n.name}function isAtRule(e){return e&&"atrule"===e.type}function isRule(e){return e&&"rule"===e.type}function walk(e,t){e.each((e=>{const n=e.parent;isRule(e)&&e.selector.trim()&&isRule(n)&&n.selector.trim()?transformRuleWithinRule(e,n,t):isAtRule(e)&&isRule(n)&&n.selector.trim()&&isAtruleWithinRule(e)?atruleWithinRule(e,n,t,walk):isAtRule(e)&&isAtRule(n)&&isAtruleWithinAtrule(e,n)&&transformAtruleWithinAtrule(e,n),"nodes"in e&&e.nodes.length&&walk(e,t)}))}const creator=()=>({postcssPlugin:"postcss-nesting",Rule(e,{result:t}){walk(e,t),e.selector.trim().includes("&")&&ampersandToScope(e,t)}});creator.postcss=!0,module.exports=creator;
1+
"use strict";var e=require("postcss-selector-parser");function ampersandToScope(t,n){let r,o=t.parent;for(;o;){if("rule"===o.type)return;o=o.parent}try{r=e().astSync(t.selector)}catch(e){if(!(e instanceof Error))throw e;return void t.warn(n,`Failed to parse selector : "${t.selector}" with message: "${e.message}"`)}r&&(r.walkNesting((t=>{"root"===t.parent?.parent?.type?t.replaceWith(e.pseudo({value:":scope"})):t.replaceWith(e.pseudo({value:":is",nodes:[e.pseudo({value:":root"}),e.pseudo({value:":host"})]}))})),t.selector=r.toString())}function cleanupParent(e){if(!e.nodes.length)return void e.remove();const t=e.nodes.filter((e=>"comment"===e.type));t.length===e.nodes.length&&e.replaceWith(...t)}function shiftNodesBeforeParent(e,t){const n=t.index(e);if(n){const e=t.cloneBefore().removeAll().append(t.nodes.slice(0,n));e.raws.semicolon=!0,cleanupParent(e)}t.before(e),t.raws.semicolon=!0}function mergeSelectors(t,n,r,o){const s=[];if(0===o.length)return;const i=e().astSync(`:is(${r.join(",")})`);for(let r=0;r<o.length;r++){const l=e().astSync(o[r]);if(!l)continue;let a=!1;if(l.walk((e=>{"nesting"===e.type&&(a=!0)})),!a){const s=l.nodes[0];let i=!1;if(s.each((e=>"combinator"===e.type&&(i=!0,!1))),0===r){let e=!1;s.each((t=>"tag"===t.type&&(e=!0,!1))),e&&t.warn(n,`Invalid nested rule : "${o[r]}"`)}i||s.insertBefore(s.at(0),e.combinator({value:" "})),s.insertBefore(s.at(0),e.nesting())}l.walk((e=>{"nesting"===e.type&&e.replaceWith(i.clone({}))})),s.push(l.toString())}return s}function groupDeclarations(e){let t=-1;e.each(((n,r)=>{if("decl"===n.type){if(-1===t)return void(t=r);if(t===r-1)return void(t=r);n.remove(),e.insertAfter(t,n),t=e.index(n)}}))}function transformRuleWithinRule(e,t,n){let r=[];try{r=mergeSelectors(e,n,t.selectors,e.selectors)}catch(r){if(!(r instanceof Error))throw r;return void e.warn(n,`Failed to transform selectors : "${t.selector}" / "${e.selector}" with message: "${r.message}"`)}groupDeclarations(t),shiftNodesBeforeParent(e,t),e.selectors=r;"rule"===e.type&&"rule"===t.type&&e.selector===t.selector&&e.append(...t.nodes),cleanupParent(t)}var t=["container","document","media","supports","layer"];function atruleWithinRule(e,t,n,r){if(groupDeclarations(t),shiftNodesBeforeParent(e,t),e.nodes){const o=t.clone().removeAll().append(e.nodes);e.append(o),cleanupParent(t),r(o,n)}}function isAtruleWithinRule(e){return t.includes(e.name)}function comma(e){const t=[];let n="",r=!1,o=0,s=!1,i=!1;for(const l of e)i?i=!1:"\\"===l?i=!0:s?l===s&&(s=!1):'"'===l||"'"===l?s=l:"("===l?o+=1:")"===l?o>0&&(o-=1):0===o&&","===l&&(r=!0),r?(""!==n&&t.push(n.trim()),n="",r=!1):n+=l;return t.push(n.trim()),t}function transformAtruleWithinAtrule(e,t){var n,r;groupDeclarations(t),shiftNodesBeforeParent(e,t),e.params=(n=t.params,r=e.params,comma(n).map((e=>comma(r).map((t=>`${e} and ${t}`)).join(", "))).join(", ")),cleanupParent(t)}function isAtruleWithinAtrule(e,n){return t.includes(e.name)&&e.name===n.name}function isAtRule(e){return e&&"atrule"===e.type}function isRule(e){return e&&"rule"===e.type}function walk(e,t){e.each((e=>{const n=e.parent;isRule(e)&&e.selector.trim()&&isRule(n)&&n.selector.trim()?transformRuleWithinRule(e,n,t):isAtRule(e)&&isRule(n)&&n.selector.trim()&&isAtruleWithinRule(e)?atruleWithinRule(e,n,t,walk):isAtRule(e)&&isAtRule(n)&&isAtruleWithinAtrule(e,n)&&transformAtruleWithinAtrule(e,n),"nodes"in e&&e.nodes.length&&walk(e,t)}))}const creator=()=>({postcssPlugin:"postcss-nesting",Rule(e,{result:t}){walk(e,t),e.selector.trim().includes("&")&&ampersandToScope(e,t)}});creator.postcss=!0,module.exports=creator;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
import e from"postcss-selector-parser";function ampersandToScope(t,n){let r,o=t.parent;for(;o;){if("rule"===o.type)return;o=o.parent}try{r=e().astSync(t.selector)}catch(e){if(!(e instanceof Error))throw e;return void t.warn(n,`Failed to parse selector : "${t.selector}" with message: "${e.message}"`)}r&&(r.walkNesting((t=>{"root"===t.parent?.parent?.type?t.replaceWith(e.pseudo({value:":scope"})):t.replaceWith(e.pseudo({value:":is",nodes:[e.pseudo({value:":root"}),e.pseudo({value:":host"})]}))})),t.selector=r.toString())}function cleanupParent(e){if(!e.nodes.length)return void e.remove();const t=e.nodes.filter((e=>"comment"===e.type));t.length===e.nodes.length&&e.replaceWith(...t)}function shiftNodesBeforeParent(e,t){const n=t.index(e);if(n){const e=t.cloneBefore().removeAll().append(t.nodes.slice(0,n));e.raws.semicolon=!0,cleanupParent(e)}t.before(e),t.raws.semicolon=!0}function mergeSelectors(t,n,r,o){const s=[];if(0===o.length)return;const i=e().astSync(`:is(${r.join(",")})`);for(let r=0;r<o.length;r++){const l=e().astSync(o[r]);if(!l)continue;let a=!1;if(l.walk((e=>{"nesting"===e.type&&(a=!0)})),!a){const s=l.nodes[0];let i=!1;if(s.each((e=>"combinator"===e.type&&(i=!0,!1))),0===r){let e=!1;s.each((t=>"tag"===t.type&&(e=!0,!1))),e&&t.warn(n,`Invalid nested rule : "${o[r]}"`)}i||s.insertBefore(s.at(0),e.combinator({value:" "})),s.insertBefore(s.at(0),e.nesting({}))}l.walk((e=>{"nesting"===e.type&&e.replaceWith(i.clone({}))})),s.push(l.toString())}return s}function groupDeclarations(e){let t=-1;e.each(((n,r)=>{if("decl"===n.type){if(-1===t)return void(t=r);if(t===r-1)return void(t=r);n.remove(),e.insertAfter(t,n),t=e.index(n)}}))}function transformRuleWithinRule(e,t,n){let r=[];try{r=mergeSelectors(e,n,t.selectors,e.selectors)}catch(r){if(!(r instanceof Error))throw r;return void e.warn(n,`Failed to transform selectors : "${t.selector}" / "${e.selector}" with message: "${r.message}"`)}groupDeclarations(t),shiftNodesBeforeParent(e,t),e.selectors=r;"rule"===e.type&&"rule"===t.type&&e.selector===t.selector&&e.append(...t.nodes),cleanupParent(t)}var t=["container","document","media","supports","layer"];function atruleWithinRule(e,t,n,r){if(groupDeclarations(t),shiftNodesBeforeParent(e,t),e.nodes){const o=t.clone().removeAll().append(e.nodes);e.append(o),cleanupParent(t),r(o,n)}}function isAtruleWithinRule(e){return t.includes(e.name)}function comma(e){const t=[];let n="",r=!1,o=0,s=!1,i=!1;for(const l of e)i?i=!1:"\\"===l?i=!0:s?l===s&&(s=!1):'"'===l||"'"===l?s=l:"("===l?o+=1:")"===l?o>0&&(o-=1):0===o&&","===l&&(r=!0),r?(""!==n&&t.push(n.trim()),n="",r=!1):n+=l;return t.push(n.trim()),t}function transformAtruleWithinAtrule(e,t){var n,r;groupDeclarations(t),shiftNodesBeforeParent(e,t),e.params=(n=t.params,r=e.params,comma(n).map((e=>comma(r).map((t=>`${e} and ${t}`)).join(", "))).join(", ")),cleanupParent(t)}function isAtruleWithinAtrule(e,n){return t.includes(e.name)&&e.name===n.name}function isAtRule(e){return e&&"atrule"===e.type}function isRule(e){return e&&"rule"===e.type}function walk(e,t){e.each((e=>{const n=e.parent;isRule(e)&&e.selector.trim()&&isRule(n)&&n.selector.trim()?transformRuleWithinRule(e,n,t):isAtRule(e)&&isRule(n)&&n.selector.trim()&&isAtruleWithinRule(e)?atruleWithinRule(e,n,t,walk):isAtRule(e)&&isAtRule(n)&&isAtruleWithinAtrule(e,n)&&transformAtruleWithinAtrule(e,n),"nodes"in e&&e.nodes.length&&walk(e,t)}))}const creator=()=>({postcssPlugin:"postcss-nesting",Rule(e,{result:t}){walk(e,t),e.selector.trim().includes("&")&&ampersandToScope(e,t)}});creator.postcss=!0;export{creator as default};
1+
import e from"postcss-selector-parser";function ampersandToScope(t,n){let r,o=t.parent;for(;o;){if("rule"===o.type)return;o=o.parent}try{r=e().astSync(t.selector)}catch(e){if(!(e instanceof Error))throw e;return void t.warn(n,`Failed to parse selector : "${t.selector}" with message: "${e.message}"`)}r&&(r.walkNesting((t=>{"root"===t.parent?.parent?.type?t.replaceWith(e.pseudo({value:":scope"})):t.replaceWith(e.pseudo({value:":is",nodes:[e.pseudo({value:":root"}),e.pseudo({value:":host"})]}))})),t.selector=r.toString())}function cleanupParent(e){if(!e.nodes.length)return void e.remove();const t=e.nodes.filter((e=>"comment"===e.type));t.length===e.nodes.length&&e.replaceWith(...t)}function shiftNodesBeforeParent(e,t){const n=t.index(e);if(n){const e=t.cloneBefore().removeAll().append(t.nodes.slice(0,n));e.raws.semicolon=!0,cleanupParent(e)}t.before(e),t.raws.semicolon=!0}function mergeSelectors(t,n,r,o){const s=[];if(0===o.length)return;const i=e().astSync(`:is(${r.join(",")})`);for(let r=0;r<o.length;r++){const l=e().astSync(o[r]);if(!l)continue;let a=!1;if(l.walk((e=>{"nesting"===e.type&&(a=!0)})),!a){const s=l.nodes[0];let i=!1;if(s.each((e=>"combinator"===e.type&&(i=!0,!1))),0===r){let e=!1;s.each((t=>"tag"===t.type&&(e=!0,!1))),e&&t.warn(n,`Invalid nested rule : "${o[r]}"`)}i||s.insertBefore(s.at(0),e.combinator({value:" "})),s.insertBefore(s.at(0),e.nesting())}l.walk((e=>{"nesting"===e.type&&e.replaceWith(i.clone({}))})),s.push(l.toString())}return s}function groupDeclarations(e){let t=-1;e.each(((n,r)=>{if("decl"===n.type){if(-1===t)return void(t=r);if(t===r-1)return void(t=r);n.remove(),e.insertAfter(t,n),t=e.index(n)}}))}function transformRuleWithinRule(e,t,n){let r=[];try{r=mergeSelectors(e,n,t.selectors,e.selectors)}catch(r){if(!(r instanceof Error))throw r;return void e.warn(n,`Failed to transform selectors : "${t.selector}" / "${e.selector}" with message: "${r.message}"`)}groupDeclarations(t),shiftNodesBeforeParent(e,t),e.selectors=r;"rule"===e.type&&"rule"===t.type&&e.selector===t.selector&&e.append(...t.nodes),cleanupParent(t)}var t=["container","document","media","supports","layer"];function atruleWithinRule(e,t,n,r){if(groupDeclarations(t),shiftNodesBeforeParent(e,t),e.nodes){const o=t.clone().removeAll().append(e.nodes);e.append(o),cleanupParent(t),r(o,n)}}function isAtruleWithinRule(e){return t.includes(e.name)}function comma(e){const t=[];let n="",r=!1,o=0,s=!1,i=!1;for(const l of e)i?i=!1:"\\"===l?i=!0:s?l===s&&(s=!1):'"'===l||"'"===l?s=l:"("===l?o+=1:")"===l?o>0&&(o-=1):0===o&&","===l&&(r=!0),r?(""!==n&&t.push(n.trim()),n="",r=!1):n+=l;return t.push(n.trim()),t}function transformAtruleWithinAtrule(e,t){var n,r;groupDeclarations(t),shiftNodesBeforeParent(e,t),e.params=(n=t.params,r=e.params,comma(n).map((e=>comma(r).map((t=>`${e} and ${t}`)).join(", "))).join(", ")),cleanupParent(t)}function isAtruleWithinAtrule(e,n){return t.includes(e.name)&&e.name===n.name}function isAtRule(e){return e&&"atrule"===e.type}function isRule(e){return e&&"rule"===e.type}function walk(e,t){e.each((e=>{const n=e.parent;isRule(e)&&e.selector.trim()&&isRule(n)&&n.selector.trim()?transformRuleWithinRule(e,n,t):isAtRule(e)&&isRule(n)&&n.selector.trim()&&isAtruleWithinRule(e)?atruleWithinRule(e,n,t,walk):isAtRule(e)&&isAtRule(n)&&isAtruleWithinAtrule(e,n)&&transformAtruleWithinAtrule(e,n),"nodes"in e&&e.nodes.length&&walk(e,t)}))}const creator=()=>({postcssPlugin:"postcss-nesting",Rule(e,{result:t}){walk(e,t),e.selector.trim().includes("&")&&ampersandToScope(e,t)}});creator.postcss=!0;export{creator as default};

‎experimental/postcss-nesting/src/lib/merge-selectors/merge-selectors.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,10 @@ export default function mergeSelectors(node: Node, postcssResult: Result, fromSe
5151
}
5252

5353
if (startsWithCombinator) {
54-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
55-
selectorAST.insertBefore(selectorAST.at(0), parser.nesting({}));
54+
selectorAST.insertBefore(selectorAST.at(0), parser.nesting());
5655
} else {
5756
selectorAST.insertBefore(selectorAST.at(0), parser.combinator({value: ' '}));
58-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
59-
selectorAST.insertBefore(selectorAST.at(0), parser.nesting({}));
57+
selectorAST.insertBefore(selectorAST.at(0), parser.nesting());
6058
}
6159
}
6260

‎package-lock.json

Lines changed: 312 additions & 565 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎packages/selector-resolve-nested/src/flatten-nested-selector.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,9 @@ export function flattenNestedSelector(selector: Root, parentSelector: Root): Roo
3131

3232
if (!isNestContaining) {
3333
selectorAST.prepend(parser.combinator({ value: ' ', ...sourceFrom(selectorAST) }));
34-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
3534
selectorAST.prepend(parser.nesting({ ...sourceFrom(selectorAST) }));
3635
nestingCounter++;
3736
} else if (selectorAST.nodes[0]?.type === 'combinator') {
38-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
3937
selectorAST.prepend(parser.nesting({ ...sourceFrom(selectorAST) }));
4038
nestingCounter++;
4139
}

‎packages/selector-resolve-nested/src/resolve-nested-selector.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,8 @@ export function resolveNestedSelector(selector: Root, parentSelector: Root): Roo
2525

2626
if (!isNestContaining) {
2727
selectorAST.prepend(parser.combinator({ value: ' ', ...sourceFrom(selectorAST) }));
28-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
2928
selectorAST.prepend(parser.nesting({ ...sourceFrom(selectorAST) }));
3029
} else if (selectorAST.nodes[0]?.type === 'combinator') {
31-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
3230
selectorAST.prepend(parser.nesting({ ...sourceFrom(selectorAST) }));
3331
}
3432
}

‎plugin-packs/postcss-preset-env/src/test/lib/list-features/client-side.mjs

Lines changed: 96 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -1,135 +1,118 @@
1-
import { newTestLogger } from '../../log/test-logger.mjs';
1+
import { logsContainEnabledFor, newTestLogger } from '../../log/test-logger.mjs';
22
import { strict as assert } from 'assert';
33
import { listFeatures } from '../../../lib/list-features.mjs';
44
import { cssdb } from './cssdb-fixture.mjs';
55

66
const testLogger = newTestLogger();
77

8-
testLogger.logger.resetLogger();
9-
assert.deepStrictEqual(
10-
cleanResult(listFeatures(cssdb, {stage: 0, enableClientSidePolyfills: false}, undefined, testLogger.logger)),
11-
[
12-
{
13-
browsers: [
14-
'and_chr < 18', 'and_ff < 4',
15-
'android < 65', 'chrome < 1',
16-
'edge < 79', 'firefox < 1',
17-
'ie >= 1', 'ios_saf < 1',
18-
'op_mini all', 'op_mob < 14',
19-
'opera < 15', 'safari < 3',
20-
'samsung < 1.0',
21-
],
22-
pluginOptions: {
23-
enableProgressiveCustomProperties: false,
8+
{
9+
testLogger.logger.resetLogger();
10+
assert.deepStrictEqual(
11+
cleanResult(listFeatures(cssdb, { stage: 0, enableClientSidePolyfills: false }, undefined, testLogger.logger)),
12+
[
13+
{
14+
browsers: [
15+
'and_chr < 18', 'and_ff < 4',
16+
'android < 65', 'chrome < 1',
17+
'edge < 79', 'firefox < 1',
18+
'ie >= 1', 'ios_saf < 1',
19+
'op_mini all', 'op_mob < 14',
20+
'opera < 15', 'safari < 3',
21+
'samsung < 1.0',
22+
],
23+
pluginOptions: {
24+
enableProgressiveCustomProperties: false,
25+
},
26+
vendors_implementations: 3,
27+
id: 'any-link-pseudo-class',
28+
},
29+
{
30+
browsers: ['> 0%'],
31+
vendors_implementations: undefined,
32+
pluginOptions: {},
33+
id: 'progressive-custom-properties',
2434
},
25-
vendors_implementations: 3,
26-
id: 'any-link-pseudo-class',
27-
},
28-
{
29-
browsers: ['> 0%'],
30-
vendors_implementations: undefined,
31-
pluginOptions: {},
32-
id: 'progressive-custom-properties',
33-
},
34-
],
35-
);
35+
],
36+
);
3637

37-
testLogger.logger.emitLogs(testLogger);
38-
assert.deepStrictEqual(
39-
testLogger.getLogs().map(x => x.split('\n')),
40-
[
38+
testLogger.logger.emitLogs(testLogger);
39+
assert.deepStrictEqual(
40+
testLogger.getLogs().map(x => x.split('\n')),
4141
[
42-
'Using features from Stage 0.',
43-
'- \'blank-pseudo-class\' disabled because \'enableClientSidePolyfills\' is \'false\'.',
44-
'- \'any-link-pseudo-class\' enabled for:',
45-
' op_mini all',
42+
[
43+
'Using features from Stage 0.',
44+
'- \'blank-pseudo-class\' disabled because \'enableClientSidePolyfills\' is \'false\'.',
45+
'- \'any-link-pseudo-class\' enabled for:',
46+
' op_mini all',
47+
],
4648
],
47-
],
48-
);
49+
);
50+
}
4951

50-
testLogger.logger.resetLogger();
51-
assert.deepStrictEqual(
52-
cleanResult(listFeatures(cssdb, {stage: 0, enableClientSidePolyfills: true}, undefined, testLogger.logger)),
53-
[
54-
{
55-
browsers: [
56-
'and_chr < 18', 'and_ff < 4',
57-
'android < 65', 'chrome < 1',
58-
'edge < 79', 'firefox < 1',
59-
'ie >= 1', 'ios_saf < 1',
60-
'op_mini all', 'op_mob < 14',
61-
'opera < 15', 'safari < 3',
62-
'samsung < 1.0',
63-
],
64-
vendors_implementations: 3,
65-
pluginOptions: {
66-
enableProgressiveCustomProperties: false,
52+
{
53+
testLogger.logger.resetLogger();
54+
assert.deepStrictEqual(
55+
cleanResult(listFeatures(cssdb, { stage: 0, enableClientSidePolyfills: true }, undefined, testLogger.logger)),
56+
[
57+
{
58+
browsers: [
59+
'and_chr < 18', 'and_ff < 4',
60+
'android < 65', 'chrome < 1',
61+
'edge < 79', 'firefox < 1',
62+
'ie >= 1', 'ios_saf < 1',
63+
'op_mini all', 'op_mob < 14',
64+
'opera < 15', 'safari < 3',
65+
'samsung < 1.0',
66+
],
67+
vendors_implementations: 3,
68+
pluginOptions: {
69+
enableProgressiveCustomProperties: false,
70+
},
71+
id: 'any-link-pseudo-class',
6772
},
68-
id: 'any-link-pseudo-class',
69-
},
70-
{
71-
browsers: [
72-
'and_chr >= 1', 'and_ff >= 1',
73-
'android >= 1', 'chrome >= 1',
74-
'edge >= 1', 'firefox >= 1',
75-
'ie >= 1', 'ios_saf >= 1',
76-
'op_mini all', 'op_mob >= 1',
77-
'opera >= 1', 'safari >= 1',
78-
'samsung >= 1',
79-
],
80-
vendors_implementations: 0,
81-
pluginOptions: { enableProgressiveCustomProperties: false },
82-
id: 'blank-pseudo-class',
83-
},
84-
{
85-
browsers: ['> 0%'],
86-
vendors_implementations: undefined,
87-
pluginOptions: {},
88-
id: 'progressive-custom-properties',
89-
},
90-
],
91-
);
73+
{
74+
browsers: [
75+
'and_chr >= 1', 'and_ff >= 1',
76+
'android >= 1', 'chrome >= 1',
77+
'edge >= 1', 'firefox >= 1',
78+
'ie >= 1', 'ios_saf >= 1',
79+
'op_mini all', 'op_mob >= 1',
80+
'opera >= 1', 'safari >= 1',
81+
'samsung >= 1',
82+
],
83+
vendors_implementations: 0,
84+
pluginOptions: { enableProgressiveCustomProperties: false },
85+
id: 'blank-pseudo-class',
86+
},
87+
{
88+
browsers: ['> 0%'],
89+
vendors_implementations: undefined,
90+
pluginOptions: {},
91+
id: 'progressive-custom-properties',
92+
},
93+
],
94+
);
95+
96+
testLogger.logger.emitLogs(testLogger);
97+
const emittedLogs = testLogger.getLogs().map(x => x.split('\n'));
9298

93-
testLogger.logger.emitLogs(testLogger);
94-
assert.deepStrictEqual(
95-
testLogger.getLogs().map(x => x.split('\n')),
96-
[
99+
assert.equal(emittedLogs.length, 1);
100+
101+
const start = emittedLogs[0].slice(0, 4);
102+
const remainder = emittedLogs[0].slice(4);
103+
104+
assert.deepStrictEqual(
105+
start,
97106
[
98107
'Using features from Stage 0.',
99108
'- \'any-link-pseudo-class\' enabled for:',
100109
' op_mini all',
101110
'- \'blank-pseudo-class\' enabled for:',
102-
' and_chr 126',
103-
' and_ff 127',
104-
' android 126',
105-
' chrome 126',
106-
' chrome 125',
107-
' chrome 124',
108-
' chrome 123',
109-
' chrome 109',
110-
' edge 126',
111-
' edge 125',
112-
' edge 124',
113-
' firefox 127',
114-
' firefox 126',
115-
' firefox 125',
116-
' firefox 115',
117-
' ios_saf 17.5',
118-
' ios_saf 17.4',
119-
' ios_saf 16.6-16.7',
120-
' ios_saf 15.6-15.8',
121-
' op_mini all',
122-
' op_mob 80',
123-
' opera 111',
124-
' opera 110',
125-
' opera 109',
126-
' safari 17.5',
127-
' safari 17.4',
128-
' samsung 25',
129-
' samsung 24',
130111
],
131-
],
132-
);
112+
);
113+
114+
assert.ok(logsContainEnabledFor(remainder, ['chrome', 'firefox', 'safari']));
115+
}
133116

134117
function cleanResult(res) {
135118
return res.map((x) => {

‎plugin-packs/postcss-preset-env/src/test/log/test-logger.mjs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,11 @@ export function newTestLogger() {
1616
},
1717
};
1818
}
19+
20+
export function logsContainEnabledFor(logs, browsers) {
21+
const tests = browsers.map(browser => new RegExp(`^ ${browser} \\d+`));
22+
23+
return tests.every(test => {
24+
return logs.some(log => test.test(log));
25+
});
26+
}

‎plugins-stylelint/at-risk/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
},
4040
"devDependencies": {
4141
"stylelint": "^16.6.0",
42-
"stylelint-test-rule-node": "^0.2.1"
42+
"stylelint-test-rule-node": "^0.3.0"
4343
},
4444
"scripts": {
4545
"lint": "node ../../.github/bin/format-package-json.mjs",

‎plugins-stylelint/no-at-nest-rule/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
"devDependencies": {
4242
"postcss": "^8.4",
4343
"stylelint": "^16.6.0",
44-
"stylelint-test-rule-node": "^0.2.1"
44+
"stylelint-test-rule-node": "^0.3.0"
4545
},
4646
"scripts": {
4747
"lint": "node ../../.github/bin/format-package-json.mjs",

‎plugins-stylelint/no-invalid-at-import-rules-when-bundling/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
},
4444
"devDependencies": {
4545
"stylelint": "^16.6.0",
46-
"stylelint-test-rule-node": "^0.2.1"
46+
"stylelint-test-rule-node": "^0.3.0"
4747
},
4848
"scripts": {
4949
"lint": "node ../../.github/bin/format-package-json.mjs",

‎plugins/postcss-dir-pseudo-class/src/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ const creator: PluginCreator<pluginOptions> = (opts?: pluginOptions) => {
103103
node.remove();
104104
} else {
105105
node.replaceWith(
106-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
107106
selectorParser.universal(),
108107
);
109108
}

‎plugins/postcss-is-pseudo-class/src/split-selectors/complex.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ export default function complexSelectors(selectors: Array<string>, pluginOptions
2222
pseudo.nodes[0].nodes.length === 0
2323
) {
2424
pseudo.value = ':not';
25-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
2625
pseudo.nodes[0].append(parser.universal());
2726
return;
2827
}

‎plugins/postcss-nesting/src/editions/2021/lib/merge-selectors/merge-selectors.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,9 @@ export default function mergeSelectors(fromSelectors: Array<string>, toSelectors
4646

4747
if (!isNestContaining) {
4848
selectorAST.insertBefore(selectorAST.at(0), parser.combinator({ value: ' ' }));
49-
// @ts-expect-error - `parser.nesting` is not recognized
50-
selectorAST.insertBefore(selectorAST.at(0), parser.nesting()); // eslint-disable-line @typescript-eslint/no-unsafe-argument
49+
selectorAST.insertBefore(selectorAST.at(0), parser.nesting());
5150
} else if (startsWithCombinator) {
52-
// @ts-expect-error - `parser.nesting` is not recognized
53-
selectorAST.insertBefore(selectorAST.at(0), parser.nesting()); // eslint-disable-line @typescript-eslint/no-unsafe-argument
51+
selectorAST.insertBefore(selectorAST.at(0), parser.nesting());
5452
}
5553

5654
toSelector = toSelectorAST.toString();

0 commit comments

Comments
 (0)
Please sign in to comment.