serviceworker-rails 0.5.5 → 0.6.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 +5 -5
 - data/.gitignore +4 -1
 - data/.rubocop.yml +23 -11
 - data/.travis.yml +25 -7
 - data/Appraisals +17 -3
 - data/CHANGELOG.md +7 -0
 - data/Gemfile +2 -0
 - data/Guardfile +2 -0
 - data/README.md +5 -2
 - data/Rakefile +21 -2
 - data/bin/_guard-core +2 -1
 - data/bin/appraisal +2 -1
 - data/bin/console +1 -0
 - data/bin/guard +2 -1
 - data/bin/rake +3 -1
 - data/bin/rubocop +3 -1
 - data/gemfiles/{rails_3.gemfile → rails_3.2.gemfile} +0 -0
 - data/gemfiles/{rails_4.gemfile → rails_4.2.gemfile} +1 -0
 - data/gemfiles/{rails_5.gemfile → rails_5.0.gemfile} +1 -0
 - data/gemfiles/rails_5.1.gemfile +15 -0
 - data/gemfiles/rails_5.2.gemfile +15 -0
 - data/lib/assets/images/convert.rb +4 -0
 - data/lib/generators/serviceworker/install_generator.rb +4 -1
 - data/lib/generators/serviceworker/templates/serviceworker.rb +2 -0
 - data/lib/service_worker.rb +2 -0
 - data/lib/serviceworker-rails.rb +2 -1
 - data/lib/serviceworker.rb +2 -0
 - data/lib/serviceworker/engine.rb +2 -1
 - data/lib/serviceworker/handlers.rb +74 -0
 - data/lib/serviceworker/handlers/rack_handler.rb +25 -0
 - data/lib/serviceworker/{rails/handler.rb → handlers/sprockets_handler.rb} +4 -3
 - data/lib/serviceworker/handlers/webpacker_handler.rb +29 -0
 - data/lib/serviceworker/middleware.rb +14 -12
 - data/lib/serviceworker/rails.rb +2 -1
 - data/lib/serviceworker/rails/version.rb +2 -1
 - data/lib/serviceworker/route.rb +21 -8
 - data/lib/serviceworker/router.rb +2 -1
 - data/serviceworker-rails.gemspec +7 -7
 - metadata +36 -47
 - data/lib/serviceworker/handler.rb +0 -22
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 2 
     | 
    
         
            +
            SHA256:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 1b9cc730def9c457542951247f29f359590450f0101cf302939e2fc09f767d14
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: f0c0e3d207450ce4abfb81260146ffa939dcc8a67430510b4a1c34b99090471d
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 6ba64ff82b3c7c29a39391156883e725a4a17900ab9b67d0586d5def600f277caceef3fb71b590197bc36b4ba37005132157e0dc24f907e0c4660148a428017c
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: cb7b65a49574244b19baf1ce5d1c44b4cd5ba59a06194b7bbcda78d1fcf602acf628346d3fa36b38ef6460d77bf7d8d8ff8aed517e7d3055c01cf8ac497445b5
         
     | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/.rubocop.yml
    CHANGED
    
    | 
         @@ -1,9 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            AllCops:
         
     | 
| 
       2 
2 
     | 
    
         
             
              Exclude:
         
     | 
| 
       3 
3 
     | 
    
         
             
                - "test/tmp/**/*"
         
     | 
| 
      
 4 
     | 
    
         
            +
                - "test/log/**/*"
         
     | 
| 
       4 
5 
     | 
    
         
             
                - "tmp/**/*"
         
     | 
| 
       5 
6 
     | 
    
         
             
                - "coverage/**/*"
         
     | 
| 
       6 
7 
     | 
    
         
             
                - "gemfiles/**/*"
         
     | 
| 
      
 8 
     | 
    
         
            +
                - "**/node_modules/**/*"
         
     | 
| 
       7 
9 
     | 
    
         | 
| 
       8 
10 
     | 
    
         
             
            Metrics/LineLength:
         
     | 
| 
       9 
11 
     | 
    
         
             
              Max: 120
         
     | 
| 
         @@ -29,7 +31,7 @@ Metrics/CyclomaticComplexity: 
     | 
|
| 
       29 
31 
     | 
    
         
             
            Metrics/PerceivedComplexity:
         
     | 
| 
       30 
32 
     | 
    
         
             
              Enabled: false
         
     | 
| 
       31 
33 
     | 
    
         | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 34 
     | 
    
         
            +
            Layout/AlignParameters:
         
     | 
| 
       33 
35 
     | 
    
         
             
              EnforcedStyle: with_fixed_indentation
         
     | 
| 
       34 
36 
     | 
    
         | 
| 
       35 
37 
     | 
    
         
             
            Style/StringLiterals:
         
     | 
| 
         @@ -38,7 +40,7 @@ Style/StringLiterals: 
     | 
|
| 
       38 
40 
     | 
    
         
             
            Style/StringLiteralsInInterpolation:
         
     | 
| 
       39 
41 
     | 
    
         
             
              EnforcedStyle: double_quotes
         
     | 
| 
       40 
42 
     | 
    
         | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
      
 43 
     | 
    
         
            +
            Layout/ClosingParenthesisIndentation:
         
     | 
| 
       42 
44 
     | 
    
         
             
              Enabled: false
         
     | 
| 
       43 
45 
     | 
    
         | 
| 
       44 
46 
     | 
    
         
             
            Style/OneLineConditional:
         
     | 
| 
         @@ -53,41 +55,51 @@ Style/Not: 
     | 
|
| 
       53 
55 
     | 
    
         
             
            Documentation:
         
     | 
| 
       54 
56 
     | 
    
         
             
              Enabled: false # TODO: Enable again once we have more docs
         
     | 
| 
       55 
57 
     | 
    
         | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
               
     | 
| 
      
 58 
     | 
    
         
            +
            Layout/CaseIndentation:
         
     | 
| 
      
 59 
     | 
    
         
            +
              EnforcedStyle: case
         
     | 
| 
       58 
60 
     | 
    
         
             
              SupportedStyles:
         
     | 
| 
       59 
61 
     | 
    
         
             
                - case
         
     | 
| 
       60 
62 
     | 
    
         
             
                - end
         
     | 
| 
       61 
     | 
    
         
            -
              IndentOneStep:  
     | 
| 
      
 63 
     | 
    
         
            +
              IndentOneStep: false
         
     | 
| 
       62 
64 
     | 
    
         | 
| 
       63 
65 
     | 
    
         
             
            Style/PercentLiteralDelimiters:
         
     | 
| 
       64 
66 
     | 
    
         
             
              PreferredDelimiters:
         
     | 
| 
       65 
67 
     | 
    
         
             
                '%w': "[]"
         
     | 
| 
       66 
68 
     | 
    
         
             
                '%W': "[]"
         
     | 
| 
       67 
69 
     | 
    
         | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
      
 70 
     | 
    
         
            +
            Layout/AccessModifierIndentation:
         
     | 
| 
       69 
71 
     | 
    
         
             
              Enabled: false
         
     | 
| 
       70 
72 
     | 
    
         | 
| 
       71 
73 
     | 
    
         
             
            Style/SignalException:
         
     | 
| 
       72 
74 
     | 
    
         
             
              Enabled: false
         
     | 
| 
       73 
75 
     | 
    
         | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
      
 76 
     | 
    
         
            +
            Layout/IndentationWidth:
         
     | 
| 
       75 
77 
     | 
    
         
             
              Enabled: false
         
     | 
| 
       76 
