(value)
| 18 | const SUCCESS_THRESHOLD = 0.95; |
| 19 | |
| 20 | function parseSince(value) { |
| 21 | if (!value) return null; |
| 22 | // Try relative duration first (1h / 30m / 2d / 45s) — unambiguous. |
| 23 | const m = String(value).match(/^(\d+)\s*(s|m|h|d)$/i); |
| 24 | if (m) { |
| 25 | const n = Number(m[1]); |
| 26 | const unit = m[2].toLowerCase(); |
| 27 | const factor = unit === 's' ? 1000 : unit === 'm' ? 60000 : unit === 'h' ? 3600000 : 86400000; |
| 28 | return Date.now() - (n * factor); |
| 29 | } |
| 30 | // Then ISO-8601. Require '-' or 'T' so we don't accept loose numeric |
| 31 | // strings like "5" → year 2001. |
| 32 | if (/[-T]/.test(String(value))) { |
| 33 | const iso = Date.parse(value); |
| 34 | if (!Number.isNaN(iso)) return iso; |
| 35 | } |
| 36 | return undefined; |
| 37 | } |
| 38 | |
| 39 | function parseArgs(argv) { |
| 40 | const args = { since: null, json: false }; |
no test coverage detected