UNPKG

emr-types

Version:

Comprehensive TypeScript Types Library for Electronic Medical Record (EMR) Applications - Domain-Driven Design with Zod Validation

119 lines 2.44 kB
/** * User ID Value Object * * Type-safe user identifier with validation */ import { IdFactory, IdValidator } from '../../shared/value-objects/Id'; /** * User ID Factory */ export const UserIdFactory = { /** * Create a new user ID */ create() { return IdFactory.create(); }, /** * Create user ID from string */ fromString(value) { const id = IdFactory.fromString(value); if (!IdValidator.isValid(id)) { throw new Error('Invalid user ID format'); } return id; }, /** * Create user ID from UUID */ fromUuid(uuid) { const id = IdFactory.createUuid(uuid); return id; }, /** * Create user ID from ULID */ fromUlid(ulid) { const id = IdFactory.createUlid(ulid); return id; }, /** * Create custom user ID */ createCustom(value, format) { const id = IdFactory.createCustom(value, format); return id; } }; /** * User ID Validator */ export const UserIdValidator = { /** * Check if value is a valid user ID */ isValid(value) { return IdValidator.isValid(value) && typeof value === 'object' && '__brand' in value; }, /** * Validate user ID format */ validateFormat(value) { return IdValidator.validateFormat(value); }, /** * Check if user ID is empty */ isEmpty(userId) { return IdValidator.isEmpty(userId); }, /** * Compare two user IDs */ areEqual(userId1, userId2) { return IdValidator.areEqual(userId1, userId2); } }; /** * User ID Utilities */ export const UserIdUtils = { /** * Convert user ID to string */ toString(userId) { return userId.value; }, /** * Get user ID type */ getType(userId) { return userId.type; }, /** * Check if user ID is UUID */ isUuid(userId) { return userId.type === 'uuid'; }, /** * Check if user ID is ULID */ isUlid(userId) { return userId.type === 'ulid'; }, /** * Check if user ID is custom */ isCustom(userId) { return userId.type === 'custom'; }, /** * Check if user ID is auto-increment */ isAutoIncrement(userId) { return userId.type === 'auto-increment'; } }; //# sourceMappingURL=UserId.js.map