@vltpkg/query 0.0.0-9 → 1.0.0-rc.1
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 +38 -268
- package/dist/esm/attribute.d.ts +1 -1
- package/dist/esm/attribute.d.ts.map +1 -1
- package/dist/esm/attribute.js +5 -12
- package/dist/esm/attribute.js.map +1 -1
- package/dist/esm/combinator.d.ts.map +1 -1
- package/dist/esm/combinator.js +1 -1
- package/dist/esm/combinator.js.map +1 -1
- package/dist/esm/id.d.ts.map +1 -1
- package/dist/esm/id.js +3 -1
- package/dist/esm/id.js.map +1 -1
- package/dist/esm/index.d.ts +24 -7
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +87 -21
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/parser.d.ts.map +1 -1
- package/dist/esm/parser.js +2 -1
- package/dist/esm/parser.js.map +1 -1
- 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 +1 -1
- package/dist/esm/pseudo/attr.js.map +1 -1
- package/dist/esm/pseudo/built.d.ts +8 -0
- package/dist/esm/pseudo/built.d.ts.map +1 -0
- package/dist/esm/pseudo/built.js +16 -0
- package/dist/esm/pseudo/built.js.map +1 -0
- package/dist/esm/pseudo/confused.d.ts +4 -2
- package/dist/esm/pseudo/confused.d.ts.map +1 -1
- package/dist/esm/pseudo/confused.js +15 -2
- package/dist/esm/pseudo/confused.js.map +1 -1
- package/dist/esm/pseudo/cve.d.ts +2 -1
- package/dist/esm/pseudo/cve.d.ts.map +1 -1
- package/dist/esm/pseudo/cve.js +1 -1
- package/dist/esm/pseudo/cve.js.map +1 -1
- package/dist/esm/pseudo/cwe.d.ts +2 -1
- package/dist/esm/pseudo/cwe.d.ts.map +1 -1
- package/dist/esm/pseudo/cwe.js +1 -1
- package/dist/esm/pseudo/cwe.js.map +1 -1
- package/dist/esm/pseudo/helpers.d.ts +5 -1
- package/dist/esm/pseudo/helpers.d.ts.map +1 -1
- package/dist/esm/pseudo/helpers.js +8 -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 +2 -1
- package/dist/esm/pseudo/license.d.ts.map +1 -1
- package/dist/esm/pseudo/license.js +19 -2
- package/dist/esm/pseudo/license.js.map +1 -1
- package/dist/esm/pseudo/malware.d.ts +11 -1
- package/dist/esm/pseudo/malware.d.ts.map +1 -1
- package/dist/esm/pseudo/malware.js +30 -8
- package/dist/esm/pseudo/malware.js.map +1 -1
- 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 +16 -11
- 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/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/published.d.ts +4 -4
- package/dist/esm/pseudo/published.d.ts.map +1 -1
- package/dist/esm/pseudo/published.js +32 -11
- package/dist/esm/pseudo/published.js.map +1 -1
- 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/score.d.ts +2 -1
- package/dist/esm/pseudo/score.d.ts.map +1 -1
- package/dist/esm/pseudo/score.js +16 -2
- package/dist/esm/pseudo/score.js.map +1 -1
- package/dist/esm/pseudo/scripts.d.ts +7 -4
- package/dist/esm/pseudo/scripts.d.ts.map +1 -1
- package/dist/esm/pseudo/scripts.js +41 -3
- package/dist/esm/pseudo/scripts.js.map +1 -1
- 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 +3 -2
- package/dist/esm/pseudo/semver.js.map +1 -1
- package/dist/esm/pseudo/severity.d.ts +2 -1
- package/dist/esm/pseudo/severity.d.ts.map +1 -1
- package/dist/esm/pseudo/severity.js +1 -1
- package/dist/esm/pseudo/severity.js.map +1 -1
- 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 +2 -1
- package/dist/esm/pseudo/squat.d.ts.map +1 -1
- package/dist/esm/pseudo/squat.js +14 -3
- package/dist/esm/pseudo/squat.js.map +1 -1
- 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/workspace.d.ts.map +1 -1
- package/dist/esm/pseudo/workspace.js +7 -2
- package/dist/esm/pseudo/workspace.js.map +1 -1
- package/dist/esm/pseudo.d.ts.map +1 -1
- package/dist/esm/pseudo.js +58 -66
- package/dist/esm/pseudo.js.map +1 -1
- package/dist/esm/types.d.ts +25 -24
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +1 -105
- package/dist/esm/types.js.map +1 -1
- package/package.json +20 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../../src/pseudo/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAG9C;;GAEG;AACH,eAAO,MAAM,SAAS,UAAiB,WAAW,
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../../src/pseudo/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAG9C;;GAEG;AACH,eAAO,MAAM,SAAS,UAAiB,WAAW,yBAejD,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { removeNode } from "./helpers.js";
|
|
2
2
|
/**
|
|
3
3
|
* :workspace Pseudo-Selector will only match workspace dependencies.
|
|
4
4
|
*/
|
|
@@ -9,7 +9,12 @@ export const workspace = async (state) => {
|
|
|
9
9
|
removeNode(state, node);
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
-
|
|
12
|
+
// Clears up any edges that are not pointing to workspace nodes
|
|
13
|
+
for (const edge of state.partial.edges) {
|
|
14
|
+
if (edge.to?.importer && !edge.to.mainImporter)
|
|
15
|
+
continue;
|
|
16
|
+
state.partial.edges.delete(edge);
|
|
17
|
+
}
|
|
13
18
|
return state;
|
|
14
19
|
};
|
|
15
20
|
//# sourceMappingURL=workspace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/pseudo/workspace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/pseudo/workspace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,KAAkB,EAAE,EAAE;IACpD,2EAA2E;IAC3E,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACxC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,EAAE,EAAE,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY;YAAE,SAAQ;QACxD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA","sourcesContent":["import type { ParserState } from '../types.ts'\nimport { removeNode } from './helpers.ts'\n\n/**\n * :workspace Pseudo-Selector will only match workspace dependencies.\n */\nexport const workspace = async (state: ParserState) => {\n // Filter out the root node and any nodes that are not marked as workspaces\n for (const node of state.partial.nodes) {\n if (!node.importer || node.mainImporter) {\n removeNode(state, node)\n }\n }\n\n // Clears up any edges that are not pointing to workspace nodes\n for (const edge of state.partial.edges) {\n if (edge.to?.importer && !edge.to.mainImporter) continue\n state.partial.edges.delete(edge)\n }\n\n return state\n}\n"]}
|
package/dist/esm/pseudo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pseudo.d.ts","sourceRoot":"","sources":["../../src/pseudo.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pseudo.d.ts","sourceRoot":"","sources":["../../src/pseudo.ts"],"names":[],"mappings":"AAgEA,OAAO,KAAK,EAAY,WAAW,EAAE,MAAM,YAAY,CAAA;AAuSvD;;GAEG;AACH,eAAO,MAAM,MAAM,UAAiB,WAAW,yBAkC9C,CAAA"}
|
package/dist/esm/pseudo.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { splitDepID } from '@vltpkg/dep-id/browser';
|
|
2
1
|
import { error } from '@vltpkg/error-cause';
|
|
3
2
|
import { removeDanglingEdges, removeNode } from "./pseudo/helpers.js";
|
|
4
|
-
import { asPostcssNodeWithChildren, asPseudoNode,
|
|
3
|
+
import { asPostcssNodeWithChildren, asPseudoNode, isSelectorNode, } from '@vltpkg/dss-parser';
|
|
5
4
|
// imported pseudo selectors
|
|
6
5
|
import { abandoned } from "./pseudo/abandoned.js";
|
|
7
6
|
import { attr } from "./pseudo/attr.js";
|
|
7
|
+
import { built } from "./pseudo/built.js";
|
|
8
8
|
import { confused } from "./pseudo/confused.js";
|
|
9
9
|
import { cve } from "./pseudo/cve.js";
|
|
10
10
|
import { cwe } from "./pseudo/cwe.js";
|
|
@@ -17,6 +17,7 @@ import { entropic } from "./pseudo/entropic.js";
|
|
|
17
17
|
import { env } from "./pseudo/env.js";
|
|
18
18
|
import { evalParser } from "./pseudo/eval.js";
|
|
19
19
|
import { fs } from "./pseudo/fs.js";
|
|
20
|
+
import { hostContext } from "./pseudo/host.js";
|
|
20
21
|
import { license } from "./pseudo/license.js";
|
|
21
22
|
import { link } from "./pseudo/link.js";
|
|
22
23
|
import { malware } from "./pseudo/malware.js";
|
|
@@ -27,21 +28,27 @@ import { network } from "./pseudo/network.js";
|
|
|
27
28
|
import { obfuscated } from "./pseudo/obfuscated.js";
|
|
28
29
|
import { optional } from "./pseudo/optional.js";
|
|
29
30
|
import { outdated } from "./pseudo/outdated.js";
|
|
31
|
+
import { overridden } from "./pseudo/overridden.js";
|
|
32
|
+
import { path } from "./pseudo/path.js";
|
|
30
33
|
import { peer } from "./pseudo/peer.js";
|
|
34
|
+
import { prerelease } from "./pseudo/prerelease.js";
|
|
31
35
|
import { published } from "./pseudo/published.js";
|
|
32
36
|
import { privateParser } from "./pseudo/private.js";
|
|
33
37
|
import { prod } from "./pseudo/prod.js";
|
|
38
|
+
import { root } from "./pseudo/root.js";
|
|
34
39
|
import { scanned } from "./pseudo/scanned.js";
|
|
35
40
|
import { score } from "./pseudo/score.js";
|
|
36
41
|
import { scripts } from "./pseudo/scripts.js";
|
|
37
42
|
import { shell } from "./pseudo/shell.js";
|
|
38
43
|
import { semverParser as semver } from "./pseudo/semver.js";
|
|
39
44
|
import { severity } from "./pseudo/severity.js";
|
|
45
|
+
import { spec } from "./pseudo/spec.js";
|
|
40
46
|
import { shrinkwrap } from "./pseudo/shrinkwrap.js";
|
|
41
47
|
import { squat } from "./pseudo/squat.js";
|
|
42
48
|
import { suspicious } from "./pseudo/suspicious.js";
|
|
43
49
|
import { tracker } from "./pseudo/tracker.js";
|
|
44
50
|
import { trivial } from "./pseudo/trivial.js";
|
|
51
|
+
import { type } from "./pseudo/type.js";
|
|
45
52
|
import { undesirable } from "./pseudo/undesirable.js";
|
|
46
53
|
import { unknown } from "./pseudo/unknown.js";
|
|
47
54
|
import { unmaintained } from "./pseudo/unmaintained.js";
|
|
@@ -74,9 +81,14 @@ const has = async (state) => {
|
|
|
74
81
|
edges: new Set(state.partial.edges),
|
|
75
82
|
nodes: new Set(state.partial.nodes),
|
|
76
83
|
},
|
|
84
|
+
hostContexts: state.hostContexts,
|
|
85
|
+
importers: state.importers,
|
|
77
86
|
retries: state.retries,
|
|
78
87
|
securityArchive: state.securityArchive,
|
|
79
|
-
|
|
88
|
+
signal: state.signal,
|
|
89
|
+
scopeIDs: state.scopeIDs,
|
|
90
|
+
comment: state.comment,
|
|
91
|
+
specificity: { ...state.specificity },
|
|
80
92
|
});
|
|
81
93
|
for (const n of nestedState.collect.nodes) {
|
|
82
94
|
collectNodes.add(n);
|
|
@@ -149,10 +161,15 @@ const is = async (state) => {
|
|
|
149
161
|
nodes: new Set(state.partial.nodes),
|
|
150
162
|
edges: new Set(state.partial.edges),
|
|
151
163
|
},
|
|
164
|
+
importers: state.importers,
|
|
165
|
+
hostContexts: state.hostContexts,
|
|
152
166
|
walk: state.walk,
|
|
153
167
|
retries: state.retries,
|
|
154
168
|
securityArchive: state.securityArchive,
|
|
155
|
-
|
|
169
|
+
signal: state.signal,
|
|
170
|
+
scopeIDs: state.scopeIDs,
|
|
171
|
+
comment: state.comment,
|
|
172
|
+
specificity: { ...state.specificity },
|
|
156
173
|
});
|
|
157
174
|
for (const n of nestedState.collect.nodes) {
|
|
158
175
|
collect.add(n);
|
|
@@ -188,10 +205,15 @@ const not = async (state) => {
|
|
|
188
205
|
nodes: new Set(state.partial.nodes),
|
|
189
206
|
edges: new Set(state.partial.edges),
|
|
190
207
|
},
|
|
208
|
+
importers: state.importers,
|
|
209
|
+
hostContexts: state.hostContexts,
|
|
191
210
|
walk: state.walk,
|
|
192
211
|
retries: state.retries,
|
|
193
212
|
securityArchive: state.securityArchive,
|
|
194
|
-
|
|
213
|
+
signal: state.signal,
|
|
214
|
+
scopeIDs: state.scopeIDs,
|
|
215
|
+
comment: state.comment,
|
|
216
|
+
specificity: { ...state.specificity },
|
|
195
217
|
});
|
|
196
218
|
for (const n of nestedState.collect.nodes) {
|
|
197
219
|
collect.add(n);
|
|
@@ -211,90 +233,44 @@ const not = async (state) => {
|
|
|
211
233
|
removeNode(state, node);
|
|
212
234
|
}
|
|
213
235
|
}
|
|
236
|
+
removeDanglingEdges(state);
|
|
214
237
|
return state;
|
|
215
238
|
};
|
|
216
239
|
/**
|
|
217
|
-
* :
|
|
218
|
-
*/
|
|
219
|
-
const root = async (state) => {
|
|
220
|
-
const [anyNode] = state.initial.nodes.values();
|
|
221
|
-
const mainImporter = anyNode?.graph.mainImporter;
|
|
222
|
-
if (!mainImporter) {
|
|
223
|
-
throw error(':root pseudo-element works on local graphs only');
|
|
224
|
-
}
|
|
225
|
-
for (const edge of state.partial.edges) {
|
|
226
|
-
if (edge.to !== mainImporter) {
|
|
227
|
-
state.partial.edges.delete(edge);
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
state.partial.nodes.clear();
|
|
231
|
-
state.partial.nodes.add(mainImporter);
|
|
232
|
-
return state;
|
|
233
|
-
};
|
|
234
|
-
/**
|
|
235
|
-
* :project Pseudo-Element, returns all graph importers (e.g: the
|
|
240
|
+
* :project Pseudo-Class, matches only graph importers (e.g: the
|
|
236
241
|
* root node along with any configured workspace)
|
|
237
242
|
*/
|
|
238
243
|
const project = async (state) => {
|
|
239
|
-
const
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
throw error(':project pseudo-element works on local graphs only');
|
|
243
|
-
}
|
|
244
|
-
// make a list of all edges that are coming from importers
|
|
245
|
-
// so that we can filter out any edges that are not direct
|
|
246
|
-
// dependencies of the importers
|
|
247
|
-
const importersEdgesIn = new Set();
|
|
248
|
-
for (const importer of importers) {
|
|
249
|
-
for (const edge of importer.edgesIn) {
|
|
250
|
-
importersEdgesIn.add(edge);
|
|
244
|
+
for (const node of state.partial.nodes) {
|
|
245
|
+
if (!node.importer) {
|
|
246
|
+
removeNode(state, node);
|
|
251
247
|
}
|
|
252
248
|
}
|
|
253
249
|
for (const edge of state.partial.edges) {
|
|
254
|
-
if (!edge.to
|
|
250
|
+
if (!edge.to?.importer) {
|
|
255
251
|
state.partial.edges.delete(edge);
|
|
256
252
|
}
|
|
257
253
|
}
|
|
258
|
-
state.partial.nodes.clear();
|
|
259
|
-
for (const importer of importers) {
|
|
260
|
-
state.partial.nodes.add(importer);
|
|
261
|
-
}
|
|
262
254
|
return state;
|
|
263
255
|
};
|
|
264
256
|
/**
|
|
265
|
-
* :scope Pseudo-Element, returns the
|
|
266
|
-
*
|
|
257
|
+
* :scope Pseudo-Element, returns only the nodes that match the provided scopeIDs
|
|
258
|
+
* from the Query.search method.
|
|
267
259
|
*/
|
|
268
260
|
const scope = async (state) => {
|
|
269
|
-
state.
|
|
270
|
-
state.partial.nodes.clear();
|
|
271
|
-
for (const edge of state.initial.edges) {
|
|
272
|
-
state.partial.edges.add(edge);
|
|
273
|
-
}
|
|
274
|
-
for (const node of state.initial.nodes) {
|
|
275
|
-
state.partial.nodes.add(node);
|
|
276
|
-
}
|
|
277
|
-
return state;
|
|
278
|
-
};
|
|
279
|
-
/**
|
|
280
|
-
* :type(str) Pseudo-Element will match only nodes that are of
|
|
281
|
-
* the same type as the value used
|
|
282
|
-
*/
|
|
283
|
-
const typeFn = async (state) => {
|
|
284
|
-
const type = asPostcssNodeWithChildren(state.current);
|
|
285
|
-
const selector = asPostcssNodeWithChildren(type.nodes[0]);
|
|
286
|
-
const name = asTagNode(selector.nodes[0]).value;
|
|
261
|
+
const scopeIDSet = new Set(state.scopeIDs);
|
|
287
262
|
for (const node of state.partial.nodes) {
|
|
288
|
-
|
|
289
|
-
if (nodeType !== name) {
|
|
263
|
+
if (!scopeIDSet.has(node.id)) {
|
|
290
264
|
removeNode(state, node);
|
|
291
265
|
}
|
|
292
266
|
}
|
|
267
|
+
removeDanglingEdges(state);
|
|
293
268
|
return state;
|
|
294
269
|
};
|
|
295
270
|
const pseudoSelectors = new Map(Object.entries({
|
|
296
271
|
abandoned,
|
|
297
272
|
attr,
|
|
273
|
+
built,
|
|
298
274
|
confused,
|
|
299
275
|
cve,
|
|
300
276
|
cwe,
|
|
@@ -308,6 +284,7 @@ const pseudoSelectors = new Map(Object.entries({
|
|
|
308
284
|
env,
|
|
309
285
|
fs,
|
|
310
286
|
has,
|
|
287
|
+
host: hostContext,
|
|
311
288
|
is,
|
|
312
289
|
license,
|
|
313
290
|
link,
|
|
@@ -320,9 +297,11 @@ const pseudoSelectors = new Map(Object.entries({
|
|
|
320
297
|
obfuscated,
|
|
321
298
|
optional,
|
|
322
299
|
outdated,
|
|
300
|
+
overridden,
|
|
301
|
+
path,
|
|
323
302
|
peer,
|
|
303
|
+
prerelease,
|
|
324
304
|
published,
|
|
325
|
-
// TODO: overridden
|
|
326
305
|
private: privateParser,
|
|
327
306
|
prod,
|
|
328
307
|
project,
|
|
@@ -333,6 +312,7 @@ const pseudoSelectors = new Map(Object.entries({
|
|
|
333
312
|
scripts,
|
|
334
313
|
semver,
|
|
335
314
|
sev: severity,
|
|
315
|
+
spec,
|
|
336
316
|
severity,
|
|
337
317
|
shell,
|
|
338
318
|
shrinkwrap,
|
|
@@ -340,7 +320,7 @@ const pseudoSelectors = new Map(Object.entries({
|
|
|
340
320
|
suspicious,
|
|
341
321
|
tracker,
|
|
342
322
|
trivial,
|
|
343
|
-
type
|
|
323
|
+
type,
|
|
344
324
|
undesirable,
|
|
345
325
|
unknown,
|
|
346
326
|
unmaintained,
|
|
@@ -358,12 +338,24 @@ export const pseudo = async (state) => {
|
|
|
358
338
|
const parserFn = curr.value && pseudoSelectors.get(curr.value.slice(1));
|
|
359
339
|
if (!parserFn) {
|
|
360
340
|
if (state.loose) {
|
|
341
|
+
state.partial.edges.clear();
|
|
342
|
+
state.partial.nodes.clear();
|
|
361
343
|
return state;
|
|
362
344
|
}
|
|
363
345
|
throw error(`Unsupported pseudo-class: ${state.current.value}`, {
|
|
364
346
|
found: state.current,
|
|
365
347
|
});
|
|
366
348
|
}
|
|
367
|
-
|
|
349
|
+
const result = await parserFn(state);
|
|
350
|
+
// Increment the commonCounter for specificity, except for
|
|
351
|
+
// nesting selectors which don't contribute to specificity
|
|
352
|
+
const pseudoValue = curr.value.slice(1);
|
|
353
|
+
if (pseudoValue &&
|
|
354
|
+
pseudoValue !== 'not' &&
|
|
355
|
+
pseudoValue !== 'is' &&
|
|
356
|
+
pseudoValue !== 'has') {
|
|
357
|
+
result.specificity.commonCounter += 1;
|
|
358
|
+
}
|
|
359
|
+
return result;
|
|
368
360
|
};
|
|
369
361
|
//# 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'\n\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// 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 { 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 { peer } from './pseudo/peer.ts'\nimport { published } from './pseudo/published.ts'\nimport { privateParser } from './pseudo/private.ts'\nimport { prod } from './pseudo/prod.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 { 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 { 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\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 retries: state.retries,\n securityArchive: state.securityArchive,\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 retries: state.retries,\n securityArchive: state.securityArchive,\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 * :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 retries: state.retries,\n securityArchive: state.securityArchive,\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 * :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 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 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 peer,\n published,\n // TODO: overridden\n private: privateParser,\n prod,\n project,\n root,\n scanned,\n scope,\n score,\n scripts,\n semver,\n sev: severity,\n severity,\n shell,\n shrinkwrap,\n squat,\n suspicious,\n tracker,\n trivial,\n type: typeFn,\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 return state\n }\n\n throw error(`Unsupported pseudo-class: ${state.current.value}`, {\n found: state.current,\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 { built } from './pseudo/built.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\n removeDanglingEdges(state)\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 built,\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,9 +1,19 @@
|
|
|
1
|
-
import type { EdgeLike, NodeLike } from '@vltpkg/
|
|
2
|
-
import type { SpecOptions } from '@vltpkg/spec/browser';
|
|
1
|
+
import type { EdgeLike, NodeLike } from '@vltpkg/types';
|
|
3
2
|
import type { SecurityArchiveLike, PackageScore } from '@vltpkg/security-archive';
|
|
4
|
-
import type {
|
|
5
|
-
|
|
6
|
-
export type
|
|
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 | undefined;
|
|
11
|
+
};
|
|
12
|
+
export type HostContextsMap = Map<string, () => Promise<HostContextsMapResult>>;
|
|
13
|
+
export type Specificity = {
|
|
14
|
+
idCounter: number;
|
|
15
|
+
commonCounter: number;
|
|
16
|
+
};
|
|
7
17
|
export type GraphSelectionState = {
|
|
8
18
|
nodes: Set<NodeLike>;
|
|
9
19
|
edges: Set<EdgeLike>;
|
|
@@ -11,22 +21,29 @@ export type GraphSelectionState = {
|
|
|
11
21
|
export type ParserState = {
|
|
12
22
|
cancellable: () => Promise<void>;
|
|
13
23
|
collect: GraphSelectionState;
|
|
24
|
+
comment: string;
|
|
14
25
|
current: PostcssNode;
|
|
26
|
+
hostContexts?: HostContextsMap;
|
|
27
|
+
importers: Set<NodeLike>;
|
|
15
28
|
initial: GraphSelectionState;
|
|
16
29
|
loose?: boolean;
|
|
17
30
|
next?: PostcssNode;
|
|
18
31
|
prev?: PostcssNode;
|
|
19
32
|
result?: NodeLike[];
|
|
20
|
-
signal
|
|
33
|
+
signal: AbortSignal;
|
|
21
34
|
walk: ParserFn;
|
|
22
35
|
partial: GraphSelectionState;
|
|
23
36
|
retries: number;
|
|
24
37
|
securityArchive: SecurityArchiveLike | undefined;
|
|
25
|
-
|
|
38
|
+
scopeIDs?: DepID[];
|
|
39
|
+
specificity: Specificity;
|
|
26
40
|
};
|
|
27
41
|
export type QueryResponse = {
|
|
28
42
|
edges: QueryResponseEdge[];
|
|
29
43
|
nodes: QueryResponseNode[];
|
|
44
|
+
importers: QueryResponseNode[];
|
|
45
|
+
comment: string;
|
|
46
|
+
specificity: Specificity;
|
|
30
47
|
};
|
|
31
48
|
export type QueryResponseEdge = Omit<EdgeLike, 'from' | 'to'> & {
|
|
32
49
|
from: QueryResponseNode;
|
|
@@ -36,7 +53,7 @@ export type QueryResponseNode = Omit<NodeLike, 'edgesIn' | 'edgesOut'> & {
|
|
|
36
53
|
edgesIn: Set<QueryResponseEdge>;
|
|
37
54
|
edgesOut: Map<string, QueryResponseEdge>;
|
|
38
55
|
insights: Insights;
|
|
39
|
-
toJSON: () => Pick<QueryResponseNode, 'id' | 'name' | 'version' | 'location' | 'importer' | 'manifest' | 'projectRoot' | 'integrity' | 'resolved' | 'dev' | 'optional' | 'insights'>;
|
|
56
|
+
toJSON: () => Pick<QueryResponseNode, 'id' | 'name' | 'version' | 'location' | 'importer' | 'manifest' | 'projectRoot' | 'integrity' | 'resolved' | 'dev' | 'optional' | 'insights' | 'confused'>;
|
|
40
57
|
};
|
|
41
58
|
export type Insights = {
|
|
42
59
|
abandoned?: boolean;
|
|
@@ -98,20 +115,4 @@ export type ParserFn = (opt: ParserState) => Promise<ParserState>;
|
|
|
98
115
|
export type ParsedSelectorToken = PostcssNode & {
|
|
99
116
|
token: string;
|
|
100
117
|
};
|
|
101
|
-
export declare const isPostcssNodeWithChildren: (node: any) => node is PostcssNodeWithChildren;
|
|
102
|
-
export declare const asPostcssNodeWithChildren: (node?: PostcssNode) => PostcssNodeWithChildren;
|
|
103
|
-
export declare const isAttributeNode: (node: unknown) => node is Attribute;
|
|
104
|
-
export declare const asAttributeNode: (node?: PostcssNode) => Attribute;
|
|
105
|
-
export declare const isCombinatorNode: (node: unknown) => node is Combinator;
|
|
106
|
-
export declare const asCombinatorNode: (node?: PostcssNode) => Combinator;
|
|
107
|
-
export declare const isIdentifierNode: (node: any) => node is Identifier;
|
|
108
|
-
export declare const asIdentifierNode: (node?: PostcssNode) => Identifier;
|
|
109
|
-
export declare const isSelectorNode: (node: any) => node is Selector;
|
|
110
|
-
export declare const asSelectorNode: (node?: PostcssNode) => Selector;
|
|
111
|
-
export declare const isPseudoNode: (node: unknown) => node is Pseudo;
|
|
112
|
-
export declare const asPseudoNode: (node?: PostcssNode) => Pseudo;
|
|
113
|
-
export declare const isTagNode: (node: unknown) => node is Tag;
|
|
114
|
-
export declare const asTagNode: (node?: PostcssNode) => Tag;
|
|
115
|
-
export declare const isStringNode: (node: unknown) => node is String;
|
|
116
|
-
export declare const asStringNode: (node?: PostcssNode) => String;
|
|
117
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":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACb,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAErD,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,EAAE,QAAQ,EAAE,CAAA;IACxB,YAAY,EAAE,QAAQ,EAAE,CAAA;IACxB,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,eAAe,EAAE,mBAAmB,GAAG,SAAS,CAAA;CACjD,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,GAAG,CAC/B,MAAM,EACN,MAAM,OAAO,CAAC,qBAAqB,CAAC,CACrC,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;IACpB,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,OAAO,EAAE,mBAAmB,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,WAAW,CAAA;IACpB,YAAY,CAAC,EAAE,eAAe,CAAA;IAC9B,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;IACxB,OAAO,EAAE,mBAAmB,CAAA;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAA;IACnB,MAAM,EAAE,WAAW,CAAA;IACnB,IAAI,EAAE,QAAQ,CAAA;IACd,OAAO,EAAE,mBAAmB,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,mBAAmB,GAAG,SAAS,CAAA;IAChD,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAA;IAClB,WAAW,EAAE,WAAW,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,iBAAiB,EAAE,CAAA;IAC1B,KAAK,EAAE,iBAAiB,EAAE,CAAA;IAC1B,SAAS,EAAE,iBAAiB,EAAE,CAAA;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,WAAW,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG;IAC9D,IAAI,EAAE,iBAAiB,CAAA;IACvB,EAAE,CAAC,EAAE,iBAAiB,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,QAAQ,EACR,SAAS,GAAG,UAAU,CACvB,GAAG;IACF,OAAO,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAA;IAC/B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;IACxC,QAAQ,EAAE,QAAQ,CAAA;IAClB,MAAM,EAAE,MAAM,IAAI,CAChB,iBAAiB,EACf,IAAI,GACJ,MAAM,GACN,SAAS,GACT,UAAU,GACV,UAAU,GACV,UAAU,GACV,aAAa,GACb,WAAW,GACX,UAAU,GACV,KAAK,GACL,UAAU,GACV,UAAU,GACV,UAAU,CACb,CAAA;CACF,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,GAAG,CAAC,EAAE,OAAO,MAAM,EAAE,EAAE,CAAA;IACvB,GAAG,CAAC,EAAE,OAAO,MAAM,EAAE,EAAE,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,OAAO,CAAA;IACnB,IAAI,EAAE,OAAO,CAAA;IACb,UAAU,EAAE,OAAO,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,OAAO,CAAA;IACb,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,OAAO,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,eAAe,CAAA;AAC7C,MAAM,MAAM,gBAAgB,GAAG,eAAe,CAAA;AAE9C,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,CAAA;AAEjE,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG;IAC9C,KAAK,EAAE,MAAM,CAAA;CACd,CAAA"}
|
package/dist/esm/types.js
CHANGED
|
@@ -1,106 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export const isPostcssNodeWithChildren = (node) => 'type' in node && 'nodes' in node;
|
|
3
|
-
export const asPostcssNodeWithChildren = (node) => {
|
|
4
|
-
if (!node) {
|
|
5
|
-
throw error('Expected a query node');
|
|
6
|
-
}
|
|
7
|
-
if (!isPostcssNodeWithChildren(node)) {
|
|
8
|
-
throw error('Not a query selector node with children', {
|
|
9
|
-
found: node,
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
return node;
|
|
13
|
-
};
|
|
14
|
-
const isObj = (o) => !!o && typeof o === 'object';
|
|
15
|
-
export const isAttributeNode = (node) => isObj(node) && !!node.attribute && node.type === 'attribute';
|
|
16
|
-
export const asAttributeNode = (node) => {
|
|
17
|
-
if (!node) {
|
|
18
|
-
throw error('Expected a query node');
|
|
19
|
-
}
|
|
20
|
-
if (!isAttributeNode(node)) {
|
|
21
|
-
throw error('Mismatching query node', {
|
|
22
|
-
wanted: 'attribute',
|
|
23
|
-
found: node.type,
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
return node;
|
|
27
|
-
};
|
|
28
|
-
export const isCombinatorNode = (node) => isObj(node) && !!node.value && node.type === 'combinator';
|
|
29
|
-
export const asCombinatorNode = (node) => {
|
|
30
|
-
if (!node) {
|
|
31
|
-
throw error('Expected a query node');
|
|
32
|
-
}
|
|
33
|
-
if (!isCombinatorNode(node)) {
|
|
34
|
-
throw error('Mismatching query node', {
|
|
35
|
-
wanted: 'combinator',
|
|
36
|
-
found: node.type,
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
return node;
|
|
40
|
-
};
|
|
41
|
-
export const isIdentifierNode = (node) => isObj(node) && !!node.value && node.type === 'id';
|
|
42
|
-
export const asIdentifierNode = (node) => {
|
|
43
|
-
if (!node) {
|
|
44
|
-
throw error('Expected a query node');
|
|
45
|
-
}
|
|
46
|
-
if (!isIdentifierNode(node)) {
|
|
47
|
-
throw error('Mismatching query node', {
|
|
48
|
-
wanted: 'id',
|
|
49
|
-
found: node.type,
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
return node;
|
|
53
|
-
};
|
|
54
|
-
export const isSelectorNode = (node) => isPostcssNodeWithChildren(node) && node.type === 'selector';
|
|
55
|
-
export const asSelectorNode = (node) => {
|
|
56
|
-
if (!node) {
|
|
57
|
-
throw error('Expected a query node');
|
|
58
|
-
}
|
|
59
|
-
if (!isSelectorNode(node)) {
|
|
60
|
-
throw error('Mismatching query node', {
|
|
61
|
-
wanted: 'selector',
|
|
62
|
-
found: node.type,
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
return node;
|
|
66
|
-
};
|
|
67
|
-
export const isPseudoNode = (node) => isObj(node) && !!node.value && node.type === 'pseudo';
|
|
68
|
-
export const asPseudoNode = (node) => {
|
|
69
|
-
if (!node) {
|
|
70
|
-
throw error('Expected a query node');
|
|
71
|
-
}
|
|
72
|
-
if (!isPseudoNode(node)) {
|
|
73
|
-
throw error('Mismatching query node', {
|
|
74
|
-
wanted: 'pseudo',
|
|
75
|
-
found: node.type,
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
return node;
|
|
79
|
-
};
|
|
80
|
-
export const isTagNode = (node) => isObj(node) && !!node.value && node.type === 'tag';
|
|
81
|
-
export const asTagNode = (node) => {
|
|
82
|
-
if (!node) {
|
|
83
|
-
throw error('Expected a query node');
|
|
84
|
-
}
|
|
85
|
-
if (!isTagNode(node)) {
|
|
86
|
-
throw error('Mismatching query node', {
|
|
87
|
-
wanted: 'tag',
|
|
88
|
-
found: node.type,
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
return node;
|
|
92
|
-
};
|
|
93
|
-
export const isStringNode = (node) => isObj(node) && !!node.value && node.type === 'string';
|
|
94
|
-
export const asStringNode = (node) => {
|
|
95
|
-
if (!node) {
|
|
96
|
-
throw error('Expected a query node');
|
|
97
|
-
}
|
|
98
|
-
if (!isStringNode(node)) {
|
|
99
|
-
throw error('Mismatching query node', {
|
|
100
|
-
wanted: 'string',
|
|
101
|
-
found: node.type,
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
return node;
|
|
105
|
-
};
|
|
1
|
+
export {};
|
|
106
2
|
//# sourceMappingURL=types.js.map
|