{
  "version": 3,
  "sources": ["../../../../src/packages/config/readLocalConfig.ts"],
  "sourcesContent": ["import path from 'node:path';\nimport util from 'node:util';\nimport camelcaseKeys from 'camelcase-keys';\nimport { envReplace } from '@pnpm/config.env-replace';\nimport { readIniFile } from 'read-ini-file';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { parseField } from '@pnpm/npm-conf/lib/util';\nimport { types } from './types.ts';\nimport process from 'node:process';\nimport type { ModulesDir } from '../types/project.ts';\n\nexport type LocalConfig = Record<string, string> & {\n  modulesDir?: ModulesDir | undefined;\n  hoist?: boolean | undefined;\n};\n\nexport async function readLocalConfig(prefix: string): Promise<LocalConfig> {\n  try {\n    const ini = (await readIniFile(path.join(prefix, '.npmrc'))) as Record<\n      string,\n      string\n    >;\n\n    for (let [key, val] of Object.entries(ini)) {\n      if (typeof val === 'string') {\n        try {\n          key = envReplace(key, process.env);\n\n          ini[key] = parseField(\n            types,\n            envReplace(val, process.env),\n            key\n          ) as string;\n        } catch {}\n      }\n    }\n\n    // TODO: valibot schema\n    const config = camelcaseKeys(ini) as LocalConfig;\n\n    if (typeof config.shamefullyFlatten === 'string') {\n      config.hoistPattern = '*';\n      // TODO: print a warning\n    }\n\n    if (config.hoist === false) {\n      config.hoistPattern = '';\n    }\n\n    return config;\n  } catch (err: unknown) {\n    if (\n      util.types.isNativeError(err) &&\n      'code' in err &&\n      err.code === 'ENOENT'\n    ) {\n      return {};\n    }\n\n    throw err;\n  }\n}\n"],
  "mappings": "AAAA,OAAO,UAAU;AACjB,OAAO,UAAU;AACjB,OAAO,mBAAmB;AAC1B,SAAS,kBAAkB;AAC3B,SAAS,mBAAmB;AAG5B,SAAS,kBAAkB;AAC3B,SAAS,aAAa;AACtB,OAAO,aAAa;AAQpB,eAAsB,gBAAgB,QAAsC;AAC1E,MAAI;AACF,UAAM,MAAO,MAAM,YAAY,KAAK,KAAK,QAAQ,QAAQ,CAAC;AAK1D,aAAS,CAAC,KAAK,GAAG,KAAK,OAAO,QAAQ,GAAG,GAAG;AAC1C,UAAI,OAAO,QAAQ,UAAU;AAC3B,YAAI;AACF,gBAAM,WAAW,KAAK,QAAQ,GAAG;AAEjC,cAAI,GAAG,IAAI;AAAA,YACT;AAAA,YACA,WAAW,KAAK,QAAQ,GAAG;AAAA,YAC3B;AAAA,UACF;AAAA,QACF,QAAQ;AAAA,QAAC;AAAA,MACX;AAAA,IACF;AAGA,UAAM,SAAS,cAAc,GAAG;AAEhC,QAAI,OAAO,OAAO,sBAAsB,UAAU;AAChD,aAAO,eAAe;AAAA,IAExB;AAEA,QAAI,OAAO,UAAU,OAAO;AAC1B,aAAO,eAAe;AAAA,IACxB;AAEA,WAAO;AAAA,EACT,SAAS,KAAc;AACrB,QACE,KAAK,MAAM,cAAc,GAAG,KAC5B,UAAU,OACV,IAAI,SAAS,UACb;AACA,aAAO,CAAC;AAAA,IACV;AAEA,UAAM;AAAA,EACR;AACF;",
  "names": []
}
