proscenium 0.15.0.beta.6-aarch64-linux → 0.16.0-aarch64-linux

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: f9b25cb1ca5ae0b9fca97d3937d57c7255cdd99749004dc6e8f3e9728d1ece0b
4
- data.tar.gz: c4afeaa6c1a9e7677e973a97fa8dbc8460d7d704b0917a12046d2612d5f75584
3
+ metadata.gz: 3a32512996a42b4ff7a0a07e8c8e8eb1a372833fee7efbe231ef6c739d95118d
4
+ data.tar.gz: 91514027841543691b04dbbce9f8400039efea1585e54ecb2d81bb2030511a96
5
5
  SHA512:
6
- metadata.gz: fe88aa724877e374c5fafa88ba75d0403f9f0ea120d1d8c2539e8a76287ce61126fe065a5c388eab8cf0f278a4d59ff907055a00da4262b533fa96910c43ec0c
7
- data.tar.gz: e8f3585351d824c129e6c3782c399e548a61ba18d7f96c51f5506ea9bf7f8b633a2390a367817fb33a403192e9ef994f87fe5df57e79f2312e9499c97acf879d
6
+ metadata.gz: ac6a287d9772dbc6d4c49ddc158b1575df09e0edd8edb1c80d341767d7917b9f3635b0bb2b05e7f867aa92816ebd617747690e9a8c7f2817dc9399bae4bd43d3
7
+ data.tar.gz: 12241a76d4e8cf046d9bb0c3fca1ffdd5b050fffbe3d78e0546a5238a39d77269b86d2bb2ddf5a9e916b2113eb395b47d603d46601d70f48681846ec38f89a29
data/README.md CHANGED
@@ -415,7 +415,7 @@ By default, Proscenium's output will take advantage of all modern JS features. F
415
415
 
416
416
  ### Tree Shaking
417
417
 
418
- Tree shaking is the term the JavaScript community uses for dead code elimination, a common compiler optimization that automatically removes unreachable code. Tree shaking is enabled by default in Proascenium.
418
+ Tree shaking is the term the JavaScript community uses for dead code elimination, a common compiler optimization that automatically removes unreachable code. Tree shaking is enabled by default in Proscenium.
419
419
 
