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 } }>| 타입 | 설명 |
|---|---|
| ID | string | number 유니온 |
| Key | string | number | symbol |
| Nullable<T> | T | null | undefined |
| DeepPartial<T> | 중첩된 모든 프로퍼티를 옵셔널로 변환 |
| DeepReadonly<T> | 중첩된 모든 프로퍼티를 readonly로 변환 |
| CSSProps | React.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'| 함수 | 매개변수 | 반환 |
|---|---|---|
| formatDate | value, pattern?, locale? | string |
| formatNumber | value, options? | string |
| formatCurrency | value, currency?, locale? | string |
| formatPhoneNumber | value | string |
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() | 코드 기반 에러 생성 팩토리 |