{
  "version": 3,
  "sources": ["../../../../src/packages/package-is-installable/index.ts"],
  "sourcesContent": ["import {\n  installCheckLogger,\n  skippedOptionalDependencyLogger,\n} from '../core-loggers/index.ts';\nimport { getSystemNodeVersion } from '../env.system-node-version/index.ts';\nimport {\n  checkEngine,\n  UnsupportedEngineError,\n  type WantedEngine,\n} from './checkEngine.ts';\nimport { checkPlatform, UnsupportedPlatformError } from './checkPlatform.ts';\nimport type { SupportedArchitectures } from '../types/index.ts';\n\nexport type { Engine } from './checkEngine.ts';\nexport type { Platform, WantedPlatform } from './checkPlatform.ts';\n\nexport { UnsupportedEngineError, UnsupportedPlatformError, type WantedEngine };\n\nexport async function packageIsInstallable(\n  pkgId: string,\n  pkg: {\n    name: string;\n    version: string;\n    engines?: WantedEngine | undefined;\n    cpu?: string[] | undefined;\n    os?: string[] | undefined;\n    libc?: string[] | undefined;\n  },\n  options: {\n    engineStrict?: boolean | undefined;\n    nodeVersion?: string | undefined;\n    optional: boolean;\n    pnpmVersion?: string | undefined;\n    lockfileDir: string;\n    supportedArchitectures?: SupportedArchitectures | undefined;\n  }\n): Promise<boolean> {\n  const warn = await checkPackage(pkgId, pkg, options);\n\n  if (warn == null) {\n    return true;\n  }\n\n  installCheckLogger.warn({\n    message: warn.message,\n    prefix: options.lockfileDir,\n  });\n\n  if (options.optional) {\n    skippedOptionalDependencyLogger.debug({\n      details: warn.toString(),\n      package: {\n        id: pkgId,\n        name: pkg.name,\n        version: pkg.version,\n      },\n      prefix: options.lockfileDir,\n      reason:\n        warn.code === 'ERR_PNPM_UNSUPPORTED_ENGINE'\n          ? 'unsupported_engine'\n          : 'unsupported_platform',\n    });\n\n    return false;\n  }\n\n  if (options.engineStrict === true) {\n    throw warn;\n  }\n\n  return false;\n}\n\nexport async function checkPackage(\n  pkgId: string,\n  manifest: {\n    engines?: WantedEngine | undefined;\n    cpu?: string[] | undefined;\n    os?: string[] | undefined;\n    libc?: string[] | undefined;\n  },\n  options: {\n    nodeVersion?: string | undefined;\n    pnpmVersion?: string | undefined;\n    supportedArchitectures?: SupportedArchitectures | undefined;\n  }\n): Promise<null | UnsupportedEngineError | UnsupportedPlatformError> {\n  return (\n    checkPlatform(\n      pkgId,\n      {\n        cpu: manifest.cpu ?? ['any'],\n        os: manifest.os ?? ['any'],\n        libc: manifest.libc ?? ['any'],\n      },\n      options.supportedArchitectures\n    ) ??\n    (manifest.engines == null\n      ? null\n      : checkEngine(pkgId, manifest.engines, {\n          node:\n            options.nodeVersion ??\n            (await getSystemNodeVersion()) ??\n            process.version,\n          pnpm: options.pnpmVersion,\n        }))\n  );\n}\n"],
  "mappings": "AAAA;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,4BAA4B;AACrC;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,eAAe,gCAAgC;AAQxD,eAAsB,qBACpB,OACA,KAQA,SAQkB;AAClB,QAAM,OAAO,MAAM,aAAa,OAAO,KAAK,OAAO;AAEnD,MAAI,QAAQ,MAAM;AAChB,WAAO;AAAA,EACT;AAEA,qBAAmB,KAAK;AAAA,IACtB,SAAS,KAAK;AAAA,IACd,QAAQ,QAAQ;AAAA,EAClB,CAAC;AAED,MAAI,QAAQ,UAAU;AACpB,oCAAgC,MAAM;AAAA,MACpC,SAAS,KAAK,SAAS;AAAA,MACvB,SAAS;AAAA,QACP,IAAI;AAAA,QACJ,MAAM,IAAI;AAAA,QACV,SAAS,IAAI;AAAA,MACf;AAAA,MACA,QAAQ,QAAQ;AAAA,MAChB,QACE,KAAK,SAAS,gCACV,uBACA;AAAA,IACR,CAAC;AAED,WAAO;AAAA,EACT;AAEA,MAAI,QAAQ,iBAAiB,MAAM;AACjC,UAAM;AAAA,EACR;AAEA,SAAO;AACT;AAEA,eAAsB,aACpB,OACA,UAMA,SAKmE;AACnE,SACE;AAAA,IACE;AAAA,IACA;AAAA,MACE,KAAK,SAAS,OAAO,CAAC,KAAK;AAAA,MAC3B,IAAI,SAAS,MAAM,CAAC,KAAK;AAAA,MACzB,MAAM,SAAS,QAAQ,CAAC,KAAK;AAAA,IAC/B;AAAA,IACA,QAAQ;AAAA,EACV,MACC,SAAS,WAAW,OACjB,OACA,YAAY,OAAO,SAAS,SAAS;AAAA,IACnC,MACE,QAAQ,eACP,MAAM,qBAAqB,KAC5B,QAAQ;AAAA,IACV,MAAM,QAAQ;AAAA,EAChB,CAAC;AAET;",
  "names": []
}
