@vltpkg/query 0.0.0-8 → 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.
Files changed (159) hide show
  1. package/README.md +38 -249
  2. package/dist/esm/attribute.d.ts +1 -1
  3. package/dist/esm/attribute.d.ts.map +1 -1
  4. package/dist/esm/attribute.js +5 -12
  5. package/dist/esm/attribute.js.map +1 -1
  6. package/dist/esm/combinator.d.ts.map +1 -1
  7. package/dist/esm/combinator.js +1 -1
  8. package/dist/esm/combinator.js.map +1 -1
  9. package/dist/esm/id.d.ts.map +1 -1
  10. package/dist/esm/id.js +23 -7
  11. package/dist/esm/id.js.map +1 -1
  12. package/dist/esm/index.d.ts +29 -7
  13. package/dist/esm/index.d.ts.map +1 -1
  14. package/dist/esm/index.js +247 -21
  15. package/dist/esm/index.js.map +1 -1
  16. package/dist/esm/parser.d.ts +15 -0
  17. package/dist/esm/parser.d.ts.map +1 -0
  18. package/dist/esm/parser.js +93 -0
  19. package/dist/esm/parser.js.map +1 -0
  20. package/dist/esm/pseudo/attr.d.ts +2 -1
  21. package/dist/esm/pseudo/attr.d.ts.map +1 -1
  22. package/dist/esm/pseudo/attr.js +10 -2
  23. package/dist/esm/pseudo/attr.js.map +1 -1
  24. package/dist/esm/pseudo/built.d.ts +8 -0
  25. package/dist/esm/pseudo/built.d.ts.map +1 -0
  26. package/dist/esm/pseudo/built.js +16 -0
  27. package/dist/esm/pseudo/built.js.map +1 -0
  28. package/dist/esm/pseudo/confused.d.ts +4 -2
  29. package/dist/esm/pseudo/confused.d.ts.map +1 -1
  30. package/dist/esm/pseudo/confused.js +15 -2
  31. package/dist/esm/pseudo/confused.js.map +1 -1
  32. package/dist/esm/pseudo/cve.d.ts +2 -1
  33. package/dist/esm/pseudo/cve.d.ts.map +1 -1
  34. package/dist/esm/pseudo/cve.js +2 -2
  35. package/dist/esm/pseudo/cve.js.map +1 -1
  36. package/dist/esm/pseudo/cwe.d.ts +2 -1
  37. package/dist/esm/pseudo/cwe.d.ts.map +1 -1
  38. package/dist/esm/pseudo/cwe.js +2 -2
  39. package/dist/esm/pseudo/cwe.js.map +1 -1
  40. package/dist/esm/pseudo/dev.d.ts +6 -0
  41. package/dist/esm/pseudo/dev.d.ts.map +1 -0
  42. package/dist/esm/pseudo/dev.js +15 -0
  43. package/dist/esm/pseudo/dev.js.map +1 -0
  44. package/dist/esm/pseudo/empty.d.ts +7 -0
  45. package/dist/esm/pseudo/empty.d.ts.map +1 -0
  46. package/dist/esm/pseudo/empty.js +14 -0
  47. package/dist/esm/pseudo/empty.js.map +1 -0
  48. package/dist/esm/pseudo/helpers.d.ts +13 -1
  49. package/dist/esm/pseudo/helpers.d.ts.map +1 -1
  50. package/dist/esm/pseudo/helpers.js +27 -0
  51. package/dist/esm/pseudo/helpers.js.map +1 -1
  52. package/dist/esm/pseudo/host.d.ts +20 -0
  53. package/dist/esm/pseudo/host.d.ts.map +1 -0
  54. package/dist/esm/pseudo/host.js +80 -0
  55. package/dist/esm/pseudo/host.js.map +1 -0
  56. package/dist/esm/pseudo/license.d.ts +2 -1
  57. package/dist/esm/pseudo/license.d.ts.map +1 -1
  58. package/dist/esm/pseudo/license.js +19 -2
  59. package/dist/esm/pseudo/license.js.map +1 -1
  60. package/dist/esm/pseudo/link.d.ts +9 -0
  61. package/dist/esm/pseudo/link.d.ts.map +1 -0
  62. package/dist/esm/pseudo/link.js +25 -0
  63. package/dist/esm/pseudo/link.js.map +1 -0
  64. package/dist/esm/pseudo/malware.d.ts +13 -1
  65. package/dist/esm/pseudo/malware.d.ts.map +1 -1
  66. package/dist/esm/pseudo/malware.js +140 -10
  67. package/dist/esm/pseudo/malware.js.map +1 -1
  68. package/dist/esm/pseudo/missing.d.ts +8 -0
  69. package/dist/esm/pseudo/missing.d.ts.map +1 -0
  70. package/dist/esm/pseudo/missing.js +15 -0
  71. package/dist/esm/pseudo/missing.js.map +1 -0
  72. package/dist/esm/pseudo/optional.d.ts +6 -0
  73. package/dist/esm/pseudo/optional.d.ts.map +1 -0
  74. package/dist/esm/pseudo/optional.js +15 -0
  75. package/dist/esm/pseudo/optional.js.map +1 -0
  76. package/dist/esm/pseudo/outdated.d.ts +4 -4
  77. package/dist/esm/pseudo/outdated.d.ts.map +1 -1
  78. package/dist/esm/pseudo/outdated.js +44 -33
  79. package/dist/esm/pseudo/outdated.js.map +1 -1
  80. package/dist/esm/pseudo/overridden.d.ts +8 -0
  81. package/dist/esm/pseudo/overridden.d.ts.map +1 -0
  82. package/dist/esm/pseudo/overridden.js +17 -0
  83. package/dist/esm/pseudo/overridden.js.map +1 -0
  84. package/dist/esm/pseudo/path.d.ts +19 -0
  85. package/dist/esm/pseudo/path.d.ts.map +1 -0
  86. package/dist/esm/pseudo/path.js +113 -0
  87. package/dist/esm/pseudo/path.js.map +1 -0
  88. package/dist/esm/pseudo/peer.d.ts +6 -0
  89. package/dist/esm/pseudo/peer.d.ts.map +1 -0
  90. package/dist/esm/pseudo/peer.js +15 -0
  91. package/dist/esm/pseudo/peer.js.map +1 -0
  92. package/dist/esm/pseudo/prerelease.d.ts +18 -0
  93. package/dist/esm/pseudo/prerelease.d.ts.map +1 -0
  94. package/dist/esm/pseudo/prerelease.js +41 -0
  95. package/dist/esm/pseudo/prerelease.js.map +1 -0
  96. package/dist/esm/pseudo/private.d.ts +7 -0
  97. package/dist/esm/pseudo/private.d.ts.map +1 -0
  98. package/dist/esm/pseudo/private.js +16 -0
  99. package/dist/esm/pseudo/private.js.map +1 -0
  100. package/dist/esm/pseudo/prod.d.ts +6 -0
  101. package/dist/esm/pseudo/prod.d.ts.map +1 -0
  102. package/dist/esm/pseudo/prod.js +15 -0
  103. package/dist/esm/pseudo/prod.js.map +1 -0
  104. package/dist/esm/pseudo/published.d.ts +40 -0
  105. package/dist/esm/pseudo/published.d.ts.map +1 -0
  106. package/dist/esm/pseudo/published.js +180 -0
  107. package/dist/esm/pseudo/published.js.map +1 -0
  108. package/dist/esm/pseudo/root.d.ts +7 -0
  109. package/dist/esm/pseudo/root.d.ts.map +1 -0
  110. package/dist/esm/pseudo/root.js +18 -0
  111. package/dist/esm/pseudo/root.js.map +1 -0
  112. package/dist/esm/pseudo/scanned.d.ts +4 -2
  113. package/dist/esm/pseudo/scanned.d.ts.map +1 -1
  114. package/dist/esm/pseudo/scanned.js +10 -5
  115. package/dist/esm/pseudo/scanned.js.map +1 -1
  116. package/dist/esm/pseudo/score.d.ts +16 -0
  117. package/dist/esm/pseudo/score.d.ts.map +1 -0
  118. package/dist/esm/pseudo/score.js +133 -0
  119. package/dist/esm/pseudo/score.js.map +1 -0
  120. package/dist/esm/pseudo/scripts.d.ts +7 -4
  121. package/dist/esm/pseudo/scripts.d.ts.map +1 -1
  122. package/dist/esm/pseudo/scripts.js +41 -3
  123. package/dist/esm/pseudo/scripts.js.map +1 -1
  124. package/dist/esm/pseudo/semver.d.ts +2 -1
  125. package/dist/esm/pseudo/semver.d.ts.map +1 -1
  126. package/dist/esm/pseudo/semver.js +11 -24
  127. package/dist/esm/pseudo/semver.js.map +1 -1
  128. package/dist/esm/pseudo/severity.d.ts +4 -1
  129. package/dist/esm/pseudo/severity.d.ts.map +1 -1
  130. package/dist/esm/pseudo/severity.js +111 -8
  131. package/dist/esm/pseudo/severity.js.map +1 -1
  132. package/dist/esm/pseudo/spec.d.ts +17 -0
  133. package/dist/esm/pseudo/spec.d.ts.map +1 -0
  134. package/dist/esm/pseudo/spec.js +102 -0
  135. package/dist/esm/pseudo/spec.js.map +1 -0
  136. package/dist/esm/pseudo/squat.d.ts +4 -1
  137. package/dist/esm/pseudo/squat.d.ts.map +1 -1
  138. package/dist/esm/pseudo/squat.js +127 -9
  139. package/dist/esm/pseudo/squat.js.map +1 -1
  140. package/dist/esm/pseudo/type.d.ts +8 -0
  141. package/dist/esm/pseudo/type.d.ts.map +1 -0
  142. package/dist/esm/pseudo/type.js +22 -0
  143. package/dist/esm/pseudo/type.js.map +1 -0
  144. package/dist/esm/pseudo/workspace.d.ts +6 -0
  145. package/dist/esm/pseudo/workspace.d.ts.map +1 -0
  146. package/dist/esm/pseudo/workspace.js +20 -0
  147. package/dist/esm/pseudo/workspace.js.map +1 -0
  148. package/dist/esm/pseudo.d.ts.map +1 -1
  149. package/dist/esm/pseudo.js +81 -105
  150. package/dist/esm/pseudo.js.map +1 -1
  151. package/dist/esm/types.d.ts +97 -27
  152. package/dist/esm/types.d.ts.map +1 -1
  153. package/dist/esm/types.js +1 -106
  154. package/dist/esm/types.js.map +1 -1
  155. package/package.json +20 -16
  156. package/dist/esm/class.d.ts +0 -6
  157. package/dist/esm/class.d.ts.map +0 -1
  158. package/dist/esm/class.js +0 -131
  159. package/dist/esm/class.js.map +0 -1
