(token)
| 62 | } |
| 63 | |
| 64 | async function validateCustomToken(token) { |
| 65 | const tokens = await loadCustomTokens(); |
| 66 | const tokenData = tokens[token]; |
| 67 | |
| 68 | if (!tokenData) return { success: false }; |
| 69 | |
| 70 | if (Date.now() > tokenData) { |
| 71 | delete tokens[token]; |
| 72 | await saveCustomTokens(tokens); |
| 73 | return { success: false }; |
| 74 | } |
| 75 | |
| 76 | return { success: true }; |
| 77 | } |
| 78 | |
| 79 | async function cleanupExpiredTokens() { |
| 80 | const tokens = await loadCustomTokens(); |
no test coverage detected