emr-types
Version:
Comprehensive TypeScript Types Library for Electronic Medical Record (EMR) Applications - Domain-Driven Design with Zod Validation
119 lines • 2.44 kB
JavaScript
/**
* 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