{
  "version": 3,
  "sources": ["../../../../src/packages/package-is-installable/checkEngine.ts"],
  "sourcesContent": ["import { PnpmError } from '../error/index.ts';\nimport semver from 'semver';\nimport type { PartialUndefined } from '../exec.pkg-requires-build/index.ts';\n\nexport class UnsupportedEngineError extends PnpmError {\n  wanted: WantedEngine;\n  current: Engine;\n  packageId: string;\n\n  constructor(packageId: string, wanted: WantedEngine, current: Engine) {\n    super(\n      'UNSUPPORTED_ENGINE',\n      `Unsupported engine for ${packageId}: wanted: ${JSON.stringify(wanted)} (current: ${JSON.stringify(current)})`\n    );\n\n    this.packageId = packageId;\n    this.wanted = wanted;\n    this.current = current;\n  }\n}\n\nexport function checkEngine(\n  packageId: string,\n  wantedEngine: WantedEngine | undefined,\n  currentEngine: Engine\n): UnsupportedEngineError | null {\n  if (typeof wantedEngine === 'undefined') {\n    return null;\n  }\n\n  const unsatisfiedWanted: WantedEngine = {};\n\n  if (\n    typeof wantedEngine.node === 'string' &&\n    !semver.satisfies(currentEngine.node, wantedEngine.node, {\n      includePrerelease: true,\n    })\n  ) {\n    unsatisfiedWanted.node = wantedEngine.node;\n  }\n\n  if (\n    typeof currentEngine.pnpm === 'string' &&\n    typeof wantedEngine.pnpm === 'string' &&\n    !semver.satisfies(currentEngine.pnpm, wantedEngine.pnpm, {\n      includePrerelease: true,\n    })\n  ) {\n    unsatisfiedWanted.pnpm = wantedEngine.pnpm;\n  }\n\n  if (Object.keys(unsatisfiedWanted).length > 0) {\n    return new UnsupportedEngineError(\n      packageId,\n      unsatisfiedWanted,\n      currentEngine\n    );\n  }\n\n  return null;\n}\n\nexport interface Engine {\n  node: string;\n  pnpm?: string | undefined;\n}\n\nexport type WantedEngine = PartialUndefined<Engine>;\n"],
  "mappings": "AAAA,SAAS,iBAAiB;AAC1B,OAAO,YAAY;AAGZ,MAAM,+BAA+B,UAAU;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,WAAmB,QAAsB,SAAiB;AACpE;AAAA,MACE;AAAA,MACA,0BAA0B,SAAS,aAAa,KAAK,UAAU,MAAM,CAAC,cAAc,KAAK,UAAU,OAAO,CAAC;AAAA,IAC7G;AAEA,SAAK,YAAY;AACjB,SAAK,SAAS;AACd,SAAK,UAAU;AAAA,EACjB;AACF;AAEO,SAAS,YACd,WACA,cACA,eAC+B;AAC/B,MAAI,OAAO,iBAAiB,aAAa;AACvC,WAAO;AAAA,EACT;AAEA,QAAM,oBAAkC,CAAC;AAEzC,MACE,OAAO,aAAa,SAAS,YAC7B,CAAC,OAAO,UAAU,cAAc,MAAM,aAAa,MAAM;AAAA,IACvD,mBAAmB;AAAA,EACrB,CAAC,GACD;AACA,sBAAkB,OAAO,aAAa;AAAA,EACxC;AAEA,MACE,OAAO,cAAc,SAAS,YAC9B,OAAO,aAAa,SAAS,YAC7B,CAAC,OAAO,UAAU,cAAc,MAAM,aAAa,MAAM;AAAA,IACvD,mBAAmB;AAAA,EACrB,CAAC,GACD;AACA,sBAAkB,OAAO,aAAa;AAAA,EACxC;AAEA,MAAI,OAAO,KAAK,iBAAiB,EAAE,SAAS,GAAG;AAC7C,WAAO,IAAI;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;",
  "names": []
}
