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.
 
 
 

30 line
578 B

  1. module.exports = ({ inventory: { items } }, { needItems }) => {
  2. if (!needItems)
  3. return null;
  4. const result = needItems.map(n => {
  5. const { info, withProps = [], withoutProps = [], checks = [] } = n;
  6. const allowedItemIds = items
  7. .filter(item => {
  8. const isValidItem = (
  9. withProps.every(p => item.isDefined(p)) &&
  10. withoutProps.every(p => !item.isDefined(p)) &&
  11. checks.every(c => c(item))
  12. );
  13. return isValidItem;
  14. })
  15. .map(item => item.id);
  16. const needItem = {
  17. info,
  18. allowedItemIds
  19. };
  20. return needItem;
  21. });
  22. return result;
  23. };