{"version":3,"file":"index.cjs","sources":["../index.js"],"sourcesContent":["const MAX_HEADER_LENGTH = 2000\nconst THROW_ON_MAX_HEADER_LENGTH_EXCEEDED = false\n\nfunction hasRel (x) {\n  return x && x.rel\n}\n\nfunction intoRels (acc, x) {\n  function splitRel (rel) {\n    acc[rel] = Object.assign({}, x, { rel: rel })\n  }\n\n  x.rel.split(/\\s+/).forEach(splitRel)\n\n  return acc\n}\n\nfunction createObjects (acc, p) {\n  // rel=\"next\" => 1: rel 2: next\n  const m = p.match(/\\s*(.+)\\s*=\\s*\"?([^\"]+)\"?/)\n  if (m) acc[m[1]] = m[2]\n  return acc\n}\n\nfunction parseLink (link) {\n  try {\n    const m = link.match(/<?([^>]*)>(.*)/)\n    const linkUrl = m[1]\n    const parts = m[2].split(';')\n    const qry = {}\n    // The origin is unused but it's required to parse relative URLs\n    const url = new URL(linkUrl, 'https://example.com')\n\n    for (const [key, value] of url.searchParams) {\n      qry[key] = value\n    }\n\n    parts.shift()\n\n    let info = parts.reduce(createObjects, {})\n    info = Object.assign({}, qry, info)\n    info.url = linkUrl\n    return info\n  } catch {\n    return null\n  }\n}\n\nfunction checkHeader (linkHeader, options) {\n  if (!linkHeader) return false\n\n  options = options || {}\n  const maxHeaderLength = options.maxHeaderLength || MAX_HEADER_LENGTH\n  const throwOnMaxHeaderLengthExceeded = options.throwOnMaxHeaderLengthExceeded || THROW_ON_MAX_HEADER_LENGTH_EXCEEDED\n\n  if (linkHeader.length > maxHeaderLength) {\n    if (throwOnMaxHeaderLengthExceeded) {\n      throw new Error('Input string too long, it should be under ' + maxHeaderLength + ' characters.')\n    } else {\n      return false\n    }\n  }\n  return true\n}\n\nfunction parseLinkHeader (linkHeader, options) {\n  if (!checkHeader(linkHeader, options)) return null\n\n  return linkHeader.split(/,\\s*</)\n    .map(parseLink)\n    .filter(hasRel)\n    .reduce(intoRels, {})\n}\n\nexport { parseLinkHeader }\n"],"names":[],"mappings":"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"}