core

Essential utilities and design patterns for TypeScript/JavaScript development

TypeScript/JavaScript 개발을 위한 필수 유틸리티 및 디자인 패턴

GitHubNPM

Installation

Install the package with your preferred package manager

선호하는 패키지 매니저로 패키지를 설치하세요

Demo example

DEMO EXAMPLE

데모 예제

Low Level Utilities

Essential utility functions for common programming tasks

일반적인 프로그래밍 작업을 위한 필수 유틸리티 함수

ArrayUtils

Comprehensive array manipulation utilities including 2D arrays, shuffling, and set operations

2D 배열, 셔플링, 집합 연산을 포함한 포괄적인 배열 조작 유틸리티

OTHER FUNCTIONS기타 함수
  • shuffle<T>(array: T[]): T[]Randomly shuffle array elements배열 요소를 무작위로 섞기
  • create2DArray<T>(rows: number, cols: number, defaultValue: T): T[][]Create 2D array with default values기본값으로 2D 배열 생성
  • union<T>(arr1: T[], arr2: T[]): T[]Union of two arrays두 배열의 합집합
  • intersection<T>(arr1: T[], arr2: T[]): T[]Intersection of two arrays두 배열의 교집합
  • difference<T>(arr1: T[], arr2: T[]): T[]Difference of two arrays두 배열의 차집합
  • unique<T>(array: T[]): T[]Remove duplicate elements중복 요소 제거
  • chunk<T>(array: T[], size: number): T[][]Split array into chunks배열을 청크로 분할
  • flatten<T>(array: any[]): T[]Flatten nested arrays중첩 배열 평탄화
  • groupBy<T>(array: T[], key: keyof T | ((item: T) => any)): Record<string, T[]>Group array by key키로 배열 그룹화

StringUtils

Advanced string manipulation including trimming, padding, emoji handling, and Korean postposition

트리밍, 패딩, 이모지 처리, 한글 조사 처리를 포함한 고급 문자열 조작

OTHER FUNCTIONS기타 함수
  • withPostposition(word: string, postposition: string): stringAdd Korean postposition (을/를, 이/가, etc.)한글 조사 추가 (을/를, 이/가 등)
  • padLeft(str: string, length: number, char: string): stringPad string on the left문자열 왼쪽에 패딩 추가
  • padRight(str: string, length: number, char: string): stringPad string on the right문자열 오른쪽에 패딩 추가
  • lengthWithEmoji(str: string): numberCalculate string length including emojis이모지 포함 문자열 길이 계산
  • trim(str: string): stringTrim whitespace from both ends양쪽 공백 제거
  • trimLeft(str: string): stringTrim whitespace from left왼쪽 공백 제거
  • trimRight(str: string): stringTrim whitespace from right오른쪽 공백 제거
  • capitalize(str: string): stringCapitalize first letter첫 글자 대문자화
  • camelCase(str: string): stringConvert to camelCase카멜케이스로 변환
  • snakeCase(str: string): stringConvert to snake_case스네이크케이스로 변환
  • kebabCase(str: string): stringConvert to kebab-case케밥케이스로 변환
  • truncate(str: string, length: number, suffix?: string): stringTruncate string with suffix접미사와 함께 문자열 자르기

ObjectUtils

Object manipulation utilities including deep copy, path operations, script evaluation, and path detection

깊은 복사, 경로 연산, 스크립트 평가, 경로 감지를 포함한 객체 조작 유틸리티

OTHER FUNCTIONS기타 함수
  • deepCopy<T>(obj: T): TCreate deep copy of object객체의 깊은 복사 생성
  • getByPath(obj: any, path: string): anyGet value by dot notation path점 표기법 경로로 값 가져오기
  • setByPath(obj: any, path: string, value: any): voidSet value by dot notation path점 표기법 경로로 값 설정
  • hasPath(obj: any, path: string): booleanCheck if path exists경로 존재 여부 확인
  • deletePath(obj: any, path: string): booleanDelete path from object객체에서 경로 삭제
  • evalScript(script: string, context: Record<string, any>): anyEvaluate script in context컨텍스트에서 스크립트 평가
  • merge<T>(target: T, ...sources: Partial<T>[]): TDeep merge objects객체 깊은 병합
  • pick<T, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>Pick properties from object객체에서 속성 선택
  • omit<T, K extends keyof T>(obj: T, keys: K[]): Omit<T, K>Omit properties from object객체에서 속성 제외

