summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJuan Carlos <juancarlospaco@gmail.com>2022-11-28 17:15:44 -0300
committerGitHub <noreply@github.com>2022-11-28 15:15:44 -0500
commitdd57410afe0eec3140b26493844cc76c586dfcfd (patch)
treeeabffddcb7aa2f311d702bea08c2a2920f3881fc
parent8a68ed65d00d456198c8724b8e579a929233419b (diff)
downloadNim-dd57410afe0eec3140b26493844cc76c586dfcfd.tar.gz
Improve jsformdata (#20929)
* jsformdata now accepts Blob data type similar to JS

* jsformdata now accepts Blob data type similar to JS
-rw-r--r--changelog.md2
-rw-r--r--lib/std/jsformdata.nim16
2 files changed, 12 insertions, 6 deletions
diff --git a/changelog.md b/changelog.md
index 1c49b2e55..fbf7e46ad 100644
--- a/changelog.md
+++ b/changelog.md
@@ -133,6 +133,8 @@
 
 - `std/net.IpAddress` dollar `$` improved, uses a fixed capacity for the `string` result based from the `IpAddressFamily`.
 - `std/jsfetch.newFetchOptions` now has default values for all parameters
+- `std/jsformdata` now accepts `Blob` data type.
+
 
 [//]: # "Additions:"
 - Added ISO 8601 week date utilities in `times`:
diff --git a/lib/std/jsformdata.nim b/lib/std/jsformdata.nim
index 120f8742d..61dcc39a3 100644
--- a/lib/std/jsformdata.nim
+++ b/lib/std/jsformdata.nim
@@ -2,17 +2,21 @@
 when not defined(js):
   {.fatal: "Module jsformdata is designed to be used with the JavaScript backend.".}
 
+from std/dom import Blob
+
 type FormData* = ref object of JsRoot ## FormData API.
 
 func newFormData*(): FormData {.importjs: "new FormData()".}
 
-func add*(self: FormData; name: cstring; value: SomeNumber | bool | cstring) {.importjs: "#.append(#, #)".}
+func add*(self: FormData; name: cstring; value: SomeNumber | bool | cstring | Blob) {.importjs: "#.append(#, #)".}
   ## https://developer.mozilla.org/en-US/docs/Web/API/FormData/append
-  ## Duplicate keys are allowed and order is preserved.
+  ##
+  ## .. hint:: Duplicate keys are allowed and order is preserved.
 
-func add*(self: FormData; name: cstring; value: SomeNumber | bool | cstring, filename: cstring) {.importjs: "#.append(#, #, #)".}
+func add*(self: FormData; name: cstring; value: SomeNumber | bool | cstring | Blob; filename: cstring) {.importjs: "#.append(#, #, #)".}
   ## https://developer.mozilla.org/en-US/docs/Web/API/FormData/append
-  ## Duplicate keys are allowed and order is preserved.
+  ##
+  ## .. hint:: Duplicate keys are allowed and order is preserved.
 
 func delete*(self: FormData; name: cstring) {.importjs: "#.$1(#)".}
   ## https://developer.mozilla.org/en-US/docs/Web/API/FormData/delete
@@ -34,10 +38,10 @@ func values*(self: FormData): seq[cstring] {.importjs: "Array.from(#.$1())".}
 func pairs*(self: FormData): seq[tuple[key, val: cstring]] {.importjs: "Array.from(#.entries())".}
   ## https://developer.mozilla.org/en-US/docs/Web/API/FormData/entries
 
-func put*(self: FormData; name, value, filename: cstring) {.importjs: "#.set(#, #, #)".}
+func put*(self: FormData; name: cstring; value: SomeNumber | bool | cstring | Blob; filename: cstring) {.importjs: "#.set(#, #, #)".}
   ## https://developer.mozilla.org/en-US/docs/Web/API/FormData/set
 
-func `[]=`*(self: FormData; name, value: cstring) {.importjs: "#.set(#, #)".}
+func `[]=`*(self: FormData; name: cstring; value: SomeNumber | bool | cstring | Blob) {.importjs: "#.set(#, #)".}
   ## https://developer.mozilla.org/en-US/docs/Web/API/FormData/set
 
 func `[]`*(self: FormData; name: cstring): cstring {.importjs: "#.get(#)".}