inertia_rails 1.11.1 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/generators/inertia_rails/install/svelte/InertiaExample.svelte +11 -0
- data/lib/generators/inertia_rails/install/svelte/inertia.js +19 -0
- data/lib/generators/inertia_rails/install_generator.rb +10 -0
- data/lib/inertia_rails/controller.rb +2 -0
- data/lib/inertia_rails/helper.rb +7 -0
- data/lib/inertia_rails/inertia_rails.rb +20 -0
- data/lib/inertia_rails/renderer.rb +12 -0
- data/lib/inertia_rails/version.rb +1 -1
- metadata +10 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 468c8c88d85da84a010be47c474e9d8d1ed4735d5d83cd8058038401e322334c
|
4
|
+
data.tar.gz: ce4ccdf41063f88495e8829dbefc4eb92936850d9f4da8a4f51e907eff9f90f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a097f6f871a2b7b294e5e497d051c8d677230f8a600e4a602a73b742e76bce34686b7b76d3287bb2d5af897a3254a6d368b03a672c0830779b7753f9284a0f0
|
7
|
+
data.tar.gz: caa62abc7dab0b7abe669b3735a4381e7ee1af3b705983b386059c4a0938a9df6a26f274f85169dbdf55a76bb4a06383e6930e22464035ef29fb6492af36bd2d
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
|
|
4
4
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
5
5
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
6
6
|
|
7
|
+
## [1.12.0] - 2022-05-04
|
8
|
+
|
9
|
+
* SSR!
|
10
|
+
|
7
11
|
## [1.11.1] - 2021-06-27
|
8
12
|
|
9
13
|
* Fixed thread safety in the middleware. Thanks @caifara!
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import axios from 'axios'
|
2
|
+
|
3
|
+
import { createInertiaApp } from '@inertiajs/inertia-svelte'
|
4
|
+
import { InertiaProgress } from '@inertiajs/progress'
|
5
|
+
|
6
|
+
document.addEventListener('DOMContentLoaded', () => {
|
7
|
+
const csrfToken = document.querySelector('meta[name=csrf-token]').content
|
8
|
+
axios.defaults.headers.common['X-CSRF-Token'] = csrfToken
|
9
|
+
|
10
|
+
InertiaProgress.init()
|
11
|
+
|
12
|
+
createInertiaApp({
|
13
|
+
id: 'app',
|
14
|
+
resolve: name => import(`../Pages/${name}.svelte`),
|
15
|
+
setup({ el, App, props }) {
|
16
|
+
new App({ target: el, props })
|
17
|
+
},
|
18
|
+
})
|
19
|
+
})
|
@@ -6,6 +6,7 @@ module InertiaRails
|
|
6
6
|
FRONT_END_INSTALLERS = [
|
7
7
|
'react',
|
8
8
|
'vue',
|
9
|
+
'svelte',
|
9
10
|
]
|
10
11
|
|
11
12
|
def install
|
@@ -70,5 +71,14 @@ module InertiaRails
|
|
70
71
|
template "vue/inertia.js", Rails.root.join("app/javascript/packs/inertia.js").to_s
|
71
72
|
say "done!", :green
|
72
73
|
end
|
74
|
+
|
75
|
+
def install_svelte!
|
76
|
+
say "Creating a Svelte page component...", :blue
|
77
|
+
run 'yarn add @inertiajs/inertia-svelte'
|
78
|
+
template "svelte/InertiaExample.svelte", Rails.root.join("app/javascript/Pages/InertiaExample.svelte").to_s
|
79
|
+
say "Copying inertia.js into webpacker's packs folder...", :blue
|
80
|
+
template "svelte/inertia.js", Rails.root.join("app/javascript/packs/inertia.js").to_s
|
81
|
+
say "done!", :green
|
82
|
+
end
|
73
83
|
end
|
74
84
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require_relative "inertia_rails"
|
2
|
+
require_relative "helper"
|
2
3
|
|
3
4
|
module InertiaRails
|
4
5
|
module Controller
|
@@ -9,6 +10,7 @@ module InertiaRails
|
|
9
10
|
# :inertia_errors are deleted from the session by the middleware
|
10
11
|
InertiaRails.share(errors: session[:inertia_errors]) if session[:inertia_errors].present?
|
11
12
|
end
|
13
|
+
helper ::InertiaRails::Helper
|
12
14
|
end
|
13
15
|
|
14
16
|
module ClassMethods
|
@@ -5,6 +5,7 @@ require 'inertia_rails/lazy'
|
|
5
5
|
module InertiaRails
|
6
6
|
thread_mattr_accessor :threadsafe_shared_plain_data
|
7
7
|
thread_mattr_accessor :threadsafe_shared_blocks
|
8
|
+
thread_mattr_accessor :threadsafe_html_headers
|
8
9
|
|
9
10
|
def self.configure
|
10
11
|
yield(Configuration)
|
@@ -23,6 +24,18 @@ module InertiaRails
|
|
23
24
|
Configuration.layout
|
24
25
|
end
|
25
26
|
|
27
|
+
def self.ssr_enabled?
|
28
|
+
Configuration.ssr_enabled
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.ssr_url
|
32
|
+
Configuration.ssr_url
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.html_headers
|
36
|
+
self.threadsafe_html_headers || []
|
37
|
+
end
|
38
|
+
|
26
39
|
# "Setters"
|
27
40
|
def self.share(**args)
|
28
41
|
self.shared_plain_data = self.shared_plain_data.merge(args)
|
@@ -32,9 +45,14 @@ module InertiaRails
|
|
32
45
|
self.shared_blocks = self.shared_blocks + [block]
|
33
46
|
end
|
34
47
|
|
48
|
+
def self.html_headers=(headers)
|
49
|
+
self.threadsafe_html_headers = headers
|
50
|
+
end
|
51
|
+
|
35
52
|
def self.reset!
|
36
53
|
self.shared_plain_data = {}
|
37
54
|
self.shared_blocks = []
|
55
|
+
self.html_headers = []
|
38
56
|
end
|
39
57
|
|
40
58
|
def self.lazy(value = nil, &block)
|
@@ -46,6 +64,8 @@ module InertiaRails
|
|
46
64
|
module Configuration
|
47
65
|
mattr_accessor(:layout) { 'application' }
|
48
66
|
mattr_accessor(:version) { nil }
|
67
|
+
mattr_accessor(:ssr_enabled) { false }
|
68
|
+
mattr_accessor(:ssr_url) { 'http://localhost:13714' }
|
49
69
|
|
50
70
|
def self.evaluated_version
|
51
71
|
self.version.respond_to?(:call) ? self.version.call : self.version
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'json'
|
1
3
|
require_relative "inertia_rails"
|
2
4
|
|
3
5
|
module InertiaRails
|
@@ -15,6 +17,8 @@ module InertiaRails
|
|
15
17
|
end
|
16
18
|
|
17
19
|
def render
|
20
|
+
return render_ssr if ::InertiaRails.ssr_enabled?
|
21
|
+
|
18
22
|
if @request.headers['X-Inertia']
|
19
23
|
@response.set_header('Vary', 'Accept')
|
20
24
|
@response.set_header('X-Inertia', 'true')
|
@@ -26,6 +30,14 @@ module InertiaRails
|
|
26
30
|
|
27
31
|
private
|
28
32
|
|
33
|
+
def render_ssr
|
34
|
+
uri = URI("#{::InertiaRails.ssr_url}/render")
|
35
|
+
res = JSON.parse(Net::HTTP.post(uri, page.to_json, 'Content-Type' => 'application/json').body)
|
36
|
+
|
37
|
+
::InertiaRails.html_headers = res['head']
|
38
|
+
@render_method.call html: res['body'].html_safe, layout: ::InertiaRails.layout, locals: (view_data).merge({page: page})
|
39
|
+
end
|
40
|
+
|
29
41
|
def props
|
30
42
|
_props = ::InertiaRails.shared_data(@controller).merge(@props).select do |key, prop|
|
31
43
|
if rendering_partial_component?
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inertia_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Knoles
|
8
8
|
- Brandon Shar
|
9
9
|
- Eugene Granovsky
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2022-05-04 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
@@ -124,7 +124,7 @@ dependencies:
|
|
124
124
|
- - ">="
|
125
125
|
- !ruby/object:Gem::Version
|
126
126
|
version: '0'
|
127
|
-
description:
|
127
|
+
description:
|
128
128
|
email:
|
129
129
|
- brain@bellawatt.com
|
130
130
|
- brandon@bellawatt.com
|
@@ -156,12 +156,15 @@ files:
|
|
156
156
|
- lib/generators/inertia_rails/install/controller.rb
|
157
157
|
- lib/generators/inertia_rails/install/react/InertiaExample.jsx
|
158
158
|
- lib/generators/inertia_rails/install/react/inertia.jsx
|
159
|
+
- lib/generators/inertia_rails/install/svelte/InertiaExample.svelte
|
160
|
+
- lib/generators/inertia_rails/install/svelte/inertia.js
|
159
161
|
- lib/generators/inertia_rails/install/vue/InertiaExample.vue
|
160
162
|
- lib/generators/inertia_rails/install/vue/inertia.js
|
161
163
|
- lib/generators/inertia_rails/install_generator.rb
|
162
164
|
- lib/inertia_rails.rb
|
163
165
|
- lib/inertia_rails/controller.rb
|
164
166
|
- lib/inertia_rails/engine.rb
|
167
|
+
- lib/inertia_rails/helper.rb
|
165
168
|
- lib/inertia_rails/inertia_rails.rb
|
166
169
|
- lib/inertia_rails/lazy.rb
|
167
170
|
- lib/inertia_rails/middleware.rb
|
@@ -182,7 +185,7 @@ metadata:
|
|
182
185
|
homepage_uri: https://github.com/inertiajs/inertia-rails
|
183
186
|
source_code_uri: https://github.com/inertiajs/inertia-rails
|
184
187
|
changelog_uri: https://github.com/inertiajs/inertia-rails/CHANGELOG.md
|
185
|
-
post_install_message:
|
188
|
+
post_install_message:
|
186
189
|
rdoc_options: []
|
187
190
|
require_paths:
|
188
191
|
- lib
|
@@ -197,8 +200,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
197
200
|
- !ruby/object:Gem::Version
|
198
201
|
version: '0'
|
199
202
|
requirements: []
|
200
|
-
rubygems_version: 3.
|
201
|
-
signing_key:
|
203
|
+
rubygems_version: 3.3.3
|
204
|
+
signing_key:
|
202
205
|
specification_version: 4
|
203
206
|
summary: Inertia adapter for Rails
|
204
207
|
test_files: []
|