낡거나 부재한 Angular 래퍼 라이브러리로 인해 발생하는 3rd-party JS 라이브러리 통합의 어려움(아키텍처 불일치, 강한 결합, 중앙 집중식 설정 부재)을 해결하기 위해 현대적인 Angular 스탠드얼론 API 기반의 래퍼 라이브러리 개발을 목표로 합니다. 😔🚀
ng generate library 명령어를 통해 Angular 라이브러리를 생성하고, filestack-js를 peerDependency로 추가하며, 불필요한 파일을 정리하고 public-api.ts를 설정하는 등 초기 환경을 구축합니다. 📦🛠️
provideFilestack() 함수와 FILESTACK_CLIENT 주입 토큰을 사용하여 Filestack 클라이언트 초기화 및 설정을 추상화합니다. useFactory와 makeEnvironmentProviders를 활용하여 재사용 가능하고 확장 가능한 전역 설정을 제공하며, app.config.ts에서 쉽게 통합할 수 있도록 합니다. 🔑🌳
FilestackService를 도입하여 Filestack 클라이언트와의 직접적인 상호작용을 더욱 추상화합니다. 이 서비스는 configurePicker() 메서드를 통해 기본 피커 옵션과 사용자 정의 옵션을 병합하여 재사용 가능한 피커 설정을 제공합니다. 🌟🔄
public-api.ts를 통해 라이브러리 소비자가 접근할 수 있는 API(예: provideFilestack 함수와 FilestackService)를 명확히 정의하고, 내부 구현(예: FILESTACK_CLIENT 토큰)은 숨겨 라이브러리 사용의 혼란을 줄이고 안전성을 높입니다. 🔒💡
FILESTACK_BASE_PICKER_OPTIONS 주입 토큰을 사용하여 FilestackService 내의 하드코딩된 기본 피커 옵션을 외부에서 재정의할 수 있도록 합니다. 이를 통해 라이브러리 소비자가 서비스의 소스 코드를 변경하지 않고도 기본 동작을 유연하게 구성할 수 있습니다. 🧩⚙️