@vltpkg/query 1.0.0-rc.3 → 1.0.0-rc.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.
Files changed (253) hide show
  1. package/dist/{esm/attribute.d.ts → attribute.d.ts} +0 -1
  2. package/dist/{esm/attribute.js → attribute.js} +0 -1
  3. package/dist/{esm/combinator.d.ts → combinator.d.ts} +0 -1
  4. package/dist/{esm/combinator.js → combinator.js} +0 -1
  5. package/dist/{esm/id.d.ts → id.d.ts} +0 -1
  6. package/dist/{esm/id.js → id.js} +0 -1
  7. package/dist/{esm/index.d.ts → index.d.ts} +3 -3
  8. package/dist/{esm/index.js → index.js} +4 -2
  9. package/dist/{esm/parser.d.ts → parser.d.ts} +0 -1
  10. package/dist/{esm/parser.js → parser.js} +0 -1
  11. package/dist/{esm/pseudo → pseudo}/abandoned.d.ts +0 -1
  12. package/dist/{esm/pseudo → pseudo}/abandoned.js +0 -1
  13. package/dist/{esm/pseudo → pseudo}/attr.d.ts +0 -1
  14. package/dist/{esm/pseudo → pseudo}/attr.js +0 -1
  15. package/dist/{esm/pseudo → pseudo}/built.d.ts +0 -1
  16. package/dist/{esm/pseudo → pseudo}/built.js +0 -1
  17. package/dist/{esm/pseudo → pseudo}/confused.d.ts +0 -1
  18. package/dist/{esm/pseudo → pseudo}/confused.js +0 -1
  19. package/dist/{esm/pseudo → pseudo}/cve.d.ts +0 -1
  20. package/dist/{esm/pseudo → pseudo}/cve.js +0 -1
  21. package/dist/{esm/pseudo → pseudo}/cwe.d.ts +0 -1
  22. package/dist/{esm/pseudo → pseudo}/cwe.js +0 -1
  23. package/dist/{esm/pseudo → pseudo}/debug.d.ts +0 -1
  24. package/dist/{esm/pseudo → pseudo}/debug.js +0 -1
  25. package/dist/{esm/pseudo → pseudo}/deprecated.d.ts +0 -1
  26. package/dist/{esm/pseudo → pseudo}/deprecated.js +0 -1
  27. package/dist/{esm/pseudo → pseudo}/dev.d.ts +0 -1
  28. package/dist/{esm/pseudo → pseudo}/dev.js +0 -1
  29. package/dist/pseudo/diff.d.ts +26 -0
  30. package/dist/pseudo/diff.js +75 -0
  31. package/dist/{esm/pseudo → pseudo}/dynamic.d.ts +0 -1
  32. package/dist/{esm/pseudo → pseudo}/dynamic.js +0 -1
  33. package/dist/{esm/pseudo → pseudo}/empty.d.ts +0 -1
  34. package/dist/{esm/pseudo → pseudo}/empty.js +0 -1
  35. package/dist/{esm/pseudo → pseudo}/entropic.d.ts +0 -1
  36. package/dist/{esm/pseudo → pseudo}/entropic.js +0 -1
  37. package/dist/{esm/pseudo → pseudo}/env.d.ts +0 -1
  38. package/dist/{esm/pseudo → pseudo}/env.js +0 -1
  39. package/dist/{esm/pseudo → pseudo}/eval.d.ts +0 -1
  40. package/dist/{esm/pseudo → pseudo}/eval.js +0 -1
  41. package/dist/{esm/pseudo → pseudo}/fs.d.ts +0 -1
  42. package/dist/{esm/pseudo → pseudo}/fs.js +0 -1
  43. package/dist/{esm/pseudo → pseudo}/helpers.d.ts +0 -1
  44. package/dist/{esm/pseudo → pseudo}/helpers.js +8 -6
  45. package/dist/{esm/pseudo → pseudo}/host.d.ts +0 -1
  46. package/dist/{esm/pseudo → pseudo}/host.js +0 -1
  47. package/dist/pseudo/hostname.d.ts +11 -0
  48. package/dist/pseudo/hostname.js +138 -0
  49. package/dist/{esm/pseudo → pseudo}/license.d.ts +0 -1
  50. package/dist/{esm/pseudo → pseudo}/license.js +0 -1
  51. package/dist/{esm/pseudo → pseudo}/link.d.ts +0 -1
  52. package/dist/{esm/pseudo → pseudo}/link.js +0 -1
  53. package/dist/{esm/pseudo → pseudo}/malware.d.ts +0 -1
  54. package/dist/{esm/pseudo → pseudo}/malware.js +0 -1
  55. package/dist/{esm/pseudo → pseudo}/minified.d.ts +0 -1
  56. package/dist/{esm/pseudo → pseudo}/minified.js +0 -1
  57. package/dist/{esm/pseudo → pseudo}/missing.d.ts +0 -1
  58. package/dist/{esm/pseudo → pseudo}/missing.js +0 -1
  59. package/dist/{esm/pseudo → pseudo}/native.d.ts +0 -1
  60. package/dist/{esm/pseudo → pseudo}/native.js +0 -1
  61. package/dist/{esm/pseudo → pseudo}/network.d.ts +0 -1
  62. package/dist/{esm/pseudo → pseudo}/network.js +0 -1
  63. package/dist/{esm/pseudo → pseudo}/obfuscated.d.ts +0 -1
  64. package/dist/{esm/pseudo → pseudo}/obfuscated.js +0 -1
  65. package/dist/{esm/pseudo → pseudo}/optional.d.ts +0 -1
  66. package/dist/{esm/pseudo → pseudo}/optional.js +0 -1
  67. package/dist/{esm/pseudo → pseudo}/outdated.d.ts +0 -1
  68. package/dist/{esm/pseudo → pseudo}/outdated.js +0 -1
  69. package/dist/{esm/pseudo → pseudo}/overridden.d.ts +0 -1
  70. package/dist/{esm/pseudo → pseudo}/overridden.js +0 -1
  71. package/dist/{esm/pseudo → pseudo}/path.d.ts +0 -1
  72. package/dist/{esm/pseudo → pseudo}/path.js +1 -4
  73. package/dist/{esm/pseudo → pseudo}/peer.d.ts +0 -1
  74. package/dist/{esm/pseudo → pseudo}/peer.js +0 -1
  75. package/dist/{esm/pseudo → pseudo}/prerelease.d.ts +0 -1
  76. package/dist/{esm/pseudo → pseudo}/prerelease.js +0 -1
  77. package/dist/{esm/pseudo → pseudo}/private.d.ts +0 -1
  78. package/dist/{esm/pseudo → pseudo}/private.js +0 -1
  79. package/dist/{esm/pseudo → pseudo}/prod.d.ts +0 -1
  80. package/dist/{esm/pseudo → pseudo}/prod.js +0 -1
  81. package/dist/{esm/pseudo → pseudo}/published.d.ts +0 -1
  82. package/dist/{esm/pseudo → pseudo}/published.js +0 -1
  83. package/dist/pseudo/registry.d.ts +10 -0
  84. package/dist/pseudo/registry.js +24 -0
  85. package/dist/{esm/pseudo → pseudo}/root.d.ts +0 -1
  86. package/dist/{esm/pseudo → pseudo}/root.js +0 -1
  87. package/dist/{esm/pseudo → pseudo}/scanned.d.ts +0 -1
  88. package/dist/{esm/pseudo → pseudo}/scanned.js +0 -1
  89. package/dist/{esm/pseudo → pseudo}/score.d.ts +0 -1
  90. package/dist/{esm/pseudo → pseudo}/score.js +0 -1
  91. package/dist/{esm/pseudo → pseudo}/scripts.d.ts +0 -1
  92. package/dist/{esm/pseudo → pseudo}/scripts.js +0 -1
  93. package/dist/{esm/pseudo → pseudo}/semver.d.ts +0 -1
  94. package/dist/{esm/pseudo → pseudo}/semver.js +0 -1
  95. package/dist/{esm/pseudo → pseudo}/severity.d.ts +0 -1
  96. package/dist/{esm/pseudo → pseudo}/severity.js +0 -1
  97. package/dist/{esm/pseudo → pseudo}/shell.d.ts +0 -1
  98. package/dist/{esm/pseudo → pseudo}/shell.js +0 -1
  99. package/dist/{esm/pseudo → pseudo}/shrinkwrap.d.ts +0 -1
  100. package/dist/{esm/pseudo → pseudo}/shrinkwrap.js +0 -1
  101. package/dist/{esm/pseudo → pseudo}/spec.d.ts +0 -1
  102. package/dist/{esm/pseudo → pseudo}/spec.js +0 -1
  103. package/dist/{esm/pseudo → pseudo}/squat.d.ts +0 -1
  104. package/dist/{esm/pseudo → pseudo}/squat.js +0 -1
  105. package/dist/{esm/pseudo → pseudo}/suspicious.d.ts +0 -1
  106. package/dist/{esm/pseudo → pseudo}/suspicious.js +0 -1
  107. package/dist/{esm/pseudo → pseudo}/tracker.d.ts +0 -1
  108. package/dist/{esm/pseudo → pseudo}/tracker.js +0 -1
  109. package/dist/{esm/pseudo → pseudo}/trivial.d.ts +0 -1
  110. package/dist/{esm/pseudo → pseudo}/trivial.js +0 -1
  111. package/dist/{esm/pseudo → pseudo}/type.d.ts +0 -1
  112. package/dist/{esm/pseudo → pseudo}/type.js +0 -1
  113. package/dist/{esm/pseudo → pseudo}/undesirable.d.ts +0 -1
  114. package/dist/{esm/pseudo → pseudo}/undesirable.js +0 -1
  115. package/dist/{esm/pseudo → pseudo}/unknown.d.ts +0 -1
  116. package/dist/{esm/pseudo → pseudo}/unknown.js +0 -1
  117. package/dist/{esm/pseudo → pseudo}/unmaintained.d.ts +0 -1
  118. package/dist/{esm/pseudo → pseudo}/unmaintained.js +0 -1
  119. package/dist/{esm/pseudo → pseudo}/unpopular.d.ts +0 -1
  120. package/dist/{esm/pseudo → pseudo}/unpopular.js +0 -1
  121. package/dist/{esm/pseudo → pseudo}/unstable.d.ts +0 -1
  122. package/dist/{esm/pseudo → pseudo}/unstable.js +0 -1
  123. package/dist/{esm/pseudo → pseudo}/workspace.d.ts +0 -1
  124. package/dist/{esm/pseudo → pseudo}/workspace.js +0 -1
  125. package/dist/{esm/pseudo.d.ts → pseudo.d.ts} +0 -1
  126. package/dist/{esm/pseudo.js → pseudo.js} +11 -1
  127. package/dist/{esm/types.d.ts → types.d.ts} +7 -1
  128. package/dist/types.js +1 -0
  129. package/package.json +37 -47
  130. package/dist/esm/attribute.d.ts.map +0 -1
  131. package/dist/esm/attribute.js.map +0 -1
  132. package/dist/esm/combinator.d.ts.map +0 -1
  133. package/dist/esm/combinator.js.map +0 -1
  134. package/dist/esm/id.d.ts.map +0 -1
  135. package/dist/esm/id.js.map +0 -1
  136. package/dist/esm/index.d.ts.map +0 -1
  137. package/dist/esm/index.js.map +0 -1
  138. package/dist/esm/package.json +0 -3
  139. package/dist/esm/parser.d.ts.map +0 -1
  140. package/dist/esm/parser.js.map +0 -1
  141. package/dist/esm/pseudo/abandoned.d.ts.map +0 -1
  142. package/dist/esm/pseudo/abandoned.js.map +0 -1
  143. package/dist/esm/pseudo/attr.d.ts.map +0 -1
  144. package/dist/esm/pseudo/attr.js.map +0 -1
  145. package/dist/esm/pseudo/built.d.ts.map +0 -1
  146. package/dist/esm/pseudo/built.js.map +0 -1
  147. package/dist/esm/pseudo/confused.d.ts.map +0 -1
  148. package/dist/esm/pseudo/confused.js.map +0 -1
  149. package/dist/esm/pseudo/cve.d.ts.map +0 -1
  150. package/dist/esm/pseudo/cve.js.map +0 -1
  151. package/dist/esm/pseudo/cwe.d.ts.map +0 -1
  152. package/dist/esm/pseudo/cwe.js.map +0 -1
  153. package/dist/esm/pseudo/debug.d.ts.map +0 -1
  154. package/dist/esm/pseudo/debug.js.map +0 -1
  155. package/dist/esm/pseudo/deprecated.d.ts.map +0 -1
  156. package/dist/esm/pseudo/deprecated.js.map +0 -1
  157. package/dist/esm/pseudo/dev.d.ts.map +0 -1
  158. package/dist/esm/pseudo/dev.js.map +0 -1
  159. package/dist/esm/pseudo/dynamic.d.ts.map +0 -1
  160. package/dist/esm/pseudo/dynamic.js.map +0 -1
  161. package/dist/esm/pseudo/empty.d.ts.map +0 -1
  162. package/dist/esm/pseudo/empty.js.map +0 -1
  163. package/dist/esm/pseudo/entropic.d.ts.map +0 -1
  164. package/dist/esm/pseudo/entropic.js.map +0 -1
  165. package/dist/esm/pseudo/env.d.ts.map +0 -1
  166. package/dist/esm/pseudo/env.js.map +0 -1
  167. package/dist/esm/pseudo/eval.d.ts.map +0 -1
  168. package/dist/esm/pseudo/eval.js.map +0 -1
  169. package/dist/esm/pseudo/fs.d.ts.map +0 -1
  170. package/dist/esm/pseudo/fs.js.map +0 -1
  171. package/dist/esm/pseudo/helpers.d.ts.map +0 -1
  172. package/dist/esm/pseudo/helpers.js.map +0 -1
  173. package/dist/esm/pseudo/host.d.ts.map +0 -1
  174. package/dist/esm/pseudo/host.js.map +0 -1
  175. package/dist/esm/pseudo/license.d.ts.map +0 -1
  176. package/dist/esm/pseudo/license.js.map +0 -1
  177. package/dist/esm/pseudo/link.d.ts.map +0 -1
  178. package/dist/esm/pseudo/link.js.map +0 -1
  179. package/dist/esm/pseudo/malware.d.ts.map +0 -1
  180. package/dist/esm/pseudo/malware.js.map +0 -1
  181. package/dist/esm/pseudo/minified.d.ts.map +0 -1
  182. package/dist/esm/pseudo/minified.js.map +0 -1
  183. package/dist/esm/pseudo/missing.d.ts.map +0 -1
  184. package/dist/esm/pseudo/missing.js.map +0 -1
  185. package/dist/esm/pseudo/native.d.ts.map +0 -1
  186. package/dist/esm/pseudo/native.js.map +0 -1
  187. package/dist/esm/pseudo/network.d.ts.map +0 -1
  188. package/dist/esm/pseudo/network.js.map +0 -1
  189. package/dist/esm/pseudo/obfuscated.d.ts.map +0 -1
  190. package/dist/esm/pseudo/obfuscated.js.map +0 -1
  191. package/dist/esm/pseudo/optional.d.ts.map +0 -1
  192. package/dist/esm/pseudo/optional.js.map +0 -1
  193. package/dist/esm/pseudo/outdated.d.ts.map +0 -1
  194. package/dist/esm/pseudo/outdated.js.map +0 -1
  195. package/dist/esm/pseudo/overridden.d.ts.map +0 -1
  196. package/dist/esm/pseudo/overridden.js.map +0 -1
  197. package/dist/esm/pseudo/path.d.ts.map +0 -1
  198. package/dist/esm/pseudo/path.js.map +0 -1
  199. package/dist/esm/pseudo/peer.d.ts.map +0 -1
  200. package/dist/esm/pseudo/peer.js.map +0 -1
  201. package/dist/esm/pseudo/prerelease.d.ts.map +0 -1
  202. package/dist/esm/pseudo/prerelease.js.map +0 -1
  203. package/dist/esm/pseudo/private.d.ts.map +0 -1
  204. package/dist/esm/pseudo/private.js.map +0 -1
  205. package/dist/esm/pseudo/prod.d.ts.map +0 -1
  206. package/dist/esm/pseudo/prod.js.map +0 -1
  207. package/dist/esm/pseudo/published.d.ts.map +0 -1
  208. package/dist/esm/pseudo/published.js.map +0 -1
  209. package/dist/esm/pseudo/root.d.ts.map +0 -1
  210. package/dist/esm/pseudo/root.js.map +0 -1
  211. package/dist/esm/pseudo/scanned.d.ts.map +0 -1
  212. package/dist/esm/pseudo/scanned.js.map +0 -1
  213. package/dist/esm/pseudo/score.d.ts.map +0 -1
  214. package/dist/esm/pseudo/score.js.map +0 -1
  215. package/dist/esm/pseudo/scripts.d.ts.map +0 -1
  216. package/dist/esm/pseudo/scripts.js.map +0 -1
  217. package/dist/esm/pseudo/semver.d.ts.map +0 -1
  218. package/dist/esm/pseudo/semver.js.map +0 -1
  219. package/dist/esm/pseudo/severity.d.ts.map +0 -1
  220. package/dist/esm/pseudo/severity.js.map +0 -1
  221. package/dist/esm/pseudo/shell.d.ts.map +0 -1
  222. package/dist/esm/pseudo/shell.js.map +0 -1
  223. package/dist/esm/pseudo/shrinkwrap.d.ts.map +0 -1
  224. package/dist/esm/pseudo/shrinkwrap.js.map +0 -1
  225. package/dist/esm/pseudo/spec.d.ts.map +0 -1
  226. package/dist/esm/pseudo/spec.js.map +0 -1
  227. package/dist/esm/pseudo/squat.d.ts.map +0 -1
  228. package/dist/esm/pseudo/squat.js.map +0 -1
  229. package/dist/esm/pseudo/suspicious.d.ts.map +0 -1
  230. package/dist/esm/pseudo/suspicious.js.map +0 -1
  231. package/dist/esm/pseudo/tracker.d.ts.map +0 -1
  232. package/dist/esm/pseudo/tracker.js.map +0 -1
  233. package/dist/esm/pseudo/trivial.d.ts.map +0 -1
  234. package/dist/esm/pseudo/trivial.js.map +0 -1
  235. package/dist/esm/pseudo/type.d.ts.map +0 -1
  236. package/dist/esm/pseudo/type.js.map +0 -1
  237. package/dist/esm/pseudo/undesirable.d.ts.map +0 -1
  238. package/dist/esm/pseudo/undesirable.js.map +0 -1
  239. package/dist/esm/pseudo/unknown.d.ts.map +0 -1
  240. package/dist/esm/pseudo/unknown.js.map +0 -1
  241. package/dist/esm/pseudo/unmaintained.d.ts.map +0 -1
  242. package/dist/esm/pseudo/unmaintained.js.map +0 -1
  243. package/dist/esm/pseudo/unpopular.d.ts.map +0 -1
  244. package/dist/esm/pseudo/unpopular.js.map +0 -1
  245. package/dist/esm/pseudo/unstable.d.ts.map +0 -1
  246. package/dist/esm/pseudo/unstable.js.map +0 -1
  247. package/dist/esm/pseudo/workspace.d.ts.map +0 -1
  248. package/dist/esm/pseudo/workspace.js.map +0 -1
  249. package/dist/esm/pseudo.d.ts.map +0 -1
  250. package/dist/esm/pseudo.js.map +0 -1
  251. package/dist/esm/types.d.ts.map +0 -1
  252. package/dist/esm/types.js +0 -2
  253. package/dist/esm/types.js.map +0 -1
