Skip to content

Commit 370783a

Browse files
committed
Fix disableNanNumberValidation
1 parent 97cc4e6 commit 370783a

File tree

5 files changed

+208
-229
lines changed

5 files changed

+208
-229
lines changed

packages/sury/src/S.res.mjs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ let Path = Sury.Path;
66

77
let Exn = Sury.Exn;
88

9-
let Flag = Sury.Flag;
10-
119
let never = Sury.never;
1210

1311
let unknown = Sury.unknown;
@@ -191,7 +189,6 @@ let $$Error = Sury.$$Error;
191189
export {
192190
Path,
193191
Exn,
194-
Flag,
195192
never,
196193
unknown,
197194
unit,

packages/sury/src/S.resi

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -285,14 +285,6 @@ type exn += private Exn(error)
285285

286286
type s<'value> = {fail: 'a. (string, ~path: Path.t=?) => 'a}
287287

288-
module Flag: {
289-
@inline let none: flag
290-
@inline let async: flag
291-
292-
external with: (flag, flag) => flag = "%orint"
293-
let has: (flag, flag) => bool
294-
}
295-
296288
let never: t<never>
297289
let unknown: t<unknown>
298290
let unit: t<unit>

packages/sury/src/Sury.res

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -662,6 +662,7 @@ module ValFlag = {
662662
module Flag = {
663663
@inline let none = 0
664664
@inline let async = 1
665+
@inline let disableNanNumberValidation = 2
665666
// @inline let flatten = 64
666667

667668
external with: (flag, flag) => flag = "%orint"
@@ -880,8 +881,8 @@ type globalConfig = {
880881
mutable defsAccumulator: option<dict<internal>>,
881882
@as("a")
882883
mutable defaultAdditionalItems: additionalItems,
883-
@as("n")
884-
mutable disableNanNumberValidation: bool,
884+
@as("f")
885+
mutable defaultFlag: flag,
885886
}
886887

887888
type globalConfigOverride = {
@@ -890,12 +891,12 @@ type globalConfigOverride = {
890891
}
891892

892893
let initialOnAdditionalItems: additionalItemsMode = Strip
893-
let initialDisableNanNumberProtection = false
894+
let initialDefaultFlag = Flag.none
894895
let globalConfig: globalConfig = {
895896
message: InternalError.message,
896897
defsAccumulator: None,
897898
defaultAdditionalItems: (initialOnAdditionalItems :> additionalItems),
898-
disableNanNumberValidation: initialDisableNanNumberProtection,
899+
defaultFlag: initialDefaultFlag,
899900
}
900901

901902
@new
@@ -1734,7 +1735,7 @@ let numberDecoder = Builder.make((~input, ~selfSchema) => {
17341735
)}${inputVar}%1${B.eq(~negative)}0`
17351736

17361737
| _ =>
1737-
if globalConfig.disableNanNumberValidation {
1738+
if input.global.flag->Flag.unsafeHas(Flag.disableNanNumberValidation) {
17381739
""
17391740
} else {
17401741
`${B.and_(~negative)}${B.exp(~negative=!negative)}Number.isNaN(${inputVar})`
@@ -2210,11 +2211,13 @@ let getDecoder = (~s1 as _, ~flag as _=?) => {
22102211
while flag.contents === None {
22112212
let arg = args->Js.Array2.unsafe_get(idx.contents)
22122213
if !(arg->Obj.magic) {
2213-
flag := Some(0)
2214-
keyRef := keyRef.contents ++ "-0"
2214+
let f = globalConfig.defaultFlag
2215+
flag := Some(f)
2216+
keyRef := keyRef.contents ++ "-" ++ f->X.Int.unsafeToString
22152217
} else if Js.typeof(arg->Obj.magic) === "number" {
2216-
flag := Some(arg->Obj.magic)
2217-
keyRef := keyRef.contents ++ "-" ++ arg->Obj.magic
2218+
let f = arg->Obj.magic->Flag.with(globalConfig.defaultFlag)
2219+
flag := Some(f)
2220+
keyRef := keyRef.contents ++ "-" ++ f->X.Int.unsafeToString
22182221
} else {
22192222
let schema: internal = arg->Obj.magic
22202223
let seq: float = schema.seq->Obj.magic
@@ -5861,9 +5864,9 @@ let global = override => {
58615864
| Some(defaultAdditionalItems) => defaultAdditionalItems
58625865
| None => initialOnAdditionalItems
58635866
} :> additionalItems)
5864-
globalConfig.disableNanNumberValidation = switch override.disableNanNumberValidation {
5865-
| Some(disableNanNumberValidation) => disableNanNumberValidation
5866-
| None => initialDisableNanNumberProtection
5867+
globalConfig.defaultFlag = switch override.disableNanNumberValidation {
5868+
| Some(true) => Flag.disableNanNumberValidation
5869+
| _ => initialDefaultFlag
58675870
}
58685871
}
58695872

0 commit comments

Comments
 (0)