62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import emptyProtector from './empty-protector';
 | 
						|
 | 
						|
export function checkMapData({
 | 
						|
  entities: { challenge, block, superBlock },
 | 
						|
  result: { superBlocks }
 | 
						|
}) {
 | 
						|
  if (
 | 
						|
    !challenge ||
 | 
						|
    !block ||
 | 
						|
    !superBlock ||
 | 
						|
    !superBlocks ||
 | 
						|
    !superBlocks.length
 | 
						|
  ) {
 | 
						|
    throw new Error('entities not found, db may not be properly seeded');
 | 
						|
  }
 | 
						|
}
 | 
						|
// getFirstChallenge(
 | 
						|
//   map: {
 | 
						|
//     entities: { challenge: Object, block: Object, superBlock: Object },
 | 
						|
//     result: [...superBlockDashedName: String]
 | 
						|
//   }
 | 
						|
// ) => Challenge|Void
 | 
						|
export function getFirstChallenge({
 | 
						|
  entities: { superBlock, block, challenge },
 | 
						|
  result: { superBlocks }
 | 
						|
}) {
 | 
						|
  return challenge[
 | 
						|
    emptyProtector(block[emptyProtector(superBlock[superBlocks[0]]).blocks[0]])
 | 
						|
      .challenges[0]
 | 
						|
  ];
 | 
						|
}
 | 
						|
 | 
						|
// let challengeDashedName: String;
 | 
						|
// createNameIdMap({
 | 
						|
//  challenge: {
 | 
						|
//    [...challengeDashedName ]: Challenge
 | 
						|
// }) => {
 | 
						|
//   challengeIdToName: {
 | 
						|
//     [ ...challengeId ]: challengeDashedName
 | 
						|
//   }
 | 
						|
//  };
 | 
						|
export function createNameIdMap({ challenge }) {
 | 
						|
  return {
 | 
						|
    challengeIdToName: Object.keys(challenge).reduce((map, challengeName) => {
 | 
						|
      map[challenge[challengeName].id] = challenge[challengeName].dashedName;
 | 
						|
      return map;
 | 
						|
    }, {})
 | 
						|
  };
 | 
						|
}
 | 
						|
// addNameIdMap(
 | 
						|
//  map: { entities; Object, ...rest }
 | 
						|
// ) => { ...rest, entities: Object };
 | 
						|
export function addNameIdMap({ entities, ...rest }) {
 | 
						|
  return {
 | 
						|
    ...rest,
 | 
						|
    entities: {
 | 
						|
      ...entities,
 | 
						|
      ...createNameIdMap(entities)
 | 
						|
    }
 | 
						|
  };
 | 
						|
}
 |