sinatra-kagero 1.0.1 → 1.0.2
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 +5 -0
- data/lib/sinatra/kagero/runtime.rb +9 -1
- data/lib/sinatra/kagero/version.rb +1 -1
- data/runtime/kagero.js +9 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6f7387c7811a71ac630427e87886f19c0c4600d2a6f94afc8bb356395cb5af53
|
|
4
|
+
data.tar.gz: 607a20b6823c5905d807d95c119951b9be974edf50f3ca089c726482e631872d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5e905a9e0543d1f1b08e53a2d45eff24a48b367b45a0a57f3b342825470d5ef96677f4a20f3a8947bf956c1c8171f5ab8d0671edef4c2d919507682e943ce717
|
|
7
|
+
data.tar.gz: 6f48eb473d1d374ac5937b9da0ecd80abecde61469b1cac88f05d4ef6cccbacc947133908794230392addee7ef48ef3bd9c792ff982587f6c66971febaea59f0
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.0.2 — 2026-06-26
|
|
4
|
+
|
|
5
|
+
- Submit regular Kagero forms as UTF-8 URL-encoded bodies, preserving
|
|
6
|
+
non-ASCII text on Workers while keeping multipart for file forms.
|
|
7
|
+
|
|
3
8
|
## 1.0.1 — 2026-06-26
|
|
4
9
|
|
|
5
10
|
- Add a thin top loading bar to the browser runtime while Kagero SPA visits
|
|
@@ -148,7 +148,15 @@ module Sinatra
|
|
|
148
148
|
function formBody(form) {
|
|
149
149
|
const method = (form.getAttribute("method") || "GET").toUpperCase();
|
|
150
150
|
if (method === "GET") return null;
|
|
151
|
-
|
|
151
|
+
|
|
152
|
+
const enctype = (form.getAttribute("enctype") || "").toLowerCase();
|
|
153
|
+
const data = new FormData(form);
|
|
154
|
+
const hasFile = Array.from(data.values()).some((value) => value instanceof File);
|
|
155
|
+
if (enctype === "multipart/form-data" || hasFile) return data;
|
|
156
|
+
|
|
157
|
+
const params = new URLSearchParams();
|
|
158
|
+
for (const [key, value] of data.entries()) params.append(key, value);
|
|
159
|
+
return params;
|
|
152
160
|
}
|
|
153
161
|
|
|
154
162
|
function formUrl(form) {
|
data/runtime/kagero.js
CHANGED
|
@@ -143,7 +143,15 @@ async function visit(url, options = {}) {
|
|
|
143
143
|
function formBody(form) {
|
|
144
144
|
const method = (form.getAttribute("method") || "GET").toUpperCase();
|
|
145
145
|
if (method === "GET") return null;
|
|
146
|
-
|
|
146
|
+
|
|
147
|
+
const enctype = (form.getAttribute("enctype") || "").toLowerCase();
|
|
148
|
+
const data = new FormData(form);
|
|
149
|
+
const hasFile = Array.from(data.values()).some((value) => value instanceof File);
|
|
150
|
+
if (enctype === "multipart/form-data" || hasFile) return data;
|
|
151
|
+
|
|
152
|
+
const params = new URLSearchParams();
|
|
153
|
+
for (const [key, value] of data.entries()) params.append(key, value);
|
|
154
|
+
return params;
|
|
147
155
|
}
|
|
148
156
|
|
|
149
157
|
function formUrl(form) {
|