package/dist/esm/types.js CHANGED
@@ -1,107 +1,2 @@
1
- import { error } from '@vltpkg/error-cause';
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 isClassNode = (node) => isObj(node) && !!node.value && node.type === 'class';
29
- export const asClassNode = (node) => {
30
- if (!node) {
31
- throw error('Expected a query node');
32
- }
33
- if (!isClassNode(node)) {
34
- throw error('Mismatching query node', {
35
- wanted: 'class',
36
- found: node.type,
37
- });
38
- }
39
- return node;
40
- };
41
- export const isCombinatorNode = (node) => isObj(node) && !!node.value && node.type === 'combinator';
42
- export const asCombinatorNode = (node) => {
43
- if (!node) {
44
- throw error('Expected a query node');
45
- }
46
- if (!isCombinatorNode(node)) {
47
- throw error('Mismatching query node', {
48
- wanted: 'combinator',
49
- found: node.type,
50
- });
51
- }
52
- return node;
53
- };
54
- export const isIdentifierNode = (node) => isObj(node) && !!node.value && node.type === 'id';
55
- export const asIdentifierNode = (node) => {
56
- if (!node) {
57
- throw error('Expected a query node');
58
- }
59
- if (!isIdentifierNode(node)) {
60
- throw error('Mismatching query node', {
61
- wanted: 'id',
62
- found: node.type,
63
- });
64
- }
65
- return node;
66
- };
67
- export const isSelectorNode = (node) => isPostcssNodeWithChildren(node) && node.type === 'selector';
68
- export const isPseudoNode = (node) => isObj(node) && !!node.value && node.type === 'pseudo';
69
- export const asPseudoNode = (node) => {
70
- if (!node) {
71
- throw error('Expected a query node');
72
- }
73
- if (!isPseudoNode(node)) {
74
- throw error('Mismatching query node', {
75
- wanted: 'pseudo',
76
- found: node.type,
77
- });
78
- }
79
- return node;
80
- };
81
- export const isTagNode = (node) => isObj(node) && !!node.value && node.type === 'tag';
82
- export const asTagNode = (node) => {
83
- if (!node) {
84
- throw error('Expected a query node');
85
- }
86
- if (!isTagNode(node)) {
87
- throw error('Mismatching query node', {
88
- wanted: 'tag',
89
- found: node.type,
90
- });
91
- }
92
- return node;
93
- };
94
- export const isStringNode = (node) => isObj(node) && !!node.value && node.type === 'string';
95
- export const asStringNode = (node) => {
96
- if (!node) {
97
- throw error('Expected a query node');
98
- }
99
- if (!isStringNode(node)) {
100
- throw error('Mismatching query node', {
101
- wanted: 'string',
102
- found: node.type,
103
- });
104
- }
105
- return node;
106
- };
1
+ export {};
107
2
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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","sourcesContent":["import { error } from '@vltpkg/error-cause'\nimport type { EdgeLike, NodeLike } from '@vltpkg/graph'\nimport type { SpecOptions } from '@vltpkg/spec/browser'\nimport type { SecurityArchiveLike } from '@vltpkg/security-archive'\nimport type {\n Tag,\n String,\n Selector,\n Root,\n Pseudo,\n Nesting,\n Identifier,\n Comment,\n Combinator,\n ClassName,\n Attribute,\n Universal,\n} from 'postcss-selector-parser'\n\nexport type PostcssNode =\n | Tag\n | String\n | Selector\n | Root\n | Pseudo\n | Nesting\n | Identifier\n | Comment\n | Combinator\n | ClassName\n | Attribute\n | Universal\n\nexport type PostcssNodeWithChildren = Selector | Root | Pseudo\n\nexport type GraphSelectionState = {\n nodes: Set<NodeLike>\n edges: Set<EdgeLike>\n}\n\nexport type ParserState = {\n cancellable: () => Promise<void>\n collect: GraphSelectionState\n current: PostcssNode\n initial: GraphSelectionState\n loose?: boolean\n next?: PostcssNode\n prev?: PostcssNode\n result?: NodeLike[]\n signal?: AbortSignal\n walk: ParserFn\n partial: GraphSelectionState\n securityArchive: SecurityArchiveLike | undefined\n specOptions: SpecOptions\n}\n\nexport type QueryResponse = {\n edges: EdgeLike[]\n nodes: NodeLike[]\n}\n\nexport type ParserFn = (opt: ParserState) => Promise<ParserState>\n\nexport const isPostcssNodeWithChildren = (\n node: any,\n): node is PostcssNodeWithChildren =>\n 'type' in node && 'nodes' in node\n\nexport const asPostcssNodeWithChildren = (\n node?: PostcssNode,\n): PostcssNodeWithChildren => {\n if (!node) {\n throw error('Expected a query node')\n }\n\n if (!isPostcssNodeWithChildren(node)) {\n throw error('Not a query selector node with children', {\n found: node,\n })\n }\n return node\n}\n\nconst isObj = (o: unknown): o is Record<string, unknown> =>\n !!o && typeof o === 'object'\n\nexport const isAttributeNode = (node: unknown): node is Attribute =>\n isObj(node) && !!node.attribute && node.type === 'attribute'\n\nexport const asAttributeNode = (node?: PostcssNode): Attribute => {\n if (!node) {\n throw error('Expected a query node')\n }\n\n if (!isAttributeNode(node)) {\n throw error('Mismatching query node', {\n wanted: 'attribute',\n found: node.type,\n })\n }\n return node\n}\n\nexport const isClassNode = (node: unknown): node is ClassName =>\n isObj(node) && !!node.value && node.type === 'class'\n\nexport const asClassNode = (node?: PostcssNode): ClassName => {\n if (!node) {\n throw error('Expected a query node')\n }\n\n if (!isClassNode(node)) {\n throw error('Mismatching query node', {\n wanted: 'class',\n found: node.type,\n })\n }\n return node\n}\n\nexport const isCombinatorNode = (node: unknown): node is Combinator =>\n isObj(node) && !!node.value && node.type === 'combinator'\n\nexport const asCombinatorNode = (node?: PostcssNode): Combinator => {\n if (!node) {\n throw error('Expected a query node')\n }\n\n if (!isCombinatorNode(node)) {\n throw error('Mismatching query node', {\n wanted: 'combinator',\n found: node.type,\n })\n }\n return node\n}\n\nexport const isIdentifierNode = (node: any): node is Identifier =>\n isObj(node) && !!node.value && node.type === 'id'\n\nexport const asIdentifierNode = (node?: PostcssNode): Identifier => {\n if (!node) {\n throw error('Expected a query node')\n }\n\n if (!isIdentifierNode(node)) {\n throw error('Mismatching query node', {\n wanted: 'id',\n found: node.type,\n })\n }\n return node\n}\n\nexport const isSelectorNode = (node: any): node is Selector =>\n isPostcssNodeWithChildren(node) && node.type === 'selector'\n\nexport const isPseudoNode = (node: unknown): node is Pseudo =>\n isObj(node) && !!node.value && node.type === 'pseudo'\n\nexport const asPseudoNode = (node?: PostcssNode): Pseudo => {\n if (!node) {\n throw error('Expected a query node')\n }\n\n if (!isPseudoNode(node)) {\n throw error('Mismatching query node', {\n wanted: 'pseudo',\n found: node.type,\n })\n }\n return node\n}\n\nexport const isTagNode = (node: unknown): node is Tag =>\n isObj(node) && !!node.value && node.type === 'tag'\n\nexport const asTagNode = (node?: PostcssNode): Tag => {\n if (!node) {\n throw error('Expected a query node')\n }\n\n if (!isTagNode(node)) {\n throw error('Mismatching query node', {\n wanted: 'tag',\n found: node.type,\n })\n }\n\n return node\n}\n\nexport const isStringNode = (node: unknown): node is String =>\n isObj(node) && !!node.value && node.type === 'string'\n\nexport const asStringNode = (node?: PostcssNode): String => {\n if (!node) {\n throw error('Expected a query node')\n }\n\n if (!isStringNode(node)) {\n throw error('Mismatching query node', {\n wanted: 'string',\n found: node.type,\n })\n }\n\n return node\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { EdgeLike, NodeLike } from '@vltpkg/types'\nimport type {\n SecurityArchiveLike,\n PackageScore,\n} from '@vltpkg/security-archive'\nimport type { DepID } from '@vltpkg/dep-id'\nimport type { PostcssNode } from '@vltpkg/dss-parser'\n\nexport type HostContextsMapResult = {\n initialEdges: EdgeLike[]\n initialNodes: NodeLike[]\n edges: EdgeLike[]\n nodes: NodeLike[]\n securityArchive: SecurityArchiveLike | undefined\n}\n\nexport type HostContextsMap = Map<\n string,\n () => Promise<HostContextsMapResult>\n>\n\nexport type Specificity = {\n idCounter: number\n commonCounter: number\n}\n\nexport type GraphSelectionState = {\n nodes: Set<NodeLike>\n edges: Set<EdgeLike>\n}\n\nexport type ParserState = {\n cancellable: () => Promise<void>\n collect: GraphSelectionState\n comment: string\n current: PostcssNode\n hostContexts?: HostContextsMap\n importers: Set<NodeLike>\n initial: GraphSelectionState\n loose?: boolean\n next?: PostcssNode\n prev?: PostcssNode\n result?: NodeLike[]\n signal: AbortSignal\n walk: ParserFn\n partial: GraphSelectionState\n retries: number\n securityArchive: SecurityArchiveLike | undefined\n scopeIDs?: DepID[]\n specificity: Specificity\n}\n\nexport type QueryResponse = {\n edges: QueryResponseEdge[]\n nodes: QueryResponseNode[]\n importers: QueryResponseNode[]\n comment: string\n specificity: Specificity\n}\n\nexport type QueryResponseEdge = Omit<EdgeLike, 'from' | 'to'> & {\n from: QueryResponseNode\n to?: QueryResponseNode\n}\n\nexport type QueryResponseNode = Omit<\n NodeLike,\n 'edgesIn' | 'edgesOut'\n> & {\n edgesIn: Set<QueryResponseEdge>\n edgesOut: Map<string, QueryResponseEdge>\n insights: Insights\n toJSON: () => Pick<\n QueryResponseNode,\n | 'id'\n | 'name'\n | 'version'\n | 'location'\n | 'importer'\n | 'manifest'\n | 'projectRoot'\n | 'integrity'\n | 'resolved'\n | 'dev'\n | 'optional'\n | 'insights'\n | 'confused'\n >\n}\n\nexport type Insights = {\n abandoned?: boolean\n confused?: boolean\n cve?: `CVE-${string}`[]\n cwe?: `CWE-${string}`[]\n debug?: boolean\n deprecated?: boolean\n dynamic?: boolean\n entropic?: boolean\n env?: boolean\n eval?: boolean\n fs?: boolean\n license?: LicenseInsights\n malware?: MalwareInsights\n minified?: boolean\n native?: boolean\n network?: boolean\n obfuscated?: boolean\n scanned: boolean\n score?: PackageScore\n scripts?: boolean\n severity?: SeverityInsights\n shell?: boolean\n shrinkwrap?: boolean\n squat?: SquatInsights\n suspicious?: boolean\n tracker?: boolean\n trivial?: boolean\n undesirable?: boolean\n unknown?: boolean\n unmaintained?: boolean\n unpopular?: boolean\n unstable?: boolean\n}\n\nexport type LicenseInsights = {\n unlicensed: boolean\n misc: boolean\n restricted: boolean\n ambiguous: boolean\n copyleft: boolean\n unknown: boolean\n none: boolean\n exception: boolean\n}\n\nexport type LeveledInsights = {\n low: boolean\n medium: boolean\n high: boolean\n critical: boolean\n}\n\nexport type MalwareInsights = LeveledInsights\nexport type SeverityInsights = LeveledInsights\n\nexport type SquatInsights = {\n medium: boolean\n critical: boolean\n}\n\nexport type ParserFn = (opt: ParserState) => Promise<ParserState>\n\nexport type ParsedSelectorToken = PostcssNode & {\n token: string\n}\n"]}
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@vltpkg/query",
3
3
  "description": "Query syntax parser that retrieves items from a graph",
4
- "version": "0.0.0-8",
4
+ "version": "1.0.0-rc.1",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/vltpkg/vltpkg.git",
8
8
  "directory": "src/query"
9
9
  },
