react-manifest-rails 0.2.28 → 0.2.30

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.
@@ -2,8 +2,11 @@ require "fileutils"
2
2
  require "set"
3
3
 
4
4
  require "react_manifest/version"
5
+ require "react_manifest/logging"
5
6
  require "react_manifest/configuration"
7
+ require "react_manifest/path_utils"
6
8
  require "react_manifest/tree_classifier"
9
+ require "react_manifest/symbol_extractor"
7
10
  require "react_manifest/scanner"
8
11
  require "react_manifest/dependency_map"
9
12
  require "react_manifest/generator"
@@ -28,6 +31,8 @@ module ReactManifest
28
31
 
29
32
  def reset!
30
33
  @configuration = nil
34
+ @component_maps_cache = nil
35
+ Scanner.clear_cache!
31
36
  end
32
37
 
33
38
  # Returns the ordered list of bundle logical names for a given controller.
@@ -133,6 +138,12 @@ module ReactManifest
133
138
  end
134
139
 
135
140
  def component_maps(config)
141
+ key = config.cache_key
142
+ if @component_maps_cache
143
+ cached_key, cached_maps = @component_maps_cache
144
+ return cached_maps if cached_key == key
145
+ end
146
+
136
147
  controller_dirs = TreeClassifier.new(config).classify.controller_dirs
137
148
  symbol_to_bundle = {}
138
149
  bundle_files = Hash.new { |h, k| h[k] = [] }
@@ -164,10 +175,12 @@ module ReactManifest
164
175
  end
165
176
  end
166
177
 
