{"_id":"@airia-in/run-app-data-format","name":"@airia-in/run-app-data-format","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.2":{"name":"@airia-in/run-app-data-format","version":"1.0.2","description":"Shared data formatting library for Airia fitness platform","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","watch":"tsc --watch","test":"jest","test:watch":"jest --watch"},"keywords":["data","format","fitness","pace","distance","time"],"author":{"name":"Airia Team"},"license":"MIT","devDependencies":{"@types/jest":"^29.5.14","@types/node":"^20.3.1","jest":"^29.7.0","ts-jest":"^29.4.0","typescript":"^5.8.3"},"jest":{"preset":"ts-jest","testEnvironment":"node","roots":["<rootDir>/src"],"testMatch":["**/*.spec.ts"]},"_id":"@airia-in/run-app-data-format@1.0.2","gitHead":"5a8ec73e2523f29aef45d10e65a779ed7c3dcc13","_nodeVersion":"23.3.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-Uit2pHViGDs5YpIwarc6RqEJF52JqRnbp/De/yeU07Y8wju0+0mN3SySOPV6jBZKnaCpBAK8oAbUNbJc098vOA==","shasum":"7396cf305b3f566756d406f1d2628873e75dff3b","tarball":"https://registry.npmjs.org/@airia-in/run-app-data-format/-/run-app-data-format-1.0.2.tgz","fileCount":7,"unpackedSize":37093,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAZveqHjnGHqcmjLVnIpvzxQwD+LMzv3whOf7guiBTtzAiEA1TmMmdhG2F1/tf5HGq2KBb27ftkjIhJloae8a49dYAM="}]},"_npmUser":{"name":"airia-mokshit","email":"mokshit.jain@airia.in","actor":{"name":"airia-mokshit","email":"mokshit.jain@airia.in","type":"user"}},"directories":{},"maintainers":[{"name":"airia-mokshit","email":"mokshit.jain@airia.in"},{"name":"savinay","email":"savinay@drcode.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/run-app-data-format_1.0.2_1752147493339_0.9588436754198342"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-10T11:38:13.223Z","1.0.2":"2025-07-10T11:38:13.526Z","modified":"2025-07-10T11:38:13.850Z"},"maintainers":[{"name":"airia-mokshit","email":"mokshit.jain@airia.in"},{"name":"savinay","email":"savinay@drcode.ai"}],"description":"Shared data formatting library for Airia fitness platform","keywords":["data","format","fitness","pace","distance","time"],"author":{"name":"Airia Team"},"license":"MIT","readme":"# @airia/data-format\n\nA comprehensive data formatting library for the Airia fitness platform. This library provides consistent formatting functions for time, distance, pace, heart rate, and other fitness metrics that can be used across all services.\n\n## Features\n\n- **Time Formatting**: Convert seconds to various time formats (hh:mm:ss, mm:ss, human readable)\n- **Distance Formatting**: Convert meters to appropriate units (km/m) with proper formatting\n- **Pace Conversion**: Convert between different pace units (min/km, min/mi, s/m)\n- **Heart Rate**: Format heart rate values and calculate heart rate zones\n- **Speed Formatting**: Convert m/s to km/h or other units\n- **Elevation/Altitude**: Format elevation in meters or feet\n- **Power**: Format power output for cycling activities\n- **Cadence**: Format cadence for running (spm) and cycling (rpm)\n- **Temperature**: Convert between Celsius and Fahrenheit\n- **Date Formatting**: Multiple date format options including relative dates\n- **Calories**: Format calorie values with proper rounding\n\n## Installation\n\n```bash\nnpm install @airia-in/lib-run-app-conversion\n```\n\n## Usage\n\n### Basic Examples\n\n```typescript\nimport { \n  msToMinPerKm, \n  mToKm, \n  formatDuration, \n  formatHeartRate,\n  formatSpeed \n} from '@airia/data-format';\n\n// Convert speed to pace\nconst pace = msToMinPerKm(5); // \"3:20\"\n\n// Format distance\nconst distance = mToKm(1500); // \"1.5 km\"\nconst shortDistance = mToKm(800); // \"800 m\"\n\n// Format duration\nconst duration = formatDuration(3661); // \"1:01:01\"\nconst shortDuration = formatDuration(125, 'mm:ss'); // \"2:05\"\nconst humanDuration = formatDuration(3661, 'humanReadable'); // \"1h 1m 1s\"\n\n// Format heart rate\nconst hr = formatHeartRate(150); // \"150 bpm\"\nconst hrNoUnit = formatHeartRate(150, false); // \"150\"\n\n// Format speed\nconst speed = formatSpeed(5); // \"18.0 km/h\"\nconst speedMs = formatSpeed(5, 'ms'); // \"5.0 m/s\"\n```\n\n### Heart Rate Zones\n\n```typescript\nimport { getHeartRateZone } from '@airia/data-format';\n\nconst zone = getHeartRateZone(150, 200); // Using max HR\n// {\n//   zone: 3,\n//   zoneName: 'Cardio',\n//   percentage: 75,\n//   description: 'Hard activity'\n// }\n\nconst zoneFromAge = getHeartRateZone(150, undefined, 30); // Calculate max HR from age\n```\n\n### Advanced Formatting\n\n```typescript\nimport { \n  formatElevation, \n  formatPower, \n  formatCadence, \n  formatTemperature,\n  formatDate,\n  formatCalories,\n  convertPace\n} from '@airia/data-format';\n\n// Elevation\nconst elevation = formatElevation(1500); // \"1500 m\"\nconst elevationFt = formatElevation(1500, 'ft'); // \"4921 ft\"\n\n// Power (cycling)\nconst power = formatPower(250); // \"250 W\"\n\n// Cadence\nconst runCadence = formatCadence(180); // \"180 spm\"\nconst bikeCadence = formatCadence(90, 'cycling'); // \"90 rpm\"\n\n// Temperature\nconst temp = formatTemperature(25); // \"25°C\"\nconst tempF = formatTemperature(25, 'F'); // \"77°F\"\n\n// Date formatting\nconst date = formatDate(new Date(), 'short'); // \"09/07/25\"\nconst longDate = formatDate(new Date(), 'long'); // \"Tuesday, July 9, 2025\"\nconst relativeDate = formatDate(new Date(), 'relative'); // \"Today\"\n\n// Calories\nconst calories = formatCalories(500); // \"500 cal\"\n\n// Pace conversion\nconst paceConverted = convertPace(5, 'min/km', 'min/mi'); // \"8:03\"\n```\n\n## API Reference\n\n### Time Functions\n\n- `formatDuration(seconds, format?)`: Format duration in various formats\n- `msToMinPerKm(ms)`: Convert m/s to min/km pace format\n\n### Distance Functions\n\n- `mToKm(meters)`: Convert meters to km with appropriate unit\n- `formatElevation(meters, unit?)`: Format elevation in m or ft\n\n### Speed & Pace Functions\n\n- `formatSpeed(metersPerSecond, unit?)`: Format speed in km/h or m/s\n- `convertPace(value, fromUnit, toUnit)`: Convert between pace units\n\n### Heart Rate Functions\n\n- `formatHeartRate(hr, includeUnit?)`: Format heart rate value\n- `getHeartRateZone(currentHR, maxHR?, age?)`: Calculate HR zone information\n\n### Other Fitness Metrics\n\n- `formatPower(watts, includeUnit?)`: Format power output\n- `formatCadence(cadence, type?)`: Format cadence for running/cycling\n- `formatCalories(calories, includeUnit?)`: Format calorie values\n\n### General Utilities\n\n- `formatTemperature(celsius, unit?)`: Convert temperature units\n- `formatDate(date, format?)`: Format dates in various styles\n\n## Testing\n\n```bash\nnpm test\n```\n\n## Contributing\n\nThis library is part of the Airia fitness platform. When adding new formatting functions:\n\n1. Follow the existing patterns for type safety and error handling\n2. Include comprehensive tests\n3. Add proper JSDoc documentation\n4. Handle edge cases (null, undefined, invalid inputs)\n5. Use consistent return values (\"-\" for invalid inputs)\n\n## License\n\nMIT","readmeFilename":"README.md","_rev":"1-601292eb5b0659fbb3da84309f4efdbb"}