{
  "version": 3,
  "sources": ["../../../../src/packages/object.key-sorting/index.ts"],
  "sourcesContent": ["import { lexCompare } from '../util.lex-comparator/index.ts';\nimport _sortKeys from 'sort-keys';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function sortDirectKeys<T extends { [key: string]: any }>(obj: T): T {\n  return _sortKeys<T>(obj, {\n    compare: lexCompare,\n    deep: false,\n  });\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function sortDeepKeys<T extends { [key: string]: any }>(obj: T): T {\n  return _sortKeys<T>(obj, {\n    compare: lexCompare,\n    deep: true,\n  });\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function sortKeysByPriority<T extends { [key: string]: any }>(\n  opts: {\n    priority: Record<string, number>;\n    deep?: boolean | undefined;\n  },\n  obj: T\n): T {\n  const compare = compareWithPriority.bind(null, opts.priority);\n\n  return _sortKeys(obj, {\n    compare,\n    deep: opts.deep ?? false,\n  });\n}\n\nfunction compareWithPriority(\n  priority: Record<string, number>,\n  left: string,\n  right: string\n): number {\n  const leftPriority = priority[left];\n\n  const rightPriority = priority[right];\n\n  if (leftPriority != null && rightPriority != null) {\n    return leftPriority - rightPriority;\n  }\n\n  if (leftPriority != null) return -1;\n\n  if (rightPriority != null) return 1;\n\n  return lexCompare(left, right);\n}\n"],
  "mappings": "AAAA,SAAS,kBAAkB;AAC3B,OAAO,eAAe;AAGf,SAAS,eAAiD,KAAW;AAC1E,SAAO,UAAa,KAAK;AAAA,IACvB,SAAS;AAAA,IACT,MAAM;AAAA,EACR,CAAC;AACH;AAGO,SAAS,aAA+C,KAAW;AACxE,SAAO,UAAa,KAAK;AAAA,IACvB,SAAS;AAAA,IACT,MAAM;AAAA,EACR,CAAC;AACH;AAGO,SAAS,mBACd,MAIA,KACG;AACH,QAAM,UAAU,oBAAoB,KAAK,MAAM,KAAK,QAAQ;AAE5D,SAAO,UAAU,KAAK;AAAA,IACpB;AAAA,IACA,MAAM,KAAK,QAAQ;AAAA,EACrB,CAAC;AACH;AAEA,SAAS,oBACP,UACA,MACA,OACQ;AACR,QAAM,eAAe,SAAS,IAAI;AAElC,QAAM,gBAAgB,SAAS,KAAK;AAEpC,MAAI,gBAAgB,QAAQ,iBAAiB,MAAM;AACjD,WAAO,eAAe;AAAA,EACxB;AAEA,MAAI,gBAAgB,KAAM,QAAO;AAEjC,MAAI,iBAAiB,KAAM,QAAO;AAElC,SAAO,WAAW,MAAM,KAAK;AAC/B;",
  "names": []
}
