Package

@mycrm-ui/core

유틸리티 타입, 헬퍼 함수, 포맷터, 에러 클래스 등 프레임워크에 독립적인 핵심 유틸리티 패키지입니다.

data_object

타입

프로젝트 전반에서 사용할 수 있는 공통 타입 유틸리티입니다.

import type { ID, Key, Nullable, DeepPartial, DeepReadonly, CSSProps } from '@mycrm-ui/core'

type UserId = ID               // string | number
type Config = DeepPartial<{ a: { b: string } }>  // 중첩 옵셔널
type Readonly = DeepReadonly<{ a: { b: string } }>
타입설명
IDstring | number 유니온
Keystring | number | symbol
Nullable<T>T | null | undefined
DeepPartial<T>중첩된 모든 프로퍼티를 옵셔널로 변환
DeepReadonly<T>중첩된 모든 프로퍼티를 readonly로 변환
CSSPropsReact.CSSProperties 호환 스타일 객체
handyman

유틸리티 함수

객체 조작, 배열 처리 등 자주 사용하는 범용 유틸리티 모음입니다.

import { deepClone, deepMerge, flatten, groupBy, pick, omit } from '@mycrm-ui/core'

// 깊은 복사
const copy = deepClone(obj)

// 깊은 병합 (target에 source를 덮어씀)
const merged = deepMerge(defaults, overrides)

// 2차원 배열 평탄화
const flat = flatten([[1, 2], [3, 4]])  // [1, 2, 3, 4]

// 배열을 키 기준으로 그룹화
const grouped = groupBy(users, 'role')
const grouped2 = groupBy(users, (u) => u.name[0])

// 객체에서 특정 키만 추출/제외
const picked = pick(obj, ['id', 'name'])
const omitted = omit(obj, ['password'])
text_format

포맷터

날짜, 숫자, 통화, 전화번호 등을 한국 로케일에 맞게 포맷팅합니다.

import { formatDate, formatNumber, formatCurrency, formatPhoneNumber } from '@mycrm-ui/core'

// 날짜 포맷
formatDate(new Date(), 'YYYY-MM-DD')          // '2026-03-24'
formatDate('2026-03-24', 'YYYY년 MM월 DD일')  // '2026년 03월 24일'
formatDate(new Date(), undefined, 'en-US')    // Intl 기본 포맷

// 숫자 포맷
formatNumber(1234567)                          // '1,234,567'
formatNumber(0.1234, { style: 'percent' })     // '12%'

// 통화 포맷
formatCurrency(50000)                          // '₩50,000'
formatCurrency(100, 'USD', 'en-US')            // '$100.00'

// 전화번호 포맷 (KR)
formatPhoneNumber('01012345678')               // '010-1234-5678'
formatPhoneNumber('0212345678')                // '02-1234-5678'
함수매개변수반환
formatDatevalue, pattern?, locale?string
formatNumbervalue, options?string
formatCurrencyvalue, currency?, locale?string
formatPhoneNumbervaluestring
error

에러 클래스

구조화된 에러 처리를 위한 커스텀 에러 클래스와 팩토리 함수입니다.

import { MycrmError, ValidationError, NotFoundError, createError } from '@mycrm-ui/core'

throw new ValidationError('이메일 형식이 올바르지 않습니다.', { field: 'email' })
throw new NotFoundError('사용자를 찾을 수 없습니다.')

// 팩토리 함수
const err = createError('PERMISSION_DENIED', '권한이 없습니다.')

// 에러 판별
if (err instanceof MycrmError) {
  console.log(err.code, err.message, err.details)
}
클래스설명
MycrmError기본 에러 클래스 (code, message, details)
ValidationError입력 검증 실패
NotFoundError리소스 미발견
createError()코드 기반 에러 생성 팩토리