condenser 0.0.9 → 0.0.10

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: 3a967b71ab1e04eacf66137cb05bd987e7e7ef54cae5007948f716f588d71abe
4
- data.tar.gz: 63c7f2dec0f7daf42d9a825b00f84e6dfbfd1b81a118a352020fb1837078c917
3
+ metadata.gz: 8a3307e3793ca525115048d1d418cccdd1ec5727171475fc4909a15b178ac14b
4
+ data.tar.gz: b991118f195efe01eaae6960862c1101e273f86f3bb1a3ccad009c3ad98f213d
5
5
  SHA512:
6
- metadata.gz: de6af2acb1b5f697c87cc1c7a1a08a5de12d7c85a8512d413d99b46afb12e705ee80037cd2fcc50d6c12b208f7c84c8c9782d36f7102cea316ae93ca9e12f290
7
- data.tar.gz: 9875317bc0268fc9d11a970c7ffd82ce139cd468541b63af06a2135e1c370e4ffa867391a93d82864034b1d0c26dcf340d8218bd1c3495bb5abd8245d6a22e1d
6
+ metadata.gz: ce1137d43308c657fffaff3620a6a6095cf961d697a7c56c85dc685821f637b8e6efe73bfa341ae810b467170fa4ccc6b8e8a7a76cca1e42f24e4e112b47418d
7
+ data.tar.gz: ffc9df1b3a0222888272d7bcff193854ca4eae42d379d974cbf377cd2302aca24bc839ba82de5ae49efa965e64b455523e19cb06845b936e47c1a115d30f16f8
@@ -11,11 +11,13 @@ require 'condenser/encoding_utils'
11
11
  require 'condenser/asset'
12
12
  require 'condenser/manifest'
13
13
 
14
+ require 'active_support/benchmarkable'
14
15
 
15
16
  class Condenser
16
-
17
+
18
+ include ActiveSupport::Benchmarkable
17
19
  prepend Environment, Pipeline, Resolve
18
-
20
+
19
21
  autoload :BabelProcessor, 'condenser/processors/rollup_processor'
20
22
  autoload :RollupProcessor, 'condenser/processors/babel_processor'
21
23
  autoload :UglifyMinifier, 'condenser/minifiers/uglify_minifier'
@@ -8,6 +8,7 @@ class Condenser
8
8
  class Asset
9
9
 
10
10
  include EncodingUtils
11
+ include ActiveSupport::Benchmarkable
11
12
 
12
13
  attr_reader :environment, :filename, :content_types, :source_file, :source_path
13
14
  attr_reader :linked_assets, :content_types_digest
@@ -124,9 +125,14 @@ class Condenser
124
125
  Digest::SHA1.base64digest(JSON.generate(key))
125
126
  end
126
127
 
128
+ def logger
129
+ @environment.logger
130
+ end
131
+
127
132
  def process
128
133
  return if @processed
129
134
 
135
+ benchmark "Processing Asset #{self.filename}", level: :info do
130
136
  result = @environment.cache.fetch_if(Proc.new { "process/#{cache_key}" }, "dependencies/#{cache_key(false)}") do
131
137
  @environment.build do
132
138
 
@@ -154,7 +160,10 @@ class Condenser
154
160
  data[:processors] << templator_klass.name
155
161
  @environment.load_processors(templator_klass)
156
162
 
157
- templator.call(@environment, data)
163
+ benchmark "Preprocessing #{data[:filename]} with #{templator.name}", level: :info do
164
+ templator.call(@environment, data)
165
+ end
166
+
158
167
  data[:filename] = data[:filename].gsub(/\.#{extensions.last}$/, '')
159
168
  end
160
169
 
@@ -174,9 +183,10 @@ class Condenser
174
183
  processor_klass = (processor.is_a?(Class) ? processor : processor.class)
175
184
  data[:processors] << processor_klass.name
176
185
  @environment.load_processors(processor_klass)
177
-
178
- @environment.logger.info { "Preprocessing #{self.filename} with #{processor.name}" }
179
- processor.call(@environment, data)
186
+
187
+ benchmark "Preprocessing #{self.filename} with #{processor.name}", level: :info do
188
+ processor.call(@environment, data)
189
+ end
180
190
  end
181
191
  end
182
192
 
@@ -234,9 +244,11 @@ class Condenser
234
244
  load_processors
235
245
 
236
246
  @processed = true
247
+ end
237
248
  end
238
249
 
239
250
  def export
251
+ benchmark "Exporting Asset #{self.filename}", level: :info do
240
252
  @environment.build do
241
253
  result = @environment.cache.fetch("export/#{cache_key}") do
242
254
  process
@@ -252,8 +264,19 @@ class Condenser
252
264
  linked_assets: [],
253
265
  dependencies: []
254
266
  }
