@@ -56,7 +56,7 @@ const handleCamelizeKeys = (obj) => {
5656const handleCreateNodeFromData = async ( item , nodeType , helpers , endpoint , reporter ) => {
5757 const { createNode, createNodeId, createContentDigest } = helpers ;
5858
59- if ( ! isEmpty ( nodeType ) ) {
59+ if ( ! isEmpty ( nodeType ) && ! isEmpty ( endpoint ) ) {
6060 const stringifiedItem = ! isEmpty ( item ) ? convertObjectToString ( item ) : "" ;
6161 const uuid = randomUUID ( ) ;
6262
@@ -257,15 +257,13 @@ exports.sourceNodes = async ({ actions: { createNode }, reporter, cache, createN
257257 // Create nodes from the data
258258 if ( ! isEmpty ( updatedData ) ) {
259259 if ( isArrayType ( updatedData ) ) {
260- updatedData ?. map ( async ( datum ) => {
261- await handleCreateNodeFromData ( datum , node . nodeName , helpers , datum ?. contentLink ?. url || site_url + node . endpoint , reporter ) ;
262-
263- return Promise . resolve ( datum ) ;
264- } ) ;
260+ await Promise . allSettled (
261+ updatedData ?. map ( async ( datum ) => {
262+ await handleCreateNodeFromData ( datum , node . nodeName , helpers , datum ?. contentLink ?. url || site_url + node . endpoint , reporter ) ;
263+ } )
264+ ) ;
265265 } else if ( isObjectType ( updatedData ) ) {
266266 await handleCreateNodeFromData ( updatedData , node . nodeName , helpers , updatedData ?. contentLink ?. url || site_url + node . endpoint , reporter ) ;
267-
268- return Promise . resolve ( updatedData ) ;
269267 } else {
270268 return Promise . resolve ( updatedData ) ;
271269 }
@@ -300,84 +298,91 @@ exports.sourceNodes = async ({ actions: { createNode }, reporter, cache, createN
300298 const auth = await optimizely . authenticate ( ) ;
301299
302300 if ( ! isEmpty ( auth ?. access_token ) ) {
301+ const promises = [ ] ;
302+
303303 // Send log message to reporter if authentication was successful
304304 reporter . info ( `[AUTH] ${ convertObjectToString ( auth ?. access_token ) } ` ) ;
305305
306- await Promise . allSettled (
307- endpoints . map ( async ( { nodeName = null , endpoint = null } ) => {
308- const url = site_url + endpoint || "" ;
309-
310- const results = await optimizely . get ( {
311- url,
312- headers : {
313- ...headers ,
314- "Authorization" : `Bearer ${ auth ?. access_token } ` ,
315- "Access-Control-Allow-Credentials" : ACCESS_CONTROL_ALLOW_CREDENTIALS
316- } ,
317- endpoint : nodeName
318- } ) ;
306+ // Convert above code using for loop
307+ for ( let i = 0 ; i < endpoints . length ; i ++ ) {
308+ const { nodeName = null , endpoint = null } = endpoints [ i ] ;
309+
310+ const url = site_url + endpoint || "" ;
311+
312+ // Resolve the promise
313+ promises . push (
314+ await optimizely
315+ . get ( {
316+ url,
317+ headers : {
318+ ...headers ,
319+ "Authorization" : `Bearer ${ auth ?. access_token } ` ,
320+ "Access-Control-Allow-Credentials" : ACCESS_CONTROL_ALLOW_CREDENTIALS
321+ } ,
322+ endpoint : nodeName
323+ } )
324+ . then ( ( res ) => {
325+ // Resolve the promise
326+ return {
327+ nodeName,
328+ data : res || null ,
329+ endpoint
330+ } ;
331+ } )
332+ ) ;
333+ }
319334
320- // Resolve the promise
321- return {
322- nodeName,
323- data : results || null ,
324- endpoint
325- } ;
326- } )
327- )
335+ await Promise . allSettled ( promises )
328336 . then ( async ( res ) => {
329337 // Store the data in the cache
330338 if ( ! isEmpty ( res ) ) {
331339 sourceData = res ;
332- }
333340
334- // Create nodes from the cached data
335- sourceData
336- ?. filter ( ( item ) => item ?. status === "fulfilled" )
337- ?. map ( async ( item ) => {
338- if ( isArrayType ( item . value . data ) ) {
339- if ( item . value . nodeName === "OptimizelyStoreContent" || item . value . nodeName === "OptimizelyHotelContent" ) {
340- item . value . data ?. Locations ?. map ( async ( datum ) => {
341- const data = {
342- nodeName : item . value . nodeName ,
343- data : datum ,
344- endpoint : item . value . endpoint
345- } ;
346-
347- await handleNodeCreation ( data , reporter , helpers ) ;
348- } ) ;
341+ // Create nodes from the cached data
342+ sourceData
343+ ?. filter ( ( item ) => item ?. status === "fulfilled" )
344+ ?. map ( async ( item ) => {
345+ if ( isArrayType ( item . value . data ) ) {
346+ if ( item . value . nodeName === "OptimizelyStoreContent" || item . value . nodeName === "OptimizelyHotelContent" ) {
347+ item . value . data ?. Locations ?. map ( async ( datum ) => {
348+ const data = {
349+ nodeName : item . value . nodeName ,
350+ data : datum ,
351+ endpoint : item . value . endpoint
352+ } ;
353+
354+ await handleNodeCreation ( data , reporter , helpers ) ;
355+ } ) ;
356+ } else {
357+ item . value . data ?. map ( async ( datum ) => {
358+ const data = {
359+ nodeName : item . value . nodeName ,
360+ data : datum ,
361+ endpoint : item . value . endpoint
362+ } ;
363+
364+ await handleNodeCreation ( data , reporter , helpers ) ;
365+ } ) ;
366+ }
349367 } else {
350- item . value . data ?. map ( async ( datum ) => {
351- const data = {
352- nodeName : item . value . nodeName ,
353- data : datum ,
354- endpoint : item . value . endpoint
355- } ;
356-
357- await handleNodeCreation ( data , reporter , helpers ) ;
358- } ) ;
368+ const data = {
369+ nodeName : item . value . nodeName ,
370+ data : item . value ?. data || null ,
371+ endpoint : item . value . endpoint
372+ } ;
373+
374+ await handleNodeCreation ( data , reporter , helpers ) ;
359375 }
360- } else {
361- const data = {
362- nodeName : item . value . nodeName ,
363- data : item ?. value ?. data || null ,
364- endpoint : item . value . endpoint
365- } ;
366-
367- await handleNodeCreation ( data , reporter , helpers ) ;
368- }
369- } ) ;
370-
371- // Cache the data when the data is available and the environment is development
372- if ( ! isEmpty ( sourceData ) || IS_DEV ) {
373- await cache
374- . set ( CACHE_KEY , sourceData )
375- . then ( ( ) => reporter . info ( `[CACHE] Cached ${ sourceData . length } items successfully.` ) )
376- . catch ( ( err ) => reporter . error ( `[ERROR] ${ err ?. message || convertObjectToString ( err ) || "There was an error while caching the data. Please try again later." } ` ) ) ;
377- }
376+ } ) ;
378377
379- // Resolve the promise
380- return sourceData ;
378+ // Cache the data when the data is available and the environment is development
379+ if ( ! isEmpty ( sourceData ) && IS_DEV ) {
380+ await cache
381+ . set ( CACHE_KEY , sourceData )
382+ . then ( ( ) => reporter . info ( `[CACHE] Cached ${ sourceData . length } items successfully.` ) )
383+ . catch ( ( err ) => reporter . error ( `[ERROR] ${ err ?. message || convertObjectToString ( err ) || "There was an error while caching the data. Please try again later." } ` ) ) ;
384+ }
385+ }
381386 } )
382387 . catch ( ( err ) => {
383388 this . reporter . error ( `[ERROR] ${ err ?. message || convertObjectToString ( err ) || "There was an error while fetching and expanding the endpoints. Please try again later." } ` ) ;
0 commit comments