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.
- checksums.yaml +4 -4
- data/lib/react_manifest/application_analyzer.rb +11 -9
- data/lib/react_manifest/application_migrator.rb +19 -10
- data/lib/react_manifest/configuration.rb +9 -0
- data/lib/react_manifest/dependency_map.rb +12 -10
- data/lib/react_manifest/generator.rb +44 -120
- data/lib/react_manifest/layout_patcher.rb +14 -5
- data/lib/react_manifest/logging.rb +31 -0
- data/lib/react_manifest/path_utils.rb +11 -0
- data/lib/react_manifest/railtie.rb +3 -0
- data/lib/react_manifest/reporter.rb +12 -10
- data/lib/react_manifest/scanner.rb +98 -130
- data/lib/react_manifest/sprockets_manifest_patcher.rb +5 -3
- data/lib/react_manifest/symbol_extractor.rb +69 -0
- data/lib/react_manifest/tree_classifier.rb +6 -4
- data/lib/react_manifest/version.rb +1 -1
- data/lib/react_manifest/watcher.rb +115 -19
- data/lib/react_manifest.rb +16 -22
- data/tasks/react_manifest.rake +3 -20
- metadata +30 -27
data/lib/react_manifest.rb
CHANGED
|
@@ -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
|
-
|
|
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
|
data/tasks/react_manifest.rake
CHANGED
|
@@ -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
|
|
156
|
-
|
|
157
|
-
removed
|
|
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.
|
|
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:
|
|
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: '
|
|
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: '
|
|
45
|
+
version: '5.0'
|
|
52
46
|
- !ruby/object:Gem::Dependency
|
|
53
|
-
name:
|
|
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:
|
|
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: '
|
|
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: '
|
|
79
|
+
version: '9'
|
|
80
80
|
- !ruby/object:Gem::Dependency
|
|
81
|
-
name:
|
|
81
|
+
name: rake
|
|
82
82
|
requirement: !ruby/object:Gem::Requirement
|
|
83
83
|
requirements:
|
|
84
|
-
- - "
|
|
84
|
+
- - ">="
|
|
85
85
|
- !ruby/object:Gem::Version
|
|
86
|
-
version: '
|
|
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: '
|
|
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
|