You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							38 lines
						
					
					
						
							801 B
						
					
					
				
			
		
		
	
	
							38 lines
						
					
					
						
							801 B
						
					
					
				function iterateProps(obj, iterator) { | 
						|
  Object.keys(obj).forEach(key => iterator({ ...obj[key], name: key })); | 
						|
} | 
						|
 | 
						|
function mapProps(obj) { | 
						|
  return Object.keys(obj).map(key => ({ ...obj[key], name: key })); | 
						|
} | 
						|
 | 
						|
function filterProps(obj, filter) { | 
						|
  const ret = {}; | 
						|
  Object.keys(obj).forEach(key => { | 
						|
    if (filter(obj[key])) { | 
						|
      ret[key] = obj[key]; | 
						|
    } | 
						|
  }); | 
						|
  return ret; | 
						|
} | 
						|
 | 
						|
function typeSignature(meta) { | 
						|
  const type = meta.array ? `Array<${meta.type}>` : meta.type; | 
						|
  if (meta.optional) { | 
						|
    return `${meta.name}?: ${type}`; | 
						|
  } else if (meta.maybe) { | 
						|
    return `${meta.name}: ?${type}`; | 
						|
  } else { | 
						|
    return `${meta.name}: ${type}`; | 
						|
  } | 
						|
} | 
						|
 | 
						|
const unique = items => Array.from(new Set(items)); | 
						|
 | 
						|
module.exports = { | 
						|
  iterateProps, | 
						|
  mapProps, | 
						|
  filterProps, | 
						|
  typeSignature, | 
						|
  unique | 
						|
};
 | 
						|
 |