1.0.1 • Published 6 months ago

nutri-calc v1.0.1

Weekly downloads
-
License
Apache-2.0
Repository
-
Last release
6 months ago

Health Star Rating Calculator

A TypeScript library for calculating Health Star Ratings according to the Australian and New Zealand food labelling system. This calculator helps determine the nutritional rating of food products on a scale from 0.5 to 5 stars.

Installation

npm install nutri-calc

Usage

import { 
  Category, 
  Attributes, 
  calculateHealthStarRating 
} from 'nutri-calc';

// Calculate rating for a dairy beverage
const rating = calculateHealthStarRating(
  Category.DairyBeverages,
  {
    energykJ: 300,
    saturatedFatGrams: 1.5,
    totalSugarsGrams: 4,
    sodiumMilligrams: 80,
    percentageFruitVegetableNutLegume: 0,
    fibreGrams: 0,
    proteinGrams: 3.2,
    attributes: [Attributes.ContainsFruitOrVegetable]
  }
);

console.log(`Health Star Rating: ${rating}`); // e.g., 4.5

Features

  • Supports all major food categories defined in the Health Star Rating system
  • Handles special cases like plain water and unsweetened flavoured water
  • Calculates baseline points considering energy, saturated fat, total sugars, and sodium
  • Accounts for protein, fiber, and fruit/vegetable/nut/legume content
  • Written in TypeScript with full type safety
  • Thoroughly tested with Jest

API

Categories

Foods are classified into one of the following categories:

enum Category {
  DairyBeverages = 0,
  DairyFoods = 1,
  FatsOilsAndSpreads = 2,
  Cheese = 3,
  PlainWater = 4,
  UnsweetenedFlavouredWater = 5,
  UnprocessedFruitAndVegetables = 6,
  NonDairyBeverages = 7,
  Jellies = 8,
  WaterBasedIcedConfection = 9,
  OtherFoods = 100
}

Attributes

Products can have the following attributes:

enum Attributes {
  ContainsFruitOrVegetable = 0,
  ContainsNutsOrLegumes = 1
}

Main Function

function calculateHealthStarRating(
  category: Category,
  nutritionalInfo: Partial<NutritionalInformation>
): HealthStarRating

The NutritionalInformation interface accepts:

  • energykJ: number
  • saturatedFatGrams: number
  • totalSugarsGrams: number
  • sodiumMilligrams: number
  • percentageFruitVegetableNutLegume: number
  • fibreGrams: number
  • proteinGrams: number
  • attributes: Attributes[]

Returns a HealthStarRating type which is one of: 0.5 | 1 | 1.5 | 2 | 2.5 | 3 | 3.5 | 4 | 4.5 | 5 | null

Development

# Install dependencies
npm install

# Run tests
npm test

# Run tests with coverage
npm test -- --coverage

# Build
npm run build

License

Apache-2.0

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.