10
+ "author": "vlt technology inc. <support@vlt.sh> (http://vlt.sh)",
10
11
  "tshy": {
11
12
  "selfLink": false,
12
13
  "liveDev": true,
@@ -19,26 +20,28 @@
19
20
  }
20
21
  },
21
22
  "dependencies": {
22
- "postcss-selector-parser": "^6.1.2",
23
- "@vltpkg/dep-id": "0.0.0-8",
24
- "@vltpkg/security-archive": "0.0.0-8",
25
- "@vltpkg/graph": "0.0.0-8",
26
- "@vltpkg/types": "0.0.0-8",
27
- "@vltpkg/semver": "0.0.0-8",
28
- "@vltpkg/error-cause": "0.0.0-8"
23
+ "minimatch": "^10.0.3",
24
+ "p-retry": "^7.0.0",
25
+ "postcss-selector-parser": "^7.1.0",
26
+ "@vltpkg/dep-id": "1.0.0-rc.1",
27
+ "@vltpkg/dss-parser": "1.0.0-rc.1",
28
+ "@vltpkg/error-cause": "1.0.0-rc.1",
29
+ "@vltpkg/graph": "1.0.0-rc.1",
30
+ "@vltpkg/security-archive": "1.0.0-rc.1",
31
+ "@vltpkg/semver": "1.0.0-rc.1",
32
+ "@vltpkg/types": "1.0.0-rc.1"
29
33
  },
