UNPKG

nutriscore-2022

Version:
322 lines (321 loc) 11 kB
"use strict"; /* All value is in g or mg for 100g of product ------------------------------------------------------------ Energy is multiplied by 4.184 to convert it from kcal to kJ if the value is on KJ remove the multiplication ------------------------------------------------------------ Fibers is in g Proteins is in g saturatedFats is in g Sodium is in mg Sugar is in g fruitsPercentage is in % */ Object.defineProperty(exports, "__esModule", { value: true }); var Nutriscore = /** @class */ (function () { function Nutriscore() { } return Nutriscore; }()); function calculeNutriscore(nutriments) { var energy = nutriments.energy * 4.184; var fibers = nutriments.fibers; var proteins = nutriments.proteins; var saturatedFats = nutriments.saturatedFats; var sodium = nutriments.sodium; var sugar = nutriments.sugar; var fruitsPercentage = nutriments.fruitsPercentage; function energyScore(energy) { var energyScore = 0; switch (true) { case energy <= 335: energyScore = 0; break; case energy > 335 && energy <= 670: energyScore = 1; break; case energy > 670 && energy <= 1005: energyScore = 2; break; case energy > 1005 && energy <= 1340: energyScore = 3; break; case energy > 1340 && energy <= 1675: energyScore = 4; break; case energy > 1675 && energy <= 2010: energyScore = 5; break; case energy > 2010 && energy <= 2345: energyScore = 6; break; case energy > 2345 && energy <= 2680: energyScore = 7; break; case energy > 2680 && energy <= 3015: energyScore = 8; break; case energy > 3015 && energy <= 3350: energyScore = 9; break; case energy > 3350: energyScore = 10; break; default: break; } return energyScore; } function sugarScore(sugar) { var sugarScore = 0; switch (true) { case sugar <= 4.5: sugarScore = 0; break; case sugar > 4.5 && sugar <= 9: sugarScore = 1; break; case sugar > 9 && sugar <= 13.5: sugarScore = 2; break; case sugar > 13.5 && sugar <= 18: sugarScore = 3; break; case sugar > 18 && sugar <= 22.5: sugarScore = 4; break; case sugar > 22.5 && sugar <= 27: sugarScore = 5; break; case sugar > 27 && sugar <= 31.5: sugarScore = 6; break; case sugar > 31.5 && sugar <= 36: sugarScore = 7; break; case sugar > 36 && sugar <= 40.5: sugarScore = 8; break; case sugar > 40.5 && sugar <= 45: sugarScore = 9; break; case sugar > 45: sugarScore = 10; break; default: break; } return sugarScore; } function saturatedFatsScore(saturatedFats) { var saturatedFatsScore = 0; switch (true) { case saturatedFats <= 1: saturatedFatsScore = 0; break; case saturatedFats > 1 && saturatedFats < 2: saturatedFatsScore = 1; break; case saturatedFats >= 2 && saturatedFats < 3: saturatedFatsScore = 2; break; case saturatedFats >= 3 && saturatedFats < 4: saturatedFatsScore = 3; break; case saturatedFats >= 4 && saturatedFats < 5: saturatedFatsScore = 4; break; case saturatedFats >= 5 && saturatedFats < 6: saturatedFatsScore = 5; break; case saturatedFats >= 6 && saturatedFats < 7: saturatedFatsScore = 6; break; case saturatedFats >= 7 && saturatedFats < 8: saturatedFatsScore = 7; break; case saturatedFats >= 8 && saturatedFats < 9: saturatedFatsScore = 8; break; case saturatedFats >= 9 && saturatedFats < 10: saturatedFatsScore = 9; break; case saturatedFats >= 10: saturatedFatsScore = 10; break; default: break; } return saturatedFatsScore; } function sodiumScore(sodium) { var sodiumScore = 0; switch (true) { case sodium <= 90: sodiumScore = 0; break; case sodium > 90 && sodium <= 180: sodiumScore = 1; break; case sodium > 180 && sodium <= 270: sodiumScore = 2; break; case sodium > 270 && sodium <= 360: sodiumScore = 3; break; case sodium > 360 && sodium <= 450: sodiumScore = 4; break; case sodium > 450 && sodium <= 540: sodiumScore = 5; break; case sodium > 540 && sodium <= 630: sodiumScore = 6; break; case sodium > 630 && sodium <= 720: sodiumScore = 7; break; case sodium > 720 && sodium <= 810: sodiumScore = 8; break; case sodium > 810 && sodium <= 900: sodiumScore = 9; break; case sodium > 900: sodiumScore = 10; break; default: break; } return sodiumScore; } function fibersScore(proteins) { var fibersScore = 0; switch (true) { case fibers <= 0.7: fibersScore = 0; break; case fibers > 0.7 && fibers <= 1.4: fibersScore = 1; break; case fibers > 1.4 && fibers <= 2.1: fibersScore = 2; break; case fibers > 2.1 && fibers <= 2.8: fibersScore = 3; break; case fibers > 2.8 && fibers <= 3.5: fibersScore = 4; break; case fibers > 3.5: fibersScore = 5; break; default: break; } return fibersScore; } function proteinsScore(fruitsPercentage) { var proteinsScore = 0; switch (true) { case proteins <= 1.6: proteinsScore = 0; break; case proteins > 1.6 && proteins <= 3.2: proteinsScore = 1; break; case proteins > 3.2 && proteins <= 4.8: proteinsScore = 2; break; case proteins > 4.8 && proteins <= 6.4: proteinsScore = 3; break; case proteins > 6.4 && proteins <= 8: proteinsScore = 4; break; case proteins > 8: proteinsScore = 5; break; default: break; } return proteinsScore; } function fruitsPercentageScore(fruitsPercentage) { var fruitsPercentageScore = 0; switch (true) { case fruitsPercentage <= 40: fruitsPercentageScore = 0; break; case fruitsPercentage > 40 && fruitsPercentage <= 60: fruitsPercentageScore = 1; break; case fruitsPercentage > 60 && fruitsPercentage <= 80: fruitsPercentageScore = 2; break; case fruitsPercentage > 80: fruitsPercentageScore = 5; break; default: break; } return fruitsPercentageScore; } function calculateNScore() { var nScore = 0; nScore = energyScore(energy) + sugarScore(sugar) + saturatedFatsScore(saturatedFats) + sodiumScore(sodium); return nScore; } function calculatePScore() { var pScore = 0; pScore = fibersScore(fibers) + proteinsScore(proteins) + fruitsPercentageScore(fruitsPercentage); return pScore; } function calculateScore() { var nScore = calculateNScore(); var pScore = calculatePScore(); var fruitsScore = fruitsPercentageScore(fruitsPercentage); if (nScore >= 11 && fruitsScore === 5) { return nScore - pScore; } if (nScore >= 11 && fruitsScore < 5) { return nScore - (pScore + fruitsScore); } if (nScore < 11) { return nScore - pScore; } } function calculateGrade() { var score = calculateScore(); var nutriscore = ''; var logoNutriscore = ''; switch (true) { case score < -1: nutriscore = 'A'; logoNutriscore = 'https://static.openfoodfacts.org/images/misc/nutriscore-a.svg'; break; case score >= -1 && score <= 2: nutriscore = 'B'; logoNutriscore = 'https://static.openfoodfacts.org/images/misc/nutriscore-b.svg'; break; case score >= 3 && score <= 10: nutriscore = 'C'; logoNutriscore = 'https://static.openfoodfacts.org/images/misc/nutriscore-c.svg'; break; case score >= 11 && score <= 18: nutriscore = 'D'; logoNutriscore = 'https://static.openfoodfacts.org/images/misc/nutriscore-d.svg'; break; case score >= 19: nutriscore = 'E'; logoNutriscore = 'https://static.openfoodfacts.org/images/misc/nutriscore-e.svg'; break; default: break; } return { nutriscore: nutriscore, logoNutriscore: logoNutriscore }; } return calculateGrade(); } exports.default = calculeNutriscore;