pakyow-assets 0.1.2 → 1.0.0.rc1

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 (43) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE +3 -19
  3. data/lib/pakyow/assets.rb +19 -0
  4. data/lib/pakyow/assets/actions/process.rb +63 -0
  5. data/lib/pakyow/assets/actions/public.rb +75 -0
  6. data/lib/pakyow/assets/asset.rb +238 -0
  7. data/lib/pakyow/assets/babel.rb +34 -0
  8. data/lib/pakyow/assets/behavior/assets.rb +45 -0
  9. data/lib/pakyow/assets/behavior/config.rb +137 -0
  10. data/lib/pakyow/assets/behavior/externals.rb +58 -0
  11. data/lib/pakyow/assets/behavior/packs.rb +162 -0
  12. data/lib/pakyow/assets/behavior/prelaunching.rb +19 -0
  13. data/lib/pakyow/assets/behavior/processing.rb +27 -0
  14. data/lib/pakyow/assets/behavior/rendering/install_assets.rb +39 -0
  15. data/lib/pakyow/assets/behavior/silencing.rb +35 -0
  16. data/lib/pakyow/assets/behavior/watching.rb +25 -0
  17. data/lib/pakyow/assets/errors.rb +16 -0
  18. data/lib/pakyow/assets/external.rb +103 -0
  19. data/lib/pakyow/assets/framework.rb +52 -0
  20. data/lib/pakyow/assets/pack.rb +171 -0
  21. data/lib/pakyow/assets/precompiler.rb +63 -0
  22. data/lib/pakyow/assets/source_map.rb +99 -0
  23. data/lib/pakyow/assets/tasks/precompile.rake +9 -0
  24. data/lib/pakyow/assets/tasks/update.rake +20 -0
  25. data/lib/pakyow/assets/types/css.rb +45 -0
  26. data/lib/pakyow/assets/types/js.rb +98 -0
  27. data/lib/pakyow/assets/types/sass.rb +69 -0
  28. data/lib/pakyow/assets/types/scss.rb +14 -0
  29. data/src/@babel/standalone@7.3.1/babel.min.js +165 -0
  30. data/src/@babel/standalone@7.4.5/babel.min.js +92359 -0
  31. metadata +146 -46
  32. data/CHANGELOG.md +0 -18
  33. data/README.md +0 -58
  34. data/lib/assets.rb +0 -221
  35. data/lib/config.rb +0 -37
  36. data/lib/middleware.rb +0 -42
  37. data/lib/pakyow-assets.rb +0 -31
  38. data/lib/preprocessors/css-preprocessor.rb +0 -16
  39. data/lib/preprocessors/image-preprocessor.rb +0 -1
  40. data/lib/preprocessors/javascript-preprocessor.rb +0 -16
  41. data/lib/preprocessors/sass-preprocessor.rb +0 -23
  42. data/lib/version.rb +0 -5
  43. data/pakyow-assets.gemspec +0 -21
