requestjs-rails 0.0.10 → 0.0.12
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/app/assets/javascripts/requestjs.js +31 -3
- data/lib/requestjs/version.rb +1 -1
- metadata +10 -10
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 20cef8fde0fc81345d4531747a97e20a7b14a74cbc30cbf91777d9e1bb34f1fa
|
|
4
|
+
data.tar.gz: 0ff9c29c05b34c81f9e0a24a05f6e53830095e3e93c45baaf9f0c220d72819dc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 41b0ab104a2dfc9061c2d40a9adf3530db9f2004a5f3997de9c270ebe82caa8a03e87304cdaaddae71fd82a98359043d81b5fe6799a3a79fc1fd668ec2344abc
|
|
7
|
+
data.tar.gz: e6ce7d0d1bd2fbd31494f0e5eefb6272a05aeb30280c877dfdf4ff4a1add6aadf3be553d665c0584837db8ebfbfc741df96af2b6ed9ceb417e2532f6f5b2fd49
|
|
@@ -45,6 +45,9 @@ class FetchResponse {
|
|
|
45
45
|
get isTurboStream() {
|
|
46
46
|
return this.contentType.match(/^text\/vnd\.turbo-stream\.html/);
|
|
47
47
|
}
|
|
48
|
+
get isScript() {
|
|
49
|
+
return this.contentType.match(/\b(?:java|ecma)script\b/);
|
|
50
|
+
}
|
|
48
51
|
async renderTurboStream() {
|
|
49
52
|
if (this.isTurboStream) {
|
|
50
53
|
if (window.Turbo) {
|
|
@@ -56,6 +59,20 @@ class FetchResponse {
|
|
|
56
59
|
return Promise.reject(new Error(`Expected a Turbo Stream response but got "${this.contentType}" instead`));
|
|
57
60
|
}
|
|
58
61
|
}
|
|
62
|
+
async activeScript() {
|
|
63
|
+
if (this.isScript) {
|
|
64
|
+
const script = document.createElement("script");
|
|
65
|
+
const metaTag = document.querySelector("meta[name=csp-nonce]");
|
|
66
|
+
const nonce = metaTag && metaTag.content;
|
|
67
|
+
if (nonce) {
|
|
68
|
+
script.setAttribute("nonce", nonce);
|
|
69
|
+
}
|
|
70
|
+
script.innerHTML = await this.text;
|
|
71
|
+
document.body.appendChild(script);
|
|
72
|
+
} else {
|
|
73
|
+
return Promise.reject(new Error(`Expected a Script response but got "${this.contentType}" instead`));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
59
76
|
}
|
|
60
77
|
|
|
61
78
|
class RequestInterceptor {
|
|
@@ -129,11 +146,16 @@ class FetchRequest {
|
|
|
129
146
|
} catch (error) {
|
|
130
147
|
console.error(error);
|
|
131
148
|
}
|
|
132
|
-
const
|
|
149
|
+
const fetch = this.responseKind === "turbo-stream" && window.Turbo ? window.Turbo.fetch : window.fetch;
|
|
150
|
+
const response = new FetchResponse(await fetch(this.url, this.fetchOptions));
|
|
133
151
|
if (response.unauthenticated && response.authenticationURL) {
|
|
134
152
|
return Promise.reject(window.location.href = response.authenticationURL);
|
|
135
153
|
}
|
|
136
|
-
if (response.
|
|
154
|
+
if (response.isScript) {
|
|
155
|
+
await response.activeScript();
|
|
156
|
+
}
|
|
157
|
+
const responseStatusIsTurboStreamable = response.ok || response.unprocessableEntity;
|
|
158
|
+
if (responseStatusIsTurboStreamable && response.isTurboStream) {
|
|
137
159
|
await response.renderTurboStream();
|
|
138
160
|
}
|
|
139
161
|
return response;
|
|
@@ -159,7 +181,7 @@ class FetchRequest {
|
|
|
159
181
|
headers: this.headers,
|
|
160
182
|
body: this.formattedBody,
|
|
161
183
|
signal: this.signal,
|
|
162
|
-
credentials:
|
|
184
|
+
credentials: this.credentials,
|
|
163
185
|
redirect: this.redirect
|
|
164
186
|
};
|
|
165
187
|
}
|
|
@@ -198,6 +220,9 @@ class FetchRequest {
|
|
|
198
220
|
case "json":
|
|
199
221
|
return "application/json, application/vnd.api+json";
|
|
200
222
|
|
|
223
|
+
case "script":
|
|
224
|
+
return "text/javascript, application/javascript";
|
|
225
|
+
|
|
201
226
|
default:
|
|
202
227
|
return "*/*";
|
|
203
228
|
}
|
|
@@ -232,6 +257,9 @@ class FetchRequest {
|
|
|
232
257
|
get redirect() {
|
|
233
258
|
return this.options.redirect || "follow";
|
|
234
259
|
}
|
|
260
|
+
get credentials() {
|
|
261
|
+
return this.options.credentials || "same-origin";
|
|
262
|
+
}
|
|
235
263
|
get additionalHeaders() {
|
|
236
264
|
return this.options.headers || {};
|
|
237
265
|
}
|
data/lib/requestjs/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: requestjs-rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.12
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Marcelo Lauxen
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2024-09-03 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
14
|
+
name: railties
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 6.
|
|
19
|
+
version: 6.1.0
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 6.
|
|
27
|
-
description:
|
|
26
|
+
version: 6.1.0
|
|
27
|
+
description:
|
|
28
28
|
email: marcelolauxen16@gmail.com
|
|
29
29
|
executables: []
|
|
30
30
|
extensions: []
|
|
@@ -46,7 +46,7 @@ homepage: https://github.com/marcelolx/requestjs-rails
|
|
|
46
46
|
licenses:
|
|
47
47
|
- MIT
|
|
48
48
|
metadata: {}
|
|
49
|
-
post_install_message:
|
|
49
|
+
post_install_message:
|
|
50
50
|
rdoc_options: []
|
|
51
51
|
require_paths:
|
|
52
52
|
- lib
|
|
@@ -61,8 +61,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
61
61
|
- !ruby/object:Gem::Version
|
|
62
62
|
version: '0'
|
|
63
63
|
requirements: []
|
|
64
|
-
rubygems_version: 3.
|
|
65
|
-
signing_key:
|
|
64
|
+
rubygems_version: 3.5.3
|
|
65
|
+
signing_key:
|
|
66
66
|
specification_version: 4
|
|
67
67
|
summary: A tiny Fetch API wrapper that allows you to make http requests without need
|
|
68
68
|
to handle to send the CSRF Token on every request
|