condenser 0.0.1

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.
Files changed (40) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +1 -0
  4. data/lib/condenser.rb +108 -0
  5. data/lib/condenser/asset.rb +221 -0
  6. data/lib/condenser/cache/memory_store.rb +92 -0
  7. data/lib/condenser/cache/null_store.rb +37 -0
  8. data/lib/condenser/context.rb +272 -0
  9. data/lib/condenser/encoding_utils.rb +155 -0
  10. data/lib/condenser/environment.rb +50 -0
  11. data/lib/condenser/errors.rb +11 -0
  12. data/lib/condenser/export.rb +68 -0
  13. data/lib/condenser/manifest.rb +89 -0
  14. data/lib/condenser/pipeline.rb +82 -0
  15. data/lib/condenser/processors/babel.min.js +25 -0
  16. data/lib/condenser/processors/babel_processor.rb +87 -0
  17. data/lib/condenser/processors/node_processor.rb +38 -0
  18. data/lib/condenser/processors/rollup.js +24083 -0
  19. data/lib/condenser/processors/rollup_processor.rb +164 -0
  20. data/lib/condenser/processors/sass_importer.rb +81 -0
  21. data/lib/condenser/processors/sass_processor.rb +300 -0
  22. data/lib/condenser/resolve.rb +202 -0
  23. data/lib/condenser/server.rb +307 -0
  24. data/lib/condenser/templating_engine/erb.rb +21 -0
  25. data/lib/condenser/utils.rb +32 -0
  26. data/lib/condenser/version.rb +3 -0
  27. data/lib/condenser/writers/file_writer.rb +28 -0
  28. data/lib/condenser/writers/zlib_writer.rb +42 -0
  29. data/test/cache_test.rb +24 -0
  30. data/test/environment_test.rb +49 -0
  31. data/test/manifest_test.rb +513 -0
  32. data/test/pipeline_test.rb +31 -0
  33. data/test/preprocessor/babel_test.rb +21 -0
  34. data/test/processors/rollup_test.rb +71 -0
  35. data/test/resolve_test.rb +105 -0
  36. data/test/server_test.rb +361 -0
  37. data/test/templates/erb_test.rb +18 -0
  38. data/test/test_helper.rb +68 -0
  39. data/test/transformers/scss_test.rb +49 -0
  40. metadata +193 -0
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+
3
+ class CondenserErubiTest < ActiveSupport::TestCase
4
+
5
+ def setup
6
+ super
7
+ @env.unregister_preprocessor('application/javascript', Condenser::BabelProcessor)
8
+ end
9
+
10
+ test 'find' do
11
+ file 'test.js.erb', "1<%= 1 + 1 %>3\n"
12
+
13
+ assert_file 'test.js', 'application/javascript', <<~CSS
14
+ 123
15
+ CSS
16
+ end
17
+
18
+ end
@@ -0,0 +1,68 @@
1
+ # To make testing/debugging easier, test within this source tree versus an
2
+ # installed gem
3
+ $LOAD_PATH << File.expand_path('../lib', __FILE__)
4
+
5
+ require 'simplecov'
6
+ SimpleCov.start do
7
+ add_group 'lib', 'condenser/lib'
8
+ add_group 'ext', 'condenser/ext'
9
+ end
10
+
11
+ require 'fileutils'
12
+
13
+ require 'condenser'
14
+ require 'condenser/server'
15
+ require 'condenser/cache/memory_store'
16
+
17
+ require "active_support"
18
+ require "active_support/testing/autorun"
19
+ require 'mocha/setup'
20
+ require 'minitest/reporters'
21
+
22
+ # This is because Rails changed it's minitest intergration, not sure whats
23
+ # up here
24
+ Minitest.load_plugins
25
+ Minitest.extensions.delete('rails')
26
+ Minitest.extensions.unshift('rails')
27
+
28
+ Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
29
+
30
+ class ActiveSupport::TestCase
31
+
32
+ def setup
33
+ @path = Dir.mktmpdir
34
+ @env = Condenser.new(@path)
35
+ end
36
+
37
+ def teardown
38
+ FileUtils.remove_entry(@path, true)
39
+ end
40
+
41
+ def assert_json(json, &block)
42
+ assert_equal json, jbuild(&block)
43
+ end
44
+
45
+ def file(name, source)
46
+ FileUtils.mkdir_p(File.join(@path, File.dirname(name)))
47
+ File.write(File.join(@path, name), source)
48
+ end
49
+
50
+ def assert_file(path, mime_types, source=nil)
51
+ asset = @env.find(path)
52
+ assert asset, "Couldn't find asset \"#{path}\""
53
+ asset.process
54
+ assert_equal path, asset.filename
55
+ assert_equal Array(mime_types), asset.content_types
56
+ assert_equal(source.rstrip, asset.source.rstrip) if !source.nil?
57
+ end
58
+
59
+ def assert_exported_file(path, mime_types, source=nil)
60
+ asset = @env.find(path)
61
+ assert asset, "Couldn't find asset \"#{path}\""
62
+ asset = asset.export
63
+ assert_equal path, asset.filename
64
+ assert_equal Array(mime_types), asset.content_types
65
+ assert_equal(source.rstrip, asset.source.rstrip) if !source.nil?
66
+ end
67
+
68
+ end
@@ -0,0 +1,49 @@
1
+ require 'test_helper'
2
+
3
+ class CondenserSCSSTest < ActiveSupport::TestCase
4
+
5
+ test 'find' do
6
+ file 'test.scss', <<~SCSS
7
+ body {
8
+ background-color: green;
9
+
10
+ &:hover {
11
+ background-color: blue;
12
+ }
13
+ }
14
+ SCSS
15
+
16
+ assert_file 'test.css', 'text/css', <<~CSS
17
+ body {
18
+ background-color: green; }
19
+ body:hover {
20
+ background-color: blue; }
21
+ CSS
22
+ end
23
+
24
+ test 'scss import globing' do
25
+ file "c/dir/a.scss", "body { color: blue; }"
26
+ file "c/dir/b.scss", "body { color: green; }"
27
+
28
+ file 'c/test.scss', '@import "./dir/*"'
29
+
30
+ assert_file 'c/test.css', 'text/css', <<~CSS
31
+ body {
32
+ color: blue; }
33
+
34
+ body {
35
+ color: green; }
36
+ CSS
37
+
38
+ file 'c/test2.scss', '@import "c/dir/*"'
39
+
40
+ assert_file 'c/test2.css', 'text/css', <<~CSS
41
+ body {
42
+ color: blue; }
43
+
44
+ body {
45
+ color: green; }
46
+ CSS
47
+ end
48
+
49
+ end
metadata ADDED
@@ -0,0 +1,193 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: condenser
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jon Bracy
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-04-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: erubi
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rack
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">"
32
+ - !ruby/object:Gem::Version
33
+ version: '1'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '3'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">"
42
+ - !ruby/object:Gem::Version
43
+ version: '1'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '3'
47
+ - !ruby/object:Gem::Dependency
48
+ name: activesupport
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: sass
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '3.4'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.4'
75
+ - !ruby/object:Gem::Dependency
76
+ name: sassc
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: 1.10.1
82
+ - - "<"
83
+ - !ruby/object:Gem::Version
84
+ version: '2.0'
85
+ type: :development
86
+ prerelease: false
87
+ version_requirements: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: 1.10.1
92
+ - - "<"
93
+ - !ruby/object:Gem::Version
94
+ version: '2.0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: zopfli
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: 0.0.7
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: 0.0.7
109
+ description: Condenser is a Rack-based asset packaging system that concatenates and
110
+ serves JavaScript, CSS, Sass, and SCSS.
111
+ email:
112
+ - jonbracy@gmail.com
113
+ executables: []
114
+ extensions: []
115
+ extra_rdoc_files:
116
+ - README.md
117
+ files:
118
+ - LICENSE
119
+ - README.md
120
+ - lib/condenser.rb
121
+ - lib/condenser/asset.rb
122
+ - lib/condenser/cache/memory_store.rb
123
+ - lib/condenser/cache/null_store.rb
124
+ - lib/condenser/context.rb
125
+ - lib/condenser/encoding_utils.rb
126
+ - lib/condenser/environment.rb
127
+ - lib/condenser/errors.rb
128
+ - lib/condenser/export.rb
129
+ - lib/condenser/manifest.rb
130
+ - lib/condenser/pipeline.rb
131
+ - lib/condenser/processors/babel.min.js
132
+ - lib/condenser/processors/babel_processor.rb
133
+ - lib/condenser/processors/node_processor.rb
134
+ - lib/condenser/processors/rollup.js
135
+ - lib/condenser/processors/rollup_processor.rb
136
+ - lib/condenser/processors/sass_importer.rb
137
+ - lib/condenser/processors/sass_processor.rb
138
+ - lib/condenser/resolve.rb
139
+ - lib/condenser/server.rb
140
+ - lib/condenser/templating_engine/erb.rb
141
+ - lib/condenser/utils.rb
142
+ - lib/condenser/version.rb
143
+ - lib/condenser/writers/file_writer.rb
144
+ - lib/condenser/writers/zlib_writer.rb
145
+ - test/cache_test.rb
146
+ - test/environment_test.rb
147
+ - test/manifest_test.rb
148
+ - test/pipeline_test.rb
149
+ - test/preprocessor/babel_test.rb
150
+ - test/processors/rollup_test.rb
151
+ - test/resolve_test.rb
152
+ - test/server_test.rb
153
+ - test/templates/erb_test.rb
154
+ - test/test_helper.rb
155
+ - test/transformers/scss_test.rb
156
+ homepage: https://github.com/malomalo/condenser
157
+ licenses:
158
+ - MIT
159
+ metadata: {}
160
+ post_install_message:
161
+ rdoc_options:
162
+ - "--main"
163
+ - README.md
164
+ require_paths:
165
+ - lib
166
+ required_ruby_version: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ version: 2.4.0
171
+ required_rubygems_version: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ requirements: []
177
+ rubyforge_project:
178
+ rubygems_version: 2.7.4
179
+ signing_key:
180
+ specification_version: 4
181
+ summary: A Rack-based asset packaging system
182
+ test_files:
183
+ - test/cache_test.rb
184
+ - test/environment_test.rb
185
+ - test/manifest_test.rb
186
+ - test/pipeline_test.rb
187
+ - test/preprocessor/babel_test.rb
188
+ - test/processors/rollup_test.rb
189
+ - test/resolve_test.rb
190
+ - test/server_test.rb
191
+ - test/templates/erb_test.rb
192
+ - test/test_helper.rb
193
+ - test/transformers/scss_test.rb