@@ -12,4 +12,3 @@ export declare const attributeSelectorsMap: Map<string, ComparatorFn>;
12
12
  * Parse attributes selectors, e.g: `[name]`, `[name=value]`, etc
13
13
  */
14
14
  export declare const attribute: (state: ParserState) => Promise<ParserState>;
15
- //# sourceMappingURL=attribute.d.ts.map
@@ -130,4 +130,3 @@ export const attribute = async (state) => {
130
130
  state.specificity.commonCounter += 1;
131
131
  return filterAttributes(state, operatorFn, value, propertyName, insensitive);
132
132
  };
133
- //# sourceMappingURL=attribute.js.map
@@ -3,4 +3,3 @@ import type { ParserState } from './types.ts';
3
3
  * Parse css-style combinators, e.g: `>`, `~` and ` `
4
4
  */
5
5
  export declare const combinator: (state: ParserState) => Promise<ParserState>;
6
- //# sourceMappingURL=combinator.d.ts.map
@@ -109,4 +109,3 @@ export const combinator = async (state) => {
109
109
  }
110
110
  return parserFn(state);
111
111
  };
112
- //# sourceMappingURL=combinator.js.map
@@ -3,4 +3,3 @@ import type { ParserState } from './types.ts';
3
3
  * Parse ids, e.g: `#foo`
