pakyow-assets 1.0.0.rc5 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/lib/pakyow/application/actions/assets/process.rb +65 -0
  4. data/lib/pakyow/application/actions/assets/public.rb +77 -0
  5. data/lib/pakyow/{assets → application}/behavior/assets.rb +2 -2
  6. data/lib/pakyow/application/behavior/assets/externals.rb +61 -0
  7. data/lib/pakyow/application/behavior/assets/packs.rb +164 -0
  8. data/lib/pakyow/application/behavior/assets/prelaunching.rb +21 -0
  9. data/lib/pakyow/application/behavior/assets/processing.rb +29 -0
  10. data/lib/pakyow/application/behavior/assets/silencing.rb +37 -0
  11. data/lib/pakyow/application/behavior/assets/watching.rb +27 -0
  12. data/lib/pakyow/{assets/behavior/config.rb → application/config/assets.rb} +3 -3
  13. data/lib/pakyow/assets.rb +3 -3
  14. data/lib/pakyow/assets/framework.rb +20 -20
  15. data/lib/pakyow/presenter/renderer/behavior/assets/install_assets.rb +41 -0
  16. data/lib/pakyow/{assets/tasks → tasks/assets}/precompile.rake +0 -0
  17. data/lib/pakyow/{assets/tasks → tasks/assets}/update.rake +0 -0
  18. metadata +28 -27
  19. data/lib/pakyow/actions/assets/process.rb +0 -63
  20. data/lib/pakyow/actions/assets/public.rb +0 -75
  21. data/lib/pakyow/assets/behavior/externals.rb +0 -59
  22. data/lib/pakyow/assets/behavior/packs.rb +0 -162
  23. data/lib/pakyow/assets/behavior/prelaunching.rb +0 -19
  24. data/lib/pakyow/assets/behavior/processing.rb +0 -27
  25. data/lib/pakyow/assets/behavior/rendering/install_assets.rb +0 -39
  26. data/lib/pakyow/assets/behavior/silencing.rb +0 -35
  27. data/lib/pakyow/assets/behavior/watching.rb +0 -25
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "pakyow/support/extension"
4
+
5
+ module Pakyow
6
+ class Application
7
+ module Behavior
8
+ module Assets
9
+ # Silences asset requests from being logged.
10
+ #
11
+ module Silencing
12
+ extend Support::Extension
13
+
14
+ apply_extension do
15
+ on "load" do
16
+ if config.assets.silent
17
+ # silence asset requests
18
+ Pakyow.silence do |connection|
19
+ # TODO: do we need the second check?
20
+ connection.path.start_with?(config.assets.prefix) || self.class.asset.instances.any? { |asset|
21
+ asset.logical_path == connection.path
22
+ }
23
+ end
24
+
25
+ # silence requests to public files
26
+ Pakyow.silence do |connection|
27
+ # TODO: really need an in-memory directory for these files
28
+ File.file?(File.join(config.assets.public_path, connection.path))
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "pakyow/support/extension"
4
+
5
+ module Pakyow
6
+ class Application
7
+ module Behavior
8
+ module Assets
9
+ module Watching
10
+ extend Support::Extension
11
+
12
+ apply_extension do
13
+ after "configure" do
14
+ config.assets.extensions.each do |extension|
15
+ config.process.watched_paths << File.join(config.presenter.path, "**/*#{extension}")
16
+
17
+ # Exclude vendored assets.
18
+ #
19
+ config.process.excluded_paths << File.join(config.assets.externals.path, "*#{extension}")
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -4,9 +4,9 @@ require "pakyow/support/extension"
4
4
  require "pakyow/support/path_version"
5
5
 
6
6
  module Pakyow
7
- module Assets
8
- module Behavior
9
- module Config
7
+ class Application
8
+ module Config
9
+ module Assets
10
10
  extend Support::Extension
11
11
 
12
12
  apply_extension do
data/lib/pakyow/assets.rb CHANGED
@@ -11,9 +11,9 @@ require "pakyow/assets/types/css"
11
11
  require "pakyow/assets/types/sass"
12
12
  require "pakyow/assets/types/scss"
13
13
 