ConvertUtils

Utilities for converting data between different formats and types

다양한 형식과 타입 간 데이터 변환 유틸리티

OTHER FUNCTIONS기타 함수
  • toBase64(str: string): stringEncode string to Base64Encode string to Base64
  • fromBase64(str: string): stringDecode Base64 stringDecode Base64 string
  • toJSON(obj: any): stringConvert object to JSON string객체를 JSON 문자열로 변환
  • fromJSON<T>(json: string): TParse JSON string to objectParse JSON string to object
  • toNumber(value: any): numberConvert value to numberConvert value to number
  • toBoolean(value: any): booleanConvert value to booleanConvert value to boolean
  • toString(value: any): stringConvert value to stringConvert value to string
  • toArray<T>(value: T | T[]): T[]Convert value to arrayConvert value to array
  • hexToRgb(hex: string): { r: number, g: number, b: number }Convert hex color to RGB16진수 색상을 RGB로 변환
  • rgbToHex(r: number, g: number, b: number): stringConvert RGB to hex colorRGB를 16진수 색상으로 변환

FunctionUtils

Utilities for function manipulation and higher-order functions

함수 조작 및 고차 함수를 위한 유틸리티

OTHER FUNCTIONS기타 함수
  • debounce<T extends(...args: any[]) => any>(fn: T, delay: number): TDebounce function callsDebounce function calls
  • throttle<T extends(...args: any[]) => any>(fn: T, limit: number): TThrottle function callsThrottle function calls
  • memoize<T extends(...args: any[]) => any>(fn: T): TMemoize function results함수 결과 메모이제이션
  • once<T extends(...args: any[]) => any>(fn: T): TExecute function only once함수를 한 번만 실행
  • curry<T extends(...args: any[]) => any>(fn: T): anyCurry function함수 커링
  • compose<T>(...fns: Function[]): (arg: T) => anyCompose functions right-to-leftCompose functions right-to-left
  • pipe<T>(...fns: Function[]): (arg: T) => anyPipe functions left-to-rightPipe functions left-to-right
  • partial<T extends(...args: any[]) => any>(fn: T, ...args: any[]): TPartial applicationPartial application

MathUtil

Mathematical operations and calculations utilities

수학 연산 및 계산 유틸리티

OTHER FUNCTIONS기타 함수
  • clamp(value: number, min: number, max: number): numberClamp value between min and max값을 최소/최대 범위로 제한
  • lerp(start: number, end: number, t: number): numberLinear interpolation선형 보간
  • randomInt(min: number, max: number): numberRandom integer in range범위 내 무작위 정수
  • round(value: number, decimals: number): numberRound to decimal places소수점 자리수로 반올림
  • toRadians(degrees: number): numberConvert degrees to radians도를 라디안으로 변환
  • toDegrees(radians: number): numberConvert radians to degrees라디안을 도로 변환
  • average(...numbers: number[]): numberCalculate average평균 계산
  • sum(...numbers: number[]): numberCalculate sum합계 계산
  • max(...numbers: number[]): numberFind maximumFind maximum
  • min(...numbers: number[]): numberFind minimumFind minimum

DateUtils

Date formatting, parsing, and manipulation utilities

날짜 포맷팅, 파싱 및 조작 유틸리티

OTHER FUNCTIONS기타 함수
  • format(date: Date, format: string): stringFormat date to stringFormat date to string
  • parse(dateString: string, format: string): DateParse string to dateParse string to date
  • addDays(date: Date, days: number): DateAdd days to date날짜에 일수 추가
  • addMonths(date: Date, months: number): DateAdd months to date날짜에 월 추가
  • addYears(date: Date, years: number): DateAdd years to date날짜에 연도 추가
  • diffInDays(date1: Date, date2: Date): numberDifference in days일수 차이
  • diffInHours(date1: Date, date2: Date): numberDifference in hours시간 차이
  • isSameDay(date1: Date, date2: Date): booleanCheck if same day같은 날 확인
  • isToday(date: Date): booleanCheck if today오늘인지 확인
  • isFuture(date: Date): booleanCheck if future date미래 날짜 확인
  • isPast(date: Date): booleanCheck if past date과거 날짜 확인