4
4
  */
5
5
  export declare const id: (state: ParserState) => Promise<ParserState>;
6
- //# sourceMappingURL=id.d.ts.map
@@ -33,4 +33,3 @@ export const id = async (state) => {
33
33
  state.specificity.idCounter += 1;
34
34
  return state;
35
35
  };
36
- //# sourceMappingURL=id.js.map
@@ -1,6 +1,6 @@
1
1
  import type { EdgeLike, NodeLike } from '@vltpkg/types';
2
2
  import type { SecurityArchiveLike } from '@vltpkg/security-archive';
3
- import type { HostContextsMap, ParsedSelectorToken, ParserState, QueryResponse } from './types.ts';
3
+ import type { DiffFilesProvider, HostContextsMap, ParsedSelectorToken, ParserState, QueryResponse } from './types.ts';
4
4
  import type { DepID } from '@vltpkg/dep-id';
5
5
  export * from './types.ts';
6
6
  export type SearchOptions = {
@@ -15,6 +15,7 @@ export type QueryOptions = {
15
15
  retries?: number;
16
16
  securityArchive: SecurityArchiveLike | undefined;
17
17
  hostContexts?: HostContextsMap;
18
+ diffFiles?: DiffFilesProvider;
18
19
  };
19
20
  /**
20
21
  * The Query class is used to search the graph for nodes and edges
@@ -35,7 +36,7 @@ export declare class Query {
35
36
  * the original order is preserved.
36
37
  */
37
38
  static specificitySort(responses: QueryResponse[]): QueryResponse[];
38
- constructor({ edges, nodes, importers, retries, securityArchive, hostContexts, }: QueryOptions);
39
+ constructor({ edges, nodes, importers, retries, securityArchive, hostContexts, diffFiles, }: QueryOptions);
39
40
  /**
40
41
  * Search the graph for nodes and edges that match the given query.
41
42
  */
@@ -45,4 +46,3 @@ export declare class Query {
45
46
  */
46
47
  static getQueryTokens(query: string): ParsedSelectorToken[];
47
48
  }
48
- //# sourceMappingURL=index.d.ts.map
@@ -139,6 +139,7 @@ const setMethodToJSON = (node) => {
139
139
  */
140
140
  export class Query {
141
141
  #cache;
142
+ #diffFiles;
142
143
  #edges;
143
144
  #nodes;
144
145
  #importers;
@@ -178,8 +179,9 @@ export class Query {
178
179
  return 0;
179
180
  });
180
181
  }
181
- constructor({ edges, nodes, importers, retries, securityArchive, hostContexts, }) {
182
+ constructor({ edges, nodes, importers, retries, securityArchive, hostContexts, diffFiles, }) {
182
183
  this.#cache = new Map();
184
+ this.#diffFiles = diffFiles;
183
185
  this.#edges = edges;
184
186
  this.#nodes = nodes;
185
187
  this.#importers = importers;
@@ -322,6 +324,7 @@ export class Query {
322
324
  edges: new Set(),
323
325
  },
324
326
  comment: '',
327
+ diffFiles: this.#diffFiles,
325
328
  loose,
326
329
  importers,
327
330
  partial: { nodes, edges },
@@ -405,4 +408,3 @@ export class Query {
405
408
  return tokens;
406
409
  }
407
410
  }
408
- //# sourceMappingURL=index.js.map
@@ -12,4 +12,3 @@ export declare const unescapeDots: (query: string) => string;
12
12
  * Handles escaping of forward slashes in specific patterns
13
13
  */
14
14
  export declare const parse: (query: string) => Root;
15
- //# sourceMappingURL=parser.d.ts.map
@@ -90,4 +90,3 @@ export const parse = (query) => {
90
90
  };
91
91
  return postcssSelectorParser(transformAst).astSync(escapedQuery);
92
92
  };
93
- //# sourceMappingURL=parser.js.map
@@ -4,4 +4,3 @@
4
4
  export declare const abandoned: (state: import("../types.ts").ParserState) => Promise<import("../types.ts").ParserState & {
5
5
  securityArchive: NonNullable<import("../types.ts").ParserState["securityArchive"]>;
6
6
  }>;
7
- //# sourceMappingURL=abandoned.d.ts.map
@@ -3,4 +3,3 @@ import { createSecuritySelectorFilter } from "./helpers.js";
3
3
  * Filters out any node that does not have a **missingAuthor** report alert.
4
4
  */
5
5
  export const abandoned = createSecuritySelectorFilter('abandoned', 'missingAuthor');
6
- //# sourceMappingURL=abandoned.js.map
@@ -16,4 +16,3 @@ export declare const parseInternals: (nodes: PostcssNode[]) => AttrInternals;
16
16
  * properties of the `package.json` metadata.
17
17
  */
18
18
  export declare const attr: (state: ParserState) => Promise<ParserState>;
19
- //# sourceMappingURL=attr.d.ts.map
@@ -55,4 +55,3 @@ export const attr = async (state) => {
55
55
  const prefixProperties = internals.properties;
56
56
  return filterAttributes(state, comparator, value, propertyName, insensitive, prefixProperties);
57
57
  };
58
- //# sourceMappingURL=attr.js.map
@@ -5,4 +5,3 @@ import type { ParserState } from '../types.ts';
5
5
  * been successfully built during the reify process.
6
6
  */
7
7
  export declare const built: (state: ParserState) => Promise<ParserState>;
8
- //# sourceMappingURL=built.d.ts.map
@@ -13,4 +13,3 @@ export const built = async (state) => {
13
13
  removeDanglingEdges(state);
14
14
  return state;
15
15
  };
16
- //# sourceMappingURL=built.js.map
@@ -6,4 +6,3 @@ import type { ParserState } from '../types.js';
6
6
  export declare const confused: (state: ParserState) => Promise<ParserState & {
7
7
  securityArchive: NonNullable<ParserState["securityArchive"]>;
8
8
  }>;
9
- //# sourceMappingURL=confused.d.ts.map
@@ -16,4 +16,3 @@ export const confused = async (state) => {
16
16
  removeDanglingEdges(state);
17
17
  return state;
18
18
  };
19
- //# sourceMappingURL=confused.js.map
@@ -10,4 +10,3 @@ export declare const parseInternals: (nodes: PostcssNode[]) => CveInternals;
10
10
  export declare const cve: (state: ParserState) => Promise<ParserState & {
11
11
  securityArchive: NonNullable<ParserState["securityArchive"]>;
12
12
  }>;
13
- //# sourceMappingURL=cve.d.ts.map
@@ -41,4 +41,3 @@ export const cve = async (state) => {
41
41
  removeDanglingEdges(state);
42
42
  return state;
43
43
  };
44
- //# sourceMappingURL=cve.js.map
@@ -10,4 +10,3 @@ export declare const parseInternals: (nodes: PostcssNode[]) => CweInternals;
10
10
  export declare const cwe: (state: ParserState) => Promise<ParserState & {
11
11
  securityArchive: NonNullable<ParserState["securityArchive"]>;
12
12
  }>;
13
- //# sourceMappingURL=cwe.d.ts.map
@@ -40,4 +40,3 @@ export const cwe = async (state) => {
40
40
  removeDanglingEdges(state);
41
41
  return state;
42
42
  };
43
- //# sourceMappingURL=cwe.js.map
@@ -4,4 +4,3 @@
4
4
  export declare const debug: (state: import("../types.ts").ParserState) => Promise<import("../types.ts").ParserState & {
5
5
  securityArchive: NonNullable<import("../types.ts").ParserState["securityArchive"]>;
6
6
  }>;
7
- //# sourceMappingURL=debug.d.ts.map
@@ -3,4 +3,3 @@ import { createSecuritySelectorFilter } from "./helpers.js";
3
3
  * Filters out any node that does not have a **debugAccess** report alert.
4
4
  */
5
5
  export const debug = createSecuritySelectorFilter('debug', 'debugAccess');
6
- //# sourceMappingURL=debug.js.map
@@ -4,4 +4,3 @@
4
4
  export declare const deprecated: (state: import("../types.ts").ParserState) => Promise<import("../types.ts").ParserState & {
5
5
  securityArchive: NonNullable<import("../types.ts").ParserState["securityArchive"]>;
6
6
  }>;
7
- //# sourceMappingURL=deprecated.d.ts.map
@@ -3,4 +3,3 @@ import { createSecuritySelectorFilter } from "./helpers.js";
3
3
  * Filters out any node that does not have a **deprecated** report alert.
4
4
  */
5
5
  export const deprecated = createSecuritySelectorFilter('deprecated', 'deprecated');
6
- //# sourceMappingURL=deprecated.js.map
@@ -3,4 +3,3 @@ import type { ParserState } from '../types.ts';
3
3
  * :dev Pseudo-Selector will only match devDependencies.
4
4
  */
5
5
  export declare const dev: (state: ParserState) => Promise<ParserState>;
6
- //# sourceMappingURL=dev.d.ts.map
@@ -12,4 +12,3 @@ export const dev = async (state) => {
12
12
  removeUnlinkedNodes(state);
13
13
  return state;
14
14
  };
15
- //# sourceMappingURL=dev.js.map
@@ -0,0 +1,26 @@
1
+ import type { ParserState } from '../types.ts';
2
+ /**
3
+ * Given a set of changed file paths and a package location
4
+ * (relative to the project root), returns true if any changed
5
+ * file belongs to that package.
6
+ */
7
+ export declare const packageHasChanges: (changedFiles: Set<string>, packageLocation: string) => boolean;
8
+ /**
9
+ * :diff(<commitish>) Pseudo-Selector, matches only nodes
10
+ * whose files have changed between the current state and
11
+ * the specified commitish reference.
12
+ *
13
+ * Requires a `diffFiles` provider to be set on the
14
+ * {@link ParserState}. The provider is a callback that
15
+ * takes a commitish string and returns a Set of changed
16
+ * file paths relative to the project root.
17
+ *
18
+ * When called with no argument, defaults to HEAD (uncommitted changes).
19
+ *
20
+ * Examples:
21
+ * - :diff() — packages with uncommitted changes (defaults to HEAD)
22
+ * - :diff(main) — packages changed since main branch
23
+ * - :diff(HEAD~1) — packages changed since last commit
24
+ * - :diff("v1.0.0") — packages changed since tag v1.0.0
25
+ */
26
+ export declare const diff: (state: ParserState) => Promise<ParserState>;
@@ -0,0 +1,75 @@
1
+ import { error } from '@vltpkg/error-cause';
2
+ import { asPostcssNodeWithChildren } from '@vltpkg/dss-parser';
3
+ import { removeDanglingEdges, removeNode } from "./helpers.js";
4
+ import { parseInternals } from "./spec.js";
5
+ /**
6
+ * Given a set of changed file paths and a package location
7
+ * (relative to the project root), returns true if any changed
8
+ * file belongs to that package.
9
+ */
10
+ export const packageHasChanges = (changedFiles, packageLocation) => {
11
+ // Normalize the package location — remove leading './'
12
+ const normalized = packageLocation.startsWith('./') ?
13
+ packageLocation.slice(2)
14
+ : packageLocation;
15
+ // Root package — check if any file at root level changed
16
+ // (not inside a subdirectory that is another package)
17
+ if (!normalized || normalized === '.') {
18
+ // Any changed file means the root package changed
19
+ return changedFiles.size > 0;
20
+ }
21
+ // Check if any changed file starts with the package path
22
+ for (const file of changedFiles) {
23
+ if (file === normalized || file.startsWith(normalized + '/')) {
24
+ return true;
25
+ }
26
+ }
27
+ return false;
28
+ };
29
+ /**
30
+ * :diff(<commitish>) Pseudo-Selector, matches only nodes
31
+ * whose files have changed between the current state and
32
+ * the specified commitish reference.
33
+ *
34
+ * Requires a `diffFiles` provider to be set on the
35
+ * {@link ParserState}. The provider is a callback that
36
+ * takes a commitish string and returns a Set of changed
37
+ * file paths relative to the project root.
38
+ *
39
+ * When called with no argument, defaults to HEAD (uncommitted changes).
40
+ *
41
+ * Examples:
42
+ * - :diff() — packages with uncommitted changes (defaults to HEAD)
43
+ * - :diff(main) — packages changed since main branch
44
+ * - :diff(HEAD~1) — packages changed since last commit
45
+ * - :diff("v1.0.0") — packages changed since tag v1.0.0
46
+ */
47
+ export const diff = async (state) => {
48
+ const currentNodes = asPostcssNodeWithChildren(state.current).nodes;
49
+ const hasArg = currentNodes.length > 0 &&
50
+ asPostcssNodeWithChildren(currentNodes[0]).nodes.length > 0;
51
+ let commitish = 'HEAD';
52
+ if (hasArg) {
53
+ try {
54
+ commitish = parseInternals(currentNodes).specValue;
55
+ }
56
+ catch (err) {
57
+ throw error('Failed to parse :diff selector', {
58
+ cause: err,
59
+ });
60
+ }
61
+ }
62
+ if (!state.diffFiles) {
63
+ throw error('The :diff() selector requires a diffFiles provider');
64
+ }
65
+ const changedFiles = state.diffFiles(commitish);
66
+ for (const node of state.partial.nodes) {
67
+ /* c8 ignore next -- location is always set on real nodes */
68
+ const location = node.location ?? '';
69
+ if (!packageHasChanges(changedFiles, location)) {
70
+ removeNode(state, node);
71
+ }
72
+ }
73
+ removeDanglingEdges(state);
74
+ return state;
75
+ };
@@ -4,4 +4,3 @@
4
4
  export declare const dynamic: (state: import("../types.ts").ParserState) => Promise<import("../types.ts").ParserState & {
5
5
  securityArchive: NonNullable<import("../types.ts").ParserState["securityArchive"]>;
6
6
  }>;
7
- //# sourceMappingURL=dynamic.d.ts.map
@@ -3,4 +3,3 @@ import { createSecuritySelectorFilter } from "./helpers.js";
3
3
  * Filters out any node that does not have a **dynamicRequire** report alert.
4
4
  */
5
5
  export const dynamic = createSecuritySelectorFilter('dynamic', 'dynamicRequire');
6
- //# sourceMappingURL=dynamic.js.map
@@ -4,4 +4,3 @@ import type { ParserState } from '../types.ts';
4
4
  * It filters out any node that has edges out, i.e., has dependencies.
5
5
  */
6
6
  export declare const empty: (state: ParserState) => Promise<ParserState>;
7
- //# sourceMappingURL=empty.d.ts.map
@@ -11,4 +11,3 @@ export const empty = async (state) => {
11
11
  }
12
12
  return state;
13
13
  };
