unpoly-rails 3.0.0.rc2 → 3.0.0.rc3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/assets/unpoly/unpoly-migrate.js +46 -13
- data/assets/unpoly/unpoly-migrate.min.js +1 -1
- data/assets/unpoly/unpoly.es6.js +373 -327
- data/assets/unpoly/unpoly.es6.min.js +1 -1
- data/assets/unpoly/unpoly.js +356 -326
- data/assets/unpoly/unpoly.min.js +1 -1
- data/lib/unpoly/rails/change/field.rb +4 -4
- data/lib/unpoly/rails/change/layer.rb +3 -3
- data/lib/unpoly/rails/change.rb +1 -1
- data/lib/unpoly/rails/request_echo_headers.rb +6 -2
- data/lib/unpoly/rails/util.rb +25 -0
- data/lib/unpoly/rails/version.rb +1 -1
- data/lib/unpoly-rails.rb +1 -0
- metadata +3 -2
| @@ -102,7 +102,7 @@ module Unpoly | |
| 102 102 |  | 
| 103 103 | 
             
                      def parse(raw)
         | 
| 104 104 | 
             
                        if raw.present?
         | 
| 105 | 
            -
                          result =  | 
| 105 | 
            +
                          result = Util.json_decode(raw)
         | 
| 106 106 | 
             
                        elsif @default
         | 
| 107 107 | 
             
                          result = instance_exec(&@default)
         | 
| 108 108 | 
             
                        end
         | 
| @@ -116,7 +116,7 @@ module Unpoly | |
| 116 116 |  | 
| 117 117 | 
             
                      def stringify(value)
         | 
| 118 118 | 
             
                        unless value.nil?
         | 
| 119 | 
            -
                           | 
| 119 | 
            +
                          Util.safe_json_encode(value)
         | 
| 120 120 | 
             
                        end
         | 
| 121 121 | 
             
                      end
         | 
| 122 122 |  | 
| @@ -133,7 +133,7 @@ module Unpoly | |
| 133 133 |  | 
| 134 134 | 
             
                      def parse(raw)
         | 
| 135 135 | 
             
                        if raw.present?
         | 
| 136 | 
            -
                          result =  | 
| 136 | 
            +
                          result = Util.json_decode(raw)
         | 
| 137 137 | 
             
                        elsif @default
         | 
| 138 138 | 
             
                          result = instance_exec(&@default)
         | 
| 139 139 | 
             
                        end
         | 
| @@ -143,7 +143,7 @@ module Unpoly | |
| 143 143 |  | 
| 144 144 | 
             
                      def stringify(value)
         | 
| 145 145 | 
             
                        unless value.nil?
         | 
| 146 | 
            -
                           | 
| 146 | 
            +
                          Util.safe_json_encode(value)
         | 
| 147 147 | 
             
                        end
         | 
| 148 148 | 
             
                      end
         | 
| 149 149 |  | 
| @@ -40,14 +40,14 @@ module Unpoly | |
| 40 40 | 
             
                    # TODO: Docs
         | 
| 41 41 | 
             
                    def accept(value = nil)
         | 
| 42 42 | 
             
                      overlay? or raise CannotClose, 'Cannot accept the root layer'
         | 
| 43 | 
            -
                      change.response.headers['X-Up-Accept-Layer'] = value | 
| 43 | 
            +
                      change.response.headers['X-Up-Accept-Layer'] = Util.safe_json_encode(value)
         | 
| 44 44 | 
             
                    end
         | 
| 45 45 |  | 
| 46 46 | 
             
                    ##
         | 
| 47 47 | 
             
                    # TODO: Docs
         | 
| 48 48 | 
             
                    def dismiss(value = nil)
         | 
| 49 49 | 
             
                      overlay? or raise CannotClose, 'Cannot dismiss the root layer'
         | 
| 50 | 
            -
                      change.response.headers['X-Up-Dismiss-Layer'] = value | 
| 50 | 
            +
                      change.response.headers['X-Up-Dismiss-Layer'] = Util.safe_json_encode(value)
         | 
| 51 51 | 
             
                    end
         | 
| 52 52 |  | 
| 53 53 | 
             
                    private
         | 
| @@ -57,4 +57,4 @@ module Unpoly | |
| 57 57 | 
             
                  end
         | 
| 58 58 | 
             
                end
         | 
| 59 59 | 
             
              end
         | 
| 60 | 
            -
            end
         | 
