@adstage/web-sdk 1.3.3 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/README.md +178 -35
  2. package/dist/index.cjs.js +810 -481
  3. package/dist/index.d.ts +286 -97
  4. package/dist/index.esm.js +794 -457
  5. package/dist/index.standalone.js +794 -457
  6. package/package.json +2 -2
  7. package/src/constants/endpoints.ts +93 -0
  8. package/src/core/AdStage.ts +128 -0
  9. package/src/index.ts +14 -413
  10. package/src/managers/{slider-manager.ts → carousel-slider-manager.ts} +9 -8
  11. package/src/managers/event-tracker.ts +2 -4
  12. package/src/managers/{fade-slider-manager.ts → text-transition-manager.ts} +7 -7
  13. package/src/modules/ads/AdsModule.ts +525 -0
  14. package/src/modules/config/ConfigModule.ts +124 -0
  15. package/src/modules/deeplinks/DeeplinksModule.ts +0 -0
  16. package/src/modules/events/EventsModule.ts +106 -0
  17. package/src/types/config.ts +74 -3
  18. package/src/types/index.ts +2 -1
  19. package/src/utils/api-headers.ts +52 -0
  20. package/src/utils/dom-utils.ts +93 -0
  21. package/examples/README.md +0 -33
  22. package/examples/banner-ads.html +0 -512
  23. package/examples/index.html +0 -338
  24. package/examples/native-ads.html +0 -634
  25. package/examples/react-app/README.md +0 -70
  26. package/examples/react-app/index.html +0 -13
  27. package/examples/react-app/package-lock.json +0 -3042
  28. package/examples/react-app/package.json +0 -26
  29. package/examples/react-app/pnpm-lock.yaml +0 -1857
  30. package/examples/react-app/public/index.standalone.js +0 -2331
  31. package/examples/react-app/src/App.tsx +0 -226
  32. package/examples/react-app/src/index.css +0 -37
  33. package/examples/react-app/src/main.tsx +0 -10
  34. package/examples/react-app/tsconfig.json +0 -25
  35. package/examples/react-app/tsconfig.node.json +0 -10
  36. package/examples/react-app/vite.config.ts +0 -15
  37. package/examples/react-nextjs/app/globals.css +0 -200
  38. package/examples/react-nextjs/app/layout.tsx +0 -27
  39. package/examples/react-nextjs/app/page.tsx +0 -258
  40. package/examples/react-nextjs/next.config.js +0 -9
  41. package/examples/react-nextjs/package.json +0 -22
  42. package/examples/react-nextjs/pnpm-lock.yaml +0 -343
  43. package/examples/react-nextjs/tsconfig.json +0 -34
  44. package/examples/text-ads.html +0 -597
  45. package/examples/video-ads.html +0 -739
  46. package/src/react/components/AdErrorBoundary.tsx +0 -75
  47. package/src/react/components/AdSlot.tsx +0 -144
  48. package/src/react/components/BannerAd.tsx +0 -24
  49. package/src/react/components/InterstitialAd.tsx +0 -24
  50. package/src/react/components/NativeAd.tsx +0 -24
  51. package/src/react/components/TextAd.tsx +0 -24
  52. package/src/react/components/VideoAd.tsx +0 -24
  53. package/src/react/components/index.ts +0 -8
  54. package/src/react/hooks/index.ts +0 -4
  55. package/src/react/hooks/useAdSlot.ts +0 -83
  56. package/src/react/hooks/useAdStage.ts +0 -14
  57. package/src/react/hooks/useAdTracking.ts +0 -61
  58. package/src/react/index.ts +0 -4
  59. package/src/react/providers/AdStageProvider.tsx +0 -86
  60. package/src/react/providers/index.ts +0 -2
  61. package/src/utils/sdk-standalone.ts +0 -155
package/README.md CHANGED
@@ -1,15 +1,21 @@
1
1
  # AdStage Web SDK
2
2
 
3
- > 🚀 **v1.2.0**: Standalone-First API로 더욱 간단해졌습니다!
3
+ > **확장 가능한 네임스페이스 아키텍처**로 구현된 AdStage Web SDK
4
4
 
5
- 모든 웹 프레임워크에서 사용 가능한 AdStage 광고 SDK입니다.
5
+ # AdStage Web SDK
6
+
7
+ > **동기 초기화**와 **네임스페이스 아키텍처**로 구현된 AdStage Web SDK
8
+
9
+ ## 🚀 새로운 기능
6
10
 
7
- ## 🎯 특징
11
+ ### 즉시 사용 가능 (동기 API)
12
+ - **⚡ 동기 초기화** - `await` 없이 즉시 사용 가능
13
+ - **🎯 ads** - 광고 관리 (배너, 텍스트, 비디오, 네이티브, 전면)
14
+ - **⚙️ config** - SDK 설정 및 선택적 API 키 검증
15
+ - **🏃‍♂️ Lazy 로딩** - 즉시 placeholder 표시, 백그라운드 광고 로드
8
16
 
