| 1234567891011121314151617181920212223242526272829303132333435363738 | 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};
 |