14
- require "pakyow/actions/assets/process"
15
- require "pakyow/actions/assets/public"
14
+ require "pakyow/application/actions/assets/process"
15
+ require "pakyow/application/actions/assets/public"
16
16
 
17
17
  module Pakyow
18
- config.tasks.paths << File.expand_path("../assets/tasks", __FILE__)
18
+ config.tasks.paths << File.expand_path("../tasks", __FILE__)
19
19
  end
@@ -2,19 +2,19 @@
2
2
 
3
3
  require "pakyow/framework"
4
4
 
5
- require "pakyow/assets/asset"
6
- require "pakyow/assets/pack"
5
+ require "pakyow/application/behavior/assets"
6
+ require "pakyow/application/behavior/assets/packs"
7
+ require "pakyow/application/behavior/assets/silencing"
8
+ require "pakyow/application/behavior/assets/externals"
9
+ require "pakyow/application/behavior/assets/watching"
10
+ require "pakyow/application/behavior/assets/prelaunching"
11
+ require "pakyow/application/behavior/assets/processing"
12
+ require "pakyow/application/config/assets"
7
13
 
8
- require "pakyow/assets/behavior/config"
9
- require "pakyow/assets/behavior/assets"
10
- require "pakyow/assets/behavior/packs"
11
- require "pakyow/assets/behavior/silencing"
12
- require "pakyow/assets/behavior/externals"
13
- require "pakyow/assets/behavior/watching"
14
- require "pakyow/assets/behavior/prelaunching"
15
- require "pakyow/assets/behavior/processing"
14
+ require "pakyow/presenter/renderer/behavior/assets/install_assets"
16
15
 
17
- require "pakyow/assets/behavior/rendering/install_assets"
16
+ require "pakyow/assets/asset"
17
+ require "pakyow/assets/pack"
18
18
 
19
19
  module Pakyow
20
20
  module Assets
@@ -29,20 +29,20 @@ module Pakyow
29
29
  #
30
30
  stateful :pack, Pack
31
31
 
32
- include Behavior::Config
33
- include Behavior::Assets
34
- include Behavior::Packs
35
- include Behavior::Silencing
36
- include Behavior::Externals
37
- include Behavior::Watching
38
- include Behavior::Prelaunching
39
- include Behavior::Processing
32
+ include Application::Config::Assets
33
+ include Application::Behavior::Assets
34
+ include Application::Behavior::Assets::Packs
35
+ include Application::Behavior::Assets::Silencing
36
+ include Application::Behavior::Assets::Externals
37
+ include Application::Behavior::Assets::Watching
38
+ include Application::Behavior::Assets::Prelaunching
39
+ include Application::Behavior::Assets::Processing
40
40
 
41
41
  after "load" do
42
42
  isolated(:Renderer) do
43
43
  # Load this one later, in case other actions define components that will load assets.
44
44
  #
45
- include Assets::Behavior::Rendering::InstallAssets
45
+ include Presenter::Renderer::Behavior::Assets::InstallAssets
46
46
  end
47
47
  end
48
48
  end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "pakyow/support/extension"
