@@ -6,14 +6,16 @@ const universalModuleTree = require('universal-module-tree')
66
77const analyze = async ( {
88 dir,
9+ tree,
910 token,
1011 pageSize : pageSize = 50 ,
1112 concurrency : concurrency = 5 ,
1213 onPkgs : onPkgs = ( ) => { } ,
1314 filter : filter = ( ) => true ,
1415 url
1516} ) => {
16- const pkgs = filterPkgs ( await readUniversalTree ( dir ) , filter )
17+ if ( ! tree ) tree = await readUniversalTree ( dir )
18+ const pkgs = filterPkgs ( tree , filter )
1719 onPkgs ( pkgs )
1820 let data = new Set ( )
1921 const pages = splitSet ( pkgs , pageSize )
@@ -49,46 +51,33 @@ const readUniversalTree = async dir => {
4951}
5052
5153const fetchData = async ( { pkgs, token, url } ) => {
52- const query = `{
53- ${ [ ... pkgs ] . map ( ( pkg , i ) => `
54- pkg ${ i } : package(name: " ${ pkg . name } " ) {
54+ const query = `
55+ query getPackageVersions($packageVersions: [PackageVersionInput!]!) {
56+ packageVersions(packageVersions: $packageVersions ) {
5557 name
58+ version
5659 published
57- versions(version: "${ pkg . version } ") {
58- version
59- score
60- publishedAt
61- results {
62- severity
63- pass
64- name
65- test
66- value
67- }
68- vulnerabilities {
69- id,
70- title,
71- semver {
72- vulnerable
73- },
74- severity
75- }
60+ publishedAt
61+ scores {
62+ group
63+ name
64+ pass
65+ severity
66+ title
67+ data
7668 }
7769 }
78- ` ) . join ( '\n' ) }
79- }`
80- const res = await graphql ( { token, url } , query )
70+ }
71+ `
72+
73+ const variables = {
74+ packageVersions : [ ...pkgs ] . map ( ( { name, version } ) => ( { name, version } ) )
75+ }
76+
77+ const res = await graphql ( { token, url } , query , variables )
8178 const data = new Set ( )
82- const values = Object . values ( res )
83- for ( let i = 0 ; i < values . length ; i ++ ) {
84- const pkg = values [ i ]
85- const datum = pkg . versions [ 0 ]
86- datum . name = pkg . name
87- datum . published = pkg . published
79+ for ( const [ i , datum ] of Object . entries ( res . packageVersions ) ) {
8880 datum . paths = [ ...pkgs ] [ i ] . paths
89- for ( const result of datum . results ) {
90- result . value = JSON . parse ( result . value )
91- }
9281 data . add ( datum )
9382 }
9483 return data
0 commit comments