io-ts-cv
TypeScript icon, indicating that this package has built-in type declarations

0.0.2 • Public • Published

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`
);

Package Sidebar

Install

npm i io-ts-cv

Weekly Downloads

1

Version

0.0.2

License

ISC

Unpacked Size

357 kB

Total Files

388

Last publish

Collaborators

  • degroote22