Untitled

                Never    
function solution () {
  return (() => {
    let ingredients = {};
    ingredients['protein'] = 0;
    ingredients['carbohydrate'] = 0;
    ingredients['fat'] = 0;
    ingredients['flavour'] = 0;

    function restock ([microelement, quantity]) {
      quantity = +quantity;
      ingredients[microelement] += quantity
      return 'Success';

    }

    function prepare ([recipe, quantity]) {
      quantity = +quantity;
      let msg = '';
      switch (recipe) {
        case 'apple':
          if (ingredients['flavour'] < quantity * 2) {
            msg = "Error: not enough flavour in stock";
          }
          if (ingredients['carbohydrate'] < quantity) {
            msg = "Error: not enough carbohydrate in stock";
          } else {
            ingredients['flavour'] -= quantity * 2;
            ingredients['carbohydrate'] -= quantity;
            msg = "Success";
          }
          return msg;
          break;
        case 'lemonade':
          if (ingredients['carbohydrate'] < quantity * 10) {
            msg = "Error: not enough carbohydrate in stock";
          }
          if (ingredients['flavour'] < quantity * 20) {
            msg = "Error: not enough flavour in stock";

          } else {
            ingredients['flavour'] -= quantity * 20;
            ingredients['carbohydrate'] -= quantity * 10;
            msg = "Success";
          }
          return msg;
          break;
        case 'burger':
          if (ingredients['carbohydrate'] < quantity * 5) {
            msg = "Error: not enough flavour in stock";
          }
          if (ingredients['fat'] < quantity * 7) {
            msg = "Error: not enough fat in stock";
          }
          if (ingredients['flavour'] < quantity * 3) {
            msg = "Error: not enough flavour in stock";
          } else {
            ingredients['flavour'] -= quantity * 3;
            ingredients['fat'] -= quantity * 7;
            ingredients['carbohydrate'] -= quantity * 5;
            msg = 'Success'
          }
          return msg;
          break;
        case 'eggs':
          if (ingredients['protein'] < quantity * 5) {
            msg = "Error: not enough protein in stock";
          }
          if (ingredients['fat'] < quantity) {
            msg = "Error: not enough fat in stock";
          }
          if (ingredients['flavour'] < quantity) {
            msg = "Error: not enough flavour in stock";
          } else {
            ingredients['flavour'] -= quantity;
            ingredients['fat'] -= quantity;
            ingredients['protein'] -= quantity * 5;
            msg = 'Success'
          }
          return msg;
          break;
        case 'turkey':
          if (ingredients['protein'] < quantity * 10) {
            msg = "Error: not enough protein in stock";
          }
          if (ingredients['carbohydrate'] < quantity * 10) {
            msg = "Error: not enough carbohydrate in stock";
          }
          if (ingredients['fat'] < quantity * 10) {
            msg = "Error: not enough fat in stock";
          }
          if (ingredients['flavour'] < quantity * 10) {
            msg = "Error: not enough flavour in stock";
          } else {
            ingredients['protein'] -= quantity * 10;
            ingredients['fat'] -= quantity * 10;
            ingredients['carbohydrate'] -= quantity * 10;
            ingredients['flavour'] -= quantity * 10;
            msg = 'Success';
          }
          return msg;
          break;
      }
    }
    function report () {
      return `protein=${ingredients['protein']} carbohydrate=${ingredients['carbohydrate']} fat=${ingredients['fat']} flavour=${ingredients['flavour']}`;
    }
    return function (command) {
      let tokens = command.split(' ');
      let action = tokens.shift();
      switch (action) {
        case "prepare":
          return prepare(tokens);
          break;
        case "restock":
          return restock(tokens);
          break;
        case "report":
          return report();
      }
    }
  })();
}

Raw Text