condenser 1.2 → 1.3
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/condenser/asset.rb +19 -16
- data/lib/condenser/build_cache.rb +1 -1
- data/lib/condenser/context.rb +9 -25
- data/lib/condenser/helpers/parse_helpers.rb +1 -1
- data/lib/condenser/manifest.rb +3 -1
- data/lib/condenser/pipeline.rb +8 -3
- data/lib/condenser/processors/babel_processor.rb +1 -1
- data/lib/condenser/processors/css_media_combiner_processor.rb +81 -0
- data/lib/condenser/processors/js_analyzer.rb +0 -2
- data/lib/condenser/processors/purgecss_processor.rb +6 -4
- data/lib/condenser/processors/rollup_processor.rb +37 -35
- data/lib/condenser/resolve.rb +1 -3
- data/lib/condenser/templating_engine/ejs.rb +1 -1
- data/lib/condenser/transformers/dart_sass_transformer.rb +285 -0
- data/lib/condenser/transformers/jst_transformer.rb +67 -17
- data/lib/condenser/transformers/sass/functions.rb +133 -0
- data/lib/condenser/transformers/sass/importer.rb +48 -0
- data/lib/condenser/transformers/sass.rb +4 -0
- data/lib/condenser/transformers/sass_transformer.rb +124 -281
- data/lib/condenser/transformers/svg_transformer/base.rb +26 -0
- data/lib/condenser/transformers/svg_transformer/tag.rb +54 -0
- data/lib/condenser/transformers/svg_transformer/template.rb +151 -0
- data/lib/condenser/transformers/svg_transformer/template_error.rb +2 -0
- data/lib/condenser/transformers/svg_transformer/value.rb +13 -0
- data/lib/condenser/transformers/svg_transformer/var_generator.rb +10 -0
- data/lib/condenser/transformers/svg_transformer.rb +19 -0
- data/lib/condenser/version.rb +1 -1
- data/lib/condenser.rb +17 -5
- data/test/cache_test.rb +46 -2
- data/test/dependency_test.rb +2 -2
- data/test/manifest_test.rb +34 -0
- data/test/minifiers/terser_minifier_test.rb +0 -1
- data/test/minifiers/uglify_minifier_test.rb +0 -1
- data/test/postprocessors/css_media_combiner_test.rb +107 -0
- data/test/postprocessors/purgecss_test.rb +62 -0
- data/test/preprocessor/babel_test.rb +693 -299
- data/test/preprocessor/js_analyzer_test.rb +0 -2
- data/test/processors/rollup_test.rb +50 -20
- data/test/resolve_test.rb +8 -9
- data/test/server_test.rb +6 -1
- data/test/templates/ejs_test.rb +2 -11
- data/test/templates/erb_test.rb +0 -5
- data/test/test_helper.rb +3 -1
- data/test/transformers/dart_scss_test.rb +139 -0
- data/test/transformers/jst_test.rb +165 -21
- data/test/transformers/scss_test.rb +14 -0
- data/test/transformers/svg_test.rb +40 -0
- metadata +23 -6
- data/lib/condenser/transformers/sass_transformer/importer.rb +0 -50
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52e335c087aab2b9bb3ef4540e54bfc5b8de0a888cab8f095c2f1dd778458bd4
|
4
|
+
data.tar.gz: 566502264a1049f4ff5e33154caa56ef64ed74d14a8d72abd5e31628d59986c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c0fdf66cb6b17ff6a519af5205061f37e3af2f12896e45c2798154c46ba2db3dea57e219595b33e5433a82db17751bc8444453c5bc0371fb27013e97157352d
|
7
|
+
data.tar.gz: 2486bd59e00c2d70ea683d2f69f1a71b0981b557144a08fd4965f9fe38a0c2da68d79e1c6fcba359718af3f9c26f4978619c3bb651f394cbb0db0172c450096f
|
data/lib/condenser/asset.rb
CHANGED
@@ -125,7 +125,7 @@ class Condenser
|
|
125
125
|
|
126
126
|
def all_process_dependencies
|
127
127
|
f = [@source_file]
|
128
|
-
all_dependenies(process_dependencies,
|
128
|
+
all_dependenies(process_dependencies, Set.new, :process_dependencies) do |dep|
|
129
129
|
f << dep.source_file
|
130
130
|
end
|
131
131
|
f
|
@@ -133,7 +133,7 @@ class Condenser
|
|
133
133
|
|
134
134
|
def all_export_dependencies
|
135
135
|
f = [@source_file]
|
136
|
-
all_dependenies(export_dependencies,
|
136
|
+
all_dependenies(export_dependencies, Set.new, :export_dependencies) do |dep|
|
137
137
|
f << dep.source_file
|
138
138
|
end
|
139
139
|
f
|
@@ -153,7 +153,7 @@ class Condenser
|
|
153
153
|
return @pcv if @pcv
|
154
154
|
|
155
155
|
f = []
|
156
|
-
all_dependenies(process_dependencies,
|
156
|
+
all_dependenies(process_dependencies, Set.new, :process_dependencies) do |dep|
|
157
157
|
f << [
|
158
158
|
@environment.base ? dep.source_file.delete_prefix(@environment.base) : dep.source_file,
|
159
159
|
Digest::SHA256.file(dep.source_file).hexdigest
|
@@ -167,7 +167,7 @@ class Condenser
|
|
167
167
|
return @ecv if @ecv
|
168
168
|
|
169
169
|
f = []
|
170
|
-
all_dependenies(export_dependencies,
|
170
|
+
all_dependenies(export_dependencies, Set.new, :export_dependencies) do |dep|
|
171
171
|
f << [
|
172
172
|
@environment.base ? dep.source_file.delete_prefix(@environment.base) : dep.source_file,
|
173
173
|
Digest::SHA256.file(dep.source_file).hexdigest
|
@@ -206,9 +206,9 @@ class Condenser
|
|
206
206
|
content_type: mime_types,
|
207
207
|
|
208
208
|
map: nil,
|
209
|
-
linked_assets:
|
210
|
-
process_dependencies:
|
211
|
-
export_dependencies:
|
209
|
+
linked_assets: Set.new,
|
210
|
+
process_dependencies: Set.new,
|
211
|
+
export_dependencies: Set.new,
|
212
212
|
|
213
213
|
processors: Set.new
|
214
214
|
}
|
@@ -285,15 +285,14 @@ class Condenser
|
|
285
285
|
@content_types = data[:content_type]
|
286
286
|
@digest = data[:digest]
|
287
287
|
@digest_name = data[:digest_name]
|
288
|
-
@linked_assets = data[:linked_assets]
|
289
|
-
@process_dependencies = data[:process_dependencies]
|
290
|
-
@export_dependencies = data[:export_dependencies]
|
288
|
+
@linked_assets = Set.new(data[:linked_assets])
|
289
|
+
@process_dependencies = Set.new(data[:process_dependencies])
|
290
|
+
@export_dependencies = Set.new(data[:export_dependencies])
|
291
291
|
@default_export = data[:default_export]
|
292
292
|
@exports = data[:exports]
|
293
293
|
@processors = data[:processors]
|
294
294
|
@processors_loaded = true
|
295
295
|
@processed = true
|
296
|
-
|
297
296
|
data
|
298
297
|
end
|
299
298
|
end
|
@@ -304,9 +303,9 @@ class Condenser
|
|
304
303
|
@content_types = result[:content_type]
|
305
304
|
@digest = result[:digest]
|
306
305
|
@digest_name = result[:digest_name]
|
307
|
-
@linked_assets = result[:linked_assets]
|
308
|
-
@process_dependencies = result[:process_dependencies]
|
309
|
-
@export_dependencies = result[:export_dependencies]
|
306
|
+
@linked_assets = Set.new(result[:linked_assets])
|
307
|
+
@process_dependencies = Set.new(result[:process_dependencies])
|
308
|
+
@export_dependencies = Set.new(result[:export_dependencies])
|
310
309
|
@default_export = result[:default_export]
|
311
310
|
@exports = result[:exports]
|
312
311
|
@processors = result[:processors]
|
@@ -335,11 +334,15 @@ class Condenser
|
|
335
334
|
export_dependencies: []
|
336
335
|
}
|
337
336
|
|
338
|
-
if
|
339
|
-
|
337
|
+
if @environment.exporters.has_key?(content_type)
|
338
|
+
@environment.exporters[content_type].each do |exporter|
|
339
|
+
@environment.logger.info { "Exporting #{self.filename} with #{exporter.name}" }
|
340
|
+
exporter.call(@environment, data)
|
341
|
+
end
|
340
342
|
end
|
341
343
|
|
342
344
|
if minifier = @environment.minifier_for(content_type)
|
345
|
+
@environment.logger.info { "Minifing #{self.filename} with #{minifier.name}" }
|
343
346
|
minifier.call(@environment, data)
|
344
347
|
end
|
345
348
|
|
@@ -33,7 +33,7 @@ class Condenser
|
|
33
33
|
end
|
34
34
|
|
35
35
|
globs = []
|
36
|
-
(added + removed).each do |file|
|
36
|
+
(added + removed + modified).each do |file|
|
37
37
|
globs << file.match(/([^\.]+)(\.|$)/).to_a[1]
|
38
38
|
if path_match = @path.find { |p| file.start_with?(p) }
|
39
39
|
a = file.delete_prefix(path_match).match(/([^\.]+)(\.|$)/).to_a[1]
|
data/lib/condenser/context.rb
CHANGED
@@ -35,7 +35,7 @@ class Condenser
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
attr_reader :environment, :filename
|
38
|
+
attr_reader :environment, :filename, :links, :dependencies
|
39
39
|
|
40
40
|
def initialize(environment)
|
41
41
|
@environment = environment
|
@@ -110,29 +110,14 @@ class Condenser
|
|
110
110
|
# `depend_on` allows you to state a dependency on a file without
|
111
111
|
# including it.
|
112
112
|
#
|
113
|
-
# This is used for caching purposes. Any changes made to
|
114
|
-
# the dependency file will invalidate the cache of the
|
115
|
-
# source file.
|
116
|
-
def depend_on(path)
|
117
|
-
if environment.absolute_path?(path) && environment.stat(path)
|
118
|
-
@dependencies << environment.build_file_digest_uri(path)
|
119
|
-
else
|
120
|
-
resolve(path)
|
121
|
-
end
|
122
|
-
nil
|
123
|
-
end
|
124
|
-
|
125
|
-
# `depend_on_asset` allows you to state an asset dependency
|
126
|
-
# without including it.
|
127
|
-
#
|
128
113
|
# This is used for caching purposes. Any changes that would
|
129
114
|
# invalidate the dependency asset will invalidate the source
|
130
|
-
# file.
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
115
|
+
# file.
|
116
|
+
def depend_on(path)
|
117
|
+
d = environment.decompose_path(path)
|
118
|
+
@dependencies << [File.join(*d[0], d[1]), [d[3]]]
|
119
|
+
|
120
|
+
nil
|
136
121
|
end
|
137
122
|
|
138
123
|
# `depend_on_env` allows you to state a dependency on an environment
|
@@ -150,9 +135,8 @@ class Condenser
|
|
150
135
|
#
|
151
136
|
# Returns an Asset or nil.
|
152
137
|
def link_asset(path)
|
153
|
-
|
154
|
-
@links <<
|
155
|
-
asset
|
138
|
+
depend_on(path)
|
139
|
+
@links << path
|
156
140
|
end
|
157
141
|
|
158
142
|
# Returns a `data:` URI with the contents of the asset at the specified
|
data/lib/condenser/manifest.rb
CHANGED
@@ -71,7 +71,9 @@ class Condenser
|
|
71
71
|
|
72
72
|
@data[asset.filename] = export.to_json
|
73
73
|
outputs = export.write(@dir)
|
74
|
-
asset.linked_assets.each
|
74
|
+
asset.linked_assets.each do |la|
|
75
|
+
@environment.resolve(la).each { |a| outputs += add_asset(a) }
|
76
|
+
end
|
75
77
|
outputs
|
76
78
|
end
|
77
79
|
|
data/lib/condenser/pipeline.rb
CHANGED
@@ -98,11 +98,16 @@ class Condenser
|
|
98
98
|
end
|
99
99
|
|
100
100
|
def register_exporter(mime_type, engine)
|
101
|
-
@exporters[mime_type]
|
101
|
+
@exporters[mime_type] ||= []
|
102
|
+
@exporters[mime_type] << engine
|
102
103
|
end
|
103
104
|
|
104
|
-
def unregister_exporter(mime_type, engine)
|
105
|
-
|
105
|
+
def unregister_exporter(mime_type, engine=nil)
|
106
|
+
if engine.nil?
|
107
|
+
@exporters[mime_type].clear
|
108
|
+
else
|
109
|
+
@exporters[mime_type]&.reject! { |e| e == engine || e.is_a?(engine) }
|
110
|
+
end
|
106
111
|
end
|
107
112
|
|
108
113
|
def register_minifier(mime_type, engine)
|
@@ -0,0 +1,81 @@
|
|
1
|
+
class Condenser::CSSMediaCombinerProcessor
|
2
|
+
|
3
|
+
include Condenser::ParseHelpers
|
4
|
+
|
5
|
+
def self.setup(env)
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.call(environment, input)
|
9
|
+
new.call(environment, input)
|
10
|
+
end
|
11
|
+
|
12
|
+
def reduce_media_query(queries)
|
13
|
+
output = ''
|
14
|
+
queries.each do |query, contents|
|
15
|
+
output << query if query
|
16
|
+
output << if contents.is_a?(Hash)
|
17
|
+
reduce_media_query(contents)
|
18
|
+
else
|
19
|
+
contents + '}'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
output
|
23
|
+
end
|
24
|
+
|
25
|
+
def call(environment, input)
|
26
|
+
seek(0)
|
27
|
+
@sourcefile = input[:source_file]
|
28
|
+
@source = input[:source]
|
29
|
+
@stack = []
|
30
|
+
@selectors = []
|
31
|
+
@media_queries = {}
|
32
|
+
|
33
|
+
input[:source] = ''
|
34
|
+
while !eos?
|
35
|
+
output = if @selectors.empty?
|
36
|
+
input[:source]
|
37
|
+
else
|
38
|
+
(@selectors[0...-1].reduce(@media_queries) { |hash, selector| hash[selector] ||= {} }[@selectors.last] ||= '')
|
39
|
+
end
|
40
|
+
|
41
|
+
case @stack.last
|
42
|
+
when :media_query
|
43
|
+
scan_until(/(@media[^\{]*{|\{|\})/)
|
44
|
+
case matched
|
45
|
+
when '{'
|
46
|
+
output << pre_match << matched
|
47
|
+
@stack << :statement
|
48
|
+
when '}'
|
49
|
+
output << pre_match
|
50
|
+
@stack.pop
|
51
|
+
@selectors.pop
|
52
|
+
else
|
53
|
+
output << pre_match
|
54
|
+
@selectors << matched.squish
|
55
|
+
@stack << :media_query
|
56
|
+
end
|
57
|
+
when :statement
|
58
|
+
scan_until(/(\{|\})/)
|
59
|
+
output << pre_match << matched
|
60
|
+
case matched
|
61
|
+
when '{'
|
62
|
+
@stack << :statement
|
63
|
+
when '}'
|
64
|
+
@stack.pop
|
65
|
+
end
|
66
|
+
else
|
67
|
+
case scan_until(/(@media[^\{]*{|\Z)/)
|
68
|
+
when ''
|
69
|
+
output << pre_match
|
70
|
+
else
|
71
|
+
output << pre_match
|
72
|
+
@selectors << matched.squish
|
73
|
+
@stack << :media_query
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
input[:source] << reduce_media_query(@media_queries)
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
@@ -34,7 +34,7 @@ class Condenser::PurgeCSSProcessor < Condenser::NodeProcessor
|
|
34
34
|
const { PurgeCSS } = require("#{File.join(npm_module_path('purgecss'))}")
|
35
35
|
const options = #{@options.to_json}
|
36
36
|
options.css = [{
|
37
|
-
raw: #{input[:source]
|
37
|
+
raw: #{JSON.dump(input[:source])}
|
38
38
|
}]
|
39
39
|
if(options.safelist) {
|
40
40
|
options.safelist = options.safelist.map(s => {
|
@@ -44,13 +44,16 @@ class Condenser::PurgeCSSProcessor < Condenser::NodeProcessor
|
|
44
44
|
return s
|
45
45
|
})
|
46
46
|
}
|
47
|
+
if(!options.defaultExtractor) {
|
48
|
+
options.defaultExtractor = content => content.match(/[\\w\\-\\/\\:]+(?<!:)/g) || []
|
49
|
+
}
|
47
50
|
const result = new PurgeCSS().purge(options)
|
48
51
|
try {
|
49
52
|
result.then(
|
50
53
|
r => console.log(JSON.stringify({
|
51
54
|
success: r[0]
|
52
55
|
})),
|
53
|
-
function() {console.log(JSON.stringify({'error':
|
56
|
+
function(e) {console.log(JSON.stringify({'error': [e.name, e.message, e.stack]}))}
|
54
57
|
)
|
55
58
|
} catch(e) {
|
56
59
|
console.log(JSON.stringify({'error': [e.name, e.message, e.stack]}));
|
@@ -60,11 +63,10 @@ class Condenser::PurgeCSSProcessor < Condenser::NodeProcessor
|
|
60
63
|
if result['error'][0] == 'SyntaxError'
|
61
64
|
raise exec_syntax_error(result['error'][1], "/assets/#{input[:filename]}")
|
62
65
|
else
|
63
|
-
raise exec_runtime_error(result['error'][0] +
|
66
|
+
raise exec_runtime_error(result['error']["0"]["name"] + ": " + result['error']["0"]["reason"])
|
64
67
|
end
|
65
68
|
else
|
66
69
|
input[:source] = result["success"]["css"]
|
67
70
|
end
|
68
71
|
end
|
69
|
-
|
70
72
|
end
|
@@ -7,7 +7,7 @@ class Condenser::RollupProcessor < Condenser::NodeProcessor
|
|
7
7
|
|
8
8
|
def initialize(dir = nil, options = {})
|
9
9
|
super(dir)
|
10
|
-
npm_install('rollup', 'rollup
|
10
|
+
npm_install('rollup', '@rollup/plugin-commonjs', '@rollup/plugin-node-resolve')
|
11
11
|
|
12
12
|
@options = options.freeze
|
13
13
|
end
|
@@ -50,7 +50,12 @@ class Condenser::RollupProcessor < Condenser::NodeProcessor
|
|
50
50
|
return '';
|
51
51
|
} catch(e) {
|
52
52
|
if (e.name === "SyntaxError") {
|
53
|
-
if (e.message.startsWith('Unexpected
|
53
|
+
if (e.message.startsWith('Unexpected non-whitespace character after JSON at position ')) {
|
54
|
+
var pos = parseInt(e.message.slice(59));
|
55
|
+
emitMessages(buffer.slice(0,pos));
|
56
|
+
return emitMessages(buffer.slice(pos));
|
57
|
+
} else if (e.message.startsWith('Unexpected token { in JSON at position ')) {
|
58
|
+
// This can be removed, once dropping support for node <= v18
|
54
59
|
var pos = parseInt(e.message.slice(39));
|
55
60
|
emitMessages(buffer.slice(0,pos));
|
56
61
|
return emitMessages(buffer.slice(pos));
|
@@ -70,8 +75,8 @@ class Condenser::RollupProcessor < Condenser::NodeProcessor
|
|
70
75
|
});
|
71
76
|
|
72
77
|
const rollup = require("#{npm_module_path('rollup')}");
|
73
|
-
const commonjs = require("#{npm_module_path('rollup
|
74
|
-
const nodeResolve = require("#{npm_module_path('rollup
|
78
|
+
const commonjs = require("#{npm_module_path('@rollup/plugin-commonjs')}");
|
79
|
+
const nodeResolve = require("#{npm_module_path('@rollup/plugin-node-resolve')}").nodeResolve;
|
75
80
|
var rid = 0;
|
76
81
|
var renderStack = {};
|
77
82
|
var nodeResolver = null;
|
@@ -95,9 +100,8 @@ class Condenser::RollupProcessor < Condenser::NodeProcessor
|
|
95
100
|
mainFields: ['module', 'main'],
|
96
101
|
// modulesOnly: true,
|
97
102
|
// preferBuiltins: false,
|
98
|
-
|
99
|
-
|
100
|
-
}
|
103
|
+
moduleDirectories: [],
|
104
|
+
modulePaths: ['#{npm_module_path}']
|
101
105
|
});
|
102
106
|
}
|
103
107
|
|
@@ -105,9 +109,9 @@ class Condenser::RollupProcessor < Condenser::NodeProcessor
|
|
105
109
|
inputOptions.plugins = [];
|
106
110
|
inputOptions.plugins.push({
|
107
111
|
name: 'condenser',
|
108
|
-
resolveId: function (importee, importer) {
|
112
|
+
resolveId: function (importee, importer, options) {
|
109
113
|
if (importee.startsWith('\\0') || (importer && importer.startsWith('\\0'))) {
|
110
|
-
return;
|
114
|
+
return null;
|
111
115
|
}
|
112
116
|
|
113
117
|
if (!(importer in renderStack)) {
|
@@ -115,24 +119,15 @@ class Condenser::RollupProcessor < Condenser::NodeProcessor
|
|
115
119
|
}
|
116
120
|
|
117
121
|
return request('resolve', [importee, importer]).then((value) => {
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
}
|
123
|
-
return value;
|
124
|
-
});
|
125
|
-
}
|
126
|
-
|
127
|
-
if (!(value === null || value === undefined) && !renderStack[importer].includes(value)) {
|
128
|
-
renderStack[importer].push(value);
|
129
|
-
}
|
130
|
-
return value;
|
122
|
+
if (!(value === null || value === undefined) && !renderStack[importer].includes(value)) {
|
123
|
+
renderStack[importer].push(value);
|
124
|
+
}
|
125
|
+
return value;
|
131
126
|
});
|
132
127
|
},
|
133
128
|
load: function(id) {
|
134
129
|
if (id.startsWith('\\0')) {
|
135
|
-
return;
|
130
|
+
return null;
|
136
131
|
}
|
137
132
|
|
138
133
|
return request('load', [id]).then(function(value) {
|
@@ -140,17 +135,19 @@ class Condenser::RollupProcessor < Condenser::NodeProcessor
|
|
140
135
|
});
|
141
136
|
}
|
142
137
|
});
|
138
|
+
|
143
139
|
inputOptions.plugins.push(nodeResolver);
|
144
140
|
inputOptions.plugins.push(commonjs());
|
145
141
|
|
146
|
-
inputOptions.plugins.push({
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
}
|
142
|
+
// inputOptions.plugins.push({
|
143
|
+
// name: 'nullHanlder',
|
144
|
+
// resolveId: function (importee, importer, options) {
|
145
|
+
// request('log', [importee, importer, options])
|
146
|
+
// // request('error', ["AssetNotFound", importee, importer, renderStack]).then(function(value) {
|
147
|
+
// // process.exit(1);
|
148
|
+
// // });
|
149
|
+
// }
|
150
|
+
// });
|
154
151
|
|
155
152
|
const outputOptions = #{JSON.generate(output_options)};
|
156
153
|
|
@@ -204,10 +201,16 @@ class Condenser::RollupProcessor < Condenser::NodeProcessor
|
|
204
201
|
@entry
|
205
202
|
elsif importee.start_with?('@babel/runtime') || importee.start_with?('core-js-pure') || importee.start_with?('regenerator-runtime')
|
206
203
|
x = File.join(npm_module_path, importee.gsub(/^\.\//, File.dirname(importer) + '/')).sub('/node_modules/regenerator-runtime', '/node_modules/regenerator-runtime/runtime.js')
|
207
|
-
x = "#{x}.js" if !x.end_with?('.js')
|
204
|
+
x = "#{x}.js" if !x.end_with?('.js', '.mjs')
|
205
|
+
File.file?(x) ? x : (x.delete_suffix('.js') + "/index.js")
|
206
|
+
elsif npm_module_path && importee&.start_with?(npm_module_path)
|
207
|
+
x = importee.end_with?('.js', '.mjs') ? importee : "#{importee}.js"
|
208
|
+
x = (x.delete_suffix('.js') + "/index.js") if !File.file?(x)
|
209
|
+
x
|
210
|
+
elsif importee.start_with?('.') && importer.start_with?(npm_module_path)
|
211
|
+
x = File.expand_path(importee, File.dirname(importer))
|
212
|
+
x = "#{x}.js" if !x.end_with?('.js', '.mjs')
|
208
213
|
File.file?(x) ? x : (x.delete_suffix('.js') + "/index.js")
|
209
|
-
elsif npm_module_path && importer.start_with?(npm_module_path)
|
210
|
-
nil
|
211
214
|
elsif importee.end_with?('*')
|
212
215
|
File.join(File.dirname(importee), '*')
|
213
216
|
else
|
@@ -261,7 +264,6 @@ class Condenser::RollupProcessor < Condenser::NodeProcessor
|
|
261
264
|
# when 'get_cache'
|
262
265
|
# io.write(JSON.generate({rid: message['rid'], return: [(@environment.cache.get('rollup') || '{}')] }))
|
263
266
|
end
|
264
|
-
|
265
267
|
io.write(JSON.generate({rid: message['rid'], return: ret}))
|
266
268
|
end
|
267
269
|
end
|
data/lib/condenser/resolve.rb
CHANGED
@@ -38,9 +38,7 @@ class Condenser
|
|
38
38
|
end
|
39
39
|
|
40
40
|
paths.each do |path|
|
41
|
-
glob = path
|
42
|
-
glob = File.join(glob, dirname) if dirname
|
43
|
-
glob = File.join(glob, basename)
|
41
|
+
glob = File.join(*[path, dirname, basename].compact)
|
44
42
|
glob << '.*' unless glob.end_with?('*')
|
45
43
|
|
46
44
|
Dir.glob(glob).sort.each do |f|
|