guardz
Version:
A simple and lightweight TypeScript type guard library for runtime type validation.
45 lines (44 loc) • 1.43 kB
JavaScript
;
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'),
};