{"version":3,"file":"orderBy.cjs","names":[],"sources":["../../src/collection/orderBy.ts"],"sourcesContent":["/**\n * This method is like sortBy except that it allows specifying the sort orders of the iteratees to sort by\n * @param collection - The collection to iterate over\n * @param iteratees - The iteratees to sort by\n * @param orders - The sort orders of iteratees ('asc' or 'desc')\n * @returns Returns the new sorted array\n * @example\n * const users = [\n *   { name: 'John', age: 30 },\n *   { name: 'Jane', age: 25 }\n * ];\n * orderBy(users, ['age'], ['desc']);\n * // => [{name: 'John', age: 30}, {name: 'Jane', age: 25}]\n */\nexport function orderBy<T>(\n  collection: T[],\n  iteratees: ((item: T) => unknown) | string | Array<((item: T) => unknown) | string>,\n  orders?: ('asc' | 'desc')[],\n): T[] {\n  const iterateeArray = Array.isArray(iteratees) ? iteratees : [iteratees];\n  const orderArray = orders || iterateeArray.map(() => 'asc' as const);\n\n  return [...collection].sort((a, b) => {\n    for (let i = 0; i < iterateeArray.length; i++) {\n      const iteratee = iterateeArray[i];\n      const order = orderArray[i] || 'asc';\n\n      let aVal: unknown;\n      let bVal: unknown;\n\n      if (typeof iteratee === 'function') {\n        aVal = iteratee(a);\n        bVal = iteratee(b);\n      } else if (typeof iteratee === 'string') {\n        aVal = (a as Record<string, unknown>)[iteratee];\n        bVal = (b as Record<string, unknown>)[iteratee];\n      } else {\n        aVal = a;\n        bVal = b;\n      }\n\n      const left = aVal as string | number;\n      const right = bVal as string | number;\n      if (left < right) {\n        return order === 'asc' ? -1 : 1;\n      }\n      if (left > right) {\n        return order === 'asc' ? 1 : -1;\n      }\n    }\n\n    return 0;\n  });\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAcA,SAAgB,QACd,YACA,WACA,QACK;CACL,MAAM,gBAAgB,MAAM,QAAQ,SAAS,IAAI,YAAY,CAAC,SAAS;CACvE,MAAM,aAAa,UAAU,cAAc,UAAU,KAAc;CAEnE,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,MAAM,GAAG,MAAM;EACpC,KAAK,IAAI,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;GAC7C,MAAM,WAAW,cAAc;GAC/B,MAAM,QAAQ,WAAW,MAAM;GAE/B,IAAI;GACJ,IAAI;GAEJ,IAAI,OAAO,aAAa,YAAY;IAClC,OAAO,SAAS,CAAC;IACjB,OAAO,SAAS,CAAC;GACnB,OAAO,IAAI,OAAO,aAAa,UAAU;IACvC,OAAQ,EAA8B;IACtC,OAAQ,EAA8B;GACxC,OAAO;IACL,OAAO;IACP,OAAO;GACT;GAEA,MAAM,OAAO;GACb,MAAM,QAAQ;GACd,IAAI,OAAO,OACT,OAAO,UAAU,QAAQ,KAAK;GAEhC,IAAI,OAAO,OACT,OAAO,UAAU,QAAQ,IAAI;EAEjC;EAEA,OAAO;CACT,CAAC;AACH"}