URLUtils

URL parsing, building, and manipulation utilities

URL 파싱, 빌딩 및 조작 유틸리티

OTHER FUNCTIONS기타 함수
  • parseQuery(queryString: string): Record<string, string>Parse query string to objectParse query string to object
  • buildQuery(params: Record<string, any>): stringBuild query string from objectBuild query string from object
  • join(...parts: string[]): stringJoin URL partsJoin URL parts
  • getDomain(url: string): stringExtract domain from URLExtract domain from URL
  • getPath(url: string): stringExtract path from URLExtract path from URL
  • isAbsolute(url: string): booleanCheck if absolute URL절대 URL 확인
  • isRelative(url: string): booleanCheck if relative URL상대 URL 확인
  • addQueryParam(url: string, key: string, value: any): stringAdd query parameter쿼리 파라미터 추가
  • removeQueryParam(url: string, key: string): stringRemove query parameter쿼리 파라미터 제거

ValidUtils

Data validation and type checking utilities

데이터 검증 및 타입 체크 유틸리티

OTHER FUNCTIONS기타 함수
  • isEmail(value: string): booleanValidate email address이메일 주소 검증
  • isURL(value: string): booleanValidate URLURL 검증
  • isNumber(value: any): booleanCheck if number숫자 확인
  • isString(value: any): booleanCheck if string문자열 확인
  • isBoolean(value: any): booleanCheck if boolean불린 확인
  • isArray(value: any): booleanCheck if array배열 확인
  • isObject(value: any): booleanCheck if object객체 확인
  • isFunction(value: any): booleanCheck if function함수 확인
  • isEmpty(value: any): booleanCheck if empty (null, undefined, '', [], {})Check if empty (null, undefined, '', [], {})
  • isNull(value: any): booleanCheck if nullnull 확인
  • isUndefined(value: any): booleanCheck if undefinedundefined 확인
  • isNullOrUndefined(value: any): booleanCheck if null or undefinedCheck if null or undefined

RandomUtils

Random number and data generation utilities

난수 및 데이터 생성 유틸리티

OTHER FUNCTIONS기타 함수
  • int(min: number, max: number): numberRandom integer in range범위 내 무작위 정수
  • float(min: number, max: number): numberRandom float in rangeRandom float in range
  • string(length: number, charset?: string): stringRandom string무작위 문자열
  • uuid(): stringGenerate UUID v4Generate UUID v4
  • pick<T>(array: T[]): TPick random element from arrayPick random element from array
  • pickMultiple<T>(array: T[], count: number): T[]Pick multiple random elementsPick multiple random elements
  • boolean(): booleanRandom boolean무작위 불린
  • hexColor(): stringRandom hex color무작위 16진수 색상
  • date(start: Date, end: Date): DateRandom date in rangeRandom date in range

ImageUtils

Image processing and manipulation utilities

이미지 처리 및 조작 유틸리티

OTHER FUNCTIONS기타 함수
  • load(src: string): Promise<HTMLImageElement>Load image from URLURL에서 이미지 로드
  • resize(img: HTMLImageElement, width: number, height: number): Promise<HTMLCanvasElement>Resize image이미지 크기 조정
  • toBase64(img: HTMLImageElement | HTMLCanvasElement): stringConvert to base64Convert to base64
  • crop(img: HTMLImageElement, x: number, y: number, width: number, height: number): Promise<HTMLCanvasElement>Crop image이미지 자르기
  • rotate(img: HTMLImageElement, degrees: number): Promise<HTMLCanvasElement>Rotate image이미지 회전
  • flip(img: HTMLImageElement, horizontal: boolean, vertical: boolean): Promise<HTMLCanvasElement>Flip image이미지 뒤집기

