{
  "version": 3,
  "sources": ["../../../../src/packages/symlink-dependency/symlinkDirectRootDependency.ts"],
  "sourcesContent": ["import { promises as fs } from 'node:fs';\nimport path from 'node:path';\nimport util from 'node:util';\nimport { type DependencyType, rootLogger } from '../core-loggers/index.ts';\nimport type { DependenciesField } from '../types/index.ts';\nimport symlinkDir from 'symlink-dir';\n\nconst DEP_TYPE_BY_DEPS_FIELD_NAME = {\n  dependencies: 'prod',\n  devDependencies: 'dev',\n  optionalDependencies: 'optional',\n};\n\nexport async function symlinkDirectRootDependency(\n  dependencyLocation: string,\n  destModulesDir: string,\n  importAs: string,\n  opts: {\n    fromDependenciesField?: DependenciesField;\n    linkedPackage: {\n      name: string;\n      version: string;\n    };\n    prefix: string;\n  }\n): Promise<void> {\n  // `opts.destModulesDir` may be a non-existent `node_modules` dir\n  // so `fs.realpath` would throw.\n  // Even though `symlinkDir` creates the dir if it doesn't exist,\n  // our dir may include an ancestor dir which is symlinked,\n  // so we create it if it doesn't exist, and then find its realpath.\n  let destModulesDirReal: string | undefined;\n\n  try {\n    destModulesDirReal = await fs.realpath(destModulesDir);\n  } catch (err: unknown) {\n    if (\n      util.types.isNativeError(err) &&\n      'code' in err &&\n      err.code === 'ENOENT'\n    ) {\n      await fs.mkdir(destModulesDir, { recursive: true });\n\n      destModulesDirReal = await fs.realpath(destModulesDir);\n    } else {\n      throw err;\n    }\n  }\n\n  const dest = path.join(destModulesDirReal, importAs);\n\n  const { reused } = await symlinkDir(dependencyLocation, dest);\n\n  if (reused) return; // if the link was already present, don't log\n\n  rootLogger.debug({\n    added: {\n      dependencyType:\n        opts.fromDependenciesField &&\n        (DEP_TYPE_BY_DEPS_FIELD_NAME[\n          opts.fromDependenciesField\n        ] as DependencyType),\n      linkedFrom: dependencyLocation,\n      name: importAs,\n      realName: opts.linkedPackage.name,\n      version: opts.linkedPackage.version,\n    },\n    prefix: opts.prefix,\n  });\n}\n"],
  "mappings": "AAAA,SAAS,YAAY,UAAU;AAC/B,OAAO,UAAU;AACjB,OAAO,UAAU;AACjB,SAA8B,kBAAkB;AAEhD,OAAO,gBAAgB;AAEvB,MAAM,8BAA8B;AAAA,EAClC,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,sBAAsB;AACxB;AAEA,eAAsB,4BACpB,oBACA,gBACA,UACA,MAQe;AAMf,MAAI;AAEJ,MAAI;AACF,yBAAqB,MAAM,GAAG,SAAS,cAAc;AAAA,EACvD,SAAS,KAAc;AACrB,QACE,KAAK,MAAM,cAAc,GAAG,KAC5B,UAAU,OACV,IAAI,SAAS,UACb;AACA,YAAM,GAAG,MAAM,gBAAgB,EAAE,WAAW,KAAK,CAAC;AAElD,2BAAqB,MAAM,GAAG,SAAS,cAAc;AAAA,IACvD,OAAO;AACL,YAAM;AAAA,IACR;AAAA,EACF;AAEA,QAAM,OAAO,KAAK,KAAK,oBAAoB,QAAQ;AAEnD,QAAM,EAAE,OAAO,IAAI,MAAM,WAAW,oBAAoB,IAAI;AAE5D,MAAI,OAAQ;AAEZ,aAAW,MAAM;AAAA,IACf,OAAO;AAAA,MACL,gBACE,KAAK,yBACJ,4BACC,KAAK,qBACP;AAAA,MACF,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,UAAU,KAAK,cAAc;AAAA,MAC7B,SAAS,KAAK,cAAc;AAAA,IAC9B;AAAA,IACA,QAAQ,KAAK;AAAA,EACf,CAAC;AACH;",
  "names": []
}
