UNPKG

typing-speed-test-api

Version:

A simple Node.js API to calculate typing speed and accuracy based on user input.

36 lines (31 loc) 1.24 kB
function calculateWPM(text, timeInSeconds) { const words = text.trim().split(/\s+/).length; return (words / (timeInSeconds / 60)).toFixed(2); } function calculateAccuracy(original, typed) { const originalWords = original.trim().split(/\s+/); const typedWords = typed.trim().split(/\s+/); let correct = 0; for (let i = 0; i < Math.min(originalWords.length, typedWords.length); i++) { if (originalWords[i] === typedWords[i]) { correct++; } } const accuracy = (correct / originalWords.length) * 100; return accuracy.toFixed(2); } exports.typing_speed_test = async (original, typed, timeTaken) => { try { if (!original || !typed || typeof timeTaken !== "number") { return { error: "Please provide 'original', 'typed', and 'timeTaken' in seconds." }; } const wpm = calculateWPM(typed, timeTaken); const accuracy = calculateAccuracy(original, typed); return {timeTaken, wpm: parseFloat(wpm),accuracy: parseFloat(accuracy)} } catch (error) { console.log(error); return { message: "Error fetching distance", error: error.message }; } }