1. /**
  2. * Sorts an array of authentication token records.
  3. *
  4. * @param {Array<Object>} tokens An array of token objects. Each object should have a 'timestamp' property (number) for sorting.
  5. * @param {string} sortOrder 'asc' for ascending, 'desc' for descending. Defaults to 'asc'.
  6. * @returns {Array<Object>} A new array containing the sorted token objects. Returns a copy of the input if input is not an array.
  7. */
  8. function sortAuthenticationTokens(tokens, sortOrder = 'asc') {
  9. if (!Array.isArray(tokens)) {
  10. return [...tokens]; // Return a copy if not an array
  11. }
  12. // Create a copy to avoid modifying the original array
  13. const sortedTokens = [...tokens];
  14. sortedTokens.sort((a, b) => {
  15. // Sort by timestamp
  16. if (a.timestamp < b.timestamp) {
  17. return sortOrder === 'asc' ? -1 : 1;
  18. }
  19. if (a.timestamp > b.timestamp) {
  20. return sortOrder === 'asc' ? 1 : -1;
  21. }
  22. return 0; // Timestamps are equal
  23. });
  24. return sortedTokens;
  25. }

Add your comment