420
420
  ```javascript
421
421
  function one() {
@@ -84,15 +84,15 @@ module Proscenium
84
84
  end
85
85
 
86
86
  def self.build_to_path(path, root: nil, base_url: nil)
87
- new(root: root, base_url: base_url).build_to_path(path)
87
+ new(root:, base_url:).build_to_path(path)
88
88
  end
89
89
 
90
90
  def self.build_to_string(path, root: nil, base_url: nil)
91
- new(root: root, base_url: base_url).build_to_string(path)
91
+ new(root:, base_url:).build_to_string(path)
92
92
  end
93
93
 
94
94
  def self.resolve(path, root: nil)
95
- new(root: root).resolve(path)
95
+ new(root:).resolve(path)
96
96
  end
97
97
 
98
98
  def initialize(root: nil, base_url: nil)
Binary file
@@ -25,7 +25,7 @@ module Proscenium
25
25
  # Should be the actual asset file, eg. app.css, some/component.js.
26
26
  # @param resolve [String] description of the file to resolve and import.
27
27
  # @return [String] the digest of the imported file path if a css module (*.module.css).
28
- def import(filepath = nil, resolve: nil, **options)
28
+ def import(filepath = nil, resolve: nil, **)
29
29
  self.imported ||= {}
30
30
 
31
31
  filepath = Resolver.resolve(resolve) if !filepath && resolve
@@ -34,7 +34,7 @@ module Proscenium
34
34
  unless self.imported.key?(filepath)
35
35
  # ActiveSupport::Notifications.instrument('sideload.proscenium', identifier: value)
36
36
 
37
- self.imported[filepath] = { **options }
37
+ self.imported[filepath] = { ** }
38
38
  self.imported[filepath][:digest] = Utils.digest(filepath) if css_module
39
39
  end
40
40
 
@@ -61,19 +61,36 @@ module Proscenium
61
61
  #
62
62
  # @param filepath [Pathname] Absolute file system path of the Ruby file to sideload.
63
63
  def sideload(filepath, **options)
64
+ return if !Proscenium.config.side_load || (options[:js] == false && options[:css] == false)
65
+
66
+ sideload_js(filepath, **options) unless options[:js] == false
67
+ sideload_css(filepath, **options) unless options[:css] == false
68
+ end
69
+
70
+ def sideload_js(filepath, **options)
64
71
  return unless Proscenium.config.side_load
65
72
 
66
73
  filepath = Rails.root.join(filepath) unless filepath.is_a?(Pathname)
67
74
  filepath = filepath.sub_ext('')
68
75
 
69
- import_if_exists = lambda do |x|
76
+ JS_EXTENSIONS.find do |x|
70
77
  if (fp = filepath.sub_ext(x)).exist?
71
78
  import(Resolver.resolve(fp.to_s), sideloaded: true, **options)
72
79
  end
73
80
  end
81
+ end
74
82
 
75
- JS_EXTENSIONS.find(&import_if_exists) unless options[:js] == false
76
- CSS_EXTENSIONS.find(&import_if_exists) unless options[:css] == false
83
+ def sideload_css(filepath, **options)
84
+ return unless Proscenium.config.side_load
85
+
86
+ filepath = Rails.root.join(filepath) unless filepath.is_a?(Pathname)
87
+ filepath = filepath.sub_ext('')
88
+
89
+ CSS_EXTENSIONS.find do |x|
90
+ if (fp = filepath.sub_ext(x)).exist?
91
+ import(Resolver.resolve(fp.to_s), sideloaded: true, **options)
92
+ end
93
+ end
77
94
  end
78
95
 
79
96
  def each_stylesheet(delete: false)
@@ -16,7 +16,7 @@ module Proscenium
16
16
  path = CGI.unescape(path) if path.start_with?(/https?%3A%2F%2F/)
17
17
 
18
18
  info do
19
- message = +" #{color('[Proscenium]', nil, bold: true)} Building (to path) #{path}"
19
+ message = " #{color('[Proscenium]', nil, bold: true)} Building (to path) #{path}"
20
20
  message << " (Duration: #{event.duration.round(1)}ms | " \
21
21
  "Allocations: #{event.allocations}#{cached})"
22
22
  end
@@ -27,7 +27,7 @@ module Proscenium
27
27
  path = CGI.unescape(path) if path.start_with?(/https?%3A%2F%2F/)
28
28
 
29
29
  info do
30
- message = +" #{color('[Proscenium]', nil, bold: true)} Building #{path}"
30
+ message = " #{color('[Proscenium]', nil, bold: true)} Building #{path}"
31
31
  message << " (Duration: #{event.duration.round(1)}ms | Allocations: #{event.allocations})"
32
32
  end
33
33
  end
@@ -15,7 +15,7 @@ module Proscenium
15
15
  detail[:text]
16
16
  end
17
17
 
18
- super(args)
18
+ super
19
19
  end
20
20
  end
21
21
 
@@ -18,7 +18,7 @@ module Proscenium
18
18
 
19
19
  chunks_path = Rails.public_path.join('assets').to_s
20
20
  headers = Rails.application.config.public_file_server.headers || {}
21
- @chunk_handler = ::ActionDispatch::FileHandler.new(chunks_path, headers: headers)
21
+ @chunk_handler = ::ActionDispatch::FileHandler.new(chunks_path, headers:)
22
22
  end
23
23
 
24
24
  def call(env)
@@ -25,8 +25,8 @@ module Proscenium
25
25
  # end
26
26
  #
27
27
  # @yield the given block to a `div` within the top level component div.
28
- def view_template(**attributes, &block)
29
- send root_tag, **{ data: data_attributes }.deep_merge(attributes), &block
28
+ def view_template(**attributes, &)
29
+ send(root_tag, **{ data: data_attributes }.deep_merge(attributes), &)
30
30
  end
31
31
  end
32
32
  end
@@ -88,7 +88,7 @@ module Proscenium
88
88
  index = app.config.public_file_server.index_name || 'index'
89
89
 
90
90
  app.middleware.insert_after(ActionDispatch::Static, ActionDispatch::Static,
91
- root.join('public').to_s, index: index, headers: headers)
91
+ root.join('public').to_s, index:, headers:)
92
92
  end
93
93
  end
94
94
  end
@@ -76,7 +76,7 @@ module Proscenium
76
76
  next unless imports.key?(inpath)
77
77
 
78
78
  if (import = imports[inpath]).delete(:lazy)
79
- scripts[inpath] = import.merge(outpath: outpath)
79
+ scripts[inpath] = import.merge(outpath:)
80
80
  else
81
81
  opts = import[:js].is_a?(Hash) ? import[:js] : {}
82
82
  out << helpers.javascript_include_tag(outpath, extname: false, **opts)
@@ -127,16 +127,28 @@ module Proscenium
127
127
  options[k] = obj.instance_eval(&options[k]) if options[k].is_a?(Proc)
128
128
  end
129
129
 
130
+ css_imports = []
131
+
130
132
  klass = obj.class
131
133
  while klass.respond_to?(:source_path) && klass.source_path && !klass.abstract_class
132
134
  if klass.respond_to?(:sideload)
133
135
  klass.sideload options
134
- else
136
+ elsif options[:css] == false
135
137
  Importer.sideload klass.source_path, **options
138
+ else
139
+ Importer.sideload_js klass.source_path, **options
140
+ css_imports << klass.source_path
136
141
  end
137
142
 
138
143
  klass = klass.superclass
139
144
  end
145
+
146
+ # The reason why we sideload CSS after JS is because the order of CSS is important.
147
+ # Basically, the layout should be loaded before the view so that CSS cascading works i9n the
148
+ # right direction.
149
+ css_imports.reverse_each do |it|
150
+ Importer.sideload_css it, **options
151
+ end
140
152
  end
141
153
  end
142
154
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Proscenium
4
- VERSION = '0.15.0.beta.6'
4
+ VERSION = '0.16.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: proscenium
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0.beta.6
4
+ version: 0.16.0
5
5
  platform: aarch64-linux
6
6
  authors:
7
7
  - Joel Moss
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-23 00:00:00.000000000 Z
11
+ date: 2024-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 6.1.0
19
+ version: 7.1.0
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: '8.0'
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 6.1.0
29
+ version: 7.1.0
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '8.0'
@@ -64,14 +64,14 @@ dependencies:
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: 1.16.3
67
+ version: 1.17.0
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: 1.16.3
74
+ version: 1.17.0
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: oj
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -106,7 +106,7 @@ dependencies:
106
106
  requirements:
107
107
  - - ">="
108
108
  - !ruby/object:Gem::Version
109
- version: 6.1.0
109
+ version: 7.1.0
110
110
  - - "<"
111
111
  - !ruby/object:Gem::Version
112
112
  version: '8.0'
@@ -116,7 +116,7 @@ dependencies:
116
116
  requirements:
117
117
  - - ">="
118
118
  - !ruby/object:Gem::Version
119
- version: 6.1.0
119
+ version: 7.1.0
120
120
  - - "<"
121
121
  - !ruby/object:Gem::Version
122
122
  version: '8.0'
@@ -214,14 +214,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
214
214
  requirements:
215
215
  - - ">="
216
216
  - !ruby/object:Gem::Version
217
- version: 2.7.0
217
+ version: 3.2.0
218
218
  required_rubygems_version: !ruby/object:Gem::Requirement
219
219
  requirements:
220
- - - ">"
220
+ - - ">="
221
221
  - !ruby/object:Gem::Version
222
- version: 1.3.1
222
+ version: '0'
223
223
  requirements: []
224
- rubygems_version: 3.4.19
224
+ rubygems_version: 3.5.21
225
225
  signing_key:
226
226
  specification_version: 4
227
227
  summary: The engine powering your Rails frontend