14
- //# sourceMappingURL=empty.js.map
@@ -4,4 +4,3 @@
4
4
  export declare const entropic: (state: import("../types.ts").ParserState) => Promise<import("../types.ts").ParserState & {
5
5
  securityArchive: NonNullable<import("../types.ts").ParserState["securityArchive"]>;
6
6
  }>;
7
- //# sourceMappingURL=entropic.d.ts.map
@@ -3,4 +3,3 @@ import { createSecuritySelectorFilter } from "./helpers.js";
3
3
  * Filters out any node that does not have a **highEntropyStrings** report alert.
4
4
  */
5
5
  export const entropic = createSecuritySelectorFilter('entropic', 'highEntropyStrings');
6
- //# sourceMappingURL=entropic.js.map
@@ -4,4 +4,3 @@
4
4
  export declare const env: (state: import("../types.ts").ParserState) => Promise<import("../types.ts").ParserState & {
5
5
  securityArchive: NonNullable<import("../types.ts").ParserState["securityArchive"]>;
6
6
  }>;
7
- //# sourceMappingURL=env.d.ts.map
@@ -3,4 +3,3 @@ import { createSecuritySelectorFilter } from "./helpers.js";
3
3
  * Filters out any node that does not have a **envVars** report alert.
4
4
  */
