Class: Importmap::Packager
- Inherits:
-
Object
- Object
- Importmap::Packager
- Defined in:
- lib/importmap/packager.rb
Constant Summary collapse
- PIN_REGEX =
:nodoc:
/#{Importmap::Map::PIN_REGEX}(.*)/.freeze
- PRELOAD_OPTION_REGEXP =
:nodoc:
/preload:\s*(\[[^\]]+\]|true|false|["'][^"']*["'])/.freeze
- Error =
Class.new(StandardError)
- HTTPError =
Class.new(Error)
- ServiceError =
Error.new(Error)
Instance Attribute Summary collapse
-
#endpoint ⇒ Object
Returns the value of attribute endpoint.
-
#vendor_path ⇒ Object
readonly
Returns the value of attribute vendor_path.
Instance Method Summary collapse
- #download(package, url) ⇒ Object
- #extract_existing_pin_options(packages) ⇒ Object
- #import(*packages, env: "production", from: "jspm") ⇒ Object
-
#initialize(importmap_path = "config/importmap.rb", vendor_path: "vendor/javascript") ⇒ Packager
constructor
A new instance of Packager.
- #packaged?(package) ⇒ Boolean
- #pin_for(package, url = nil, preloads: nil) ⇒ Object
- #remove(package) ⇒ Object
- #vendored_pin_for(package, url, preloads = nil) ⇒ Object
Constructor Details
#initialize(importmap_path = "config/importmap.rb", vendor_path: "vendor/javascript") ⇒ Packager
Returns a new instance of Packager.
18 19 20 21 |
# File 'lib/importmap/packager.rb', line 18 def initialize(importmap_path = "config/importmap.rb", vendor_path: "vendor/javascript") @importmap_path = Pathname.new(importmap_path) @vendor_path = Pathname.new(vendor_path) end |
Instance Attribute Details
#endpoint ⇒ Object
Returns the value of attribute endpoint.
13 14 15 |
# File 'lib/importmap/packager.rb', line 13 def endpoint @endpoint end |
#vendor_path ⇒ Object (readonly)
Returns the value of attribute vendor_path.
16 17 18 |
# File 'lib/importmap/packager.rb', line 16 def vendor_path @vendor_path end |
Instance Method Details
#download(package, url) ⇒ Object
60 61 62 63 64 |
# File 'lib/importmap/packager.rb', line 60 def download(package, url) ensure_vendor_directory_exists remove_existing_package_file(package) download_package_file(package, url) end |
#extract_existing_pin_options(packages) ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/importmap/packager.rb', line 71 def (packages) return {} unless @importmap_path.exist? packages = Array(packages) = (importmap.lines) packages.to_h do |package| [package, [package] || {}] end end |
#import(*packages, env: "production", from: "jspm") ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/importmap/packager.rb', line 23 def import(*packages, env: "production", from: "jspm") response = post_json({ "install" => Array(packages), "flattenScope" => true, "env" => [ "browser", "module", env ], "provider" => normalize_provider(from), }) case response.code when "200" extract_parsed_response(response) when "404", "401" nil else handle_failure_response(response) end end |
#packaged?(package) ⇒ Boolean
56 57 58 |
# File 'lib/importmap/packager.rb', line 56 def packaged?(package) importmap.match(Importmap::Map.pin_line_regexp_for(package)) end |
#pin_for(package, url = nil, preloads: nil) ⇒ Object
41 42 43 44 45 46 |
# File 'lib/importmap/packager.rb', line 41 def pin_for(package, url = nil, preloads: nil) to = url ? %(, to: "#{url}") : "" preload_param = preload(preloads) %(pin "#{package}") + to + preload_param end |
#remove(package) ⇒ Object
66 67 68 69 |
# File 'lib/importmap/packager.rb', line 66 def remove(package) remove_existing_package_file(package) remove_package_from_importmap(package) end |
#vendored_pin_for(package, url, preloads = nil) ⇒ Object
48 49 50 51 52 53 54 |
# File 'lib/importmap/packager.rb', line 48 def vendored_pin_for(package, url, preloads = nil) filename = package_filename(package) version = extract_package_version_from(url) to = "#{package}.js" != filename ? filename : nil pin_for(package, to, preloads: preloads) + %( # #{version}) end |