| 
									
										
										
										
											2018-03-26 13:01:24 +01:00
										 |  |  | const crypto = require('crypto'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-16 18:22:52 +00:00
										 |  |  | function createChallengeNode(challenge, reporter) { | 
					
						
							| 
									
										
										
										
											2018-04-06 14:51:52 +01:00
										 |  |  |   if (typeof challenge.description[0] !== 'string') { | 
					
						
							| 
									
										
										
										
											2018-04-16 12:04:25 +01:00
										 |  |  |     reporter.warn(`
 | 
					
						
							| 
									
										
										
										
											2018-03-26 13:01:24 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-06 14:51:52 +01:00
										 |  |  |     ${challenge.title} has a description that will break things! | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     `);
 | 
					
						
							| 
									
										
										
										
											2018-03-26 13:01:24 +01:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-04-06 14:51:52 +01:00
										 |  |  |   const contentDigest = crypto | 
					
						
							|  |  |  |     .createHash('md5') | 
					
						
							|  |  |  |     .update(JSON.stringify(challenge)) | 
					
						
							|  |  |  |     .digest('hex'); | 
					
						
							|  |  |  |   const internal = { | 
					
						
							|  |  |  |     contentDigest, | 
					
						
							|  |  |  |     type: 'ChallengeNode' | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* eslint-disable prefer-object-spread/prefer-object-spread */ | 
					
						
							|  |  |  |   return JSON.parse( | 
					
						
							|  |  |  |     JSON.stringify( | 
					
						
							|  |  |  |       Object.assign( | 
					
						
							|  |  |  |         {}, | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |           id: challenge.id + ' >>>> ChallengeNode', | 
					
						
							|  |  |  |           children: [], | 
					
						
							|  |  |  |           parent: null, | 
					
						
							|  |  |  |           internal, | 
					
						
							|  |  |  |           sourceInstanceName: 'challenge' | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         challenge | 
					
						
							|  |  |  |       ) | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |   ); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2018-03-26 13:01:24 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-16 18:22:52 +00:00
										 |  |  | exports.createChallengeNode = createChallengeNode; |