5
5
  export const env = createSecuritySelectorFilter('env', 'envVars');
6
- //# sourceMappingURL=env.js.map
@@ -4,4 +4,3 @@
4
4
  export declare const evalParser: (state: import("../types.ts").ParserState) => Promise<import("../types.ts").ParserState & {
5
5
  securityArchive: NonNullable<import("../types.ts").ParserState["securityArchive"]>;
6
6
  }>;
7
- //# sourceMappingURL=eval.d.ts.map
@@ -3,4 +3,3 @@ import { createSecuritySelectorFilter } from "./helpers.js";
3
3
  * Filters out any node that does not have a **usesEval** report alert.
4
4
  */
5
5
  export const evalParser = createSecuritySelectorFilter('eval', 'usesEval');
6
- //# sourceMappingURL=eval.js.map
@@ -4,4 +4,3 @@
4
4
  export declare const fs: (state: import("../types.ts").ParserState) => Promise<import("../types.ts").ParserState & {
5
5
  securityArchive: NonNullable<import("../types.ts").ParserState["securityArchive"]>;
6
6
  }>;
7
- //# sourceMappingURL=fs.d.ts.map
@@ -3,4 +3,3 @@ import { createSecuritySelectorFilter } from "./helpers.js";
3
3
  * Filters out any node that does not have a **filesystemAccess** report alert.
