{
  "version": 3,
  "sources": ["../../../../src/packages/network.auth-header/getAuthHeadersFromConfig.ts"],
  "sourcesContent": ["import { PnpmError } from '../error/index.ts';\nimport { spawnSync } from 'node:child_process';\nimport fs from 'node:fs';\nimport path from 'node:path';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport nerfDart from 'nerf-dart';\n\nexport type ConfigValue = string;\n\nexport type ConfigSettings = {\n  [key: string]: ConfigValue | undefined;\n};\n\nexport type AuthHeadersByURI = {\n  [uri: string]: string;\n};\n\ntype GetAuthHeadersConfig = {\n  allSettings: ConfigSettings;\n  userSettings: ConfigSettings;\n};\n\nexport function getAuthHeadersFromConfig({\n  allSettings,\n  userSettings,\n}: GetAuthHeadersConfig): AuthHeadersByURI {\n  const authHeaderValueByURI: AuthHeadersByURI = {};\n\n  for (const [key, value] of Object.entries(allSettings)) {\n    const [uri, authType] = splitKey(key);\n\n    if (typeof uri === 'undefined' || typeof authType === 'undefined') {\n      continue;\n    }\n\n    switch (authType) {\n      case '_authToken': {\n        authHeaderValueByURI[uri] = `Bearer ${value}`;\n\n        continue;\n      }\n\n      case '_auth': {\n        authHeaderValueByURI[uri] = `Basic ${value}`;\n\n        continue;\n      }\n\n      case 'username': {\n        if (`${uri}:_password` in allSettings) {\n          const password = Buffer.from(\n            allSettings[`${uri}:_password`] ?? '',\n            'base64'\n          ).toString('utf8');\n\n          authHeaderValueByURI[uri] =\n            `Basic ${Buffer.from(`${value}:${password}`).toString('base64')}`;\n\n          continue;\n        }\n      }\n    }\n  }\n\n  for (const [key, value] of Object.entries(userSettings)) {\n    const [uri, authType] = splitKey(key);\n\n    if (\n      typeof uri === 'undefined' ||\n      typeof authType === 'undefined' ||\n      typeof value === 'undefined'\n    ) {\n      continue;\n    }\n\n    if (authType === 'tokenHelper') {\n      authHeaderValueByURI[uri] = loadToken(value, key);\n    }\n  }\n\n  const registry =\n    typeof allSettings['registry'] === 'undefined'\n      ? '//registry.npmjs.org/'\n      : nerfDart(allSettings['registry']);\n\n  if (typeof userSettings['tokenHelper'] !== 'undefined') {\n    authHeaderValueByURI[registry] = loadToken(\n      userSettings['tokenHelper'],\n      'tokenHelper'\n    );\n  } else if (typeof allSettings['_authToken'] !== 'undefined') {\n    authHeaderValueByURI[registry] = `Bearer ${allSettings['_authToken']}`;\n  } else if (typeof allSettings['_auth'] !== 'undefined') {\n    authHeaderValueByURI[registry] = `Basic ${allSettings['_auth']}`;\n  } else if (\n    typeof allSettings['_password'] !== 'undefined' &&\n    typeof allSettings['username'] !== 'undefined'\n  ) {\n    authHeaderValueByURI[registry] =\n      `Basic ${Buffer.from(`${allSettings.username}:${allSettings['_password']}`).toString('base64')}`;\n  }\n  return authHeaderValueByURI;\n}\n\nfunction splitKey(key: string): string[] {\n  const index = key.lastIndexOf(':');\n\n  if (index === -1) {\n    return [key, ''];\n  }\n\n  return [key.slice(0, index), key.slice(index + 1)];\n}\n\nexport function loadToken(\n  helperPath: ConfigValue,\n  settingName: string\n): string {\n  if (!path.isAbsolute(helperPath) || !fs.existsSync(helperPath)) {\n    throw new PnpmError(\n      'BAD_TOKEN_HELPER_PATH',\n      `${settingName} must be an absolute path, without arguments`\n    );\n  }\n\n  const spawnResult = spawnSync(helperPath, { shell: true });\n\n  if (spawnResult.status !== 0) {\n    throw new PnpmError(\n      'TOKEN_HELPER_ERROR_STATUS',\n      `Error running \"${helperPath}\" as a token helper, configured as ${settingName}. Exit code ${spawnResult.status?.toString() ?? ''}`\n    );\n  }\n  return spawnResult.stdout.toString('utf8').trimEnd();\n}\n"],
  "mappings": "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",
  "names": []
}
