nutriscore-2025
v2.0.1
Published
Calculateur TypeScript pour le Nutri-Score 2025 avec support des catégories spéciales (viandes rouges, boissons, matières grasses, fromages)
Maintainers
Readme
Calculateur Nutri-Score 2025
Calculateur TypeScript pour le Nutri-Score 2025, le logo nutritionnel français.
🚀 Installation
Le package est disponible sur NPM
npm install nutriscore-2025📦 Utilisation
Import ES6
import calculeNutriscore, { ProductCategory, Nutriscore } from 'nutriscore-2025';Require CommonJS
const nutriscore = require('nutriscore-2025');🍎 Exemples d'utilisation
Produit général
const nutriments: Nutriscore = {
energy: 100, // en kcal/100g
fibers: 8, // en g/100g
proteins: 15, // en g/100g
saturatedFats: 0.5, // en g/100g
sodium: 50, // en mg/100g
sugar: 2, // en g/100g
fruitsPercentage: 80, // en % (0-100)
};
const result = calculeNutriscore(nutriments);
console.log(result);
// { nutriscore: "A", logoNutriscore: "https://static.openfoodfacts.org/images/attributes/dist/nutriscore-a-new-en.svg" }Viande rouge
const viandeRouge: Nutriscore = {
energy: 200,
fibers: 0,
proteins: 25,
saturatedFats: 5,
sodium: 300,
sugar: 0,
fruitsPercentage: 0,
category: ProductCategory.GENERAL,
isRedMeat: true,
ferHeminique: 0.5, // en mg/100g
};
const result = calculeNutriscore(viandeRouge);Boisson avec édulcorants
const boisson: Nutriscore = {
energy: 20,
fibers: 0,
proteins: 0,
saturatedFats: 0,
sodium: 50,
sugar: 2,
fruitsPercentage: 0,
category: ProductCategory.BEVERAGES,
containsEdulcorants: true,
};
const result = calculeNutriscore(boisson);Eau
const eau: Nutriscore = {
energy: 0,
fibers: 0,
proteins: 0,
saturatedFats: 0,
sodium: 0,
sugar: 0,
fruitsPercentage: 0,
category: ProductCategory.BEVERAGES,
isWater: true,
};
const result = calculeNutriscore(eau); // Toujours "A"Matières grasses
const huile: Nutriscore = {
energy: 100,
fibers: 2,
proteins: 5,
saturatedFats: 8,
sodium: 200,
sugar: 1,
fruitsPercentage: 10,
category: ProductCategory.FATS,
totalFats: 20, // requis pour calculer le ratio acides gras saturés/total
};
const result = calculeNutriscore(huile);📊 Catégories de produits
L'algorithme supporte 4 catégories avec des règles spécifiques :
- GENERAL : Produits alimentaires généraux
- FATS : Matières grasses (huiles, beurres, etc.)
- CHEESE : Fromages
- BEVERAGES : Boissons
🔧 Fonctionnalités
✅ Validation des données
- Vérification des valeurs négatives
- Normalisation automatique des valeurs
- Gestion des cas limites
🥩 Règles spéciales
- Viandes rouges : Limitation du score protéines si fer héminique < 1 mg/100g
- Édulcorants : +4 points pour les boissons contenant des édulcorants
- Eau : Score A automatique
📈 Calculs optimisés
- Conversion automatique kcal → kJ (× 4.184)
- Calcul du ratio acides gras saturés/total pour les matières grasses
- Seuils de classification adaptés par catégorie
📋 Format des données
| Champ | Type | Unité | Description |
| --------------------- | ---------------- | --------- | ----------------------------------------------- |
| energy | number | kcal/100g | Énergie (convertie automatiquement en kJ) |
| fibers | number | g/100g | Fibres alimentaires |
| proteins | number | g/100g | Protéines |
| saturatedFats | number | g/100g | Acides gras saturés |
| sodium | number | mg/100g | Sodium |
| sugar | number | g/100g | Sucres |
| fruitsPercentage | number | % | Fruits, légumes, légumineuses et fruits à coque |
| totalFats | number? | g/100g | Matières grasses totales (requis pour FATS) |
| category | ProductCategory? | - | Catégorie du produit |
| isRedMeat | boolean? | - | Viande rouge |
| ferHeminique | number? | mg/100g | Fer héminique (pour viandes rouges) |
| containsEdulcorants | boolean? | - | Contient des édulcorants |
| isWater | boolean? | - | Eau |
🧪 Tests
npm test📚 Sources
🤝 Contribution
Les contributions sont les bienvenues ! N'hésitez pas à :
- Signaler des bugs
- Proposer des améliorations
- Ajouter des tests
- Mettre à jour la documentation
📄 Licence
MIT