| 60 | 
            +
            end
         | 
    
        data/lib/unpoly/rails/change.rb
    CHANGED
    
    | @@ -243,7 +243,7 @@ module Unpoly | |
| 243 243 | 
             
                  def title=(new_title)
         | 
| 244 244 | 
             
                    # We don't make this a field since it belongs to *this* response
         | 
| 245 245 | 
             
                    # and should not survive a redirect.
         | 
| 246 | 
            -
                    response.headers['X-Up-Title'] = new_title
         | 
| 246 | 
            +
                    response.headers['X-Up-Title'] = Util.safe_json_encode(new_title)
         | 
| 247 247 | 
             
                  end
         | 
| 248 248 |  | 
| 249 249 | 
             
                  def after_action
         | 
| @@ -18,9 +18,13 @@ module Unpoly | |
| 18 18 | 
             
                  end
         | 
| 19 19 |  | 
| 20 20 | 
             
                  private
         | 
| 21 | 
            -
             | 
| 21 | 
            +
             | 
| 22 22 | 
             
                  def set_up_request_echo_headers
         | 
| 23 | 
            -
                     | 
| 23 | 
            +
                    request_url_without_up_params = up.request_url_without_up_params
         | 
| 24 | 
            +
                    unless request_url_without_up_params == request.original_url
         | 
| 25 | 
            +
                      response.headers['X-Up-Location'] = up.request_url_without_up_params
         | 
| 26 | 
            +
                    end
         | 
| 27 | 
            +
             | 
| 24 28 | 
             
                    response.headers['X-Up-Method'] = request.method
         | 
| 25 29 | 
             
                  end
         | 
| 26 30 |  | 
| @@ -0,0 +1,25 @@ | |
| 1 | 
            +
            module Unpoly
         | 
| 2 | 
            +
              module Rails
         | 
| 3 | 
            +
                class Util
         | 
| 4 | 
            +
                  class << self
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                    def json_decode(string)
         | 
| 7 | 
            +
                      ActiveSupport::JSON.decode(string)
         | 
| 8 | 
            +
                    end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                    # We build a lot of JSON that goes into HTTP header.
         | 
| 11 | 
            +
                    # High-ascii characters are not safe to transport over HTTP, but we
         | 
| 12 | 
            +
                    # can use JSON escape sequences (\u0012) to make them low-ascii.
         | 
| 13 | 
            +
                    def safe_json_encode(value)
         | 
| 14 | 
            +
                      json = ActiveSupport::JSON.encode(value)
         | 
| 15 | 
            +
                      escape_non_ascii(json)
         | 
| 16 | 
            +
                    end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                    def escape_non_ascii(unicode_string)
         | 
| 19 | 
            +
                      unicode_string.gsub(/[[:^ascii:]]/) { |char| "\\u" + char.ord.to_s(16).rjust(4, "0") }
         | 
| 20 | 
            +
                    end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
            end
         | 
    
        data/lib/unpoly/rails/version.rb
    CHANGED
    
    
    
        data/lib/unpoly-rails.rb
    CHANGED
    
    | @@ -1,6 +1,7 @@ | |
| 1 1 | 
             
            require 'memoized'
         | 
| 2 2 | 
             
            require_relative 'unpoly/rails/version'
         | 
| 3 3 | 
             
            require_relative 'unpoly/rails/error'
         | 
| 4 | 
            +
            require_relative 'unpoly/rails/util'
         | 
| 4 5 | 
             
            require_relative 'unpoly/rails/engine'
         | 
| 5 6 | 
             
            require_relative 'unpoly/rails/request_echo_headers'
         | 
| 6 7 | 
             
            require_relative 'unpoly/rails/request_method_cookie'
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: unpoly-rails
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 3.0.0. | 
| 4 | 
            +
              version: 3.0.0.rc3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Henning Koch
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2023- | 
| 11 | 
            +
            date: 2023-04-12 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: railties
         | 
| @@ -136,6 +136,7 @@ files: | |
| 136 136 | 
             
            - lib/unpoly/rails/error.rb
         | 
| 137 137 | 
             
            - lib/unpoly/rails/request_echo_headers.rb
         | 
| 138 138 | 
             
            - lib/unpoly/rails/request_method_cookie.rb
         | 
| 139 | 
            +
            - lib/unpoly/rails/util.rb
         | 
| 139 140 | 
             
            - lib/unpoly/rails/version.rb
         | 
| 140 141 | 
             
            homepage: https://github.com/unpoly/unpoly-rails
         | 
| 141 142 | 
             
            licenses:
         |