{"version":3,"sources":["jsdelivr-header.js","/npm/gh-resolve@5.2.1/lib/resolve.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACDA,IAAI,QAAU,QAAQ,WAClB,MAAQ,QAAQ,QAAR,CAAiB,kBACzB,OAAS,QAAQ,YACjB,MAAQ,QAAQ,aAChB,OAAS,QAAQ,UACjB,QAAU,QAAQ,WAiDtB,SAAU,KAAK,EAAO,EAAQ,GAC5B,IAAI,QAAa,OAAO,KAAK,EAAO,CAClC,KAAM,EAAO,KACb,MAAO,EAAO,KACd,KAAM,EAAO,KACb,MAAO,IAGL,EAAM,EAAO,IACb,EAAM,UAAU,EAAM,GAE1B,OAAK,IACH,MAAM,kCAAmC,GAC7B,MAAR,IACF,MAAM,sCACN,EAAO,IAAM,gBAGF,OAAO,EAAO,GAI/B,CAUA,SAAU,OAAO,EAAO,EAAQ,GAC9B,IAAI,QAAa,OAAO,OAAO,EAAO,CACpC,KAAM,EAAO,KACb,MAAO,EAAO,KACd,KAAM,EAAO,KACb,OAAQ,EAAO,IACf,MAAO,IAGT,MAAO,CACL,KAAM,EAAK,KACX,IAAK,EAAK,OAAO,IACjB,KAAM,SAEV,CAUA,SAAU,OAAO,EAAO,EAAQ,GAC9B,IAAI,QAAa,OAAO,OAAO,EAAO,CACpC,KAAM,EAAO,KACb,MAAO,EAAO,KACd,KAAM,EAAO,KACb,IAAK,EAAO,IACZ,MAAO,IAGT,MAAO,CACL,KAAM,EAAK,IACX,IAAK,EAAK,IACV,KAAM,SAEV,CAWA,SAAS,UAAU,EAAM,GACvB,IAAI,EAAM,UAAU,GAEhB,EAAO,OAAO,KAAK,GAAK,QAAO,SAAU,GAC3C,QAAS,OAAO,MAAM,EACxB,IAEA,OAAO,EAAI,OAAO,cAAc,EAAM,GACxC,CASA,SAAS,UAAU,GACjB,OAAO,EAAK,QAAO,SAAU,EAAK,GAOhC,OANA,EAAI,EAAI,MAAQ,CACd,KAAM,EAAI,KACV,IAAK,EAAI,OAAO,IAChB,KAAM,OAGD,CACT,GAAG,CAAC,EACN,CAUA,SAAS,MAAM,GACb,MAAsB,iBAAR,GACM,KAAf,EAAI,SACH,MAAM,SAAS,EAAK,IAC5B,CAjKA,OAAO,QAAU,SAAQ,UAAkB,EAAM,GAC/C,MAAM,gBAAiB,GAClB,IAAS,EAAU,CAAC,GACzB,IAAI,EAAQ,EAAQ,OAAS,EAAQ,SACjC,GAAO,MAAM,kBAAmB,QAAQ,EAAO,CAAE,MAAO,KAE5D,IAAI,EAAQ,EAAQ,MAChB,EAAS,MAAM,GACd,EAAO,MAAK,EAAO,IAAM,KAC9B,IAAI,EAAM,EAAO,IAEjB,GAAI,MAAM,GAAM,CACd,MAAM,+BAAgC,EAAM,GAC5C,IACE,aAAa,OAAO,EAAO,EAAQ,EACrC,CAAE,MAAO,GAGP,MAAM,EACR,CACF,CAEA,OAAI,OAAO,WAAW,IAAQ,OAAO,MAAM,IACzC,MAAM,kCAAmC,EAAM,SAClC,KAAK,EAAO,EAAQ,KAEjC,MAAM,qCAAsC,EAAM,SACrC,OAAO,EAAO,EAAQ,GAEvC","file":"/npm/gh-resolve@5.2.1/lib/resolve.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/gh-resolve@5.2.1/lib/resolve.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\n/**\n * Module dependencies.\n */\n\nvar conceal = require('conceal');\nvar debug = require('debug')('duo:gh-resolve');\nvar github = require('./github');\nvar parse = require('duo-parse');\nvar semver = require('semver');\nvar unyield = require('unyield');\n\n/**\n * Resolve a given `slug` using `options` to define behavior.\n *\n * @param {String} slug\n * @param {Object} options\n * @return {Object}\n */\n\nmodule.exports = unyield(function* resolve(slug, options) {\n  debug('%s: resolving', slug);\n  if (!options) options = {};\n  var token = options.token || options.password;\n  if (token) debug('using token: %s', conceal(token, { start: 6 }));\n\n  var cache = options.cache;\n  var parsed = parse(slug);\n  if (!parsed.ref) parsed.ref = '*';\n  var ref = parsed.ref;\n\n  if (isSHA(ref)) {\n    debug('%s: resolving via commit SHA', slug, ref);\n    try {\n      return yield commit(token, parsed, cache);\n    } catch (e) {\n      // let resolve errors fall through here, as\n      // an SHA-like branch/tag may exist\n      debug(e);\n    }\n  }\n\n  if (semver.validRange(ref) || semver.valid(ref)) {\n    debug('%s: resolving via tags matching', slug, ref);\n    return yield tags(token, parsed, cache);\n  } else {\n    debug('%s: resolving via branch with name', slug, ref);\n    return yield branch(token, parsed, cache);\n  }\n});\n\n/**\n * Resolve a ref via it's list of git tags.\n *\n * @param {String} token\n * @param {Object} parsed\n * @return {Object}\n */\n\nfunction* tags(token, parsed, cache) {\n  var data = yield github.tags(token, {\n    slug: parsed.slug,\n    owner: parsed.user,\n    repo: parsed.repo,\n    cache: cache\n  });\n\n  var ref = parsed.ref;\n  var tag = selectTag(data, ref);\n\n  if (!tag) {\n    debug('no valid tags found matching %s', ref);\n    if (ref === '*') {\n      debug('checking for master branch instead');\n      parsed.ref = 'master';\n    }\n\n    return yield branch(token, parsed);\n  }\n\n  return tag;\n}\n\n/**\n * Resolve a ref via it's ref as a branch name.\n *\n * @param {String} token\n * @param {Object} parsed\n * @return {Object}\n */\n\nfunction* branch(token, parsed, cache) {\n  var data = yield github.branch(token, {\n    slug: parsed.slug,\n    owner: parsed.user,\n    repo: parsed.repo,\n    branch: parsed.ref,\n    cache: cache\n  });\n\n  return {\n    name: data.name,\n    sha: data.commit.sha,\n    type: 'branch'\n  };\n}\n\n/**\n * Resolve a ref via its ref as a commit SHA.\n *\n * @param {String} token\n * @param {Object} parsed\n * @return {Object}\n */\n\nfunction* commit(token, parsed, cache) {\n  var data = yield github.commit(token, {\n    slug: parsed.slug,\n    owner: parsed.user,\n    repo: parsed.repo,\n    sha: parsed.ref,\n    cache: cache\n  });\n\n  return {\n    name: data.sha,\n    sha: data.sha,\n    type: 'commit'\n  };\n}\n\n/**\n * Accept an array of tags and returns the one that matches\n * the input `ref` semver range.\n *\n * @param {Array:Object} list\n * @param {String} ref\n * @return {Object}\n */\n\nfunction selectTag(list, ref) {\n  var map = indexTags(list);\n\n  var tags = Object.keys(map).filter(function (name) {\n    return !!semver.valid(name);\n  });\n\n  return map[semver.maxSatisfying(tags, ref)];\n}\n\n/**\n * Create a hashmap of the tags in an array.\n *\n * @param {Array:Object} list\n * @return {Object}\n */\n\nfunction indexTags(list) {\n  return list.reduce(function (acc, tag) {\n    acc[tag.name] = {\n      name: tag.name,\n      sha: tag.commit.sha,\n      type: 'tag'\n    };\n\n    return acc;\n  }, {});\n}\n\n/**\n * Loosely check if the given `str` is a commit SHA.\n *\n * @param {String} str\n * @return {Boolean}\n * @api private\n */\n\nfunction isSHA(str){\n  return typeof str === 'string'\n    && str.length === 40\n    && !isNaN(parseInt(str, 16));\n}\n"]}