{"version":3,"file":"array-mutators.mjs","names":[],"sources":["../../../../../../../@warlock.js/seal/src/mutators/array-mutators.ts"],"sourcesContent":["import { get } from \"@mongez/reinforcements\";\r\nimport { isEmptyValue } from \"../helpers/is-empty-value\";\r\nimport type { Mutator } from \"../types\";\r\n\r\n/** Reverse array order */\r\nexport const flipArrayMutator: Mutator = async (value) => {\r\n  return value.reverse();\r\n};\r\n\r\n/** Reverse array order (alias) */\r\nexport const reverseArrayMutator: Mutator = async (value) => {\r\n  return value.reverse();\r\n};\r\n\r\n/** Sort array */\r\nexport const sortArrayMutator: Mutator = async (value, context) => {\r\n  if (!Array.isArray(value)) return value;\r\n\r\n  const sortDirection = context?.options.direction ?? \"asc\";\r\n  const sortByKey = context?.options.key ?? null;\r\n\r\n  return value.sort((a: any, b: any) => {\r\n    if (sortByKey) {\r\n      const aValue = get(a, sortByKey);\r\n      const bValue = get(b, sortByKey);\r\n\r\n      if (sortDirection === \"asc\") {\r\n        return aValue - bValue;\r\n      }\r\n      return bValue - aValue;\r\n    }\r\n\r\n    if (sortDirection === \"asc\") {\r\n      return a - b;\r\n    }\r\n    return b - a;\r\n  });\r\n};\r\n\r\n/** Make array have only unique values */\r\nexport const uniqueArrayMutator: Mutator = async (value) => {\r\n  return [...new Set(value)];\r\n};\r\n\r\n/** Remove empty elements from array */\r\nexport const removeEmptyArrayElementsMutator: Mutator = async (value) => {\r\n  return value.filter((item: any) => !isEmptyValue(item));\r\n};\r\n"],"mappings":";;;;;AAKA,MAAa,mBAA4B,OAAO,UAAU;CACxD,OAAO,MAAM,QAAQ;AACvB;;AAGA,MAAa,sBAA+B,OAAO,UAAU;CAC3D,OAAO,MAAM,QAAQ;AACvB;;AAGA,MAAa,mBAA4B,OAAO,OAAO,YAAY;CACjE,IAAI,CAAC,MAAM,QAAQ,KAAK,GAAG,OAAO;CAElC,MAAM,gBAAgB,SAAS,QAAQ,aAAa;CACpD,MAAM,YAAY,SAAS,QAAQ,OAAO;CAE1C,OAAO,MAAM,MAAM,GAAQ,MAAW;EACpC,IAAI,WAAW;GACb,MAAM,SAAS,IAAI,GAAG,SAAS;GAC/B,MAAM,SAAS,IAAI,GAAG,SAAS;GAE/B,IAAI,kBAAkB,OACpB,OAAO,SAAS;GAElB,OAAO,SAAS;EAClB;EAEA,IAAI,kBAAkB,OACpB,OAAO,IAAI;EAEb,OAAO,IAAI;CACb,CAAC;AACH;;AAGA,MAAa,qBAA8B,OAAO,UAAU;CAC1D,OAAO,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC;AAC3B;;AAGA,MAAa,kCAA2C,OAAO,UAAU;CACvE,OAAO,MAAM,QAAQ,SAAc,CAAC,aAAa,IAAI,CAAC;AACxD"}