4
4
  */
5
5
  export const fs = createSecuritySelectorFilter('fs', 'filesystemAccess');
6
- //# sourceMappingURL=fs.js.map
@@ -36,4 +36,3 @@ export declare const clear: (state: ParserState) => ParserState;
36
36
  export declare const createSecuritySelectorFilter: (name: string, type: string) => (state: ParserState) => Promise<ParserState & {
37
37
  securityArchive: NonNullable<ParserState["securityArchive"]>;
38
38
  }>;
39
- //# sourceMappingURL=helpers.d.ts.map
@@ -13,7 +13,7 @@ export const removeNode = (state, node) => {
13
13
  */
14
14
  export const removeEdge = (state, edge) => {
15
15
  state.partial.edges.delete(edge);
16
- if (edge.to) {
16
+ if (edge.to?.edgesIn.size === 1) {
17
17
  state.partial.nodes.delete(edge.to);
18
18
  }
19
19
  };
@@ -22,7 +22,7 @@ export const removeEdge = (state, edge) => {
22
22
  */
23
23
  export const removeDanglingEdges = (state) => {
24
24
  for (const edge of state.partial.edges) {
25
- if (!edge.to) {
25
+ if (!edge.to || !state.partial.nodes.has(edge.to)) {
26
26
  state.partial.edges.delete(edge);
27
27
  }
28
28
  }
@@ -31,10 +31,13 @@ export const removeDanglingEdges = (state) => {
31
31
  * Removes any nodes that have no incoming edges from the results.
32
32
  */
33
33
  export const removeUnlinkedNodes = (state) => {
34
- for (const node of state.partial.nodes) {
35
- if (node.edgesIn.size === 0) {
36
- state.partial.nodes.delete(node);
34
+ nodeLoop: for (const node of state.partial.nodes) {
35
+ for (const edge of state.partial.edges) {
36
+ if (edge.to === node) {
37
+ continue nodeLoop;
38
+ }
37
39
  }
40
+ state.partial.nodes.delete(node);
38
41
  }
39
42
  };
40
43
  /**
@@ -74,4 +77,3 @@ export const createSecuritySelectorFilter = (name, type) => {
74
77
  return state;
75
78
  };
76
79
  };
77
- //# sourceMappingURL=helpers.js.map
@@ -17,4 +17,3 @@ export declare const parseInternals: (nodes: PostcssNode[]) => string;
17
17
  * - :host(local) - Switches to graphs loaded from the local context
18
18
  */
19
19
  export declare const hostContext: (state: ParserState) => Promise<ParserState>;
20
- //# sourceMappingURL=host.d.ts.map
@@ -77,4 +77,3 @@ export const hostContext = async (state) => {
77
77
  }
78
78
  return state;
79
79
  };
80
- //# sourceMappingURL=host.js.map
@@ -0,0 +1,11 @@
1
+ import type { ParserState } from '../types.ts';
2
+ /**
3
+ * :hostname(str) Pseudo-Selector, matches only nodes whose
4
+ * upstream hostname matches the provided domain string.
5
+ *
6
+ * Examples:
7
+ * - :hostname("registry.npmjs.org") — default npm registry deps
8
+ * - :hostname("github.com") — github git deps
9
+ * - :hostname("example.com") — custom registry deps
10
+ */
11
+ export declare const hostname: (state: ParserState) => Promise<ParserState>;
@@ -0,0 +1,138 @@
1
+ import { splitDepID } from '@vltpkg/dep-id/browser';
2
+ import { getOptions, gitHostWebsites } from '@vltpkg/spec/browser';
3
+ import { asPostcssNodeWithChildren } from '@vltpkg/dss-parser';
4
+ import { error } from '@vltpkg/error-cause';
5
+ import { removeDanglingEdges, removeNode } from "./helpers.js";
6
+ import { parseInternals } from "./spec.js";
7
+ /**
8
+ * Given a named git host (e.g. "github"), resolve its hostname
9
+ * by looking up `gitHostWebsites` (e.g. "github.com"), or
10
+ * falling back to the `git-hosts` template URL.
11
+ */
12
+ const resolveGitHostname = (namedHost, gitHosts) => {
13
+ // Check gitHostWebsites first (e.g. github -> github.com)
14
+ const website = gitHostWebsites[namedHost];
15
+ if (website) {
16
+ try {
17
+ return new URL(website).hostname;
18
+ /* c8 ignore next */
19
+ }
20
+ catch { }
21
+ }
22
+ // Fall back to parsing the git-hosts template URL
23
+ const template = gitHosts[namedHost];
24
+ if (template) {
25
+ try {
26
+ // Templates look like 'git+ssh://git@github.com:$1/$2.git'
27
+ // Replace colons after the host with / for URL parsing
28
+ const normalized = template
29
+ .replace(/^git\+/, '')
30
+ .replace(/:(\$)/, '/$1');
31
+ return new URL(normalized).hostname;
32
+ /* c8 ignore next */
33
+ }
34
+ catch { }
35
+ }
36
+ /* c8 ignore next */
37
+ return undefined;
38
+ };
39
+ /**
40
+ * Resolve the hostname for a git remote string.
41
+ * Named hosts: "github:user/repo" -> extract "github" and look up.
42
+ * Full URLs: "git+ssh://git@example.com/repo.git" -> parse URL.
43
+ */
44
+ const getGitHostname = (gitRemote, gitHosts) => {
45
+ // Check if it's a named git host like "github:user/repo"
46
+ const colonIdx = gitRemote.indexOf(':');
47
+ if (colonIdx > 0) {
48
+ const possibleHost = gitRemote.slice(0, colonIdx);
49
+ // If this is a known named git host, resolve it
50
+ if (possibleHost in gitHosts) {
51
+ return resolveGitHostname(possibleHost, gitHosts);
52
+ }
53
+ // Could be a protocol URL like git+ssh://...
54
+ try {
55
+ const normalized = gitRemote
56
+ .replace(/^git\+/, '')
57
+ .replace(/^ssh:\/\/([^@]+@)?([^:/]+)[:/]/, 'ssh://$1$2/');
58
+ return new URL(normalized).hostname;
59
+ /* c8 ignore next */
60
+ }
61
+ catch { }
62
+ }
63
+ /* c8 ignore start - git remotes always contain a colon */
64
+ // Try parsing as a plain URL
65
+ try {
66
+ return new URL(gitRemote).hostname;
67
+ }
68
+ catch { }
69
+ return undefined;
70
+ /* c8 ignore stop */
71
+ };
72
+ /**
73
+ * :hostname(str) Pseudo-Selector, matches only nodes whose
74
+ * upstream hostname matches the provided domain string.
75
+ *
76
+ * Examples:
77
+ * - :hostname("registry.npmjs.org") — default npm registry deps
78
+ * - :hostname("github.com") — github git deps
79
+ * - :hostname("example.com") — custom registry deps
80
+ */
81
+ export const hostname = async (state) => {
82
+ let internals;
83
+ try {
84
+ internals = parseInternals(asPostcssNodeWithChildren(state.current).nodes);
85
+ }
86
+ catch (err) {
87
+ throw error('Failed to parse :hostname selector', {
88
+ cause: err,
89
+ });
90
+ }
91
+ const targetHostname = internals.specValue;
92
+ for (const node of state.partial.nodes) {
93
+ const tuple = splitDepID(node.id);
94
+ const type = tuple[0];
95
+ let nodeHostname;
96
+ switch (type) {
97
+ case 'registry': {
98
+ const registryName = tuple[1];
99
+ const options = getOptions(node.options);
100
+ // Look up the registry URL from registries map
101
+ const registryUrl = options.registries[registryName] ?? options.registry;
102
+ if (registryUrl) {
103
+ try {
104
+ nodeHostname = new URL(registryUrl).hostname;
105
+ /* c8 ignore next */
106
+ }
107
+ catch { }
108
+ }
109
+ break;
110
+ }
111
+ case 'git': {
112
+ const gitRemote = tuple[1];
113
+ const options = getOptions(node.options);
114
+ nodeHostname = getGitHostname(gitRemote, options['git-hosts']);
115
+ break;
116
+ }
117
+ case 'remote': {
118
+ const url = tuple[1];
119
+ try {
120
+ nodeHostname = new URL(url).hostname;
121
+ /* c8 ignore next */
122
+ }
123
+ catch { }
124
+ break;
125
+ }
126
+ // file and workspace deps are local — no hostname
127
+ default: {
128
+ nodeHostname = undefined;
129
+ break;
130
+ }
131
+ }
132
+ if (nodeHostname !== targetHostname) {
133
+ removeNode(state, node);
134
+ }
135
+ }
136
+ removeDanglingEdges(state);
137
+ return state;
138
+ };
@@ -10,4 +10,3 @@ export declare const parseInternals: (nodes: PostcssNode[]) => {
10
10
  export declare const license: (state: ParserState) => Promise<ParserState & {
11
11
  securityArchive: NonNullable<ParserState["securityArchive"]>;
12
12
  }>;
13
- //# sourceMappingURL=license.d.ts.map
@@ -72,4 +72,3 @@ export const license = async (state) => {
72
72
  removeDanglingEdges(state);
73
73
  return state;
74
74
  };
75
- //# sourceMappingURL=license.js.map
@@ -6,4 +6,3 @@ import type { ParserState } from '../types.ts';
6
6
  * type that ends with 'tar.gz' since these are local tarballs.
7
7
  */
8
8
  export declare const link: (state: ParserState) => Promise<ParserState>;
9
- //# sourceMappingURL=link.d.ts.map
@@ -22,4 +22,3 @@ export const link = async (state) => {
22
22
  }
23
23
  return state;
24
24
  };
25
- //# sourceMappingURL=link.js.map
@@ -21,4 +21,3 @@ export declare const parseInternals: (nodes: PostcssNode[]) => {
21
21
  export declare const malware: (state: ParserState) => Promise<ParserState & {
22
22
  securityArchive: NonNullable<ParserState["securityArchive"]>;
23
23
  }>;
24
- //# sourceMappingURL=malware.d.ts.map