78 
     | 
    
         | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
              ExactNameMatch: true
         
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
            Lint/DefEndAlignment:
         
     | 
| 
      
 79 
     | 
    
         
            +
            Layout/DefEndAlignment:
         
     | 
| 
       81 
80 
     | 
    
         
             
              Enabled: false
         
     | 
| 
       82 
81 
     | 
    
         | 
| 
       83 
82 
     | 
    
         
             
            Lint/HandleExceptions:
         
     | 
| 
       84 
83 
     | 
    
         
             
              Enabled: false
         
     | 
| 
       85 
84 
     | 
    
         | 
| 
      
 85 
     | 
    
         
            +
            Naming/FileName:
         
     | 
| 
      
 86 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
       86 
88 
     | 
    
         
             
            Style/SpecialGlobalVars:
         
     | 
| 
       87 
89 
     | 
    
         
             
              Enabled: false
         
     | 
| 
       88 
90 
     | 
    
         | 
| 
       89 
91 
     | 
    
         
             
            Style/TrivialAccessors:
         
     | 
| 
      
 92 
     | 
    
         
            +
              ExactNameMatch: true
         
     | 
| 
       90 
93 
     | 
    
         
             
              Enabled: false
         
     | 
| 
       91 
94 
     | 
    
         | 
| 
       92 
95 
     | 
    
         
             
            Style/ClassAndModuleChildren:
         
     | 
| 
       93 
96 
     | 
    
         
             
              Enabled: false
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
            Style/FormatStringToken:
         
     | 
| 
      
 99 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
            Style/TrailingUnderscoreVariable:
         
     | 
| 
      
 102 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
            Style/ModuleFunction:
         
     | 
| 
      
 105 
     | 
    
         
            +
              Enabled: false
         
     | 
    
        data/.travis.yml
    CHANGED
    
    | 
         @@ -1,10 +1,28 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            language: ruby
         
     | 
| 
       2 
     | 
    
         
            -
            cache: 
     | 
| 
      
 2 
     | 
    
         
            +
            cache:
         
     | 
| 
      
 3 
     | 
    
         
            +
              bundler: true
         
     | 
| 
      
 4 
     | 
    
         
            +
              yarn: true
         
     | 
| 
      
 5 
     | 
    
         
            +
              directories:
         
     | 
| 
      
 6 
     | 
    
         
            +
                - node_modules
         
     | 
| 
       3 
7 
     | 
    
         
             
            rvm:
         
     | 
| 
       4 
     | 
    
         
            -
              - 2. 
     | 
| 
       5 
     | 
    
         
            -
              - 2. 
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 8 
     | 
    
         
            +
              - 2.4
         
     | 
| 
      
 9 
     | 
    
         
            +
              - 2.5
         
     | 
| 
      
 10 
     | 
    
         
            +
              - 2.6
         
     | 
| 
      
 11 
     | 
    
         
            +
            before_install:
         
     | 
| 
      
 12 
     | 
    
         
            +
              - gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
         
     | 
| 
      
 13 
     | 
    
         
            +
              - gem install bundler -v '< 2'
         
     | 
| 
      
 14 
     | 
    
         
            +
            install:
         
     | 
| 
      
 15 
     | 
    
         
            +
              - bundle install --path vendor/bundle
         
     | 
| 
      
 16 
     | 
    
         
            +
              - cd test/sample && yarn install && cd -
         
     | 
| 
       7 
17 
     | 
    
         
             
            gemfile:
         
     | 
| 
       8 
     | 
    
         
            -
              - gemfiles/rails_3.gemfile
         
     | 
| 
       9 
     | 
    
         
            -
              - gemfiles/rails_4.gemfile
         
     | 
| 
       10 
     | 
    
         
            -
              - gemfiles/rails_5.gemfile
         
     | 
| 
      
 18 
     | 
    
         
            +
              - gemfiles/rails_3.2.gemfile
         
     | 
| 
      
 19 
     | 
    
         
            +
              - gemfiles/rails_4.2.gemfile
         
     | 
| 
      
 20 
     | 
    
         
            +
              - gemfiles/rails_5.0.gemfile
         
     | 
| 
      
 21 
     | 
    
         
            +
              - gemfiles/rails_5.1.gemfile
         
     | 
| 
      
 22 
     | 
    
         
            +
              - gemfiles/rails_3.2.gemfile
         
     | 
| 
      
 23 
     | 
    
         
            +
            matrix:
         
     | 
| 
      
 24 
     | 
    
         
            +
              exclude:
         
     | 
| 
      
 25 
     | 
    
         
            +
              - rvm: 2.6
         
     | 
| 
      
 26 
     | 
    
         
            +
                gemfile: gemfiles/rails_3.2.gemfile
         
     | 
| 
      
 27 
     | 
    
         
            +
            script:
         
     | 
| 
      
 28 
     | 
    
         
            +
              - bundle exec rake
         
     | 
    
        data/Appraisals
    CHANGED
    
    | 
         @@ -1,12 +1,26 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            appraise "rails-3.2" do
         
     | 
| 
       2 
4 
     | 
    
         
             
              gem "rails", "~> 3.2"
         
     | 
| 
       3 
5 
     | 
    
         
             
              gem "test-unit", "~> 3.0"
         
     | 
| 
       4 
6 
     | 
    
         
             
            end
         
     | 
| 
       5 
7 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
            appraise "rails-4" do
         
     | 
| 
      
 8 
     | 
    
         
            +
            appraise "rails-4.2" do
         
     | 
| 
       7 
9 
     | 
    
         
             
              gem "rails", "~> 4.2"
         
     | 
| 
      
 10 
     | 
    
         
            +
              gem "webpacker"
         
     | 
| 
       8 
11 
     | 
    
         
             
            end
         
     | 
| 
       9 
12 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
            appraise "rails-5" do
         
     | 
| 
      
 13 
     | 
    
         
            +
            appraise "rails-5.0" do
         
     | 
| 
       11 
14 
     | 
    
         
             
              gem "rails", "~> 5.0"
         
     | 
| 
      
 15 
     | 
    
         
            +
              gem "webpacker"
         
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            appraise "rails-5.1" do
         
     | 
| 
      
 19 
     | 
    
         
            +
              gem "rails", "~> 5.1"
         
     | 
| 
      
 20 
     | 
    
         
            +
              gem "webpacker"
         
     | 
| 
      
 21 
     | 
    
         
            +
            end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            appraise "rails-5.2" do
         
     | 
| 
      
 24 
     | 
    
         
            +
              gem "rails", "~> 5.2"
         
     | 
| 
      
 25 
     | 
    
         
            +
              gem "webpacker", "~> 3.4"
         
     | 
| 
       12 