4
+
5
+ module Pakyow
6
+ module Presenter
7
+ class Renderer
8
+ module Behavior
9
+ module Assets
10
+ module InstallAssets
11
+ extend Support::Extension
12
+
13
+ apply_extension do
14
+ build do |view, app:|
15
+ if head = view.head
16
+ packs = app.packs(view)
17
+
18
+ if app.is_a?(Plugin)
19
+ packs = app.parent.packs(view).concat(packs)
20
+ end
21
+
22
+ packs.uniq { |pack|
23
+ pack.public_path
24
+ }.each do |pack|
25
+ if pack.javascripts?
26
+ head.object.append_html("<script src=\"#{File.join(app.config.assets.host, pack.public_path)}.js\"></script>\n")
27
+ end
28
+
29
+ if pack.stylesheets?
30
+ head.object.append_html("<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"#{File.join(app.config.assets.host, pack.public_path)}.css\">\n")
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pakyow-assets
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc5
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryan Powell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-15 00:00:00.000000000 Z
11
+ date: 2019-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pakyow-core
@@ -16,56 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 1.0.0.rc5
19
+ version: 1.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 1.0.0.rc5
26
+ version: 1.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pakyow-presenter
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 1.0.0.rc5
33
+ version: 1.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 1.0.0.rc5
40
+ version: 1.0.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: pakyow-routing
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: 1.0.0.rc5
47
+ version: 1.0.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: 1.0.0.rc5
54
+ version: 1.0.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: pakyow-support
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 1.0.0.rc5
61
+ version: 1.0.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: 1.0.0.rc5
68
+ version: 1.0.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: execjs
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -165,41 +165,42 @@ dependencies:
165
165
  - !ruby/object:Gem::Version
166
166
  version: '4.1'
167
167
  description: Asset pipeline for Pakyow
168
- email: bryan@metabahn.com
168
+ email: bryan@bryanp.org
169
169
  executables: []
170
170
  extensions: []
171
171
  extra_rdoc_files: []
172
172
  files:
173
+ - CHANGELOG.md
173
174
  - LICENSE
174
- - lib/pakyow/actions/assets/process.rb
175
- - lib/pakyow/actions/assets/public.rb
175
+ - lib/pakyow/application/actions/assets/process.rb
176
+ - lib/pakyow/application/actions/assets/public.rb
177
+ - lib/pakyow/application/behavior/assets.rb
178
+ - lib/pakyow/application/behavior/assets/externals.rb
179
+ - lib/pakyow/application/behavior/assets/packs.rb
180
+ - lib/pakyow/application/behavior/assets/prelaunching.rb
181
+ - lib/pakyow/application/behavior/assets/processing.rb
182
+ - lib/pakyow/application/behavior/assets/silencing.rb
183
+ - lib/pakyow/application/behavior/assets/watching.rb
184
+ - lib/pakyow/application/config/assets.rb
176
185
  - lib/pakyow/assets.rb
177
186
  - lib/pakyow/assets/asset.rb
178
187
  - lib/pakyow/assets/babel.rb
179
- - lib/pakyow/assets/behavior/assets.rb
180
- - lib/pakyow/assets/behavior/config.rb
181
- - lib/pakyow/assets/behavior/externals.rb
182
- - lib/pakyow/assets/behavior/packs.rb
183
- - lib/pakyow/assets/behavior/prelaunching.rb
184
- - lib/pakyow/assets/behavior/processing.rb
185
- - lib/pakyow/assets/behavior/rendering/install_assets.rb
186
- - lib/pakyow/assets/behavior/silencing.rb
187
- - lib/pakyow/assets/behavior/watching.rb
188
188
  - lib/pakyow/assets/errors.rb
189
189
  - lib/pakyow/assets/external.rb
190
190
  - lib/pakyow/assets/framework.rb
191
191
  - lib/pakyow/assets/pack.rb
192
192
  - lib/pakyow/assets/precompiler.rb
193
193
  - lib/pakyow/assets/source_map.rb
194
- - lib/pakyow/assets/tasks/precompile.rake
195
- - lib/pakyow/assets/tasks/update.rake
196
194
  - lib/pakyow/assets/types/css.rb
197
195
  - lib/pakyow/assets/types/js.rb
198
196
  - lib/pakyow/assets/types/sass.rb
199
197
  - lib/pakyow/assets/types/scss.rb
198
+ - lib/pakyow/presenter/renderer/behavior/assets/install_assets.rb
199
+ - lib/pakyow/tasks/assets/precompile.rake
200
+ - lib/pakyow/tasks/assets/update.rake
200
201
  - src/@babel/standalone@7.3.1/babel.min.js
201
202
  - src/@babel/standalone@7.4.5/babel.min.js
202
- homepage: https://pakyow.org
203
+ homepage: https://pakyow.com
203
204
  licenses:
204
205
  - LGPL-3.0
205
206
  metadata: {}
@@ -214,9 +215,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
214
215
  version: 2.5.0
215
216
  required_rubygems_version: !ruby/object:Gem::Requirement
216
217
  requirements:
217
- - - ">"
218
+ - - ">="
218
219
  - !ruby/object:Gem::Version
219
- version: 1.3.1
220
+ version: '0'
220
221
  requirements: []
221
222
  rubygems_version: 3.0.3
222
223
  signing_key:
@@ -1,63 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pakyow
4
- module Actions
5
- module Assets
6
- # Pipeline Action that processes assets at request time.
7
- #
8
- # This is intended for development use, please don't use it in production.
9
- # Instead, precompile assets into the public directory.
10
- #
11
- class Process
12
- def call(connection)
13
- if connection.app.config.assets.process
14
- # TODO: can we short circuit if the request path doesn't match the connection?
15
- if asset = find_asset(connection) || find_pack(connection) || find_asset_map(connection) || find_pack_map(connection)
16
- connection.set_header("content-type", asset.mime_type)
17
- connection.body = asset
18
- connection.halt
19
- end
20
- end
21
- end
22
-
23
- private
24
-
25
- def find_asset(connection, path = connection.path)
26
- connection.app.state(:asset).find { |asset|
27
- asset.public_path == path
28
- }
29
- end
30
-
31
- def find_pack(connection, path = connection.path)
32
- connection.app.state(:pack).lazy.map { |pack|
33
- pack.packed(path)
34
- }.find { |packed| !packed.nil? && packed.any? }
35
- end
36
-
37
- def find_asset_map(connection)
38
- if wants_map?(connection)
39
- if (asset = find_asset(connection, unmapped(connection))) && asset.source_map?
40
- asset.source_map
41
- end
42
- end
43
- end
44
-
45
- def find_pack_map(connection)
46
- if (pack = find_pack(connection, unmapped(connection))) && pack.source_map?
47
- pack.source_map
48
- else
49
- nil
50
- end
51
- end
52
-
53
- def wants_map?(connection)
54
- connection.path.end_with?(".map")
55
- end
56
-
57
- def unmapped(connection)
58
- File.join(File.dirname(connection.path), File.basename(connection.path, ".map"))
59
- end
60
- end
61
- end
62
- end
63
- end
@@ -1,75 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "mini_mime"
4
-
5
- require "pakyow/support/core_refinements/string/normalization"
6
-
7
- module Pakyow
8
- module Actions
9
- module Assets
10
- class Public
11
- using Support::Refinements::String::Normalization
12
-
13
- # Pipeline Action that serves files out of your public directory.
14
- #
15
- def initialize(app)
16
- @asset_paths = app.state(:asset).map(&:public_path) + app.state(:pack).flat_map { |pack|
17
- [pack.public_css_path, pack.public_js_path]
18
- }
19
-
20
- @prefix = if app.is_a?(Plugin)
21
- Pathname.new(app.class.mount_path)
22
- else
23
- Pathname.new("/")
24
- end
25
- end
26
-
27
- def call(connection)
28
- if connection.app.config.assets.public
29
- public_path = public_path(connection)
30
-
31
- if public?(public_path)
32
- if mime = MiniMime.lookup_by_filename(public_path)
33
- connection.set_header("content-type", mime.content_type)
34
- end
35
-
36
- if connection.app.config.assets.cache && asset?(connection)
37
- set_cache_headers(connection, public_path)
38
- end
39
-
40
- connection.body = File.open(public_path)
41
- connection.halt
42
- end
43
- end
44
- end
45
-
46
- private
47
-
48
- def public?(path)
49
- File.file?(path)
50
- end
51
-
52
- def public_path(connection)
53
- File.join(
54
- connection.app.config.assets.public_path,
55
- String.normalize_path(
56
- Pathname.new(connection.path).relative_path_from(@prefix).to_s
57
- )
58
- )
59
- end
60
-
61
- def asset?(connection)
62
- @asset_paths.include?(connection.path)
63
- end
64
-
65
- def set_cache_headers(connection, public_path)
66
- mtime = File.mtime(public_path)
67
- connection.set_header("age", (Time.now - mtime).to_i.to_s)
68
- connection.set_header("cache-control", "public, max-age=31536000")
69
- connection.set_header("vary", "accept-encoding")
70
- connection.set_header("last-modified", mtime.httpdate)
71
- end
72
- end
73
- end
74
- end
75
- end