30
34
  "devDependencies": {
31
- "@eslint/js": "^9.20.0",
32
- "@types/eslint__js": "^8.42.3",
33
- "@types/node": "^22.13.1",
34
- "eslint": "^9.20.0",
35
- "prettier": "^3.4.2",
35
+ "@eslint/js": "^9.34.0",
36
+ "@types/node": "^22.17.2",
37
+ "eslint": "^9.34.0",
38
+ "prettier": "^3.6.2",
36
39
  "tap": "^21.1.0",
37
40
  "tshy": "^3.0.2",
38
- "typedoc": "0.27.6",
41
+ "typedoc": "~0.27.9",
39
42
  "typescript": "5.7.3",
40
- "typescript-eslint": "^8.23.0",
41
- "@vltpkg/spec": "0.0.0-8"
43
+ "typescript-eslint": "^8.40.0",
44
+ "@vltpkg/spec": "1.0.0-rc.1"
42
45
  },
43
46
  "license": "BSD-2-Clause-Patent",
44
47
  "engines": {
@@ -70,6 +73,7 @@
70
73
  "snap": "tap",
71
74
  "test": "tap",
72
75
  "posttest": "tsc --noEmit",
76
+ "tshy": "tshy",
73
77
  "typecheck": "tsc --noEmit"
74
78
  }
