From d221f72c00e13258469a748227a1d6f9953a5948 Mon Sep 17 00:00:00 2001 From: nlf Date: Tue, 16 Aug 2022 10:23:06 -0700 Subject: [PATCH] feat(arborist): add :overridden pseudo selector --- workspaces/arborist/lib/query-selector-all.js | 4 ++++ workspaces/arborist/test/query-selector-all.js | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/workspaces/arborist/lib/query-selector-all.js b/workspaces/arborist/lib/query-selector-all.js index 6c540dea3c87..a3eac5ddc123 100644 --- a/workspaces/arborist/lib/query-selector-all.js +++ b/workspaces/arborist/lib/query-selector-all.js @@ -262,6 +262,10 @@ class Results { !internalSelector.has(node)) } + overriddenPseudo () { + return this.initialItems.filter(node => node.overridden) + } + pathPseudo () { return this.initialItems.filter(node => { if (!this.currentAstNode.pathValue) { diff --git a/workspaces/arborist/test/query-selector-all.js b/workspaces/arborist/test/query-selector-all.js index c335a82cbaf4..3bfe34bd8ef2 100644 --- a/workspaces/arborist/test/query-selector-all.js +++ b/workspaces/arborist/test/query-selector-all.js @@ -28,7 +28,7 @@ t.test('query-selector-all', async t => { │ └── moo@3.0.0 (production dep of bar) ├─┬ foo@2.2.2 (dev dep of query-selector-all-tests) │ ├─┬ bar@1.4.0 (production dep of foo, deduped) - │ │ └── dasher@2.0.0 (peer dep of bar) + │ │ └── dasher@2.0.0 (overridden peer dep of bar) │ └── dash-separated-pkg@1.0.0 (production dep of foo) ├── moo@3.0.0 (dev dep of query-selector-all-tests) └─┬ recur@1.0.0 (dev dep of query-selector-all-tests) @@ -98,7 +98,7 @@ t.test('query-selector-all', async t => { name: 'bar', version: '1.4.0', peerDependencies: { - dasher: '2.0.0', + dasher: '2.1.0', }, }), }, @@ -203,6 +203,9 @@ t.test('query-selector-all', async t => { bar: '^2.0.0', ipsum: 'npm:sit@1.0.0', }, + overrides: { + dasher: '2.0.0', + }, devDependencies: { foo: '^2.0.0', moo: '^3.0.0', @@ -368,6 +371,7 @@ t.test('query-selector-all', async t => { ]], [':missing', ['missing-dep@^1.0.0']], [':private', ['b@1.0.0']], + [':overridden', ['dasher@2.0.0']], // :not pseudo [':not(#foo)', [