npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@presspage/fitnessjs

v1.3.0

Published

Common fitness calculation functions and extras

Downloads

4

Readme

fitness-js

A NodeJS module for common fitness calculation functions provided to you by PressPage Entertainment Inc DBA Fitness Brands (https://fitnessbrands.us).

Installation

To install,

npm i @presspage/fitnessjs

Getting Starting

To use in a standard NodeJS file, first import the module,

const {body_fat, tdee, healthy_weight, find_body_frame, bmi, get_daily_targets, macros, caloriesBurnt, fitCalc} = require('@presspage/fitnessjs);

then invoke the desired function passing the correct parameters,

body_fat,
tdee,
healthy_weight,
find_body_frame,
bmi,
get_daily_targets,
macros,
caloriesBurnt,
fitCalc

To use in Electron within the Electron browser window, create a preload.js file that is loaded by the Electron browser window,

mainWindow = new BrowserWindow({
    width: 1072,
    height: 910,
    webPreferences: {
        nodeIntegration: false,
        contextIsolation: true, // protect against prototype pollution
        enableRemoteModule: false, // turn off remote
        preload: path.join(__dirname, 'preload.js')
    }
})

then inside the preload.js, add then import the module and add the functions,

const {contextBridge} = require("electron");

const {body_fat, tdee, healthy_weight, find_body_frame, bmi, get_daily_targets, macros, caloriesBurnt, fitCalc} = require('@presspage/fitnessjs);

contextBridge.exposeInMainWorld(
    "fitness", {
        body_fat: body_fat, 
        tdee: tdee, 
        healthy_weight: healthy_weight, 
        find_body_frame: find_body_frame, 
        bmi: bmi, 
        get_daily_targets: get_daily_targets,
        macros: macros,
        caloriesBurnt: caloriesBurnt,
        fitCalc, fitCalc
    }
);

then invoke the function from with the Electron browser window javascript context,

var body_fat = window.fitness.body_fat("male", 210, 10);

Fitness Functions

body_fat

Calculates the body fat based on weight, wrist, waist, hip and forearm measurements.

body_fat(sex, weight, wrist, waist=0, hip=0, forearm=0)

Body Fat Formula For Women

Factor 1: (Total body weight x 0.732) + 8.987
Factor 2: Wrist measurement (at fullest point) / 3.140
Factor 3: Waist measurement (at naval) x 0.157
Factor 4: Hip measurement (at fullest point) x 0.249
Factor 5: Forearm measurement (at fullest point) x 0.434

Lean Body Mass

Factor 1 + Factor 2 - Factor 3 - Factor 4 + Factor 5

Body Fat Weight

Total bodyweight - Lean Body Mass

Body Fat Percentage

Body Fat Weight x 100) / total bodyweight

Body Fat Formula For Men

Factor 1: (Total body weight x 1.082) + 94.42
Factor 2: Waist measurement x 4.15

Lean Body Mass

Factor 1 - Factor 2

Body Fat Weight

Total bodyweight - Lean Body Mass

Body Fat Percentage

(Body Fat Weight x 100) / total bodyweight

tdee

tdee(metric, sex, activity_level, weight, height, age)

where activity_level is,

1.2   for "Sendentary: Little or No Exercise, Desk Job"
1.375 for "Lightly Active: Light exercise, Sports 1-3 days/week"
1.55  for "Moderate Active: Moderate exercise, Sports 3-5 days/week"
1.725 for "Very Active: Heavy Exercise, Sports 6-7 days/week"
1.9   for "Extremely Active: Exercise, Sports several times per day"

healthy_weight

healthy_weight(metric, sex, height, frame)

Calculating Ideal Body Weight

Your ideal body weight, or IBW, depends on both your gender and height.

For men, ideal body weight is calculated by using 106 pounds for the first 5 feet of height and adding 6 additional pounds for each inch.

Women should weigh a bit less, so the ideal body weight calculation starts with 100 pounds for the first 5 feet of height, and you only add 5 pounds for each additional inch.

If you're under 5 feet tall, subtract 2 pounds for each inch under 5 feet.

Using the equation, a 5-foot, 4-inch tall woman would have an ideal weight of 120 pounds: IBW = 100 + (4 x 5) = 120.

A man who is 6 feet tall has an IBW of 178 pounds: IBW = 106 + (12 x 6) = 178.

Effect of Frame Size on Ideal Weight

Your body frame size helps determine your IBW, too. The equation calculates the IBW for someone with a medium frame. You can subtract 10 percent for a person of the same height with a small frame, and add 10 percent for a large-framed individual. So in the end, you end up with an IBW range.

For example, for the 5-foot, 4-inch tall woman in the first example with an IBW of 120 pounds, her IBW range is 108 to 132 pounds. A healthy weight for small-framed woman of this height would be toward the low end of 108 pounds, while a large-framed woman could weigh toward the high end.

And the man who's 6 feet tall has an IBW range of 160 to 196 pounds.

If you're not sure of your frame size, here's a quick way to figure it out. Place your thumb and middle finger around your wrist, right where you'd wear a watch. If your fingers overlap, you have a small frame. If they touch, your frame is medium and if they don't meet, you have a large frame.

find_body_frame

find_body_frame(metric, height, wrist)

To determine Body Frame from Height and Wrist circumference

   Height					  Small Frame			          Medium Frame				  Large Frame
below 62"|157cm			  Wrist: <5.5"|13.9cm			5.5"|13.9cm to 5.75"|14.6cm		> 5.75"|14.6cm
62"|157cm to 65"|165cm	  Wrist: <6"|15.2cm				6"|15.2cm to 6.25"|15.8cm		> 6.25"|15.8cm
over 65"|165cm			  Wrist: <6.25"|15.8cm			6.25"|15.8cm to 6.5"|16.5cm		> 6.5"|16.5cm

bmi

Calculates the Body Mass Index or BMI for both metric and imperial measurements.

bmi(metric, weight, height)

English BMI Formula (Imperial)

BMI = (Weight in Pounds / (Height in inches x Height in inches)) x 703

Metric BMI Formula

BMI = (Weight in Kilograms / (Height in Meters x Height in Meters))

where, metric: 0=Imperial, 1=Metric weight: lbs or kg height: inches or centimeters (converted to meters)

get_daily_targets

Calculates the daily targets based on weight and computed tdee

get_daily_targets(weight, tdee)

returns,

{
    daily_calorie: 1929,
    daily_protein: 252,
    daily_fat: 43,
    daily_carbs: 134
}

macros

Calculates the macros based on weight, height (in inches) and age (in years)

macros(weight, height, age)

Modified from https://www.npmjs.com/package/fitness-macros-calculator to remove dependency

returns,

carbs: { weightloss: '175.0', weightmaintain: '279.0', weightgain: '330.0' },
calories: {
    weightloss: 1647.84,
    weightmaintain: 1973.975,
    weightgain: 2128.46
},
fat: '46.0',
protein: '132'
}

caloriesBurnt

Calculates the calories burnt. Migrated from package https://www.npmjs.com/package/calories-burnt

caloriesBurnt(meters,slope,treadmill,age,restingHeartBeatsPerMinute,kilograms)

results,

var result = caloriesBurnt(1000, -0.015,false, age, 80, 80);
// 87

fitCalc

Added from https://www.npmjs.com/package/fitcalc. Get perfect fitness diet macros and infos about how you can reach your goals just by passing an object.

fitCalc(options)

where,

fitCalc({
    gender: 'male',
    weight: 70,
    height: 170,
    age: 28,
    dailyActivityLevel: 1.55,
    bodyFatPercentage: 13,
    bodyType: 'meso',
    goal: 'mass-gain'
});

results,

{
bmr: 1685.44,
lbm: 60.9,
recommendedCourseOfAction: 'Fat loss recommended first',
requiredCaloricIntake: 2912.12,
weightChange: '1-2 kg',
optimalRatios: { proteinRatio: 40, carboHydrateRatio: 40, fatRatio: 20 },
macros: { protein: 291, carbs: 291, fat: 64 }
}

Sample Results

For a 6 foot, 210 pound, 42 year old male,

Body Fat:  {
    LEAN_BODY_MASS: 321.64000000000004,
    BODY_FAT: -111.64000000000004,
    BODY_FAT_PCT: -0.53
}
TDEE:  2411
Body Frame:  large
Health Weight:  195.8
BMI:  28.48
Daily Targets:  {
    daily_calorie: 1929,
    daily_protein: 252,
    daily_fat: 43,
    daily_carbs: 134
}

Calories Burnt: 87

Macros:  {
    carbs: { weightloss: '175.0', weightmaintain: '279.0', weightgain: '330.0' },
    calories: {
        weightloss: 1647.84,
        weightmaintain: 1973.975,
        weightgain: 2128.46
    },
    fat: '46.0',
    protein: '132'
}

{
    bmr: 1685.44,
    lbm: 60.9,
    recommendedCourseOfAction: 'Fat loss recommended first',
    requiredCaloricIntake: 2912.12,
    weightChange: '1-2 kg',
    optimalRatios: { proteinRatio: 40, carboHydrateRatio: 40, fatRatio: 20 },
    macros: { protein: 291, carbs: 291, fat: 64 }
}

Contact us

The best contact method is via email at [email protected]

License

Creative Commons Attribution 4.0

EOL or End-of-Life Doctrine

When a piece of software is useful, there should never be an EOL doctrine. The intention for this package is to achieve immoratlity ;).

At some point of time in the future, this package may appear to be dead and abandon. The opposite will be true!

When this project reaches that stage, this package has matured to a level where maintenance is no longer needed.

When external dependencies are removed from a package, then an immortal package lifespan is achievable!

Patrick Ingle Developer