An unofficial implementation of the FIT SDK for Garmin's .fit file protocol: https://developer.garmin.com/fit/overview/
NOTE: This is a fork of https://github.com/pierremtb/easy-fit, which has been forked multiple times. Big thanks to the initial creators for building out the initial version of this library.
Given my large-scale refactoring to TypeScript, I decided to maintain a separate/permanent fork so as to not be blocked by upstream maintainers.
$ npm install @samijaber/fit-sdk
See in examples folder:
// Require the module
var FitParser = require("./../dist/fit-file-parser.js").default;
// Read a .FIT file
var fs = require("fs");
fs.readFile("./example.fit", function (err, content) {
// Create a FitParser instance (options argument is optional)
var fitParser = new FitParser({
force: true,
speedUnit: "km/h",
lengthUnit: "km",
temperatureUnit: "kelvin",
elapsedRecordField: true,
mode: "cascade",
});
// Parse your file
fitParser.parse(content, function (error, data) {
// Handle result of parse method
if (error) {
console.log(error);
} else {
console.log(JSON.stringify(data));
}
});
});Needed to create a new instance. options is optional, and is used to customize the returned object.
Allowed properties :
mode: Stringcascade: Returned object is organized as a tree, eg. each lap contains arecordsfields, that is an array of its records (default)list: Returned object is organized as lists of sessions, laps, records, etc..., without parent-child relationboth: A mix of the two other modes, eg.recordsare available inside the root field as well as inside each laps
lengthUnit: Stringm: Lengths are in meters (default)km: Lengths are in kilometersmi: Lengths are in miles
temperatureUnit: Stringcelsius:Temperatures are in °C (default)kelvin: Temperatures are in °Kfahrenheit: Temperatures are in °F
speedUnit: Stringm/s: Speeds are in meters per seconds (default)km/h: Speeds are in kilometers per hourmph: Speeds are in miles per hour
force: Booleantrue: Continues even if they are errors (default for now)false: Stops if an error occurs
elapsedRecordField: Booleantrue: Includeselapsed_time, containing the elapsed time in seconds since the first record, andtimer_time, containing the time shown on the device, inside eachrecordfieldfalse(default)
callback receives two arguments, the first as a error String, and the second as Object, result of parsing.
All started thanks to Pierre Jacquier
Big thanks to Mikael Lofjärd for his early prototype. See CONTRIBUTORS.
MIT license; see LICENSE.
(c) 2019 Dimitrios Kanellopoulos