autoprefixer-rails 9.4.8 → 10.4.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +185 -0
  3. data/README.md +25 -33
  4. data/lib/autoprefixer-rails/processor.rb +73 -109
  5. data/lib/autoprefixer-rails/railtie.rb +20 -15
  6. data/lib/autoprefixer-rails/result.rb +2 -0
  7. data/lib/autoprefixer-rails/sprockets.rb +16 -14
  8. data/lib/autoprefixer-rails/version.rb +4 -2
  9. data/lib/autoprefixer-rails.rb +16 -13
  10. data/lib/rake/autoprefixer_tasks.rb +6 -4
  11. data/vendor/autoprefixer.js +72694 -58965
  12. metadata +44 -49
  13. data/.gitignore +0 -7
  14. data/.rspec +0 -1
  15. data/.travis.yml +0 -25
  16. data/Gemfile +0 -9
  17. data/Rakefile +0 -48
  18. data/autoprefixer-rails.gemspec +0 -28
  19. data/spec/app/.browserslistrc +0 -4
  20. data/spec/app/.gitignore +0 -2
  21. data/spec/app/Rakefile +0 -2
  22. data/spec/app/app/assets/config/manifest.js +0 -0
  23. data/spec/app/app/assets/stylesheets/evaluate.css.erb +0 -1
  24. data/spec/app/app/assets/stylesheets/loaded.sass +0 -2
  25. data/spec/app/app/assets/stylesheets/sass.sass +0 -1
  26. data/spec/app/app/assets/stylesheets/test.css +0 -3
  27. data/spec/app/app/assets/stylesheets/wrong.css +0 -2
  28. data/spec/app/app/controllers/application_controller.rb +0 -2
  29. data/spec/app/app/controllers/css_controller.rb +0 -6
  30. data/spec/app/config/application.rb +0 -14
  31. data/spec/app/config/autoprefixer.yml +0 -2
  32. data/spec/app/config/boot.rb +0 -2
  33. data/spec/app/config/environment.rb +0 -3
  34. data/spec/app/config/environments/test.rb +0 -9
  35. data/spec/app/config/initializers/compress.rb +0 -1
  36. data/spec/app/config/initializers/secret_token.rb +0 -1
  37. data/spec/app/config/routes.rb +0 -3
  38. data/spec/app/config.ru +0 -2
  39. data/spec/autoprefixer_spec.rb +0 -112
  40. data/spec/compass/config.rb +0 -34
  41. data/spec/compass/sass/screen.scss +0 -3
  42. data/spec/compass_spec.rb +0 -21
  43. data/spec/processor_spec.rb +0 -14
  44. data/spec/rails_spec.rb +0 -50
  45. data/spec/railtie_spec.rb +0 -29
  46. data/spec/spec_helper.rb +0 -16
  47. data/sprockets4.gemfile +0 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 391e0d51af9f5b7329180f64924e671c0988ac75a183029fa8d82f31c465f386
4
- data.tar.gz: 4029de465480eb8039a271f97210afed60f564e907d126cc5a79065d177e9da0
3
+ metadata.gz: 57c218760a92a4c4449c643e59d5c9b99d187c228aaa68c563d03c468fc2a055
4
+ data.tar.gz: fa282be312c5ad55816deb7475a3d2f3357266a806ac96a624f125f2f0d0fc4b
5
5
  SHA512:
6
- metadata.gz: d0ff0ef5d501b899948028291cff1a8a99fd97205cec2ddf77b705cdce356ff209fc2842a4b5ffdbdb9c5427e0230463264cc3e07ebe90225fa32e536481c400
7
- data.tar.gz: da5d66e4dc292111ae79dda85f52d647110fd7c17a839b58d801fda992761fa806787268ea69a50edd20b2d9f79daf020f517601838b16d0bcf14c0e06db1943
6
+ metadata.gz: f20ccf58b1661fe3082f9d0487979c42146b21115df430269ca6d7a3a35dfa2f44cb04c1f4f3eb01eaf00bd360f4823d00106101c38bb80a8c278e4d9b764ed4
7
+ data.tar.gz: beb69b97fb7f92d970fae59bfefff484b1f59973bfcf26b049ecbc738a61db9044e660040531b0f959cb50f17f6ec5412ee8b1f226ba30b0cec359e902ac9bfa
data/CHANGELOG.md CHANGED
@@ -1,5 +1,190 @@
1
1
  # Change Log
