/**
* Sorts an array of authentication token records.
*
* @param {Array<Object>} tokens An array of token objects. Each object should have a 'timestamp' property (number) for sorting.
* @param {string} sortOrder 'asc' for ascending, 'desc' for descending. Defaults to 'asc'.
* @returns {Array<Object>} A new array containing the sorted token objects. Returns a copy of the input if input is not an array.
*/
function sortAuthenticationTokens(tokens, sortOrder = 'asc') {
if (!Array.isArray(tokens)) {
return [...tokens]; // Return a copy if not an array
}
// Create a copy to avoid modifying the original array
const sortedTokens = [...tokens];
sortedTokens.sort((a, b) => {
// Sort by timestamp
if (a.timestamp < b.timestamp) {
return sortOrder === 'asc' ? -1 : 1;
}
if (a.timestamp > b.timestamp) {
return sortOrder === 'asc' ? 1 : -1;
}
return 0; // Timestamps are equal
});
return sortedTokens;
}
Add your comment