data/lib/config.rb DELETED
@@ -1,37 +0,0 @@
1
- Pakyow::Config.register(:assets) { |config|
2
-
3
- # registered asset stores
4
- config.opt :stores, lambda {
5
- @stores ||= {
6
- default: File.join(Pakyow::Config.app.root, 'app', 'assets')
7
- }
8
- }
9
-
10
- # whether or not pakyow should host assets
11
- config.opt :compile_on_request
12
-
13
- # whether pakyow should compile assets on startup
14
- config.opt :compile_on_startup
15
-
16
- # where assets should be compiled to
17
- config.opt :compiled_asset_path
18
-
19
- # whether or not to cache the assets
20
- config.opt :cache
21
-
22
- # whether or not to minify the assets
23
- config.opt :minify
24
-
25
- }.env(:development) { |opts|
26
- opts.cache = false
27
- opts.compile_on_request = true
28
- opts.compile_on_startup = false
29
- opts.compiled_asset_path = '.assets'
30
- opts.minify = false
31
- }.env(:production) { |opts|
32
- opts.cache = true
33
- opts.compile_on_request = false
34
- opts.compile_on_startup = true
35
- opts.compiled_asset_path = 'public'
36
- opts.minify = true
37
- }
data/lib/middleware.rb DELETED
@@ -1,42 +0,0 @@
1
- require 'time'
2
-
3
- module Pakyow
4
- module Assets
5
- class Middleware
6
- def initialize(app)
7
- @app = app
8
- end
9
-
10
- def call(env)
11
- if Pakyow::Config.assets.compile_on_request
12
- path = Pakyow::Assets.compiled_asset_path_for_request_path(env['PATH_INFO'])
13
- else
14
- path = File.join(Pakyow::Config.assets.compiled_asset_path, env['PATH_INFO'])
15
- end
16
-
17
- if path =~ /\.(.*)$/ && File.exists?(path)
18
- catch :halt do
19
- app = Pakyow.app.dup
20
- app.context = AppContext.new(Request.new(env), Response.new)
21
-
22
- headers = {
23
- 'Content-Type' => Rack::Mime.mime_type(File.extname(path))
24
- }
25
-
26
- if Pakyow::Config.assets.cache && Pakyow::Assets.fingerprinted?(File.extname(path))
27
- mtime = File.mtime(path)
28
- headers['Age'] = (Time.now - mtime).to_i
29
- headers['Cache-Control'] = 'public, max-age=31536000'
30
- headers['Vary'] = 'Accept-Encoding'
31
- headers['Last-Modified'] = mtime.httpdate
32
- end
33
-
34
- [200, headers, File.open(path)]
35
- end
36
- else
37
- @app.call(env)
38
- end
39
- end
40
- end
41
- end
42
- end
data/lib/pakyow-assets.rb DELETED
@@ -1,31 +0,0 @@
1
- require_relative 'assets'
2
- require_relative 'config'
3
- require_relative 'middleware'
4
- require_relative 'version'
5
-
6
- require_relative 'preprocessors/css-preprocessor'
7
- require_relative 'preprocessors/image-preprocessor'
8
- require_relative 'preprocessors/javascript-preprocessor'
9
- require_relative 'preprocessors/sass-preprocessor'
10
-
11
- Pakyow::App.after :configure do
12
- config.assets.stores.each_pair do |name, path|
13
- Pakyow::Assets.register_path_with_name(path, name)
14
- end
15
-
16
- if config.assets.compile_on_startup
17
- Pakyow::App.processor :html do |content|
18
- Pakyow::Assets.mixin_fingerprints(content)
19
- end
20
-
21
- Pakyow.logger.debug 'Precompiling assets...'
22
- Pakyow::Assets.precompile
23
- Pakyow.logger.debug 'Finished precompiling!'
24
- end
25
- end
26
-
27
- # make sure this middleware executes first
28
- # FIXME: need an api for this on Pakyow::App
29
- Pakyow::App.class_variable_get(:@@middleware).unshift(lambda { |builder|
30
- builder.use Pakyow::Assets::Middleware
31
- })
@@ -1,16 +0,0 @@
1
- require 'yui/compressor'
2
-
3
- Pakyow::Assets.preprocessor :css, fingerprint: true, fingerprint_contents: true do |path|
4
- content = File.read(path)
5
-
6
- if Pakyow::Config.assets.minify
7
- begin
8
- YUI::CssCompressor.new.compress(content)
9
- rescue YUI::Compressor::RuntimeError
10
- Pakyow.logger.warn "Unable to minify #{path}; using raw content"
11
- content
12
- end
13
- else
14
- content
15
- end
16
- end
@@ -1 +0,0 @@
1
- Pakyow::Assets.preprocessor :png, :jpg, :gif, :ico, fingerprint: true
@@ -1,16 +0,0 @@
1
- require 'yui/compressor'
2
-
3
- Pakyow::Assets.preprocessor :js, fingerprint: true, fingerprint_contents: true do |path|
4
- content = File.read(path)
5
-
6
- if Pakyow::Config.assets.minify
7
- begin
8
- YUI::JavaScriptCompressor.new(munge: true).compress(content)
9
- rescue YUI::Compressor::RuntimeError
10
- Pakyow.logger.warn "Unable to minify #{path}; using raw content"
11
- content
12
- end
13
- else
14
- content
15
- end
16
- end
@@ -1,23 +0,0 @@
1
- require 'sass'
2
- require 'yui/compressor'
3
-
4
- Pakyow::Assets.preprocessor :scss, :sass, output: :css, fingerprint: true, fingerprint_contents: true do |path|
5
- content = Sass::Engine.for_file(path, {}).render
6
-
7
- if Pakyow::Config.assets.minify
8
- begin
9
- YUI::CssCompressor.new.compress(content)
10
- rescue YUI::Compressor::RuntimeError
11
- Pakyow.logger.warn "Unable to minify #{path}; using raw content"
12
- content
13
- end
14
- else
15
- content
16
- end
17
- end
18
-
19
- Pakyow::Assets.dependencies :scss, :sass do |path|
20
- Sass::Engine.for_file(path, {}).dependencies.map { |dependency|
21
- dependency.options[:filename]
22
- }
23
- end
data/lib/version.rb DELETED
@@ -1,5 +0,0 @@
1
- module Pakyow
2
- module Assets
3
- VERSION = '0.1.2'.freeze
4
- end
5
- end
@@ -1,21 +0,0 @@
1
- require File.expand_path('../lib/version', __FILE__)
2
-
3
- Gem::Specification.new do |spec|
4
- spec.name = 'pakyow-assets'
5
- spec.summary = 'Pakyow Assets'
6
- spec.description = 'Asset Handling for Pakyow'
7
- spec.author = 'Bryan Powell'
8
- spec.email = 'bryan@metabahn.com'
9
- spec.homepage = 'http://pakyow.org'
10
- spec.version = Pakyow::Assets::VERSION
11
- spec.require_path = 'lib'
12
- spec.files = `git ls-files`.split("\n")
13
- spec.license = 'MIT'
14
-
15
- spec.add_dependency('pakyow-support', '~> 0')
16
- spec.add_dependency('pakyow-core', '~> 0')
17
- spec.add_dependency('pakyow-presenter', '~> 0')
18
-
19
- spec.add_dependency('sass', '~> 3.4')
20
- spec.add_dependency('yui-compressor', '~> 0.12')
21
- end