ember-cli-rails-assets 0.7.0 → 0.8.0

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: 7e9361dbdbf288e9b4945183a249ef297ec40d00d2bdbe1e5c3931e4015892e4
4
- data.tar.gz: 91a2fbb0e865ad05e5e6f7ce07ceaa92fee88ec6f7bd10ad49dd8e265fac1b86
3
+ metadata.gz: 56b0e51245621258b937d06d80ec8a579a0a79757d82ca48543c6140a831a557
4
+ data.tar.gz: c3e66e4300881a1627db2ef33e89cd4814a3cb9aaba1f664113bd3dd5caf3ba0
5
5
  SHA512:
6
- metadata.gz: 2f2a291c76a50993d6e18cae3398364507ce288bc33da35f877945f5aaacbf51a45f48b260373f5708eef4d57134a3204c2b49d9d529f91da562b639a5a6fe9d
7
- data.tar.gz: 86b8e8b0d76d40867537b97613504b131e3972eebc7c7fe386f284af1745481ffa2a81391bc26ebc0f89a67af2209c1ad1c2eae6e816d233d02b4f893b8eb608
6
+ metadata.gz: e11ac7ab0892ee54e8c6de2e0bf410db8596de9e45efd40658bd6c5c2803ddb3a9eee354730327644f9445063e041f502415280d1ac93fd0de54eb697cfb07a1
7
+ data.tar.gz: 6d5cbfadca8796f9596eaa67d5c8c3a9a6c36a45ea3f5751606ac617ea025064861210cebd97f04bf2ff14b65d202c049645577c08220da5bd3acf476f06a535
data/README.md CHANGED
@@ -12,7 +12,7 @@ actively supported method of serving EmberCLI applications.
12
12
  However, for the sake of backwards compatibility, `ember-cli-rails-assets`
13
13
  supports injecting the EmberCLI-generated assets into an existing Rails layout.
14
14
 
15
- [ember-cli-rails]: https://github.com/thoughtbot/ember-cli-rails
15
+ [ember-cli-rails]: https://github.com/tricknotes/ember-cli-rails
16
16
 
17
17
  ## Install
18
18
 
@@ -52,7 +52,7 @@ module.exports = function(defaults) {
52
52
  };
