npm.io
10.0.0 • Published 2d ago

@kaiord/zwo

Licence
MIT
Version
10.0.0
Deps
3
Size
306 kB
Vulns
0
Weekly
0
Stars
7

@kaiord/zwo

npm version License: MIT

ZWO format adapter for the Kaiord health & fitness data framework. Provides reading, writing, and validation of Zwift workout XML files.

Installation

pnpm add @kaiord/core @kaiord/zwo

Usage

import { createDefaultProviders } from "@kaiord/core";
import { createZwoProviders } from "@kaiord/zwo";

const providers = createDefaultProviders({
  zwo: createZwoProviders(),
});

// ZWO to KRD
const krd = await providers.convertZwiftToKrd!({ zwiftString });

// KRD to ZWO
const zwoString = await providers.convertKrdToZwift!({ krd });
Standalone Adapter Access
import {
  createFastXmlZwiftReader,
  createFastXmlZwiftWriter,
  createZwiftValidator,
} from "@kaiord/zwo";
import { createConsoleLogger } from "@kaiord/core";

const logger = createConsoleLogger();
const validator = createZwiftValidator(logger);
const reader = createFastXmlZwiftReader(logger, validator);
const writer = createFastXmlZwiftWriter(logger, validator);

API

createZwoProviders(logger?: Logger): ZwoProviders

Creates ZWO adapter instances for use with createDefaultProviders().

createFastXmlZwiftReader(logger: Logger, validator: ZwiftValidator): ZwiftReader

Creates a ZWO file reader using fast-xml-parser.

createFastXmlZwiftWriter(logger: Logger, validator: ZwiftValidator): ZwiftWriter

Creates a ZWO file writer using fast-xml-parser.

createZwiftValidator(logger: Logger): ZwiftValidator

Creates a validator that uses XSD validation in Node.js and well-formedness checking in browsers.

createXsdZwiftValidator(logger: Logger): ZwiftValidator

Creates a strict XSD schema validator (Node.js only).

Supported ZWO Features

  • SteadyState intervals
  • Warmup and Cooldown ramps
  • IntervalsT (structured intervals)
  • FreeRide segments
  • Power targets (FTP percentage)
  • Heart rate and cadence targets
  • Text events

License

MIT

Keywords