255
- @environment.exporters[content_type]&.call(@environment, data)
256
- @environment.minifier_for(content_type)&.call(@environment, data)
267
+
268
+ if exporter = @environment.exporters[content_type]
269
+ benchmark "Preprocessing #{data[:filename]} with #{exporter.name}", level: :info do
270
+ exporter.call(@environment, data)
271
+ end
272
+ end
273
+
274
+ if minifier = @environment.minifier_for(content_type)
275
+ benchmark "Preprocessing #{data[:filename]} with #{minifier.name}", level: :info do
276
+ minifier.call(@environment, data)
277
+ end
278
+ end
279
+
257
280
  data[:digest] = @environment.digestor.digest(data[:source])
258
281
  data[:digest_name] = @environment.digestor.name.sub(/^.*::/, '').downcase
259
282
  data
@@ -261,6 +284,7 @@ class Condenser
261
284
 
262
285
  Export.new(@environment, result)
263
286
  end
287
+ end
264
288
  end
265
289
 
266
290
  def to_s
@@ -1,13 +1,11 @@
1
1
  require File.expand_path('../../processors/node_processor', __FILE__)
2
2
 
3
+ # From npm install uglify-js
3
4
  class Condenser::UglifyMinifier < Condenser::NodeProcessor
4
5
 
5
6
  class Error < StandardError
6
7
  end
7
8
 
8
- # From npm install uglify-js
9
- UGLIFY_SOURCE = File.expand_path('../node_modules', __FILE__)
10
-
11
9
  def self.call(environment, input)
12
10
  new.call(environment, input)
13
11
  end
@@ -30,8 +28,7 @@ class Condenser::UglifyMinifier < Condenser::NodeProcessor
30
28
  }.merge(@options)
31
29
 
32
30
  result = exec_runtime(<<-JS)
33
- module.paths.push("#{UGLIFY_SOURCE}")
34
- const UglifyJS = require("uglify-js");
31
+ const UglifyJS = require("#{File.expand_path('../node_modules', __FILE__)}/uglify-js");
35
32
  const source = #{JSON.generate(input[:filename] => input[:source])}
36
33
  const options = #{JSON.generate(opts)};
37
34
 
@@ -17,11 +17,11 @@ class Condenser::BabelProcessor < Condenser::NodeProcessor
17
17
  ast: false,
18
18
  compact: false,
19
19
  plugins: [
20
- ['babel-plugin-transform-class-extended-hook', {}],
21
- ["@babel/plugin-proposal-class-properties", {}],
22
- ['@babel/plugin-transform-runtime', { corejs: 3 }],
20
+ ["#{File.expand_path('../node_modules', __FILE__)}/babel-plugin-transform-class-extended-hook", {}],
21
+ ["#{File.expand_path('../node_modules', __FILE__)}/@babel/plugin-proposal-class-properties", {}],
22
+ ["#{File.expand_path('../node_modules', __FILE__)}/@babel/plugin-transform-runtime", { corejs: 3 }],
23
23
  ],
24
- presets: [["@babel/preset-env", {
24
+ presets: [["#{File.expand_path('../node_modules', __FILE__)}/@babel/preset-env", {
25
25
  "modules": false,
26
26
  "targets": { "browsers": "> 1% and not dead" }
27
27
  } ]],
@@ -42,9 +42,7 @@ class Condenser::BabelProcessor < Condenser::NodeProcessor
42
42
  }.merge(@options)
43
43
 
44
44
  result = exec_runtime(<<-JS)
45
- module.paths.push("#{File.expand_path('../node_modules', __FILE__)}")
46
-
47
- const babel = require('@babel/core');
45
+ const babel = require("#{File.expand_path('../node_modules', __FILE__)}/@babel/core");
48
46
  const source = #{JSON.generate(input[:source])};
49
47
  const options = #{JSON.generate(opts).gsub(/"@?babel[\/-][^"]+"/) { |m| "require(#{m})"}};
50
48
 
@@ -4,6 +4,8 @@ require File.expand_path('../node_processor', __FILE__)
4
4
 
5
5
  class Condenser::RollupProcessor < Condenser::NodeProcessor
6
6
 
7
+ include ActiveSupport::Benchmarkable
8
+
7
9
  ROLLUP_VERSION = '0.56.1'
8
10
 
9
11
  def self.call(environment, input)
@@ -13,6 +15,10 @@ class Condenser::RollupProcessor < Condenser::NodeProcessor
13
15
  def initialize(options = {})
14
16
  @options = options.merge({}).freeze
15
17
  end
18
+
19
+ def logger
20
+ @environment.logger
21
+ end
16
22
 
17
23
  def call(environment, input)
18
24
  @environment = environment
@@ -71,9 +77,9 @@ class Condenser::RollupProcessor < Condenser::NodeProcessor
71
77
  buffer = emitMessages(buffer);
72
78
  });
