Initial commit: restructure to flat layout with ui/ and web/ at root
This commit is contained in:
55
web/server/lib/quota/utils/transformers.js
Normal file
55
web/server/lib/quota/utils/transformers.js
Normal file
@@ -0,0 +1,55 @@
|
||||
export const asObject = (value) => (value && typeof value === 'object' ? value : null);
|
||||
|
||||
export const asNonEmptyString = (value) => {
|
||||
if (typeof value !== 'string') return null;
|
||||
const trimmed = value.trim();
|
||||
return trimmed ? trimmed : null;
|
||||
};
|
||||
|
||||
export const toNumber = (value) => {
|
||||
if (typeof value === 'number' && Number.isFinite(value)) {
|
||||
return value;
|
||||
}
|
||||
if (typeof value === 'string') {
|
||||
const parsed = Number(value);
|
||||
return Number.isFinite(parsed) ? parsed : null;
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
export const toTimestamp = (value) => {
|
||||
if (!value) return null;
|
||||
if (typeof value === 'number') {
|
||||
return value < 1_000_000_000_000 ? value * 1000 : value;
|
||||
}
|
||||
if (typeof value === 'string') {
|
||||
const parsed = Date.parse(value);
|
||||
return Number.isNaN(parsed) ? null : parsed;
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
export const normalizeTimestamp = (value) => {
|
||||
if (typeof value !== 'number') return null;
|
||||
return value < 1_000_000_000_000 ? value * 1000 : value;
|
||||
};
|
||||
|
||||
export const resolveWindowSeconds = (limit) => {
|
||||
const ZAI_TOKEN_WINDOW_SECONDS = { 3: 3600 };
|
||||
if (!limit || !limit.number) return null;
|
||||
const unitSeconds = ZAI_TOKEN_WINDOW_SECONDS[limit.unit];
|
||||
if (!unitSeconds) return null;
|
||||
return unitSeconds * limit.number;
|
||||
};
|
||||
|
||||
export const resolveWindowLabel = (windowSeconds) => {
|
||||
if (!windowSeconds) return 'tokens';
|
||||
if (windowSeconds % 86400 === 0) {
|
||||
const days = windowSeconds / 86400;
|
||||
return days === 7 ? 'weekly' : `${days}d`;
|
||||
}
|
||||
if (windowSeconds % 3600 === 0) {
|
||||
return `${windowSeconds / 3600}h`;
|
||||
}
|
||||
return `${windowSeconds}s`;
|
||||
};
|
||||
Reference in New Issue
Block a user