opal-sprockets 0.4.2.pre.1.0.11.0.3.1 → 0.4.2.0.11.0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/.travis.yml +18 -0
- data/CHANGELOG.md +7 -0
- data/Gemfile +4 -1
- data/example/Gemfile.lock +38 -0
- data/lib/opal/sprockets/processor.rb +15 -5
- data/lib/opal/sprockets/server.rb +1 -19
- data/lib/opal/sprockets/version.rb +1 -1
- data/spec/sprockets/server_spec.rb +25 -54
- metadata +5 -8
- data/lib/opal/sprockets/source_map_header_patch.rb +0 -41
- data/lib/opal/sprockets/source_map_server.rb +0 -115
- data/spec/fixtures/source_map.rb +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dca9f9cc92bc73a4bdaa577f7a32b962af5ec4e535adbd3c06a5b80fc835af63
|
4
|
+
data.tar.gz: 5d2beb0fc445ba75afecec5e5c40344a6c561ce3a38b7c3d5a58dc6dc8a8c0b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa1dc4f51c6effa43f9c1fb73a6fc310a4e94ef111b32b0242d78498374f2f15a90a1687df73aa2ec63f823bf32c3b9795cc1e8bfe92bf478776a723665b397d
|
7
|
+
data.tar.gz: 9c79b7a79613d9e242621477f4a0e170811bdda6c013593d5bfba26830d15cb01f61b7ab8afdba565b0425caf272d7cf7e15b79ac05dd33d74ea2cd307d95b5c
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
language: ruby
|
2
2
|
|
3
|
+
branches:
|
4
|
+
only:
|
5
|
+
- master
|
6
|
+
- /^.*-stable$/
|
7
|
+
- /^.*ci-check$/
|
8
|
+
|
3
9
|
matrix:
|
4
10
|
include:
|
5
11
|
- rvm: 2.1.10
|
@@ -11,6 +17,18 @@ matrix:
|
|
11
17
|
- rvm: 2.4.4
|
12
18
|
env: SPROCKETS_VERSION='~> 3.7.1'
|
13
19
|
- rvm: 2.5.1
|
20
|
+
env: SPROCKETS_VERSION='~> 3.7.1'
|
21
|
+
|
22
|
+
- rvm: 2.1.10
|
23
|
+
env: OPAL_VERSION='~> 0.11.3' RACK_VERSION='< 2.0.0' SPROCKETS_VERSION='~> 3.4.1'
|
24
|
+
- rvm: 2.2.10
|
25
|
+
env: OPAL_VERSION='~> 0.11.3' SPROCKETS_VERSION='~> 3.5.2'
|
26
|
+
- rvm: 2.3.7
|
27
|
+
env: OPAL_VERSION='~> 0.11.3' SPROCKETS_VERSION='~> 3.6.3'
|
28
|
+
- rvm: 2.4.4
|
29
|
+
env: OPAL_VERSION='~> 0.11.3' SPROCKETS_VERSION='~> 3.7.1'
|
30
|
+
- rvm: 2.5.1
|
31
|
+
env: OPAL_VERSION='~> 0.11.3' SPROCKETS_VERSION='~> 3.7.1'
|
14
32
|
|
15
33
|
notifications:
|
16
34
|
irc: "irc.freenode.org#opal"
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [v0.4.2](https://github.com/opal/opal-sprockets/compare/v0.4.1.0.11.0.3.1...v0.4.2.0.11.0.3.1)
|
4
|
+
|
5
|
+
*7 September 2018*
|
6
|
+
|
7
|
+
- Inline source-maps with their source-contents for better performance and simpler architecture
|
8
|
+
|
9
|
+
|
3
10
|
## [v0.4.1](https://github.com/opal/opal-sprockets/compare/v0.4.0.0.10.0.3.0.0...v0.4.1.0.11.0.3.1)
|
4
11
|
|
5
12
|
*30 December 2017*
|
data/Gemfile
CHANGED
@@ -2,7 +2,10 @@ source 'https://rubygems.org'
|
|
2
2
|
gemspec
|
3
3
|
|
4
4
|
opal_path = File.expand_path('../opal')
|
5
|
-
|
5
|
+
|
6
|
+
if ENV['OPAL_VERSION']
|
7
|
+
gem 'opal', ENV['OPAL_VERSION']
|
8
|
+
elsif File.exist? opal_path
|
6
9
|
gem 'opal', path: opal_path
|
7
10
|
else
|
8
11
|
gem 'opal', github: 'opal/opal'
|
@@ -0,0 +1,38 @@
|
|
1
|
+
GIT
|
2
|
+
remote: git://github.com/opal/opal.git
|
3
|
+
revision: d77bd3ce19e101988578cdb6314d659491a77844
|
4
|
+
specs:
|
5
|
+
opal (0.11.99.dev)
|
6
|
+
ast (>= 2.3.0)
|
7
|
+
parser (= 2.5.1.0)
|
8
|
+
|
9
|
+
PATH
|
10
|
+
remote: ..
|
11
|
+
specs:
|
12
|
+
opal-sprockets (0.4.2.pre.1.0.11.0.3.1)
|
13
|
+
opal (~> 0.11.0)
|
14
|
+
sprockets (~> 3.1)
|
15
|
+
tilt (>= 1.4)
|
16
|
+
|
17
|
+
GEM
|
18
|
+
remote: https://rubygems.org/
|
19
|
+
specs:
|
20
|
+
ast (2.4.0)
|
21
|
+
concurrent-ruby (1.0.5)
|
22
|
+
parser (2.5.1.0)
|
23
|
+
ast (~> 2.4.0)
|
24
|
+
rack (2.0.5)
|
25
|
+
sprockets (3.7.2)
|
26
|
+
concurrent-ruby (~> 1.0)
|
27
|
+
rack (> 1, < 3)
|
28
|
+
tilt (2.0.8)
|
29
|
+
|
30
|
+
PLATFORMS
|
31
|
+
ruby
|
32
|
+
|
33
|
+
DEPENDENCIES
|
34
|
+
opal!
|
35
|
+
opal-sprockets!
|
36
|
+
|
37
|
+
BUNDLED WITH
|
38
|
+
1.16.4
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'set'
|
2
|
+
require 'base64'
|
2
3
|
require 'tilt/opal'
|
3
4
|
require 'sprockets'
|
4
5
|
require 'opal/builder'
|
5
6
|
require 'opal/sprockets/path_reader'
|
6
|
-
require 'opal/sprockets/source_map_server'
|
7
7
|
|
8
8
|
$OPAL_SOURCE_MAPS = {}
|
9
9
|
|
@@ -49,11 +49,13 @@ module Opal
|
|
49
49
|
process_required_trees(compiler.required_trees, context)
|
50
50
|
|
51
51
|
if Opal::Config.source_map_enabled
|
52
|
-
|
53
|
-
|
52
|
+
map_data = compiler.source_map.as_json
|
53
|
+
# Opal 0.11 doesn't fill sourcesContent
|
54
|
+
add_sources_content_if_missing(map_data, data)
|
55
|
+
"#{result}\n#{to_data_uri_comment(map_data.to_json)}"
|
56
|
+
else
|
57
|
+
result.to_s
|
54
58
|
end
|
55
|
-
|
56
|
-
result.to_s
|
57
59
|
end
|
58
60
|
|
59
61
|
def self.sprockets_extnames_regexp(sprockets)
|
@@ -135,6 +137,14 @@ module Opal
|
|
135
137
|
|
136
138
|
private
|
137
139
|
|
140
|
+
def add_sources_content_if_missing(data, content)
|
141
|
+
data[:sourcesContent] = data.delete(:sourcesContent) || data.delete('sourcesContent') || [content]
|
142
|
+
end
|
143
|
+
|
144
|
+
def to_data_uri_comment(map_to_json)
|
145
|
+
"//# sourceMappingURL=data:application/json;base64,#{Base64.encode64(map_to_json).delete("\n")}"
|
146
|
+
end
|
147
|
+
|
138
148
|
def stubbed_files
|
139
149
|
::Opal::Config.stubbed_files
|
140
150
|
end
|
@@ -1,15 +1,10 @@
|
|
1
|
+
require 'erb'
|
1
2
|
require 'rack'
|
2
|
-
require 'opal/source_map'
|
3
3
|
require 'sprockets'
|
4
|
-
require 'erb'
|
5
|
-
require 'opal/sprockets/source_map_server'
|
6
|
-
require 'opal/sprockets/source_map_header_patch'
|
7
4
|
|
8
5
|
module Opal
|
9
6
|
module Sprockets
|
10
7
|
class Server
|
11
|
-
SOURCE_MAPS_PREFIX_PATH = '/__OPAL_SOURCE_MAPS__'
|
12
|
-
|
13
8
|
attr_accessor :debug, :use_index, :index_path, :main, :public_root,
|
14
9
|
:public_urls, :sprockets, :prefix
|
15
10
|
|
@@ -51,25 +46,12 @@ module Opal
|
|
51
46
|
def create_app
|
52
47
|
server, sprockets, prefix = self, @sprockets, self.prefix
|
53
48
|
sprockets.logger.level ||= Logger::DEBUG
|
54
|
-
source_map_enabled = self.source_map_enabled
|
55
|
-
if source_map_enabled
|
56
|
-
maps_prefix = SOURCE_MAPS_PREFIX_PATH
|
57
|
-
maps_app = SourceMapServer.new(sprockets, maps_prefix)
|
58
|
-
::Opal::Sprockets::SourceMapHeaderPatch.inject!(maps_prefix)
|
59
|
-
end
|
60
49
|
|
61
50
|
@app = Rack::Builder.app do
|
62
51
|
not_found = lambda { |env| [404, {}, []] }
|
63
52
|
use Rack::Deflater
|
64
53
|
use Rack::ShowExceptions
|
65
54
|
use Index, server if server.use_index
|
66
|
-
if source_map_enabled
|
67
|
-
map(maps_prefix) do
|
68
|
-
use Rack::ConditionalGet
|
69
|
-
use Rack::ETag
|
70
|
-
run maps_app
|
71
|
-
end
|
72
|
-
end
|
73
55
|
map(prefix) { run sprockets }
|
74
56
|
run Rack::Static.new(not_found, root: server.public_root, urls: server.public_urls)
|
75
57
|
end
|
@@ -5,8 +5,6 @@ require 'rack/test'
|
|
5
5
|
describe Opal::Sprockets::Server do
|
6
6
|
include Rack::Test::Methods
|
7
7
|
|
8
|
-
let(:maps_prefix) { described_class::SOURCE_MAPS_PREFIX_PATH }
|
9
|
-
|
10
8
|
def app
|
11
9
|
described_class.new { |s|
|
12
10
|
s.main = 'opal'
|
@@ -42,67 +40,40 @@ describe Opal::Sprockets::Server do
|
|
42
40
|
end
|
43
41
|
|
44
42
|
describe 'source maps' do
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
expect(last_response).to be_ok
|
43
|
+
RSpec::Matchers.define :include_inline_source_map do
|
44
|
+
match do |actual_response|
|
45
|
+
actual_response.ok? &&
|
46
|
+
actual_response.body.lines.last.start_with?('//# sourceMappingURL=data:application/json;base64,')
|
47
|
+
end
|
51
48
|
end
|
52
49
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
expect(last_response).to be_ok
|
60
|
-
received_map_path = extract_map_path(last_response)
|
61
|
-
expect(expand_path(received_map_path, js_path+'/..')).to eq(map_path)
|
62
|
-
|
63
|
-
get maps_prefix+'/source_map/subfolder/other_file.self.map'
|
64
|
-
expect(last_response).to be_ok
|
50
|
+
def extract_inline_map(response)
|
51
|
+
last_line = response.body.lines.last
|
52
|
+
b64_encoded = last_line.split('//# sourceMappingURL=data:application/json;base64,', 2)[1]
|
53
|
+
json_string = Base64.decode64(b64_encoded)
|
54
|
+
JSON.parse(json_string, symbolize_names: true)
|
65
55
|
end
|
66
56
|
|
67
|
-
it 'serves map
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
get js_path
|
57
|
+
it 'serves map for a top level file' do
|
58
|
+
get '/assets/opal_file.js'
|
59
|
+
expect(last_response).to include_inline_source_map
|
72
60
|
|
73
|
-
|
74
|
-
received_map_path = extract_map_path(last_response)
|
75
|
-
expect(expand_path(received_map_path, js_path+'/..')).to eq(map_path)
|
61
|
+
map = extract_inline_map(last_response)
|
76
62
|
|
77
|
-
|
78
|
-
expect(
|
79
|
-
map = ::SourceMap::Map.from_json(last_response.body)
|
80
|
-
|
81
|
-
if Gem::Version.new(Opal::VERSION) >= Gem::Version.new('0.11.2')
|
82
|
-
expect(map.sources).to include(maps_prefix+'/source_map/subfolder/other_file.rb')
|
83
|
-
else
|
84
|
-
expect(map.sources).to include(maps_prefix+'/source_map/subfolder/other_file')
|
85
|
-
end
|
63
|
+
expect(map[:sources]).to eq(['opal_file.rb']).or eq(['opal_file'])
|
64
|
+
expect(map[:sourcesContent]).to eq(["require 'opal'\nputs 'hi from opal!'\n"])
|
86
65
|
end
|
87
|
-
end
|
88
66
|
|
89
|
-
|
90
|
-
|
67
|
+
it 'serves map for a subfolder file' do
|
68
|
+
get '/assets/source_map/subfolder/other_file.self.js'
|
69
|
+
expect(last_response).to include_inline_source_map
|
91
70
|
|
92
|
-
|
93
|
-
when response.body =~ source_map_comment_regexp
|
94
|
-
body.scan(source_map_comment_regexp).first.first
|
95
|
-
when response.headers['X-SourceMap']
|
96
|
-
response.headers['X-SourceMap']
|
97
|
-
else
|
98
|
-
raise "cannot find source map in response: #{response.inspect}"
|
99
|
-
end
|
100
|
-
end
|
71
|
+
map = extract_inline_map(last_response)
|
101
72
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
73
|
+
expect(map[:sources])
|
74
|
+
.to eq(['source_map/subfolder/other_file.rb'])
|
75
|
+
.or eq(['source_map/subfolder/other_file'])
|
76
|
+
expect(map[:sourcesContent]).to eq(["puts 'other!'\n"])
|
77
|
+
end
|
107
78
|
end
|
108
79
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opal-sprockets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.2.
|
4
|
+
version: 0.4.2.0.11.0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elia Schito
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-
|
12
|
+
date: 2018-09-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sprockets
|
@@ -123,6 +123,7 @@ files:
|
|
123
123
|
- README.md
|
124
124
|
- Rakefile
|
125
125
|
- example/Gemfile
|
126
|
+
- example/Gemfile.lock
|
126
127
|
- example/app/application.rb
|
127
128
|
- example/app/user.rb
|
128
129
|
- example/config.ru
|
@@ -134,8 +135,6 @@ files:
|
|
134
135
|
- lib/opal/sprockets/path_reader.rb
|
135
136
|
- lib/opal/sprockets/processor.rb
|
136
137
|
- lib/opal/sprockets/server.rb
|
137
|
-
- lib/opal/sprockets/source_map_header_patch.rb
|
138
|
-
- lib/opal/sprockets/source_map_server.rb
|
139
138
|
- lib/opal/sprockets/version.rb
|
140
139
|
- opal-sprockets.gemspec
|
141
140
|
- spec/fixtures/complex_sprockets.js.rb.erb
|
@@ -148,7 +147,6 @@ files:
|
|
148
147
|
- spec/fixtures/required_tree_test/required_file1.rb
|
149
148
|
- spec/fixtures/required_tree_test/required_file2.rb
|
150
149
|
- spec/fixtures/requires.rb
|
151
|
-
- spec/fixtures/source_map.rb
|
152
150
|
- spec/fixtures/source_map/subfolder/other_file.rb
|
153
151
|
- spec/fixtures/sprockets_file.js.rb
|
154
152
|
- spec/fixtures/sprockets_require_tree_test.rb
|
@@ -175,9 +173,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
175
173
|
version: '0'
|
176
174
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
177
175
|
requirements:
|
178
|
-
- - "
|
176
|
+
- - ">="
|
179
177
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
178
|
+
version: '0'
|
181
179
|
requirements: []
|
182
180
|
rubyforge_project:
|
183
181
|
rubygems_version: 2.7.7
|
@@ -195,7 +193,6 @@ test_files:
|
|
195
193
|
- spec/fixtures/required_tree_test/required_file1.rb
|
196
194
|
- spec/fixtures/required_tree_test/required_file2.rb
|
197
195
|
- spec/fixtures/requires.rb
|
198
|
-
- spec/fixtures/source_map.rb
|
199
196
|
- spec/fixtures/source_map/subfolder/other_file.rb
|
200
197
|
- spec/fixtures/sprockets_file.js.rb
|
201
198
|
- spec/fixtures/sprockets_require_tree_test.rb
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'sprockets/server'
|
2
|
-
|
3
|
-
module Opal
|
4
|
-
module Sprockets
|
5
|
-
module SourceMapHeaderPatch
|
6
|
-
# Adds the source map header to all sprocket responses for assets
|
7
|
-
# with a .rb or .opal extension in the extension chain.
|
8
|
-
def headers_with_opal_source_maps(env, asset, length)
|
9
|
-
headers_without_opal_source_maps(env, asset, length).tap do |current_headers|
|
10
|
-
if asset.pathname.to_s =~ /\.(rb|opal)\b/
|
11
|
-
base_path = asset.logical_path.gsub('.js', '')
|
12
|
-
current_headers['X-SourceMap'] = "#{::Opal::Sprockets::SourceMapHeaderPatch.prefix}/#{base_path}.map"
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.included(base)
|
18
|
-
# Poor man's alias_method_chain :)
|
19
|
-
base.send(:alias_method, :headers_without_opal_source_maps, :headers)
|
20
|
-
base.send(:alias_method, :headers, :headers_with_opal_source_maps)
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.inject!(prefix)
|
24
|
-
self.prefix = prefix
|
25
|
-
unless ::Sprockets::Server.ancestors.include?(self)
|
26
|
-
::Sprockets::Server.send :include, self
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def self.prefix
|
31
|
-
@prefix
|
32
|
-
end
|
33
|
-
|
34
|
-
def self.prefix= val
|
35
|
-
@prefix = val
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
|
@@ -1,115 +0,0 @@
|
|
1
|
-
module Opal
|
2
|
-
class SourceMapServer
|
3
|
-
# Carelessly taken from Sprockets::Caching (Sprockets v2)
|
4
|
-
class Cache
|
5
|
-
def initialize
|
6
|
-
@cache = {}
|
7
|
-
end
|
8
|
-
|
9
|
-
attr_reader :cache
|
10
|
-
|
11
|
-
def cache_get(key)
|
12
|
-
# `Cache#get(key)` for Memcache
|
13
|
-
if cache.respond_to?(:get)
|
14
|
-
cache.get(key)
|
15
|
-
|
16
|
-
# `Cache#[key]` so `Hash` can be used
|
17
|
-
elsif cache.respond_to?(:[])
|
18
|
-
cache[key]
|
19
|
-
|
20
|
-
# `Cache#read(key)` for `ActiveSupport::Cache` support
|
21
|
-
elsif cache.respond_to?(:read)
|
22
|
-
cache.read(key)
|
23
|
-
|
24
|
-
else
|
25
|
-
nil
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def cache_set(key, value)
|
30
|
-
# `Cache#set(key, value)` for Memcache
|
31
|
-
if cache.respond_to?(:set)
|
32
|
-
cache.set(key, value)
|
33
|
-
|
34
|
-
# `Cache#[key]=value` so `Hash` can be used
|
35
|
-
elsif cache.respond_to?(:[]=)
|
36
|
-
cache[key] = value
|
37
|
-
|
38
|
-
# `Cache#write(key, value)` for `ActiveSupport::Cache` support
|
39
|
-
elsif cache.respond_to?(:write)
|
40
|
-
cache.write(key, value)
|
41
|
-
end
|
42
|
-
|
43
|
-
value
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def self.get_map_cache(sprockets, logical_path)
|
48
|
-
logical_path = logical_path.gsub(/\.js#{REGEXP_END}/, '')
|
49
|
-
cache_key = cache_key_for_path(logical_path+'.map')
|
50
|
-
cache(sprockets).cache_get(cache_key)
|
51
|
-
end
|
52
|
-
|
53
|
-
def self.set_map_cache(sprockets, logical_path, map_contents)
|
54
|
-
logical_path = logical_path.gsub(/\.js#{REGEXP_END}/, '')
|
55
|
-
cache_key = cache_key_for_path(logical_path+'.map')
|
56
|
-
cache(sprockets).cache_set(cache_key, map_contents)
|
57
|
-
end
|
58
|
-
|
59
|
-
def self.cache(sprockets)
|
60
|
-
@cache ||= sprockets.cache ? sprockets : Cache.new
|
61
|
-
end
|
62
|
-
|
63
|
-
def self.cache_key_for_path(logical_path)
|
64
|
-
base_name = logical_path.gsub(/\.js#{REGEXP_END}/, '')
|
65
|
-
File.join('opal', 'source_maps', base_name)
|
66
|
-
end
|
67
|
-
|
68
|
-
|
69
|
-
def initialize sprockets, prefix = '/'
|
70
|
-
@sprockets = sprockets
|
71
|
-
@prefix = prefix
|
72
|
-
end
|
73
|
-
|
74
|
-
attr_reader :sprockets, :prefix
|
75
|
-
|
76
|
-
def inspect
|
77
|
-
"#<#{self.class}:#{object_id}>"
|
78
|
-
end
|
79
|
-
|
80
|
-
def call(env)
|
81
|
-
prefix_regex = %r{^(?:#{prefix}/|/)}
|
82
|
-
path_info = env['PATH_INFO'].to_s.sub(prefix_regex, '')
|
83
|
-
|
84
|
-
case path_info
|
85
|
-
when %r{^(.*)\.self\.map$}
|
86
|
-
path = $1
|
87
|
-
asset = sprockets[path+'.js']
|
88
|
-
return not_found(path) if asset.nil?
|
89
|
-
|
90
|
-
# "logical_name" of a BundledAsset keeps the .js extension
|
91
|
-
source = SourceMapServer.get_map_cache(sprockets, asset.logical_path)
|
92
|
-
return not_found(asset) if source.nil?
|
93
|
-
|
94
|
-
map = JSON.parse(source)
|
95
|
-
map['sources'] = map['sources'].map {|s| "#{prefix}/#{s}"}
|
96
|
-
source = map.to_json
|
97
|
-
|
98
|
-
return [200, {"Content-Type" => "text/json"}, [source.to_s]]
|
99
|
-
when %r{^(.*)\.rb$}
|
100
|
-
begin
|
101
|
-
asset = sprockets.resolve(path_info.sub(/\.rb#{REGEXP_END}/,''))
|
102
|
-
rescue Sprockets::FileNotFound
|
103
|
-
return not_found(path_info)
|
104
|
-
end
|
105
|
-
return [200, {"Content-Type" => "text/ruby"}, [Pathname(asset).read]]
|
106
|
-
else
|
107
|
-
not_found(path_info)
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
def not_found(*messages)
|
112
|
-
not_found = [404, {}, [{not_found: messages}.inspect]]
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
data/spec/fixtures/source_map.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
puts 'smap!'
|