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 +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
|