ReflectUtils

Runtime reflection and metadata utilities for dynamic programming

동적 프로그래밍을 위한 런타임 리플렉션 및 메타데이터 유틸리티

OTHER FUNCTIONS기타 함수
  • getMetadata(key: any, target: any, propertyKey?: string | symbol): anyGet metadata메타데이터 가져오기
  • defineMetadata(key: any, value: any, target: any, propertyKey?: string | symbol): voidDefine metadata메타데이터 정의
  • hasMetadata(key: any, target: any, propertyKey?: string | symbol): booleanCheck metadata existence메타데이터 존재 확인
  • getOwnPropertyNames(obj: any): string[]Get own property namesGet own property names
  • getOwnPropertyDescriptor(obj: any, prop: string): PropertyDescriptor | undefinedGet property descriptor속성 설명자 가져오기
  • getPrototypeOf(obj: any): anyGet prototype프로토타입 가져오기
  • setPrototypeOf(obj: any, proto: any): anySet prototype프로토타입 설정

Expression

Dynamic expression evaluation and parsing utilities with template binding

템플릿 바인딩을 사용한 동적 표현식 평가 및 파싱 유틸리티

OTHER FUNCTIONS기타 함수
  • constructor(expression: string)Create expression표현식 생성
  • evaluate(context: Record<string, any>): anyEvaluate expression in contextEvaluate expression in context
  • compile(): FunctionCompile expression to functionCompile expression to function
  • getVariables(): string[]Get variable names used in expressionGet variable names used in expression

Programming Patterns

Design patterns and programming concepts for better code structure

더 나은 코드 구조를 위한 디자인 패턴 및 프로그래밍 개념

Advice

Abstract interface for structured exception handling with advice pattern

어드바이스 패턴을 사용한 구조화된 예외 처리를 위한 추상 인터페이스

INTERFACE METHODS인터페이스 메서드
  • before(input: T): voidExecute before main logic메인 로직 전 실행
  • after(result: R): voidExecute after main logic메인 로직 후 실행
  • execute(input: T): RMain execution logic메인 실행 로직

Convenience Classes

Convenience classes and utilities for common programming patterns

일반적인 프로그래밍 패턴을 위한 편의 클래스 및 유틸리티

Optional

Null-safe value handling with Optional pattern to prevent null pointer exceptions

null 포인터 예외를 방지하기 위한 Optional 패턴의 null-safe 값 처리

METHODS메서드
  • static of<T>(value: T): Optional<T>Create Optional with value값으로 Optional 생성
  • static empty<T>(): Optional<T>Create empty Optional빈 Optional 생성
  • static ofNullable<T>(value: T | null | undefined): Optional<T>Create Optional from nullablenullable에서 Optional 생성
  • isPresent(): booleanCheck if value exists값 존재 확인
  • isEmpty(): booleanCheck if value is absent값 부재 확인
  • get(): TGet value or throw값 가져오기 또는 예외 발생
  • orElse(defaultValue: T): TGet value or default값 가져오기 또는 기본값
  • orElseGet(supplier: () => T): TGet value or compute default값 가져오기 또는 기본값 계산
  • orElseThrow(errorSupplier: () => Error): TGet value or throw error값 가져오기 또는 에러 발생
  • map<U>(mapper: (value: T) => U): Optional<U>Transform value값 변환
  • flatMap<U>(mapper: (value: T) => Optional<U>): Optional<U>Transform and flatten변환 및 평탄화
  • filter(predicate: (value: T) => boolean): Optional<T>Filter value값 필터링
  • ifPresent(consumer: (value: T) => void): voidExecute if present존재하면 실행

Entity - Point2D, Point3D, Rect, Vector

Mathematical entities for 2D/3D graphics and calculations

2D/3D 그래픽 및 계산을 위한 수학적 엔티티