26 
     | 
    
         
             
            end
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/Gemfile
    CHANGED
    
    
    
        data/Guardfile
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | 
         @@ -3,7 +3,7 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            [](https://travis-ci.org/rossta/serviceworker-rails)
         
     | 
| 
       4 
4 
     | 
    
         
             
            [](https://codeclimate.com/github/rossta/serviceworker-rails)
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
            Turn your Rails app into a Progressive Web App. Use [Service Worker](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API) with the Rails asset pipeline.
         
     | 
| 
      
 6 
     | 
    
         
            +
            Turn your Rails app into a Progressive Web App. Use [Service Worker](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API) with the Rails [asset pipeline](https://github.com/rails/sprockets-rails) or [Webpacker](https://github.com/rails/webpacker)
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            ## Why?
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
         @@ -18,7 +18,7 @@ with requests and responses within `/assets/`<em>**</em>. This is not what we wa 
     | 
|
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
            * [MDN states](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API#Download_install_and_activate) browsers check for updated service worker scripts in the background every 24 hours (possibly less). Rails developers wouldn't be able to take advantage of this feature since the fingerprint strategy means assets at a given url are immutable. Beside fingerprintings, the `Cache-Control` headers used for static files served from Rails also work against browser's treatment of service workers.
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
            We want Sprockets to compile service worker JavaScript from ES6/7, CoffeeScript, ERB, etc. but must remove the caching and scoping mechanisms offered by Rails  
     | 
| 
      
 21 
     | 
    
         
            +
            We want Sprockets or Webpacker to compile service worker JavaScript from ES6/7, CoffeeScript, ERB, etc. but must remove the caching and scoping mechanisms offered by Rails defaults. This is where `serviceworker-rails` comes in.
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
            *Check out the [blog post](https://rossta.net/blog/service-worker-on-rails.html)
         
     | 
| 
       24 
24 
     | 
    
         
             
            for more background.*
         
     | 
| 
         @@ -271,6 +271,9 @@ Rails.application.configure do 
     | 
|
| 
       271 
271 
     | 
    
         
             
                match "/header-serviceworker.js" => "another/serviceworker.js",
         
     | 
| 
       272 
272 
     | 
    
         
             
                  headers: { "X-Resource-Header" => "A resource" }
         
     | 
| 
       273 
273 
     | 
    
         | 
| 
      
 274 
     | 
    
         
            +
                # maps to serviceworker "pack" compiled by Webpacker
         
     | 
| 
      
 275 
     | 
    
         
            +
                match "/webpack-serviceworker.js" => "serviceworker.js", pack: true
         
     | 
| 
      
 276 
     | 
    
         
            +
             
     | 
| 
       274 
277 
     | 
    
         
             
                # anonymous glob exposes `paths` variable for interpolation
         
     | 
| 
       275 
278 
     | 
    
         
             
                match "/*/serviceworker.js" => "%{paths}/serviceworker.js"
         
     | 
| 
       276 
279 
     | 
    
         
             
              end
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -1,10 +1,12 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       1 
3 
     | 
    
         
             
            require "rubygems"
         
     | 
| 
       2 
4 
     | 
    
         
             
            require "bundler/setup"
         
     | 
| 
       3 
5 
     | 
    
         
             
            require "bundler/gem_tasks"
         
     | 
| 
       4 
6 
     | 
    
         
             
            require "rake/testtask"
         
     | 
| 
       5 
7 
     | 
    
         
             
            require "rubocop/rake_task"
         
     | 
| 
       6 
8 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
            APP_RAKEFILE = File.expand_path(" 
     | 
| 
      
 9 
     | 
    
         
            +
            APP_RAKEFILE = File.expand_path("test/sample/Rakefile", __dir__)
         
     | 
| 
       8 
10 
     | 
    
         
             
            load "rails/tasks/engine.rake"
         
     | 
| 
       9 
11 
     | 
    
         | 
| 
       10 
12 
     | 
    
         
             
            RuboCop::RakeTask.new
         
     | 
| 
         @@ -15,4 +17,21 @@ Rake::TestTask.new(:test) do |t| 
     | 
|
| 
       15 
17 
     | 
    
         
             
              t.test_files = FileList["test/**/*_test.rb"]
         
     | 
| 
       16 
18 
     | 
    
         
             
            end
         
     | 
| 
       17 
19 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
            task default: [ 
     | 
| 
      
 20 
     | 
    
         
            +
            task default: %i[test rubocop]
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            task :compile do
         
     | 
| 
      
 23 
     | 
    
         
            +
              if defined?(Webpacker)
         
     | 
| 
      
 24 
     | 
    
         
            +
                Dir.chdir("test/sample") do
         
     | 
| 
      
 25 
     | 
    
         
            +
                  sh "NODE_ENV=test yarn install"
         
     | 
| 
      
 26 
     | 
    
         
            +
                  sh "RAILS_ENV=test ./bin/rake webpacker:compile"
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
            end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            Rake::Task[:test].enhance [:compile] do
         
     | 
| 
      
 32 
     | 
    
         
            +
              if defined?(Webpacker)
         
     | 
| 
      
 33 
     | 
    
         
            +
                Dir.chdir("test/sample") do
         
     | 
| 
      
 34 
     | 
    
         
            +
                  sh "RAILS_ENV=test ./bin/rake webpacker:clobber"
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
      
 37 
     | 
    
         
            +
            end
         
     | 
    
        data/bin/_guard-core
    CHANGED
    
    | 
         @@ -1,5 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            #!/usr/bin/env ruby
         
     | 
| 
       2 
2 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
       3 
4 
     | 
    
         
             
            #
         
     | 
| 
       4 
5 
     | 
    
         
             
            # This file was generated by Bundler.
         
     | 
| 
       5 
6 
     | 
    
         
             
            #
         
     | 
| 
         @@ -9,7 +10,7 @@ 
     | 
|
| 
       9 
10 
     | 
    
         | 
| 
       10 
11 
     | 
    
         
             
            require "pathname"
         
     | 
| 
       11 
12 
     | 
    
         
             
            ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
                                                       Pathname.new(__FILE__).realpath)
         
     | 
| 
       13 
14 
     | 
    
         | 
| 
       14 
15 
     | 
    
         
             
            require "rubygems"
         
     | 
| 
       15 
16 
     | 
    
         
             
            require "bundler/setup"
         
     | 
    
        data/bin/appraisal
    CHANGED
    
    | 
         @@ -1,5 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            #!/usr/bin/env ruby
         
     | 
| 
       2 
2 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
       3 
4 
     | 
    
         
             
            #
         
     | 
| 
       4 
5 
     | 
    
         
             
            # This file was generated by Bundler.
         
     | 
| 
       5 
6 
     | 
    
         
             
            #
         
     | 
| 
         @@ -9,7 +10,7 @@ 
     | 
|
| 
       9 
10 
     | 
    
         | 
| 
       10 
11 
     | 
    
         
             
            require "pathname"
         
     | 
| 
       11 
12 
     | 
    
         
             
            ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
                                                       Pathname.new(__FILE__).realpath)
         
     | 
| 
       13 
14 
     | 
    
         | 
| 
       14 
15 
     | 
    
         
             
            require "rubygems"
         
     | 
| 
       15 
16 
     | 
    
         
             
            require "bundler/setup"
         
     | 
    
        data/bin/console
    CHANGED
    
    
    
        data/bin/guard
    CHANGED
    
    | 
         @@ -1,5 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            #!/usr/bin/env ruby
         
     | 
| 
       2 
2 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
       3 
4 
     | 
    
         
             
            #
         
     | 
| 
       4 
5 
     | 
    
         
             
            # This file was generated by Bundler.
         
     | 
| 
       5 
6 
     | 
    
         
             
            #
         
     | 
| 
         @@ -9,7 +10,7 @@ 
     | 
|
| 
       9 
10 
     | 
    
         | 
| 
       10 
11 
     | 
    
         
             
            require "pathname"
         
     | 
| 
       11 
12 
     | 
    
         
             
            ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
                                                       Pathname.new(__FILE__).realpath)
         
     | 
| 
       13 
14 
     | 
    
         | 
| 
       14 
15 
     | 
    
         
             
            require "rubygems"
         
     | 
| 
       15 
16 
     | 
    
         
             
            require "bundler/setup"
         
     | 
    
        data/bin/rake
    CHANGED
    
    | 
         @@ -1,4 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
       2 
4 
     | 
    
         
             
            #
         
     | 
| 
       3 
5 
     | 
    
         
             
            # This file was generated by Bundler.
         
     | 
| 
       4 
6 
     | 
    
         
             
            #
         
     | 
| 
         @@ -8,7 +10,7 @@ 
     | 
|
| 
       8 
10 
     | 
    
         | 
| 
       9 
11 
     | 
    
         
             
            require "pathname"
         
     | 
| 
       10 
12 
     | 
    
         
             
            ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
                                                       Pathname.new(__FILE__).realpath)
         
     | 
| 
       12 
14 
     | 
    
         | 
| 
       13 
15 
     | 
    
         
             
            require "rubygems"
         
     | 
| 
       14 
16 
     | 
    
         
             
            require "bundler/setup"
         
     | 
    
        data/bin/rubocop
    CHANGED
    
    | 
         @@ -1,4 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
       2 
4 
     | 
    
         
             
            #
         
     | 
| 
       3 
5 
     | 
    
         
             
            # This file was generated by Bundler.
         
     | 
| 
       4 
6 
     | 
    
         
             
            #
         
     | 
| 
         @@ -8,7 +10,7 @@ 
     | 
|
| 
       8 
10 
     | 
    
         | 
| 
       9 
11 
     | 
    
         
             
            require "pathname"
         
     | 
| 
       10 
12 
     | 
    
         
             
            ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
                                                       Pathname.new(__FILE__).realpath)
         
     | 
| 
       12 
14 
     | 
    
         | 
| 
       13 
15 
     | 
    
         
             
            require "rubygems"
         
     | 
| 
       14 
16 
     | 
    
         
             
            require "bundler/setup"
         
     | 
| 
         
            File without changes
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # This file was generated by Appraisal
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            source "https://rubygems.org"
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            gem "rails", "~> 5.1"
         
     | 
| 
      
 6 
     | 
    
         
            +
            gem "webpacker"
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            group :development, :test do
         
     | 
| 
      
 9 
     | 
    
         
            +
              gem "guard", :require => false
         
     | 
| 
      
 10 
     | 
    
         
            +
              gem "guard-minitest", :require => false
         
     | 
| 
      
 11 
     | 
    
         
            +
              gem "pry"
         
     | 
| 
      
 12 
     | 
    
         
            +
              gem "pry-byebug", :platforms => [:mri]
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            gemspec :path => "../"
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # This file was generated by Appraisal
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            source "https://rubygems.org"
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            gem "rails", "~> 5.2"
         
     | 
| 
      
 6 
     | 
    
         
            +
            gem "webpacker", "~> 3.4"
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            group :development, :test do
         
     | 
| 
      
 9 
     | 
    
         
            +
              gem "guard", :require => false
         
     | 
| 
      
 10 
     | 
    
         
            +
              gem "guard-minitest", :require => false
         
     | 
| 
      
 11 
     | 
    
         
            +
              gem "pry"
         
     | 
| 
      
 12 
     | 
    
         
            +
              gem "pry-byebug", :platforms => [:mri]
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            gemspec :path => "../"
         
     | 
| 
         @@ -1,3 +1,5 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       1 
3 
     | 
    
         
             
            require "rails/generators"
         
     | 
| 
       2 
4 
     | 
    
         
             
            require "fileutils"
         
     | 
| 
       3 
5 
     | 
    
         | 
| 
         @@ -33,7 +35,7 @@ module Serviceworker 
     | 
|
| 
       33 
35 
     | 
    
         
             
                  def update_application_layout
         
     | 
| 
       34 
36 
     | 
    
         
             
                    layout = detect_layout
         
     | 
| 
       35 
37 
     | 
    
         
             
                    snippet = %(<link rel="manifest" href="/manifest.json" />)
         
     | 
| 
       36 
     | 
    
         
            -
                    snippet  
     | 
| 
      
 38 
     | 
    
         
            +
                    snippet += %(\n<meta name="apple-mobile-web-app-capable" content="yes">)
         
     | 
| 
       37 
39 
     | 
    
         
             
                    unless layout
         
     | 
| 
       38 
40 
     | 
    
         
             
                      conditional_warn "Could not locate application layout. To insert manifest tags manually, use:\n\n#{snippet}\n"
         
     | 
| 
       39 
41 
     | 
    
         
             
                      return
         
     | 
| 
         @@ -55,6 +57,7 @@ module Serviceworker 
     | 
|
| 
       55 
57 
     | 
    
         
             
                    %w[.js .js.erb .coffee .coffee.erb .js.coffee .js.coffee.erb].each do |ext|
         
     | 
| 
       56 
58 
     | 
    
         
             
                      next unless File.exist?(javascripts_dir("application#{ext}"))
         
     | 
| 
       57 
59 
     | 
    
         
             
                      return [ext, "#="] if ext.include?(".coffee")
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
       58 
61 
     | 
    
         
             
                      return [ext, "//="]
         
     | 
| 
       59 
62 
     | 
    
         
             
                    end
         
     | 
| 
       60 
63 
     | 
    
         
             
                  end
         
     | 
    
        data/lib/service_worker.rb
    CHANGED
    
    
    
        data/lib/serviceworker-rails.rb
    CHANGED
    
    
    
        data/lib/serviceworker.rb
    CHANGED
    
    
    
        data/lib/serviceworker/engine.rb
    CHANGED
    
    | 
         @@ -1,4 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       2 
3 
     | 
    
         
             
            require "rails"
         
     | 
| 
       3 
4 
     | 
    
         
             
            require "rails/railtie"
         
     | 
| 
       4 
5 
     | 
    
         
             
            require "serviceworker"
         
     | 
| 
         @@ -8,7 +9,7 @@ module ServiceWorker 
     | 
|
| 
       8 
9 
     | 
    
         
             
                config.serviceworker = ActiveSupport::OrderedOptions.new
         
     | 
| 
       9 
10 
     | 
    
         
             
                config.serviceworker.headers = {}
         
     | 
| 
       10 
11 
     | 
    
         
             
                config.serviceworker.routes = ServiceWorker::Router.new
         
     | 
| 
       11 
     | 
    
         
            -
                config.serviceworker.handler =  
     | 
| 
      
 12 
     | 
    
         
            +
                config.serviceworker.handler = :sprockets
         
     | 
| 
       12 
13 
     | 
    
         
             
                config.serviceworker.icon_sizes = %w[36 48 60 72 76 96 120 152 180 192 512]
         
     | 
| 
       13 
14 
     | 
    
         | 
| 
       14 
15 
     | 
    
         
             
                initializer "serviceworker-rails.configure_rails_initialization", after: :load_config_initializers do
         
     | 
| 
         @@ -0,0 +1,74 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require "serviceworker/handlers/rack_handler"
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            module ServiceWorker
         
     | 
| 
      
 6 
     | 
    
         
            +
              module Handlers
         
     | 
| 
      
 7 
     | 
    
         
            +
                extend self
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                def build(handler)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  resolve_handler(handler) || default_handler
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                def handler_for_route_match(route_match)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  options = route_match.options
         
     | 
| 
      
 15 
     | 
    
         
            +
                  return webpacker_handler if Route.webpacker?(options)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  return sprockets_handler if Route.sprockets?(options)
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                  nil
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                def ===(other)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  other.respond_to?(:call)
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                def handler_for_name(name)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  available_handlers = %w[sprockets webpacker rack]
         
     | 
| 
      
 27 
     | 
    
         
            +
                  if available_handlers.include?(name.to_s)
         
     | 
| 
      
 28 
     | 
    
         
            +
                    send("#{name}_handler")
         
     | 
| 
      
 29 
     | 
    
         
            +
                  else
         
     | 
| 
      
 30 
     | 
    
         
            +
                    raise ServiceWorker::Error,
         
     | 
| 
      
 31 
     | 
    
         
            +
                          "Unknown handler #{name.inspect}. Please use one of #{available_handlers.inspect}"
         
     | 
| 
      
 32 
     | 
    
         
            +
                  end
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                def resolve_handler(handler)
         
     | 
| 
      
 36 
     | 
    
         
            +
                  case handler
         
     | 
| 
      
 37 
     | 
    
         
            +
                  when Handlers
         
     | 
| 
      
 38 
     | 
    
         
            +
                    handler
         
     | 
| 
      
 39 
     | 
    
         
            +
                  when Symbol, String
         
     | 
| 
      
 40 
     | 
    
         
            +
                    handler_for_name(handler)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  end
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                def webpacker_handler
         
     | 
| 
      
 45 
     | 
    
         
            +
                  require "serviceworker/handlers/webpacker_handler"
         
     | 
| 
      
 46 
     | 
    
         
            +
                  ServiceWorker::Handlers::WebpackerHandler.new
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                def sprockets_handler
         
     | 
| 
      
 50 
     | 
    
         
            +
                  require "serviceworker/handlers/sprockets_handler"
         
     | 
| 
      
 51 
     | 
    
         
            +
                  ServiceWorker::Handlers::SprocketsHandler.new
         
     | 
| 
      
 52 
     | 
    
         
            +
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                def rack_handler
         
     | 
| 
      
 55 
     | 
    
         
            +
                  ServiceWorker::Handlers::RackHandler.new
         
     | 
| 
      
 56 
     | 
    
         
            +
                end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                def default_handler
         
     | 
| 
      
 59 
     | 
    
         
            +
                  if sprockets?
         
     | 
| 
      
 60 
     | 
    
         
            +
                    sprockets_handler
         
     | 
| 
      
 61 
     | 
    
         
            +
                  else
         
     | 
| 
      
 62 
     | 
    
         
            +
                    rack_handler
         
     | 
| 
      
 63 
     | 
    
         
            +
                  end
         
     | 
| 
      
 64 
     | 
    
         
            +
                end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                def webpacker?
         
     | 
| 
      
 67 
     | 
    
         
            +
                  defined?(::Webpacker)
         
     | 
| 
      
 68 
     | 
    
         
            +
                end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                def sprockets?
         
     | 
| 
      
 71 
     | 
    
         
            +
                  defined?(::Rails) && ::Rails.configuration.assets
         
     | 
| 
      
 72 
     | 
    
         
            +
                end
         
     | 
| 
      
 73 
     | 
    
         
            +
              end
         
     | 
| 
      
 74 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,25 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module ServiceWorker
         
     | 
| 
      
 4 
     | 
    
         
            +
              module Handlers
         
     | 
| 
      
 5 
     | 
    
         
            +
                class RackHandler
         
     | 
| 
      
 6 
     | 
    
         
            +
                  def initialize(root = Dir.getwd)
         
     | 
| 
      
 7 
     | 
    
         
            +
                    @root = root
         
     | 
| 
      
 8 
     | 
    
         
            +
                  end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                  def call(env)
         
     | 
| 
      
 11 
     | 
    
         
            +
                    path_info = env.fetch("serviceworker.asset_name")
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                    file_server.call(env.merge("PATH_INFO" => path_info))
         
     | 
| 
      
 14 
     | 
    
         
            +
                  end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                  def file_path(path_info)
         
     | 
| 
      
 17 
     | 
    
         
            +
                    @root.join(path_info)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                  def file_server
         
     | 
| 
      
 21 
     | 
    
         
            +
                    @file_server ||= ::Rack::File.new(@root)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  end
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,9 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       2 
3 
     | 
    
         
             
            require "rack/file"
         
     | 
| 
       3 
4 
     | 
    
         | 
| 
       4 
5 
     | 
    
         
             
            module ServiceWorker
         
     | 
| 
       5 
     | 
    
         
            -
              module  
     | 
| 
       6 
     | 
    
         
            -
                class  
     | 
| 
      
 6 
     | 
    
         
            +
              module Handlers
         
     | 
| 
      
 7 
     | 
    
         
            +
                class SprocketsHandler
         
     | 
| 
       7 
8 
     | 
    
         
             
                  def call(env)
         
     | 
| 
       8 
9 
     | 
    
         
             
                    path_info = env.fetch("serviceworker.asset_name")
         
     | 
| 
       9 
10 
     | 
    
         | 
| 
         @@ -14,7 +15,7 @@ module ServiceWorker 
     | 
|
| 
       14 
15 
     | 
    
         
             
                    end
         
     | 
| 
       15 
16 
     | 
    
         
             
                  end
         
     | 
| 
       16 
17 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
      
 18 
     | 
    
         
            +
                  private
         
     | 
| 
       18 
19 
     | 
    
         | 
| 
       19 
20 
     | 
    
         
             
                  def sprockets_server
         
     | 
| 
       20 
21 
     | 
    
         
             
                    ::Rails.application.assets
         
     | 
| 
         @@ -0,0 +1,29 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require "rack/file"
         
     | 
| 
      
 4 
     | 
    
         
            +
            require "webpacker"
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            module ServiceWorker
         
     | 
| 
      
 7 
     | 
    
         
            +
              module Handlers
         
     | 
| 
      
 8 
     | 
    
         
            +
                class WebpackerHandler
         
     | 
| 
      
 9 
     | 
    
         
            +
                  def call(env)
         
     | 
| 
      
 10 
     | 
    
         
            +
                    path_info = env.fetch("serviceworker.asset_name")
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                    path = Webpacker.manifest.lookup(path_info)
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                    if Webpacker.dev_server.running?
         
     | 
| 
      
 15 
     | 
    
         
            +
                      proxy = Webpacker::DevServerProxy.new
         
     | 
| 
      
 16 
     | 
    
         
            +
                      proxy.call(env.merge("PATH_INFO" => path))
         
     | 
| 
      
 17 
     | 
    
         
            +
                    else
         
     | 
| 
      
 18 
     | 
    
         
            +
                      file_server.call(env.merge("PATH_INFO" => path))
         
     | 
| 
      
 19 
     | 
    
         
            +
                    end
         
     | 
| 
      
 20 
     | 
    
         
            +
                  end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                  private
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                  def file_server
         
     | 
| 
      
 25 
     | 
    
         
            +
                    @file_server ||= ::Rack::File.new(::Rails.public_path)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,9 +1,12 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require "serviceworker/handlers"
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
       2 
5 
     | 
    
         
             
            module ServiceWorker
         
     | 
| 
       3 
6 
     | 
    
         
             
              class Middleware
         
     | 
| 
       4 
     | 
    
         
            -
                REQUEST_METHOD = "REQUEST_METHOD" 
     | 
| 
       5 
     | 
    
         
            -
                GET = "GET" 
     | 
| 
       6 
     | 
    
         
            -
                HEAD = "HEAD" 
     | 
| 
      
 7 
     | 
    
         
            +
                REQUEST_METHOD = "REQUEST_METHOD"
         
     | 
| 
      
 8 
     | 
    
         
            +
                GET = "GET"
         
     | 
| 
      
 9 
     | 
    
         
            +
                HEAD = "HEAD"
         
     | 
| 
       7 
10 
     | 
    
         | 
| 
       8 
11 
     | 
    
         
             
                # Initialize the Rack middleware for responding to serviceworker asset
         
     | 
| 
       9 
12 
     | 
    
         
             
                # requests
         
     | 
| 
         @@ -17,14 +20,14 @@ module ServiceWorker 
     | 
|
| 
       17 
20 
     | 
    
         
             
                def initialize(app, opts = {})
         
     | 
| 
       18 
21 
     | 
    
         
             
                  @app = app
         
     | 
| 
       19 
22 
     | 
    
         
             
                  @opts = opts
         
     | 
| 
       20 
     | 
    
         
            -
                  @headers = opts.fetch(:headers, {}) 
     | 
| 
      
 23 
     | 
    
         
            +
                  @headers = default_headers.merge(opts.fetch(:headers, {}))
         
     | 
| 
       21 
24 
     | 
    
         
             
                  @router = opts.fetch(:routes, ServiceWorker::Router.new)
         
     | 
| 
       22 
     | 
    
         
            -
                  @handler = @opts.fetch(:handler,  
     | 
| 
      
 25 
     | 
    
         
            +
                  @handler = Handlers.build(@opts.fetch(:handler, nil))
         
     | 
| 
       23 
26 
     | 
    
         
             
                end
         
     | 
| 
       24 
27 
     | 
    
         | 
| 
       25 
28 
     | 
    
         
             
                def call(env)
         
     | 
| 
       26 
29 
     | 
    
         
             
                  case env[REQUEST_METHOD]
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
      
 30 
     | 
    
         
            +
                  when GET, HEAD
         
     | 
| 
       28 
31 
     | 
    
         
             
                    route_match = @router.match_route(env)
         
     | 
| 
       29 
32 
     | 
    
         
             
                    return respond_to_match(route_match, env) if route_match
         
     | 
| 
       30 
33 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -43,11 +46,15 @@ module ServiceWorker 
     | 
|
| 
       43 
46 
     | 
    
         
             
                def respond_to_match(route_match, env)
         
     | 
| 
       44 
47 
     | 
    
         
             
                  env = env.merge("serviceworker.asset_name" => route_match.asset_name)
         
     | 
| 
       45 
48 
     | 
    
         | 
| 
       46 
     | 
    
         
            -
                  status, headers, body =  
     | 
| 
      
 49 
     | 
    
         
            +
                  status, headers, body = handler_for_route_match(route_match).call(env)
         
     | 
| 
       47 
50 
     | 
    
         | 
| 
       48 
51 
     | 
    
         
             
                  [status, headers.merge(@headers).merge(route_match.headers), body]
         
     | 
| 
       49 
52 
     | 
    
         
             
                end
         
     | 
| 
       50 
53 
     | 
    
         | 
| 
      
 54 
     | 
    
         
            +
                def handler_for_route_match(route_match)
         
     | 
| 
      
 55 
     | 
    
         
            +
                  Handlers.handler_for_route_match(route_match) || @handler
         
     | 
| 
      
 56 
     | 
    
         
            +
                end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
       51 
58 
     | 
    
         
             
                def info(msg)
         
     | 
| 
       52 
59 
     | 
    
         
             
                  logger.info "[#{self.class}] - #{msg}"
         
     | 
| 
       53 
60 
     | 
    
         
             
                end
         
     | 
| 
         @@ -55,10 +62,5 @@ module ServiceWorker 
     | 
|
| 
       55 
62 
     | 
    
         
             
                def logger
         
     | 
| 
       56 
63 
     | 
    
         
             
                  @logger ||= @opts.fetch(:logger, Logger.new(STDOUT))
         
     | 
| 
       57 
64 
     | 
    
         
             
                end
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
                def default_handler
         
     | 
| 
       60 
     | 
    
         
            -
                  require "serviceworker/handler"
         
     | 
| 
       61 
     | 
    
         
            -
                  ServiceWorker::Handler.new
         
     | 
| 
       62 
     | 
    
         
            -
                end
         
     | 
| 
       63 
65 
     | 
    
         
             
              end
         
     | 
| 
       64 
66 
     | 
    
         
             
            end
         
     | 
    
        data/lib/serviceworker/rails.rb
    CHANGED
    
    
    
        data/lib/serviceworker/route.rb
    CHANGED
    
    | 
         @@ -1,14 +1,23 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       2 
3 
     | 
    
         
             
            module ServiceWorker
         
     | 
| 
       3 
4 
     | 
    
         
             
              class Route
         
     | 
| 
       4 
5 
     | 
    
         
             
                attr_reader :path_pattern, :asset_pattern, :options
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
                RouteMatch = Struct.new(:path, :asset_name, :headers) do
         
     | 
| 
      
 7 
     | 
    
         
            +
                RouteMatch = Struct.new(:path, :asset_name, :headers, :options) do
         
     | 
| 
       7 
8 
     | 
    
         
             
                  def to_s
         
     | 
| 
       8 
9 
     | 
    
         
             
                    asset_name
         
     | 
| 
       9 
10 
     | 
    
         
             
                  end
         
     | 
| 
       10 
11 
     | 
    
         
             
                end
         
     | 
| 
       11 
12 
     | 
    
         | 
| 
      
 13 
     | 
    
         
            +
                def self.webpacker?(options)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  options.key?(:pack) && Handlers.webpacker?
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                def self.sprockets?(options)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  options.key?(:asset)
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
       12 
21 
     | 
    
         
             
                def initialize(path_pattern, asset_pattern = nil, options = {})
         
     | 
| 
       13 
22 
     | 
    
         
             
                  if asset_pattern.is_a?(Hash)
         
     | 
| 
       14 
23 
     | 
    
         
             
                    options = asset_pattern
         
     | 
| 
         @@ -16,7 +25,11 @@ module ServiceWorker 
     | 
|
| 
       16 
25 
     | 
    
         
             
                  end
         
     | 
| 
       17 
26 
     | 
    
         | 
| 
       18 
27 
     | 
    
         
             
                  @path_pattern = path_pattern
         
     | 
| 
       19 
     | 
    
         
            -
                  @asset_pattern =  
     | 
| 
      
 28 
     | 
    
         
            +
                  @asset_pattern = if self.class.webpacker?(options)
         
     | 
| 
      
 29 
     | 
    
         
            +
                                     asset_pattern || options.fetch(:pack, path_pattern)
         
     | 
| 
      
 30 
     | 
    
         
            +
                                   else
         
     | 
| 
      
 31 
     | 
    
         
            +
                                     asset_pattern || options.fetch(:asset, path_pattern)
         
     | 
| 
      
 32 
     | 
    
         
            +
                                   end
         
     | 
| 
       20 
33 
     | 
    
         
             
                  @options = options
         
     | 
| 
       21 
34 
     | 
    
         
             
                end
         
     | 
| 
       22 
35 
     | 
    
         | 
| 
         @@ -25,7 +38,7 @@ module ServiceWorker 
     | 
|
| 
       25 
38 
     | 
    
         | 
| 
       26 
39 
     | 
    
         
             
                  asset = resolver.call(path) or return nil
         
     | 
| 
       27 
40 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
                  RouteMatch.new(path, asset, headers)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  RouteMatch.new(path, asset, headers, options)
         
     | 
| 
       29 
42 
     | 
    
         
             
                end
         
     | 
| 
       30 
43 
     | 
    
         | 
| 
       31 
44 
     | 
    
         
             
                def headers
         
     | 
| 
         @@ -39,14 +52,14 @@ module ServiceWorker 
     | 
|
| 
       39 
52 
     | 
    
         
             
                end
         
     | 
| 
       40 
53 
     | 
    
         | 
| 
       41 
54 
     | 
    
         
             
                class AssetResolver
         
     | 
| 
       42 
     | 
    
         
            -
                  PATH_INFO = "PATH_INFO" 
     | 
| 
      
 55 
     | 
    
         
            +
                  PATH_INFO = "PATH_INFO"
         
     | 
| 
       43 
56 
     | 
    
         
             
                  DEFAULT_WILDCARD_NAME = :paths
         
     | 
| 
       44 
     | 
    
         
            -
                  WILDCARD_PATTERN = %r{\/\*([^\/]*)}
         
     | 
| 
       45 
     | 
    
         
            -
                  NAMED_SEGMENTS_PATTERN = %r{\/([^\/]*):([^:$\/]+)}
         
     | 
| 
       46 
     | 
    
         
            -
                  LEADING_SLASH_PATTERN = %r{^\/}
         
     | 
| 
      
 57 
     | 
    
         
            +
                  WILDCARD_PATTERN = %r{\/\*([^\/]*)}.freeze
         
     | 
| 
      
 58 
     | 
    
         
            +
                  NAMED_SEGMENTS_PATTERN = %r{\/([^\/]*):([^:$\/]+)}.freeze
         
     | 
| 
      
 59 
     | 
    
         
            +
                  LEADING_SLASH_PATTERN = %r{^\/}.freeze
         
     | 
| 
       47 
60 
     | 
    
         
             
                  INTERPOLATION_PATTERN = Regexp.union(
         
     | 
| 
       48 
61 
     | 
    
         
             
                    /%%/,
         
     | 
| 
       49 
     | 
    
         
            -
                    /%\{(\w+)\} 
     | 
| 
      
 62 
     | 
    
         
            +
                    /%\{(\w+)\}/ # matches placeholders like "%{foo}"
         
     | 
| 
       50 
63 
     | 
    
         
             
                  )
         
     | 
| 
       51 
64 
     | 
    
         | 
| 
       52 
65 
     | 
    
         
             
                  attr_reader :path_pattern, :asset_pattern
         
     | 
    
        data/lib/serviceworker/router.rb
    CHANGED
    
    
    
        data/serviceworker-rails.gemspec
    CHANGED
    
    | 
         @@ -1,5 +1,6 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #  
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            lib = File.expand_path("lib", __dir__)
         
     | 
| 
       3 
4 
     | 
    
         
             
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         
     | 
| 
       4 
5 
     | 
    
         
             
            require "serviceworker/rails/version"
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
         @@ -21,13 +22,12 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       21 
22 
     | 
    
         | 
| 
       22 
23 
     | 
    
         
             
              spec.add_dependency "railties", [">= 3.1"]
         
     | 
| 
       23 
24 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
              spec.add_development_dependency " 
     | 
| 
       25 
     | 
    
         
            -
              spec.add_development_dependency "bundler", "~> 1.11"
         
     | 
| 
       26 
     | 
    
         
            -
              spec.add_development_dependency "rake", "~> 11.0"
         
     | 
| 
      
 25 
     | 
    
         
            +
              spec.add_development_dependency "appraisal", "~> 2.1.0"
         
     | 
| 
       27 
26 
     | 
    
         
             
              spec.add_development_dependency "minitest", "~> 5.0"
         
     | 
| 
       28 
27 
     | 
    
         
             
              spec.add_development_dependency "rack-test"
         
     | 
| 
       29 
     | 
    
         
            -
              spec.add_development_dependency "rubocop", "0.46.0"
         
     | 
| 
       30 
28 
     | 
    
         
             
              spec.add_development_dependency "rails"
         
     | 
| 
       31 
     | 
    
         
            -
              spec.add_development_dependency " 
     | 
| 
      
 29 
     | 
    
         
            +
              spec.add_development_dependency "rake"
         
     | 
| 
      
 30 
     | 
    
         
            +
              spec.add_development_dependency "rubocop"
         
     | 
| 
       32 
31 
     | 
    
         
             
              spec.add_development_dependency "simplecov"
         
     | 
| 
      
 32 
     | 
    
         
            +
              spec.add_development_dependency "sprockets-rails"
         
     | 
| 
       33 
33 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: serviceworker-rails
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.6.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Ross Kaffenberger
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2019-07-09 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: railties
         
     | 
| 
         @@ -25,63 +25,49 @@ dependencies: 
     | 
|
| 
       25 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
26 
     | 
    
         
             
                    version: '3.1'
         
     | 
| 
       27 
27 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       28 
     | 
    
         
            -
              name:  
     | 
| 
       29 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       30 
     | 
    
         
            -
                requirements:
         
     | 
| 
       31 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       32 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       33 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
       34 
     | 
    
         
            -
              type: :development
         
     | 
| 
       35 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       36 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       37 
     | 
    
         
            -
                requirements:
         
     | 
| 
       38 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       39 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       40 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
       41 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       42 
     | 
    
         
            -
              name: bundler
         
     | 
| 
      
 28 
     | 
    
         
            +
              name: appraisal
         
     | 
| 
       43 
29 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       44 
30 
     | 
    
         
             
                requirements:
         
     | 
| 
       45 
31 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       46 
32 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       47 
     | 
    
         
            -
                    version:  
     | 
| 
      
 33 
     | 
    
         
            +
                    version: 2.1.0
         
     | 
| 
       48 
34 
     | 
    
         
             
              type: :development
         
     | 
| 
       49 
35 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       50 
36 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       51 
37 
     | 
    
         
             
                requirements:
         
     | 
| 
       52 
38 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       53 
39 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       54 
     | 
    
         
            -
                    version:  
     | 
| 
      
 40 
     | 
    
         
            +
                    version: 2.1.0
         
     | 
| 
       55 
41 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       56 
     | 
    
         
            -
              name:  
     | 
| 
      
 42 
     | 
    
         
            +
              name: minitest
         
     | 
| 
       57 
43 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       58 
44 
     | 
    
         
             
                requirements:
         
     | 
| 
       59 
45 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       60 
46 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       61 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 47 
     | 
    
         
            +
                    version: '5.0'
         
     | 
| 
       62 
48 
     | 
    
         
             
              type: :development
         
     | 
| 
       63 
49 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       64 
50 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       65 
51 
     | 
    
         
             
                requirements:
         
     | 
| 
       66 
52 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       67 
53 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       68 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 54 
     | 
    
         
            +
                    version: '5.0'
         
     | 
| 
       69 
55 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       70 
     | 
    
         
            -
              name:  
     | 
| 
      
 56 
     | 
    
         
            +
              name: rack-test
         
     | 
| 
       71 
57 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       72 
58 
     | 
    
         
             
                requirements:
         
     | 
| 
       73 
     | 
    
         
            -
                - - " 
     | 
| 
      
 59 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       74 
60 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       75 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 61 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       76 
62 
     | 
    
         
             
              type: :development
         
     | 
| 
       77 
63 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       78 
64 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       79 
65 
     | 
    
         
             
                requirements:
         
     | 
| 
       80 
     | 
    
         
            -
                - - " 
     | 
| 
      
 66 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       81 
67 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       82 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 68 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       83 
69 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       84 
     | 
    
         
            -
              name:  
     | 
| 
      
 70 
     | 
    
         
            +
              name: rails
         
     | 
| 
       85 
71 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       86 
72 
     | 
    
         
             
                requirements:
         
     | 
| 
       87 
73 
     | 
    
         
             
                - - ">="
         
     | 
| 
         @@ -95,21 +81,21 @@ dependencies: 
     | 
|
| 
       95 
81 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       96 
82 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       97 
83 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       98 
     | 
    
         
            -
              name:  
     | 
| 
      
 84 
     | 
    
         
            +
              name: rake
         
     | 
| 
       99 
85 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       100 
86 
     | 
    
         
             
                requirements:
         
     | 
| 
       101 
     | 
    
         
            -
                - -  
     | 
| 
      
 87 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       102 
88 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       103 
     | 
    
         
            -
                    version: 0 
     | 
| 
      
 89 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       104 
90 
     | 
    
         
             
              type: :development
         
     | 
| 
       105 
91 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       106 
92 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       107 
93 
     | 
    
         
             
                requirements:
         
     | 
| 
       108 
     | 
    
         
            -
                - -  
     | 
| 
      
 94 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       109 
95 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       110 
     | 
    
         
            -
                    version: 0 
     | 
| 
      
 96 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       111 
97 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       112 
     | 
    
         
            -
              name:  
     | 
| 
      
 98 
     | 
    
         
            +
              name: rubocop
         
     | 
| 
       113 
99 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       114 
100 
     | 
    
         
             
                requirements:
         
     | 
| 
       115 
101 
     | 
    
         
             
                - - ">="
         
     | 
| 
         @@ -123,21 +109,21 @@ dependencies: 
     | 
|
| 
       123 
109 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       124 
110 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       125 
111 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       126 
     | 
    
         
            -
              name:  
     | 
| 
      
 112 
     | 
    
         
            +
              name: simplecov
         
     | 
| 
       127 
113 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       128 
114 
     | 
    
         
             
                requirements:
         
     | 
| 
       129 
     | 
    
         
            -
                - - " 
     | 
| 
      
 115 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       130 
116 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       131 
     | 
    
         
            -
                    version:  
     | 
| 
      
 117 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       132 
118 
     | 
    
         
             
              type: :development
         
     | 
| 
       133 
119 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       134 
120 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       135 
121 
     | 
    
         
             
                requirements:
         
     | 
| 
       136 
     | 
    
         
            -
                - - " 
     | 
| 
      
 122 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       137 
123 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       138 
     | 
    
         
            -
                    version:  
     | 
| 
      
 124 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       139 
125 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       140 
     | 
    
         
            -
              name:  
     | 
| 
      
 126 
     | 
    
         
            +
              name: sprockets-rails
         
     | 
| 
       141 
127 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       142 
128 
     | 
    
         
             
                requirements:
         
     | 
| 
       143 
129 
     | 
    
         
             
                - - ">="
         
     | 
| 
         @@ -175,9 +161,11 @@ files: 
     | 
|
| 
       175 
161 
     | 
    
         
             
            - bin/rake
         
     | 
| 
       176 
162 
     | 
    
         
             
            - bin/rubocop
         
     | 
| 
       177 
163 
     | 
    
         
             
            - bin/setup
         
     | 
| 
       178 
     | 
    
         
            -
            - gemfiles/rails_3.gemfile
         
     | 
| 
       179 
     | 
    
         
            -
            - gemfiles/rails_4.gemfile
         
     | 
| 
       180 
     | 
    
         
            -
            - gemfiles/rails_5.gemfile
         
     | 
| 
      
 164 
     | 
    
         
            +
            - gemfiles/rails_3.2.gemfile
         
     | 
| 
      
 165 
     | 
    
         
            +
            - gemfiles/rails_4.2.gemfile
         
     | 
| 
      
 166 
     | 
    
         
            +
            - gemfiles/rails_5.0.gemfile
         
     | 
| 
      
 167 
     | 
    
         
            +
            - gemfiles/rails_5.1.gemfile
         
     | 
| 
      
 168 
     | 
    
         
            +
            - gemfiles/rails_5.2.gemfile
         
     | 
| 
       181 
169 
     | 
    
         
             
            - lib/assets/images/convert.rb
         
     | 
| 
       182 
170 
     | 
    
         
             
            - lib/assets/images/serviceworker-rails/heart-1200x1200.png
         
     | 
| 
       183 
171 
     | 
    
         
             
            - lib/assets/images/serviceworker-rails/heart-120x120.png
         
     | 
| 
         @@ -201,10 +189,12 @@ files: 
     | 
|
| 
       201 
189 
     | 
    
         
             
            - lib/serviceworker-rails.rb
         
     | 
| 
       202 
190 
     | 
    
         
             
            - lib/serviceworker.rb
         
     | 
| 
       203 
191 
     | 
    
         
             
            - lib/serviceworker/engine.rb
         
     | 
| 
       204 
     | 
    
         
            -
            - lib/serviceworker/ 
     | 
| 
      
 192 
     | 
    
         
            +
            - lib/serviceworker/handlers.rb
         
     | 
| 
      
 193 
     | 
    
         
            +
            - lib/serviceworker/handlers/rack_handler.rb
         
     | 
| 
      
 194 
     | 
    
         
            +
            - lib/serviceworker/handlers/sprockets_handler.rb
         
     | 
| 
      
 195 
     | 
    
         
            +
            - lib/serviceworker/handlers/webpacker_handler.rb
         
     | 
| 
       205 
196 
     | 
    
         
             
            - lib/serviceworker/middleware.rb
         
     | 
| 
       206 
197 
     | 
    
         
             
            - lib/serviceworker/rails.rb
         
     | 
| 
       207 
     | 
    
         
            -
            - lib/serviceworker/rails/handler.rb
         
     | 
| 
       208 
198 
     | 
    
         
             
            - lib/serviceworker/rails/version.rb
         
     | 
| 
       209 
199 
     | 
    
         
             
            - lib/serviceworker/route.rb
         
     | 
| 
       210 
200 
     | 
    
         
             
            - lib/serviceworker/router.rb
         
     | 
| 
         @@ -228,8 +218,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       228 
218 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       229 
219 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       230 
220 
     | 
    
         
             
            requirements: []
         
     | 
| 
       231 
     | 
    
         
            -
             
     | 
| 
       232 
     | 
    
         
            -
            rubygems_version: 2.5.2
         
     | 
| 
      
 221 
     | 
    
         
            +
            rubygems_version: 3.0.3
         
     | 
| 
       233 
222 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       234 
223 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       235 
224 
     | 
    
         
             
            summary: ServiceWorker for Rails 3+
         
     | 
| 
         @@ -1,22 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
            module ServiceWorker
         
     | 
| 
       3 
     | 
    
         
            -
              class Handler
         
     | 
| 
       4 
     | 
    
         
            -
                def initialize(root = Dir.getwd)
         
     | 
| 
       5 
     | 
    
         
            -
                  @root = root
         
     | 
| 
       6 
     | 
    
         
            -
                end
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                def call(env)
         
     | 
| 
       9 
     | 
    
         
            -
                  path_info = env.fetch("serviceworker.asset_name")
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
                  file_server.call(env.merge("PATH_INFO" => path_info))
         
     | 
| 
       12 
     | 
    
         
            -
                end
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                def file_path(path_info)
         
     | 
| 
       15 
     | 
    
         
            -
                  @root.join(path_info)
         
     | 
| 
       16 
     | 
    
         
            -
                end
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                def file_server
         
     | 
| 
       19 
     | 
    
         
            -
                  @file_server ||= ::Rack::File.new(@root)
         
     | 
| 
       20 
     | 
    
         
            -
                end
         
     | 
| 
       21 
     | 
    
         
            -
              end
         
     | 
| 
       22 
     | 
    
         
            -
            end
         
     |