class Codestatus::PackageResolvers::NpmResolver

Constants

NPM_REGISTRY_ENDPOINT

Private Instance Methods

bugs_url() click to toggle source
# File lib/codestatus/package_resolvers/npm_resolver.rb, line 22
def bugs_url
  package_info&.dig('bugs', 'url')
end
client() click to toggle source
# File lib/codestatus/package_resolvers/npm_resolver.rb, line 45
def client
  RestClient
end
found?() click to toggle source
# File lib/codestatus/package_resolvers/npm_resolver.rb, line 10
def found?
  package_info
end
homepage_url() click to toggle source
# File lib/codestatus/package_resolvers/npm_resolver.rb, line 26
def homepage_url
  package_info&.dig('homepage')
end
package_info() click to toggle source
# File lib/codestatus/package_resolvers/npm_resolver.rb, line 34
def package_info
  @package_info ||= request(package_uri)
end
package_uri() click to toggle source
# File lib/codestatus/package_resolvers/npm_resolver.rb, line 49
def package_uri
  File.join(NPM_REGISTRY_ENDPOINT, slash_escaped_package)
end
repository_url() click to toggle source
# File lib/codestatus/package_resolvers/npm_resolver.rb, line 30
def repository_url
  package_info&.dig('repository', 'url')
end
request(uri) click to toggle source
# File lib/codestatus/package_resolvers/npm_resolver.rb, line 38
def request(uri)
  response = client.get(uri)
  JSON.parse(response)
rescue RestClient::NotFound
  nil
end
slash_escaped_package() click to toggle source

for scoped package

For example, to access @atlassian/aui information,
we must use https://registry.npmjs.org/@atlassian%2Faui,
not https://registry.npmjs.org/%40atlassian%2Faui.
# File lib/codestatus/package_resolvers/npm_resolver.rb, line 57
def slash_escaped_package
  package.gsub('/', CGI.escape('/'))
end
urls() click to toggle source
# File lib/codestatus/package_resolvers/npm_resolver.rb, line 14
def urls
  [
    bugs_url,
    repository_url,
    homepage_url,
  ].compact
end