uglifier 2.7.1 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,6 +2,12 @@
2
2
  require 'stringio'
3
3
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
4
4
 
5
+ def expect_to_have_inline_source_map(minified, original)
6
+ options = { :source_map => { :sources_content => true } }
7
+ _, map = Uglifier.compile_with_map(minified, options)
8
+ expect(JSON.load(map).fetch("sourcesContent", [])).to include(original)
9
+ end
10
+
5
11
  describe "Uglifier" do
6
12
  let(:source) do
7
13
  <<-JS
@@ -24,20 +30,24 @@ describe "Uglifier" do
24
30
  end
25
31
 
26
32
  it "generates source maps with the correct meta-data" do
27
- _, map = Uglifier.compile_with_map(source,
28
- :source_filename => "ahoy.js",
29
- :output_filename => "ahoy.min.js",
30
- :source_root => "http://localhost/")
33
+ _, json = Uglifier.compile_with_map(
34
+ source,
35
+ :source_map => {
36
+ :filename => "ahoy.js",
37
+ :output_filename => "ahoy.min.js",
38
+ :root => "http://localhost/"
39
+ }
40
+ )
31
41
 
32
- map = SourceMap.from_s(map)
33
- expect(map.file).to eq("ahoy.min.js")
42
+ map = SourceMap::Map.from_json(json)
43
+ expect(map.filename).to eq("ahoy.min.js")
34
44
  expect(map.sources).to eq(["ahoy.js"])
35
45
  expect(map.names).to eq(%w(hello world))
36
- expect(map.source_root).to eq("http://localhost/")
37
- expect(map.mappings.first[:generated_line]).to eq(1)
46
+ expect(JSON.load(json)["sourceRoot"]).to eq("http://localhost/")
47
+ expect(map[0].generated.line).to eq(1)
38
48
  end
39
49
 
40
- it "should skip copyright lines in source maps" do
50
+ it "skips copyright lines in source maps" do
41
51
  source = <<-JS
42
52
  /* @copyright Conrad Irwin */
43
53
  function hello () {
@@ -49,14 +59,19 @@ describe "Uglifier" do
49
59
  };
50
60
  JS
51
61
 
52
- _, map = Uglifier.compile_with_map(source,
53
- :source_filename => "ahoy.js",
54
- :source_root => "http://localhost/")
55
- map = SourceMap.from_s(map)
56
- expect(map.mappings.first[:generated_line]).to eq(2)
62
+ _, json = Uglifier.compile_with_map(
63
+ source,
64
+ :source_map => {
65
+ :filename => "ahoy.js",
66
+ :root => "http://localhost/"
67
+ }
68
+ )
69
+
70
+ map = SourceMap::Map.from_json(json)
71
+ expect(map[0].generated.line).to eq(2)
57
72
  end
58
73
 
59
- it "should be able to handle an input source map" do
74
+ it "proceses an input source map" do
60
75
  source = <<-JS
