@vltpkg/query 0.0.0-3 → 0.0.0-30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -82
- package/dist/esm/attribute.d.ts +1 -1
- package/dist/esm/attribute.d.ts.map +1 -1
- package/dist/esm/attribute.js +8 -13
- package/dist/esm/attribute.js.map +1 -1
- package/dist/esm/combinator.d.ts.map +1 -1
- package/dist/esm/combinator.js +5 -2
- package/dist/esm/combinator.js.map +1 -1
- package/dist/esm/id.d.ts.map +1 -1
- package/dist/esm/id.js +23 -7
- package/dist/esm/id.js.map +1 -1
- package/dist/esm/index.d.ts +40 -7
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +303 -23
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/parser.d.ts +15 -0
- package/dist/esm/parser.d.ts.map +1 -0
- package/dist/esm/parser.js +93 -0
- package/dist/esm/parser.js.map +1 -0
- package/dist/esm/pseudo/abandoned.d.ts +7 -0
- package/dist/esm/pseudo/abandoned.d.ts.map +1 -0
- package/dist/esm/pseudo/abandoned.js +6 -0
- package/dist/esm/pseudo/abandoned.js.map +1 -0
- package/dist/esm/pseudo/attr.d.ts +2 -1
- package/dist/esm/pseudo/attr.d.ts.map +1 -1
- package/dist/esm/pseudo/attr.js +10 -2
- package/dist/esm/pseudo/attr.js.map +1 -1
- package/dist/esm/pseudo/confused.d.ts +9 -0
- package/dist/esm/pseudo/confused.d.ts.map +1 -0
- package/dist/esm/pseudo/confused.js +19 -0
- package/dist/esm/pseudo/confused.js.map +1 -0
- package/dist/esm/pseudo/cve.d.ts +13 -0
- package/dist/esm/pseudo/cve.d.ts.map +1 -0
- package/dist/esm/pseudo/cve.js +44 -0
- package/dist/esm/pseudo/cve.js.map +1 -0
- package/dist/esm/pseudo/cwe.d.ts +13 -0
- package/dist/esm/pseudo/cwe.d.ts.map +1 -0
- package/dist/esm/pseudo/cwe.js +43 -0
- package/dist/esm/pseudo/cwe.js.map +1 -0
- package/dist/esm/pseudo/debug.d.ts +7 -0
- package/dist/esm/pseudo/debug.d.ts.map +1 -0
- package/dist/esm/pseudo/debug.js +6 -0
- package/dist/esm/pseudo/debug.js.map +1 -0
- package/dist/esm/pseudo/deprecated.d.ts +7 -0
- package/dist/esm/pseudo/deprecated.d.ts.map +1 -0
- package/dist/esm/pseudo/deprecated.js +6 -0
- package/dist/esm/pseudo/deprecated.js.map +1 -0
- package/dist/esm/pseudo/dev.d.ts +6 -0
- package/dist/esm/pseudo/dev.d.ts.map +1 -0
- package/dist/esm/pseudo/dev.js +15 -0
- package/dist/esm/pseudo/dev.js.map +1 -0
- package/dist/esm/pseudo/dynamic.d.ts +7 -0
- package/dist/esm/pseudo/dynamic.d.ts.map +1 -0
- package/dist/esm/pseudo/dynamic.js +6 -0
- package/dist/esm/pseudo/dynamic.js.map +1 -0
- package/dist/esm/pseudo/empty.d.ts +7 -0
- package/dist/esm/pseudo/empty.d.ts.map +1 -0
- package/dist/esm/pseudo/empty.js +14 -0
- package/dist/esm/pseudo/empty.js.map +1 -0
- package/dist/esm/pseudo/entropic.d.ts +7 -0
- package/dist/esm/pseudo/entropic.d.ts.map +1 -0
- package/dist/esm/pseudo/entropic.js +6 -0
- package/dist/esm/pseudo/entropic.js.map +1 -0
- package/dist/esm/pseudo/env.d.ts +7 -0
- package/dist/esm/pseudo/env.d.ts.map +1 -0
- package/dist/esm/pseudo/env.js +6 -0
- package/dist/esm/pseudo/env.js.map +1 -0
- package/dist/esm/pseudo/eval.d.ts +7 -0
- package/dist/esm/pseudo/eval.d.ts.map +1 -0
- package/dist/esm/pseudo/eval.js +6 -0
- package/dist/esm/pseudo/eval.js.map +1 -0
- package/dist/esm/pseudo/fs.d.ts +7 -0
- package/dist/esm/pseudo/fs.d.ts.map +1 -0
- package/dist/esm/pseudo/fs.js +6 -0
- package/dist/esm/pseudo/fs.js.map +1 -0
- package/dist/esm/pseudo/helpers.d.ts +25 -1
- package/dist/esm/pseudo/helpers.d.ts.map +1 -1
- package/dist/esm/pseudo/helpers.js +53 -0
- package/dist/esm/pseudo/helpers.js.map +1 -1
- package/dist/esm/pseudo/host.d.ts +20 -0
- package/dist/esm/pseudo/host.d.ts.map +1 -0
- package/dist/esm/pseudo/host.js +80 -0
- package/dist/esm/pseudo/host.js.map +1 -0
- package/dist/esm/pseudo/license.d.ts +13 -0
- package/dist/esm/pseudo/license.d.ts.map +1 -0
- package/dist/esm/pseudo/license.js +58 -0
- package/dist/esm/pseudo/license.js.map +1 -0
- package/dist/esm/pseudo/link.d.ts +9 -0
- package/dist/esm/pseudo/link.d.ts.map +1 -0
- package/dist/esm/pseudo/link.js +25 -0
- package/dist/esm/pseudo/link.js.map +1 -0
- package/dist/esm/pseudo/malware.d.ts +24 -0
- package/dist/esm/pseudo/malware.d.ts.map +1 -0
- package/dist/esm/pseudo/malware.js +187 -0
- package/dist/esm/pseudo/malware.js.map +1 -0
- package/dist/esm/pseudo/minified.d.ts +7 -0
- package/dist/esm/pseudo/minified.d.ts.map +1 -0
- package/dist/esm/pseudo/minified.js +6 -0
- package/dist/esm/pseudo/minified.js.map +1 -0
- package/dist/esm/pseudo/missing.d.ts +8 -0
- package/dist/esm/pseudo/missing.d.ts.map +1 -0
- package/dist/esm/pseudo/missing.js +15 -0
- package/dist/esm/pseudo/missing.js.map +1 -0
- package/dist/esm/pseudo/native.d.ts +7 -0
- package/dist/esm/pseudo/native.d.ts.map +1 -0
- package/dist/esm/pseudo/native.js +6 -0
- package/dist/esm/pseudo/native.js.map +1 -0
- package/dist/esm/pseudo/network.d.ts +7 -0
- package/dist/esm/pseudo/network.d.ts.map +1 -0
- package/dist/esm/pseudo/network.js +6 -0
- package/dist/esm/pseudo/network.js.map +1 -0
- package/dist/esm/pseudo/obfuscated.d.ts +7 -0
- package/dist/esm/pseudo/obfuscated.d.ts.map +1 -0
- package/dist/esm/pseudo/obfuscated.js +6 -0
- package/dist/esm/pseudo/obfuscated.js.map +1 -0
- package/dist/esm/pseudo/optional.d.ts +6 -0
- package/dist/esm/pseudo/optional.d.ts.map +1 -0
- package/dist/esm/pseudo/optional.js +15 -0
- package/dist/esm/pseudo/optional.js.map +1 -0
- package/dist/esm/pseudo/outdated.d.ts +4 -4
- package/dist/esm/pseudo/outdated.d.ts.map +1 -1
- package/dist/esm/pseudo/outdated.js +44 -33
- package/dist/esm/pseudo/outdated.js.map +1 -1
- package/dist/esm/pseudo/overridden.d.ts +8 -0
- package/dist/esm/pseudo/overridden.d.ts.map +1 -0
- package/dist/esm/pseudo/overridden.js +17 -0
- package/dist/esm/pseudo/overridden.js.map +1 -0
- package/dist/esm/pseudo/path.d.ts +19 -0
- package/dist/esm/pseudo/path.d.ts.map +1 -0
- package/dist/esm/pseudo/path.js +113 -0
- package/dist/esm/pseudo/path.js.map +1 -0
- package/dist/esm/pseudo/peer.d.ts +6 -0
- package/dist/esm/pseudo/peer.d.ts.map +1 -0
- package/dist/esm/pseudo/peer.js +15 -0
- package/dist/esm/pseudo/peer.js.map +1 -0
- package/dist/esm/pseudo/prerelease.d.ts +18 -0
- package/dist/esm/pseudo/prerelease.d.ts.map +1 -0
- package/dist/esm/pseudo/prerelease.js +41 -0
- package/dist/esm/pseudo/prerelease.js.map +1 -0
- package/dist/esm/pseudo/private.d.ts +7 -0
- package/dist/esm/pseudo/private.d.ts.map +1 -0
- package/dist/esm/pseudo/private.js +16 -0
- package/dist/esm/pseudo/private.js.map +1 -0
- package/dist/esm/pseudo/prod.d.ts +6 -0
- package/dist/esm/pseudo/prod.d.ts.map +1 -0
- package/dist/esm/pseudo/prod.js +15 -0
- package/dist/esm/pseudo/prod.js.map +1 -0
- package/dist/esm/pseudo/published.d.ts +40 -0
- package/dist/esm/pseudo/published.d.ts.map +1 -0
- package/dist/esm/pseudo/published.js +158 -0
- package/dist/esm/pseudo/published.js.map +1 -0
- package/dist/esm/pseudo/root.d.ts +7 -0
- package/dist/esm/pseudo/root.d.ts.map +1 -0
- package/dist/esm/pseudo/root.js +18 -0
- package/dist/esm/pseudo/root.js.map +1 -0
- package/dist/esm/pseudo/scanned.d.ts +9 -0
- package/dist/esm/pseudo/scanned.d.ts.map +1 -0
- package/dist/esm/pseudo/scanned.js +17 -0
- package/dist/esm/pseudo/scanned.js.map +1 -0
- package/dist/esm/pseudo/score.d.ts +16 -0
- package/dist/esm/pseudo/score.d.ts.map +1 -0
- package/dist/esm/pseudo/score.js +119 -0
- package/dist/esm/pseudo/score.js.map +1 -0
- package/dist/esm/pseudo/scripts.d.ts +7 -0
- package/dist/esm/pseudo/scripts.d.ts.map +1 -0
- package/dist/esm/pseudo/scripts.js +6 -0
- package/dist/esm/pseudo/scripts.js.map +1 -0
- package/dist/esm/pseudo/semver.d.ts +2 -1
- package/dist/esm/pseudo/semver.d.ts.map +1 -1
- package/dist/esm/pseudo/semver.js +11 -24
- package/dist/esm/pseudo/semver.js.map +1 -1
- package/dist/esm/pseudo/severity.d.ts +15 -0
- package/dist/esm/pseudo/severity.d.ts.map +1 -0
- package/dist/esm/pseudo/severity.js +160 -0
- package/dist/esm/pseudo/severity.js.map +1 -0
- package/dist/esm/pseudo/shell.d.ts +7 -0
- package/dist/esm/pseudo/shell.d.ts.map +1 -0
- package/dist/esm/pseudo/shell.js +6 -0
- package/dist/esm/pseudo/shell.js.map +1 -0
- package/dist/esm/pseudo/shrinkwrap.d.ts +7 -0
- package/dist/esm/pseudo/shrinkwrap.d.ts.map +1 -0
- package/dist/esm/pseudo/shrinkwrap.js +6 -0
- package/dist/esm/pseudo/shrinkwrap.js.map +1 -0
- package/dist/esm/pseudo/spec.d.ts +17 -0
- package/dist/esm/pseudo/spec.d.ts.map +1 -0
- package/dist/esm/pseudo/spec.js +102 -0
- package/dist/esm/pseudo/spec.js.map +1 -0
- package/dist/esm/pseudo/squat.d.ts +15 -0
- package/dist/esm/pseudo/squat.d.ts.map +1 -0
- package/dist/esm/pseudo/squat.js +161 -0
- package/dist/esm/pseudo/squat.js.map +1 -0
- package/dist/esm/pseudo/suspicious.d.ts +7 -0
- package/dist/esm/pseudo/suspicious.d.ts.map +1 -0
- package/dist/esm/pseudo/suspicious.js +6 -0
- package/dist/esm/pseudo/suspicious.js.map +1 -0
- package/dist/esm/pseudo/tracker.d.ts +7 -0
- package/dist/esm/pseudo/tracker.d.ts.map +1 -0
- package/dist/esm/pseudo/tracker.js +6 -0
- package/dist/esm/pseudo/tracker.js.map +1 -0
- package/dist/esm/pseudo/trivial.d.ts +7 -0
- package/dist/esm/pseudo/trivial.d.ts.map +1 -0
- package/dist/esm/pseudo/trivial.js +6 -0
- package/dist/esm/pseudo/trivial.js.map +1 -0
- package/dist/esm/pseudo/type.d.ts +8 -0
- package/dist/esm/pseudo/type.d.ts.map +1 -0
- package/dist/esm/pseudo/type.js +22 -0
- package/dist/esm/pseudo/type.js.map +1 -0
- package/dist/esm/pseudo/undesirable.d.ts +7 -0
- package/dist/esm/pseudo/undesirable.d.ts.map +1 -0
- package/dist/esm/pseudo/undesirable.js +6 -0
- package/dist/esm/pseudo/undesirable.js.map +1 -0
- package/dist/esm/pseudo/unknown.d.ts +7 -0
- package/dist/esm/pseudo/unknown.d.ts.map +1 -0
- package/dist/esm/pseudo/unknown.js +6 -0
- package/dist/esm/pseudo/unknown.js.map +1 -0
- package/dist/esm/pseudo/unmaintained.d.ts +7 -0
- package/dist/esm/pseudo/unmaintained.d.ts.map +1 -0
- package/dist/esm/pseudo/unmaintained.js +6 -0
- package/dist/esm/pseudo/unmaintained.js.map +1 -0
- package/dist/esm/pseudo/unpopular.d.ts +7 -0
- package/dist/esm/pseudo/unpopular.d.ts.map +1 -0
- package/dist/esm/pseudo/unpopular.js +6 -0
- package/dist/esm/pseudo/unpopular.js.map +1 -0
- package/dist/esm/pseudo/unstable.d.ts +7 -0
- package/dist/esm/pseudo/unstable.d.ts.map +1 -0
- package/dist/esm/pseudo/unstable.js +6 -0
- package/dist/esm/pseudo/unstable.js.map +1 -0
- package/dist/esm/pseudo/workspace.d.ts +6 -0
- package/dist/esm/pseudo/workspace.d.ts.map +1 -0
- package/dist/esm/pseudo/workspace.js +20 -0
- package/dist/esm/pseudo/workspace.js.map +1 -0
- package/dist/esm/pseudo.d.ts.map +1 -1
- package/dist/esm/pseudo.js +151 -109
- package/dist/esm/pseudo.js.map +1 -1
- package/dist/esm/types.d.ts +98 -26
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +1 -106
- package/dist/esm/types.js.map +1 -1
- package/package.json +20 -15
- package/dist/esm/class.d.ts +0 -6
- package/dist/esm/class.d.ts.map +0 -1
- package/dist/esm/class.js +0 -128
- package/dist/esm/class.js.map +0 -1
package/dist/esm/pseudo.js
CHANGED
|
@@ -1,22 +1,59 @@
|
|
|
1
|
-
import { splitDepID } from '@vltpkg/dep-id/browser';
|
|
2
1
|
import { error } from '@vltpkg/error-cause';
|
|
3
|
-
import {
|
|
2
|
+
import { removeDanglingEdges, removeNode } from "./pseudo/helpers.js";
|
|
3
|
+
import { asPostcssNodeWithChildren, asPseudoNode, isSelectorNode, } from '@vltpkg/dss-parser';
|
|
4
|
+
// imported pseudo selectors
|
|
5
|
+
import { abandoned } from "./pseudo/abandoned.js";
|
|
4
6
|
import { attr } from "./pseudo/attr.js";
|
|
7
|
+
import { confused } from "./pseudo/confused.js";
|
|
8
|
+
import { cve } from "./pseudo/cve.js";
|
|
9
|
+
import { cwe } from "./pseudo/cwe.js";
|
|
10
|
+
import { debug } from "./pseudo/debug.js";
|
|
11
|
+
import { deprecated } from "./pseudo/deprecated.js";
|
|
12
|
+
import { dev } from "./pseudo/dev.js";
|
|
13
|
+
import { dynamic } from "./pseudo/dynamic.js";
|
|
14
|
+
import { empty } from "./pseudo/empty.js";
|
|
15
|
+
import { entropic } from "./pseudo/entropic.js";
|
|
16
|
+
import { env } from "./pseudo/env.js";
|
|
17
|
+
import { evalParser } from "./pseudo/eval.js";
|
|
18
|
+
import { fs } from "./pseudo/fs.js";
|
|
19
|
+
import { hostContext } from "./pseudo/host.js";
|
|
20
|
+
import { license } from "./pseudo/license.js";
|
|
21
|
+
import { link } from "./pseudo/link.js";
|
|
22
|
+
import { malware } from "./pseudo/malware.js";
|
|
23
|
+
import { minified } from "./pseudo/minified.js";
|
|
24
|
+
import { missing } from "./pseudo/missing.js";
|
|
25
|
+
import { nativeParser } from "./pseudo/native.js";
|
|
26
|
+
import { network } from "./pseudo/network.js";
|
|
27
|
+
import { obfuscated } from "./pseudo/obfuscated.js";
|
|
28
|
+
import { optional } from "./pseudo/optional.js";
|
|
5
29
|
import { outdated } from "./pseudo/outdated.js";
|
|
30
|
+
import { overridden } from "./pseudo/overridden.js";
|
|
31
|
+
import { path } from "./pseudo/path.js";
|
|
32
|
+
import { peer } from "./pseudo/peer.js";
|
|
33
|
+
import { prerelease } from "./pseudo/prerelease.js";
|
|
34
|
+
import { published } from "./pseudo/published.js";
|
|
35
|
+
import { privateParser } from "./pseudo/private.js";
|
|
36
|
+
import { prod } from "./pseudo/prod.js";
|
|
37
|
+
import { root } from "./pseudo/root.js";
|
|
38
|
+
import { scanned } from "./pseudo/scanned.js";
|
|
39
|
+
import { score } from "./pseudo/score.js";
|
|
40
|
+
import { scripts } from "./pseudo/scripts.js";
|
|
41
|
+
import { shell } from "./pseudo/shell.js";
|
|
6
42
|
import { semverParser as semver } from "./pseudo/semver.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
};
|
|
43
|
+
import { severity } from "./pseudo/severity.js";
|
|
44
|
+
import { spec } from "./pseudo/spec.js";
|
|
45
|
+
import { shrinkwrap } from "./pseudo/shrinkwrap.js";
|
|
46
|
+
import { squat } from "./pseudo/squat.js";
|
|
47
|
+
import { suspicious } from "./pseudo/suspicious.js";
|
|
48
|
+
import { tracker } from "./pseudo/tracker.js";
|
|
49
|
+
import { trivial } from "./pseudo/trivial.js";
|
|
50
|
+
import { type } from "./pseudo/type.js";
|
|
51
|
+
import { undesirable } from "./pseudo/undesirable.js";
|
|
52
|
+
import { unknown } from "./pseudo/unknown.js";
|
|
53
|
+
import { unmaintained } from "./pseudo/unmaintained.js";
|
|
54
|
+
import { unpopular } from "./pseudo/unpopular.js";
|
|
55
|
+
import { unstable } from "./pseudo/unstable.js";
|
|
56
|
+
import { workspace } from "./pseudo/workspace.js";
|
|
20
57
|
/**
|
|
21
58
|
* :has Pseudo-Selector, matches only nodes that have valid results
|
|
22
59
|
* for its nested selector expressions.
|
|
@@ -43,7 +80,14 @@ const has = async (state) => {
|
|
|
43
80
|
edges: new Set(state.partial.edges),
|
|
44
81
|
nodes: new Set(state.partial.nodes),
|
|
45
82
|
},
|
|
46
|
-
|
|
83
|
+
hostContexts: state.hostContexts,
|
|
84
|
+
importers: state.importers,
|
|
85
|
+
retries: state.retries,
|
|
86
|
+
securityArchive: state.securityArchive,
|
|
87
|
+
signal: state.signal,
|
|
88
|
+
scopeIDs: state.scopeIDs,
|
|
89
|
+
comment: state.comment,
|
|
90
|
+
specificity: { ...state.specificity },
|
|
47
91
|
});
|
|
48
92
|
for (const n of nestedState.collect.nodes) {
|
|
49
93
|
collectNodes.add(n);
|
|
@@ -116,8 +160,15 @@ const is = async (state) => {
|
|
|
116
160
|
nodes: new Set(state.partial.nodes),
|
|
117
161
|
edges: new Set(state.partial.edges),
|
|
118
162
|
},
|
|
163
|
+
importers: state.importers,
|
|
164
|
+
hostContexts: state.hostContexts,
|
|
119
165
|
walk: state.walk,
|
|
120
|
-
|
|
166
|
+
retries: state.retries,
|
|
167
|
+
securityArchive: state.securityArchive,
|
|
168
|
+
signal: state.signal,
|
|
169
|
+
scopeIDs: state.scopeIDs,
|
|
170
|
+
comment: state.comment,
|
|
171
|
+
specificity: { ...state.specificity },
|
|
121
172
|
});
|
|
122
173
|
for (const n of nestedState.collect.nodes) {
|
|
123
174
|
collect.add(n);
|
|
@@ -131,19 +182,6 @@ const is = async (state) => {
|
|
|
131
182
|
}
|
|
132
183
|
return state;
|
|
133
184
|
};
|
|
134
|
-
/**
|
|
135
|
-
* :missing Pseudo-Selector, matches only
|
|
136
|
-
* edges that are not linked to any node.
|
|
137
|
-
*/
|
|
138
|
-
const missing = async (state) => {
|
|
139
|
-
for (const edge of state.partial.edges) {
|
|
140
|
-
if (edge.to) {
|
|
141
|
-
state.partial.edges.delete(edge);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
state.partial.nodes.clear();
|
|
145
|
-
return state;
|
|
146
|
-
};
|
|
147
185
|
/**
|
|
148
186
|
* :not Pseudo-class, serves to create negate expressions, anything that
|
|
149
187
|
* matches selectors declared inside the `:not()` expression is going to be
|
|
@@ -166,8 +204,15 @@ const not = async (state) => {
|
|
|
166
204
|
nodes: new Set(state.partial.nodes),
|
|
167
205
|
edges: new Set(state.partial.edges),
|
|
168
206
|
},
|
|
207
|
+
importers: state.importers,
|
|
208
|
+
hostContexts: state.hostContexts,
|
|
169
209
|
walk: state.walk,
|
|
170
|
-
|
|
210
|
+
retries: state.retries,
|
|
211
|
+
securityArchive: state.securityArchive,
|
|
212
|
+
signal: state.signal,
|
|
213
|
+
scopeIDs: state.scopeIDs,
|
|
214
|
+
comment: state.comment,
|
|
215
|
+
specificity: { ...state.specificity },
|
|
171
216
|
});
|
|
172
217
|
for (const n of nestedState.collect.nodes) {
|
|
173
218
|
collect.add(n);
|
|
@@ -190,113 +235,96 @@ const not = async (state) => {
|
|
|
190
235
|
return state;
|
|
191
236
|
};
|
|
192
237
|
/**
|
|
193
|
-
* :
|
|
194
|
-
* a `private: true` key set in their `package.json` metadata.
|
|
195
|
-
*/
|
|
196
|
-
const privateFn = async (state) => {
|
|
197
|
-
for (const node of state.partial.nodes) {
|
|
198
|
-
if (!node.manifest || !asManifest(node.manifest).private) {
|
|
199
|
-
removeNode(state, node);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
removeDanglingEdges(state);
|
|
203
|
-
return state;
|
|
204
|
-
};
|
|
205
|
-
/**
|
|
206
|
-
* :root Pseudo-Element will return the project root node for the graph.
|
|
207
|
-
*/
|
|
208
|
-
const root = async (state) => {
|
|
209
|
-
const [anyNode] = state.initial.nodes.values();
|
|
210
|
-
const mainImporter = anyNode?.graph.mainImporter;
|
|
211
|
-
if (!mainImporter) {
|
|
212
|
-
throw error(':root pseudo-element works on local graphs only');
|
|
213
|
-
}
|
|
214
|
-
for (const edge of state.partial.edges) {
|
|
215
|
-
if (edge.to !== mainImporter) {
|
|
216
|
-
state.partial.edges.delete(edge);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
state.partial.nodes.clear();
|
|
220
|
-
state.partial.nodes.add(mainImporter);
|
|
221
|
-
return state;
|
|
222
|
-
};
|
|
223
|
-
/**
|
|
224
|
-
* :project Pseudo-Element, returns all graph importers (e.g: the
|
|
238
|
+
* :project Pseudo-Class, matches only graph importers (e.g: the
|
|
225
239
|
* root node along with any configured workspace)
|
|
226
240
|
*/
|
|
227
241
|
const project = async (state) => {
|
|
228
|
-
const
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
throw error(':project pseudo-element works on local graphs only');
|
|
232
|
-
}
|
|
233
|
-
// make a list of all edges that are coming from importers
|
|
234
|
-
// so that we can filter out any edges that are not direct
|
|
235
|
-
// dependencies of the importers
|
|
236
|
-
const importersEdgesIn = new Set();
|
|
237
|
-
for (const importer of importers) {
|
|
238
|
-
for (const edge of importer.edgesIn) {
|
|
239
|
-
importersEdgesIn.add(edge);
|
|
242
|
+
for (const node of state.partial.nodes) {
|
|
243
|
+
if (!node.importer) {
|
|
244
|
+
removeNode(state, node);
|
|
240
245
|
}
|
|
241
246
|
}
|
|
242
247
|
for (const edge of state.partial.edges) {
|
|
243
|
-
if (!edge.to
|
|
248
|
+
if (!edge.to?.importer) {
|
|
244
249
|
state.partial.edges.delete(edge);
|
|
245
250
|
}
|
|
246
251
|
}
|
|
247
|
-
state.partial.nodes.clear();
|
|
248
|
-
for (const importer of importers) {
|
|
249
|
-
state.partial.nodes.add(importer);
|
|
250
|
-
}
|
|
251
252
|
return state;
|
|
252
253
|
};
|
|
253
254
|
/**
|
|
254
|
-
* :scope Pseudo-Element, returns the
|
|
255
|
-
*
|
|
255
|
+
* :scope Pseudo-Element, returns only the nodes that match the provided scopeIDs
|
|
256
|
+
* from the Query.search method.
|
|
256
257
|
*/
|
|
257
258
|
const scope = async (state) => {
|
|
258
|
-
state.
|
|
259
|
-
state.partial.nodes.clear();
|
|
260
|
-
for (const edge of state.initial.edges) {
|
|
261
|
-
state.partial.edges.add(edge);
|
|
262
|
-
}
|
|
263
|
-
for (const node of state.initial.nodes) {
|
|
264
|
-
state.partial.nodes.add(node);
|
|
265
|
-
}
|
|
266
|
-
return state;
|
|
267
|
-
};
|
|
268
|
-
/**
|
|
269
|
-
* :type(str) Pseudo-Element will match only nodes that are of
|
|
270
|
-
* the same type as the value used
|
|
271
|
-
*/
|
|
272
|
-
const typeFn = async (state) => {
|
|
273
|
-
const type = asPostcssNodeWithChildren(state.current);
|
|
274
|
-
const selector = asPostcssNodeWithChildren(type.nodes[0]);
|
|
275
|
-
const name = asTagNode(selector.nodes[0]).value;
|
|
259
|
+
const scopeIDSet = new Set(state.scopeIDs);
|
|
276
260
|
for (const node of state.partial.nodes) {
|
|
277
|
-
|
|
278
|
-
if (nodeType !== name) {
|
|
261
|
+
if (!scopeIDSet.has(node.id)) {
|
|
279
262
|
removeNode(state, node);
|
|
280
263
|
}
|
|
281
264
|
}
|
|
265
|
+
removeDanglingEdges(state);
|
|
282
266
|
return state;
|
|
283
267
|
};
|
|
284
268
|
const pseudoSelectors = new Map(Object.entries({
|
|
269
|
+
abandoned,
|
|
285
270
|
attr,
|
|
271
|
+
confused,
|
|
272
|
+
cve,
|
|
273
|
+
cwe,
|
|
274
|
+
debug,
|
|
275
|
+
deprecated,
|
|
276
|
+
dev,
|
|
277
|
+
dynamic,
|
|
278
|
+
eval: evalParser,
|
|
286
279
|
empty,
|
|
280
|
+
entropic,
|
|
281
|
+
env,
|
|
282
|
+
fs,
|
|
287
283
|
has,
|
|
284
|
+
host: hostContext,
|
|
288
285
|
is,
|
|
289
|
-
|
|
286
|
+
license,
|
|
287
|
+
link,
|
|
288
|
+
malware,
|
|
289
|
+
minified,
|
|
290
290
|
missing,
|
|
291
|
+
native: nativeParser,
|
|
292
|
+
network,
|
|
291
293
|
not,
|
|
292
|
-
|
|
293
|
-
|
|
294
|
+
obfuscated,
|
|
295
|
+
optional,
|
|
296
|
+
outdated,
|
|
297
|
+
overridden,
|
|
298
|
+
path,
|
|
299
|
+
peer,
|
|
300
|
+
prerelease,
|
|
301
|
+
published,
|
|
302
|
+
private: privateParser,
|
|
303
|
+
prod,
|
|
294
304
|
project,
|
|
295
305
|
root,
|
|
306
|
+
scanned,
|
|
296
307
|
scope,
|
|
297
|
-
|
|
308
|
+
score,
|
|
309
|
+
scripts,
|
|
298
310
|
semver,
|
|
299
|
-
|
|
311
|
+
sev: severity,
|
|
312
|
+
spec,
|
|
313
|
+
severity,
|
|
314
|
+
shell,
|
|
315
|
+
shrinkwrap,
|
|
316
|
+
squat,
|
|
317
|
+
suspicious,
|
|
318
|
+
tracker,
|
|
319
|
+
trivial,
|
|
320
|
+
type,
|
|
321
|
+
undesirable,
|
|
322
|
+
unknown,
|
|
323
|
+
unmaintained,
|
|
324
|
+
unpopular,
|
|
325
|
+
unstable,
|
|
326
|
+
v: semver,
|
|
327
|
+
workspace,
|
|
300
328
|
}));
|
|
301
329
|
/**
|
|
302
330
|
* Parsers the `pseudo` node types.
|
|
@@ -307,10 +335,24 @@ export const pseudo = async (state) => {
|
|
|
307
335
|
const parserFn = curr.value && pseudoSelectors.get(curr.value.slice(1));
|
|
308
336
|
if (!parserFn) {
|
|
309
337
|
if (state.loose) {
|
|
338
|
+
state.partial.edges.clear();
|
|
339
|
+
state.partial.nodes.clear();
|
|
310
340
|
return state;
|
|
311
341
|
}
|
|
312
|
-
throw
|
|
342
|
+
throw error(`Unsupported pseudo-class: ${state.current.value}`, {
|
|
343
|
+
found: state.current,
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
const result = await parserFn(state);
|
|
347
|
+
// Increment the commonCounter for specificity, except for
|
|
348
|
+
// nesting selectors which don't contribute to specificity
|
|
349
|
+
const pseudoValue = curr.value.slice(1);
|
|
350
|
+
if (pseudoValue &&
|
|
351
|
+
pseudoValue !== 'not' &&
|
|
352
|
+
pseudoValue !== 'is' &&
|
|
353
|
+
pseudoValue !== 'has') {
|
|
354
|
+
result.specificity.commonCounter += 1;
|
|
313
355
|
}
|
|
314
|
-
return
|
|
356
|
+
return result;
|
|
315
357
|
};
|
|
316
358
|
//# sourceMappingURL=pseudo.js.map
|
package/dist/esm/pseudo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pseudo.js","sourceRoot":"","sources":["../../src/pseudo.ts"],"names":[],"mappings":"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","sourcesContent":["import { splitDepID } from '@vltpkg/dep-id/browser'\nimport { error } from '@vltpkg/error-cause'\nimport type { EdgeLike, NodeLike } from '@vltpkg/graph'\nimport { asManifest } from '@vltpkg/types'\nimport { attr } from './pseudo/attr.ts'\nimport { outdated } from './pseudo/outdated.ts'\nimport { semverParser as semver } from './pseudo/semver.ts'\nimport { removeDanglingEdges, removeNode } from './pseudo/helpers.ts'\nimport {\n asPostcssNodeWithChildren,\n asPseudoNode,\n asTagNode,\n isSelectorNode,\n} from './types.ts'\nimport type { ParserFn, ParserState } from './types.ts'\n\n/**\n * :empty Pseudo-Selector, matches only nodes that have no children.\n */\nconst empty = async (state: ParserState) => {\n for (const node of state.partial.nodes) {\n if (node.edgesOut.size > 0) {\n removeNode(state, node)\n }\n }\n return state\n}\n\n/**\n * :has Pseudo-Selector, matches only nodes that have valid results\n * for its nested selector expressions.\n */\nconst has = async (state: ParserState) => {\n const top = asPostcssNodeWithChildren(state.current)\n const collectNodes = new Set<NodeLike>()\n const collectEdges = new Set<EdgeLike>()\n\n for (const node of top.nodes) {\n if (isSelectorNode(node)) {\n const nestedState = await state.walk({\n cancellable: state.cancellable,\n initial: {\n edges: new Set(state.initial.edges),\n nodes: new Set(state.initial.nodes),\n },\n current: node,\n walk: state.walk,\n collect: {\n edges: new Set(),\n nodes: new Set(),\n },\n partial: {\n edges: new Set(state.partial.edges),\n nodes: new Set(state.partial.nodes),\n },\n specOptions: state.specOptions,\n })\n for (const n of nestedState.collect.nodes) {\n collectNodes.add(n)\n }\n for (const e of nestedState.partial.edges) {\n collectEdges.add(e)\n }\n }\n }\n\n // if the nested selector did not match anything, that means\n // no current node has any matches\n if (collectNodes.size === 0) {\n state.partial.edges.clear()\n state.partial.nodes.clear()\n return state\n }\n\n // handles transitive dependencies\n // compareNodes collects a list of all ancestor nodes\n // from the resulting nodes of the nested selector\n const compareNodes = new Set<NodeLike>()\n const traverse = new Set(collectNodes)\n for (const node of traverse) {\n for (const edge of node.edgesIn) {\n compareNodes.add(edge.from)\n if (edge.from.edgesIn.size) {\n traverse.add(edge.from)\n }\n }\n }\n\n // for each node in the current list checks to see if\n // it has a node in the resulting nested state that is\n // a transitive dependency / children.\n nodesLoop: for (const node of state.partial.nodes) {\n if (node.edgesOut.size === 0 || !compareNodes.has(node)) {\n removeNode(state, node)\n continue\n }\n\n for (const edge of node.edgesOut.values()) {\n if (collectEdges.has(edge)) {\n continue nodesLoop\n }\n }\n removeNode(state, node)\n }\n\n removeDanglingEdges(state)\n\n return state\n}\n\n/**\n * :is Pseudo-selector, acts as a shortcut for writing more compact expressions\n * by allowing multiple nested selectors to match on the previous results.\n *\n * It also enables the loose parsing mode, skipping instead of erroring usage\n * of non-existing classes, identifiers, pseudo-classes, etc.\n */\nconst is = async (state: ParserState) => {\n const top = asPostcssNodeWithChildren(state.current)\n const collect = new Set()\n for (const node of top.nodes) {\n if (isSelectorNode(node)) {\n const nestedState = await state.walk({\n cancellable: state.cancellable,\n collect: {\n edges: new Set(),\n nodes: new Set(),\n },\n current: node,\n initial: state.initial,\n loose: true,\n partial: {\n nodes: new Set(state.partial.nodes),\n edges: new Set(state.partial.edges),\n },\n walk: state.walk,\n specOptions: state.specOptions,\n })\n for (const n of nestedState.collect.nodes) {\n collect.add(n)\n }\n }\n }\n for (const node of state.partial.nodes) {\n if (!collect.has(node)) {\n removeNode(state, node)\n }\n }\n return state\n}\n\n/**\n * :missing Pseudo-Selector, matches only\n * edges that are not linked to any node.\n */\nconst missing = async (state: ParserState) => {\n for (const edge of state.partial.edges) {\n if (edge.to) {\n state.partial.edges.delete(edge)\n }\n }\n state.partial.nodes.clear()\n return state\n}\n\n/**\n * :not Pseudo-class, serves to create negate expressions, anything that\n * matches selectors declared inside the `:not()` expression is going to be\n * filtered out in the final result.\n */\nconst not = async (state: ParserState) => {\n const top = asPostcssNodeWithChildren(state.current)\n const collect = new Set()\n for (const node of top.nodes) {\n if (isSelectorNode(node)) {\n const nestedState = await state.walk({\n cancellable: state.cancellable,\n collect: {\n edges: new Set(),\n nodes: new Set(),\n },\n current: node,\n initial: state.initial,\n partial: {\n nodes: new Set(state.partial.nodes),\n edges: new Set(state.partial.edges),\n },\n walk: state.walk,\n specOptions: state.specOptions,\n })\n for (const n of nestedState.collect.nodes) {\n collect.add(n)\n }\n /* c8 ignore start - should be impossible */\n } else {\n throw error('Error parsing :not() selectors', {\n wanted: { type: 'selector' },\n found: node,\n })\n }\n /* c8 ignore stop */\n }\n for (const node of state.partial.nodes) {\n if (collect.has(node)) {\n removeNode(state, node)\n }\n }\n return state\n}\n\n/**\n * :private Pseudo-Selector will only match packages that have\n * a `private: true` key set in their `package.json` metadata.\n */\nconst privateFn = async (state: ParserState) => {\n for (const node of state.partial.nodes) {\n if (!node.manifest || !asManifest(node.manifest).private) {\n removeNode(state, node)\n }\n }\n\n removeDanglingEdges(state)\n\n return state\n}\n\n/**\n * :root Pseudo-Element will return the project root node for the graph.\n */\nconst root = async (state: ParserState) => {\n const [anyNode] = state.initial.nodes.values()\n const mainImporter = anyNode?.graph.mainImporter\n if (!mainImporter) {\n throw error(':root pseudo-element works on local graphs only')\n }\n for (const edge of state.partial.edges) {\n if (edge.to !== mainImporter) {\n state.partial.edges.delete(edge)\n }\n }\n state.partial.nodes.clear()\n state.partial.nodes.add(mainImporter)\n return state\n}\n\n/**\n * :project Pseudo-Element, returns all graph importers (e.g: the\n * root node along with any configured workspace)\n */\nconst project = async (state: ParserState) => {\n const [anyNode] = state.initial.nodes.values()\n const importers = anyNode?.graph.importers\n if (!importers?.size) {\n throw error(':project pseudo-element works on local graphs only')\n }\n\n // make a list of all edges that are coming from importers\n // so that we can filter out any edges that are not direct\n // dependencies of the importers\n const importersEdgesIn = new Set<EdgeLike>()\n for (const importer of importers) {\n for (const edge of importer.edgesIn) {\n importersEdgesIn.add(edge)\n }\n }\n\n for (const edge of state.partial.edges) {\n if (!edge.to || !importersEdgesIn.has(edge)) {\n state.partial.edges.delete(edge)\n }\n }\n state.partial.nodes.clear()\n for (const importer of importers) {\n state.partial.nodes.add(importer)\n }\n return state\n}\n\n/**\n * :scope Pseudo-Element, returns the original scope of items\n * at the start of a given selector.\n */\nconst scope = async (state: ParserState) => {\n state.partial.edges.clear()\n state.partial.nodes.clear()\n for (const edge of state.initial.edges) {\n state.partial.edges.add(edge)\n }\n for (const node of state.initial.nodes) {\n state.partial.nodes.add(node)\n }\n return state\n}\n\n/**\n * :type(str) Pseudo-Element will match only nodes that are of\n * the same type as the value used\n */\nconst typeFn = async (state: ParserState) => {\n const type = asPostcssNodeWithChildren(state.current)\n const selector = asPostcssNodeWithChildren(type.nodes[0])\n const name = asTagNode(selector.nodes[0]).value\n for (const node of state.partial.nodes) {\n const nodeType = splitDepID(node.id)[0]\n if (nodeType !== name) {\n removeNode(state, node)\n }\n }\n return state\n}\n\nconst pseudoSelectors = new Map<string, ParserFn>(\n Object.entries({\n attr,\n empty,\n has,\n is,\n // TODO: link\n missing,\n not,\n // TODO: overridden\n private: privateFn,\n project,\n root,\n scope,\n type: typeFn,\n semver,\n outdated,\n }),\n)\n\n/**\n * Parsers the `pseudo` node types.\n */\nexport const pseudo = async (state: ParserState) => {\n await state.cancellable()\n\n const curr = asPseudoNode(state.current)\n const parserFn =\n curr.value && pseudoSelectors.get(curr.value.slice(1))\n\n if (!parserFn) {\n if (state.loose) {\n return state\n }\n\n throw new Error(\n `Unsupported pseudo-class: ${state.current.value}`,\n )\n }\n return parserFn(state)\n}\n"]}
|
|
1
|
+
{"version":3,"file":"pseudo.js","sourceRoot":"","sources":["../../src/pseudo.ts"],"names":[],"mappings":"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","sourcesContent":["import { error } from '@vltpkg/error-cause'\nimport { removeDanglingEdges, removeNode } from './pseudo/helpers.ts'\nimport {\n asPostcssNodeWithChildren,\n asPseudoNode,\n isSelectorNode,\n} from '@vltpkg/dss-parser'\n\n// imported pseudo selectors\nimport { abandoned } from './pseudo/abandoned.ts'\nimport { attr } from './pseudo/attr.ts'\nimport { confused } from './pseudo/confused.ts'\nimport { cve } from './pseudo/cve.ts'\nimport { cwe } from './pseudo/cwe.ts'\nimport { debug } from './pseudo/debug.ts'\nimport { deprecated } from './pseudo/deprecated.ts'\nimport { dev } from './pseudo/dev.ts'\nimport { dynamic } from './pseudo/dynamic.ts'\nimport { empty } from './pseudo/empty.ts'\nimport { entropic } from './pseudo/entropic.ts'\nimport { env } from './pseudo/env.ts'\nimport { evalParser } from './pseudo/eval.ts'\nimport { fs } from './pseudo/fs.ts'\nimport { hostContext } from './pseudo/host.ts'\nimport { license } from './pseudo/license.ts'\nimport { link } from './pseudo/link.ts'\nimport { malware } from './pseudo/malware.ts'\nimport { minified } from './pseudo/minified.ts'\nimport { missing } from './pseudo/missing.ts'\nimport { nativeParser } from './pseudo/native.ts'\nimport { network } from './pseudo/network.ts'\nimport { obfuscated } from './pseudo/obfuscated.ts'\nimport { optional } from './pseudo/optional.ts'\nimport { outdated } from './pseudo/outdated.ts'\nimport { overridden } from './pseudo/overridden.ts'\nimport { path } from './pseudo/path.ts'\nimport { peer } from './pseudo/peer.ts'\nimport { prerelease } from './pseudo/prerelease.ts'\nimport { published } from './pseudo/published.ts'\nimport { privateParser } from './pseudo/private.ts'\nimport { prod } from './pseudo/prod.ts'\nimport { root } from './pseudo/root.ts'\nimport { scanned } from './pseudo/scanned.ts'\nimport { score } from './pseudo/score.ts'\nimport { scripts } from './pseudo/scripts.ts'\nimport { shell } from './pseudo/shell.ts'\nimport { semverParser as semver } from './pseudo/semver.ts'\nimport { severity } from './pseudo/severity.ts'\nimport { spec } from './pseudo/spec.ts'\nimport { shrinkwrap } from './pseudo/shrinkwrap.ts'\nimport { squat } from './pseudo/squat.ts'\nimport { suspicious } from './pseudo/suspicious.ts'\nimport { tracker } from './pseudo/tracker.ts'\nimport { trivial } from './pseudo/trivial.ts'\nimport { type } from './pseudo/type.ts'\nimport { undesirable } from './pseudo/undesirable.ts'\nimport { unknown } from './pseudo/unknown.ts'\nimport { unmaintained } from './pseudo/unmaintained.ts'\nimport { unpopular } from './pseudo/unpopular.ts'\nimport { unstable } from './pseudo/unstable.ts'\nimport { workspace } from './pseudo/workspace.ts'\n\nimport type { EdgeLike, NodeLike } from '@vltpkg/types'\nimport type { ParserFn, ParserState } from './types.ts'\n\n/**\n * :has Pseudo-Selector, matches only nodes that have valid results\n * for its nested selector expressions.\n */\nconst has = async (state: ParserState) => {\n const top = asPostcssNodeWithChildren(state.current)\n const collectNodes = new Set<NodeLike>()\n const collectEdges = new Set<EdgeLike>()\n\n for (const node of top.nodes) {\n if (isSelectorNode(node)) {\n const nestedState = await state.walk({\n cancellable: state.cancellable,\n initial: {\n edges: new Set(state.initial.edges),\n nodes: new Set(state.initial.nodes),\n },\n current: node,\n walk: state.walk,\n collect: {\n edges: new Set(),\n nodes: new Set(),\n },\n partial: {\n edges: new Set(state.partial.edges),\n nodes: new Set(state.partial.nodes),\n },\n hostContexts: state.hostContexts,\n importers: state.importers,\n retries: state.retries,\n securityArchive: state.securityArchive,\n signal: state.signal,\n scopeIDs: state.scopeIDs,\n comment: state.comment,\n specificity: { ...state.specificity },\n })\n for (const n of nestedState.collect.nodes) {\n collectNodes.add(n)\n }\n for (const e of nestedState.partial.edges) {\n collectEdges.add(e)\n }\n }\n }\n\n // if the nested selector did not match anything, that means\n // no current node has any matches\n if (collectNodes.size === 0) {\n state.partial.edges.clear()\n state.partial.nodes.clear()\n return state\n }\n\n // handles transitive dependencies\n // compareNodes collects a list of all ancestor nodes\n // from the resulting nodes of the nested selector\n const compareNodes = new Set<NodeLike>()\n const traverse = new Set(collectNodes)\n for (const node of traverse) {\n for (const edge of node.edgesIn) {\n compareNodes.add(edge.from)\n if (edge.from.edgesIn.size) {\n traverse.add(edge.from)\n }\n }\n }\n\n // for each node in the current list checks to see if\n // it has a node in the resulting nested state that is\n // a transitive dependency / children.\n nodesLoop: for (const node of state.partial.nodes) {\n if (node.edgesOut.size === 0 || !compareNodes.has(node)) {\n removeNode(state, node)\n continue\n }\n\n for (const edge of node.edgesOut.values()) {\n if (collectEdges.has(edge)) {\n continue nodesLoop\n }\n }\n removeNode(state, node)\n }\n\n removeDanglingEdges(state)\n\n return state\n}\n\n/**\n * :is Pseudo-selector, acts as a shortcut for writing more compact expressions\n * by allowing multiple nested selectors to match on the previous results.\n *\n * It also enables the loose parsing mode, skipping instead of erroring usage\n * of non-existing classes, identifiers, pseudo-classes, etc.\n */\nconst is = async (state: ParserState) => {\n const top = asPostcssNodeWithChildren(state.current)\n const collect = new Set()\n for (const node of top.nodes) {\n if (isSelectorNode(node)) {\n const nestedState = await state.walk({\n cancellable: state.cancellable,\n collect: {\n edges: new Set(),\n nodes: new Set(),\n },\n current: node,\n initial: state.initial,\n loose: true,\n partial: {\n nodes: new Set(state.partial.nodes),\n edges: new Set(state.partial.edges),\n },\n importers: state.importers,\n hostContexts: state.hostContexts,\n walk: state.walk,\n retries: state.retries,\n securityArchive: state.securityArchive,\n signal: state.signal,\n scopeIDs: state.scopeIDs,\n comment: state.comment,\n specificity: { ...state.specificity },\n })\n for (const n of nestedState.collect.nodes) {\n collect.add(n)\n }\n }\n }\n for (const node of state.partial.nodes) {\n if (!collect.has(node)) {\n removeNode(state, node)\n }\n }\n return state\n}\n\n/**\n * :not Pseudo-class, serves to create negate expressions, anything that\n * matches selectors declared inside the `:not()` expression is going to be\n * filtered out in the final result.\n */\nconst not = async (state: ParserState) => {\n const top = asPostcssNodeWithChildren(state.current)\n const collect = new Set()\n for (const node of top.nodes) {\n if (isSelectorNode(node)) {\n const nestedState = await state.walk({\n cancellable: state.cancellable,\n collect: {\n edges: new Set(),\n nodes: new Set(),\n },\n current: node,\n initial: state.initial,\n partial: {\n nodes: new Set(state.partial.nodes),\n edges: new Set(state.partial.edges),\n },\n importers: state.importers,\n hostContexts: state.hostContexts,\n walk: state.walk,\n retries: state.retries,\n securityArchive: state.securityArchive,\n signal: state.signal,\n scopeIDs: state.scopeIDs,\n comment: state.comment,\n specificity: { ...state.specificity },\n })\n for (const n of nestedState.collect.nodes) {\n collect.add(n)\n }\n /* c8 ignore start - should be impossible */\n } else {\n throw error('Error parsing :not() selectors', {\n wanted: { type: 'selector' },\n found: node,\n })\n }\n /* c8 ignore stop */\n }\n for (const node of state.partial.nodes) {\n if (collect.has(node)) {\n removeNode(state, node)\n }\n }\n return state\n}\n\n/**\n * :project Pseudo-Class, matches only graph importers (e.g: the\n * root node along with any configured workspace)\n */\nconst project = async (state: ParserState) => {\n for (const node of state.partial.nodes) {\n if (!node.importer) {\n removeNode(state, node)\n }\n }\n for (const edge of state.partial.edges) {\n if (!edge.to?.importer) {\n state.partial.edges.delete(edge)\n }\n }\n return state\n}\n\n/**\n * :scope Pseudo-Element, returns only the nodes that match the provided scopeIDs\n * from the Query.search method.\n */\nconst scope = async (state: ParserState) => {\n const scopeIDSet = new Set(state.scopeIDs)\n\n for (const node of state.partial.nodes) {\n if (!scopeIDSet.has(node.id)) {\n removeNode(state, node)\n }\n }\n\n removeDanglingEdges(state)\n\n return state\n}\n\nconst pseudoSelectors = new Map<string, ParserFn>(\n Object.entries({\n abandoned,\n attr,\n confused,\n cve,\n cwe,\n debug,\n deprecated,\n dev,\n dynamic,\n eval: evalParser,\n empty,\n entropic,\n env,\n fs,\n has,\n host: hostContext,\n is,\n license,\n link,\n malware,\n minified,\n missing,\n native: nativeParser,\n network,\n not,\n obfuscated,\n optional,\n outdated,\n overridden,\n path,\n peer,\n prerelease,\n published,\n private: privateParser,\n prod,\n project,\n root,\n scanned,\n scope,\n score,\n scripts,\n semver,\n sev: severity,\n spec,\n severity,\n shell,\n shrinkwrap,\n squat,\n suspicious,\n tracker,\n trivial,\n type,\n undesirable,\n unknown,\n unmaintained,\n unpopular,\n unstable,\n v: semver,\n workspace,\n }),\n)\n\n/**\n * Parsers the `pseudo` node types.\n */\nexport const pseudo = async (state: ParserState) => {\n await state.cancellable()\n\n const curr = asPseudoNode(state.current)\n const parserFn =\n curr.value && pseudoSelectors.get(curr.value.slice(1))\n\n if (!parserFn) {\n if (state.loose) {\n state.partial.edges.clear()\n state.partial.nodes.clear()\n return state\n }\n\n throw error(`Unsupported pseudo-class: ${state.current.value}`, {\n found: state.current,\n })\n }\n\n const result = await parserFn(state)\n\n // Increment the commonCounter for specificity, except for\n // nesting selectors which don't contribute to specificity\n const pseudoValue = curr.value.slice(1)\n if (\n pseudoValue &&\n pseudoValue !== 'not' &&\n pseudoValue !== 'is' &&\n pseudoValue !== 'has'\n ) {\n result.specificity.commonCounter += 1\n }\n\n return result\n}\n"]}
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
|
-
import type { EdgeLike, NodeLike } from '@vltpkg/
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
4
|
-
|
|
5
|
-
export type
|
|
1
|
+
import type { EdgeLike, NodeLike } from '@vltpkg/types';
|
|
2
|
+
import type { SecurityArchiveLike, PackageScore } from '@vltpkg/security-archive';
|
|
3
|
+
import type { DepID } from '@vltpkg/dep-id';
|
|
4
|
+
import type { PostcssNode } from '@vltpkg/dss-parser';
|
|
5
|
+
export type HostContextsMapResult = {
|
|
6
|
+
initialEdges: EdgeLike[];
|
|
7
|
+
initialNodes: NodeLike[];
|
|
8
|
+
edges: EdgeLike[];
|
|
9
|
+
nodes: NodeLike[];
|
|
10
|
+
securityArchive: SecurityArchiveLike;
|
|
11
|
+
};
|
|
12
|
+
export type HostContextsMap = Map<string, () => Promise<HostContextsMapResult>>;
|
|
13
|
+
export type Specificity = {
|
|
14
|
+
idCounter: number;
|
|
15
|
+
commonCounter: number;
|
|
16
|
+
};
|
|
6
17
|
export type GraphSelectionState = {
|
|
7
18
|
nodes: Set<NodeLike>;
|
|
8
19
|
edges: Set<EdgeLike>;
|
|
@@ -10,37 +21,98 @@ export type GraphSelectionState = {
|
|
|
10
21
|
export type ParserState = {
|
|
11
22
|
cancellable: () => Promise<void>;
|
|
12
23
|
collect: GraphSelectionState;
|
|
24
|
+
comment: string;
|
|
13
25
|
current: PostcssNode;
|
|
26
|
+
hostContexts?: HostContextsMap;
|
|
27
|
+
importers: Set<NodeLike>;
|
|
14
28
|
initial: GraphSelectionState;
|
|
15
29
|
loose?: boolean;
|
|
16
30
|
next?: PostcssNode;
|
|
17
31
|
prev?: PostcssNode;
|
|
18
32
|
result?: NodeLike[];
|
|
19
|
-
signal
|
|
33
|
+
signal: AbortSignal;
|
|
20
34
|
walk: ParserFn;
|
|
21
35
|
partial: GraphSelectionState;
|
|
22
|
-
|
|
36
|
+
retries: number;
|
|
37
|
+
securityArchive: SecurityArchiveLike | undefined;
|
|
38
|
+
scopeIDs?: DepID[];
|
|
39
|
+
specificity: Specificity;
|
|
23
40
|
};
|
|
24
41
|
export type QueryResponse = {
|
|
25
|
-
edges:
|
|
26
|
-
nodes:
|
|
42
|
+
edges: QueryResponseEdge[];
|
|
43
|
+
nodes: QueryResponseNode[];
|
|
44
|
+
importers: QueryResponseNode[];
|
|
45
|
+
comment: string;
|
|
46
|
+
specificity: Specificity;
|
|
47
|
+
};
|
|
48
|
+
export type QueryResponseEdge = Omit<EdgeLike, 'from' | 'to'> & {
|
|
49
|
+
from: QueryResponseNode;
|
|
50
|
+
to?: QueryResponseNode;
|
|
51
|
+
};
|
|
52
|
+
export type QueryResponseNode = Omit<NodeLike, 'edgesIn' | 'edgesOut'> & {
|
|
53
|
+
edgesIn: Set<QueryResponseEdge>;
|
|
54
|
+
edgesOut: Map<string, QueryResponseEdge>;
|
|
55
|
+
insights: Insights;
|
|
56
|
+
toJSON: () => Pick<QueryResponseNode, 'id' | 'name' | 'version' | 'location' | 'importer' | 'manifest' | 'projectRoot' | 'integrity' | 'resolved' | 'dev' | 'optional' | 'insights' | 'confused'>;
|
|
57
|
+
};
|
|
58
|
+
export type Insights = {
|
|
59
|
+
abandoned?: boolean;
|
|
60
|
+
confused?: boolean;
|
|
61
|
+
cve?: `CVE-${string}`[];
|
|
62
|
+
cwe?: `CWE-${string}`[];
|
|
63
|
+
debug?: boolean;
|
|
64
|
+
deprecated?: boolean;
|
|
65
|
+
dynamic?: boolean;
|
|
66
|
+
entropic?: boolean;
|
|
67
|
+
env?: boolean;
|
|
68
|
+
eval?: boolean;
|
|
69
|
+
fs?: boolean;
|
|
70
|
+
license?: LicenseInsights;
|
|
71
|
+
malware?: MalwareInsights;
|
|
72
|
+
minified?: boolean;
|
|
73
|
+
native?: boolean;
|
|
74
|
+
network?: boolean;
|
|
75
|
+
obfuscated?: boolean;
|
|
76
|
+
scanned: boolean;
|
|
77
|
+
score?: PackageScore;
|
|
78
|
+
scripts?: boolean;
|
|
79
|
+
severity?: SeverityInsights;
|
|
80
|
+
shell?: boolean;
|
|
81
|
+
shrinkwrap?: boolean;
|
|
82
|
+
squat?: SquatInsights;
|
|
83
|
+
suspicious?: boolean;
|
|
84
|
+
tracker?: boolean;
|
|
85
|
+
trivial?: boolean;
|
|
86
|
+
undesirable?: boolean;
|
|
87
|
+
unknown?: boolean;
|
|
88
|
+
unmaintained?: boolean;
|
|
89
|
+
unpopular?: boolean;
|
|
90
|
+
unstable?: boolean;
|
|
91
|
+
};
|
|
92
|
+
export type LicenseInsights = {
|
|
93
|
+
unlicensed: boolean;
|
|
94
|
+
misc: boolean;
|
|
95
|
+
restricted: boolean;
|
|
96
|
+
ambiguous: boolean;
|
|
97
|
+
copyleft: boolean;
|
|
98
|
+
unknown: boolean;
|
|
99
|
+
none: boolean;
|
|
100
|
+
exception: boolean;
|
|
101
|
+
};
|
|
102
|
+
export type LeveledInsights = {
|
|
103
|
+
low: boolean;
|
|
104
|
+
medium: boolean;
|
|
105
|
+
high: boolean;
|
|
106
|
+
critical: boolean;
|
|
107
|
+
};
|
|
108
|
+
export type MalwareInsights = LeveledInsights;
|
|
109
|
+
export type SeverityInsights = LeveledInsights;
|
|
110
|
+
export type SquatInsights = {
|
|
111
|
+
medium: boolean;
|
|
112
|
+
critical: boolean;
|
|
27
113
|
};
|
|
28
114
|
export type ParserFn = (opt: ParserState) => Promise<ParserState>;
|
|
29
|
-
export
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
export declare const asAttributeNode: (node?: PostcssNode) => Attribute;
|
|
33
|
-
export declare const isClassNode: (node: unknown) => node is ClassName;
|
|
34
|
-
export declare const asClassNode: (node?: PostcssNode) => ClassName;
|
|
35
|
-
export declare const isCombinatorNode: (node: unknown) => node is Combinator;
|
|
36
|
-
export declare const asCombinatorNode: (node?: PostcssNode) => Combinator;
|
|
37
|
-
export declare const isIdentifierNode: (node: any) => node is Identifier;
|
|
38
|
-
export declare const asIdentifierNode: (node?: PostcssNode) => Identifier;
|
|
39
|
-
export declare const isSelectorNode: (node: any) => node is Selector;
|
|
40
|
-
export declare const isPseudoNode: (node: unknown) => node is Pseudo;
|
|
41
|
-
export declare const asPseudoNode: (node?: PostcssNode) => Pseudo;
|
|
42
|
-
export declare const isTagNode: (node: unknown) => node is Tag;
|
|
43
|
-
export declare const asTagNode: (node?: PostcssNode) => Tag;
|
|
44
|
-
export declare const isStringNode: (node: unknown) => node is String;
|
|
45
|
-
export declare const asStringNode: (node?: PostcssNode) => String;
|
|
115
|
+
export type ParsedSelectorToken = PostcssNode & {
|
|
116
|
+
token: string;
|
|
117
|
+
};
|
|
46
118
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/esm/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|