UNPKG

guardz

Version:

A simple and lightweight TypeScript type guard library for runtime type validation.

45 lines (44 loc) 1.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BrandSymbols = void 0; /** * Predefined brand symbols for common use cases. * * These symbols can be used to create branded types with unique symbols, * providing better type safety and avoiding string literal conflicts. * * @example * ```typescript * import { Branded, isBranded, BrandSymbols } from 'guardz'; * * type UserId = Branded<number, typeof BrandSymbols.UserId>; * type Email = Branded<string, typeof BrandSymbols.Email>; * * const isUserId = isBranded<UserId>((value) => { * return typeof value === 'number' && value > 0 && Number.isInteger(value); * }); * * const isEmail = isBranded<Email>((value) => { * if (typeof value !== 'string') return false; * const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; * return emailRegex.test(value); * }); * ``` */ exports.BrandSymbols = { UserId: Symbol('UserId'), Email: Symbol('Email'), Password: Symbol('Password'), Age: Symbol('Age'), PhoneNumber: Symbol('PhoneNumber'), URL: Symbol('URL'), UUID: Symbol('UUID'), Timestamp: Symbol('Timestamp'), PositiveNumber: Symbol('PositiveNumber'), NonEmptyString: Symbol('NonEmptyString'), ApiResponse: Symbol('ApiResponse'), DatabaseId: Symbol('DatabaseId'), SessionToken: Symbol('SessionToken'), FilePath: Symbol('FilePath'), Currency: Symbol('Currency'), };