73
79
 
74
- const rollup = require("rollup");
75
- const commonjs = require('rollup-plugin-commonjs');
76
- const nodeResolve = require('rollup-plugin-node-resolve');
80
+ const rollup = require("#{File.expand_path('../node_modules', __FILE__)}/rollup");
81
+ const commonjs = require('#{File.expand_path('../node_modules', __FILE__)}/rollup-plugin-commonjs');
82
+ const nodeResolve = require('#{File.expand_path('../node_modules', __FILE__)}/rollup-plugin-node-resolve');
77
83
  var rid = 0;
78
84
  var renderStack = {};
79
85
  var nodeResolver = null;
@@ -196,9 +202,9 @@ class Condenser::RollupProcessor < Condenser::NodeProcessor
196
202
  end
197
203
 
198
204
  messages.each do |message|
199
- # puts message
200
205
  message = JSON.parse(message)
201
206
 
207
+ benchmark "Rollup #{message['method']}(#{message['args'].map(&:inspect).join(', ')})", level: :info do
202
208
  ret = case message['method']
203
209
  when 'resolve'
204
210
  importee, importer = message['args']
@@ -286,6 +292,7 @@ class Condenser::RollupProcessor < Condenser::NodeProcessor
286
292
  end
287
293
 
288
294
  io.write(JSON.generate({rid: message['rid'], return: ret}))
295
+ end
289
296
  end
290
297
  end
291
298
  rescue Errno::EPIPE, EOFError
@@ -95,9 +95,9 @@ class Condenser
95
95
  end
96
96
  end
97
97
 
98
- def find(filename, base=nil, **kargs)
98
+ def find(filename, base=nil, accept: nil, ignore: [])
99
99
  build do
100
- resolve(filename, base, **kargs).first
100
+ @build_cache["find/#{[filename, base, accept].join('-')}"] ||= resolve(filename, base, accept: accept, ignore: ignore).first
101
101
  end
102
102
  end
103
103
 
@@ -32,13 +32,13 @@ class Condenser::EjsTransformer < Condenser::NodeProcessor
32
32
  ast: false,
33
33
  compact: false,
34
34
  plugins: [
35
- ['babel-plugin-transform-class-extended-hook', {}],
36
- ["@babel/plugin-proposal-class-properties", {}],
37
- ['@babel/plugin-transform-runtime', {
35
+ ["#{File.expand_path('../../processors/node_modules', __FILE__)}/babel-plugin-transform-class-extended-hook", {}],
36
+ ["#{File.expand_path('../../processors/node_modules', __FILE__)}/@babel/plugin-proposal-class-properties", {}],
37
+ ["#{File.expand_path('../../processors/node_modules', __FILE__)}/@babel/plugin-transform-runtime", {
38
38
  corejs: 3,
39
39
  }],
40
40
  ],
41
- presets: [["@babel/preset-env", {
41
+ presets: [["#{File.expand_path('../../processors/node_modules', __FILE__)}/@babel/preset-env", {
42
42
  "modules": false,
43
43
  "targets": { "browsers": "> 1% and not dead" }
44
44
  } ]],
@@ -46,9 +46,7 @@ class Condenser::EjsTransformer < Condenser::NodeProcessor
46
46
  }
47
47
 
48
48
  result = exec_runtime(<<-JS)
49
- module.paths.push("#{File.expand_path('../../processors/node_modules', __FILE__)}")
50
-
51
- const babel = require('@babel/core');
49
+ const babel = require("#{File.expand_path('../../processors/node_modules', __FILE__)}/@babel/core");
52
50
  const source = #{JSON.generate(input[:source])};
53
51
  const options = #{JSON.generate(opts).gsub(/"@?babel[\/-][^"]+"/) { |m| "require(#{m})"}};
54
52
 
@@ -1,3 +1,3 @@
1
1
  class Condenser
2
- VERSION = '0.0.9'
2
+ VERSION = '0.0.10'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: condenser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Bracy