feat(api): accept canonical chart timeframes

This commit is contained in:
u1
2026-03-29 14:03:12 +02:00
parent d72c07da86
commit 83b3485924

View File

@@ -380,7 +380,7 @@ function clampSeriesLimit(value, fallback) {
} }
function parseTimeframeToSeconds(tf) { function parseTimeframeToSeconds(tf) {
const v = String(tf || '').trim().toLowerCase(); const v = normalizeChartTimeframe(tf);
if (!v) return 60; if (!v) return 60;
const m = v.match(/^(\d+)(s|m|h|d)$/); const m = v.match(/^(\d+)(s|m|h|d)$/);
if (!m) throw new Error(`invalid_tf`); if (!m) throw new Error(`invalid_tf`);
@@ -391,6 +391,40 @@ function parseTimeframeToSeconds(tf) {
return num * mult; return num * mult;
} }
const SUPPORTED_CHART_TIMEFRAMES = new Set([
'1s',
'5s',
'15s',
'30s',
'1m',
'5m',
'15m',
'30m',
'1h',
'4h',
'8h',
'12h',
'1d',
]);
function normalizeChartTimeframe(tf) {
const raw = String(tf || '').trim();
if (!raw) return '1m';
const aliased =
raw === '1D' || raw === '24h' || raw === '24H'
? '1d'
: raw === '1H'
? '1h'
: raw.toLowerCase();
if (!SUPPORTED_CHART_TIMEFRAMES.has(aliased)) {
throw new Error('invalid_tf');
}
return aliased;
}
function isTruthy(value) { function isTruthy(value) {
if (typeof value === 'boolean') return value; if (typeof value === 'boolean') return value;
const v = String(value ?? '').trim().toLowerCase(); const v = String(value ?? '').trim().toLowerCase();