CLASSES & METHODS클래스 및 메서드
  • Point2D:constructor(x: number, y: number),distanceTo(other: Point2D): number,add(other: Point2D): Point2D
  • Point3D:constructor(x: number, y: number, z: number),distanceTo(other: Point3D): number
  • Rect:constructor(x: number, y: number, width: number, height: number),contains(point: Point2D): boolean
  • Vector:constructor(x: number, y: number, z: number),dot(other: Vector): number,cross(other: Vector): Vector
  • Polygon:constructor(points: Point2D[]),area(): number
  • Ellipse:constructor(center: Point2D, radiusX: number, radiusY: number)

Code Standards

Standardized code definitions and constants

표준화된 코드 정의 및 상수

ISO 3166-1

ISO 3166-1 standard country codes with alpha2, alpha3, numeric codes and metadata

alpha2, alpha3, 숫자 코드 및 메타데이터를 포함한 ISO 3166-1 표준 국가 코드

METHODS메서드
  • static getByAlpha2(code: string): Country | undefinedGet country by 2-letter codeGet country by 2-letter code
  • static getByAlpha3(code: string): Country | undefinedGet country by 3-letter codeGet country by 3-letter code
  • static getByNumeric(code: string): Country | undefinedGet country by numeric codeGet country by numeric code
  • static getAll(): Country[]Get all countriesGet all countries
  • static isValid(code: string): booleanValidate country codeValidate country code

Collections

Data structures and collection utilities

자료 구조 및 컬렉션 유틸리티

AsyncBlockingQueue

Asynchronous blocking queue for producer-consumer patterns

생산자-소비자 패턴을 위한 비동기 블로킹 큐

METHODS메서드
  • constructor(capacity?: number)Create queue with optional capacityCreate queue with optional capacity
  • enqueue(item: T): Promise<void>Add item (waits if full)Add item (waits if full)
  • dequeue(): Promise<T>Remove and return item (waits if empty)Remove and return item (waits if empty)
  • tryEnqueue(item: T): booleanTry to add item without waitingTry to add item without waiting
  • tryDequeue(): T | undefinedTry to remove item without waitingTry to remove item without waiting
  • size(): numberGet current sizeGet current size
  • isEmpty(): booleanCheck if emptyCheck if empty
  • isFull(): booleanCheck if fullCheck if full
  • clear(): voidClear all itemsClear all items

Range

Range generation and iterator utilities for efficient data processing

효율적인 데이터 처리를 위한 범위 생성 및 반복자 유틸리티

METHODS메서드
  • static create(start: number, end: number, step?: number): Iterable<number>Create range iteratorCreate range iterator
  • static toArray(start: number, end: number, step?: number): number[]Create range as arrayCreate range as array
  • static map<T>(start: number, end: number, fn: (i: number) => T): T[]Map over rangeMap over range
  • static forEach(start: number, end: number, fn: (i: number) => void): voidIterate over rangeIterate over range

Managers

Management utilities for complex operations and state handling

복잡한 작업 및 상태 처리를 위한 관리 유틸리티

TransactionManager

Transaction management utilities for data consistency with try-catch-finally pattern

try-catch-finally 패턴을 사용한 데이터 일관성을 위한 트랜잭션 관리 유틸리티

METHODS메서드
  • execute<T>(fn: (tx: Transaction) => Promise<T>): Promise<T>Execute in transactionExecute in transaction
  • begin(): Promise<Transaction>Begin transactionBegin transaction
  • commit(tx: Transaction): Promise<void>Commit transactionCommit transaction
  • rollback(tx: Transaction): Promise<void>Rollback transactionRollback transaction

Schedule

Task scheduling and timing utilities for background operations with cron-like specs

cron과 유사한 사양의 백그라운드 작업을 위한 작업 스케줄링 및 타이밍 유틸리티

METHODS메서드
  • static interval(fn: () => void, ms: number): TaskSchedule recurring taskSchedule recurring task
  • static timeout(fn: () => void, ms: number): TaskSchedule one-time taskSchedule one-time task
  • static cron(spec: string, fn: () => void): TaskSchedule with cron expressionSchedule with cron expression
  • static immediate(fn: () => void): TaskRun task immediatelyRun task immediately
  • cancel(): voidCancel scheduled taskCancel scheduled task

Providers

Service providers and infrastructure utilities