2
2
 
3
+ ## 10.4.2.0
4
+ * Fixed missed `-webkit-` prefix for `width: stretch`.
5
+ * Fixed `::file-selector-button` data (by Luke Warlow).
6
+ * Ensure sprockets-rails is loaded before autoprefixer-rails (by Thomas Morgan)
7
+
8
+ ## 10.4.0.0
9
+ * Added `:autofill` support (by Luke Warlow).
10
+
11
+ ## 10.3.3.0
12
+ * Fixed `::file-selector-button` support (by Usman Yunusov).
13
+ * Fixed wrong `-moz-` prefix from `::file-selector-button` (by Usman Yunusov).
14
+
15
+ ## 10.3.1.0
16
+ * Added `::file-selector-button` support (by Luke Warlow).
17
+ * Fixed adding wrong prefixes to `content` (by Luke Warlow).
18
+ * Fix `ReferenceError: Can't find variable: URL` (#213)
19
+
20
+ ## 10.2.5.1
21
+ * Remove nodejs version check via ExecJS, to be compatible with 2.8.1 (#203)
22
+
23
+ ## 10.2.5.0
24
+ * Fixed `:` support in `@supports` (by Dmitry Semigradsky).
25
+ * Update Can I Use data.
26
+ * Lock to execjs < 2.8.0 for now (#203)
27
+
28
+ ## 10.2.4.0
29
+ * Fixed `transition-property` warnings (by @Sheraff).
30
+
31
+ ## 10.2.0.0 "Sub rosa"
32
+ * Added TypeScript definitions (by Dmitry Semigradsky).
33
+ * Fixed docs (by Florian Pellet).
34
+ * Update Can I Use data.
35
+ * Update postcss to 8.2.2
36
+
37
+ ## 10.1.0.0 "Pula"
38
+ * Fixed `Cannot read property 'proxyOf' of undefined` error (by Igor Kamyshev).
39
+ * Added `dpcm` unit support to `min-resolution: 2dppx` (by Robert Eisele).
40
+ * Fixed rational approximation in `min-resolution` (by Robert Eisele).
41
+
42
+ ## 10.0.3.0
43
+ * Fixed `substract` to `subtract` value for `mask-composite` (by Michelle Enos).
44
+ * Update Can I Use data
45
+
46
+ ## 10.0.2.0
47
+ * Removed -ms-user-select: all because IE and old Edge don’t support it.
48
+ * Fixed Grid Layout warning.
49
+ * Update Can I Use data
50
+
51
+ ## 10.0.1.3
52
+ * Fix `fileURL.replace is not a function` when reporting warnings (#194)
53
+
54
+ ## 10.0.1.2
55
+ * Workaround `existsSync not a function` (#193)
56
+
57
+ ## 10.0.1.1
58
+ * Update Can I Use data.
59
+ * Update postcss to 8.1.4
60
+ * Fix issue with source map (#190)
61
+
62
+ ## 10.0.1.0
63
+ * Update Can I Use data.
64
+ * Update autoprefixer to 10.0.1
65
+ * Update postcss to 8.1.1
66
+
67
+ ## 10.0.0.2
68
+ * Update postcss to 8.0.5
69
+ * Update browserslist & caniuse-lite
70
+
71
+ ## 10.0.0.1
72
+ * Improved error message for old environments.
73
+ * Reduced gem file size.
74
+
75
+ ## 10.0 “Alis volat propriis”
76
+ * Removed support for Node.js 6.x, 8.x, 11.x.
77
+ * Moved to PostCSS 8.
78
+
79
+ ## 9.8.6.5
80
+ * Fix `9.8.6.4` regression.
81
+
82
+ ## 9.8.6.4
83
+ * Remove deprecation warnings.
84
+
85
+ ## 9.8.6.3
86
+ * Fix deprecation warning for non-Rails environment.
87
+
88
+ ## 9.8.6.2
89
+ * Print deprecation warning only once.
90
+
91
+ ## 9.8.6.1
92
+ * Improve deprecated warnings.
93
+
94
+ ## 9.8.6
95
+ * Fixed `env` option.
96
+ * Added deprecation warning.
97
+
98
+ ## 9.8.5
99
+ * Improved Grid Layout warnings (by Daniel Tonon).
100
+
101
+ ## 9.8.4
102
+ * Reduce JS bundle size.
103
+
104
+ ## 9.8.3
105
+ * Update Can I Use data.
106
+
107
+ ## 9.8.2
108
+ * Update Can I Use data.
109
+
110
+ ## 9.8.1
111
+ * Replace `chalk` to `kleur` (by Luke Edwards).
112
+
113
+ ## 9.8 “Vigilo Confido”
114
+ * Add `:placeholder-shown` support (by Tanguy Krotoff).
115
+
116
+ ## 9.7.6
117
+ * Revert `-webkit-stretch` fix.
118
+
119
+ ## 9.7.5
120
+ * Fix `-webkit-stretch` support.
121
+ * Reduce gem file size.
122
+
123
+ ## 9.7.4
124
+ * Update Can I Use data.
125
+
126
+ ## 9.7.3
127
+ * Update Can I Use data.
128
+
129
+ ## 9.7.2
130
+ * Add `-ms-user-select: element` support.
131
+
132
+ ## 9.7.1
133
+ * Avoid unnecessary transitions in prefixed selectors (by Andrey Alexandrov).
134
+ * Fix `fit-content` for Firefox.
135
+
136
+ ## 9.7 “Ad Victoriam”
137
+ * Add `AUTOPREFIXER_GRID` env variable to enable Grid Layout polyfill for IE.
138
+ * Fix `Cannot read property 'grid' of undefined` error.
139
+
140
+ ## 9.6.5
141
+ * Fix selector prefixing (by Andrey Alexandrov).
142
+
143
+ ## 9.6.4
144
+ * Now the real fix for `'startsWith' of undefined` error.
145
+
146
+ ## 9.6.3
147
+ * Fix `Cannot read property 'startsWith' of undefined` error.
148
+
149
+ ## 9.6.2
150
+ * Fix false `Replace fill to stretch` warning.
151
+
152
+ ## 9.6.1.1
153
+ * Update Can I Use data.
154
+
155
+ ## 9.6.1
156
+ * Fix `-webkit-line-clamp` truncating multi-line text support.
157
+
158
+ ## 9.6 “Nunc id vides, nunc ne vides”
159
+ * Add warning-less `overrideBrowserslist` option.
160
+ * Add `text-orientation` support.
161
+ * Add `min-resolution: 2x` alias support.
162
+
163
+ ## 9.5.1.1
164
+ * Fix `register_postprocessor' for nil:NilClass` error.
165
+ * Update Can I Use data.
166
+
167
+ ## 9.5.1
168
+ * Fix `backdrop-filter` for Edge (by Oleh Aloshkin).
169
+ * Fix `min-resolution` media query support in Firefox < 16.
170
+
171
+ ## 9.5 “Draco dormiens nunquam titillandus”
172
+ * Add `mask-composite` support (by Semen Levenson).
173
+
174
+ ## 9.4.10.2
175
+ * Fix Ruby < 2.4 support (by Jack Ford).
176
+ * Update Can I Use data.
177
+
178
+ ## 9.4.10.1
179
+ * Fix non-Rails environments support (by Junya Ogura).
180
+ * Update Can I Use data.
181
+
182
+ ## 9.4.10
183
+ * Add warning for named Grid rows.
184
+
185
+ ## 9.4.9
186
+ * Fix `grid-template` and `@media` case (by Bogdan Dolin).
187
+
3
188
  ## 9.4.8
4
189
  * Fix `calc()` support in Grid gap.
5
190
 
data/README.md CHANGED
@@ -5,17 +5,18 @@
5
5
  title="Autoprefixer logo by Anton Lovchikov">
6
6
 
7
7
  [Autoprefixer] is a tool to parse CSS and add vendor prefixes to CSS rules
8
- using values from the [Can I Use] database. This gem provides Ruby and Ruby on Rails
9
- integration with this JavaScript tool.
8
+ using values from the [Can I Use] database. This gem provides Ruby
9
+ and Ruby on Rails integration with this JavaScript tool.
10
10
 
11
11
  <a href="https://evilmartians.com/?utm_source=autoprefixer-rails">
12
12
  <img src="https://evilmartians.com/badges/sponsored-by-evil-martians.svg" alt="Sponsored by Evil Martians" width="236" height="54">
13
13
  </a>
14
14
 
15
- [Autoprefixer]: https://github.com/postcss/autoprefixer
16
- [Can I Use]: http://caniuse.com/
17
- [ci-img]: https://travis-ci.org/ai/autoprefixer-rails.svg
18
- [ci]: https://travis-ci.org/ai/autoprefixer-rails
15
+ [Autoprefixer]: https://github.com/postcss/autoprefixer
16
+ [Can I Use]: http://caniuse.com/
17
+ [PostCSS]: https://postcss.org/
18
+ [ci-img]: https://travis-ci.org/ai/autoprefixer-rails.svg
19
+ [ci]: https://travis-ci.org/ai/autoprefixer-rails
19
20
 
20
21
  ## Differences
21
22
 
@@ -32,8 +33,8 @@ Windows users should install [Node.js]. Autoprefixer Rails doesn’t work with
32
33
  old JScript in Windows.
33
34
 
34
35
  Autoprefixer Rails uses [ExecJS] that will use the best available JavaScript
35
- runtime. Currently this gem is tested to work with Node.js version 6 and up and
36
- with [mini_racer], but will not work with [therubyracer].
36
+ runtime. Currently this gem is tested to work with Node.js version 10 and up
37
+ and with [mini_racer], but will not work with [therubyracer].
37
38
 
38
39
  [Node.js]: http://nodejs.org/
39
40
  [ExecJS]: https://github.com/rails/execjs
@@ -87,26 +88,15 @@ support to add vendor prefixes automatically using the Asset Pipeline:
87
88
  }
88
89
  ```
89
90
 
90
- If you need to specify browsers for your Rails project, you can save them to
91
+ If you need to specify browsers for your Rails project, you can save them
92
+ to `.browserslistrc` and place it under `app/assets/stylesheets/`
93
+ or any of its ancestor directories
91
94
 
92
- * `browserslist` and place it under `app/assets/stylesheets/`
93
- or any of its ancestor directories
94
-
95
- ```
96
- > 1%
97
- last 2 versions
98
- IE > 8 # comment
99
- ```
100
-
101
- * Or `config/autoprefixer.yml`
102
-
103
- ```yaml
104
- flexbox: no-2009
105
- browsers:
106
- - "> 1%"
107
- - "last 2 versions"
108
- - "IE > 8"
109
- ```
95
+ ```
96
+ > 1%
97
+ last 2 versions
98
+ IE > 8 # comment
99
+ ```
110
100
 
111
101
  See [Browserslist docs] for config format. But `> 5% in US` query is not
112
102
  supported in Rails, because of ExecJS limitations. You should migrate to webpack
@@ -154,12 +144,6 @@ require "autoprefixer-rails"
154
144
  prefixed = AutoprefixerRails.process(css, from: 'main.css').css
155
145
  ```
156
146
 
157
- You can specify browsers with the `browsers` option:
158
-
159
- ```ruby
160
- AutoprefixerRails.process(css, from: 'a.css', browsers: ['> 1%', 'ie 10']).css
161
- ```
162
-
163
147
  ### Compass
164
148
 
165
149
  You should consider using Gulp instead of Compass binary,
@@ -244,3 +228,11 @@ to JS style, so you can use `map: { sources_content: false }`
244
228
  instead of camelcase `sourcesContent`.
245
229
 
246
230
  [PostCSS docs]: https://github.com/postcss/postcss#source-map-1
231
+
232
+
233
+ ## Security Contact
234
+
235
+ To report a security vulnerability, please use the [Tidelift security contact].
236
+ Tidelift will coordinate the fix and disclosure.
237
+
238
+ [Tidelift security contact]: https://tidelift.com/security
@@ -1,15 +1,18 @@
1
- require 'pathname'
2
- require 'execjs'
3
- require 'json'
1
+ # frozen_string_literal: true
4
2
 
5
- IS_SECTION = /^\s*\[(.+)\]\s*$/
3
+ require "pathname"
4
+ require "execjs"
5
+ require "json"
6
+
7
+ IS_SECTION = /^\s*\[(.+)\]\s*$/.freeze
6
8
 
7
9
  module AutoprefixerRails
8
10
  # Ruby to JS wrapper for Autoprefixer processor instance
9
11
  class Processor
12
+ SUPPORTED_RUNTIMES = [ExecJS::Runtimes::Node, ExecJS::Runtimes::MiniRacer]
10
13
 
11
- def initialize(params = { })
12
- @params = params || { }
14
+ def initialize(params = {})
15
+ @params = params || {}
13
16
  end
14
17
 
15
18
  # Process `css` and return result.
@@ -18,105 +21,87 @@ module AutoprefixerRails
18
21
  # * `from` with input CSS file name. Will be used in error messages.
19
22
  # * `to` with output CSS file name.
20
23
  # * `map` with true to generate new source map or with previous map.
21
- def process(css, opts = { })
24
+ def process(css, opts = {})
22
25
  opts = convert_options(opts)
23
26
 
24
- apply_wrapper =
25
- "(function(opts, pluginOpts) {" +
26
- "return eval(process.apply(this, opts, pluginOpts));" +
27
- "})"
28
-
29
- pluginOpts = params_with_browsers(opts[:from]).merge(opts)
30
- processOpts = {
31
- from: pluginOpts.delete(:from),
32
- to: pluginOpts.delete(:to),
33
- map: pluginOpts.delete(:map)
27
+ plugin_opts = params_with_browsers(opts[:from]).merge(opts)
28
+ process_opts = {
29
+ from: plugin_opts.delete(:from),
30
+ to: plugin_opts.delete(:to),
31
+ map: plugin_opts.delete(:map)
34
32
  }
35
33
 
36
34
  begin
37
- result = runtime.call(apply_wrapper, [css, processOpts, pluginOpts])
35
+ result = runtime.call("autoprefixer.process", css, process_opts, plugin_opts)
38
36
  rescue ExecJS::ProgramError => e
39
- contry_error = 'BrowserslistError: ' +
40
- 'Country statistics is not supported ' +
41
- 'in client-side build of Browserslist'
37
+ contry_error = "BrowserslistError: " \
38
+ "Country statistics are not supported " \
39
+ "in client-side build of Browserslist"
42
40
  if e.message == contry_error
43
- raise 'Country statistics is not supported in AutoprefixerRails. ' +
44
- 'Use Autoprefixer with webpack or other Node.js builder.'
41
+ raise "Country statistics is not supported in AutoprefixerRails. " \
42
+ "Use Autoprefixer with webpack or other Node.js builder."
45
43
  else
46
44
  raise e
47
45
  end
48
46
  end
49
47
 
50
- Result.new(result['css'], result['map'], result['warnings'])
48
+ Result.new(result["css"], result["map"], result["warnings"])
51
49
  end
52
50
 
53
51
  # Return, which browsers and prefixes will be used
54
52
  def info
55
- runtime.eval("autoprefixer(#{ js_params }).info()")
53
+ runtime.call("autoprefixer.info", params_with_browsers)
56
54
  end
57
55
 
58
56
  # Parse Browserslist config
59
57
  def parse_config(config)
60
- sections = { 'defaults' => [] }
61
- current = 'defaults'
62
- config.gsub(/#[^\n]*/, '')
58
+ sections = { "defaults" => [] }
59
+ current = "defaults"
60
+ config.gsub(/#[^\n]*/, "")
63
61
  .split(/\n/)
64
62
  .map(&:strip)
65
63
  .reject(&:empty?)
66
64
  .each do |line|
67
- if line =~ IS_SECTION
68
- current = line.match(IS_SECTION)[1].strip
69
- sections[current] ||= []
70
- else
71
- sections[current] << line
72
- end
73
- end
65
+ if IS_SECTION =~ line
66
+ current = line.match(IS_SECTION)[1].strip
67
+ sections[current] ||= []
68
+ else
69
+ sections[current] << line
70
+ end
71
+ end
74
72
  sections
75
73
  end
76
74
 
77
75
  private
78
76
 
79
77
  def params_with_browsers(from = nil)
80
- unless from
81
- if defined? Rails and Rails.respond_to?(:root) and Rails.root
82
- from = Rails.root.join('app/assets/stylesheets').to_s
83
- else
84
- from = '.'
85
- end
86
- end
78
+ from ||= if defined?(Rails) && Rails.respond_to?(:root) && Rails.root
79
+ Rails.root.join("app/assets/stylesheets").to_s
80
+ else
81
+ "."
82
+ end
87
83
 
88
84
  params = @params
89
- if not params.has_key?(:browsers) and from
85
+ if !params.key?(:browsers) && !params.key?(:overrideBrowserslist) && from
90
86
  file = find_config(from)
91
87
  if file
92
- env = params[:env].to_s || 'development'
88
+ env = params[:env].to_s || "development"
93
89
  config = parse_config(file)
94
90
  params = params.dup
95
- if config[env]
96
- params[:browsers] = config[env]
97
- else
98
- params[:browsers] = config['defaults']
99
- end
91
+ params[:overrideBrowserslist] = (config[env] || config["defaults"])
100
92
  end
101
93
  end
102
94
 
103
95
  params
104
96
  end
105
97
 
106
- # Convert params to JS string and add browsers from Browserslist config
107
- def js_params
108
- '{ ' +
109
- params_with_browsers.map { |k, v| "#{k}: #{v.inspect}"}.join(', ') +
110
- ' }'
111
- end
112
-
113
98
  # Convert ruby_options to jsOptions
114
99
  def convert_options(opts)
115
- converted = { }
100
+ converted = {}
116
101
 
117
102
  opts.each_pair do |name, value|
118
- if name =~ /_/
119
- name = name.to_s.gsub(/_\w/) { |i| i.gsub('_', '').upcase }.to_sym
103
+ if /_/ =~ name
104
+ name = name.to_s.gsub(/_\w/) { |i| i.delete("_").upcase }.to_sym
120
105
  end
121
106
  value = convert_options(value) if value.is_a? Hash
122
107
  converted[name] = value
@@ -130,11 +115,11 @@ module AutoprefixerRails
130
115
  path = Pathname(file).expand_path
131
116
 
132
117
  while path.parent != path
133
- config1 = path.join('browserslist')
134
- return config1.read if config1.exist? and not config1.directory?
118
+ config1 = path.join("browserslist")
119
+ return config1.read if config1.exist? && !config1.directory?
135
120
 
136
- config2 = path.join('.browserslistrc')
137
- return config2.read if config2.exist? and not config1.directory?
121
+ config2 = path.join(".browserslistrc")
122
+ return config2.read if config2.exist? && !config1.directory?
138
123
 
139
124
  path = path.parent
140
125
  end
@@ -145,57 +130,36 @@ module AutoprefixerRails
145
130
  # Lazy load for JS library
146
131
  def runtime
147
132
  @runtime ||= begin
148
- if ExecJS.eval('typeof Uint8Array') != 'function'
149
- if ExecJS.runtime.name.start_with?('therubyracer')
150
- raise "ExecJS::RubyRacerRuntime is not supported. " +
151
- "Please replace therubyracer with mini_racer " +
152
- "in your Gemfile or use Node.js as ExecJS runtime."
153
- else
154
- raise "#{ExecJS.runtime.name} runtime does’t support ES6. " +
155
- "Please update or replace your current ExecJS runtime."
156
- end
157
- end
158
-
159
- if ExecJS.runtime == ExecJS::Runtimes::Node
160
- version = ExecJS.runtime.eval('process.version')
161
- first = version.match(/^v(\d+)/)[1].to_i
162
- if first < 6
163
- raise "Autoprefixer doesn’t support Node #{ version }. Update it."
164
- end
165
- end
166
-
167
133
  ExecJS.compile(build_js)
134
+ rescue ExecJS::RuntimeError
135
+ # Only complain about unsupported runtimes when it failed to parse our script.
136
+
137
+ case ExecJS.runtime
138
+ when ExecJS::Runtimes::Node
139
+ node_command = ExecJS.runtime.send(:binary) rescue "Unknown"
140
+
141
+ raise <<~MSG
142
+ Your nodejs binary failed to load autoprefixer script file,
143
+ please check if you're running a supported version (10, 12, 14+)
144
+
145
+ ENV["PATH"] = #{ENV["PATH"]}
146
+ binary = #{node_command}
147
+ MSG
148
+ when *SUPPORTED_RUNTIMES
149
+ raise
150
+ else
151
+ raise <<~MSG
152
+ Your ExecJS runtime #{ExecJS.runtime.name} isn't supported by autoprefixer-rails,
153
+ please switch to #{SUPPORTED_RUNTIMES.map(&:name).join(' or ')}
154
+ MSG
155
+ end
168
156
  end
169
157
  end
170
158
 
171
- # Cache autoprefixer.js content
172
- def read_js
173
- @@js ||= begin
174
- root = Pathname(File.dirname(__FILE__))
175
- path = root.join("../../vendor/autoprefixer.js")
176
- path.read
177
- end
178
- end
179
-
180
- # Return processor JS with some extra methods
181
159
  def build_js
182
- 'var global = this;' + read_js + process_proxy
183
- end
184
-
185
- # Return JS code for process method proxy
186
- def process_proxy
187
- <<-JS
188
- var processor;
189
- var process = function() {
190
- var result = autoprefixer.process.apply(autoprefixer, arguments);
191
- var warns = result.warnings().map(function (i) {
192
- delete i.plugin;
193
- return i.toString();
194
- });
195
- var map = result.map ? result.map.toString() : null;
196
- return { css: result.css, map: map, warnings: warns };
197
- };
198
- JS
160
+ root = Pathname(File.dirname(__FILE__))
161
+ path = root.join("../../vendor/autoprefixer.js")
162
+ path.read
199
163
  end
200
164
  end
201
165
  end
@@ -1,22 +1,26 @@
1
- require 'yaml'
1
+ # frozen_string_literal: true
2
+
3
+ require "yaml"
4
+ begin
5
+ require "sprockets/railtie"
6
+ rescue LoadError
7
+ end
2
8
 
3
9
  begin
4
10
  module AutoprefixedRails
5
- class Railtie < ::Rails::Railtie
11
+ class Railtie < ::Rails::Railtie # :nodoc:
6
12
  rake_tasks do |app|
7
- require 'rake/autoprefixer_tasks'
8
- Rake::AutoprefixerTasks.new( config ) if defined? app.assets
13
+ require "rake/autoprefixer_tasks"
14
+ Rake::AutoprefixerTasks.new(config) if defined? app.assets
9
15
  end
10
16
 
11
- if config.respond_to?(:assets) and not config.assets.nil?
17
+ if config.respond_to?(:assets) && !config.assets.nil?
12
18
  config.assets.configure do |env|
13
19
  AutoprefixerRails.install(env, config)
14
20
  end
15
21
  else
16
22
  initializer :setup_autoprefixer, group: :all do |app|
17
- if defined? app.assets and not app.assets.nil?
18
- AutoprefixerRails.install(app.assets, config)
19
- end
23
+ AutoprefixerRails.install(app.assets, config) if defined?(app.assets) && !app.assets.nil?
20
24
  end
21
25
  end
22
26
 
@@ -25,15 +29,16 @@ begin
25
29
  params = {}
26
30
 
27
31
  roots.each do |root|
28
- file = File.join(root, 'config/autoprefixer.yml')
32
+ file = File.join(root, "config/autoprefixer.yml")
33
+
34
+ next unless File.exist?(file)
35
+
36
+ parsed = ::YAML.load_file(file)
37
+ next unless parsed
29
38
 
30
- if File.exist?(file)
31
- parsed = ::YAML.load_file(file)
32
- next unless parsed
33
- params = parsed
39
+ params = parsed
34
40
 
35
- break
36
- end
41
+ break
37
42
  end
38
43
 
39
44
  params = params.symbolize_keys
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module AutoprefixerRails
2
4
  # Container of prefixed CSS and source map with changes
3
5
  class Result