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
JavaScript
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 };
}
}