서비스 프로바이더 및 인프라 유틸리티

Logger

Comprehensive logging utilities with configurable levels and formatting

구성 가능한 레벨 및 포맷팅을 갖춘 포괄적인 로깅 유틸리티

METHODS메서드
  • constructor(name: string)Create logger with nameCreate logger with name
  • debug(message: string, ...args: any[]): voidLog debug messageLog debug message
  • info(message: string, ...args: any[]): voidLog info messageLog info message
  • warn(message: string, ...args: any[]): voidLog warning messageLog warning message
  • error(message: string, error?: Error, ...args: any[]): voidLog error messageLog error message
  • setLevel(level: 'debug' | 'info' | 'warn' | 'error'): voidSet log levelSet log level
  • setFormatter(formatter: (level: string, message: string) => string): voidSet custom formatterSet custom formatter

MemoryStorage

In-memory storage and data persistence utilities

인메모리 스토리지 및 데이터 지속성 유틸리티

METHODS메서드
  • set(key: string, value: any): voidStore valueStore value
  • get<T>(key: string): T | undefinedRetrieve valueRetrieve value
  • has(key: string): booleanCheck if key existsCheck if key exists
  • remove(key: string): booleanRemove valueRemove value
  • clear(): voidClear all valuesClear all values
  • keys(): string[]Get all keysGet all keys
  • values(): any[]Get all valuesGet all values
  • size(): numberGet storage sizeGet storage size

HttpFetcher / HttpJsonFetcher

HTTP request utilities and API communication helpers

HTTP 요청 유틸리티 및 API 통신 헬퍼

METHODS메서드
  • constructor(baseUrl: string, options?: RequestInit)Create fetcher with base URLCreate fetcher with base URL
  • get<T>(path: string, options?: RequestInit): Promise<T>GET requestGET request
  • post<T>(path: string, body: any, options?: RequestInit): Promise<T>POST requestPOST request
  • put<T>(path: string, body: any, options?: RequestInit): Promise<T>PUT requestPUT request
  • delete<T>(path: string, options?: RequestInit): Promise<T>DELETE requestDELETE request
  • patch<T>(path: string, body: any, options?: RequestInit): Promise<T>PATCH requestPATCH request

Async & Promise

Asynchronous programming and promise utilities

비동기 프로그래밍 및 프로미스 유틸리티

PromiseUtils & Result

Advanced promise handling including sleep, settle, loop operations, and Result utilities for state management

sleep, settle, 루프 작업을 포함한 고급 프로미스 처리 및 상태 관리를 위한 Result 유틸리티

METHODS메서드
  • static sleep(ms: number): Promise<void>Sleep for millisecondsSleep for milliseconds
  • static settle<T>(promises: Promise<T>[]): Promise<SettledResult<T>[]>Settle all promisesSettle all promises
  • static retry<T>(fn: () => Promise<T>, options: RetryOptions): Promise<T>Retry with backoffRetry with backoff
  • static timeout<T>(promise: Promise<T>, ms: number): Promise<T>Add timeout to promiseAdd timeout to promise
  • static loop<T>(fn: () => Promise<T>, condition: (result: T) => boolean): Promise<T>Loop until conditionLoop until condition
  • Result:Result.ok<T>(value: T): Result<T, never>- Create success result
  • Result:Result.err<E>(error: E): Result<never, E>- Create error result
  • isOk(): boolean,isErr(): boolean,unwrap(): T,unwrapOr(defaultValue: T): T

Observable / Subject

Reactive programming utilities with Subject pattern for event handling

이벤트 처리를 위한 Subject 패턴의 반응형 프로그래밍 유틸리티

CLASSES & METHODS클래스 및 메서드
  • Subject:next(value: T): void,subscribe(observer: Observer<T>): Subscription,complete(): void
  • BehaviorSubject:constructor(initialValue: T),getValue(): T
  • ReplaySubject:constructor(bufferSize?: number)
  • AsyncSubject:Emits only the last value on completion
  • Observable:subscribe(observer: Observer<T>): Subscription
  • Operators:map,filter,debounce,throttle,distinctUntilChanged