Class: Proscenium::Registry::Package

Inherits:
Object
  • Object
show all
Extended by:
Literal::Properties
Defined in:
lib/proscenium/registry/package.rb

Overview

  1. Fetch the gem metadata from RubyGems API.

  2. Extract any package.json from the gem, and populate the response with it.

  3. Create a tarball containing the fetched package.json. This will be downloaded by the npm client, and unpacked into node_modules. Proscenium ignores this, as it will pull contents directly from location of the installed gem.

  4. Return a valid npm response listing package details, tarball location, and its dependencies.

See wiki.commonjs.org/wiki/Packages/Registry

Direct Known Subclasses

BundledPackage, RubyGemPackage

Instance Method Summary collapse

Instance Method Details

#as_jsonObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/proscenium/registry/package.rb', line 19

def as_json
  {
    name:,
    'dist-tags': {
      latest: version
    },
    versions: {
      version => {
        name:,
        version:,
        dependencies: package_json['dependencies'] || {},
        dist: {
          tarball:,
          integrity:,
          shasum:
        }
      }
    }
  }
end

#gem_nameObject



46
# File 'lib/proscenium/registry/package.rb', line 46

def gem_name = @gem_name ||= name.gsub('@rubygems/', '')

#integrityObject



49
# File 'lib/proscenium/registry/package.rb', line 49

def integrity = "sha512-#{Digest::SHA512.file(tarball_path).base64digest}"

#shasumObject



48
# File 'lib/proscenium/registry/package.rb', line 48

def shasum = Digest::SHA1.file(tarball_path).hexdigest

#validate!Object



40
41
42
43
44
# File 'lib/proscenium/registry/package.rb', line 40

def validate!
  return self if name.start_with?('@rubygems/')

  raise PackageUnsupportedError, name
end

#versionObject

rubocop:disable Style/TrivialAccessors



47
# File 'lib/proscenium/registry/package.rb', line 47

def version = @version # rubocop:disable Style/TrivialAccessors