// services/callTest/parseArgs.js import { isStoreNumberToken, normalizeE164 } from './config.js'; /** * Parse /calltest args into a command descriptor. * @returns {{ kind: 'usage'|'status'|'store'|'dial', storeNum?: string, dial?: string, dialOverride?: string|null, testId?: string }} */ export function parseCallTestArgs(args = []) { const tokens = (args || []).map((a) => String(a).trim()).filter(Boolean); if (!tokens.length) return { kind: 'usage' }; const first = tokens[0].toLowerCase(); if (first === 'status') { const testId = tokens[1]; return testId ? { kind: 'status', testId } : { kind: 'usage' }; } if (first === 'store') { const storeNum = tokens[1]; if (!storeNum || !isStoreNumberToken(storeNum)) return { kind: 'usage' }; const override = tokens[2] ? normalizeE164(tokens[2]) : null; if (tokens[2] && !override) return { kind: 'usage' }; return { kind: 'store', storeNum, dialOverride: override }; } if (first === 'dial') { const dial = normalizeE164(tokens[1]); return dial ? { kind: 'dial', dial } : { kind: 'usage' }; } if (isStoreNumberToken(first)) { const override = tokens[1] ? normalizeE164(tokens[1]) : null; if (tokens[1] && !override) return { kind: 'usage' }; return { kind: 'store', storeNum: first, dialOverride: override }; } const dial = normalizeE164(first); if (dial) return { kind: 'dial', dial }; return { kind: 'usage' }; }