@@ -14,20 +14,32 @@ const optimade = new Optimade({
1414 providersUrl : 'https://providers.optimade.org/providers.json'
1515} ) ;
1616
17- optimade . getProviders ( ) . then ( async ( ) => {
17+ let time = performance . now ( ) ,
18+ alltime = performance . now ( ) ,
19+ skip = process . env . SKIP ;
20+ // || 'oqmd, jarvis';
21+
22+ optimade . getProviders ( ) . then ( async ( providers ) => {
23+
24+ console . warn ( 'providers fetched from source' , performance . now ( ) - time ) ;
25+ time = performance . now ( ) ;
1826
1927 const filteredApis = Object . entries ( optimade . apis ) . filter ( ( [ k , v ] ) => v . length ) ;
2028 const apis = filteredApis . sort ( ) . reduce ( ( acc , [ k , v ] ) => {
2129 return { ...acc , ...{ [ k ] : v } } ;
2230 } , { } ) ;
2331
24- const source = Object . keys ( optimade . providers ) . sort ( ) . reduce (
32+ const source = Object . keys ( providers ) . sort ( ) . reduce (
2533 ( obj , key ) => {
26- obj [ key ] = optimade . providers [ key ] ;
34+ obj [ key ] = providers [ key ] ;
2735 return obj ;
2836 } , { } ) ;
2937
30- async function getQueryLimits ( providers , max = 1000 ) {
38+ console . warn ( 'providers sorted' , performance . now ( ) - time ) ;
39+
40+ async function getQueryLimits ( providers , skip = '' , max = 1000 ) {
41+
42+ providers = Object . fromEntries ( Object . entries ( providers ) . filter ( ( [ key ] ) => ! skip . includes ( key ) ) ) ;
3143
3244 const fetchLimits = async ( k , v ) => {
3345 const formula = `chemical_formula_anonymous="A2B"` ;
@@ -51,21 +63,26 @@ optimade.getProviders().then(async () => {
5163 console . log ( error ) ;
5264 }
5365 } ;
54-
55- providers = await Object . entries ( providers ) . reduce ( async ( promise , [ k , v ] ) => {
66+ time = performance . now ( ) ;
67+ return await Object . entries ( providers ) . reduce ( async ( promise , [ k , v ] , i ) => {
5668 const provider = await fetchLimits ( k , v ) ;
5769 const acc = await promise ;
70+ console . log ( i , provider ) ;
5871 return { ...acc , ...provider } ;
5972 } , Promise . resolve ( { } ) ) ;
60-
61- const log = { prefetched : Object . keys ( providers ) . length , source : Object . keys ( source ) . length } ;
62- console . log ( log ) ;
63-
64- return providers ;
6573 }
6674
67- getQueryLimits ( source ) . then ( providers => {
75+ getQueryLimits ( source , skip ) . then ( providers => {
6876 const data = { providers, apis } ;
77+
78+ console . warn ( 'limits fetched' , performance . now ( ) - time ) ;
79+
80+ console . log ( {
81+ prefetched : Object . keys ( providers ) . length ,
82+ source : Object . keys ( source ) . length ,
83+ alltime : performance . now ( ) - alltime
84+ } ) ;
85+
6986 fs . writeFile ( path . join ( __dirname , 'dist/prefetched.json' ) , JSON . stringify ( data ) , ( err ) => {
7087 if ( err ) throw err ;
7188 console . log ( 'The prefetched.json file has been saved!' ) ;
0 commit comments