importmap-rails 1.1.6 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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