io-ts-cv
v0.0.2
Published
One-to-one reimplementation of class-validator's validators in io-ts ecosystem.
Downloads
4
Maintainers
Readme
io-ts-cv
One-to-one reimplementation of class-validator's validators in io-ts ecosystem.
Install from NPM:
npm i io-ts-cv
Codecs
| Codec | Description |
| ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Common validation decorators | |
| Equals(comparison: any)
| Checks if value equals ("===") comparison. |
| NotEquals(comparison: any)
| Checks if value not equal ("!==") comparison. |
| IsIn(values: any[])
| Checks if value is in a array of allowed values. |
| IsNotIn(values: any[])
| Checks if value is not in a array of disallowed values. |
| Number validation decorators | |
| IsDivisibleBy(num: number)
| Checks if the value is a number that's divisible by another. |
| IsPositive
| Checks if the value is a positive number greater than zero. |
| IsNegative
| Checks if the value is a negative number smaller than zero. |
| Min(min: number)
| Checks if the given number is greater than or equal to given number. |
| Max(max: number)
| Checks if the given number is less than or equal to given number. |
| Date validation decorators | |
| DateFromISOStringMinDate(date: string)
| Checks if the value is a date that's after the specified date. |
| DateFromISOStringMaxDate(date: string)
| Checks if the value is a date that's before the specified date. |
| DateFromNumberMinDate(date: number)
| Checks if the value is a date that's after the specified date. |
| DateFromNumberMaxDate(date: number)
| Checks if the value is a date that's before the specified date. |
| DateFromUnixTimeMinDate(date: number)
| Checks if the value is a date that's after the specified date. |
| DateFromUnixTimeMaxDate(date: number)
| Checks if the value is a date that's before the specified date. |
| String-type validation decorators | |
| IsBooleanString
| Checks if a string is a boolean (e.g. is "true" or "false"). |
| IsDateString
| Alias for IsISO8601
. |
| IsNumberString(options?: IsNumericOptions)
| Checks if a string is a number. |
| String validation decorators | |
| Contains(seed: string)
| Checks if the string contains the seed. |
| NotContains(seed: string)
| Checks if the string not contains the seed. |
| IsEmpty
| Checks if given value is empty (=== '', === null, === undefined). |
| IsNotEmpty
| Checks if given value is not empty (!== '', !== null, !== undefined). |
| IsAlpha
| Checks if the string contains only letters (a-zA-Z). |
| IsAlphanumeric
| Checks if the string contains only letters and numbers. |
| IsDecimal(options?: IsDecimalOptions)
| Checks if the string is a valid decimal value. Default IsDecimalOptions are force_decimal=False
, decimal_digits: '1,'
, locale: 'en-US'
|
| IsAscii
| Checks if the string contains ASCII chars only. |
| IsBase32
| Checks if a string is base32 encoded. |
| IsBase64
| Checks if a string is base64 encoded. |
| IsIBAN
| Checks if a string is a IBAN (International Bank Account Number). |
| IsBIC
| Checks if a string is a BIC (Bank Identification Code) or SWIFT code. |
| IsByteLength(min: number, max?: number)
| Checks if the string's length (in bytes) falls in a range. |
| IsCreditCard
| Checks if the string is a credit card. |
| IsCurrency(options?: IsCurrencyOptions)
| Checks if the string is a valid currency amount. |
| IsEthereumAddress
| Checks if the string is an Ethereum address using basic regex. Does not validate address checksums. |
| IsBtcAddress
| Checks if the string is a valid BTC address. |
| IsDataURI
| Checks if the string is a data uri format. |
| IsEmail(options?: IsEmailOptions)
| Checks if the string is an email. |
| IsFQDN(options?: IsFQDNOptions)
| Checks if the string is a fully qualified domain name (e.g. domain.com). |
| IsFullWidth
| Checks if the string contains any full-width chars. |
| IsHalfWidth
| Checks if the string contains any half-width chars. |
| IsVariableWidth
| Checks if the string contains a mixture of full and half-width chars. |
| IsHexColor
| Checks if the string is a hexadecimal color. |
| IsHSLColor
| Checks if the string is an HSL color based on CSS Colors Level 4 specification. |
| IsRgbColor(options?: IsRgbOptions)
| Checks if the string is a rgb or rgba color. |
| IsIdentityCard(locale?: string)
| Checks if the string is a valid identity card code. |
| IsPassportNumber(countryCode?: string)
| Checks if the string is a valid passport number relative to a specific country code. |
| IsPostalCode(locale?: string)
| Checks if the string is a postal code. |
| IsHexadecimal
| Checks if the string is a hexadecimal number. |
| IsOctal
| Checks if the string is a octal number. |
| IsMACAddress(options?: IsMACAddressOptions)
| Checks if the string is a MAC Address. |
| IsIP(version?: "4"\|"6")
| Checks if the string is an IP (version 4 or 6). |
| IsPort
| Checks if the string is a valid port number. |
| IsISBN(version?: "10"\|"13")
| Checks if the string is an ISBN (version 10 or 13). |
| IsEAN
| Checks if the string is an if the string is an EAN (European Article Number). |
| IsISIN
| Checks if the string is an ISIN (stock/security identifier). |
| IsISO8601(options?: IsISO8601Options)
| Checks if the string is a valid ISO 8601 date format. Use the option strict = true for additional checks for a valid date. |
| IsJSON
| Checks if the string is valid JSON. |
| IsJWT
| Checks if the string is valid JWT. |
| IsObject
| Checks if the object is valid Object (null, functions, arrays will return false). |
| IsNotEmptyObject
| Checks if the object is not empty. |
| IsLowercase
| Checks if the string is lowercase. |
| IsLatLong
| Checks if the string is a valid latitude-longitude coordinate in the format lat, long. |
| IsLatitude
| Checks if the string or number is a valid latitude coordinate. |
| IsLongitude
| Checks if the string or number is a valid longitude coordinate. |
| IsMobilePhone(locale: string)
| Checks if the string is a mobile phone number. |
| IsISO31661Alpha2
| Checks if the string is a valid ISO 3166-1 alpha-2 officially assigned country code. |
| IsISO31661Alpha3
| Checks if the string is a valid ISO 3166-1 alpha-3 officially assigned country code. |
| IsLocale
| Checks if the string is a locale. |
| IsPhoneNumber(region: string)
| Checks if the string is a valid phone numberusing libphonenumber-js. |
| IsMongoId
| Checks if the string is a valid hex-encoded representation of a MongoDB ObjectId. |
| IsMultibyte
| Checks if the string contains one or more multibyte chars. |
| IsNumberString(options?: IsNumericOptions)
| Checks if the string is numeric. |
| IsSurrogatePair
| Checks if the string contains any surrogate pairs chars. |
| IsUrl(options?: IsURLOptions)
| Checks if the string is an url. |
| IsMagnetURI
| Checks if the string is a magnet uri format. |
| IsUUID(version?: "3"\|"4"\|"5"\|"all")
| Checks if the string is a UUID (version 3, 4, 5 or all ). |
| IsFirebasePushId
| Checks if the string is a Firebase Push ID |
| IsUppercase
| Checks if the string is uppercase. |
| Length(min: number, max?: number)
| Checks if the string's length falls in a range. |
| MinLength(min: number)
| Checks if the string's length is not less than given number. |
| MaxLength(max: number)
| Checks if the string's length is not more than given number. |
| Matches(pattern: RegExp, modifiers?: string)
| Checks if string matches the pattern. Either matches('foo', /foo/i) or matches('foo', 'foo', 'i'). |
| IsMilitaryTime
| Checks if the string is a valid representation of military time in the format HH:MM. |
| IsHash(algorithm: string)
| Checks if the string is a hash The following types are supported:md4
, md5
, sha1
, sha256
, sha384
, sha512
, ripemd128
, ripemd160
, tiger128
, tiger160
, tiger192
, crc32
, crc32b
. |
| IsMimeType
| Checks if the string matches to a valid MIME type format |
| IsSemVer
| Checks if the string is a Semantic Versioning Specification (SemVer). |
| IsISSN(options?: IsISSNOptions)
| Checks if the string is a ISSN. |
| IsISRC
| Checks if the string is a ISRC. |
| IsRFC3339
| Checks if the string is a valid RFC 3339 date. |
| Array validation decorators | |
| ArrayContains(values: any[])
| Checks if array contains all values from the given array of values. |
| ArrayNotContains(values: any[])
| Checks if array does not contain any of the given values. |
| ArrayNotEmpty
| Checks if given array is not empty. |
| ArrayMinSize(min: number)
| Checks if the array's length is greater than or equal to the specified number. |
| ArrayMaxSize(max: number)
| Checks if the array's length is less or equal to the specified number. |
| ArrayUnique(identifier?: (o) => any)
| Checks if all array's values are unique. Comparison for objects is reference-based. Optional function can be speciefied which return value will be used for the comparsion. |
| Object validation decorators | |
| IsInstance(value: any)
| Checks if the property is an instance of the passed value. |
Deprecations
Some codecs are marked as deprecated as they're not fully type safe. Create your own branded types in such cases.
For example, an IsEmail codec:
import * as t from "io-ts";
import { withMessage } from "io-ts-types/lib/withMessage";
import { nameFromCtx } from "io-ts-cv/utils/ctx";
import isEmailValidator from "validator/lib/isEmail";
export interface MyIsEmailBrand {
readonly MyIsEmail: unique symbol;
}
export const MyIsEmail = withMessage(
t.brand(
t.string,
(value): value is t.Branded<string, MyIsEmailBrand> =>
isEmailValidator(value, { require_tld: true }),
"MyIsEmail"
),
(_value, ctx) => `${nameFromCtx(ctx)} must be an email`
);