uawdijnntqw1x1x1
IP : 216.73.216.86
Hostname : 6.87.74.97.host.secureserver.net
Kernel : Linux 6.87.74.97.host.secureserver.net 4.18.0-553.83.1.el8_10.x86_64 #1 SMP Mon Nov 10 04:22:44 EST 2025 x86_64
Disable Function : None :)
OS : Linux
PATH:
/
home
/
emeraadmin
/
www
/
js
/
..
/
node_modules
/
jsonwebtoken
/
..
/
es-errors
/
..
/
..
/
4d695
/
hosted-git-info.tar
/
/
package.json000064400000003333151701433100007027 0ustar00{ "_id": "hosted-git-info@7.0.2", "_inBundle": true, "_location": "/npm/hosted-git-info", "_phantomChildren": {}, "_requiredBy": [ "/npm", "/npm/@npmcli/arborist", "/npm/@npmcli/package-json", "/npm/normalize-package-data", "/npm/npm-package-arg" ], "author": { "name": "GitHub Inc." }, "bugs": { "url": "https://github.com/npm/hosted-git-info/issues" }, "dependencies": { "lru-cache": "^10.0.1" }, "description": "Provides metadata and conversions from repository urls for GitHub, Bitbucket and GitLab", "devDependencies": { "@npmcli/eslint-config": "^4.0.0", "@npmcli/template-oss": "4.22.0", "tap": "^16.0.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" }, "files": [ "bin/", "lib/" ], "homepage": "https://github.com/npm/hosted-git-info", "keywords": [ "git", "github", "bitbucket", "gitlab" ], "license": "ISC", "main": "./lib/index.js", "name": "hosted-git-info", "repository": { "type": "git", "url": "git+https://github.com/npm/hosted-git-info.git" }, "scripts": { "lint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\"", "lintfix": "npm run lint -- --fix", "postlint": "template-oss-check", "posttest": "npm run lint", "snap": "tap", "template-oss-apply": "template-oss-apply --force", "test": "tap", "test:coverage": "tap --coverage-report=html" }, "tap": { "color": 1, "coverage": true, "nyc-arg": [ "--exclude", "tap-snapshots/**" ] }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", "version": "4.22.0", "publish": "true" }, "version": "7.0.2" } lib/from-url.js000064400000010173151701433100007410 0ustar00'use strict' const parseUrl = require('./parse-url') // look for github shorthand inputs, such as npm/cli const isGitHubShorthand = (arg) => { // it cannot contain whitespace before the first # // it cannot start with a / because that's probably an absolute file path // but it must include a slash since repos are username/repository // it cannot start with a . because that's probably a relative file path // it cannot start with an @ because that's a scoped package if it passes the other tests // it cannot contain a : before a # because that tells us that there's a protocol // a second / may not exist before a # const firstHash = arg.indexOf('#') const firstSlash = arg.indexOf('/') const secondSlash = arg.indexOf('/', firstSlash + 1) const firstColon = arg.indexOf(':') const firstSpace = /\s/.exec(arg) const firstAt = arg.indexOf('@') const spaceOnlyAfterHash = !firstSpace || (firstHash > -1 && firstSpace.index > firstHash) const atOnlyAfterHash = firstAt === -1 || (firstHash > -1 && firstAt > firstHash) const colonOnlyAfterHash = firstColon === -1 || (firstHash > -1 && firstColon > firstHash) const secondSlashOnlyAfterHash = secondSlash === -1 || (firstHash > -1 && secondSlash > firstHash) const hasSlash = firstSlash > 0 // if a # is found, what we really want to know is that the character // immediately before # is not a / const doesNotEndWithSlash = firstHash > -1 ? arg[firstHash - 1] !== '/' : !arg.endsWith('/') const doesNotStartWithDot = !arg.startsWith('.') return spaceOnlyAfterHash && hasSlash && doesNotEndWithSlash && doesNotStartWithDot && atOnlyAfterHash && colonOnlyAfterHash && secondSlashOnlyAfterHash } module.exports = (giturl, opts, { gitHosts, protocols }) => { if (!giturl) { return } const correctedUrl = isGitHubShorthand(giturl) ? `github:${giturl}` : giturl const parsed = parseUrl(correctedUrl, protocols) if (!parsed) { return } const gitHostShortcut = gitHosts.byShortcut[parsed.protocol] const gitHostDomain = gitHosts.byDomain[parsed.hostname.startsWith('www.') ? parsed.hostname.slice(4) : parsed.hostname] const gitHostName = gitHostShortcut || gitHostDomain if (!gitHostName) { return } const gitHostInfo = gitHosts[gitHostShortcut || gitHostDomain] let auth = null if (protocols[parsed.protocol]?.auth && (parsed.username || parsed.password)) { auth = `${parsed.username}${parsed.password ? ':' + parsed.password : ''}` } let committish = null let user = null let project = null let defaultRepresentation = null try { if (gitHostShortcut) { let pathname = parsed.pathname.startsWith('/') ? parsed.pathname.slice(1) : parsed.pathname const firstAt = pathname.indexOf('@') // we ignore auth for shortcuts, so just trim it out if (firstAt > -1) { pathname = pathname.slice(firstAt + 1) } const lastSlash = pathname.lastIndexOf('/') if (lastSlash > -1) { user = decodeURIComponent(pathname.slice(0, lastSlash)) // we want nulls only, never empty strings if (!user) { user = null } project = decodeURIComponent(pathname.slice(lastSlash + 1)) } else { project = decodeURIComponent(pathname) } if (project.endsWith('.git')) { project = project.slice(0, -4) } if (parsed.hash) { committish = decodeURIComponent(parsed.hash.slice(1)) } defaultRepresentation = 'shortcut' } else { if (!gitHostInfo.protocols.includes(parsed.protocol)) { return } const segments = gitHostInfo.extract(parsed) if (!segments) { return } user = segments.user && decodeURIComponent(segments.user) project = decodeURIComponent(segments.project) committish = decodeURIComponent(segments.committish) defaultRepresentation = protocols[parsed.protocol]?.name || parsed.protocol.slice(0, -1) } } catch (err) { /* istanbul ignore else */ if (err instanceof URIError) { return } else { throw err } } return [gitHostName, user, auth, project, committish, defaultRepresentation, opts] } lib/index.js000064400000010500151701433100006746 0ustar00'use strict' const { LRUCache } = require('lru-cache') const hosts = require('./hosts.js') const fromUrl = require('./from-url.js') const parseUrl = require('./parse-url.js') const cache = new LRUCache({ max: 1000 }) class GitHost { constructor (type, user, auth, project, committish, defaultRepresentation, opts = {}) { Object.assign(this, GitHost.#gitHosts[type], { type, user, auth, project, committish, default: defaultRepresentation, opts, }) } static #gitHosts = { byShortcut: {}, byDomain: {} } static #protocols = { 'git+ssh:': { name: 'sshurl' }, 'ssh:': { name: 'sshurl' }, 'git+https:': { name: 'https', auth: true }, 'git:': { auth: true }, 'http:': { auth: true }, 'https:': { auth: true }, 'git+http:': { auth: true }, } static addHost (name, host) { GitHost.#gitHosts[name] = host GitHost.#gitHosts.byDomain[host.domain] = name GitHost.#gitHosts.byShortcut[`${name}:`] = name GitHost.#protocols[`${name}:`] = { name } } static fromUrl (giturl, opts) { if (typeof giturl !== 'string') { return } const key = giturl + JSON.stringify(opts || {}) if (!cache.has(key)) { const hostArgs = fromUrl(giturl, opts, { gitHosts: GitHost.#gitHosts, protocols: GitHost.#protocols, }) cache.set(key, hostArgs ? new GitHost(...hostArgs) : undefined) } return cache.get(key) } static parseUrl (url) { return parseUrl(url) } #fill (template, opts) { if (typeof template !== 'function') { return null } const options = { ...this, ...this.opts, ...opts } // the path should always be set so we don't end up with 'undefined' in urls if (!options.path) { options.path = '' } // template functions will insert the leading slash themselves if (options.path.startsWith('/')) { options.path = options.path.slice(1) } if (options.noCommittish) { options.committish = null } const result = template(options) return options.noGitPlus && result.startsWith('git+') ? result.slice(4) : result } hash () { return this.committish ? `#${this.committish}` : '' } ssh (opts) { return this.#fill(this.sshtemplate, opts) } sshurl (opts) { return this.#fill(this.sshurltemplate, opts) } browse (path, ...args) { // not a string, treat path as opts if (typeof path !== 'string') { return this.#fill(this.browsetemplate, path) } if (typeof args[0] !== 'string') { return this.#fill(this.browsetreetemplate, { ...args[0], path }) } return this.#fill(this.browsetreetemplate, { ...args[1], fragment: args[0], path }) } // If the path is known to be a file, then browseFile should be used. For some hosts // the url is the same as browse, but for others like GitHub a file can use both `/tree/` // and `/blob/` in the path. When using a default committish of `HEAD` then the `/tree/` // path will redirect to a specific commit. Using the `/blob/` path avoids this and // does not redirect to a different commit. browseFile (path, ...args) { if (typeof args[0] !== 'string') { return this.#fill(this.browseblobtemplate, { ...args[0], path }) } return this.#fill(this.browseblobtemplate, { ...args[1], fragment: args[0], path }) } docs (opts) { return this.#fill(this.docstemplate, opts) } bugs (opts) { return this.#fill(this.bugstemplate, opts) } https (opts) { return this.#fill(this.httpstemplate, opts) } git (opts) { return this.#fill(this.gittemplate, opts) } shortcut (opts) { return this.#fill(this.shortcuttemplate, opts) } path (opts) { return this.#fill(this.pathtemplate, opts) } tarball (opts) { return this.#fill(this.tarballtemplate, { ...opts, noCommittish: false }) } file (path, opts) { return this.#fill(this.filetemplate, { ...opts, path }) } edit (path, opts) { return this.#fill(this.edittemplate, { ...opts, path }) } getDefaultRepresentation () { return this.default } toString (opts) { if (this.default && typeof this[this.default] === 'function') { return this[this.default](opts) } return this.sshurl(opts) } } for (const [name, host] of Object.entries(hosts)) { GitHost.addHost(name, host) } module.exports = GitHost lib/parse-url.js000064400000004725151701433100007565 0ustar00const url = require('url') const lastIndexOfBefore = (str, char, beforeChar) => { const startPosition = str.indexOf(beforeChar) return str.lastIndexOf(char, startPosition > -1 ? startPosition : Infinity) } const safeUrl = (u) => { try { return new url.URL(u) } catch { // this fn should never throw } } // accepts input like git:github.com:user/repo and inserts the // after the first : const correctProtocol = (arg, protocols) => { const firstColon = arg.indexOf(':') const proto = arg.slice(0, firstColon + 1) if (Object.prototype.hasOwnProperty.call(protocols, proto)) { return arg } const firstAt = arg.indexOf('@') if (firstAt > -1) { if (firstAt > firstColon) { return `git+ssh://${arg}` } else { return arg } } const doubleSlash = arg.indexOf('//') if (doubleSlash === firstColon + 1) { return arg } return `${arg.slice(0, firstColon + 1)}//${arg.slice(firstColon + 1)}` } // attempt to correct an scp style url so that it will parse with `new URL()` const correctUrl = (giturl) => { // ignore @ that come after the first hash since the denotes the start // of a committish which can contain @ characters const firstAt = lastIndexOfBefore(giturl, '@', '#') // ignore colons that come after the hash since that could include colons such as: // git@github.com:user/package-2#semver:^1.0.0 const lastColonBeforeHash = lastIndexOfBefore(giturl, ':', '#') if (lastColonBeforeHash > firstAt) { // the last : comes after the first @ (or there is no @) // like it would in: // proto://hostname.com:user/repo // username@hostname.com:user/repo // :password@hostname.com:user/repo // username:password@hostname.com:user/repo // proto://username@hostname.com:user/repo // proto://:password@hostname.com:user/repo // proto://username:password@hostname.com:user/repo // then we replace the last : with a / to create a valid path giturl = giturl.slice(0, lastColonBeforeHash) + '/' + giturl.slice(lastColonBeforeHash + 1) } if (lastIndexOfBefore(giturl, ':', '#') === -1 && giturl.indexOf('//') === -1) { // we have no : at all // as it would be in: // username@hostname.com/user/repo // then we prepend a protocol giturl = `git+ssh://${giturl}` } return giturl } module.exports = (giturl, protocols) => { const withProtocol = protocols ? correctProtocol(giturl, protocols) : giturl return safeUrl(withProtocol) || safeUrl(correctUrl(withProtocol)) } lib/hosts.js000064400000021424151701433100007006 0ustar00/* eslint-disable max-len */ 'use strict' const maybeJoin = (...args) => args.every(arg => arg) ? args.join('') : '' const maybeEncode = (arg) => arg ? encodeURIComponent(arg) : '' const formatHashFragment = (f) => f.toLowerCase().replace(/^\W+|\/|\W+$/g, '').replace(/\W+/g, '-') const defaults = { sshtemplate: ({ domain, user, project, committish }) => `git@${domain}:${user}/${project}.git${maybeJoin('#', committish)}`, sshurltemplate: ({ domain, user, project, committish }) => `git+ssh://git@${domain}/${user}/${project}.git${maybeJoin('#', committish)}`, edittemplate: ({ domain, user, project, committish, editpath, path }) => `https://${domain}/${user}/${project}${maybeJoin('/', editpath, '/', maybeEncode(committish || 'HEAD'), '/', path)}`, browsetemplate: ({ domain, user, project, committish, treepath }) => `https://${domain}/${user}/${project}${maybeJoin('/', treepath, '/', maybeEncode(committish))}`, browsetreetemplate: ({ domain, user, project, committish, treepath, path, fragment, hashformat }) => `https://${domain}/${user}/${project}/${treepath}/${maybeEncode(committish || 'HEAD')}/${path}${maybeJoin('#', hashformat(fragment || ''))}`, browseblobtemplate: ({ domain, user, project, committish, blobpath, path, fragment, hashformat }) => `https://${domain}/${user}/${project}/${blobpath}/${maybeEncode(committish || 'HEAD')}/${path}${maybeJoin('#', hashformat(fragment || ''))}`, docstemplate: ({ domain, user, project, treepath, committish }) => `https://${domain}/${user}/${project}${maybeJoin('/', treepath, '/', maybeEncode(committish))}#readme`, httpstemplate: ({ auth, domain, user, project, committish }) => `git+https://${maybeJoin(auth, '@')}${domain}/${user}/${project}.git${maybeJoin('#', committish)}`, filetemplate: ({ domain, user, project, committish, path }) => `https://${domain}/${user}/${project}/raw/${maybeEncode(committish || 'HEAD')}/${path}`, shortcuttemplate: ({ type, user, project, committish }) => `${type}:${user}/${project}${maybeJoin('#', committish)}`, pathtemplate: ({ user, project, committish }) => `${user}/${project}${maybeJoin('#', committish)}`, bugstemplate: ({ domain, user, project }) => `https://${domain}/${user}/${project}/issues`, hashformat: formatHashFragment, } const hosts = {} hosts.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', blobpath: 'blob', editpath: 'edit', filetemplate: ({ auth, user, project, committish, path }) => `https://${maybeJoin(auth, '@')}raw.githubusercontent.com/${user}/${project}/${maybeEncode(committish || 'HEAD')}/${path}`, gittemplate: ({ auth, domain, user, project, committish }) => `git://${maybeJoin(auth, '@')}${domain}/${user}/${project}.git${maybeJoin('#', committish)}`, tarballtemplate: ({ domain, user, project, committish }) => `https://codeload.${domain}/${user}/${project}/tar.gz/${maybeEncode(committish || 'HEAD')}`, extract: (url) => { let [, user, project, type, committish] = url.pathname.split('/', 5) if (type && type !== 'tree') { return } if (!type) { committish = url.hash.slice(1) } if (project && project.endsWith('.git')) { project = project.slice(0, -4) } if (!user || !project) { return } return { user, project, committish } }, } hosts.bitbucket = { protocols: ['git+ssh:', 'git+https:', 'ssh:', 'https:'], domain: 'bitbucket.org', treepath: 'src', blobpath: 'src', editpath: '?mode=edit', edittemplate: ({ domain, user, project, committish, treepath, path, editpath }) => `https://${domain}/${user}/${project}${maybeJoin('/', treepath, '/', maybeEncode(committish || 'HEAD'), '/', path, editpath)}`, tarballtemplate: ({ domain, user, project, committish }) => `https://${domain}/${user}/${project}/get/${maybeEncode(committish || 'HEAD')}.tar.gz`, extract: (url) => { let [, user, project, aux] = url.pathname.split('/', 4) if (['get'].includes(aux)) { return } if (project && project.endsWith('.git')) { project = project.slice(0, -4) } if (!user || !project) { return } return { user, project, committish: url.hash.slice(1) } }, } hosts.gitlab = { protocols: ['git+ssh:', 'git+https:', 'ssh:', 'https:'], domain: 'gitlab.com', treepath: 'tree', blobpath: 'tree', editpath: '-/edit', httpstemplate: ({ auth, domain, user, project, committish }) => `git+https://${maybeJoin(auth, '@')}${domain}/${user}/${project}.git${maybeJoin('#', committish)}`, tarballtemplate: ({ domain, user, project, committish }) => `https://${domain}/${user}/${project}/repository/archive.tar.gz?ref=${maybeEncode(committish || 'HEAD')}`, extract: (url) => { const path = url.pathname.slice(1) if (path.includes('/-/') || path.includes('/archive.tar.gz')) { return } const segments = path.split('/') let project = segments.pop() if (project.endsWith('.git')) { project = project.slice(0, -4) } const user = segments.join('/') if (!user || !project) { return } return { user, project, committish: url.hash.slice(1) } }, } hosts.gist = { protocols: ['git:', 'git+ssh:', 'git+https:', 'ssh:', 'https:'], domain: 'gist.github.com', editpath: 'edit', sshtemplate: ({ domain, project, committish }) => `git@${domain}:${project}.git${maybeJoin('#', committish)}`, sshurltemplate: ({ domain, project, committish }) => `git+ssh://git@${domain}/${project}.git${maybeJoin('#', committish)}`, edittemplate: ({ domain, user, project, committish, editpath }) => `https://${domain}/${user}/${project}${maybeJoin('/', maybeEncode(committish))}/${editpath}`, browsetemplate: ({ domain, project, committish }) => `https://${domain}/${project}${maybeJoin('/', maybeEncode(committish))}`, browsetreetemplate: ({ domain, project, committish, path, hashformat }) => `https://${domain}/${project}${maybeJoin('/', maybeEncode(committish))}${maybeJoin('#', hashformat(path))}`, browseblobtemplate: ({ domain, project, committish, path, hashformat }) => `https://${domain}/${project}${maybeJoin('/', maybeEncode(committish))}${maybeJoin('#', hashformat(path))}`, docstemplate: ({ domain, project, committish }) => `https://${domain}/${project}${maybeJoin('/', maybeEncode(committish))}`, httpstemplate: ({ domain, project, committish }) => `git+https://${domain}/${project}.git${maybeJoin('#', committish)}`, filetemplate: ({ user, project, committish, path }) => `https://gist.githubusercontent.com/${user}/${project}/raw${maybeJoin('/', maybeEncode(committish))}/${path}`, shortcuttemplate: ({ type, project, committish }) => `${type}:${project}${maybeJoin('#', committish)}`, pathtemplate: ({ project, committish }) => `${project}${maybeJoin('#', committish)}`, bugstemplate: ({ domain, project }) => `https://${domain}/${project}`, gittemplate: ({ domain, project, committish }) => `git://${domain}/${project}.git${maybeJoin('#', committish)}`, tarballtemplate: ({ project, committish }) => `https://codeload.github.com/gist/${project}/tar.gz/${maybeEncode(committish || 'HEAD')}`, extract: (url) => { let [, user, project, aux] = url.pathname.split('/', 4) if (aux === 'raw') { return } if (!project) { if (!user) { return } project = user user = null } if (project.endsWith('.git')) { project = project.slice(0, -4) } return { user, project, committish: url.hash.slice(1) } }, hashformat: function (fragment) { return fragment && 'file-' + formatHashFragment(fragment) }, } hosts.sourcehut = { protocols: ['git+ssh:', 'https:'], domain: 'git.sr.ht', treepath: 'tree', blobpath: 'tree', filetemplate: ({ domain, user, project, committish, path }) => `https://${domain}/${user}/${project}/blob/${maybeEncode(committish) || 'HEAD'}/${path}`, httpstemplate: ({ domain, user, project, committish }) => `https://${domain}/${user}/${project}.git${maybeJoin('#', committish)}`, tarballtemplate: ({ domain, user, project, committish }) => `https://${domain}/${user}/${project}/archive/${maybeEncode(committish) || 'HEAD'}.tar.gz`, bugstemplate: () => null, extract: (url) => { let [, user, project, aux] = url.pathname.split('/', 4) // tarball url if (['archive'].includes(aux)) { return } if (project && project.endsWith('.git')) { project = project.slice(0, -4) } if (!user || !project) { return } return { user, project, committish: url.hash.slice(1) } }, } for (const [name, host] of Object.entries(hosts)) { hosts[name] = Object.assign({}, defaults, host) } module.exports = hosts LICENSE000064400000001335151701433100005546 0ustar00Copyright (c) 2015, Rebecca Turner Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
/home/emeraadmin/www/js/../node_modules/jsonwebtoken/../es-errors/../../4d695/hosted-git-info.tar