@akross/artemis-ads-sdk 3.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 +662 -0
- package/dist/ads-core/AdsManager.d.ts +14 -0
- package/dist/ads-core/AdsManager.d.ts.map +1 -0
- package/dist/ads-core/index.d.ts +5 -0
- package/dist/ads-core/index.d.ts.map +1 -0
- package/dist/ads-core/util/AADeviceContextHelper.d.ts +30 -0
- package/dist/ads-core/util/AADeviceContextHelper.d.ts.map +1 -0
- package/dist/ads-core/util/AAMediaTypeValidator.d.ts +27 -0
- package/dist/ads-core/util/AAMediaTypeValidator.d.ts.map +1 -0
- package/dist/ads-core/util/index.d.ts +3 -0
- package/dist/ads-core/util/index.d.ts.map +1 -0
- package/dist/akross-ads-sdk.esm.js +1 -0
- package/dist/akross-ads-sdk.iife.js +1 -0
- package/dist/akross-ads-sdk.min.js +1 -0
- package/dist/akross-ads-sdk.umd.js +1 -0
- package/dist/constants/ErrorMessages.d.ts +10 -0
- package/dist/constants/ErrorMessages.d.ts.map +1 -0
- package/dist/core/AAManager.d.ts +23 -0
- package/dist/core/AAManager.d.ts.map +1 -0
- package/dist/core/network/ApiFactory.d.ts +16 -0
- package/dist/core/network/ApiFactory.d.ts.map +1 -0
- package/dist/core/network/ServicesAds.d.ts +15 -0
- package/dist/core/network/ServicesAds.d.ts.map +1 -0
- package/dist/core/network/index.d.ts +5 -0
- package/dist/core/network/index.d.ts.map +1 -0
- package/dist/core/network/interceptor/RestInterceptor.d.ts +6 -0
- package/dist/core/network/interceptor/RestInterceptor.d.ts.map +1 -0
- package/dist/events/AAEventsCallbackHelper.d.ts +48 -0
- package/dist/events/AAEventsCallbackHelper.d.ts.map +1 -0
- package/dist/events/index.d.ts +2 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/modules/image/ArtemisAdsBannerLoader.d.ts +31 -0
- package/dist/modules/image/ArtemisAdsBannerLoader.d.ts.map +1 -0
- package/dist/modules/image/index.d.ts +3 -0
- package/dist/modules/image/index.d.ts.map +1 -0
- package/dist/modules/index.d.ts +3 -0
- package/dist/modules/index.d.ts.map +1 -0
- package/dist/modules/rv/index.d.ts +3 -0
- package/dist/modules/rv/index.d.ts.map +1 -0
- package/dist/modules/rv/programmatic/AARewardedVideo.d.ts +24 -0
- package/dist/modules/rv/programmatic/AARewardedVideo.d.ts.map +1 -0
- package/dist/modules/rv/programmatic/GAMRewardedVideoWrapper.d.ts +32 -0
- package/dist/modules/rv/programmatic/GAMRewardedVideoWrapper.d.ts.map +1 -0
- package/dist/modules/rv/programmatic/index.d.ts +4 -0
- package/dist/modules/rv/programmatic/index.d.ts.map +1 -0
- package/dist/modules/rv/programmatic/utils/WaterfallResultHelper.d.ts +23 -0
- package/dist/modules/rv/programmatic/utils/WaterfallResultHelper.d.ts.map +1 -0
- package/dist/modules/rv/programmatic/utils/index.d.ts +2 -0
- package/dist/modules/rv/programmatic/utils/index.d.ts.map +1 -0
- package/dist/modules/rv/vast/AAVastPlayer.d.ts +52 -0
- package/dist/modules/rv/vast/AAVastPlayer.d.ts.map +1 -0
- package/dist/modules/rv/vast/AAVastPlayerUI.d.ts +19 -0
- package/dist/modules/rv/vast/AAVastPlayerUI.d.ts.map +1 -0
- package/dist/modules/rv/vast/index.d.ts +2 -0
- package/dist/modules/rv/vast/index.d.ts.map +1 -0
- package/dist/types/ArtemisSdkConfig.d.ts +19 -0
- package/dist/types/ArtemisSdkConfig.d.ts.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/models/AAAdWatchResult.d.ts +14 -0
- package/dist/types/models/AAAdWatchResult.d.ts.map +1 -0
- package/dist/types/models/AABenefitOffer.d.ts +11 -0
- package/dist/types/models/AABenefitOffer.d.ts.map +1 -0
- package/dist/types/models/AACampaign.d.ts +16 -0
- package/dist/types/models/AACampaign.d.ts.map +1 -0
- package/dist/types/models/AACampaignConfig.d.ts +15 -0
- package/dist/types/models/AACampaignConfig.d.ts.map +1 -0
- package/dist/types/models/AACampaignRequest.d.ts +12 -0
- package/dist/types/models/AACampaignRequest.d.ts.map +1 -0
- package/dist/types/models/AACampaignResponse.d.ts +13 -0
- package/dist/types/models/AACampaignResponse.d.ts.map +1 -0
- package/dist/types/models/AACampaignResult.d.ts +15 -0
- package/dist/types/models/AACampaignResult.d.ts.map +1 -0
- package/dist/types/models/AACampaignStatus.d.ts +6 -0
- package/dist/types/models/AACampaignStatus.d.ts.map +1 -0
- package/dist/types/models/AAContent.d.ts +18 -0
- package/dist/types/models/AAContent.d.ts.map +1 -0
- package/dist/types/models/AAError.d.ts +6 -0
- package/dist/types/models/AAError.d.ts.map +1 -0
- package/dist/types/models/AAHeader.d.ts +9 -0
- package/dist/types/models/AAHeader.d.ts.map +1 -0
- package/dist/types/models/AALayout.d.ts +15 -0
- package/dist/types/models/AALayout.d.ts.map +1 -0
- package/dist/types/models/AAMainData.d.ts +13 -0
- package/dist/types/models/AAMainData.d.ts.map +1 -0
- package/dist/types/models/AAMedia.d.ts +21 -0
- package/dist/types/models/AAMedia.d.ts.map +1 -0
- package/dist/types/models/AAMediaResults.d.ts +12 -0
- package/dist/types/models/AAMediaResults.d.ts.map +1 -0
- package/dist/types/models/AAMediaTypes.d.ts +17 -0
- package/dist/types/models/AAMediaTypes.d.ts.map +1 -0
- package/dist/types/models/AASuccess.d.ts +14 -0
- package/dist/types/models/AASuccess.d.ts.map +1 -0
- package/dist/types/models/AAZone.d.ts +9 -0
- package/dist/types/models/AAZone.d.ts.map +1 -0
- package/dist/types/models/UserDataCache.d.ts +14 -0
- package/dist/types/models/UserDataCache.d.ts.map +1 -0
- package/dist/types/models/index.d.ts +20 -0
- package/dist/types/models/index.d.ts.map +1 -0
- package/dist/utils/AAMediaResultHelper.d.ts +52 -0
- package/dist/utils/AAMediaResultHelper.d.ts.map +1 -0
- package/dist/utils/ExternalJsLoader.d.ts +3 -0
- package/dist/utils/ExternalJsLoader.d.ts.map +1 -0
- package/dist/utils/GlobalLoadingOverlay.d.ts +9 -0
- package/dist/utils/GlobalLoadingOverlay.d.ts.map +1 -0
- package/dist/utils/PreferencesUtil.d.ts +18 -0
- package/dist/utils/PreferencesUtil.d.ts.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/logger.d.ts +9 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/version.d.ts +15 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/package.json +84 -0
package/README.md
ADDED
|
@@ -0,0 +1,662 @@
|
|
|
1
|
+
# @akross/artemis-ads-sdk
|
|
2
|
+
|
|
3
|
+
SDK JavaScript para o AdServer Akross Artemis - Carregamento de banners e mídias publicitárias.
|
|
4
|
+
|
|
5
|
+
## 🚀 Características
|
|
6
|
+
|
|
7
|
+
- **TypeScript Vanilla**: Sem dependências de frameworks
|
|
8
|
+
- **Múltiplos Builds**: UMD (NPM), IIFE (CDN) e ESM (sites modernos)
|
|
9
|
+
- **API Global**: `window.AkrossAds` para uso em Flutter Web/WebView
|
|
10
|
+
- **WebView Bridge**: Comunicação automática via `window.Akross.postMessage`
|
|
11
|
+
- **Banner Loader**: Carregamento otimizado de banners com fit inteligente
|
|
12
|
+
- **Sample Interativa**: Interface web para testes locais
|
|
13
|
+
|
|
14
|
+
## 📦 Instalação
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install @akross/artemis-ads-sdk
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 🎯 Uso Básico
|
|
21
|
+
|
|
22
|
+
### Inicialização do SDK
|
|
23
|
+
|
|
24
|
+
```javascript
|
|
25
|
+
import { init, ArtemisAdsBannerLoader } from '@akross/artemis-ads-sdk';
|
|
26
|
+
|
|
27
|
+
// Configuração do SDK
|
|
28
|
+
const sdkConfig = {
|
|
29
|
+
baseUrl: 'https://api.akross.com.br',
|
|
30
|
+
appId: 'seu-app-id',
|
|
31
|
+
appVersion: '1.0.0',
|
|
32
|
+
debug: true
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
// Inicializar SDK
|
|
36
|
+
const sdk = await init(sdkConfig);
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Carregamento de Banner
|
|
40
|
+
|
|
41
|
+
```javascript
|
|
42
|
+
// Criar instância do banner loader
|
|
43
|
+
const bannerLoader = new ArtemisAdsBannerLoader('#banner-container');
|
|
44
|
+
|
|
45
|
+
// Configurar listeners
|
|
46
|
+
bannerLoader.setSuccessListener({
|
|
47
|
+
onSuccess: (analyticsTag) => {
|
|
48
|
+
console.log('Banner carregado:', analyticsTag);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
bannerLoader.setErrorListener({
|
|
53
|
+
onError: () => {
|
|
54
|
+
console.log('Erro ao carregar banner');
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
bannerLoader.setClickListener({
|
|
59
|
+
onClick: (analyticsTag) => {
|
|
60
|
+
console.log('Banner clicado:', analyticsTag);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
// Carregar banner por Zone ID
|
|
65
|
+
await bannerLoader.loadZone('sua-zone-id');
|
|
66
|
+
|
|
67
|
+
// Ou carregar com dados de mídia específicos
|
|
68
|
+
await bannerLoader.loadBanner(mediaData);
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 🎯 Exemplos
|
|
72
|
+
|
|
73
|
+
### React/Next.js
|
|
74
|
+
|
|
75
|
+
```tsx
|
|
76
|
+
import { useEffect, useRef } from 'react';
|
|
77
|
+
import { ArtemisAdsBannerLoader } from '@akross/artemis-ads-sdk';
|
|
78
|
+
|
|
79
|
+
export default function BannerAd({ zoneId }) {
|
|
80
|
+
const bannerRef = useRef(null);
|
|
81
|
+
|
|
82
|
+
useEffect(() => {
|
|
83
|
+
if (bannerRef.current) {
|
|
84
|
+
const loader = new ArtemisAdsBannerLoader(bannerRef.current);
|
|
85
|
+
loader.loadZone(zoneId);
|
|
86
|
+
}
|
|
87
|
+
}, [zoneId]);
|
|
88
|
+
|
|
89
|
+
return <div ref={bannerRef} style={{ width: '300px', height: '250px' }} />;
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Vanilla JavaScript
|
|
94
|
+
|
|
95
|
+
```html
|
|
96
|
+
<!DOCTYPE html>
|
|
97
|
+
<html>
|
|
98
|
+
<head>
|
|
99
|
+
<script src="https://unpkg.com/@akross/artemis-ads-sdk/dist/akross-ads-sdk.umd.js"></script>
|
|
100
|
+
</head>
|
|
101
|
+
<body>
|
|
102
|
+
<div id="banner-container" style="width: 300px; height: 250px;"></div>
|
|
103
|
+
|
|
104
|
+
<script>
|
|
105
|
+
const bannerLoader = new window.AkrossAds.ArtemisAdsBannerLoader('#banner-container');
|
|
106
|
+
bannerLoader.loadZone('sua-zone-id');
|
|
107
|
+
</script>
|
|
108
|
+
</body>
|
|
109
|
+
</html>
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Via Script Tag (IIFE)
|
|
113
|
+
|
|
114
|
+
```html
|
|
115
|
+
<script src="https://cdn.akross.com/sdk/akross-ads-sdk.iife.js"></script>
|
|
116
|
+
<script>
|
|
117
|
+
// Inicializa o SDK
|
|
118
|
+
const sdk = window.AkrossAds.init({
|
|
119
|
+
baseUrl: 'https://api.akross.com/ads',
|
|
120
|
+
debug: true,
|
|
121
|
+
webViewBridge: {
|
|
122
|
+
enabled: true
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
// Carrega um anúncio
|
|
127
|
+
sdk.loadAd(document.getElementById('ad-container'), {
|
|
128
|
+
adId: 'my-ad',
|
|
129
|
+
slotId: 'banner-slot',
|
|
130
|
+
adServerUrl: 'https://api.akross.com/ads',
|
|
131
|
+
dimensions: { width: 300, height: 250 }
|
|
132
|
+
});
|
|
133
|
+
</script>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Via ES Modules
|
|
137
|
+
|
|
138
|
+
```javascript
|
|
139
|
+
import { init } from '@akross/artemis-ads-sdk';
|
|
140
|
+
|
|
141
|
+
const sdk = init({
|
|
142
|
+
baseUrl: 'https://api.akross.com/ads',
|
|
143
|
+
debug: true
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
// Usar o SDK...
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Via CommonJS/UMD
|
|
150
|
+
|
|
151
|
+
```javascript
|
|
152
|
+
const { init } = require('@akross/artemis-ads-sdk');
|
|
153
|
+
|
|
154
|
+
const sdk = init({
|
|
155
|
+
baseUrl: 'https://api.akross.com/ads'
|
|
156
|
+
});
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## 📚 API Reference
|
|
160
|
+
|
|
161
|
+
### ArtemisAdsBannerLoader
|
|
162
|
+
|
|
163
|
+
#### Métodos
|
|
164
|
+
|
|
165
|
+
- `loadZone(zoneId: string, userKeyType?: string)`: Carrega banner por Zone ID
|
|
166
|
+
- `loadBanner(media: any)`: Carrega banner com dados de mídia específicos
|
|
167
|
+
- `setSuccessListener(listener)`: Define callback de sucesso
|
|
168
|
+
- `setErrorListener(listener)`: Define callback de erro
|
|
169
|
+
- `setClickListener(listener)`: Define callback de clique
|
|
170
|
+
- `destroy()`: Destrói a instância e limpa recursos
|
|
171
|
+
|
|
172
|
+
#### Listeners
|
|
173
|
+
|
|
174
|
+
```typescript
|
|
175
|
+
interface ArtemisAdsBannerLoaderSuccessListener {
|
|
176
|
+
onSuccess(analyticsTag?: string): void;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
interface ArtemisAdsBannerLoaderErrorListener {
|
|
180
|
+
onError(): void;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
interface ArtemisAdsBannerLoaderClickListener {
|
|
184
|
+
onClick(analyticsTag?: string): void;
|
|
185
|
+
}
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### API Principal
|
|
189
|
+
|
|
190
|
+
#### Inicialização
|
|
191
|
+
|
|
192
|
+
```javascript
|
|
193
|
+
const sdk = window.AkrossAds.init({
|
|
194
|
+
baseUrl: 'https://api.akross.com/ads', // URL base do servidor
|
|
195
|
+
timeout: 10000, // Timeout em ms
|
|
196
|
+
debug: false, // Modo debug
|
|
197
|
+
webViewBridge: { // Configurações do WebView
|
|
198
|
+
enabled: true,
|
|
199
|
+
targetOrigin: '*' // Origem permitida
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
#### Carregar Anúncio
|
|
205
|
+
|
|
206
|
+
```javascript
|
|
207
|
+
const response = await sdk.loadAd(element, {
|
|
208
|
+
adId: 'unique-ad-id',
|
|
209
|
+
slotId: 'slot-identifier',
|
|
210
|
+
adServerUrl: 'https://api.akross.com/ads',
|
|
211
|
+
dimensions: { width: 300, height: 250 },
|
|
212
|
+
options: { /* parâmetros adicionais */ }
|
|
213
|
+
});
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
#### Gerenciar Anúncios
|
|
217
|
+
|
|
218
|
+
```javascript
|
|
219
|
+
// Criar instância de anúncio
|
|
220
|
+
const adInstance = sdk.createAd(config);
|
|
221
|
+
|
|
222
|
+
// Carregar anúncio
|
|
223
|
+
await adInstance.load();
|
|
224
|
+
|
|
225
|
+
// Atualizar anúncio
|
|
226
|
+
await adInstance.refresh();
|
|
227
|
+
|
|
228
|
+
// Destruir anúncio
|
|
229
|
+
adInstance.destroy();
|
|
230
|
+
|
|
231
|
+
// Obter anúncios ativos
|
|
232
|
+
const activeAds = sdk.getActiveAds();
|
|
233
|
+
|
|
234
|
+
// Destruir todos os anúncios
|
|
235
|
+
sdk.destroyAll();
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
## 🔧 Configuração
|
|
239
|
+
|
|
240
|
+
### Configuração do SDK
|
|
241
|
+
|
|
242
|
+
```typescript
|
|
243
|
+
interface SDKConfig {
|
|
244
|
+
baseUrl: string;
|
|
245
|
+
appId: string;
|
|
246
|
+
appVersion: string;
|
|
247
|
+
debug?: boolean;
|
|
248
|
+
timeout?: number;
|
|
249
|
+
webViewBridge?: {
|
|
250
|
+
enabled: boolean;
|
|
251
|
+
targetOrigin?: string;
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### Configuração de Mídia
|
|
257
|
+
|
|
258
|
+
```typescript
|
|
259
|
+
interface MediaData {
|
|
260
|
+
uuid: string;
|
|
261
|
+
type: 'image';
|
|
262
|
+
title: string;
|
|
263
|
+
content: {
|
|
264
|
+
url: string;
|
|
265
|
+
};
|
|
266
|
+
externalUrl?: {
|
|
267
|
+
url: string;
|
|
268
|
+
};
|
|
269
|
+
analytics?: {
|
|
270
|
+
impression: string;
|
|
271
|
+
click: string;
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
## 🌐 WebView Integration
|
|
277
|
+
|
|
278
|
+
O SDK detecta automaticamente quando está rodando em um WebView e configura o bridge de comunicação:
|
|
279
|
+
|
|
280
|
+
```javascript
|
|
281
|
+
// Verifica se está em WebView
|
|
282
|
+
if (sdk.isWebView()) {
|
|
283
|
+
console.log('Executando em WebView');
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
// Obtém informações do WebView
|
|
287
|
+
const webViewInfo = sdk.getWebViewInfo();
|
|
288
|
+
console.log(webViewInfo);
|
|
289
|
+
|
|
290
|
+
// Envia mensagem para o WebView
|
|
291
|
+
sdk.sendToWebView('ad_click', {
|
|
292
|
+
adId: 'my-ad',
|
|
293
|
+
timestamp: Date.now()
|
|
294
|
+
});
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
## 🏗️ Builds Disponíveis
|
|
298
|
+
|
|
299
|
+
### 📦 Formatos de Build
|
|
300
|
+
|
|
301
|
+
Após executar `npm run build:release`, os seguintes arquivos serão gerados em `dist/`:
|
|
302
|
+
|
|
303
|
+
#### 1. **UMD** (`akross-ads-sdk.umd.js`)
|
|
304
|
+
- **Uso**: NPM, Node.js, bundlers
|
|
305
|
+
- **Tamanho**: ~70KB (minificado)
|
|
306
|
+
- **Sourcemap**: ❌ (release)
|
|
307
|
+
|
|
308
|
+
#### 2. **IIFE** (`akross-ads-sdk.iife.js`)
|
|
309
|
+
- **Uso**: CDN, HTML direto
|
|
310
|
+
- **Tamanho**: ~69KB (minificado)
|
|
311
|
+
- **Sourcemap**: ❌ (release)
|
|
312
|
+
|
|
313
|
+
#### 3. **ESM** (`akross-ads-sdk.esm.js`)
|
|
314
|
+
- **Uso**: Sites modernos, import/export
|
|
315
|
+
- **Tamanho**: ~67KB (minificado)
|
|
316
|
+
- **Sourcemap**: ❌ (release)
|
|
317
|
+
|
|
318
|
+
#### 4. **Min** (`akross-ads-sdk.min.js`) - **RELEASE ONLY**
|
|
319
|
+
- **Uso**: CDN público, máxima performance
|
|
320
|
+
- **Tamanho**: ~69KB (ultra-minificado)
|
|
321
|
+
- **Sourcemap**: ❌
|
|
322
|
+
- **Otimizações**: Máxima compressão, sem console.log
|
|
323
|
+
|
|
324
|
+
#### 5. **Types** (`index.d.ts`)
|
|
325
|
+
- **Uso**: TypeScript definitions
|
|
326
|
+
- **Tamanho**: ~1KB
|
|
327
|
+
|
|
328
|
+
### 📊 Comparação de Tamanhos
|
|
329
|
+
|
|
330
|
+
| Build | Tamanho | Sourcemap | Console | Uso |
|
|
331
|
+
|-------|---------|-----------|---------|-----|
|
|
332
|
+
| Dev | ~500KB | ✅ | ✅ | Desenvolvimento |
|
|
333
|
+
| Prod | ~150KB | ❌ | ❌ | Teste |
|
|
334
|
+
| Release | ~70KB | ❌ | ❌ | Produção |
|
|
335
|
+
|
|
336
|
+
### ⚡ Otimizações de Release
|
|
337
|
+
|
|
338
|
+
#### ✅ Otimizações Aplicadas
|
|
339
|
+
- **Minificação**: Terser com 2-3 passadas
|
|
340
|
+
- **Console**: Removido em produção (`drop_console: true`)
|
|
341
|
+
- **Comentários**: Removidos (`removeComments: true`)
|
|
342
|
+
- **Sourcemaps**: Desabilitados para release
|
|
343
|
+
- **Mangle**: Variáveis e propriedades privadas
|
|
344
|
+
- **Dead Code**: Eliminação de código não utilizado
|
|
345
|
+
- **Tree Shaking**: Automático via Rollup
|
|
346
|
+
|
|
347
|
+
#### 🎯 Performance
|
|
348
|
+
- **Tamanho**: ~70KB gzipped
|
|
349
|
+
- **Load time**: <100ms
|
|
350
|
+
- **Memory**: <2MB
|
|
351
|
+
- **Compatibility**: IE11+
|
|
352
|
+
|
|
353
|
+
## 🧪 Sample
|
|
354
|
+
|
|
355
|
+
### 🚀 Como executar o Sample
|
|
356
|
+
|
|
357
|
+
#### 1. **Desenvolvimento com Live Reload**
|
|
358
|
+
```bash
|
|
359
|
+
# Executa build em watch mode + live-server
|
|
360
|
+
npm run dev
|
|
361
|
+
# Acesse: http://localhost:3000
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
#### 2. **Build Automático do Sample**
|
|
365
|
+
```bash
|
|
366
|
+
# Build automático (recomendado)
|
|
367
|
+
npm run build:sample
|
|
368
|
+
|
|
369
|
+
# Servir sample localmente
|
|
370
|
+
cd sample
|
|
371
|
+
python -m http.server 8000
|
|
372
|
+
# ou
|
|
373
|
+
npx serve sample
|
|
374
|
+
# Acesse: http://localhost:8000
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
#### 3. **Build Manual do Sample**
|
|
378
|
+
```bash
|
|
379
|
+
# 1. Gerar build do SDK
|
|
380
|
+
npm run build:release
|
|
381
|
+
|
|
382
|
+
# 2. Copiar build para sample
|
|
383
|
+
cp dist/akross-ads-sdk.iife.js sample/
|
|
384
|
+
|
|
385
|
+
# 3. Servir sample localmente
|
|
386
|
+
cd sample
|
|
387
|
+
python -m http.server 8000
|
|
388
|
+
# ou
|
|
389
|
+
npx serve sample
|
|
390
|
+
# Acesse: http://localhost:8000
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
#### 4. **Sample com Build de Desenvolvimento**
|
|
394
|
+
```bash
|
|
395
|
+
# Build com sourcemaps (para debug)
|
|
396
|
+
npm run build:dev
|
|
397
|
+
|
|
398
|
+
# Copiar para sample
|
|
399
|
+
cp dist/akross-ads-sdk.iife.js sample/
|
|
400
|
+
|
|
401
|
+
# Servir sample
|
|
402
|
+
npx serve sample
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
### 🎯 Funcionalidades do Sample
|
|
406
|
+
|
|
407
|
+
A sample inclui:
|
|
408
|
+
- **Gerenciamento de Usuário**: Definir userId, headers customizados
|
|
409
|
+
- **Gerenciamento de Anúncios**: Solicitar campanhas, testar mídias
|
|
410
|
+
- **Testes de Mídias**: VAST, VPAID, Programático, Banner
|
|
411
|
+
- **Banner Loader**: Teste de diferentes tamanhos de banner
|
|
412
|
+
- **Interface Interativa**: Botões para testar todas as funcionalidades
|
|
413
|
+
- **Logs em Tempo Real**: Console com logs detalhados
|
|
414
|
+
- **Configurações Dinâmicas**: Alterar parâmetros em tempo real
|
|
415
|
+
|
|
416
|
+
### 📁 Estrutura do Sample
|
|
417
|
+
|
|
418
|
+
```
|
|
419
|
+
sample/
|
|
420
|
+
├── index.html # Interface principal
|
|
421
|
+
├── demo.js # Lógica da sample
|
|
422
|
+
├── akross-ads-sdk.iife.js # SDK build (copiado do dist/)
|
|
423
|
+
└── styles/ # CSS (se houver)
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
### 🔧 Configuração do Sample
|
|
427
|
+
|
|
428
|
+
O sample usa configurações padrão que podem ser alteradas em `demo.js`:
|
|
429
|
+
|
|
430
|
+
```javascript
|
|
431
|
+
const sdkConfig = {
|
|
432
|
+
baseUrl: 'https://ads.timfun.com.br/adserver/',
|
|
433
|
+
debug: true,
|
|
434
|
+
timeout: 10000,
|
|
435
|
+
appId: 'com.example.myapp',
|
|
436
|
+
appVersion: '1.0.0',
|
|
437
|
+
artemisAdsAppId: 'akross-app-123',
|
|
438
|
+
primaryColor: '#ff0000'
|
|
439
|
+
};
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
## 🛠️ Desenvolvimento
|
|
443
|
+
|
|
444
|
+
### 📋 Scripts Disponíveis
|
|
445
|
+
|
|
446
|
+
#### 🔧 Desenvolvimento
|
|
447
|
+
```bash
|
|
448
|
+
# Instalar dependências
|
|
449
|
+
npm install
|
|
450
|
+
|
|
451
|
+
# Build de desenvolvimento (com sourcemaps e logs)
|
|
452
|
+
npm run build:dev
|
|
453
|
+
|
|
454
|
+
# Build em modo watch
|
|
455
|
+
npm run build:watch
|
|
456
|
+
|
|
457
|
+
# Desenvolvimento com live-server
|
|
458
|
+
npm run dev
|
|
459
|
+
|
|
460
|
+
# Limpar build
|
|
461
|
+
npm run clean
|
|
462
|
+
|
|
463
|
+
# Verificar tipos
|
|
464
|
+
npm run type-check
|
|
465
|
+
|
|
466
|
+
# Linting
|
|
467
|
+
npm run lint
|
|
468
|
+
npm run lint:fix
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
#### 🏭 Produção
|
|
472
|
+
```bash
|
|
473
|
+
# Build de produção (minificado, sem sourcemaps)
|
|
474
|
+
npm run build:prod
|
|
475
|
+
|
|
476
|
+
# Build de release (ultra-otimizado)
|
|
477
|
+
npm run build:release
|
|
478
|
+
|
|
479
|
+
# Testar build
|
|
480
|
+
npm run test:build
|
|
481
|
+
|
|
482
|
+
# Build completo (limpeza + build + verificação)
|
|
483
|
+
npm run prepublishOnly
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
#### 📦 Publicação NPM
|
|
487
|
+
```bash
|
|
488
|
+
# Publicar patch (3.4.0.1 -> 3.4.0.2)
|
|
489
|
+
npm run publish:patch
|
|
490
|
+
|
|
491
|
+
# Publicar minor (3.4.0.1 -> 3.4.1.0)
|
|
492
|
+
npm run publish:minor
|
|
493
|
+
|
|
494
|
+
# Publicar major (3.4.0.1 -> 4.0.0.0)
|
|
495
|
+
npm run publish:major
|
|
496
|
+
|
|
497
|
+
# Testar pacote localmente
|
|
498
|
+
npm pack
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
## 🔄 WebView Bridge
|
|
502
|
+
|
|
503
|
+
O SDK implementa comunicação bidirecional com WebView:
|
|
504
|
+
|
|
505
|
+
### Mensagens Enviadas para WebView:
|
|
506
|
+
- `ad_request` - Requisição de anúncio
|
|
507
|
+
- `ad_response` - Resposta do anúncio
|
|
508
|
+
- `ad_error` - Erro no carregamento
|
|
509
|
+
- `ad_click` - Clique no anúncio
|
|
510
|
+
- `ad_impression` - Impressão do anúncio
|
|
511
|
+
|
|
512
|
+
### Mensagens Recebidas do WebView:
|
|
513
|
+
- `ad_request` - Solicitação de anúncio
|
|
514
|
+
- `ad_error` - Erro reportado
|
|
515
|
+
- `ad_click` - Clique reportado
|
|
516
|
+
|
|
517
|
+
## 🛠️ Estrutura do Projeto
|
|
518
|
+
|
|
519
|
+
### 📁 Estrutura Principal
|
|
520
|
+
|
|
521
|
+
```
|
|
522
|
+
src/
|
|
523
|
+
├── ads-core/ # Core do sistema de anúncios
|
|
524
|
+
│ ├── AdsManager.ts # Gerenciador principal de anúncios
|
|
525
|
+
│ ├── network/ # Camada de rede
|
|
526
|
+
│ │ ├── ApiFactory.ts # Factory para APIs
|
|
527
|
+
│ │ ├── ServicesAds.ts # Serviços de anúncios
|
|
528
|
+
│ │ └── interceptor/ # Interceptadores HTTP
|
|
529
|
+
│ └── util/ # Utilitários do core
|
|
530
|
+
│ └── AAMediaTypeValidator.ts
|
|
531
|
+
├── core/
|
|
532
|
+
│ └── AAManager.ts # Gerenciador principal do SDK
|
|
533
|
+
├── events/
|
|
534
|
+
│ └── AAEventsCallbackHelper.ts # Helper para eventos
|
|
535
|
+
├── modules/ # Módulos específicos
|
|
536
|
+
│ ├── image/ # Banner Loader
|
|
537
|
+
│ │ └── ArtemisAdsBannerLoader.ts
|
|
538
|
+
│ ├── programmatic/ # Anúncios programáticos
|
|
539
|
+
│ │ ├── AARewardedVideoHandler.ts
|
|
540
|
+
│ │ └── GAMRewardedVideoWrapper.ts
|
|
541
|
+
│ └── vast/ # Player VAST
|
|
542
|
+
│ ├── AAVastPlayer.ts
|
|
543
|
+
│ └── AAVastPlayerUI.ts
|
|
544
|
+
├── types/ # Definições TypeScript
|
|
545
|
+
│ ├── ArtemisSdkConfig.ts # Configurações do SDK
|
|
546
|
+
│ └── models/ # Modelos de dados
|
|
547
|
+
│ ├── AAMedia.ts
|
|
548
|
+
│ ├── AACampaign.ts
|
|
549
|
+
│ └── ... (outros modelos)
|
|
550
|
+
├── utils/ # Utilitários gerais
|
|
551
|
+
│ ├── AAMediaResultHelper.ts # Helper para resultados
|
|
552
|
+
│ ├── AAReportHelper.ts # Helper para relatórios
|
|
553
|
+
│ ├── logger.ts # Sistema de logging
|
|
554
|
+
│ └── ... (outros utils)
|
|
555
|
+
└── index.ts # Ponto de entrada principal
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
### 📁 Build Output
|
|
559
|
+
|
|
560
|
+
```
|
|
561
|
+
dist/
|
|
562
|
+
├── akross-ads-sdk.umd.js # UMD (NPM)
|
|
563
|
+
├── akross-ads-sdk.iife.js # IIFE (CDN)
|
|
564
|
+
├── akross-ads-sdk.esm.js # ESM (moderno)
|
|
565
|
+
├── akross-ads-sdk.min.js # Ultra-min (release)
|
|
566
|
+
├── index.d.ts # TypeScript definitions
|
|
567
|
+
├── ads-core/ # Definições do core
|
|
568
|
+
├── core/ # Definições do core
|
|
569
|
+
├── events/ # Definições de eventos
|
|
570
|
+
├── modules/ # Definições dos módulos
|
|
571
|
+
├── types/ # Definições de tipos
|
|
572
|
+
└── utils/ # Definições de utilitários
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
### 📁 Sample
|
|
576
|
+
|
|
577
|
+
```
|
|
578
|
+
sample/
|
|
579
|
+
├── index.html # Interface da sample
|
|
580
|
+
├── demo.js # Lógica da sample
|
|
581
|
+
├── akross-ads-sdk.iife.js # SDK build (copiado)
|
|
582
|
+
└── styles/ # CSS (se houver)
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
### 🔧 Configurações de Build
|
|
586
|
+
|
|
587
|
+
```
|
|
588
|
+
rollup.config.js # Configuração principal
|
|
589
|
+
rollup.simple.release.config.js # Configuração de release
|
|
590
|
+
tsconfig.json # Configuração TypeScript
|
|
591
|
+
package.json # Dependências e scripts
|
|
592
|
+
.npmignore # Arquivos ignorados no NPM
|
|
593
|
+
setup-npm.js # Script de configuração NPM
|
|
594
|
+
```
|
|
595
|
+
|
|
596
|
+
## 📋 Tipos TypeScript
|
|
597
|
+
|
|
598
|
+
```typescript
|
|
599
|
+
interface AdConfig {
|
|
600
|
+
adId: string;
|
|
601
|
+
slotId: string;
|
|
602
|
+
adServerUrl: string;
|
|
603
|
+
dimensions?: { width: number; height: number };
|
|
604
|
+
options?: Record<string, any>;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
interface AdResponse {
|
|
608
|
+
success: boolean;
|
|
609
|
+
html?: string;
|
|
610
|
+
imageUrl?: string;
|
|
611
|
+
clickUrl?: string;
|
|
612
|
+
dimensions?: { width: number; height: number };
|
|
613
|
+
error?: string;
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
interface SDKConfig {
|
|
617
|
+
baseUrl: string;
|
|
618
|
+
timeout?: number;
|
|
619
|
+
debug?: boolean;
|
|
620
|
+
webViewBridge?: {
|
|
621
|
+
enabled: boolean;
|
|
622
|
+
targetOrigin?: string;
|
|
623
|
+
};
|
|
624
|
+
}
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
## 🚀 Deploy
|
|
628
|
+
|
|
629
|
+
**NPM**
|
|
630
|
+
```bash
|
|
631
|
+
npm run build:release
|
|
632
|
+
npm publish
|
|
633
|
+
```
|
|
634
|
+
|
|
635
|
+
**CDN**
|
|
636
|
+
```bash
|
|
637
|
+
npm run build:release
|
|
638
|
+
# Usar: dist/akross-ads-sdk.min.js
|
|
639
|
+
```
|
|
640
|
+
|
|
641
|
+
**Sites**
|
|
642
|
+
```bash
|
|
643
|
+
npm run build:prod
|
|
644
|
+
# Usar: dist/akross-ads-sdk.iife.js
|
|
645
|
+
```
|
|
646
|
+
|
|
647
|
+
## 📄 Licença
|
|
648
|
+
|
|
649
|
+
MIT License - veja o arquivo LICENSE para detalhes.
|
|
650
|
+
|
|
651
|
+
## 🤝 Contribuição
|
|
652
|
+
|
|
653
|
+
1. Fork o projeto
|
|
654
|
+
2. Crie uma branch para sua feature (`git checkout -b feature/AmazingFeature`)
|
|
655
|
+
3. Commit suas mudanças (`git commit -m 'Add some AmazingFeature'`)
|
|
656
|
+
4. Push para a branch (`git push origin feature/AmazingFeature`)
|
|
657
|
+
5. Abra um Pull Request
|
|
658
|
+
|
|
659
|
+
## 📞 Suporte
|
|
660
|
+
|
|
661
|
+
- GitHub: [https://github.com/akross/artemis-ads-sdk-js](https://github.com/akross/artemis-ads-sdk-js)
|
|
662
|
+
- Issues: [https://github.com/akross/artemis-ads-sdk-js/issues](https://github.com/akross/artemis-ads-sdk-js/issues)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AACampaign, AACampaignResult } from '../types/models';
|
|
2
|
+
export declare class AdsManager {
|
|
3
|
+
private logger;
|
|
4
|
+
private eventsHelper;
|
|
5
|
+
constructor(appId?: string, appVersion?: string, debug?: boolean);
|
|
6
|
+
requestCampaign(zoneId: string, size?: number, contextInfo?: {
|
|
7
|
+
[key: string]: string;
|
|
8
|
+
}, userKeyType?: string): Promise<AACampaignResult>;
|
|
9
|
+
bannerClick(clickUrl: string, campaignId: string, requestId: string, mediaId: string): Promise<void>;
|
|
10
|
+
sendEvent(event: string, campaignId: string, trackingId: string, mediaId?: string, source?: string): Promise<void>;
|
|
11
|
+
sendCampaignsImpressionEvent(trackingId: string, campaigns: AACampaign[]): Promise<void>;
|
|
12
|
+
static getSdkVersion(): string;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=AdsManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdsManager.d.ts","sourceRoot":"","sources":["../../src/ads-core/AdsManager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,UAAU,EAAsB,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AASjF,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAyB;gBAEjC,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,OAAe;IAS1D,eAAe,CAC1B,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAU,EAChB,WAAW,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EACvC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC;IAgGf,WAAW,CACtB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAiCH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsClH,4BAA4B,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;WAsCvF,aAAa,IAAI,MAAM;CAItC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ads-core/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare class AADeviceContextHelper {
|
|
2
|
+
private logger;
|
|
3
|
+
private cachedDeviceInfo;
|
|
4
|
+
constructor();
|
|
5
|
+
getDeviceContext(): Promise<{
|
|
6
|
+
[key: string]: string;
|
|
7
|
+
}>;
|
|
8
|
+
getSdkVersion(): string;
|
|
9
|
+
clearCache(): void;
|
|
10
|
+
getBrowserInfo(): {
|
|
11
|
+
[key: string]: string;
|
|
12
|
+
};
|
|
13
|
+
getScreenInfo(): {
|
|
14
|
+
[key: string]: string;
|
|
15
|
+
};
|
|
16
|
+
private getFallbackContext;
|
|
17
|
+
private getDeviceId;
|
|
18
|
+
private generateDeviceFingerprint;
|
|
19
|
+
private getBrowserBrand;
|
|
20
|
+
private getHardwareInfo;
|
|
21
|
+
private getManufacturer;
|
|
22
|
+
private getModel;
|
|
23
|
+
private getProduct;
|
|
24
|
+
private getOSVersion;
|
|
25
|
+
private getLocation;
|
|
26
|
+
private getAdId;
|
|
27
|
+
}
|
|
28
|
+
export declare function getAADeviceContextHelper(): AADeviceContextHelper;
|
|
29
|
+
export declare function createAADeviceContextHelper(): AADeviceContextHelper;
|
|
30
|
+
//# sourceMappingURL=AADeviceContextHelper.d.ts.map
|