fit-file-parser 3.1.3 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/dist/binary.d.ts +9 -1
- package/dist/binary.js +131 -47
- package/dist/cjs/binary.d.ts +9 -1
- package/dist/cjs/binary.js +131 -47
- package/dist/cjs/fit-parser.js +13 -12
- package/dist/cjs/fit.d.ts +2 -1
- package/dist/cjs/fit.js +420 -100
- package/dist/cjs/fit_types.d.ts +1 -1
- package/dist/fit-parser.js +14 -13
- package/dist/fit.d.ts +2 -1
- package/dist/fit.js +420 -100
- package/dist/fit_types.d.ts +1 -1
- package/package.json +4 -1
package/dist/fit_types.d.ts
CHANGED
|
@@ -71,7 +71,7 @@ export type GoalSource = 'auto' | 'community' | 'user';
|
|
|
71
71
|
export type Schedule = 'workout' | 'course';
|
|
72
72
|
export type CoursePoint = 'generic' | 'summit' | 'valley' | 'water' | 'food' | 'danger' | 'left' | 'right' | 'straight' | 'first_aid' | 'fourth_category' | 'third_category' | 'second_category' | 'first_category' | 'hors_category' | 'sprint' | 'left_fork' | 'right_fork' | 'middle_fork' | 'slight_left' | 'sharp_left' | 'slight_right' | 'sharp_right' | 'u_turn' | 'segment_start' | 'segment_end' | 'campsite' | 'aid_station' | 'rest_area' | 'general_distance' | 'service' | 'energy_gel' | 'sports_drink' | 'mile_marker' | 'checkpoint' | 'shelter' | 'meeting_spot' | 'overlook' | 'toilet' | 'shower' | 'gear' | 'sharp_curve' | 'steep_incline' | 'tunnel' | 'bridge' | 'obstacle' | 'crossing' | 'store' | 'transition' | 'navaid' | 'transport' | 'alert' | 'info';
|
|
73
73
|
export type Manufacturer = '0' | 'garmin' | 'garmin_fr405_antfs' | 'zephyr' | 'dayton' | 'idt' | 'srm' | 'quarq' | 'ibike' | 'saris' | 'spark_hk' | 'tanita' | 'echowell' | 'dynastream_oem' | 'nautilus' | 'dynastream' | 'timex' | 'metrigear' | 'xelic' | 'beurer' | 'cardiosport' | 'a_and_d' | 'hmm' | 'suunto' | 'thita_elektronik' | 'gpulse' | 'clean_mobile' | 'pedal_brain' | 'peaksware' | 'saxonar' | 'lemond_fitness' | 'dexcom' | 'wahoo_fitness' | 'octane_fitness' | 'archinoetics' | 'the_hurt_box' | 'citizen_systems' | 'magellan' | 'osynce' | 'holux' | 'concept2' | 'one_giant_leap' | 'ace_sensor' | 'brim_brothers' | 'xplova' | 'perception_digital' | 'bf1systems' | 'pioneer' | 'spantec' | 'metalogics' | '4iiiis' | 'seiko_epson' | 'seiko_epson_oem' | 'ifor_powell' | 'maxwell_guider' | 'star_trac' | 'breakaway' | 'alatech_technology_ltd' | 'mio_technology_europe' | 'rotor' | 'geonaute' | 'id_bike' | 'specialized' | 'wtek' | 'physical_enterprises' | 'north_pole_engineering' | 'bkool' | 'cateye' | 'stages_cycling' | 'sigmasport' | 'tomtom' | 'peripedal' | 'wattbike' | 'moxy' | 'ciclosport' | 'powerbahn' | 'acorn_projects_aps' | 'lifebeam' | 'bontrager' | 'wellgo' | 'scosche' | 'magura' | 'woodway' | 'elite' | 'nielsen_kellerman' | 'dk_city' | 'tacx' | 'direction_technology' | 'magtonic' | '1partcarbon' | 'inside_ride_technologies' | 'sound_of_motion' | 'stryd' | 'icg' | 'mipulse' | 'bsx_athletics' | 'look' | 'campagnolo_srl' | 'body_bike_smart' | 'praxisworks' | 'limits_technology' | 'topaction_technology' | 'cosinuss' | 'fitcare' | 'magene' | 'giant_manufacturing_co' | 'tigrasport' | 'salutron' | 'technogym' | 'bryton_sensors' | 'latitude_limited' | 'soaring_technology' | 'igpsport' | 'thinkrider' | 'gopher_sport' | 'waterrower' | 'orangetheory' | 'inpeak' | 'kinetic' | 'johnson_health_tech' | 'polar_electro' | 'seesense' | 'nci_technology' | 'development' | 'healthandlife' | 'lezyne' | 'scribe_labs' | 'zwift' | 'watteam' | 'recon' | 'favero_electronics' | 'dynovelo' | 'strava' | 'precor' | 'bryton' | 'sram' | 'navman' | 'cobi' | 'spivi' | 'mio_magellan' | 'evesports' | 'sensitivus_gauge' | 'podoon' | 'life_time_fitness' | 'falco_e_motors' | 'minoura' | 'cycliq' | 'luxottica' | 'trainer_road' | 'the_sufferfest' | 'fullspeedahead' | 'virtualtraining' | 'feedbacksports' | 'omata' | 'vdo' | 'magneticdays' | 'hammerhead' | 'kinetic_by_kurt' | 'shapelog' | 'dabuziduo' | 'jetblack' | 'coros' | 'virtugo' | 'velosense' | 'actigraphcorp';
|
|
74
|
-
export type GarminProduct = '
|
|
74
|
+
export type GarminProduct = 'hrm1' | 'axh01' | 'axb01' | 'axb02' | 'hrm2ss' | 'dsiAlf02' | 'hrm3ss' | 'hrmRunSingleByteProductId' | 'bsm' | 'bcm' | 'axs01' | 'hrmTriSingleByteProductId' | 'hrm4RunSingleByteProductId' | 'fr225SingleByteProductId' | 'gen3BsmSingleByteProductId' | 'gen3BcmSingleByteProductId' | 'hrmFitSingleByteProductId' | 'oHR' | 'fr301China' | 'fr301Japan' | 'fr301Korea' | 'fr301Taiwan' | 'fr405' | 'fr50' | 'fr405Japan' | 'fr60' | 'dsiAlf01' | 'fr310xt' | 'edge500' | 'fr110' | 'edge800' | 'edge500Taiwan' | 'edge500Japan' | 'chirp' | 'fr110Japan' | 'edge200' | 'fr910xt' | 'edge800Taiwan' | 'edge800Japan' | 'alf04' | 'fr610' | 'fr210Japan' | 'vectorSs' | 'vectorCp' | 'edge800China' | 'edge500China' | 'approachG10' | 'fr610Japan' | 'edge500Korea' | 'fr70' | 'fr310xt4t' | 'amx' | 'fr10' | 'edge800Korea' | 'swim' | 'fr910xtChina' | 'fenix' | 'edge200Taiwan' | 'edge510' | 'edge810' | 'tempe' | 'fr910xtJapan' | 'fr620' | 'fr220' | 'fr910xtKorea' | 'fr10Japan' | 'edge810Japan' | 'virbElite' | 'edgeTouring' | 'edge510Japan' | 'hrmTri' | 'hrmRun' | 'fr920xt' | 'edge510Asia' | 'edge810China' | 'edge810Taiwan' | 'edge1000' | 'vivoFit' | 'virbRemote' | 'vivoKi' | 'fr15' | 'vivoActive' | 'edge510Korea' | 'fr620Japan' | 'fr620China' | 'fr220Japan' | 'fr220China' | 'approachS6' | 'vivoSmart' | 'fenix2' | 'epix' | 'fenix3' | 'edge1000Taiwan' | 'edge1000Japan' | 'fr15Japan' | 'edge520' | 'edge1000China' | 'fr620Russia' | 'fr220Russia' | 'vectorS' | 'edge1000Korea' | 'fr920xtTaiwan' | 'fr920xtChina' | 'fr920xtJapan' | 'virbx' | 'vivoSmartApac' | 'etrexTouch' | 'edge25' | 'fr25' | 'vivoFit2' | 'fr225' | 'fr630' | 'fr230' | 'fr735xt' | 'vivoActiveApac' | 'vector2' | 'vector2s' | 'virbxe' | 'fr620Taiwan' | 'fr220Taiwan' | 'truswing' | 'd2airvenu' | 'fenix3China' | 'fenix3Twn' | 'variaHeadlight' | 'variaTaillightOld' | 'edgeExplore1000' | 'fr225Asia' | 'variaRadarTaillight' | 'variaRadarDisplay' | 'edge20' | 'edge520Asia' | 'edge520Japan' | 'd2Bravo' | 'approachS20' | 'vivoSmart2' | 'edge1000Thai' | 'variaRemote' | 'edge25Asia' | 'edge25Jpn' | 'edge20Asia' | 'approachX40' | 'fenix3Japan' | 'vivoSmartEmea' | 'fr630Asia' | 'fr630Jpn' | 'fr230Jpn' | 'hrm4Run' | 'epixJapan' | 'vivoActiveHr' | 'vivoSmartGpsHr' | 'vivoSmartHr' | 'vivoSmartHrAsia' | 'vivoSmartGpsHrAsia' | 'vivoMove' | 'variaTaillight' | 'fr235Asia' | 'fr235Japan' | 'variaVision' | 'vivoFit3' | 'fenix3Korea' | 'fenix3Sea' | 'fenix3Hr' | 'virbUltra30' | 'indexSmartScale' | 'fr235' | 'fenix3Chronos' | 'oregon7xx' | 'rino7xx' | 'epixKorea' | 'fenix3HrChn' | 'fenix3HrTwn' | 'fenix3HrJpn' | 'fenix3HrSea' | 'fenix3HrKor' | 'nautix' | 'vivoActiveHrApac' | 'fr35' | 'oregon7xxWw' | 'edge820' | 'edgeExplore820' | 'fr735xtApac' | 'fr735xtJapan' | 'fenix5s' | 'd2BravoTitanium' | 'variaUt800' | 'runningDynamicsPod' | 'edge820China' | 'edge820Japan' | 'fenix5x' | 'vivoFitJr' | 'vivoSmart3' | 'vivoSport' | 'edge820Taiwan' | 'edge820Korea' | 'edge820Sea' | 'fr35Hebrew' | 'approachS60' | 'fr35Apac' | 'fr35Japan' | 'fenix3ChronosAsia' | 'virb360' | 'fr935' | 'fenix5' | 'vivoactive3' | 'edge1030' | 'fr35Sea' | 'fr235ChinaNfc' | 'foretrex601_701' | 'vivoMoveHr' | 'vector3' | 'fenix5Asia' | 'fenix5sAsia' | 'fenix5xAsia' | 'approachZ80' | 'fr35Korea' | 'd2charlie' | 'vivoSmart3Apac' | 'vivoSportApac' | 'fr935Asia' | 'descent' | 'vivoFit4' | 'fr645' | 'fr645m' | 'fr30' | 'fenix5sPlus' | 'edge130' | 'edge1030Asia' | 'vivosmart4' | 'vivoMoveHrAsia' | 'approachX10' | 'fr30Asia' | 'vivoactive3mW' | 'fr645Asia' | 'fr645mAsia' | 'edgeExplore' | 'gpsmap66' | 'approachS10' | 'vivoactive3mL' | 'fr245' | 'fr245Music' | 'approachG80' | 'edge130Asia' | 'edge1030Bontrager' | 'fenix5Plus' | 'fenix5xPlus' | 'edge520Plus' | 'fr945' | 'edge530' | 'edge830' | 'instinctEsports' | 'fenix5sPlusApac' | 'fenix5xPlusApac' | 'edge520PlusApac' | 'descentT1' | 'fr235lAsia' | 'fr245Asia' | 'vivoActive3mApac' | 'gen3Bsm' | 'gen3Bcm' | 'vivoSmart4Asia' | 'vivoactive4Small' | 'vivoactive4Large' | 'venu' | 'marqDriver' | 'marqAviator' | 'marqCaptain' | 'marqCommander' | 'marqExpedition' | 'marqAthlete' | 'descentMk2' | 'fr45' | 'gpsmap66i' | 'fenix6SSport' | 'fenix6S' | 'fenix6Sport' | 'fenix6' | 'fenix6x' | 'hrmDual' | 'hrmPro' | 'vivoMove3Premium' | 'approachS40' | 'fr245mAsia' | 'edge530Apac' | 'edge830Apac' | 'vivoMove3' | 'vivoActive4SmallAsia' | 'vivoActive4LargeAsia' | 'vivoActive4OledAsia' | 'swim2' | 'marqDriverAsia' | 'marqAviatorAsia' | 'vivoMove3Asia' | 'fr945Asia' | 'vivoActive3tChn' | 'marqCaptainAsia' | 'marqCommanderAsia' | 'marqExpeditionAsia' | 'marqAthleteAsia' | 'indexSmartScale2' | 'instinctSolar' | 'fr45Asia' | 'vivoactive3Daimler' | 'legacyRey' | 'legacyDarthVader' | 'legacyCaptainMarvel' | 'legacyFirstAvenger' | 'fenix6sSportAsia' | 'fenix6sAsia' | 'fenix6SportAsia' | 'fenix6Asia' | 'fenix6xAsia' | 'legacyCaptainMarvelAsia' | 'legacyFirstAvengerAsia' | 'legacyReyAsia' | 'legacyDarthVaderAsia' | 'descentMk2s' | 'edge130Plus' | 'edge1030Plus' | 'rally200' | 'fr745' | 'venusqMusic' | 'venusqMusicV2' | 'venusq' | 'lily' | 'marqAdventurer' | 'enduro' | 'swim2Apac' | 'marqAdventurerAsia' | 'fr945Lte' | 'descentMk2Asia' | 'venu2' | 'venu2s' | 'venuDaimlerAsia' | 'marqGolfer' | 'venuDaimler' | 'fr745Asia' | 'variaRct715' | 'lilyAsia' | 'edge1030PlusAsia' | 'edge130PlusAsia' | 'approachS12' | 'venusqAsia' | 'edge1040' | 'marqGolferAsia' | 'venu2Plus' | 'gnss' | 'fr55' | 'enduroAsia' | 'instinct2' | 'instinct2s' | 'fenix7s' | 'fenix7' | 'fenix7x' | 'fenix7sApac' | 'fenix7Apac' | 'fenix7xApac' | 'approachG12' | 'descentMk2sAsia' | 'approachS42' | 'epixGen2' | 'epixGen2Apac' | 'venu2sAsia' | 'venu2Asia' | 'fr945LteAsia' | 'vivoMoveSport' | 'vivomoveTrend' | 'approachS12Asia' | 'fr255Music' | 'fr255SmallMusic' | 'fr255' | 'fr255Small' | 'approachG12Asia' | 'approachS42Asia' | 'descentG1' | 'venu2PlusAsia' | 'fr955' | 'fr55Asia' | 'edge540' | 'edge840' | 'vivosmart5' | 'instinct2Asia' | 'marqGen2' | 'venusq2' | 'venusq2music' | 'marqGen2Aviator' | 'd2AirX10' | 'hrmProPlus' | 'descentG1Asia' | 'tactix7' | 'instinctCrossover' | 'edgeExplore2' | 'descentMk3' | 'descentMk3i' | 'approachS70' | 'fr265Large' | 'fr265Small' | 'venu3' | 'venu3s' | 'tacxNeoSmart' | 'tacxNeo2Smart' | 'tacxNeo2TSmart' | 'tacxNeoSmartBike' | 'tacxSatoriSmart' | 'tacxFlowSmart' | 'tacxVortexSmart' | 'tacxBushidoSmart' | 'tacxGeniusSmart' | 'tacxFluxFluxSSmart' | 'tacxFlux2Smart' | 'tacxMagnum' | 'edge1040Asia' | 'epixGen2Pro42' | 'epixGen2Pro47' | 'epixGen2Pro51' | 'fr965' | 'enduro2' | 'fenix7sProSolar' | 'fenix7ProSolar' | 'fenix7xProSolar' | 'lily2' | 'instinct2x' | 'vivoactive5' | 'fr165' | 'fr165Music' | 'edge1050' | 'descentT2' | 'hrmFit' | 'marqGen2Commander' | 'lilyAthlete' | 'rallyX10' | 'fenix8Solar' | 'fenix8SolarLarge' | 'fenix8Small' | 'fenix8' | 'd2Mach1Pro' | 'enduro3' | 'instinctE40mm' | 'instinctE45mm' | 'instinct3Solar45mm' | 'instinct3Amoled45mm' | 'instinct3Amoled50mm' | 'descentG2' | 'venuX1' | 'hrm200' | 'vivoactive6' | 'fenix8Pro' | 'edge550' | 'edge850' | 'venu4' | 'venu4s' | 'approachS44' | 'edgeMtb' | 'approachS50' | 'fenixE' | 'instinctCrossoverAmoled' | 'bounce2' | 'instinct3Solar50mm' | 'tactix8Amoled' | 'tactix8Solar' | 'fr170Music' | 'fr170' | 'approachJ1' | 'd2Mach2' | 'fr702026' | 'd2AirX15' | 'd2Mach2Pro' | 'sdm4' | 'edgeRemote' | 'trainingCenter' | 'tacxTrainingAppWin' | 'tacxTrainingAppMac' | 'tacxTrainingAppMacCatalyst' | 'tacxTrainingAppAndroid' | 'tacxTrainingAppIos' | 'tacxTrainingAppLegacy' | 'connectiqSimulator' | 'androidAntplusPlugin' | 'connect';
|
|
75
75
|
export type AntplusDeviceType = 'antfs' | 'bike_power' | 'environment_sensor_legacy' | 'multi_sport_speed_distance' | 'control' | 'fitness_equipment' | 'blood_pressure' | 'geocache_node' | 'light_electric_vehicle' | 'env_sensor' | 'racquet' | 'control_hub' | 'muscle_oxygen' | 'shifting' | 'bike_light_main' | 'bike_light_shared' | 'exd' | 'bike_radar' | 'bike_aero' | 'weight_scale' | 'heart_rate' | 'bike_speed_cadence' | 'bike_cadence' | 'bike_speed' | 'stride_speed_distance';
|
|
76
76
|
export type LocalDeviceType = 'gps' | 'glonass' | 'gps_glonass' | 'accelerometer' | 'barometer' | 'temperature' | 'whr' | 'sensor_hub';
|
|
77
77
|
export type BleDeviceType = 'connected_gps' | 'heart_rate' | 'bike_power' | 'bike_speed_cadence' | 'bike_speed' | 'bike_cadence' | 'footpod' | 'bike_trainer';
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fit-file-parser",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "4.0.1",
|
|
5
5
|
"private": false,
|
|
6
6
|
"description": "Parse your .FIT files easily, directly from JS (Garmin, Polar, Suunto)",
|
|
7
7
|
"author": {
|
|
@@ -56,6 +56,8 @@
|
|
|
56
56
|
"scripts": {
|
|
57
57
|
"dev": "tsx --watch --watch-path=src/type_generator.ts --watch-path=src/fit.ts codegen/codegen.ts",
|
|
58
58
|
"codegen": "tsx codegen/codegen.ts",
|
|
59
|
+
"codegen:check": "tsx codegen/codegen.ts --check",
|
|
60
|
+
"check": "npm run codegen:check && npm run lint && npm run type-check && npm test -- --run && npm run build",
|
|
59
61
|
"example-output": "node examples/parse.js examples/example.fit > examples/output-example.json",
|
|
60
62
|
"example-output-tank": "node examples/parse.js examples/example-diving.fit > examples/output-diving.json",
|
|
61
63
|
"example-output-summary-first": "node examples/parse.js examples/triathlon_summary_first.fit > examples/output_summary_first.json",
|
|
@@ -75,6 +77,7 @@
|
|
|
75
77
|
},
|
|
76
78
|
"devDependencies": {
|
|
77
79
|
"@antfu/eslint-config": "^6.2.0",
|
|
80
|
+
"@garmin/fitsdk": "^21.208.0",
|
|
78
81
|
"@types/node": "^24.10.1",
|
|
79
82
|
"@vitest/coverage-v8": "^4.0.13",
|
|
80
83
|
"eslint": "^9.10.0",
|