Page Menu
Home
Sealhub
Search
Configure Global Search
Log In
Files
F4637592
enum-multiple.ts
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
1 KB
Referenced Files
None
Subscribers
None
enum-multiple.ts
View Options
import
{
is
,
predicates
}
from
"@sealcode/ts-predicates"
;
import
{
Context
}
from
"koa"
;
import
{
FormDataValue
}
from
"../form-types.js"
;
import
{
FieldParseResult
,
FormField
}
from
"./field.js"
;
export
class
EnumMultipleField
<
Options
extends
readonly
string
[],
Required
extends
boolean
>
extends
FormField
<
Required
,
string
[]
>
{
constructor
(
required
:
Required
,
public
options
:
Options
,
public
error_message
:
(
options
:
Options
)
=>
string
=
(
options
)
=>
options
.
join
(
", "
)
)
{
super
(
required
);
}
predicate
=
predicates
.
enum
<
Options
>
(
this
.
options
);
public
async
isValueValid
(
_
:
Context
,
values
:
string
[]
)
:
Promise
<
{
valid
:
boolean
;
message
:
string
}
>
{
for
(
const
value
of
values
)
{
if
(
!
is
(
value
,
predicates
.
string
))
{
return
{
valid
:
false
,
message
:
"expected a string"
};
}
if
(
!
this
.
options
.
includes
(
value
))
{
return
{
valid
:
false
,
message
:
"invalid value"
};
}
}
return
{
valid
:
true
,
message
:
""
};
}
async
parse
(
_
:
Context
,
value
:
FormDataValue
)
:
Promise
<
FieldParseResult
<
string
[]
>>
{
if
(
is
(
value
,
predicates
.
string
))
{
return
{
parsable
:
true
,
parsed_value
:
[
value
],
error
:
null
};
}
else
if
(
is
(
value
,
predicates
.
array
(
predicates
.
string
)))
{
return
{
parsable
:
true
,
parsed_value
:
value
,
error
:
null
,
};
}
else
if
(
value
==
null
)
{
return
{
parsable
:
true
,
parsed_value
:
[],
error
:
null
};
}
else
{
return
{
parsable
:
false
,
parsed_value
:
null
,
error
:
"Please enter a list of strings"
,
};
}
}
public
getEmptyValue
()
:
string
[]
{
return
[];
}
}
File Metadata
Details
Attached
Mime Type
text/x-java
Expires
Tue, May 27, 23:48 (1 d, 17 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
625053
Default Alt Text
enum-multiple.ts (1 KB)
Attached To
Mode
rSGEN sealgen
Attached
Detach File
Event Timeline
Log In to Comment