75
79
  }
@@ -1,6 +0,0 @@
1
- import type { ParserState } from './types.ts';
2
- /**
3
- * Parse classes, e.g: `.prod`, `.dev`, `.optional`, etc
4
- */
5
- export declare const classFn: (state: ParserState) => Promise<ParserState>;
6
- //# sourceMappingURL=class.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../src/class.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAY,WAAW,EAAE,MAAM,YAAY,CAAA;AAoHvD;;GAEG;AACH,eAAO,MAAM,OAAO,UAAiB,WAAW,yBAe/C,CAAA"}
package/dist/esm/class.js DELETED
@@ -1,131 +0,0 @@
1
- import { error } from '@vltpkg/error-cause';
2
- import { asClassNode } from "./types.js";
3
- const classSelectors = {
4
- prod: async (state) => {
5
- for (const edge of state.partial.edges) {
6
- if (edge.type !== 'prod' || edge.from.dev) {
7
- state.partial.edges.delete(edge);
8
- }
9
- }
10
- for (const node of state.partial.nodes) {
11
- if (!node.edgesIn.size) {
12
- state.partial.nodes.delete(node);
13
- continue;
14
- }
15
- const iterator = new Set(node.edgesIn);
16
- for (const edge of iterator) {
17
- if (!state.partial.edges.has(edge)) {
18
- iterator.delete(edge);
19
- }
20
- }
21
- if (!iterator.size) {
22
- state.partial.nodes.delete(node);
23
- }
24
- }
25
- return state;
26
- },
27
- dev: async (state) => {
28
- for (const edge of state.partial.edges) {
29
- if (edge.type !== 'dev' && !edge.from.dev) {
30
- state.partial.edges.delete(edge);
31
- }
32
- }
33
- for (const node of state.partial.nodes) {
34
- if (!node.edgesIn.size) {
35
- state.partial.nodes.delete(node);
36
- continue;
37
- }
38
- const iterator = new Set(node.edgesIn);
39
- for (const edge of iterator) {
40
- if (!state.partial.edges.has(edge)) {
41
- iterator.delete(edge);
42
- }
43
- }
44
- if (!iterator.size) {
45
- state.partial.nodes.delete(node);
46
- }
47
- }
48
- return state;
49
- },
50
- optional: async (state) => {
51
- for (const edge of state.partial.edges) {
52
- if (edge.type !== 'optional' && !edge.from.optional) {
53
- state.partial.edges.delete(edge);
54
- }
55
- }
56
- for (const node of state.partial.nodes) {
57
- if (!node.edgesIn.size) {
58
- state.partial.nodes.delete(node);
59
- continue;
60
- }
61
- const iterator = new Set(node.edgesIn);
62
- for (const edge of iterator) {
63
- if (!state.partial.edges.has(edge)) {
64
- iterator.delete(edge);
65
- }
66
- }
67
- if (!iterator.size) {
68
- state.partial.nodes.delete(node);
69
- }
70
- }
71
- return state;
72
- },
73
- peer: async (state) => {
74
- for (const edge of state.partial.edges) {
75
- if (edge.type !== 'peer') {
76
- state.partial.edges.delete(edge);
77
- }
78
- }
79
- for (const node of state.partial.nodes) {
80
- if (!node.edgesIn.size) {
81
- state.partial.nodes.delete(node);
82
- continue;
83
- }
84
- for (const e of node.edgesIn) {
85
- if (!state.partial.edges.has(e)) {
86
- state.partial.nodes.delete(node);
87
- }
88
- }
89
- }
90
- return state;
91
- },
92
- workspace: async (state) => {
93
- for (const node of state.partial.nodes) {
94
- if (!node.importer || node.mainImporter) {
95
- state.partial.nodes.delete(node);
96
- }
97
- }
98
- for (const edge of state.partial.edges) {
99
- // workspaces can't be missing
100
- if (!edge.to) {
101
- state.partial.edges.delete(edge);
102
- // keep only edges that are linking to preivously kept nodes
103
- }
104
- else if (!state.partial.nodes.has(edge.to)) {
105
- state.partial.edges.delete(edge);
106
- }
107
- }
108
- return state;
109
- },
110
- // TBD: all things bundled
111
- // bundled: () => false,
112
- };
113
- const classSelectorsMap = new Map(Object.entries(classSelectors));
114
- /**
115
- * Parse classes, e.g: `.prod`, `.dev`, `.optional`, etc
116
- */
117
- export const classFn = async (state) => {
118
- await state.cancellable();
119
- const curr = asClassNode(state.current);
120
- const comparatorFn = curr.value && classSelectorsMap.get(curr.value);
121
- if (!comparatorFn) {
122
- if (state.loose) {
123
- return state;
124
- }
125
- throw error(`Unsupported class: ${state.current.value}`, {
126
- found: state.current,
127
- });
128
- }
129
- return comparatorFn(state);
130
- };
131
- //# sourceMappingURL=class.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"class.js","sourceRoot":"","sources":["../../src/class.ts"],"names":[],"mappings":"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","sourcesContent":["import { error } from '@vltpkg/error-cause'\nimport { asClassNode } from './types.ts'\nimport type { ParserFn, ParserState } from './types.ts'\n\nconst classSelectors: Record<string, ParserFn> = {\n prod: async (state: ParserState) => {\n for (const edge of state.partial.edges) {\n if (edge.type !== 'prod' || edge.from.dev) {\n state.partial.edges.delete(edge)\n }\n }\n for (const node of state.partial.nodes) {\n if (!node.edgesIn.size) {\n state.partial.nodes.delete(node)\n continue\n }\n const iterator = new Set(node.edgesIn)\n for (const edge of iterator) {\n if (!state.partial.edges.has(edge)) {\n iterator.delete(edge)\n }\n }\n if (!iterator.size) {\n state.partial.nodes.delete(node)\n }\n }\n return state\n },\n dev: async (state: ParserState) => {\n for (const edge of state.partial.edges) {\n if (edge.type !== 'dev' && !edge.from.dev) {\n state.partial.edges.delete(edge)\n }\n }\n for (const node of state.partial.nodes) {\n if (!node.edgesIn.size) {\n state.partial.nodes.delete(node)\n continue\n }\n const iterator = new Set(node.edgesIn)\n for (const edge of iterator) {\n if (!state.partial.edges.has(edge)) {\n iterator.delete(edge)\n }\n }\n if (!iterator.size) {\n state.partial.nodes.delete(node)\n }\n }\n return state\n },\n optional: async (state: ParserState) => {\n for (const edge of state.partial.edges) {\n if (edge.type !== 'optional' && !edge.from.optional) {\n state.partial.edges.delete(edge)\n }\n }\n for (const node of state.partial.nodes) {\n if (!node.edgesIn.size) {\n state.partial.nodes.delete(node)\n continue\n }\n const iterator = new Set(node.edgesIn)\n for (const edge of iterator) {\n if (!state.partial.edges.has(edge)) {\n iterator.delete(edge)\n }\n }\n if (!iterator.size) {\n state.partial.nodes.delete(node)\n }\n }\n return state\n },\n peer: async (state: ParserState) => {\n for (const edge of state.partial.edges) {\n if (edge.type !== 'peer') {\n state.partial.edges.delete(edge)\n }\n }\n for (const node of state.partial.nodes) {\n if (!node.edgesIn.size) {\n state.partial.nodes.delete(node)\n continue\n }\n for (const e of node.edgesIn) {\n if (!state.partial.edges.has(e)) {\n state.partial.nodes.delete(node)\n }\n }\n }\n return state\n },\n workspace: async (state: ParserState) => {\n for (const node of state.partial.nodes) {\n if (!node.importer || node.mainImporter) {\n state.partial.nodes.delete(node)\n }\n }\n for (const edge of state.partial.edges) {\n // workspaces can't be missing\n if (!edge.to) {\n state.partial.edges.delete(edge)\n // keep only edges that are linking to preivously kept nodes\n } else if (!state.partial.nodes.has(edge.to)) {\n state.partial.edges.delete(edge)\n }\n }\n return state\n },\n // TBD: all things bundled\n // bundled: () => false,\n}\n\nconst classSelectorsMap = new Map<string, ParserFn>(\n Object.entries(classSelectors),\n)\n\n/**\n * Parse classes, e.g: `.prod`, `.dev`, `.optional`, etc\n */\nexport const classFn = async (state: ParserState) => {\n await state.cancellable()\n\n const curr = asClassNode(state.current)\n const comparatorFn = curr.value && classSelectorsMap.get(curr.value)\n if (!comparatorFn) {\n if (state.loose) {\n return state\n }\n\n throw error(`Unsupported class: ${state.current.value}`, {\n found: state.current,\n })\n }\n return comparatorFn(state)\n}\n"]}