trainingpeaks-sdk
Version:
TypeScript SDK for TrainingPeaks API integration
43 lines (42 loc) • 1.52 kB
JavaScript
import { createInMemorySessionStorage, createLogger } from '../adapters/index.js';
import { createHttpClient } from '../adapters/http/index.js';
import { createAuthRepository, createTrainingPeaksRepository, createWorkoutRepository, } from '../adapters/public-api/index.js';
import { getSDKConfig } from '../config.js';
import { getWorkoutsListEntrypoint, loginEntrypoint, logoutEntrypoint, } from '../entrypoints/index.js';
export const createTrainingPeaksSdk = (config = {}) => {
const sdkConfig = getSDKConfig(config);
const logger = createLogger({
level: sdkConfig.debug.level,
enabled: sdkConfig.debug.enabled,
});
logger.info('TrainingPeaks SDK initialized', { config });
const sessionStorage = createInMemorySessionStorage();
const httpClient = createHttpClient({
enableCookies: true,
logger,
sessionStorage,
});
const authRepository = createAuthRepository({
httpClient,
sessionStorage,
logger,
});
const workoutRepository = createWorkoutRepository({
httpClient,
logger,
});
const tpRepository = createTrainingPeaksRepository({
authRepository,
workoutRepository,
});
return {
login: loginEntrypoint({ tpRepository, logger }),
logout: logoutEntrypoint({ tpRepository, logger }),
getWorkoutsList: getWorkoutsListEntrypoint({
tpRepository,
sessionStorage,
logger,
}),
logger,
};
};