{
  "version": 3,
  "sources": ["../dist-src/index.js", "../dist-src/get-oauth-access-token.js", "../dist-src/auth.js", "../dist-src/hook.js", "../dist-src/version.js"],
  "sourcesContent": ["import { getUserAgent } from \"universal-user-agent\";\nimport { request as octokitRequest } from \"@octokit/request\";\nimport { auth } from \"./auth\";\nimport { hook } from \"./hook\";\nimport { VERSION } from \"./version\";\nfunction createOAuthDeviceAuth(options) {\n  const requestWithDefaults = options.request || octokitRequest.defaults({\n    headers: {\n      \"user-agent\": `octokit-auth-oauth-device.js/${VERSION} ${getUserAgent()}`\n    }\n  });\n  const { request = requestWithDefaults, ...otherOptions } = options;\n  const state = options.clientType === \"github-app\" ? {\n    ...otherOptions,\n    clientType: \"github-app\",\n    request\n  } : {\n    ...otherOptions,\n    clientType: \"oauth-app\",\n    request,\n    scopes: options.scopes || []\n  };\n  if (!options.clientId) {\n    throw new Error(\n      '[@octokit/auth-oauth-device] \"clientId\" option must be set (https://github.com/octokit/auth-oauth-device.js#usage)'\n    );\n  }\n  if (!options.onVerification) {\n    throw new Error(\n      '[@octokit/auth-oauth-device] \"onVerification\" option must be a function (https://github.com/octokit/auth-oauth-device.js#usage)'\n    );\n  }\n  return Object.assign(auth.bind(null, state), {\n    hook: hook.bind(null, state)\n  });\n}\nexport {\n  createOAuthDeviceAuth\n};\n", "import { createDeviceCode, exchangeDeviceCode } from \"@octokit/oauth-methods\";\nasync function getOAuthAccessToken(state, options) {\n  const cachedAuthentication = getCachedAuthentication(state, options.auth);\n  if (cachedAuthentication)\n    return cachedAuthentication;\n  const { data: verification } = await createDeviceCode({\n    clientType: state.clientType,\n    clientId: state.clientId,\n    request: options.request || state.request,\n    // @ts-expect-error the extra code to make TS happy is not worth it\n    scopes: options.auth.scopes || state.scopes\n  });\n  await state.onVerification(verification);\n  const authentication = await waitForAccessToken(\n    options.request || state.request,\n    state.clientId,\n    state.clientType,\n    verification\n  );\n  state.authentication = authentication;\n  return authentication;\n}\nfunction getCachedAuthentication(state, auth) {\n  if (auth.refresh === true)\n    return false;\n  if (!state.authentication)\n    return false;\n  if (state.clientType === \"github-app\") {\n    return state.authentication;\n  }\n  const authentication = state.authentication;\n  const newScope = (\"scopes\" in auth && auth.scopes || state.scopes).join(\n    \" \"\n  );\n  const currentScope = authentication.scopes.join(\" \");\n  return newScope === currentScope ? authentication : false;\n}\nasync function wait(seconds) {\n  await new Promise((resolve) => setTimeout(resolve, seconds * 1e3));\n}\nasync function waitForAccessToken(request, clientId, clientType, verification) {\n  try {\n    const options = {\n      clientId,\n      request,\n      code: verification.device_code\n    };\n    const { authentication } = clientType === \"oauth-app\" ? await exchangeDeviceCode({\n      ...options,\n      clientType: \"oauth-app\"\n    }) : await exchangeDeviceCode({\n      ...options,\n      clientType: \"github-app\"\n    });\n    return {\n      type: \"token\",\n      tokenType: \"oauth\",\n      ...authentication\n    };\n  } catch (error) {\n    if (!error.response)\n      throw error;\n    const errorType = error.response.data.error;\n    if (errorType === \"authorization_pending\") {\n      await wait(verification.interval);\n      return waitForAccessToken(request, clientId, clientType, verification);\n    }\n    if (errorType === \"slow_down\") {\n      await wait(verification.interval + 5);\n      return waitForAccessToken(request, clientId, clientType, verification);\n    }\n    throw error;\n  }\n}\nexport {\n  getOAuthAccessToken\n};\n", "import { getOAuthAccessToken } from \"./get-oauth-access-token\";\nasync function auth(state, authOptions) {\n  return getOAuthAccessToken(state, {\n    auth: authOptions\n  });\n}\nexport {\n  auth\n};\n", "import { getOAuthAccessToken } from \"./get-oauth-access-token\";\nasync function hook(state, request, route, parameters) {\n  let endpoint = request.endpoint.merge(\n    route,\n    parameters\n  );\n  if (/\\/login\\/(oauth\\/access_token|device\\/code)$/.test(endpoint.url)) {\n    return request(endpoint);\n  }\n  const { token } = await getOAuthAccessToken(state, {\n    request,\n    auth: { type: \"oauth\" }\n  });\n  endpoint.headers.authorization = `token ${token}`;\n  return request(endpoint);\n}\nexport {\n  hook\n};\n", "const VERSION = \"4.0.5\";\nexport {\n  VERSION\n};\n"],
  "mappings": "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",
  "names": ["auth"]
}
