API Reference
This section contains the auto-generated API reference for @wellpipe/core.
TypeDoc Integration
Once TypeDoc is configured, this section will be automatically generated from JSDoc comments in the source code. For now, this is a manual reference.
Interfaces
TokenProvider
Manages OAuth tokens for health provider APIs.
interface TokenProvider {
/**
* Get the current access token.
* May trigger a refresh if the token is expired.
*/
getAccessToken(): Promise<string>;
/**
* Get the refresh token, if available.
*/
getRefreshToken(): Promise<string | undefined>;
/**
* Update stored tokens after a refresh or new authentication.
* @param accessToken - New access token
* @param refreshToken - New refresh token (optional)
* @param expiresAt - Token expiration time (optional)
*/
updateTokens(
accessToken: string,
refreshToken?: string,
expiresAt?: Date
): Promise<void>;
/**
* Check if the current access token is expired.
*/
isExpired(): Promise<boolean>;
}
HealthProvider
Common interface for health data providers.
interface HealthProvider {
/**
* Provider identifier (e.g., 'whoop', 'oura').
*/
readonly name: string;
/**
* Get sleep data for a date range.
*/
getSleep(startDate: string, endDate: string): Promise<SleepData[]>;
/**
* Get recovery data for a date range.
*/
getRecovery(startDate: string, endDate: string): Promise<RecoveryData[]>;
/**
* Get workout data for a date range.
*/
getWorkouts(startDate: string, endDate: string): Promise<WorkoutData[]>;
}
Types
SleepData
Normalized sleep data structure.
interface SleepData {
id: string;
providerId: string;
start: string; // ISO 8601 datetime
end: string; // ISO 8601 datetime
durationMs: number;
isNap: boolean;
score?: number; // 0-100
stages?: SleepStages;
metrics?: {
efficiency?: number;
respiratoryRate?: number;
};
}
interface SleepStages {
lightMs: number;
deepMs: number;
remMs: number;
awakeMs: number;
}
RecoveryData
Normalized recovery data structure.
interface RecoveryData {
id: string;
providerId: string;
date: string; // YYYY-MM-DD
score?: number; // 0-100
metrics?: {
hrv?: number;
restingHeartRate?: number;
spo2?: number;
skinTemp?: number;
};
}
WorkoutData
Normalized workout data structure.
interface WorkoutData {
id: string;
providerId: string;
start: string; // ISO 8601 datetime
end: string; // ISO 8601 datetime
durationMs: number;
sportType: string;
strain?: number;
metrics?: {
averageHeartRate?: number;
maxHeartRate?: number;
calories?: number;
distance?: number;
};
}
Usage
Installing
npm install @wellpipe/core
Importing
import {
TokenProvider,
HealthProvider,
SleepData,
RecoveryData,
WorkoutData,
} from '@wellpipe/core';
Implementing TokenProvider
import { TokenProvider } from '@wellpipe/core';
class MyTokenProvider implements TokenProvider {
private accessToken: string;
private refreshToken?: string;
private expiresAt?: Date;
async getAccessToken(): Promise<string> {
if (await this.isExpired()) {
await this.refresh();
}
return this.accessToken;
}
async getRefreshToken(): Promise<string | undefined> {
return this.refreshToken;
}
async updateTokens(
accessToken: string,
refreshToken?: string,
expiresAt?: Date
): Promise<void> {
this.accessToken = accessToken;
this.refreshToken = refreshToken;
this.expiresAt = expiresAt;
}
async isExpired(): Promise<boolean> {
if (!this.expiresAt) return false;
return new Date() >= this.expiresAt;
}
private async refresh(): Promise<void> {
// Implement token refresh logic
}
}
Source
View the source code on GitHub: