importmap-rails 1.1.6 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 70bd0df53bac3a5b6657fc7184840311bfe68d19de5db9470f8b1b2a7ae0ac25
4
- data.tar.gz: 21625eddac92ce45d8174e6023be8e1c602c3b43fab5380c54ee82d67ccdf552
3
+ metadata.gz: 33dce6ec9c0694844753828ea342c40c03dc7cc07460461b37e0310e995b9238
4
+ data.tar.gz: fa91a5de60f67973d7075e58c0f6ac45cf74bc023d96407072c65c616f546472
5
5
  SHA512:
6
- metadata.gz: d96158943de237bfcf6ddf7d5966712635b810a647f2aa4e7e9fbf7fbbc76d8c442e51cead39bf61f71ece5015e1c2f84c75c0a00d7d8e5ae8500c36dc81ad68
7
- data.tar.gz: 7e9cfcefeeb5de53bb05fff2401b46e4775949e78a2a5c148e4827deaec590df7e1033c64e4dd7982b4eb69bed8c8e850b60721784097d91f0e0472502624354
6
+ metadata.gz: 79168173967c286f3ffa36b912cd6a230159f225d1842a0d458b05a54ec8e53ac051cf7fd5903ffab43348b0bfcdf17f17cb1d065de31af6b4b392a5da33e039
7
+ data.tar.gz: d8eb7c52ace629023a350c01755f2f3a17a8b835905b019bb51599af9e058e2de213902acb1e3fa5b7d4d31f9a623f075b697b5270f5547de98c087a37096672
@@ -1,9 +1,9 @@
1
1
  module Importmap::ImportmapTagsHelper
2
2
  # Setup all script tags needed to use an importmap-powered entrypoint (which defaults to application.js)
3
- def javascript_importmap_tags(entry_point = "application", shim: true)
3
+ def javascript_importmap_tags(entry_point = "application", shim: true, importmap: Rails.application.importmap)
4
4
  safe_join [
5
- javascript_inline_importmap_tag,
6
- javascript_importmap_module_preload_tags,
5
+ javascript_inline_importmap_tag(importmap.to_json(resolver: self)),
6
+ javascript_importmap_module_preload_tags(importmap),
7
7
  (javascript_importmap_shim_nonce_configuration_tag if shim),
8
8
  (javascript_importmap_shim_tag if shim),
9
9
  javascript_import_module_tag(entry_point)
@@ -34,7 +34,7 @@ module Importmap::ImportmapTagsHelper
34
34
  # Import a named JavaScript module(s) using a script-module tag.
35
35
  def javascript_import_module_tag(*module_names)
36
36
  imports = Array(module_names).collect { |m| %(import "#{m}") }.join("\n")
37
- tag.script imports.html_safe,
37
+ tag.script imports.html_safe,
38
38
  type: "module", nonce: request&.content_security_policy_nonce
39
39
  end
40
40
 
@@ -8,7 +8,7 @@ class Importmap::Commands < Thor
8
8
  def self.exit_on_failure?
9
9
  false
10
10
  end
11
-
11
+
12
12
  desc "pin [*PACKAGES]", "Pin new packages"
13
13
  option :env, type: :string, aliases: :e, default: "production"
14
14
  option :from, type: :string, aliases: :f, default: "jspm"
@@ -103,6 +103,11 @@ class Importmap::Commands < Thor
103
103
  end
104
104
  end
105
105
 
106
+ desc "packages", "Print out packages with version numbers"
107
+ def packages
108
+ puts npm.packages_with_versions.map { |x| x.join(' ') }
109
+ end
110
+
106
111
  private
107
112
  def packager
108
113
  @packager ||= Importmap::Packager.new
@@ -20,15 +20,17 @@ module Importmap
20
20
  end
21
21
 
22
22
  initializer "importmap.reloader" do |app|
23
- Importmap::Reloader.new.tap do |reloader|
24
- reloader.execute
25
- app.reloaders << reloader
26
- app.reloader.to_run { reloader.execute }
23
+ unless app.config.cache_classes
24
+ Importmap::Reloader.new.tap do |reloader|
25
+ reloader.execute
26
+ app.reloaders << reloader
27
+ app.reloader.to_run { reloader.execute }
28
+ end
27
29
  end
28
30
  end
29
31
 
30
32
  initializer "importmap.cache_sweeper" do |app|
31
- if app.config.importmap.sweep_cache
33
+ if app.config.importmap.sweep_cache && !app.config.cache_classes
32
34
  app.config.importmap.cache_sweepers << app.root.join("app/javascript")
33
35
  app.config.importmap.cache_sweepers << app.root.join("vendor/javascript")
34
36
  app.importmap.cache_sweeper(watches: app.config.importmap.cache_sweepers)
data/lib/importmap/map.rb CHANGED
@@ -69,7 +69,7 @@ class Importmap::Map
69
69
  Digest::SHA1.hexdigest(to_json(resolver: resolver).to_s)
70
70
  end
71
71
 
72
- # Returns an instance ActiveSupport::EventedFileUpdateChecker configured to clear the cache of the map
72
+ # Returns an instance of ActiveSupport::EventedFileUpdateChecker configured to clear the cache of the map
73
73
  # when the directories passed on initialization via `watches:` have changes. This is used in development
74
74
  # and test to ensure the map caches are reset when javascript files are changed.
75
75
  def cache_sweeper(watches: nil)
data/lib/importmap/npm.rb CHANGED
@@ -44,17 +44,19 @@ class Importmap::Npm
44
44
  end.sort_by { |p| [p.name, p.severity] }
45
45
  end
46
46
 
47
+ def packages_with_versions
48
+ # We cannot use the name after "pin" because some dependencies are loaded from inside packages
49
+ # Eg. pin "buffer", to: "https://ga.jspm.io/npm:@jspm/core@2.0.0-beta.19/nodelibs/browser/buffer.js"
50
+
51
+ importmap.scan(/^pin .*(?<=npm:|npm\/|skypack\.dev\/|unpkg\.com\/)(.*)(?=@\d+\.\d+\.\d+)@(\d+\.\d+\.\d+(?:[^\/\s"]*)).*$/) |
52
+ importmap.scan(/^pin "([^"]*)".* #.*@(\d+\.\d+\.\d+(?:[^\s]*)).*$/)
53
+ end
54
+
47
55
  private
48
56
  OutdatedPackage = Struct.new(:name, :current_version, :latest_version, :error, keyword_init: true)
49
57
  VulnerablePackage = Struct.new(:name, :severity, :vulnerable_versions, :vulnerability, keyword_init: true)
50
58
 
51
- def packages_with_versions
52
- # We cannot use the name after "pin" because some dependencies are loaded from inside packages
53
- # Eg. pin "buffer", to: "https://ga.jspm.io/npm:@jspm/core@2.0.0-beta.19/nodelibs/browser/buffer.js"
54
59
 
55
- importmap.scan(/^pin .*(?<=npm:|npm\/|skypack\.dev\/|unpkg\.com\/)(.*)(?=@\d+\.\d+\.\d+)@(\d+\.\d+\.\d+(?:[^\/\s"]*)).*$/) |
56
- importmap.scan(/^pin "([^"]*)".* #.*@(\d+\.\d+\.\d+(?:[^\s]*)).*$/)
57
- end
58
60
 
59
61
  def importmap
60
62
  @importmap ||= File.read(@importmap_path)
@@ -1,3 +1,3 @@
1
1
  module Importmap
2
- VERSION = "1.1.6"
2
+ VERSION = "1.2.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: importmap-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.6
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-23 00:00:00.000000000 Z
11
+ date: 2023-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -85,7 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
85
  - !ruby/object:Gem::Version
86
86
  version: '0'
87
87
  requirements: []
88
- rubygems_version: 3.4.6
88
+ rubygems_version: 3.4.10
89
89
  signing_key:
90
90
  specification_version: 4
91
91
  summary: Use ESM with importmap to manage modern JavaScript in Rails without transpiling