export type MessageCategory = string // length 3 export type MessageNumber = string // length 3 export type BaseMessageType = '0' | '1' export type MessageType = 'success' | 'error' export type MessageCode = string // length 7 = MessageCategory + MessageNumber + BaseMessageType (0|1) // TypeGuard & Validator for MessageCodes export const isValidMessageCode = (msgCode: any): msgCode is MessageCode => { if (!msgCode) return false if (typeof msgCode !== 'string') return false if (msgCode.length !== 7) return false return true } export const getMessageCodeType = (msgCode: MessageCode): MessageType => msgCode[6] === '0' ? 'success' : 'error' export const getMessageCodeCategory = (msgCode: MessageCode): MessageCategory => msgCode.slice(0, 3) export const getMessageCodeNumber = (msgCode: MessageCode): MessageNumber => msgCode.slice(3, 6) export const decode = (msgCode: any) => { if (!isValidMessageCode(msgCode)) return false const type = getMessageCodeType(msgCode) const category = getMessageCodeCategory(msgCode) const message = getMessageCodeNumber(msgCode) const info = { body: `messagecodes.${category}.${message}.${type}`, title: `messagecodes.${category}`, } return { category, info, message, type, } }