61
76
  function hello () {
62
77
  function world () {
@@ -69,42 +84,143 @@ describe "Uglifier" do
69
84
 
70
85
  minified1, map1 = Uglifier.compile_with_map(
71
86
  source,
72
- :source_filename => "ahoy.js",
73
- :source_root => "http://localhost/",
87
+ :source_map => {
88
+ :filename => "ahoy.js",
89
+ :root => "http://localhost/"
90
+ },
74
91
  :mangle => false
75
92
  )
76
93
 
77
- _, map2 = Uglifier.compile_with_map(source,
78
- :input_source_map => map1,
79
- :mangle => true)
94
+ _, map2 = Uglifier.compile_with_map(
95
+ source,
96
+ :source_map => {
97
+ :input_source_map => map1
98
+ },
99
+ :mangle => true
100
+ )
80
101
 
81
102
  expect(minified1.lines.to_a.length).to eq(1)
82
103
 
83
- map = SourceMap.from_s(map2)
104
+ map = SourceMap::Map.from_json(map2)
84
105
  expect(map.sources).to eq(["http://localhost/ahoy.js"])
85
- expect(map.mappings.first[:source_line]).to eq(1)
86
- expect(map.mappings.last[:source_line]).to eq(6)
106
+ expect(map[0].generated.line).to eq(1)
107
+ expect(map[-1].original.line).to eq(1)
108
+ end
109
+
110
+ it "handles empty string as input map sourceRoot" do
111
+ _, map1 = Uglifier.compile_with_map(
112
+ source,
113
+ :source_map => {
114
+ :filename => "ahoy.js",
115
+ :root => ""
116
+ },
117
+ :mangle => false
118
+ )
119
+
120
+ _, map = Uglifier.compile_with_map(
121
+ source,
122
+ :source_map => {
123
+ :input_source_map => map1
124
+ },
125
+ :mangle => true
126
+ )
127
+
128
+ expect(SourceMap::Map.from_json(map).sources).to eq(["ahoy.js"])
87
129
  end
88
130
 
89
- it "appens source map url" do
90
- minified, _ = Uglifier.compile_with_map(
131
+ it "appends source map url to minified JS" do
132
+ minified, = Uglifier.compile_with_map(
91
133
  source,
92
- :source_filename => "ahoy.js",
93
- :output_filename => "ahoy.min.js",
94
- :source_root => "http://localhost/",
95
- :source_map_url => "http://example.com/map"
134
+ :source_map => {
135
+ :filename => "ahoy.js",
136
+ :output_filename => "ahoy.min.js",
137
+ :root => "http://localhost/",
138
+ :map_url => "http://example.com/map"
139
+ }
96
140
  )
97
141
  expect(minified).to include("\n//# sourceMappingURL=http://example.com/map")
98
142
  end
99
143
 
100
- it "appens source url" do
101
- minified, _ = Uglifier.compile_with_map(
144
+ it "appends source url to minified JS" do
145
+ minified, = Uglifier.compile_with_map(
102
146
  source,
103
- :source_filename => "ahoy.js",
104
- :output_filename => "ahoy.min.js",
105
- :source_root => "http://localhost/",
106
- :source_url => "http://example.com/source"
147
+ :source_map => {
148
+ :filename => "ahoy.js",
149
+ :output_filename => "ahoy.min.js",
150
+ :root => "http://localhost/",
151
+ :url => "http://example.com/source"
152
+ }
107
153
  )
108
154
  expect(minified).to include("\n//# sourceURL=http://example.com/source")
109
155
  end
156
+
157
+ it "inlines source map" do
158
+ minified = Uglifier.compile(
159
+ source,
160
+ :source_map => {
161
+ :filename => "ahoy.js",
162
+ :output_filename => "ahoy.min.js",
163
+ :root => "http://localhost/",
164
+ :url => "http://example.com/source"
165
+ }
166
+ )
167
+ source_map_mime = "application/json;charset=utf-8;base64,"
168
+ expect(minified).to include("\n//# sourceMappingURL=data:#{source_map_mime}")
169
+ end
170
+
171
+ describe "inline source map parsing" do
172
+ let(:minified) do
173
+ Uglifier.compile(
174
+ source,
175
+ :source_map => {
176
+ :filename => "ahoy.js",
177
+ :sources_content => true
178
+ }
179
+ )
180
+ end
181
+
182
+ let(:code) { minified.split("\n")[0] }
183
+ let(:source_mapping_url) { minified.split("\n")[1][2..-1] }
184
+
185
+ it "parses inline source maps from line comments" do
186
+ minified = "#{code}\n//#{source_mapping_url}"
187
+ expect_to_have_inline_source_map(minified, source)
188
+ end
189
+
190
+ it "parses inline source maps with block comments" do
191
+ minified = "#{code}\n/*#{source_mapping_url}*/"
192
+ expect_to_have_inline_source_map(minified, source)
193
+ end
194
+
195
+ it "parses inline source maps with multi-line block comments" do
196
+ minified = "#{code}\n/*\n#{source_mapping_url}\n*/"
197
+ expect_to_have_inline_source_map(minified, source)
198
+ end
199
+
200
+ it "parses inline source maps from mixed comments" do
201
+ minified = "#{code}\n/*\n//#{source_mapping_url}\n*/"
202
+ expect_to_have_inline_source_map(minified, source)
203
+ end
204
+
205
+ it "only parses source maps at end of file" do
206
+ minified = "#{code}\n//#{source_mapping_url}\nhello();"
207
+ _, map = Uglifier.compile_with_map(minified)
208
+ expect(JSON.load(map)["sourcesContent"]).to be_nil
209
+ end
210
+
211
+ it "handles other source map declarations at end of file" do
212
+ minified = "#{code}\n
213
+ //#{source_mapping_url}\n
214
+ //# sourceURL=http://example.com/source.js
215
+ //# sourceURL=http://example.com/source.js
216
+ "
217
+ expect_to_have_inline_source_map(minified, source)
218
+ end
219
+
220
+ it "does not explode when data URI is invalid" do
221
+ minified = "#{code}\n//# sourceMappingURL=data:application/javascript,foobar"
222
+ _, map = Uglifier.compile_with_map(minified)
223
+ expect(JSON.load(map)["sourcesContent"]).to be_nil
224
+ end
225
+ end
110
226
  end
data/spec/spec_helper.rb CHANGED
@@ -1,14 +1,14 @@
1
1
  # encoding: UTF-8
2
2
  require 'uglifier'
3
3
  require 'rspec'
4
- require 'source_map'
4
+ require 'sourcemap'
5
5
 
6
6
  # Requires supporting files with custom matchers and macros, etc,
7
7
  # in ./support/ and its subdirectories.
8
8
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
9
9
 
10
10
  if ENV["ALASKA"]
11
- require 'alaska'
11
+ require 'alaska/runtime'
12
12
  require 'tempfile'
13
13
  ExecJS.runtime = Alaska::Runtime.new
14
14
  end
@@ -20,4 +20,13 @@ RSpec.configure do |config|
20
20
  config.expect_with :rspec do |expect|
21
21
  expect.syntax = :expect
22
22
  end
23
+
24
+ if ENV['CI']
25
+ config.before(:example, :focus) { raise "Do not commit focused specs" }
26
+ else
27
+ config.filter_run_including :focus => true
28
+ config.run_all_when_everything_filtered = true
29
+ end
30
+
31
+ config.warnings = true
23
32
  end
@@ -19,7 +19,7 @@ describe "Uglifier" do
19
19
  end
20
20
 
21
21
  it "doesn't omit null character in strings" do
22
- expect(Uglifier.new.compile('var foo="\0bar"')).to include("\\x00bar")
22
+ expect(Uglifier.new.compile('var foo="\0bar"')).to include("\\0bar")
23
23
  end
24
24
 
25
25
  it "adds trailing semicolon to minified source" do
@@ -27,6 +27,33 @@ describe "Uglifier" do
27
27
  expect(Uglifier.new.compile(source)[-1]).to eql(";"[0])
28
28
  end
29
29
 
30
+ describe "property name mangling" do
31
+ let(:source) do
32
+ <<-JS
33
+ var obj = {
34
+ _hidden: false,
35
+ name: 'value'
36
+ };
37
+
38
+ alert(object.name);
39
+ JS
40
+ end
41
+
42
+ it "does not mangle property names by default" do
43
+ expect(Uglifier.compile(source)).to include("object.name")
44
+ end
45
+
46
+ it "can be configured to mangle properties" do
47
+ expect(Uglifier.compile(source, :mangle_properties => true))
48
+ .not_to include("object.name")
49
+ end
50
+
51
+ it "can configure a regex for mangling" do
52
+ expect(Uglifier.compile(source, :mangle_properties => { :regex => /^_/ }))
53
+ .to include("object.name")
54
+ end
55
+ end
56
+
30
57
  describe "argument name mangling" do
31
58
  it "doesn't try to mangle $super by default to avoid breaking PrototypeJS" do
32
59
  expect(Uglifier.compile('function foo($super) {return $super}')).to include("$super")
@@ -34,7 +61,8 @@ describe "Uglifier" do
34
61
 
35
62
  it "allows variables to be excluded from mangling" do
36
63
  code = "function bar(foo) {return foo + 'bar'};"
37
- expect(Uglifier.compile(code, :mangle => { :except => ["foo"] })).to include("(foo)")
64
+ expect(Uglifier.compile(code, :mangle => { :except => ["foo"] }))
65
+ .to include("(foo)")
38
66
  end
39
67
 
40
68
  it "skips mangling when set to false" do
@@ -42,21 +70,28 @@ describe "Uglifier" do
42
70
  expect(Uglifier.compile(code, :mangle => false)).to include("(foo)")
43
71
  end
44
72
 
45
- it "mangles argumen names by default" do
73
+ it "mangles argument names by default" do
46
74
  code = "function bar(foo) {return foo + 'bar'};"
47
- expect(Uglifier.compile(code, :mangle => true)).not_to include("(foo)")
75
+ expect(Uglifier.compile(code)).not_to include("(foo)")
48
76
  end
49
77
 
50
78
  it "mangles top-level names when explicitly instructed" do
51
79
  code = "function bar(foo) {return foo + 'bar'};"
52
- expect(Uglifier.compile(code, :mangle => { :toplevel => false })).to include("bar(")
53
- expect(Uglifier.compile(code, :mangle => { :toplevel => true })).not_to include("bar(")
80
+ expect(Uglifier.compile(code, :mangle => { :toplevel => false }))
81
+ .to include("bar(")
82
+ expect(Uglifier.compile(code, :mangle => { :toplevel => true }))
83
+ .not_to include("bar(")
84
+ end
85
+
86
+ it "can be controlled with mangle option" do
87
+ code = "function bar(foo) {return foo + 'bar'};"
88
+ expect(Uglifier.compile(code, :mangle => false)).to include("(foo)")
54
89
  end
55
90
  end
56
91
 
57
92
  describe "comment preservation" do
58
93
  let(:source) do
59
- <<-EOS
94
+ <<-JS
60
95
  /* @preserve Copyright Notice */
61
96
  /* (c) 2011 */
62
97
  // INCLUDED
@@ -65,8 +100,8 @@ describe "Uglifier" do
65
100
  /* Another Copyright */
66
101
  /*! Another Bang */
67
102
  // A comment!
68
- function add(a, b) { return a + b; }
69
- EOS
103
+ function add(a, b) { return a + b; }
104
+ JS
70
105
  end
71
106
 
72
107
  it "handles copyright option" do
@@ -118,8 +153,8 @@ describe "Uglifier" do
118
153
  subject { Uglifier.compile(source, :comments => :none) }
119
154
 
120
155
  it "omits all comments" do
121
- expect(subject).not_to match %r{//}
122
- expect(subject).not_to match(/\/\*/)
156
+ expect(subject).not_to match(%r{//})
157
+ expect(subject).not_to match(%r{/\*})
123
158
  end
124
159
  end
125
160
 
@@ -145,8 +180,8 @@ describe "Uglifier" do
145
180
 
146
181
  it "honors max line length" do
147
182
  code = "var foo = 123;function bar() { return foo; }"
148
- uglifier = Uglifier.new(:output => { :max_line_len => 16 }, :compress => false)
149
- expect(uglifier.compile(code).split("\n").length).to eq(2)
183
+ uglifier = Uglifier.new(:output => { :max_line_len => 20 }, :compress => false)
184
+ expect(uglifier.compile(code).split("\n").map(&:length)).to all(be < 28)
150
185
  end
151
186
 
152
187
  it "hoists vars to top of the scope" do
@@ -155,10 +190,22 @@ describe "Uglifier" do
155
190
  expect(minified).to match(/var \w,\w/)
156
191
  end
157
192
 
158
- it "forwards screw_ie8 option to UglifyJS" do
159
- code = "function something() { return g['switch']; }"
160
- expect(Uglifier.compile(code, :mangle => false, :screw_ie8 => true)).to match(/g\.switch/)
161
- expect(Uglifier.compile(code, :compress => false, :screw_ie8 => true)).to match(/g\.switch/)
193
+ describe "screw_ie8 option" do
194
+ let(:code) { "function something() { return g['switch']; }" }
195
+
196
+ it "defaults to not screw IE8" do
197
+ expect(Uglifier.compile(code)).to match(".switch")
198
+ end
199
+
200
+ it "forwards screw_ie8 option to UglifyJS" do
201
+ expect(Uglifier.compile(code, :mangle => false, :screw_ie8 => true)).to match(/g\.switch/)
202
+ expect(Uglifier.compile(code, :compress => false, :screw_ie8 => true)).to match(/g\.switch/)
203
+ end
204
+
205
+ it "supports legacy ie_proof output option as opposite for screw_ie8" do
206
+ minified = Uglifier.compile(code, :output => { :ie_proof => true })
207
+ expect(minified).to include('["switch"]')
208
+ end
162
209
  end
163
210
 
164
211
  it "can be configured to output only ASCII" do
@@ -212,13 +259,33 @@ describe "Uglifier" do
212
259
  expect(compiled).not_to include("console")
213
260
  end
214
261
 
262
+ describe "collapse_vars option" do
263
+ let(:code) do
264
+ <<-JS
265
+ function a() {
266
+ var win = window;
267
+ return win.Handlebars;
268
+ }
269
+ JS
270
+ end
271
+
272
+ it "collapses vars when collapse_vars is enabled" do
273
+ compiled = Uglifier.compile(code, :compress => { :collapse_vars => true })
274
+ expect(compiled).to include("return window.Handlebars")
275
+ end
276
+
277
+ it "defaults to not collapsing variables" do
278
+ expect(Uglifier.compile(code)).not_to include("return window.Handlebars")
279
+ end
280
+ end
281
+
215
282
  it "processes @ngInject annotations" do
216
- code = <<-EOF
283
+ code = <<-JS
217
284
  /**
218
285
  * @ngInject
219
286
  */
220
287
  var f = function(foo, bar) { return foo + bar};
221
- EOF
288
+ JS
222
289
  with_angular = Uglifier.compile(code, :compress => { :angular => true })
223
290
  without_angular = Uglifier.compile(code, :compress => { :angular => false })
224
291
  expect(with_angular).to include("f.$inject")
@@ -226,14 +293,33 @@ describe "Uglifier" do
226
293
  end
227
294
 
228
295
  it "keeps unused function arguments when keep_fargs option is set" do
229
- code = <<-EOF
296
+ code = <<-JS
230
297
  function plus(a, b, c) { return a + b};
231
298
  plus(1, 2);
232
- EOF
233
- expect(Uglifier.compile(code, :mangle => false)).not_to include("c)")
299
+ JS
300
+
301
+ options = lambda do |keep_fargs|
302
+ {
303
+ :mangle => false,
304
+ :compress => {
305
+ :keep_fargs => keep_fargs,
306
+ :unsafe => true
307
+ }
308
+ }
309
+ end
310
+
311
+ expect(Uglifier.compile(code, options.call(false))).not_to include("c)")
312
+ expect(Uglifier.compile(code, options.call(true))).to include("c)")
313
+ end
314
+
315
+ it "keeps function names in output when keep_fnames is set" do
316
+ code = <<-JS
317
+ (function plus(a, b) { return a + b})(1, 2);
318
+ JS
319
+ expect(Uglifier.compile(code, :compress => true)).not_to include("plus")
234
320
 
235
- keep_fargs = Uglifier.compile(code, :mangle => false, :compress => { :keep_fargs => true })
236
- expect(keep_fargs).to include("c)")
321
+ keep_fargs = Uglifier.compile(code, :mangle => false, :compress => { :keep_fnames => true })
322
+ expect(keep_fargs).to include("plus")
237
323
  end
238
324
 
239
325
  describe "Input Formats" do
data/uglifier.gemspec CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |spec|
13
13
  spec.description = "Uglifier minifies JavaScript files by wrapping UglifyJS to be accessible in Ruby"
14
14
  spec.license = "MIT"
15
15
 
16
- spec.required_ruby_version = '>= 1.8.7'
16
+ spec.required_ruby_version = '>= 1.9.3'
17
17
 
18
18
  spec.extra_rdoc_files = [
19
19
  "LICENSE.txt",
@@ -25,11 +25,9 @@ Gem::Specification.new do |spec|
25
25
  spec.test_files = spec.files.grep(%r{^spec/})
26
26
  spec.require_paths = ["lib"]
27
27
 
28
- spec.add_runtime_dependency "execjs", ">= 0.3.0"
29
- spec.add_runtime_dependency "json", ">= 1.8.0"
28
+ spec.add_runtime_dependency "execjs", [">= 0.3.0", "< 3"]
30
29
  spec.add_development_dependency "rspec", "~> 3.0"
31
30
  spec.add_development_dependency "rake", "~> 10.4"
32
31
  spec.add_development_dependency "bundler", "~> 1.3"
33
- spec.add_development_dependency "rdoc", ">= 3.11"
34
- spec.add_development_dependency "source_map", ">= 0"
32
+ spec.add_development_dependency "sourcemap", "~> 0.1.1"
35
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uglifier
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.1
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ville Lautanala
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-27 00:00:00.000000000 Z
11
+ date: 2016-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: execjs
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.3.0
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '3'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,20 +27,9 @@ dependencies:
24
27
  - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: 0.3.0
27
- - !ruby/object:Gem::Dependency
28
- name: json
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
30
+ - - "<"
32
31
  - !ruby/object:Gem::Version
33
- version: 1.8.0
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: 1.8.0
32
+ version: '3'
41
33
  - !ruby/object:Gem::Dependency
42
34
  name: rspec
43
35
  requirement: !ruby/object:Gem::Requirement
@@ -81,33 +73,19 @@ dependencies:
81
73
  - !ruby/object:Gem::Version
82
74
  version: '1.3'
83
75
  - !ruby/object:Gem::Dependency
84
- name: rdoc
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '3.11'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '3.11'
97
- - !ruby/object:Gem::Dependency
98
- name: source_map
76
+ name: sourcemap
99
77
  requirement: !ruby/object:Gem::Requirement
100
78
  requirements:
101
- - - ">="
79
+ - - "~>"
102
80
  - !ruby/object:Gem::Version
103
- version: '0'
81
+ version: 0.1.1
104
82
  type: :development
105
83
  prerelease: false
106
84
  version_requirements: !ruby/object:Gem::Requirement
107
85
  requirements:
108
- - - ">="
86
+ - - "~>"
109
87
  - !ruby/object:Gem::Version
110
- version: '0'
88
+ version: 0.1.1
111
89
  description: Uglifier minifies JavaScript files by wrapping UglifyJS to be accessible
112
90
  in Ruby
113
91
  email:
@@ -126,6 +104,7 @@ files:
126
104
  - ".rspec"
127
105
  - ".rubocop.yml"
128
106
  - ".travis.yml"
107
+ - ".yardopts"
129
108
  - CHANGELOG.md
130
109
  - CONTRIBUTING.md
131
110
  - Gemfile
@@ -136,7 +115,9 @@ files:
136
115
  - gemfiles/rubyracer
137
116
  - gemfiles/rubyrhino
138
117
  - lib/es5.js
118
+ - lib/source-map.js
139
119
  - lib/split.js
120
+ - lib/uglifier.js
140
121
  - lib/uglifier.rb
141
122
  - lib/uglifier/version.rb
142
123
  - lib/uglify.js
@@ -156,7 +137,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
156
137
  requirements:
157
138
  - - ">="
158
139
  - !ruby/object:Gem::Version
159
- version: 1.8.7
140
+ version: 1.9.3
160
141
  required_rubygems_version: !ruby/object:Gem::Requirement
161
142
  requirements:
162
143
  - - ">="
@@ -164,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
164
145
  version: '0'
165
146
  requirements: []
166
147
  rubyforge_project:
167
- rubygems_version: 2.4.5
148
+ rubygems_version: 2.5.1
168
149
  signing_key:
169
150
  specification_version: 4
170
151
  summary: Ruby wrapper for UglifyJS JavaScript compressor