9
- - **프레임워크 독립적**: React, Vue, Angular, Vanilla JS 모든 환경 지원
10
- - **초간단 API**: Provider나 Hook 없이 함수 호출만으로 사용
11
- - **자동 최적화**: 중복 방지, ID 자동 생성, 스마트 캐싱
12
- - **완전한 TypeScript 지원**
17
+ ### 📅 구현 예정 모듈 (기본 구조 완성)
18
+ - **📊 events** - 이벤트 추적 시스템 (Q1 2025)
13
19
 
14
20
  ## 📦 설치
15
21
 
@@ -17,46 +23,183 @@
17
23
  npm install @adstage/web-sdk
18
24
  ```
19
25
 
20
- ## 🚀 빠른 시작
26
+ ## 🎯 빠른 시작
21
27
 
22
- ### 1. SDK 초기화
23
- ```javascript
24
- import { initAdStage } from '@adstage/web-sdk';
28
+ ### 네임스페이스 API (권장)
29
+
30
+ ```typescript
31
+ import { AdStage } from '@adstage/web-sdk';
32
+
33
+ // 1. 즉시 초기화 (동기)
34
+ AdStage.init({
35
+ apiKey: 'your-api-key',
36
+ debug: true,
37
+ modules: ['ads', 'events'], // 필요한 모듈만 로드
38
+ validateOnInit: false // 기본값: 즉시 사용 가능
39
+ });
25
40
 
26
- await initAdStage({
27
- apiKey: 'your-api-key'
41
+ // 2. 즉시 광고 생성 (동기)
42
+ const bannerId = AdStage.ads.banner('banner-container', {
43
+ width: '100%',
44
+ height: 250,
45
+ autoSlide: true
28
46
  });
47
+
48
+ const textId = AdStage.ads.text('text-container', {
49
+ maxLines: 3,
50
+ style: 'card'
51
+ });
52
+
53
+ // 3. 이벤트 추적 (향후 구현)
54
+ AdStage.events.track('page_view', {
55
+ page: '/products'
56
+ });
57
+
58
+ // 4. 광고 관리
59
+ AdStage.ads.refresh('slot-id');
60
+ AdStage.ads.destroy('slot-id');
61
+ const allSlots = AdStage.ads.getAllSlots();
29
62
  ```
30
63
 
31
- ### 2. 광고 생성
32
- ```javascript
33
- import { createBanner } from '@adstage/web-sdk';
64
+ ### 간단한 사용법
34
65
 
35
- // HTML에 <div id="banner"></div> 준비 후
36
- await createBanner('banner');
66
+ ```typescript
67
+ import { AdStage } from '@adstage/web-sdk';
68
+
69
+ // 1. 즉시 초기화 (동기)
70
+ AdStage.init({
71
+ apiKey: 'your-api-key',
72
+ debug: true
73
+ });
74
+
75
+ // 2. 즉시 광고 생성 (동기)
76
+ const bannerId = AdStage.ads.banner('banner-container', {
77
+ width: '100%',
78
+ height: 250
79
+ });
80
+
81
+ const textId = AdStage.ads.text('text-container', {
82
+ maxLines: 3,
83
+ style: 'card'
84
+ });
37
85
  ```
38
86
 
39
- ### 3. 이벤트 추적
40
- ```javascript
41
- import { trackEvent } from '@adstage/web-sdk';
87
+ ## 🏗 아키텍처 특징
88
+
89
+ ### 1. 모듈 독립성
90
+ ```typescript
91
+ // 필요한 모듈만 선택적 로드
92
+ AdStage.init({
93
+ modules: ['ads'] // ads 모듈만 로드 (~15KB)
94
+ });
42
95
 
43
- trackEvent('button_click', { page: 'home' });
96
+ AdStage.init({
97
+ modules: ['ads', 'events', 'config'] // 필요한 모듈만 (~25KB)
98
+ });
44
99
  ```
45
100
 
