From f3a91deae3c04d2c0b76eabcc3da08ae9c4e43ab Mon Sep 17 00:00:00 2001 From: Tom Sherman Date: Tue, 21 Dec 2021 16:58:29 +0000 Subject: [PATCH 1/2] Change Request.referrerPolicy to a polymorphic variant --- src/Webapi/Webapi__Fetch.res | 59 +++++++++-------------------------- src/Webapi/Webapi__Fetch.resi | 21 +++++++------ 2 files changed, 26 insertions(+), 54 deletions(-) diff --git a/src/Webapi/Webapi__Fetch.res b/src/Webapi/Webapi__Fetch.res index 72bc00eb..89125ddb 100644 --- a/src/Webapi/Webapi__Fetch.res +++ b/src/Webapi/Webapi__Fetch.res @@ -64,45 +64,17 @@ let decodeRequestMethod = x => | method_ => Other(method_) } -type referrerPolicy = - | None - | NoReferrer - | NoReferrerWhenDowngrade - | SameOrigin - | Origin - | StrictOrigin - | OriginWhenCrossOrigin - | StrictOriginWhenCrossOrigin - | UnsafeUrl -let encodeReferrerPolicy = x => - /* internal */ - - switch x { - | NoReferrer => "no-referrer" - | None => "" - | NoReferrerWhenDowngrade => "no-referrer-when-downgrade" - | SameOrigin => "same-origin" - | Origin => "origin" - | StrictOrigin => "strict-origin" - | OriginWhenCrossOrigin => "origin-when-cross-origin" - | StrictOriginWhenCrossOrigin => "strict-origin-when-cross-origin" - | UnsafeUrl => "unsafe-url" - } -let decodeReferrerPolicy = x => - /* internal */ - - switch x { - | "no-referrer" => NoReferrer - | "" => None - | "no-referrer-when-downgrade" => NoReferrerWhenDowngrade - | "same-origin" => SameOrigin - | "origin" => Origin - | "strict-origin" => StrictOrigin - | "origin-when-cross-origin" => OriginWhenCrossOrigin - | "strict-origin-when-cross-origin" => StrictOriginWhenCrossOrigin - | "unsafe-url" => UnsafeUrl - | e => raise(Failure("Unknown referrerPolicy: " ++ e)) - } +type referrerPolicy = [ + | #"" + | #"no-referrer" + | #"no-referrer-when-downgrade" + | #"same-origin" + | #origin + | #"strict-origin" + | #"origin-when-cross-origin" + | #"strict-origin-when-cross-origin" + | #"unsafe-url" +] type requestType = | None /* default? unknown? just empty string in spec */ @@ -336,7 +308,7 @@ module RequestInit = { ~headers: headersInit=?, ~body: bodyInit=?, ~referrer: string=?, - ~referrerPolicy: string=?, + ~referrerPolicy: referrerPolicy=?, ~mode: string=?, ~credentials: string=?, ~cache: string=?, @@ -351,7 +323,7 @@ module RequestInit = { ~headers: option=?, ~body: option=?, ~referrer: option=?, - ~referrerPolicy: referrerPolicy=None, + ~referrerPolicy: option=?, ~mode: option=?, ~credentials: option=?, ~cache: option=?, @@ -365,7 +337,7 @@ module RequestInit = { ~headers?, ~body?, ~referrer?, - ~referrerPolicy=encodeReferrerPolicy(referrerPolicy), + ~referrerPolicy?, ~mode=?map(encodeRequestMode, mode), ~credentials=?map(encodeRequestCredentials, credentials), ~cache=?map(encodeRequestCache, cache), @@ -397,8 +369,7 @@ module Request = { @get external destination: t => string = "destination" let destination: t => requestDestination = self => decodeRequestDestination(destination(self)) @get external referrer: t => string = "referrer" - @get external referrerPolicy: t => string = "referrerPolicy" - let referrerPolicy: t => referrerPolicy = self => decodeReferrerPolicy(referrerPolicy(self)) + @get external referrerPolicy: t => referrerPolicy = "referrerPolicy" @get external mode: t => string = "mode" let mode: t => requestMode = self => decodeRequestMode(mode(self)) @get external credentials: t => string = "credentials" diff --git a/src/Webapi/Webapi__Fetch.resi b/src/Webapi/Webapi__Fetch.resi index f64d76b7..375db681 100644 --- a/src/Webapi/Webapi__Fetch.resi +++ b/src/Webapi/Webapi__Fetch.resi @@ -36,16 +36,17 @@ type requestMethod = | Patch | Other(string) -type referrerPolicy = - | None - | NoReferrer - | NoReferrerWhenDowngrade - | SameOrigin - | Origin - | StrictOrigin - | OriginWhenCrossOrigin - | StrictOriginWhenCrossOrigin - | UnsafeUrl +type referrerPolicy = [ + | #"" + | #"no-referrer" + | #"no-referrer-when-downgrade" + | #"same-origin" + | #origin + | #"strict-origin" + | #"origin-when-cross-origin" + | #"strict-origin-when-cross-origin" + | #"unsafe-url" +] type requestType = | None /* default? unknown? just empty string in spec */ From da296c712c5ef2f1c0ea2265d33a0bb9d9cb0d48 Mon Sep 17 00:00:00 2001 From: Tom Sherman Date: Tue, 21 Dec 2021 17:08:42 +0000 Subject: [PATCH 2/2] Remove None variant --- src/Webapi/Webapi__Fetch.res | 1 - src/Webapi/Webapi__Fetch.resi | 1 - 2 files changed, 2 deletions(-) diff --git a/src/Webapi/Webapi__Fetch.res b/src/Webapi/Webapi__Fetch.res index 89125ddb..15783f19 100644 --- a/src/Webapi/Webapi__Fetch.res +++ b/src/Webapi/Webapi__Fetch.res @@ -65,7 +65,6 @@ let decodeRequestMethod = x => } type referrerPolicy = [ - | #"" | #"no-referrer" | #"no-referrer-when-downgrade" | #"same-origin" diff --git a/src/Webapi/Webapi__Fetch.resi b/src/Webapi/Webapi__Fetch.resi index 375db681..28227cda 100644 --- a/src/Webapi/Webapi__Fetch.resi +++ b/src/Webapi/Webapi__Fetch.resi @@ -37,7 +37,6 @@ type requestMethod = | Other(string) type referrerPolicy = [ - | #"" | #"no-referrer" | #"no-referrer-when-downgrade" | #"same-origin"