{
  "version": 3,
  "sources": ["../../../../src/packages/lockfile.fs/sortLockfileKeys.ts"],
  "sourcesContent": ["import type { LockfileFile } from '../lockfile.types/index.ts';\nimport {\n  sortKeysByPriority,\n  sortDirectKeys,\n  sortDeepKeys,\n} from '../object.key-sorting/index.ts';\n\nconst ORDERED_KEYS = {\n  resolution: 1,\n  id: 2,\n\n  name: 3,\n  version: 4,\n\n  engines: 5,\n  cpu: 6,\n  os: 7,\n  libc: 8,\n\n  deprecated: 9,\n  hasBin: 10,\n  prepare: 11,\n  requiresBuild: 12,\n\n  bundleDependencies: 13,\n  peerDependencies: 14,\n  peerDependenciesMeta: 15,\n\n  dependencies: 16,\n  optionalDependencies: 17,\n\n  transitivePeerDependencies: 18,\n  dev: 19,\n  optional: 20,\n};\n\ntype RootKey = keyof LockfileFile;\nconst ROOT_KEYS: readonly RootKey[] = [\n  'lockfileVersion',\n  'settings',\n  'catalogs',\n  'overrides',\n  'packageExtensionsChecksum',\n  'pnpmfileChecksum',\n  'patchedDependencies',\n  'importers',\n  'packages',\n];\nconst ROOT_KEYS_ORDER = Object.fromEntries(\n  ROOT_KEYS.map((key, index) => [key, index])\n);\n\nexport function sortLockfileKeys(lockfile: LockfileFile): LockfileFile {\n  if (lockfile.importers != null) {\n    lockfile.importers = sortDirectKeys(lockfile.importers);\n    for (const [importerId, importer] of Object.entries(lockfile.importers)) {\n      lockfile.importers[importerId] = sortKeysByPriority(\n        {\n          priority: ROOT_KEYS_ORDER,\n          deep: true,\n        },\n        importer\n      );\n    }\n  }\n  if (lockfile.packages != null) {\n    lockfile.packages = sortDirectKeys(lockfile.packages);\n    for (const [pkgId, pkg] of Object.entries(lockfile.packages)) {\n      lockfile.packages[pkgId] = sortKeysByPriority(\n        {\n          priority: ORDERED_KEYS,\n          deep: true,\n        },\n        pkg\n      );\n    }\n  }\n  if (lockfile.snapshots != null) {\n    lockfile.snapshots = sortDirectKeys(lockfile.snapshots);\n    for (const [pkgId, pkg] of Object.entries(lockfile.snapshots)) {\n      lockfile.snapshots[pkgId] = sortKeysByPriority(\n        {\n          priority: ORDERED_KEYS,\n          deep: true,\n        },\n        pkg\n      );\n    }\n  }\n  if (lockfile.catalogs != null) {\n    lockfile.catalogs = sortDirectKeys(lockfile.catalogs);\n    for (const [catalogName, catalog] of Object.entries(lockfile.catalogs)) {\n      lockfile.catalogs[catalogName] = sortDeepKeys(catalog);\n    }\n  }\n  for (const key of ['time', 'patchedDependencies'] as const) {\n    if (!lockfile[key]) continue;\n    lockfile[key] = sortDirectKeys<any>(lockfile[key]); // eslint-disable-line @typescript-eslint/no-explicit-any\n  }\n  return sortKeysByPriority({ priority: ROOT_KEYS_ORDER }, lockfile);\n}\n"],
  "mappings": "AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,MAAM,eAAe;AAAA,EACnB,YAAY;AAAA,EACZ,IAAI;AAAA,EAEJ,MAAM;AAAA,EACN,SAAS;AAAA,EAET,SAAS;AAAA,EACT,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,MAAM;AAAA,EAEN,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,eAAe;AAAA,EAEf,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,sBAAsB;AAAA,EAEtB,cAAc;AAAA,EACd,sBAAsB;AAAA,EAEtB,4BAA4B;AAAA,EAC5B,KAAK;AAAA,EACL,UAAU;AACZ;AAGA,MAAM,YAAgC;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,MAAM,kBAAkB,OAAO;AAAA,EAC7B,UAAU,IAAI,CAAC,KAAK,UAAU,CAAC,KAAK,KAAK,CAAC;AAC5C;AAEO,SAAS,iBAAiB,UAAsC;AACrE,MAAI,SAAS,aAAa,MAAM;AAC9B,aAAS,YAAY,eAAe,SAAS,SAAS;AACtD,eAAW,CAAC,YAAY,QAAQ,KAAK,OAAO,QAAQ,SAAS,SAAS,GAAG;AACvE,eAAS,UAAU,UAAU,IAAI;AAAA,QAC/B;AAAA,UACE,UAAU;AAAA,UACV,MAAM;AAAA,QACR;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,SAAS,YAAY,MAAM;AAC7B,aAAS,WAAW,eAAe,SAAS,QAAQ;AACpD,eAAW,CAAC,OAAO,GAAG,KAAK,OAAO,QAAQ,SAAS,QAAQ,GAAG;AAC5D,eAAS,SAAS,KAAK,IAAI;AAAA,QACzB;AAAA,UACE,UAAU;AAAA,UACV,MAAM;AAAA,QACR;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,SAAS,aAAa,MAAM;AAC9B,aAAS,YAAY,eAAe,SAAS,SAAS;AACtD,eAAW,CAAC,OAAO,GAAG,KAAK,OAAO,QAAQ,SAAS,SAAS,GAAG;AAC7D,eAAS,UAAU,KAAK,IAAI;AAAA,QAC1B;AAAA,UACE,UAAU;AAAA,UACV,MAAM;AAAA,QACR;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,SAAS,YAAY,MAAM;AAC7B,aAAS,WAAW,eAAe,SAAS,QAAQ;AACpD,eAAW,CAAC,aAAa,OAAO,KAAK,OAAO,QAAQ,SAAS,QAAQ,GAAG;AACtE,eAAS,SAAS,WAAW,IAAI,aAAa,OAAO;AAAA,IACvD;AAAA,EACF;AACA,aAAW,OAAO,CAAC,QAAQ,qBAAqB,GAAY;AAC1D,QAAI,CAAC,SAAS,GAAG,EAAG;AACpB,aAAS,GAAG,IAAI,eAAoB,SAAS,GAAG,CAAC;AAAA,EACnD;AACA,SAAO,mBAAmB,EAAE,UAAU,gBAAgB,GAAG,QAAQ;AACnE;",
  "names": []
}