167
- {
178
+ maps = {
168
179
  symbol_to_bundle: symbol_to_bundle,
169
180
  bundle_dependencies: bundle_dependencies
170
181
  }
182
+ @component_maps_cache = [key, maps]
183
+ maps
171
184
  end
172
185
 
173
186
  def js_files_in_controller(dir, config)
@@ -180,33 +193,14 @@ module ReactManifest
180
193
 
181
194
  def extract_defined_symbols(file_path)
182
195
  content = File.read(file_path, encoding: "utf-8")
183
- symbols = []
184
- ReactManifest::Scanner::DEFINITION_PATTERNS.each do |pattern|
185
- content.scan(pattern) { |m| symbols << m[0] }
186
- end
187
- symbols.uniq
196
+ SymbolExtractor.extract_definitions(content)
188
197
  rescue Errno::ENOENT, Errno::EACCES, Encoding::InvalidByteSequenceError
189
198
  []
190
199
  end
191
200
 
192
201
  def extract_used_component_symbols(file_path)
193
202
  content = File.read(file_path, encoding: "utf-8")
194
-
195
- # Collect locally-defined symbols to avoid self-reference false positives
196
- local_syms = Set.new
197
- ReactManifest::Scanner::DEFINITION_PATTERNS.each do |pattern|
198
- content.scan(pattern) { |m| local_syms << m[0] }
199
- end
200
-
201
- symbols = []
202
- content.scan(ReactManifest::Scanner::PASCAL_TOKEN_PATTERN) do |m|
203
- symbols << m[0] unless local_syms.include?(m[0])
204
- end
205
- content.scan(ReactManifest::Scanner::HOOK_TOKEN_PATTERN) do |m|
206
- symbols << m[0] unless local_syms.include?(m[0])
207
- end
208
-
209
- symbols.uniq
203
+ SymbolExtractor.extract_usages(content)
210
204
  rescue Errno::ENOENT, Errno::EACCES, Encoding::InvalidByteSequenceError
211
205
  []
212
206
  end
@@ -152,26 +152,9 @@ namespace :react_manifest do
152
152
 
153
153
  desc "Remove all AUTO-GENERATED ux_*.js manifests"
154
154
  task clean: :environment do
155
- config = ReactManifest.configuration
156
- targets = [config.abs_manifest_dir, config.abs_output_dir].uniq
157
- removed = 0
158
- skipped = 0
159
-
160
- targets.each do |dir|
161
- Dir.glob(File.join(dir, "ux_*.js")).each do |file|
162
- first_line = File.foreach(file).first.to_s
163
- if first_line.include?("AUTO-GENERATED")
164
- File.delete(file)
165
- puts "[ReactManifest] Removed: #{file.sub("#{Rails.root}/", '')}"
166
- removed += 1
167
- else
168
- puts "[ReactManifest] Skipped (not auto-generated): #{file.sub("#{Rails.root}/", '')}"
169
- skipped += 1
170
- end
171
- end
172
- end
173
-
174
- puts "[ReactManifest] Clean complete: #{removed} removed, #{skipped} skipped"
155
+ config = ReactManifest.configuration
156
+ result = ReactManifest::Generator.new(config).clean!
157
+ puts "[ReactManifest] Clean complete: #{result[:removed]} removed, #{result[:skipped]} skipped"
175
158
  end
176
159
 
177
160
  desc "Start the file watcher in the foreground (for debugging)"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: react-manifest-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.28
4
+ version: 0.2.30
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oliver Noonan
@@ -30,67 +30,67 @@ dependencies:
30
30
  - !ruby/object:Gem::Version
31
31
  version: '9'
32
32
  - !ruby/object:Gem::Dependency
33
- name: rails
33
+ name: minitest
34
34
  requirement: !ruby/object:Gem::Requirement
35
35
  requirements:
36
- - - ">="
37
- - !ruby/object:Gem::Version
38
- version: '7.0'
39
- - - "<"
36
+ - - "~>"
40
37
  - !ruby/object:Gem::Version
41
- version: '9'
38
+ version: '5.0'
42
39
  type: :development
43
40
  prerelease: false
44
41
  version_requirements: !ruby/object:Gem::Requirement
45
42
  requirements:
46
- - - ">="
47
- - !ruby/object:Gem::Version
48
- version: '7.0'
49
- - - "<"
43
+ - - "~>"
50
44
  - !ruby/object:Gem::Version
51
- version: '9'
45
+ version: '5.0'
52
46
  - !ruby/object:Gem::Dependency
53
- name: rake
47
+ name: mocha
54
48
  requirement: !ruby/object:Gem::Requirement
55
49
  requirements:
56
- - - ">="
50
+ - - "~>"
57
51
  - !ruby/object:Gem::Version
58
- version: '0'
52
+ version: '2.0'
59
53
  type: :development
60
54
  prerelease: false
61
55
  version_requirements: !ruby/object:Gem::Requirement
62
56
  requirements:
63
- - - ">="
57
+ - - "~>"
64
58
  - !ruby/object:Gem::Version
65
- version: '0'
59
+ version: '2.0'
66
60
  - !ruby/object:Gem::Dependency
67
- name: rspec
61
+ name: rails
68
62
  requirement: !ruby/object:Gem::Requirement
69
63
  requirements:
70
- - - "~>"
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '7.0'
67
+ - - "<"
71
68
  - !ruby/object:Gem::Version
72
- version: '3.12'
69
+ version: '9'
73
70
  type: :development
74
71
  prerelease: false
75
72
  version_requirements: !ruby/object:Gem::Requirement
76
73
  requirements:
77
- - - "~>"
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '7.0'
77
+ - - "<"
78
78
  - !ruby/object:Gem::Version
79
- version: '3.12'
79
+ version: '9'
80
80
  - !ruby/object:Gem::Dependency
81
- name: rspec-rails
81
+ name: rake
82
82
  requirement: !ruby/object:Gem::Requirement
83
83
  requirements:
84
- - - "~>"
84
+ - - ">="
85
85
  - !ruby/object:Gem::Version
86
- version: '6.0'
86
+ version: '0'
87
87
  type: :development
88
88
  prerelease: false
89
89
  version_requirements: !ruby/object:Gem::Requirement
90
90
  requirements:
91
- - - "~>"
91
+ - - ">="
92
92
  - !ruby/object:Gem::Version
93
- version: '6.0'
93
+ version: '0'
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: sprockets-rails
96
96
  requirement: !ruby/object:Gem::Requirement
@@ -141,10 +141,13 @@ files:
141
141
  - lib/react_manifest/dependency_map.rb
142
142
  - lib/react_manifest/generator.rb
143
143
  - lib/react_manifest/layout_patcher.rb
144
+ - lib/react_manifest/logging.rb
145
+ - lib/react_manifest/path_utils.rb
144
146
  - lib/react_manifest/railtie.rb
145
147
  - lib/react_manifest/reporter.rb
146
148
  - lib/react_manifest/scanner.rb
147
149
  - lib/react_manifest/sprockets_manifest_patcher.rb
150
+ - lib/react_manifest/symbol_extractor.rb
148
151
  - lib/react_manifest/tree_classifier.rb
149
152
  - lib/react_manifest/version.rb
150
153
  - lib/react_manifest/view_helpers.rb