pakyow-assets 1.0.0.rc5 → 1.0.0
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/CHANGELOG.md +5 -0
- data/lib/pakyow/application/actions/assets/process.rb +65 -0
- data/lib/pakyow/application/actions/assets/public.rb +77 -0
- data/lib/pakyow/{assets → application}/behavior/assets.rb +2 -2
- data/lib/pakyow/application/behavior/assets/externals.rb +61 -0
- data/lib/pakyow/application/behavior/assets/packs.rb +164 -0
- data/lib/pakyow/application/behavior/assets/prelaunching.rb +21 -0
- data/lib/pakyow/application/behavior/assets/processing.rb +29 -0
- data/lib/pakyow/application/behavior/assets/silencing.rb +37 -0
- data/lib/pakyow/application/behavior/assets/watching.rb +27 -0
- data/lib/pakyow/{assets/behavior/config.rb → application/config/assets.rb} +3 -3
- data/lib/pakyow/assets.rb +3 -3
- data/lib/pakyow/assets/framework.rb +20 -20
- data/lib/pakyow/presenter/renderer/behavior/assets/install_assets.rb +41 -0
- data/lib/pakyow/{assets/tasks → tasks/assets}/precompile.rake +0 -0
- data/lib/pakyow/{assets/tasks → tasks/assets}/update.rake +0 -0
- metadata +28 -27
- data/lib/pakyow/actions/assets/process.rb +0 -63
- data/lib/pakyow/actions/assets/public.rb +0 -75
- data/lib/pakyow/assets/behavior/externals.rb +0 -59
- data/lib/pakyow/assets/behavior/packs.rb +0 -162
- data/lib/pakyow/assets/behavior/prelaunching.rb +0 -19
- data/lib/pakyow/assets/behavior/processing.rb +0 -27
- data/lib/pakyow/assets/behavior/rendering/install_assets.rb +0 -39
- data/lib/pakyow/assets/behavior/silencing.rb +0 -35
- 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
|
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("../
|
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
|
6
|
-
require "pakyow/assets/
|
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/
|
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/
|
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
|
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
|
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
|
File without changes
|
File without changes
|
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
|
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-
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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@
|
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.
|
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:
|
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
|