{
  "version": 3,
  "sources": ["../../../../src/packages/find-workspace-dir/index.ts"],
  "sourcesContent": ["import fs from 'node:fs';\nimport path from 'node:path';\nimport { PnpmError } from '../error/index.ts';\nimport { findUp } from 'find-up';\nimport process from 'node:process';\nimport type { WorkspaceDir } from '../types/project.ts';\n\nconst WORKSPACE_DIR_ENV_VAR = 'NPM_CONFIG_WORKSPACE_DIR';\nconst WORKSPACE_MANIFEST_FILENAME = 'pnpm-workspace.yaml';\nconst INVALID_WORKSPACE_MANIFEST_FILENAME = [\n  'pnpm-workspaces.yaml',\n  'pnpm-workspaces.yml',\n  'pnpm-workspace.yml',\n];\n\nexport async function findWorkspaceDir(\n  cwd: string\n): Promise<WorkspaceDir | undefined> {\n  const workspaceManifestDirEnvVar =\n    process.env[WORKSPACE_DIR_ENV_VAR] ??\n    process.env[WORKSPACE_DIR_ENV_VAR.toLowerCase()];\n\n  const workspaceManifestLocation =\n    typeof workspaceManifestDirEnvVar === 'string'\n      ? path.join(workspaceManifestDirEnvVar, WORKSPACE_MANIFEST_FILENAME)\n      : await findUp(\n          [WORKSPACE_MANIFEST_FILENAME, ...INVALID_WORKSPACE_MANIFEST_FILENAME],\n          { cwd: await getRealPath(cwd) }\n        );\n\n  if (\n    typeof workspaceManifestLocation === 'string' &&\n    path.basename(workspaceManifestLocation) !== WORKSPACE_MANIFEST_FILENAME\n  ) {\n    throw new PnpmError(\n      'BAD_WORKSPACE_MANIFEST_NAME',\n      `The workspace manifest file should be named \"pnpm-workspace.yaml\". File found: ${workspaceManifestLocation}`\n    );\n  }\n\n  return typeof workspaceManifestLocation === 'string'\n    ? (path.dirname(workspaceManifestLocation) as WorkspaceDir)\n    : undefined;\n}\n\nasync function getRealPath(path: string): Promise<string> {\n  return new Promise<string>((resolve) => {\n    // We need to resolve the real native path for case-insensitive file systems.\n    // For example, we can access file as C:\\Code\\Project as well as c:\\code\\projects\n    // Without this we can face a problem when try to install packages with -w flag,\n    // when root dir is using c:\\code\\projects but packages were found by C:\\Code\\Project\n    fs.realpath.native(path, (err, resolvedPath) => {\n      resolve(err !== null ? path : resolvedPath);\n    });\n  });\n}\n"],
  "mappings": "AAAA,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,SAAS,iBAAiB;AAC1B,SAAS,cAAc;AACvB,OAAO,aAAa;AAGpB,MAAM,wBAAwB;AAC9B,MAAM,8BAA8B;AACpC,MAAM,sCAAsC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AACF;AAEA,eAAsB,iBACpB,KACmC;AACnC,QAAM,6BACJ,QAAQ,IAAI,qBAAqB,KACjC,QAAQ,IAAI,sBAAsB,YAAY,CAAC;AAEjD,QAAM,4BACJ,OAAO,+BAA+B,WAClC,KAAK,KAAK,4BAA4B,2BAA2B,IACjE,MAAM;AAAA,IACJ,CAAC,6BAA6B,GAAG,mCAAmC;AAAA,IACpE,EAAE,KAAK,MAAM,YAAY,GAAG,EAAE;AAAA,EAChC;AAEN,MACE,OAAO,8BAA8B,YACrC,KAAK,SAAS,yBAAyB,MAAM,6BAC7C;AACA,UAAM,IAAI;AAAA,MACR;AAAA,MACA,kFAAkF,yBAAyB;AAAA,IAC7G;AAAA,EACF;AAEA,SAAO,OAAO,8BAA8B,WACvC,KAAK,QAAQ,yBAAyB,IACvC;AACN;AAEA,eAAe,YAAYA,OAA+B;AACxD,SAAO,IAAI,QAAgB,CAAC,YAAY;AAKtC,OAAG,SAAS,OAAOA,OAAM,CAAC,KAAK,iBAAiB;AAC9C,cAAQ,QAAQ,OAAOA,QAAO,YAAY;AAAA,IAC5C,CAAC;AAAA,EACH,CAAC;AACH;",
  "names": ["path"]
}
