JezK
Edit File: git-resolver.js.map
{"version":3,"file":"git-resolver.js","names":["urlParse","require","parse","GIT_HOSTS","GIT_PATTERN_MATCHERS","GitResolver","request","fragment","versionUtil","explodeHashedUrl","url","hash","forked","tryRegistry","registry","filename","registries","client","getFile","file","config","readJson","JSON","json","_uid","commit","_remote","resolved","type","reference","parts","auth","pathname","hostedGitResolvers","name","Resolver","hostname","util","removePrefix","removeSuffix","decodeURIComponent","fork","shrunk","getLocked","gitUrl","Git","npmUrlToGitUrl","init","guessName","version","pattern","matcher","test","path","indexOf","split","filter","p","length","ExoticResolver"],"sourceRoot":"../../../src","sources":["resolvers/exotics/git-resolver.js"],"sourcesContent":["/* @flow */\n\nimport type {Manifest} from '../../types.js';\nimport type PackageRequest from '../../package-request.js';\nimport {hostedGit as hostedGitResolvers} from '../index.js';\nimport * as util from '../../util/misc.js';\nimport * as versionUtil from '../../util/version.js';\nimport guessName from '../../util/guess-name.js';\nimport {registries} from '../../registries/index.js';\nimport ExoticResolver from './exotic-resolver.js';\nimport Git from '../../util/git.js';\n\nconst urlParse = require('url').parse;\n\nconst GIT_HOSTS = ['github.com', 'gitlab.com', 'bitbucket.com', 'bitbucket.org'];\n\nconst GIT_PATTERN_MATCHERS = [/^git:/, /^git\\+.+:/, /^ssh:/, /^https?:.+\\.git$/, /^https?:.+\\.git#.+/];\n\nexport default class GitResolver extends ExoticResolver {\n constructor(request: PackageRequest, fragment: string) {\n super(request, fragment);\n\n const {url, hash} = versionUtil.explodeHashedUrl(fragment);\n this.url = url;\n this.hash = hash;\n }\n\n url: string;\n hash: string;\n\n static isVersion(pattern: string): boolean {\n for (const matcher of GIT_PATTERN_MATCHERS) {\n if (matcher.test(pattern)) {\n return true;\n }\n }\n\n const {hostname, path} = urlParse(pattern);\n if (hostname && path && GIT_HOSTS.indexOf(hostname) >= 0) {\n // only if dependency is pointing to a git repo,\n // e.g. facebook/flow and not file in a git repo facebook/flow/archive/v1.0.0.tar.gz\n return path.split('/').filter((p): boolean => !!p).length === 2;\n }\n\n return false;\n }\n\n async resolve(forked?: true): Promise<Manifest> {\n const {url} = this;\n\n // shortcut for hosted git. we will fallback to a GitResolver if the hosted git\n // optimisations fail which the `forked` flag indicates so we don't get into an\n // infinite loop\n const parts = urlParse(url);\n if (false && !forked && !parts.auth && parts.pathname) {\n // check if this git url uses any of the hostnames defined in our hosted git resolvers\n for (const name in hostedGitResolvers) {\n const Resolver = hostedGitResolvers[name];\n if (Resolver.hostname !== parts.hostname) {\n continue;\n }\n\n // we have a match! clean up the pathname of url artifacts\n let pathname = parts.pathname;\n pathname = util.removePrefix(pathname, '/'); // remove prefixed slash\n pathname = util.removeSuffix(pathname, '.git'); // remove .git suffix if present\n\n const url = `${pathname}${this.hash ? '#' + decodeURIComponent(this.hash) : ''}`;\n return this.fork(Resolver, false, url);\n }\n }\n\n // get from lockfile\n const shrunk = this.request.getLocked('git');\n if (shrunk) {\n return shrunk;\n }\n\n const {config} = this;\n\n const gitUrl = Git.npmUrlToGitUrl(url);\n const client = new Git(config, gitUrl, this.hash);\n const commit = await client.init();\n\n async function tryRegistry(registry): Promise<?Manifest> {\n const {filename} = registries[registry];\n\n const file = await client.getFile(filename);\n if (!file) {\n return null;\n }\n\n const json = await config.readJson(`${url}/${filename}`, () => JSON.parse(file));\n json._uid = commit;\n json._remote = {\n resolved: `${url}#${commit}`,\n type: 'git',\n reference: url,\n hash: commit,\n registry,\n };\n return json;\n }\n\n const file = await tryRegistry(this.registry);\n if (file) {\n return file;\n }\n\n for (const registry in registries) {\n if (registry === this.registry) {\n continue;\n }\n\n const file = await tryRegistry(registry);\n if (file) {\n return file;\n }\n }\n\n return {\n // This is just the default, it can be overridden with key of dependencies\n name: guessName(url),\n version: '0.0.0',\n _uid: commit,\n _remote: {\n resolved: `${url}#${commit}`,\n type: 'git',\n reference: url,\n hash: commit,\n registry: 'npm',\n },\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAoC;AAAA;AAAA;AAAA;AAEpC,IAAMA,QAAQ,GAAGC,OAAO,CAAC,KAAK,CAAC,CAACC,KAAK;AAErC,IAAMC,SAAS,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,CAAC;AAEhF,IAAMC,oBAAoB,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,CAAC;AAAC,IAElFC,WAAW;EAAA;EAAA;EAC9B,qBAAYC,OAAuB,EAAEC,QAAgB,EAAE;IAAA;IAAA;IACrD,0BAAMD,OAAO,EAAEC,QAAQ;IAAE;IAAA;IAEzB,4BAAoBC,WAAW,GAACC,gBAAgB,CAACF,QAAQ,CAAC;MAAnDG,GAAG,yBAAHA,GAAG;MAAEC,IAAI,yBAAJA,IAAI;IAChB,MAAKD,GAAG,GAAGA,GAAG;IACd,MAAKC,IAAI,GAAGA,IAAI;IAAC;EACnB;EAAC;IAAA;IAAA;MAAA,iGAsBD,kBAAcC,MAAa;QAAA,wFAqCVC,WAAW;QAAA;UAAA;YAAA;cAAA;gBAAA,iGAA1B,iBAA2BC,QAAQ;kBAAA;kBAAA;oBAAA;sBAAA;wBAC1BC,QAAQ,GAAIC,oBAAU,CAACF,QAAQ,CAAC,CAAhCC,QAAQ;wBAAA;wBAAA,OAEIE,MAAM,CAACC,OAAO,CAACH,QAAQ,CAAC;sBAAA;wBAArCI,IAAI;wBAAA,IACLA,IAAI;0BAAA;0BAAA;wBAAA;wBAAA,iCACA,IAAI;sBAAA;wBAAA;wBAAA,OAGMC,MAAM,CAACC,QAAQ,WAAIX,GAAG,cAAIK,QAAQ,GAAI;0BAAA,OAAMO,IAAI,CAACpB,KAAK,CAACiB,IAAI,CAAC;wBAAA,EAAC;sBAAA;wBAA1EI,IAAI;wBACVA,IAAI,CAACC,IAAI,GAAGC,MAAM;wBAClBF,IAAI,CAACG,OAAO,GAAG;0BACbC,QAAQ,YAAKjB,GAAG,cAAIe,MAAM,CAAE;0BAC5BG,IAAI,EAAE,KAAK;0BACXC,SAAS,EAAEnB,GAAG;0BACdC,IAAI,EAAEc,MAAM;0BACZX,QAAQ,EAARA;wBACF,CAAC;wBAAC,iCACKS,IAAI;sBAAA;sBAAA;wBAAA;oBAAA;kBAAA;gBAAA,CACZ;gBAAA;cAAA;cAlBcV,WAAW;gBAAA;cAAA;cApCnBH,GAAG,GAAI,IAAI,CAAXA,GAAG,EAEV;cACA;cACA;cACMoB,KAAK,GAAG9B,QAAQ,CAACU,GAAG,CAAC;cAAA,MACvB,KAAK,IAAI,CAACE,MAAM,IAAI,CAACkB,KAAK,CAACC,IAAI,IAAID,KAAK,CAACE,QAAQ;gBAAA;gBAAA;cAAA;cAAA,8CAEhCC,kBAAkB;YAAA;cAAA;gBAAA;gBAAA;cAAA;cAA1BC,IAAI;cACPC,QAAQ,GAAGF,kBAAkB,CAACC,IAAI,CAAC;cAAA,MACrCC,QAAQ,CAACC,QAAQ,KAAKN,KAAK,CAACM,QAAQ;gBAAA;gBAAA;cAAA;cAAA;YAAA;cAIxC;cACIJ,QAAQ,GAAGF,KAAK,CAACE,QAAQ;cAC7BA,QAAQ,GAAGK,IAAI,GAACC,YAAY,CAACN,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;cAC7CA,QAAQ,GAAGK,IAAI,GAACE,YAAY,CAACP,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;cAE1CtB,IAAG,aAAMsB,QAAQ,SAAG,IAAI,CAACrB,IAAI,GAAG,GAAG,GAAG6B,kBAAkB,CAAC,IAAI,CAAC7B,IAAI,CAAC,GAAG,EAAE;cAAA,kCACvE,IAAI,CAAC8B,IAAI,CAACN,QAAQ,EAAE,KAAK,EAAEzB,IAAG,CAAC;YAAA;cAI1C;cACMgC,MAAM,GAAG,IAAI,CAACpC,OAAO,CAACqC,SAAS,CAAC,KAAK,CAAC;cAAA,KACxCD,MAAM;gBAAA;gBAAA;cAAA;cAAA,kCACDA,MAAM;YAAA;cAGRtB,MAAM,GAAI,IAAI,CAAdA,MAAM;cAEPwB,MAAM,GAAGC,iBAAG,CAACC,cAAc,CAACpC,GAAG,CAAC;cAChCO,MAAM,GAAG,KAAI4B,iBAAG,EAACzB,MAAM,EAAEwB,MAAM,EAAE,IAAI,CAACjC,IAAI,CAAC;cAAA;cAAA,OAC5BM,MAAM,CAAC8B,IAAI,EAAE;YAAA;cAA5BtB,MAAM;cAAA;cAAA,OAsBOZ,WAAW,CAAC,IAAI,CAACC,QAAQ,CAAC;YAAA;cAAvCK,IAAI;cAAA,KACNA,IAAI;gBAAA;gBAAA;cAAA;cAAA,kCACCA,IAAI;YAAA;cAAA,8CAGUH,oBAAU;YAAA;cAAA;gBAAA;gBAAA;cAAA;cAAtBF,QAAQ;cAAA,MACbA,QAAQ,KAAK,IAAI,CAACA,QAAQ;gBAAA;gBAAA;cAAA;cAAA;YAAA;cAAA;cAAA,OAIXD,WAAW,CAACC,QAAQ,CAAC;YAAA;cAAlCK,KAAI;cAAA,KACNA,KAAI;gBAAA;gBAAA;cAAA;cAAA,kCACCA,KAAI;YAAA;cAAA;cAAA;YAAA;cAAA,kCAIR;gBACL;gBACAe,IAAI,EAAE,IAAAc,uBAAS,EAACtC,GAAG,CAAC;gBACpBuC,OAAO,EAAE,OAAO;gBAChBzB,IAAI,EAAEC,MAAM;gBACZC,OAAO,EAAE;kBACPC,QAAQ,YAAKjB,GAAG,cAAIe,MAAM,CAAE;kBAC5BG,IAAI,EAAE,KAAK;kBACXC,SAAS,EAAEnB,GAAG;kBACdC,IAAI,EAAEc,MAAM;kBACZX,QAAQ,EAAE;gBACZ;cACF,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA,CACF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAvGD,mBAAiBoC,OAAe,EAAW;MACzC,yCAAsB9C,oBAAoB,2CAAE;QAAvC,IAAM+C,OAAO;QAChB,IAAIA,OAAO,CAACC,IAAI,CAACF,OAAO,CAAC,EAAE;UACzB,OAAO,IAAI;QACb;MACF;MAEA,gBAAyBlD,QAAQ,CAACkD,OAAO,CAAC;QAAnCd,QAAQ,aAARA,QAAQ;QAAEiB,IAAI,aAAJA,IAAI;MACrB,IAAIjB,QAAQ,IAAIiB,IAAI,IAAIlD,SAAS,CAACmD,OAAO,CAAClB,QAAQ,CAAC,IAAI,CAAC,EAAE;QACxD;QACA;QACA,OAAOiB,IAAI,CAACE,KAAK,CAAC,GAAG,CAAC,CAACC,MAAM,CAAC,UAACC,CAAC;UAAA,OAAc,CAAC,CAACA,CAAC;QAAA,EAAC,CAACC,MAAM,KAAK,CAAC;MACjE;MAEA,OAAO,KAAK;IACd;EAAC;EAAA;AAAA,EA3BsCC,4BAAc;AAAA"}