5
5
} from "../../mapper" ;
6
6
import { FluentMapper } from "../../fluent-mapper" ;
7
7
import * as fLib from "../../fluent-lib" ;
8
+ import * as TypeUtil from "../../type-util" ;
8
9
9
10
/**
10
11
Converts some values to `boolean`.
@@ -20,13 +21,14 @@ export function boolean () : (
20
21
FluentMapper <
21
22
& SafeMapper < boolean >
22
23
& ExpectedInput < boolean >
23
- & MappableInput < boolean | 0 | 1 | "0" | "1" | "false" | "true" >
24
+ & MappableInput < boolean | 0 | 1 | "0" | "1" | "false" | "true" | 0n | 1n >
24
25
>
25
26
) {
27
+ const BigInt = TypeUtil . getBigIntFactoryFunctionOrError ( ) ;
26
28
return fLib . or (
27
29
fLib . boolean ( ) ,
28
- fLib . literal ( "0" , "1" , 0 , 1 , "false" , "true" ) . pipe (
29
- ( name : string , v : "0" | "1" | 0 | 1 | "false" | "true" ) : boolean => {
30
+ fLib . literal ( "0" , "1" , 0 , 1 , "false" , "true" , BigInt ( 0 ) as 0n , BigInt ( 1 ) as 1n ) . pipe (
31
+ ( name : string , v : "0" | "1" | 0 | 1 | "false" | "true" | 0n | 1n ) : boolean => {
30
32
switch ( v ) {
31
33
case "0" : return false ;
32
34
case "1" : return true ;
@@ -35,8 +37,14 @@ export function boolean () : (
35
37
case "false" : return false ;
36
38
case "true" : return true ;
37
39
default : {
40
+ const str = String ( v ) ;
41
+ if ( str == "0" ) {
42
+ return false ;
43
+ } else if ( str == "1" ) {
44
+ return true ;
45
+ }
38
46
//Shouldn't happen
39
- throw new Error ( `Expected ${ name } to be one of '0'|'1'|0|1|'false'|'true'` ) ;
47
+ throw new Error ( `Expected ${ name } to be one of '0'|'1'|0|1|'false'|'true'|'0n'|'1n' ` ) ;
40
48
}
41
49
}
42
50
}
@@ -58,18 +66,23 @@ function toTrue () : (
58
66
FluentMapper <
59
67
& SafeMapper < true >
60
68
& ExpectedInput < true >
61
- & MappableInput < true | 1 | "1" | "true" >
69
+ & MappableInput < true | 1 | "1" | "true" | 1n >
62
70
>
63
71
) {
72
+ const BigInt = TypeUtil . getBigIntFactoryFunctionOrError ( ) ;
64
73
return fLib . or (
65
74
fLib . literal ( true ) ,
66
- fLib . literal ( "1" , 1 , "true" ) . pipe (
67
- ( name : string , v : "1" | 1 | "true" ) : true => {
75
+ fLib . literal ( "1" , 1 , "true" , BigInt ( 1 ) as 1n ) . pipe (
76
+ ( name : string , v : "1" | 1 | "true" | 1n ) : true => {
68
77
switch ( v ) {
69
78
case "1" : return true ;
70
79
case 1 : return true ;
71
80
case "true" : return true ;
72
81
default : {
82
+ const str = String ( v ) ;
83
+ if ( str == "1" ) {
84
+ return true ;
85
+ }
73
86
//Shouldn't happen
74
87
throw new Error ( `Expected ${ name } to be one of '1'|1|'true'` ) ;
75
88
}
@@ -93,18 +106,23 @@ function toFalse () : (
93
106
FluentMapper <
94
107
& SafeMapper < false >
95
108
& ExpectedInput < false >
96
- & MappableInput < false | 0 | "0" | "false" >
109
+ & MappableInput < false | 0 | "0" | "false" | 0n >
97
110
>
98
111
) {
112
+ const BigInt = TypeUtil . getBigIntFactoryFunctionOrError ( ) ;
99
113
return fLib . or (
100
114
fLib . literal ( false ) ,
101
- fLib . literal ( "0" , 0 , "false" ) . pipe (
102
- ( name : string , v : "0" | 0 | "false" ) : false => {
115
+ fLib . literal ( "0" , 0 , "false" , BigInt ( 0 ) as 0n ) . pipe (
116
+ ( name : string , v : "0" | 0 | "false" | 0n ) : false => {
103
117
switch ( v ) {
104
118
case "0" : return false ;
105
119
case 0 : return false ;
106
120
case "false" : return false ;
107
121
default : {
122
+ const str = String ( v ) ;
123
+ if ( str == "0" ) {
124
+ return false ;
125
+ }
108
126
//Shouldn't happen
109
127
throw new Error ( `Expected ${ name } to be one of '0'|0|'false'` ) ;
110
128
}
0 commit comments