You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							79 lines
						
					
					
						
							3.7 KiB
						
					
					
				
			
		
		
	
	
							79 lines
						
					
					
						
							3.7 KiB
						
					
					
				'use strict' | 
						|
 | 
						|
var gitHosts = module.exports = { | 
						|
  github: { | 
						|
    // First two are insecure and generally shouldn't be used any more, but | 
						|
    // they are still supported. | 
						|
    'protocols': [ 'git', 'http', 'git+ssh', 'git+https', 'ssh', 'https' ], | 
						|
    'domain': 'github.com', | 
						|
    'treepath': 'tree', | 
						|
    'filetemplate': 'https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}', | 
						|
    'bugstemplate': 'https://{domain}/{user}/{project}/issues', | 
						|
    'gittemplate': 'git://{auth@}{domain}/{user}/{project}.git{#committish}', | 
						|
    'tarballtemplate': 'https://codeload.{domain}/{user}/{project}/tar.gz/{committish}' | 
						|
  }, | 
						|
  bitbucket: { | 
						|
    'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ], | 
						|
    'domain': 'bitbucket.org', | 
						|
    'treepath': 'src', | 
						|
    'tarballtemplate': 'https://{domain}/{user}/{project}/get/{committish}.tar.gz' | 
						|
  }, | 
						|
  gitlab: { | 
						|
    'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ], | 
						|
    'domain': 'gitlab.com', | 
						|
    'treepath': 'tree', | 
						|
    'bugstemplate': 'https://{domain}/{user}/{project}/issues', | 
						|
    'httpstemplate': 'git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}', | 
						|
    'tarballtemplate': 'https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}', | 
						|
    'pathmatch': /^[/]([^/]+)[/]((?!.*(\/-\/|\/repository\/archive\.tar\.gz\?=.*|\/repository\/[^/]+\/archive.tar.gz$)).*?)(?:[.]git|[/])?$/ | 
						|
  }, | 
						|
  gist: { | 
						|
    'protocols': [ 'git', 'git+ssh', 'git+https', 'ssh', 'https' ], | 
						|
    'domain': 'gist.github.com', | 
						|
    'pathmatch': /^[/](?:([^/]+)[/])?([a-z0-9]{32,})(?:[.]git)?$/, | 
						|
    'filetemplate': 'https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}', | 
						|
    'bugstemplate': 'https://{domain}/{project}', | 
						|
    'gittemplate': 'git://{domain}/{project}.git{#committish}', | 
						|
    'sshtemplate': 'git@{domain}:/{project}.git{#committish}', | 
						|
    'sshurltemplate': 'git+ssh://git@{domain}/{project}.git{#committish}', | 
						|
    'browsetemplate': 'https://{domain}/{project}{/committish}', | 
						|
    'browsefiletemplate': 'https://{domain}/{project}{/committish}{#path}', | 
						|
    'docstemplate': 'https://{domain}/{project}{/committish}', | 
						|
    'httpstemplate': 'git+https://{domain}/{project}.git{#committish}', | 
						|
    'shortcuttemplate': '{type}:{project}{#committish}', | 
						|
    'pathtemplate': '{project}{#committish}', | 
						|
    'tarballtemplate': 'https://codeload.github.com/gist/{project}/tar.gz/{committish}', | 
						|
    'hashformat': function (fragment) { | 
						|
      return 'file-' + formatHashFragment(fragment) | 
						|
    } | 
						|
  } | 
						|
} | 
						|
 | 
						|
var gitHostDefaults = { | 
						|
  'sshtemplate': 'git@{domain}:{user}/{project}.git{#committish}', | 
						|
  'sshurltemplate': 'git+ssh://git@{domain}/{user}/{project}.git{#committish}', | 
						|
  'browsetemplate': 'https://{domain}/{user}/{project}{/tree/committish}', | 
						|
  'browsefiletemplate': 'https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}', | 
						|
  'docstemplate': 'https://{domain}/{user}/{project}{/tree/committish}#readme', | 
						|
  'httpstemplate': 'git+https://{auth@}{domain}/{user}/{project}.git{#committish}', | 
						|
  'filetemplate': 'https://{domain}/{user}/{project}/raw/{committish}/{path}', | 
						|
  'shortcuttemplate': '{type}:{user}/{project}{#committish}', | 
						|
  'pathtemplate': '{user}/{project}{#committish}', | 
						|
  'pathmatch': /^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/, | 
						|
  'hashformat': formatHashFragment | 
						|
} | 
						|
 | 
						|
Object.keys(gitHosts).forEach(function (name) { | 
						|
  Object.keys(gitHostDefaults).forEach(function (key) { | 
						|
    if (gitHosts[name][key]) return | 
						|
    gitHosts[name][key] = gitHostDefaults[key] | 
						|
  }) | 
						|
  gitHosts[name].protocols_re = RegExp('^(' + | 
						|
    gitHosts[name].protocols.map(function (protocol) { | 
						|
      return protocol.replace(/([\\+*{}()[\]$^|])/g, '\\$1') | 
						|
    }).join('|') + '):$') | 
						|
}) | 
						|
 | 
						|
function formatHashFragment (fragment) { | 
						|
  return fragment.toLowerCase().replace(/^\W+|\/|\W+$/g, '').replace(/\W+/g, '-') | 
						|
}
 | 
						|
 |