53
53
  ```
54
54
 
55
- [README]: https://github.com/thoughtbot/ember-cli-rails#readme
55
+ [README]: https://github.com/tricknotes/ember-cli-rails#readme
56
56
 
57
57
  ## Mount
58
58
 
@@ -141,7 +141,7 @@ See the [CONTRIBUTING] document.
141
141
  Thank you, [contributors]!
142
142
 
143
143
  [CONTRIBUTING]: CONTRIBUTING.md
144
- [contributors]: https://github.com/seanpdoyle/ember-cli-rails-assets/graphs/contributors
144
+ [contributors]: https://github.com/tricknotes/ember-cli-rails-assets/graphs/contributors
145
145
 
146
146
  ## License
147
147
 
@@ -158,8 +158,9 @@ ember-cli-rails was originally created by
158
158
  [Jonathan Jackson][rondale-sc].
159
159
 
160
160
  ember-cli-rails-assets was extracted from ember-cli-rails is maintained by
161
- [Sean Doyle][seanpdoyle].
161
+ [Sean Doyle][seanpdoyle] and [Ryunosuke Sato][tricknotes].
162
162
 
163
163
  [rwz]: https://github.com/rwz
164
164
  [rondale-sc]: https://github.com/rondale-sc
165
165
  [seanpdoyle]: https://github.com/seanpdoyle
166
+ [tricknotes]: https://github.com/tricknotes
@@ -1,15 +1,18 @@
1
1
  require "ember_cli/assets/lookup"
2
+ require "ember_cli/assets/paths"
2
3
 
3
4
  module EmberCliRailsAssetsHelper
4
5
  def include_ember_script_tags(name, prepend: "")
5
- EmberCli[name].build
6
+ app = EmberCli[name]
7
+ app.build
6
8
 
7
- assets = EmberCli::Assets::Lookup.new(EmberCli[name])
9
+ paths = EmberCli::Assets::Paths.new(app)
8
10
 
9
- assets.javascript_assets.
10
- map { |src| [prepend, src].join }.
11
- map { |src| %{<script src="#{src}"></script>}.html_safe }.
12
- inject(&:+)
11
+ if paths.vite?
12
+ vite_ember_script_tags(paths, prepend)
13
+ else
14
+ classic_ember_script_tags(app, prepend)
15
+ end
13
16
  end
14
17
 
15
18
  def include_ember_stylesheet_tags(name, prepend: "")
@@ -22,4 +25,38 @@ module EmberCliRailsAssetsHelper
22
25
  map { |src| %{<link rel="stylesheet" href="#{src}">}.html_safe }.
23
26
  inject(&:+)
24
27
  end
28
+
29
+ private
30
+
31
+ # Classic builds ship a fixed set of scripts (vendor and app) resolved
32
+ # through the asset map, so emit a plain script tag per JavaScript asset
33
+ # with `prepend` joined onto each path.
34
+ def classic_ember_script_tags(app, prepend)
35
+ assets = EmberCli::Assets::Lookup.new(app)
36
+
37
+ assets.javascript_assets.
38
+ map { |src| [prepend, src].join }.
39
+ map { |src| %{<script src="#{src}"></script>}.html_safe }.
40
+ inject(&:+)
41
+ end
42
+
43
+ # Vite builds boot from ES modules declared in dist/index.html, so extract
44
+ # the tags required for startup (including the config meta tag and
45
+ # stylesheets) and remap root-absolute paths onto the mount point.
46
+ def vite_ember_script_tags(paths, prepend)
47
+ document = Nokogiri::HTML5(paths.index_html.read)
48
+ prefix = prepend.to_s.chomp("/")
49
+
50
+ tags = document.css(
51
+ 'meta[name$="/config/environment"], link[rel="stylesheet"], link[rel="modulepreload"], script'
52
+ ).map do |tag|
53
+ %w(href src).each do |attribute|
54
+ value = tag[attribute]
55
+ tag[attribute] = "#{prefix}#{value}" if value&.start_with?("/")
56
+ end
57
+ tag.to_html.html_safe
58
+ end
59
+
60
+ safe_join(tags, "\n")
61
+ end
25
62
  end
@@ -1,9 +1,6 @@
1
1
  module EmberCli
2
2
  module Assets
3
3
  class Engine < ::Rails::Engine
4
- config.to_prepare do
5
- ActionController::Base.helper EmberCliRailsAssetsHelper
6
- end
7
4
  end
8
5
  end
9
6
  end
@@ -1,3 +1,5 @@
1
+ require "nokogiri"
2
+
1
3
  module EmberCli
2
4
  module Assets
3
5
  class Paths
@@ -21,6 +23,13 @@ module EmberCli
21
23
  app.dist_path.join("index.html")
22
24
  end
23
25
 
26
+ # Vite builds (ember-cli >= 6.8) boot from ES modules in index.html,
27
+ # while classic builds emit plain script tags.
28
+ def vite?
29
+ index_html.exist? &&
30
+ !Nokogiri::HTML5(index_html.read).at_css('script[type="module"]').nil?
31
+ end
32
+
24
33
  protected
25
34
 
26
35
  attr_reader :app
@@ -1,5 +1,5 @@
1
1
  module EmberCli
2
2
  module Assets
3
- VERSION = "0.7.0"
3
+ VERSION = "0.8.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ember-cli-rails-assets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Doyle
8
- autorequire:
8
+ - Ryunosuke Sato
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-11 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -28,6 +28,7 @@ description: Include EmberCLI-generated JavaScript and CSS stylesheet tags in yo
28
28
  Rails layouts
29
29
  email:
30
30
  - sean.p.doyle24@gmail.com
31
+ - tricknotes.rs@gmail.com
31
32
  executables: []
32
33
  extensions: []
33
34
  extra_rdoc_files: []
@@ -43,11 +44,10 @@ files:
43
44
  - lib/ember_cli/assets/lookup.rb
44
45
  - lib/ember_cli/assets/paths.rb
45
46
  - lib/ember_cli/assets/version.rb
46
- homepage: https://github.com/seanpdoyle/ember-cli-rails-assets
47
+ homepage: https://github.com/tricknotes/ember-cli-rails-assets
47
48
  licenses:
48
49
  - MIT
49
50
  metadata: {}
50
- post_install_message:
51
51
  rdoc_options: []
52
52
  require_paths:
53
53
  - lib
@@ -62,8 +62,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
62
62
  - !ruby/object:Gem::Version
63
63
  version: '0'
64
64
  requirements: []
65
- rubygems_version: 3.4.6
66
- signing_key:
65
+ rubygems_version: 4.0.16
67
66
  specification_version: 4
68
67
  summary: Include EmberCLI-generated JavaScript and CSS stylesheet tags in your Rails
69
68
  layouts