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