JezK
Edit File: git.js.map
{"version":3,"file":"git.js","names":["GIT_PROTOCOL_PREFIX","SSH_PROTOCOL","SCP_PATH_PREFIX","FILE_PROTOCOL","GIT_VALID_REF_LINE_REGEXP","validRef","line","exec","supportsArchiveCache","map","handleSpawnError","err","ProcessSpawnError","SHORTHAND_SERVICES","parsedUrl","slashes","auth","protocol","host","hostname","pathname","Git","config","gitUrl","hash","supportsArchive","fetched","reporter","ref","cwd","getTemp","crypto","repository","dest","_archiveViaRemoteArchive","_archiveViaLocalFetched","hashStream","HashStream","spawnGit","process","proc","resolve","reject","done","writeStream","createWriteStream","on","stdout","pipe","once","getHash","_cloneViaRemoteArchive","_cloneViaLocalFetched","update","extractor","tarFs","extract","dmode","fmode","fs","lockQueue","push","exists","filename","_getFileFromArchive","_getFileFromClone","parser","tarStream","header","stream","next","decoder","StringDecoder","fileContent","buffer","write","remaining","end","resume","message","indexOf","invariant","secureGitUrl","setRefRemote","hasArchiveCapability","fetch","isLocal","refs","parseRefs","setRef","hostedRefsList","sha","values","value","undefined","Error","lines","split","filter","shaToResolve","revListArgs","version","resolveVersion","git","resolvedResult","MessageError","lang","Array","from","keys","join","npmUrl","removePrefix","parsed","url","parse","expander","path","startsWith","port","slice","length","format","Date","now","supports","replace","isCommitSha","secureUrl","replaceProtocol","repoExists","warn","secureRef"],"sourceRoot":"../../src","sources":["util/git.js"],"sourcesContent":["/* @flow */\n\nimport invariant from 'invariant';\nimport {StringDecoder} from 'string_decoder';\nimport tarFs from 'tar-fs';\nimport tarStream from 'tar-stream';\nimport url from 'url';\nimport {createWriteStream} from 'fs';\n\nimport type Config from '../config.js';\nimport type {Reporter} from '../reporters/index.js';\nimport type {ResolvedSha, GitRefResolvingInterface, GitRefs} from './git/git-ref-resolver.js';\nimport {MessageError, ProcessSpawnError} from '../errors.js';\nimport {spawn as spawnGit} from './git/git-spawn.js';\nimport {resolveVersion, isCommitSha, parseRefs} from './git/git-ref-resolver.js';\nimport * as crypto from './crypto.js';\nimport * as fs from './fs.js';\nimport map from './map.js';\nimport {removePrefix} from './misc.js';\n\nconst GIT_PROTOCOL_PREFIX = 'git+';\nconst SSH_PROTOCOL = 'ssh:';\nconst SCP_PATH_PREFIX = '/:';\nconst FILE_PROTOCOL = 'file:';\nconst GIT_VALID_REF_LINE_REGEXP = /^([a-fA-F0-9]+|ref)/;\n\nconst validRef = line => {\n return GIT_VALID_REF_LINE_REGEXP.exec(line);\n};\n\ntype GitUrl = {\n protocol: string, // parsed from URL\n hostname: ?string,\n repository: string, // git-specific \"URL\"\n};\n\nconst supportsArchiveCache: {[key: string]: boolean} = map({\n 'github.com': false, // not support, doubt they will ever support it\n});\n\nconst handleSpawnError = err => {\n if (err instanceof ProcessSpawnError) {\n throw err;\n }\n};\n\nconst SHORTHAND_SERVICES: {[key: string]: url.parse} = map({\n 'github:': parsedUrl => ({\n ...parsedUrl,\n slashes: true,\n auth: 'git',\n protocol: SSH_PROTOCOL,\n host: 'github.com',\n hostname: 'github.com',\n pathname: `/${parsedUrl.hostname}${parsedUrl.pathname}`,\n }),\n 'bitbucket:': parsedUrl => ({\n ...parsedUrl,\n slashes: true,\n auth: 'git',\n protocol: SSH_PROTOCOL,\n host: 'bitbucket.com',\n hostname: 'bitbucket.com',\n pathname: `/${parsedUrl.hostname}${parsedUrl.pathname}`,\n }),\n});\n\nexport default class Git implements GitRefResolvingInterface {\n constructor(config: Config, gitUrl: GitUrl, hash: string) {\n this.supportsArchive = false;\n this.fetched = false;\n this.config = config;\n this.reporter = config.reporter;\n this.hash = hash;\n this.ref = hash;\n this.gitUrl = gitUrl;\n this.cwd = this.config.getTemp(crypto.hash(this.gitUrl.repository));\n }\n\n supportsArchive: boolean;\n fetched: boolean;\n config: Config;\n reporter: Reporter;\n hash: string;\n ref: string;\n cwd: string;\n gitUrl: GitUrl;\n\n /**\n * npm URLs contain a 'git+' scheme prefix, which is not understood by git.\n * git \"URLs\" also allow an alternative scp-like syntax, so they're not standard URLs.\n */\n static npmUrlToGitUrl(npmUrl: string): GitUrl {\n npmUrl = removePrefix(npmUrl, GIT_PROTOCOL_PREFIX);\n\n let parsed = url.parse(npmUrl);\n const expander = parsed.protocol && SHORTHAND_SERVICES[parsed.protocol];\n\n if (expander) {\n parsed = expander(parsed);\n }\n\n // Special case in npm, where ssh:// prefix is stripped to pass scp-like syntax\n // which in git works as remote path only if there are no slashes before ':'.\n // See #3146.\n if (\n parsed.protocol === SSH_PROTOCOL &&\n parsed.hostname &&\n parsed.path &&\n parsed.path.startsWith(SCP_PATH_PREFIX) &&\n parsed.port === null\n ) {\n const auth = parsed.auth ? parsed.auth + '@' : '';\n const pathname = parsed.path.slice(SCP_PATH_PREFIX.length);\n return {\n hostname: parsed.hostname,\n protocol: parsed.protocol,\n repository: `${auth}${parsed.hostname}:${pathname}`,\n };\n }\n\n // git local repos are specified as `git+file:` and a filesystem path, not a url.\n let repository;\n if (parsed.protocol === FILE_PROTOCOL) {\n repository = parsed.path;\n } else {\n repository = url.format({...parsed, hash: ''});\n }\n\n return {\n hostname: parsed.hostname || null,\n protocol: parsed.protocol || FILE_PROTOCOL,\n repository: repository || '',\n };\n }\n\n /**\n * Check if the host specified in the input `gitUrl` has archive capability.\n */\n\n static async hasArchiveCapability(ref: GitUrl): Promise<boolean> {\n const hostname = ref.hostname;\n if (ref.protocol !== 'ssh:' || hostname == null) {\n return false;\n }\n\n if (hostname in supportsArchiveCache) {\n return supportsArchiveCache[hostname];\n }\n\n try {\n await spawnGit(['archive', `--remote=${ref.repository}`, 'HEAD', Date.now() + '']);\n throw new Error();\n } catch (err) {\n handleSpawnError(err);\n const supports = err.message.indexOf('did not match any files') >= 0;\n return (supportsArchiveCache[hostname] = supports);\n }\n }\n\n /**\n * Check if the input `target` is a 5-40 character hex commit hash.\n */\n\n static async repoExists(ref: GitUrl): Promise<boolean> {\n const isLocal = ref.protocol === FILE_PROTOCOL;\n\n try {\n if (isLocal) {\n await spawnGit(['show-ref', '-t'], {cwd: ref.repository});\n } else {\n await spawnGit(['ls-remote', '-t', ref.repository]);\n }\n return true;\n } catch (err) {\n handleSpawnError(err);\n return false;\n }\n }\n\n static replaceProtocol(ref: GitUrl, protocol: string): GitUrl {\n return {\n hostname: ref.hostname,\n protocol,\n repository: ref.repository.replace(/^(?:git|http):/, protocol),\n };\n }\n\n /**\n * Attempt to upgrade insecure protocols to secure protocol\n */\n static async secureGitUrl(ref: GitUrl, hash: string, reporter: Reporter): Promise<GitUrl> {\n if (isCommitSha(hash)) {\n // this is cryptographically secure\n return ref;\n }\n\n if (ref.protocol === 'git:') {\n const secureUrl = Git.replaceProtocol(ref, 'https:');\n if (await Git.repoExists(secureUrl)) {\n return secureUrl;\n } else {\n reporter.warn(reporter.lang('downloadGitWithoutCommit', ref.repository));\n return ref;\n }\n }\n\n if (ref.protocol === 'http:') {\n const secureRef = Git.replaceProtocol(ref, 'https:');\n if (await Git.repoExists(secureRef)) {\n return secureRef;\n } else {\n reporter.warn(reporter.lang('downloadHTTPWithoutCommit', ref.repository));\n return ref;\n }\n }\n\n return ref;\n }\n\n /**\n * Archive a repo to destination\n */\n\n archive(dest: string): Promise<string> {\n if (this.supportsArchive) {\n return this._archiveViaRemoteArchive(dest);\n } else {\n return this._archiveViaLocalFetched(dest);\n }\n }\n\n async _archiveViaRemoteArchive(dest: string): Promise<string> {\n const hashStream = new crypto.HashStream();\n await spawnGit(['archive', `--remote=${this.gitUrl.repository}`, this.ref], {\n process(proc, resolve, reject, done) {\n const writeStream = createWriteStream(dest);\n proc.on('error', reject);\n writeStream.on('error', reject);\n writeStream.on('end', done);\n writeStream.on('open', function() {\n proc.stdout.pipe(hashStream).pipe(writeStream);\n });\n writeStream.once('finish', done);\n },\n });\n return hashStream.getHash();\n }\n\n async _archiveViaLocalFetched(dest: string): Promise<string> {\n const hashStream = new crypto.HashStream();\n await spawnGit(['archive', this.hash], {\n cwd: this.cwd,\n process(proc, resolve, reject, done) {\n const writeStream = createWriteStream(dest);\n proc.on('error', reject);\n writeStream.on('error', reject);\n writeStream.on('open', function() {\n proc.stdout.pipe(hashStream).pipe(writeStream);\n });\n writeStream.once('finish', done);\n },\n });\n return hashStream.getHash();\n }\n\n /**\n * Clone a repo to the input `dest`. Use `git archive` if it's available, otherwise fall\n * back to `git clone`.\n */\n\n clone(dest: string): Promise<void> {\n if (this.supportsArchive) {\n return this._cloneViaRemoteArchive(dest);\n } else {\n return this._cloneViaLocalFetched(dest);\n }\n }\n\n async _cloneViaRemoteArchive(dest: string): Promise<void> {\n await spawnGit(['archive', `--remote=${this.gitUrl.repository}`, this.ref], {\n process(proc, update, reject, done) {\n const extractor = tarFs.extract(dest, {\n dmode: 0o555, // all dirs should be readable\n fmode: 0o444, // all files should be readable\n });\n extractor.on('error', reject);\n extractor.on('finish', done);\n\n proc.stdout.pipe(extractor);\n proc.on('error', reject);\n },\n });\n }\n\n async _cloneViaLocalFetched(dest: string): Promise<void> {\n await spawnGit(['archive', this.hash], {\n cwd: this.cwd,\n process(proc, resolve, reject, done) {\n const extractor = tarFs.extract(dest, {\n dmode: 0o555, // all dirs should be readable\n fmode: 0o444, // all files should be readable\n });\n\n extractor.on('error', reject);\n extractor.on('finish', done);\n\n proc.stdout.pipe(extractor);\n },\n });\n }\n\n /**\n * Clone this repo.\n */\n\n fetch(): Promise<void> {\n const {gitUrl, cwd} = this;\n\n return fs.lockQueue.push(gitUrl.repository, async () => {\n if (await fs.exists(cwd)) {\n await spawnGit(['fetch', '--tags'], {cwd});\n await spawnGit(['pull'], {cwd});\n } else {\n await spawnGit(['clone', gitUrl.repository, cwd]);\n }\n\n this.fetched = true;\n });\n }\n\n /**\n * Fetch the file by cloning the repo and reading it.\n */\n\n getFile(filename: string): Promise<string | false> {\n if (this.supportsArchive) {\n return this._getFileFromArchive(filename);\n } else {\n return this._getFileFromClone(filename);\n }\n }\n\n async _getFileFromArchive(filename: string): Promise<string | false> {\n try {\n return await spawnGit(['archive', `--remote=${this.gitUrl.repository}`, this.ref, filename], {\n process(proc, update, reject, done) {\n const parser = tarStream.extract();\n\n parser.on('error', reject);\n parser.on('finish', done);\n\n parser.on('entry', (header, stream, next) => {\n const decoder = new StringDecoder('utf8');\n let fileContent = '';\n\n stream.on('data', buffer => {\n fileContent += decoder.write(buffer);\n });\n stream.on('end', () => {\n const remaining: string = decoder.end();\n update(fileContent + remaining);\n next();\n });\n stream.resume();\n });\n\n proc.stdout.pipe(parser);\n },\n });\n } catch (err) {\n if (err.message.indexOf('did not match any files') >= 0) {\n return false;\n } else {\n throw err;\n }\n }\n }\n\n async _getFileFromClone(filename: string): Promise<string | false> {\n invariant(this.fetched, 'Repo not fetched');\n\n try {\n return await spawnGit(['show', `${this.hash}:${filename}`], {\n cwd: this.cwd,\n });\n } catch (err) {\n handleSpawnError(err);\n // file doesn't exist\n return false;\n }\n }\n\n /**\n * Initialize the repo, find a secure url to use and\n * set the ref to match an input `target`.\n */\n async init(): Promise<string> {\n this.gitUrl = await Git.secureGitUrl(this.gitUrl, this.hash, this.reporter);\n\n await this.setRefRemote();\n\n // check capabilities\n if (this.ref !== '' && (await Git.hasArchiveCapability(this.gitUrl))) {\n this.supportsArchive = true;\n } else {\n await this.fetch();\n }\n\n return this.hash;\n }\n\n async setRefRemote(): Promise<string> {\n const isLocal = this.gitUrl.protocol === FILE_PROTOCOL;\n let stdout;\n\n if (isLocal) {\n stdout = await spawnGit(['show-ref', '--tags', '--heads'], {cwd: this.gitUrl.repository});\n } else {\n stdout = await spawnGit(['ls-remote', '--tags', '--heads', this.gitUrl.repository]);\n }\n\n const refs = parseRefs(stdout);\n return this.setRef(refs);\n }\n\n setRefHosted(hostedRefsList: string): Promise<string> {\n const refs = parseRefs(hostedRefsList);\n return this.setRef(refs);\n }\n\n /**\n * Resolves the default branch of a remote repository (not always \"master\")\n */\n\n async resolveDefaultBranch(): Promise<ResolvedSha> {\n const isLocal = this.gitUrl.protocol === FILE_PROTOCOL;\n\n try {\n let stdout;\n if (isLocal) {\n stdout = await spawnGit(['show-ref', 'HEAD'], {cwd: this.gitUrl.repository});\n const refs = parseRefs(stdout);\n const sha = refs.values().next().value;\n if (sha) {\n return {sha, ref: undefined};\n } else {\n throw new Error('Unable to find SHA for git HEAD');\n }\n } else {\n stdout = await spawnGit(['ls-remote', '--symref', this.gitUrl.repository, 'HEAD']);\n const lines = stdout.split('\\n').filter(validRef);\n const [, ref] = lines[0].split(/\\s+/);\n const [sha] = lines[1].split(/\\s+/);\n return {sha, ref};\n }\n } catch (err) {\n handleSpawnError(err);\n // older versions of git don't support \"--symref\"\n const stdout = await spawnGit(['ls-remote', this.gitUrl.repository, 'HEAD']);\n const lines = stdout.split('\\n').filter(validRef);\n const [sha] = lines[0].split(/\\s+/);\n return {sha, ref: undefined};\n }\n }\n\n /**\n * Resolve a git commit to it's 40-chars format and ensure it exists in the repository\n * We need to use the 40-chars format to avoid multiple folders in the cache\n */\n\n async resolveCommit(shaToResolve: string): Promise<?ResolvedSha> {\n try {\n await this.fetch();\n const revListArgs = ['rev-list', '-n', '1', '--no-abbrev-commit', '--format=oneline', shaToResolve];\n const stdout = await spawnGit(revListArgs, {cwd: this.cwd});\n const [sha] = stdout.split(/\\s+/);\n return {sha, ref: undefined};\n } catch (err) {\n handleSpawnError(err);\n // assuming commit not found, let's try something else\n return null;\n }\n }\n\n /**\n * Resolves the input hash / ref / semver range to a valid commit sha\n * If possible also resolves the sha to a valid ref in order to use \"git archive\"\n */\n\n async setRef(refs: GitRefs): Promise<string> {\n // get commit ref\n const {hash: version} = this;\n\n const resolvedResult = await resolveVersion({\n config: this.config,\n git: this,\n version,\n refs,\n });\n if (!resolvedResult) {\n throw new MessageError(\n this.reporter.lang('couldntFindMatch', version, Array.from(refs.keys()).join(','), this.gitUrl.repository),\n );\n }\n\n this.hash = resolvedResult.sha;\n this.ref = resolvedResult.ref || '';\n return this.hash;\n }\n}\n"],"mappings":"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"}