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 +4 -4
- data/app/helpers/importmap/importmap_tags_helper.rb +4 -4
- data/lib/importmap/commands.rb +6 -1
- data/lib/importmap/engine.rb +7 -5
- data/lib/importmap/map.rb +1 -1
- data/lib/importmap/npm.rb +8 -6
- data/lib/importmap/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 33dce6ec9c0694844753828ea342c40c03dc7cc07460461b37e0310e995b9238
|
4
|
+
data.tar.gz: fa91a5de60f67973d7075e58c0f6ac45cf74bc023d96407072c65c616f546472
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
|
data/lib/importmap/commands.rb
CHANGED
@@ -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
|
data/lib/importmap/engine.rb
CHANGED
@@ -20,15 +20,17 @@ module Importmap
|
|
20
20
|
end
|
21
21
|
|
22
22
|
initializer "importmap.reloader" do |app|
|
23
|
-
|
24
|
-
reloader
|
25
|
-
|
26
|
-
|
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)
|
data/lib/importmap/version.rb
CHANGED
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
|
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-
|
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.
|
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
|