@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.
Files changed (116) hide show
  1. package/README.md +662 -0
  2. package/dist/ads-core/AdsManager.d.ts +14 -0
  3. package/dist/ads-core/AdsManager.d.ts.map +1 -0
  4. package/dist/ads-core/index.d.ts +5 -0
  5. package/dist/ads-core/index.d.ts.map +1 -0
  6. package/dist/ads-core/util/AADeviceContextHelper.d.ts +30 -0
  7. package/dist/ads-core/util/AADeviceContextHelper.d.ts.map +1 -0
  8. package/dist/ads-core/util/AAMediaTypeValidator.d.ts +27 -0
  9. package/dist/ads-core/util/AAMediaTypeValidator.d.ts.map +1 -0
  10. package/dist/ads-core/util/index.d.ts +3 -0
  11. package/dist/ads-core/util/index.d.ts.map +1 -0
  12. package/dist/akross-ads-sdk.esm.js +1 -0
  13. package/dist/akross-ads-sdk.iife.js +1 -0
  14. package/dist/akross-ads-sdk.min.js +1 -0
  15. package/dist/akross-ads-sdk.umd.js +1 -0
  16. package/dist/constants/ErrorMessages.d.ts +10 -0
  17. package/dist/constants/ErrorMessages.d.ts.map +1 -0
  18. package/dist/core/AAManager.d.ts +23 -0
  19. package/dist/core/AAManager.d.ts.map +1 -0
  20. package/dist/core/network/ApiFactory.d.ts +16 -0
  21. package/dist/core/network/ApiFactory.d.ts.map +1 -0
  22. package/dist/core/network/ServicesAds.d.ts +15 -0
  23. package/dist/core/network/ServicesAds.d.ts.map +1 -0
  24. package/dist/core/network/index.d.ts +5 -0
  25. package/dist/core/network/index.d.ts.map +1 -0
  26. package/dist/core/network/interceptor/RestInterceptor.d.ts +6 -0
  27. package/dist/core/network/interceptor/RestInterceptor.d.ts.map +1 -0
  28. package/dist/events/AAEventsCallbackHelper.d.ts +48 -0
  29. package/dist/events/AAEventsCallbackHelper.d.ts.map +1 -0
  30. package/dist/events/index.d.ts +2 -0
  31. package/dist/events/index.d.ts.map +1 -0
  32. package/dist/index.d.ts +43 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/modules/image/ArtemisAdsBannerLoader.d.ts +31 -0
  35. package/dist/modules/image/ArtemisAdsBannerLoader.d.ts.map +1 -0
  36. package/dist/modules/image/index.d.ts +3 -0
  37. package/dist/modules/image/index.d.ts.map +1 -0
  38. package/dist/modules/index.d.ts +3 -0
  39. package/dist/modules/index.d.ts.map +1 -0
  40. package/dist/modules/rv/index.d.ts +3 -0
  41. package/dist/modules/rv/index.d.ts.map +1 -0
  42. package/dist/modules/rv/programmatic/AARewardedVideo.d.ts +24 -0
  43. package/dist/modules/rv/programmatic/AARewardedVideo.d.ts.map +1 -0
  44. package/dist/modules/rv/programmatic/GAMRewardedVideoWrapper.d.ts +32 -0
  45. package/dist/modules/rv/programmatic/GAMRewardedVideoWrapper.d.ts.map +1 -0
  46. package/dist/modules/rv/programmatic/index.d.ts +4 -0
  47. package/dist/modules/rv/programmatic/index.d.ts.map +1 -0
  48. package/dist/modules/rv/programmatic/utils/WaterfallResultHelper.d.ts +23 -0
  49. package/dist/modules/rv/programmatic/utils/WaterfallResultHelper.d.ts.map +1 -0
  50. package/dist/modules/rv/programmatic/utils/index.d.ts +2 -0
  51. package/dist/modules/rv/programmatic/utils/index.d.ts.map +1 -0
  52. package/dist/modules/rv/vast/AAVastPlayer.d.ts +52 -0
  53. package/dist/modules/rv/vast/AAVastPlayer.d.ts.map +1 -0
  54. package/dist/modules/rv/vast/AAVastPlayerUI.d.ts +19 -0
  55. package/dist/modules/rv/vast/AAVastPlayerUI.d.ts.map +1 -0
  56. package/dist/modules/rv/vast/index.d.ts +2 -0
  57. package/dist/modules/rv/vast/index.d.ts.map +1 -0
  58. package/dist/types/ArtemisSdkConfig.d.ts +19 -0
  59. package/dist/types/ArtemisSdkConfig.d.ts.map +1 -0
  60. package/dist/types/index.d.ts +3 -0
  61. package/dist/types/index.d.ts.map +1 -0
  62. package/dist/types/models/AAAdWatchResult.d.ts +14 -0
  63. package/dist/types/models/AAAdWatchResult.d.ts.map +1 -0
  64. package/dist/types/models/AABenefitOffer.d.ts +11 -0
  65. package/dist/types/models/AABenefitOffer.d.ts.map +1 -0
  66. package/dist/types/models/AACampaign.d.ts +16 -0
  67. package/dist/types/models/AACampaign.d.ts.map +1 -0
  68. package/dist/types/models/AACampaignConfig.d.ts +15 -0
  69. package/dist/types/models/AACampaignConfig.d.ts.map +1 -0
  70. package/dist/types/models/AACampaignRequest.d.ts +12 -0
  71. package/dist/types/models/AACampaignRequest.d.ts.map +1 -0
  72. package/dist/types/models/AACampaignResponse.d.ts +13 -0
  73. package/dist/types/models/AACampaignResponse.d.ts.map +1 -0
  74. package/dist/types/models/AACampaignResult.d.ts +15 -0
  75. package/dist/types/models/AACampaignResult.d.ts.map +1 -0
  76. package/dist/types/models/AACampaignStatus.d.ts +6 -0
  77. package/dist/types/models/AACampaignStatus.d.ts.map +1 -0
  78. package/dist/types/models/AAContent.d.ts +18 -0
  79. package/dist/types/models/AAContent.d.ts.map +1 -0
  80. package/dist/types/models/AAError.d.ts +6 -0
  81. package/dist/types/models/AAError.d.ts.map +1 -0
  82. package/dist/types/models/AAHeader.d.ts +9 -0
  83. package/dist/types/models/AAHeader.d.ts.map +1 -0
  84. package/dist/types/models/AALayout.d.ts +15 -0
  85. package/dist/types/models/AALayout.d.ts.map +1 -0
  86. package/dist/types/models/AAMainData.d.ts +13 -0
  87. package/dist/types/models/AAMainData.d.ts.map +1 -0
  88. package/dist/types/models/AAMedia.d.ts +21 -0
  89. package/dist/types/models/AAMedia.d.ts.map +1 -0
  90. package/dist/types/models/AAMediaResults.d.ts +12 -0
  91. package/dist/types/models/AAMediaResults.d.ts.map +1 -0
  92. package/dist/types/models/AAMediaTypes.d.ts +17 -0
  93. package/dist/types/models/AAMediaTypes.d.ts.map +1 -0
  94. package/dist/types/models/AASuccess.d.ts +14 -0
  95. package/dist/types/models/AASuccess.d.ts.map +1 -0
  96. package/dist/types/models/AAZone.d.ts +9 -0
  97. package/dist/types/models/AAZone.d.ts.map +1 -0
  98. package/dist/types/models/UserDataCache.d.ts +14 -0
  99. package/dist/types/models/UserDataCache.d.ts.map +1 -0
  100. package/dist/types/models/index.d.ts +20 -0
  101. package/dist/types/models/index.d.ts.map +1 -0
  102. package/dist/utils/AAMediaResultHelper.d.ts +52 -0
  103. package/dist/utils/AAMediaResultHelper.d.ts.map +1 -0
  104. package/dist/utils/ExternalJsLoader.d.ts +3 -0
  105. package/dist/utils/ExternalJsLoader.d.ts.map +1 -0
  106. package/dist/utils/GlobalLoadingOverlay.d.ts +9 -0
  107. package/dist/utils/GlobalLoadingOverlay.d.ts.map +1 -0
  108. package/dist/utils/PreferencesUtil.d.ts +18 -0
  109. package/dist/utils/PreferencesUtil.d.ts.map +1 -0
  110. package/dist/utils/index.d.ts +7 -0
  111. package/dist/utils/index.d.ts.map +1 -0
  112. package/dist/utils/logger.d.ts +9 -0
  113. package/dist/utils/logger.d.ts.map +1 -0
  114. package/dist/utils/version.d.ts +15 -0
  115. package/dist/utils/version.d.ts.map +1 -0
  116. 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,5 @@
1
+ export { AdsManager } from './AdsManager';
2
+ export * from '../core/network';
3
+ export * from './util';
4
+ export * from '../types/models';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -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