@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.
- package/README.md +178 -35
- package/dist/index.cjs.js +810 -481
- package/dist/index.d.ts +286 -97
- package/dist/index.esm.js +794 -457
- package/dist/index.standalone.js +794 -457
- package/package.json +2 -2
- package/src/constants/endpoints.ts +93 -0
- package/src/core/AdStage.ts +128 -0
- package/src/index.ts +14 -413
- package/src/managers/{slider-manager.ts → carousel-slider-manager.ts} +9 -8
- package/src/managers/event-tracker.ts +2 -4
- package/src/managers/{fade-slider-manager.ts → text-transition-manager.ts} +7 -7
- package/src/modules/ads/AdsModule.ts +525 -0
- package/src/modules/config/ConfigModule.ts +124 -0
- package/src/modules/deeplinks/DeeplinksModule.ts +0 -0
- package/src/modules/events/EventsModule.ts +106 -0
- package/src/types/config.ts +74 -3
- package/src/types/index.ts +2 -1
- package/src/utils/api-headers.ts +52 -0
- package/src/utils/dom-utils.ts +93 -0
- package/examples/README.md +0 -33
- package/examples/banner-ads.html +0 -512
- package/examples/index.html +0 -338
- package/examples/native-ads.html +0 -634
- package/examples/react-app/README.md +0 -70
- package/examples/react-app/index.html +0 -13
- package/examples/react-app/package-lock.json +0 -3042
- package/examples/react-app/package.json +0 -26
- package/examples/react-app/pnpm-lock.yaml +0 -1857
- package/examples/react-app/public/index.standalone.js +0 -2331
- package/examples/react-app/src/App.tsx +0 -226
- package/examples/react-app/src/index.css +0 -37
- package/examples/react-app/src/main.tsx +0 -10
- package/examples/react-app/tsconfig.json +0 -25
- package/examples/react-app/tsconfig.node.json +0 -10
- package/examples/react-app/vite.config.ts +0 -15
- package/examples/react-nextjs/app/globals.css +0 -200
- package/examples/react-nextjs/app/layout.tsx +0 -27
- package/examples/react-nextjs/app/page.tsx +0 -258
- package/examples/react-nextjs/next.config.js +0 -9
- package/examples/react-nextjs/package.json +0 -22
- package/examples/react-nextjs/pnpm-lock.yaml +0 -343
- package/examples/react-nextjs/tsconfig.json +0 -34
- package/examples/text-ads.html +0 -597
- package/examples/video-ads.html +0 -739
- package/src/react/components/AdErrorBoundary.tsx +0 -75
- package/src/react/components/AdSlot.tsx +0 -144
- package/src/react/components/BannerAd.tsx +0 -24
- package/src/react/components/InterstitialAd.tsx +0 -24
- package/src/react/components/NativeAd.tsx +0 -24
- package/src/react/components/TextAd.tsx +0 -24
- package/src/react/components/VideoAd.tsx +0 -24
- package/src/react/components/index.ts +0 -8
- package/src/react/hooks/index.ts +0 -4
- package/src/react/hooks/useAdSlot.ts +0 -83
- package/src/react/hooks/useAdStage.ts +0 -14
- package/src/react/hooks/useAdTracking.ts +0 -61
- package/src/react/index.ts +0 -4
- package/src/react/providers/AdStageProvider.tsx +0 -86
- package/src/react/providers/index.ts +0 -2
- package/src/utils/sdk-standalone.ts +0 -155
package/README.md
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
# AdStage Web SDK
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> **확장 가능한 네임스페이스 아키텍처**로 구현된 AdStage Web SDK
|
|
4
4
|
|
|
5
|
-
|
|
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
|
-
|
|
10
|
-
-
|
|
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
|
-
###
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
27
|
-
|
|
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
|
-
###
|
|
32
|
-
```javascript
|
|
33
|
-
import { createBanner } from '@adstage/web-sdk';
|
|
64
|
+
### 간단한 사용법
|
|
34
65
|
|
|
35
|
-
|
|
36
|
-
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
87
|
+
## 🏗 아키텍처 특징
|
|
88
|
+
|
|
89
|
+
### 1. 모듈 독립성
|
|
90
|
+
```typescript
|
|
91
|
+
// 필요한 모듈만 선택적 로드
|
|
92
|
+
AdStage.init({
|
|
93
|
+
modules: ['ads'] // ads 모듈만 로드 (~15KB)
|
|
94
|
+
});
|
|
42
95
|
|
|
43
|
-
|
|
96
|
+
AdStage.init({
|
|
97
|
+
modules: ['ads', 'events', 'config'] // 필요한 모듈만 (~25KB)
|
|
98
|
+
});
|
|
44
99
|
```
|
|
45
100
|
|
|
46
|
-
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
205
|
+
**AdStage Web SDK** - 모든 AdStage 기능을 통합한 확장 가능한 SDK
|