Generate different URL formats for git operations, browsing, file access, and downloads from a parsed GitHost instance.
Generate SSH format URLs for git operations.
/**
* Generate SSH format URL (git@host:user/repo.git)
* @param {object} [opts] - Options object
* @param {boolean} [opts.noCommittish] - Exclude committish from URL
* @returns {string} SSH URL
*/
ssh(opts);
/**
* Generate SSH URL with git+ssh protocol
* @param {object} [opts] - Options object
* @param {boolean} [opts.noCommittish] - Exclude committish from URL
* @returns {string} SSH URL with protocol
*/
sshurl(opts);Usage Examples:
const hostedGitInfo = require("hosted-git-info");
const info = hostedGitInfo.fromUrl("github:npm/hosted-git-info#v1.0.0");
// SSH format
console.log(info.ssh());
// Result: "git@github.com:npm/hosted-git-info.git#v1.0.0"
// SSH URL format
console.log(info.sshurl());
// Result: "git+ssh://git@github.com/npm/hosted-git-info.git#v1.0.0"
// Without committish
console.log(info.ssh({ noCommittish: true }));
// Result: "git@github.com:npm/hosted-git-info.git"Generate HTTPS URLs for git operations.
/**
* Generate HTTPS git URL
* @param {object} [opts] - Options object
* @param {boolean} [opts.noCommittish] - Exclude committish from URL
* @param {boolean} [opts.noGitPlus] - Exclude 'git+' prefix from URL
* @returns {string} HTTPS URL
*/
https(opts);
/**
* Generate git protocol URL
* @param {object} [opts] - Options object
* @param {boolean} [opts.noCommittish] - Exclude committish from URL
* @returns {string} Git protocol URL
*/
git(opts);Usage Examples:
const info = hostedGitInfo.fromUrl("npm/hosted-git-info#v1.0.0");
// HTTPS format
console.log(info.https());
// Result: "git+https://github.com/npm/hosted-git-info.git#v1.0.0"
// Without git+ prefix
console.log(info.https({ noGitPlus: true }));
// Result: "https://github.com/npm/hosted-git-info.git#v1.0.0"
// Git protocol
console.log(info.git());
// Result: "git://github.com/npm/hosted-git-info.git#v1.0.0"Generate web browsable URLs for viewing repositories and files.
/**
* Generate browsable web URL
* @param {string} [path] - Optional path within repository
* @param {string} [fragment] - Optional fragment/anchor
* @param {object} [opts] - Options object
* @returns {string} Browse URL
*/
browse(path, fragment, opts);
/**
* Generate browsable web URL for a specific file
* @param {string} path - Path to file within repository
* @param {string} [fragment] - Optional fragment/anchor
* @param {object} [opts] - Options object
* @returns {string} Browse file URL
*/
browseFile(path, fragment, opts);Usage Examples:
const info = hostedGitInfo.fromUrl("github:npm/hosted-git-info#v1.0.0");
// Browse repository
console.log(info.browse());
// Result: "https://github.com/npm/hosted-git-info/tree/v1.0.0"
// Browse specific path
console.log(info.browse("lib"));
// Result: "https://github.com/npm/hosted-git-info/tree/v1.0.0/lib"
// Browse with fragment
console.log(info.browse("README.md", "installation"));
// Result: "https://github.com/npm/hosted-git-info/tree/v1.0.0/README.md#installation"
// Browse specific file (uses blob instead of tree for GitHub)
console.log(info.browseFile("package.json"));
// Result: "https://github.com/npm/hosted-git-info/blob/v1.0.0/package.json"Generate URLs for direct file access and editing.
/**
* Generate raw file access URL
* @param {string} path - Path to file within repository
* @param {object} [opts] - Options object
* @param {boolean} [opts.noCommittish] - Use HEAD instead of specific committish
* @returns {string} Raw file URL
*/
file(path, opts);
/**
* Generate file edit URL
* @param {string} path - Path to file within repository
* @param {object} [opts] - Options object
* @returns {string} Edit file URL
*/
edit(path, opts);Usage Examples:
const info = hostedGitInfo.fromUrl("git@github.com:npm/hosted-git-info.git#v1.0.0");
// Raw file access
console.log(info.file("package.json"));
// Result: "https://raw.githubusercontent.com/npm/hosted-git-info/v1.0.0/package.json"
// File edit URL
console.log(info.edit("README.md"));
// Result: "https://github.com/npm/hosted-git-info/edit/v1.0.0/README.md"
// Use HEAD instead of specific committish
console.log(info.file("package.json", { noCommittish: true }));
// Result: "https://raw.githubusercontent.com/npm/hosted-git-info/HEAD/package.json"Generate shortened formats for the repository.
/**
* Generate shortcut format
* @param {object} [opts] - Options object
* @param {boolean} [opts.noCommittish] - Exclude committish from URL
* @returns {string} Shortcut format
*/
shortcut(opts);
/**
* Generate path format
* @param {object} [opts] - Options object
* @param {boolean} [opts.noCommittish] - Exclude committish from URL
* @returns {string} Path format
*/
path(opts);Usage Examples:
const info = hostedGitInfo.fromUrl("https://github.com/npm/hosted-git-info.git#v1.0.0");
// Shortcut format
console.log(info.shortcut());
// Result: "github:npm/hosted-git-info#v1.0.0"
// Path format
console.log(info.path());
// Result: "npm/hosted-git-info#v1.0.0"
// Without committish
console.log(info.shortcut({ noCommittish: true }));
// Result: "github:npm/hosted-git-info"Generate URLs for documentation and issue tracking.
/**
* Generate documentation URL
* @param {object} [opts] - Options object
* @returns {string} Documentation URL
*/
docs(opts);
/**
* Generate issues/bugs URL
* @param {object} [opts] - Options object
* @returns {string} Issues URL
*/
bugs(opts);Usage Examples:
const info = hostedGitInfo.fromUrl("npm/hosted-git-info#v1.0.0");
// Documentation URL (typically README)
console.log(info.docs());
// Result: "https://github.com/npm/hosted-git-info/tree/v1.0.0#readme"
// Issues URL
console.log(info.bugs());
// Result: "https://github.com/npm/hosted-git-info/issues"Generate URLs for downloading repository archives.
/**
* Generate tarball download URL
* @param {object} [opts] - Options object
* @returns {string} Tarball download URL
*/
tarball(opts);Usage Examples:
const info = hostedGitInfo.fromUrl("github:npm/hosted-git-info#v1.0.0");
// Tarball download
console.log(info.tarball());
// Result: "https://codeload.github.com/npm/hosted-git-info/tar.gz/v1.0.0"
// Without specific committish (uses HEAD)
const info2 = hostedGitInfo.fromUrl("github:npm/hosted-git-info");
console.log(info2.tarball());
// Result: "https://codeload.github.com/npm/hosted-git-info/tar.gz/HEAD"Get the default string representation of the GitHost instance.
/**
* Get default representation type
* @returns {string} Default representation type
*/
getDefaultRepresentation();
/**
* Get string representation using default format
* @param {object} [opts] - Options object
* @returns {string} String representation
*/
toString(opts);
/**
* Get hash fragment for committish
* @returns {string} Hash fragment
*/
hash();Usage Examples:
const info1 = hostedGitInfo.fromUrl("github:npm/hosted-git-info#v1.0.0");
console.log(info1.getDefaultRepresentation()); // "shortcut"
console.log(info1.toString()); // "github:npm/hosted-git-info#v1.0.0"
const info2 = hostedGitInfo.fromUrl("git@github.com:npm/hosted-git-info.git");
console.log(info2.getDefaultRepresentation()); // "sshurl"
console.log(info2.toString()); // "git+ssh://git@github.com/npm/hosted-git-info.git"
// Hash fragment
console.log(info1.hash()); // "#v1.0.0"raw.githubusercontent.com/tree//blob/codeload.github.com/-/edit/?ref=/src/?mode=editfile-/blob/