46
- ## 📋 API 레퍼런스
101
+ ### 2. 타입 안전성
102
+ ```typescript
103
+ // TypeScript 완전 지원
104
+ interface AdStageConfig {
105
+ apiKey: string;
106
+ debug?: boolean;
107
+ modules?: ModuleName[];
108
+ }
109
+
110
+ // 자동완성 지원
111
+ AdStage.ads.banner('container', {
112
+ width: '100%', // ✅ string
113
+ height: 250, // ✅ number
114
+ autoSlide: true // ✅ boolean
115
+ });
116
+ ```
117
+
118
+ ### 3. 네임스페이스 보호
119
+ ```typescript
120
+ // 충돌 방지 - 모든 기능이 AdStage 하위에 있음
121
+ AdStage.ads.create() // 다른 라이브러리와 충돌 없음
122
+ AdStage.events.track() // 안전한 네임스페이스
123
+ AdStage.users.identify() // 일관된 API 패턴
124
+ ```
125
+
126
+ ## 📊 번들 크기
127
+
128
+ | 모듈 구성 | 크기 | 설명 |
129
+ |-----------|------|------|
130
+ | `['ads']` | ~15KB | 광고 기능만 |
131
+ | `['ads', 'events']` | ~23KB | 광고 + 이벤트 |
132
+ | `['ads', 'events', 'config']` | ~28KB | 모든 기능 포함 |
133
+
134
+ ## 🔮 향후 구현 계획
135
+
136
+ ### Q1 2025: 이벤트 시스템
137
+ ```typescript
138
+ // 기본 이벤트 추적 (동기)
139
+ AdStage.events.track('page_view', { page: '/products' });
140
+ AdStage.events.userAction('button_click', { button_id: 'cta' });
141
+
142
+ // 배치 처리
143
+ AdStage.events.batch.start();
144
+ AdStage.events.batch.add('event', { data: 'value' });
145
+ AdStage.events.batch.flush(); // 백그라운드 전송
146
+ ```
147
+
148
+ ## 🎯 현재 상태
149
+
150
+ ### ✅ 완료된 작업
151
+ - [x] 네임스페이스 아키텍처 설계
152
+ - [x] **동기 초기화 시스템** (await 없는 즉시 사용 가능)
153
+ - [x] **ads 모듈 완전 구현** (배너, 텍스트, 비디오, 네이티브, 전면)
154
+ - [x] **config 모듈 완전 구현** (동기 초기화, 선택적 검증)
155
+ - [x] events 모듈 기본 구조 및 인터페이스
156
+ - [x] **Lazy 로딩 시스템** (즉시 placeholder, 백그라운드 광고 로드)
157
+ - [x] TypeScript 타입 정의
158
+ - [x] 예제 및 문서
159
+
160
+ ### 🚧 진행 중
161
+ - [ ] AdsModule 통합 테스트
162
+ - [ ] ConfigModule API 연동 테스트
163
+
164
+ ### 📋 다음 단계
165
+ 1. **Q1 2025**: EventsModule 완전 구현
166
+
167
+ ## 🛠 개발 가이드
168
+
169
+ ### 프로젝트 구조
170
+ ```
171
+ src/
172
+ ├── core/
173
+ │ └── AdStage.ts # 메인 네임스페이스 클래스
174
+ ├── modules/
175
+ │ ├── ads/ # ✅ 완전 구현됨 (동기)
176
+ │ ├── config/ # ✅ 완전 구현됨 (동기)
177
+ │ └── events/ # 🚧 기본 구조 (Q1 2025)
178
+ ├── types/
179
+ │ ├── config.ts # 설정 및 기본 타입
180
+ │ └── advertisement.ts # 광고 관련 타입
181
+ ├── constants/
182
+ │ └── endpoints.ts # API 엔드포인트 관리
183
+ └── index.ts # 메인 익스포트 (순수 네임스페이스만)
184
+ ```
185
+
186
+ ### 명명 규칙
187
+ - **클래스/네임스페이스**: `AdStage` (대문자)
188
+ - **타입**: `AdStageConfig` (대문자)
189
+ - **함수/변수**: `adstageInit`, `adstageConfig` (camelCase)
190
+
191
+ ## 📄 라이선스
192
+
193
+ MIT License
47
194
 
48
- ### 초기화
49
- - `initAdStage(config)` - SDK 초기화
50
- - `isAdStageReady()` - 초기화 상태 확인
195
+ ## 🤝 기여하기
51
196
 
52
- ### 광고 생성
53
- - `createBanner(containerId, options?)` - 배너 광고
54
- - `createTextAd(containerId, options?)` - 텍스트 광고
55
- - `createVideoAd(containerId, options?)` - 비디오 광고
197
+ 1. Fork the repository
198
+ 2. Create your feature branch (`git checkout -b feature/amazing-feature`)
199
+ 3. Commit your changes (`git commit -m 'Add amazing feature'`)
200
+ 4. Push to the branch (`git push origin feature/amazing-feature`)
201
+ 5. Open a Pull Request
56
202
 
57
- ### 유틸리티
58
- - `trackEvent(name, params?)` - 이벤트 추적
59
- - `getAdStageInstance()` - SDK 인스턴스 (고급)
60
- - `destroyAdStage()` - SDK 정리
203
+ ---
61
204
 
62
- 자세한 사용법은 [STANDALONE_GUIDE.md](./STANDALONE_GUIDE.md)를 참고하세요.
205
+ **AdStage Web SDK** - 모든 AdStage 기능을 통합한 확장 가능한 SDK