@beworke/pixel 0.1.0-rc.6 → 0.1.0-rc.8

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 (166) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +71 -56
  3. package/RELEASE_CANDIDATE.md +47 -75
  4. package/dist/Pixel-CCgGk43j.d.ts +797 -0
  5. package/dist/Pixel-CqbgC_72.d.mts +797 -0
  6. package/dist/{StorageFactory-tjfzk57c.d.ts → StorageFactory-BRBsnnH7.d.ts} +2 -2
  7. package/dist/{StorageFactory-CPghDPBj.d.mts → StorageFactory-Dp19Wecr.d.mts} +2 -2
  8. package/dist/browser/index.cjs.js +3 -0
  9. package/dist/browser/index.cjs.js.map +1 -0
  10. package/dist/browser/index.d.mts +55 -0
  11. package/dist/browser/index.d.ts +55 -0
  12. package/dist/browser/index.esm.js +3 -0
  13. package/dist/browser/index.esm.js.map +1 -0
  14. package/dist/browser/pixel.global.js +4 -0
  15. package/dist/browser/pixel.global.js.map +1 -0
  16. package/dist/config/index.cjs.js +1 -1
  17. package/dist/config/index.cjs.js.map +1 -1
  18. package/dist/config/index.d.mts +16 -6
  19. package/dist/config/index.d.ts +16 -6
  20. package/dist/config/index.esm.js +1 -1
  21. package/dist/config/index.esm.js.map +1 -1
  22. package/dist/events/index.cjs.js.map +1 -1
  23. package/dist/events/index.d.mts +2 -2
  24. package/dist/events/index.d.ts +2 -2
  25. package/dist/events/index.esm.js.map +1 -1
  26. package/dist/examples/html-script/README.md +20 -76
  27. package/dist/examples/html-script/RELEASE_CANDIDATE.md +20 -21
  28. package/dist/examples/html-script/add-payment-info/example-add-payment-info-card-autocomplete.html +41 -48
  29. package/dist/examples/html-script/add-payment-info/example-add-payment-info-card-disabled.html +41 -48
  30. package/dist/examples/html-script/add-payment-info/example-add-payment-info-card-fields.html +41 -48
  31. package/dist/examples/html-script/add-payment-info/example-add-payment-info-data-track.html +41 -48
  32. package/dist/examples/html-script/add-payment-info/example-add-payment-info-dedupe.html +41 -48
  33. package/dist/examples/html-script/add-payment-info/example-add-payment-info-manual.html +41 -48
  34. package/dist/examples/html-script/add-payment-info/example-add-payment-info-rules-card.html +41 -48
  35. package/dist/examples/html-script/add-payment-info/example-add-payment-info-security.html +41 -48
  36. package/dist/examples/html-script/add-to-cart/README.md +6 -3
  37. package/dist/examples/html-script/add-to-cart/example-add-to-cart-attribute.html +43 -49
  38. package/dist/examples/html-script/add-to-cart/example-add-to-cart-auto.html +43 -49
  39. package/dist/examples/html-script/add-to-cart/example-add-to-cart-click.html +43 -49
  40. package/dist/examples/html-script/add-to-cart/example-add-to-cart-dedupe.html +43 -49
  41. package/dist/examples/html-script/add-to-cart/example-add-to-cart-link.html +590 -0
  42. package/dist/examples/html-script/add-to-cart/example-add-to-cart-manual.html +43 -49
  43. package/dist/examples/html-script/add-to-cart/example-add-to-cart-order-bump.html +43 -49
  44. package/dist/examples/html-script/add-to-cart/example-add-to-cart-text.html +43 -49
  45. package/dist/examples/html-script/behavior/example-behavior-engagement.html +5 -5
  46. package/dist/examples/html-script/behavior/example-behavior-heartbeat.html +5 -5
  47. package/dist/examples/html-script/behavior/example-behavior-runtime-intelligence.html +5 -5
  48. package/dist/examples/html-script/behavior/example-behavior-viewport.html +5 -5
  49. package/dist/examples/html-script/behavior/example-behavior.html +1 -1
  50. package/dist/examples/html-script/buygoods/example-buygoods-checkout.html +83 -0
  51. package/dist/examples/html-script/example-basic.html +1 -1
  52. package/dist/examples/html-script/example-checkout-commerce.html +32 -31
  53. package/dist/examples/html-script/example-conversion.html +42 -49
  54. package/dist/examples/html-script/example-global-factory-classic.html +45 -0
  55. package/dist/examples/html-script/example-global-factory.html +40 -0
  56. package/dist/examples/html-script/example-integration.html +40 -46
  57. package/dist/examples/html-script/example-landing-commerce.html +45 -9
  58. package/dist/examples/html-script/example-runtime-diagnostics.html +5 -5
  59. package/dist/examples/html-script/example-transport.html +65 -58
  60. package/dist/examples/html-script/full-funnel/README.md +1 -1
  61. package/dist/examples/html-script/full-funnel/checkout.html +4 -2
  62. package/dist/examples/html-script/full-funnel/downsell.html +4 -2
  63. package/dist/examples/html-script/full-funnel/landing.html +57 -3
  64. package/dist/examples/html-script/full-funnel/thank-you.html +4 -2
  65. package/dist/examples/html-script/full-funnel/upsell.html +4 -2
  66. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-attribute.html +41 -48
  67. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-auto.html +41 -48
  68. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-click.html +41 -48
  69. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-manual.html +41 -48
  70. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-snapshot.html +41 -48
  71. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-submit.html +41 -48
  72. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-text.html +41 -48
  73. package/dist/examples/html-script/lead/example-lead-trigger-attribute.html +41 -48
  74. package/dist/examples/html-script/lead/example-lead-trigger-auto.html +41 -48
  75. package/dist/examples/html-script/lead/example-lead-trigger-click.html +41 -48
  76. package/dist/examples/html-script/release-candidate.html +32 -31
  77. package/dist/examples/html-script/remove-from-cart/README.md +3 -3
  78. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-attribute.html +41 -48
  79. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-css.html +41 -48
  80. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-dedupe.html +48 -55
  81. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-manual.html +41 -48
  82. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-multi.html +41 -48
  83. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-state.html +41 -48
  84. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-text.html +41 -48
  85. package/dist/examples/html-script/search/example-search-attribute.html +41 -48
  86. package/dist/examples/html-script/search/example-search-button-sync.html +41 -48
  87. package/dist/examples/html-script/search/example-search-dedupe.html +41 -48
  88. package/dist/examples/html-script/search/example-search-input.html +41 -48
  89. package/dist/examples/html-script/search/example-search-manual.html +41 -48
  90. package/dist/examples/html-script/search/example-search-submit.html +41 -48
  91. package/dist/examples/html-script/search/example-search-text.html +41 -48
  92. package/dist/examples/html-script/url-context/example-url-context-allowed-domains.html +38 -9
  93. package/dist/examples/html-script/url-context/example-url-context-landing.html +53 -13
  94. package/dist/examples/html-script/url-context/example-url-context-upsell.html +48 -10
  95. package/dist/examples/html-script/url-context/example-url-context.html +55 -21
  96. package/dist/examples/html-script/view-content/example-view-content-attribute.html +41 -48
  97. package/dist/examples/html-script/view-content/example-view-content-css.html +41 -48
  98. package/dist/examples/html-script/view-content/example-view-content-dedupe.html +41 -48
  99. package/dist/examples/html-script/view-content/example-view-content-empty.html +41 -48
  100. package/dist/examples/html-script/view-content/example-view-content-manual.html +41 -48
  101. package/dist/examples/html-script/view-content/example-view-content-product-card.html +41 -48
  102. package/dist/examples/html-script/view-content/example-view-content-text.html +41 -48
  103. package/dist/examples/release-candidate/README.md +2 -1
  104. package/dist/examples/v2/README.md +15 -15
  105. package/dist/{index-CQAyT5Od.d.ts → index-B8u_3PGG.d.ts} +21 -2
  106. package/dist/{index-JlKPz4pp.d.mts → index-BxT2d-TK.d.mts} +21 -2
  107. package/dist/index.cjs.js +1 -1
  108. package/dist/index.cjs.js.map +1 -1
  109. package/dist/index.d.mts +21 -782
  110. package/dist/index.d.ts +21 -782
  111. package/dist/index.esm.js +1 -1
  112. package/dist/index.esm.js.map +1 -1
  113. package/dist/{pixel-CKc4OQUx.d.mts → pixel-C93c-0M2.d.mts} +234 -101
  114. package/dist/{pixel-BxZZx8l5.d.ts → pixel-DVy4rzj8.d.ts} +234 -101
  115. package/dist/pixel-default-config-BkAjriVH.d.mts +21 -0
  116. package/dist/pixel-default-config-Co69vDP3.d.ts +21 -0
  117. package/dist/pixel-settings-BhfJqA92.d.mts +40 -0
  118. package/dist/pixel-settings-C0qPFTii.d.ts +40 -0
  119. package/dist/runtime/index.cjs.js +1 -1
  120. package/dist/runtime/index.cjs.js.map +1 -1
  121. package/dist/runtime/index.d.mts +6 -6
  122. package/dist/runtime/index.d.ts +6 -6
  123. package/dist/runtime/index.esm.js +1 -1
  124. package/dist/runtime/index.esm.js.map +1 -1
  125. package/dist/services/index.cjs.js +1 -1
  126. package/dist/services/index.cjs.js.map +1 -1
  127. package/dist/services/index.d.mts +7 -7
  128. package/dist/services/index.d.ts +7 -7
  129. package/dist/services/index.esm.js +1 -1
  130. package/dist/services/index.esm.js.map +1 -1
  131. package/dist/{types-C75pQP31.d.ts → types-B2aUNHb3.d.ts} +2 -2
  132. package/dist/{types-BP8dz1gP.d.mts → types-C0J9KUQg.d.mts} +2 -2
  133. package/dist/{types-DMhzHSVC.d.mts → types-C2dsBog1.d.mts} +2 -2
  134. package/dist/{types-D_SsCur9.d.ts → types-DcaBYgVI.d.ts} +2 -2
  135. package/dist/{url-context-BjAsQoVl.d.mts → url-context-Ck2LK18V.d.mts} +4 -2
  136. package/dist/{url-context-BjAsQoVl.d.ts → url-context-Ck2LK18V.d.ts} +4 -2
  137. package/dist/v2/global.global.js +1 -1
  138. package/dist/v2/global.global.js.map +1 -1
  139. package/dist/v2/index.cjs.js +1 -1
  140. package/dist/v2/index.cjs.js.map +1 -1
  141. package/dist/v2/index.d.mts +26 -8
  142. package/dist/v2/index.d.ts +26 -8
  143. package/dist/v2/index.esm.js +1 -1
  144. package/dist/v2/index.esm.js.map +1 -1
  145. package/docs/public/README.md +20 -15
  146. package/docs/public/api/exports.md +12 -8
  147. package/docs/public/api/pixel.md +28 -7
  148. package/docs/public/configuration/commerce.md +3 -3
  149. package/docs/public/configuration/modules.md +11 -14
  150. package/docs/public/configuration/overview.md +41 -25
  151. package/docs/public/configuration/transport.md +127 -0
  152. package/docs/public/events/catalog.md +3 -1
  153. package/docs/public/getting-started/installation.md +20 -15
  154. package/docs/public/getting-started/quick-start.md +95 -30
  155. package/docs/public/getting-started/react-nextjs.md +57 -34
  156. package/docs/public/getting-started/script-tag.md +55 -32
  157. package/docs/public/guides/funnel-checkout.md +2 -2
  158. package/docs/public/guides/funnel-full.md +3 -3
  159. package/docs/public/guides/funnel-landing.md +10 -8
  160. package/docs/public/limitations.md +6 -5
  161. package/docs/public/privacy/limitations.md +6 -6
  162. package/docs/public/release-candidate/validation.md +24 -19
  163. package/docs/public/troubleshooting.md +7 -6
  164. package/package.json +15 -14
  165. package/dist/pixel-default-config-CJl-eypl.d.mts +0 -5
  166. package/dist/pixel-default-config-aAOujzwp.d.ts +0 -5
@@ -159,7 +159,7 @@ code { font-size: 0.85em; }
159
159
  </div>
160
160
  </div>
161
161
 
162
- <script src="../../../dist/v2/global.global.js"></script>
162
+ <script src="../../../v2/global.global.js"></script>
163
163
  <script>
164
164
  const { Pixel, DEFAULT_PIXEL_CONFIG } = window.PixelV2;
165
165
  const API_ENDPOINT =
@@ -219,9 +219,46 @@ code { font-size: 0.85em; }
219
219
  debug: true,
220
220
  },
221
221
  transport: {
222
- ...DEFAULT_PIXEL_CONFIG.transport,
223
- apiEndpoint: API_ENDPOINT,
224
- timeoutMs: 10000,
222
+ ...base.transport,
223
+ enabled: true,
224
+ sender: { mode: 'internal', baseUrl: API_ENDPOINT },
225
+ persistence: { enabled: true },
226
+ replay: { enabled: true },
227
+ ordering: { enabled: true },
228
+ coordination: { enabled: true },
229
+ circuitBreaker: {
230
+ enabled: true,
231
+ failureThreshold: 5,
232
+ resetTimeoutMs: 30000,
233
+ halfOpenMaxAttempts: 2,
234
+ },
235
+ backpressure: {
236
+ enabled: true,
237
+ maxQueueSize: 500,
238
+ policy: 'drop_oldest',
239
+ sampleRate: 0.5,
240
+ },
241
+ deadLetter: { enabled: true, maxEntries: 200 },
242
+ compression: { enabled: true, strategy: 'identity' },
243
+ retry: {
244
+ enabled: true,
245
+ maxAttempts: 4,
246
+ baseDelayMs: 500,
247
+ maxDelayMs: 4000,
248
+ multiplier: 2,
249
+ },
250
+ batch: {
251
+ enabled: true,
252
+ batchSize: 10,
253
+ maxWaitMs: 5000,
254
+ },
255
+ timeout: { enabled: true, timeoutMs: 10000 },
256
+ offline: { enabled: true },
257
+ flush: {
258
+ enabled: true,
259
+ flushOnDestroy: true,
260
+ prepareUnloadHooks: true,
261
+ },
225
262
  },
226
263
  identity: { ...base.identity, pixelId: PIXEL_ID },
227
264
  commerce: {
@@ -277,50 +314,6 @@ code { font-size: 0.85em; }
277
314
  },
278
315
  behavior: { ...base.modules.behavior, enabled: false },
279
316
  privacy: { ...base.modules.privacy, enabled: false },
280
- transport: {
281
- enabled: true,
282
- mockSender: { enabled: false },
283
- sender: { mode: 'http' },
284
- persistence: { enabled: true },
285
- replay: { enabled: true },
286
- ordering: { enabled: true },
287
- coordination: { enabled: true },
288
- circuitBreaker: {
289
- enabled: true,
290
- failureThreshold: 5,
291
- resetTimeoutMs: 30000,
292
- halfOpenMaxAttempts: 2,
293
- },
294
- backpressure: {
295
- enabled: true,
296
- maxQueueSize: 500,
297
- policy: 'drop_oldest',
298
- sampleRate: 0.5,
299
- },
300
- deadLetter: { enabled: true, maxEntries: 200 },
301
- compression: { enabled: true, strategy: 'identity' },
302
- retry: {
303
- enabled: true,
304
- maxAttempts: 4,
305
- baseDelayMs: 500,
306
- maxDelayMs: 4000,
307
- multiplier: 2,
308
- },
309
- batch: {
310
- enabled: true,
311
- batchSize: 10,
312
- flushIntervalMs: 2000,
313
- maxWaitMs: 5000,
314
- },
315
- timeout: { enabled: true, timeoutMs: 10000 },
316
- offline: { enabled: true },
317
- flush: {
318
- enabled: true,
319
- flushIntervalMs: 2000,
320
- flushOnDestroy: true,
321
- prepareUnloadHooks: true,
322
- },
323
- },
324
317
  integrations: { ...base.modules.integrations, enabled: false },
325
318
  conversion: {
326
319
  enabled: true,
@@ -303,7 +303,7 @@
303
303
  </div>
304
304
  </div>
305
305
 
306
- <script src="../../../dist/v2/global.global.js"></script>
306
+ <script src="../../../v2/global.global.js"></script>
307
307
  <script>
308
308
  const { Pixel, DEFAULT_PIXEL_CONFIG } = window.PixelV2;
309
309
  const API_ENDPOINT =
@@ -364,9 +364,46 @@
364
364
  debug: true,
365
365
  },
366
366
  transport: {
367
- ...DEFAULT_PIXEL_CONFIG.transport,
368
- apiEndpoint: API_ENDPOINT,
369
- timeoutMs: 10000,
367
+ ...base.transport,
368
+ enabled: true,
369
+ sender: { mode: 'internal', baseUrl: API_ENDPOINT },
370
+ persistence: { enabled: true },
371
+ replay: { enabled: true },
372
+ ordering: { enabled: true },
373
+ coordination: { enabled: true },
374
+ circuitBreaker: {
375
+ enabled: true,
376
+ failureThreshold: 5,
377
+ resetTimeoutMs: 30000,
378
+ halfOpenMaxAttempts: 2,
379
+ },
380
+ backpressure: {
381
+ enabled: true,
382
+ maxQueueSize: 500,
383
+ policy: 'drop_oldest',
384
+ sampleRate: 0.5,
385
+ },
386
+ deadLetter: { enabled: true, maxEntries: 200 },
387
+ compression: { enabled: true, strategy: 'identity' },
388
+ retry: {
389
+ enabled: true,
390
+ maxAttempts: 4,
391
+ baseDelayMs: 500,
392
+ maxDelayMs: 4000,
393
+ multiplier: 2,
394
+ },
395
+ batch: {
396
+ enabled: true,
397
+ batchSize: 10,
398
+ maxWaitMs: 5000,
399
+ },
400
+ timeout: { enabled: true, timeoutMs: 10000 },
401
+ offline: { enabled: true },
402
+ flush: {
403
+ enabled: true,
404
+ flushOnDestroy: true,
405
+ prepareUnloadHooks: true,
406
+ },
370
407
  },
371
408
  identity: { ...base.identity, pixelId: PIXEL_ID },
372
409
  commerce: {
@@ -422,50 +459,6 @@
422
459
  },
423
460
  behavior: { ...base.modules.behavior, enabled: false },
424
461
  privacy: { ...base.modules.privacy, enabled: false },
425
- transport: {
426
- enabled: true,
427
- mockSender: { enabled: false },
428
- sender: { mode: 'http' },
429
- persistence: { enabled: true },
430
- replay: { enabled: true },
431
- ordering: { enabled: true },
432
- coordination: { enabled: true },
433
- circuitBreaker: {
434
- enabled: true,
435
- failureThreshold: 5,
436
- resetTimeoutMs: 30000,
437
- halfOpenMaxAttempts: 2,
438
- },
439
- backpressure: {
440
- enabled: true,
441
- maxQueueSize: 500,
442
- policy: 'drop_oldest',
443
- sampleRate: 0.5,
444
- },
445
- deadLetter: { enabled: true, maxEntries: 200 },
446
- compression: { enabled: true, strategy: 'identity' },
447
- retry: {
448
- enabled: true,
449
- maxAttempts: 4,
450
- baseDelayMs: 500,
451
- maxDelayMs: 4000,
452
- multiplier: 2,
453
- },
454
- batch: {
455
- enabled: true,
456
- batchSize: 10,
457
- flushIntervalMs: 2000,
458
- maxWaitMs: 5000,
459
- },
460
- timeout: { enabled: true, timeoutMs: 10000 },
461
- offline: { enabled: true },
462
- flush: {
463
- enabled: true,
464
- flushIntervalMs: 2000,
465
- flushOnDestroy: true,
466
- prepareUnloadHooks: true,
467
- },
468
- },
469
462
  integrations: { ...base.modules.integrations, enabled: false },
470
463
  conversion: {
471
464
  enabled: true,
@@ -163,8 +163,8 @@
163
163
  <div>
164
164
  <label for="sender-mode">Sender</label>
165
165
  <select id="sender-mode">
166
- <option value="http">HTTP real</option>
167
- <option value="mock">Mock (sem API)</option>
166
+ <option value="internal">Internal (endpoint público)</option>
167
+ <option value="test">Test (sem rede)</option>
168
168
  </select>
169
169
  </div>
170
170
  </div>
@@ -342,7 +342,7 @@
342
342
  </div>
343
343
  </div>
344
344
 
345
- <script src="../../dist/v2/global.global.js"></script>
345
+ <script src="../../v2/global.global.js"></script>
346
346
  <script>
347
347
  (function () {
348
348
  var params = new URLSearchParams(window.location.search);
@@ -471,11 +471,11 @@
471
471
  var pixelId = pixelIdInput.value.trim();
472
472
  var batchMode = document.getElementById('batch-mode').value;
473
473
  var senderMode = document.getElementById('sender-mode').value;
474
- var useHttp = senderMode === 'http';
474
+ var useInternal = senderMode === 'internal';
475
475
  var batchSize = batchMode === 'batch' ? 10 : 1;
476
476
 
477
- if (useHttp && (!endpoint || !pixelId)) {
478
- throw new Error('Preencha PIXEL_API_ENDPOINT e PIXEL_ID para sender HTTP.');
477
+ if (useInternal && (!endpoint || !pixelId)) {
478
+ throw new Error('Preencha PIXEL_API_ENDPOINT e PIXEL_ID para sender internal.');
479
479
  }
480
480
 
481
481
  return {
@@ -492,8 +492,25 @@
492
492
  },
493
493
  transport: {
494
494
  ...DEFAULT_PIXEL_CONFIG.transport,
495
- apiEndpoint: endpoint || '',
496
- timeoutMs: 15000,
495
+ enabled: true,
496
+ sender: useInternal
497
+ ? { mode: 'internal', baseUrl: endpoint }
498
+ : { mode: 'test', capture: true },
499
+ batch: {
500
+ ...DEFAULT_PIXEL_CONFIG.transport.batch,
501
+ enabled: true,
502
+ batchSize: batchSize,
503
+ maxWaitMs: batchMode === 'batch' ? 8000 : 500,
504
+ },
505
+ flush: {
506
+ ...DEFAULT_PIXEL_CONFIG.transport.flush,
507
+ flushOnDestroy: true,
508
+ },
509
+ timeout: {
510
+ ...DEFAULT_PIXEL_CONFIG.transport.timeout,
511
+ timeoutMs: 15000,
512
+ },
513
+ coordination: { enabled: false },
497
514
  },
498
515
  commerce: {
499
516
  enabled: true,
@@ -675,29 +692,6 @@
675
692
  enabled: false,
676
693
  },
677
694
  },
678
- transport: {
679
- ...DEFAULT_PIXEL_CONFIG.modules.transport,
680
- enabled: true,
681
- mockSender: { enabled: !useHttp },
682
- sender: { mode: useHttp ? 'http' : 'mock' },
683
- batch: {
684
- ...DEFAULT_PIXEL_CONFIG.modules.transport.batch,
685
- enabled: true,
686
- batchSize: batchSize,
687
- flushIntervalMs: batchMode === 'batch' ? 8000 : 200,
688
- maxWaitMs: batchMode === 'batch' ? 8000 : 500,
689
- },
690
- flush: {
691
- ...DEFAULT_PIXEL_CONFIG.modules.transport.flush,
692
- flushIntervalMs: batchMode === 'batch' ? 8000 : 200,
693
- flushOnDestroy: true,
694
- },
695
- timeout: {
696
- ...DEFAULT_PIXEL_CONFIG.modules.transport.timeout,
697
- timeoutMs: 15000,
698
- },
699
- coordination: { enabled: false },
700
- },
701
695
  },
702
696
  };
703
697
  }
@@ -731,6 +725,13 @@
731
725
  var Pixel = window.PixelV2.Pixel;
732
726
  pixel = new Pixel(buildConfig());
733
727
  await pixel.init();
728
+ if (document.getElementById('sender-mode').value === 'test') {
729
+ pixel.configureTransportTestSender({
730
+ capture: true,
731
+ response: 'success',
732
+ delayMs: 0,
733
+ });
734
+ }
734
735
  initCount += 1;
735
736
 
736
737
  var services = pixel.getDebugServices();
@@ -12,16 +12,16 @@ Cada HTML valida **um** comportamento. Abra um de cada vez.
12
12
  | 3 | [`example-remove-from-cart-css.html`](./example-remove-from-cart-css.html) | `.remove-from-cart` | Seletor CSS class |
13
13
  | 4 | [`example-remove-from-cart-manual.html`](./example-remove-from-cart-manual.html) | `pixel.removeFromCart()` | API + sem productId |
14
14
  | 5 | [`example-remove-from-cart-state.html`](./example-remove-from-cart-state.html) | atributo + state | `removeItem` / cart mirror |
15
- | 6 | [`example-remove-from-cart-dedupe.html`](./example-remove-from-cart-dedupe.html) | clique / API | Dedupe por `productId` (sem janela) |
15
+ | 6 | [`example-remove-from-cart-dedupe.html`](./example-remove-from-cart-dedupe.html) | clique / API | Dedupe por `productId` (janela 500ms) |
16
16
  | 7 | [`example-remove-from-cart-multi.html`](./example-remove-from-cart-multi.html) | multi botões | Remoção seletiva de 3 itens |
17
17
 
18
18
  ## Dedupe (importante)
19
19
 
20
20
  ```txt
21
- REMOVE_FROM_CART:product:{productId}
21
+ REMOVE_FROM_CART:product:{productId}:qty:{n}:bucket:{t}
22
22
  ```
23
23
 
24
- Sem bucket de tempo (diferente do ADD ~500ms). Segundo remove do mesmo id na sessão é bloqueado até **Reinitialize**.
24
+ Mesma janela de ~500ms do ADD. Clique duplo no mesmo id é 1 evento; add → remove → add → remove dispara de novo após a janela.
25
25
 
26
26
  ## Como abrir
27
27
 
@@ -176,7 +176,7 @@ code { font-size: 0.85em; }
176
176
  </div>
177
177
  </div>
178
178
 
179
- <script src="../../../dist/v2/global.global.js"></script>
179
+ <script src="../../../v2/global.global.js"></script>
180
180
  <script>
181
181
  const { Pixel, DEFAULT_PIXEL_CONFIG } = window.PixelV2;
182
182
  const API_ENDPOINT =
@@ -229,9 +229,46 @@ code { font-size: 0.85em; }
229
229
  debug: true,
230
230
  },
231
231
  transport: {
232
- ...DEFAULT_PIXEL_CONFIG.transport,
233
- apiEndpoint: API_ENDPOINT,
234
- timeoutMs: 10000,
232
+ ...base.transport,
233
+ enabled: true,
234
+ sender: { mode: 'internal', baseUrl: API_ENDPOINT },
235
+ persistence: { enabled: true },
236
+ replay: { enabled: true },
237
+ ordering: { enabled: true },
238
+ coordination: { enabled: true },
239
+ circuitBreaker: {
240
+ enabled: true,
241
+ failureThreshold: 5,
242
+ resetTimeoutMs: 30000,
243
+ halfOpenMaxAttempts: 2,
244
+ },
245
+ backpressure: {
246
+ enabled: true,
247
+ maxQueueSize: 500,
248
+ policy: 'drop_oldest',
249
+ sampleRate: 0.5,
250
+ },
251
+ deadLetter: { enabled: true, maxEntries: 200 },
252
+ compression: { enabled: true, strategy: 'identity' },
253
+ retry: {
254
+ enabled: true,
255
+ maxAttempts: 4,
256
+ baseDelayMs: 500,
257
+ maxDelayMs: 4000,
258
+ multiplier: 2,
259
+ },
260
+ batch: {
261
+ enabled: true,
262
+ batchSize: 10,
263
+ maxWaitMs: 5000,
264
+ },
265
+ timeout: { enabled: true, timeoutMs: 10000 },
266
+ offline: { enabled: true },
267
+ flush: {
268
+ enabled: true,
269
+ flushOnDestroy: true,
270
+ prepareUnloadHooks: true,
271
+ },
235
272
  },
236
273
  identity: { ...base.identity, pixelId: PIXEL_ID },
237
274
  commerce: {
@@ -315,50 +352,6 @@ code { font-size: 0.85em; }
315
352
  },
316
353
  behavior: { ...base.modules.behavior, enabled: false },
317
354
  privacy: { ...base.modules.privacy, enabled: false },
318
- transport: {
319
- enabled: true,
320
- mockSender: { enabled: false },
321
- sender: { mode: 'http' },
322
- persistence: { enabled: true },
323
- replay: { enabled: true },
324
- ordering: { enabled: true },
325
- coordination: { enabled: true },
326
- circuitBreaker: {
327
- enabled: true,
328
- failureThreshold: 5,
329
- resetTimeoutMs: 30000,
330
- halfOpenMaxAttempts: 2,
331
- },
332
- backpressure: {
333
- enabled: true,
334
- maxQueueSize: 500,
335
- policy: 'drop_oldest',
336
- sampleRate: 0.5,
337
- },
338
- deadLetter: { enabled: true, maxEntries: 200 },
339
- compression: { enabled: true, strategy: 'identity' },
340
- retry: {
341
- enabled: true,
342
- maxAttempts: 4,
343
- baseDelayMs: 500,
344
- maxDelayMs: 4000,
345
- multiplier: 2,
346
- },
347
- batch: {
348
- enabled: true,
349
- batchSize: 10,
350
- flushIntervalMs: 2000,
351
- maxWaitMs: 5000,
352
- },
353
- timeout: { enabled: true, timeoutMs: 10000 },
354
- offline: { enabled: true },
355
- flush: {
356
- enabled: true,
357
- flushIntervalMs: 2000,
358
- flushOnDestroy: true,
359
- prepareUnloadHooks: true,
360
- },
361
- },
362
355
  integrations: { ...base.modules.integrations, enabled: false },
363
356
  conversion: {
364
357
  enabled: true,
@@ -168,7 +168,7 @@ code { font-size: 0.85em; }
168
168
  </div>
169
169
  </div>
170
170
 
171
- <script src="../../../dist/v2/global.global.js"></script>
171
+ <script src="../../../v2/global.global.js"></script>
172
172
  <script>
173
173
  const { Pixel, DEFAULT_PIXEL_CONFIG } = window.PixelV2;
174
174
  const API_ENDPOINT =
@@ -221,9 +221,46 @@ code { font-size: 0.85em; }
221
221
  debug: true,
222
222
  },
223
223
  transport: {
224
- ...DEFAULT_PIXEL_CONFIG.transport,
225
- apiEndpoint: API_ENDPOINT,
226
- timeoutMs: 10000,
224
+ ...base.transport,
225
+ enabled: true,
226
+ sender: { mode: 'internal', baseUrl: API_ENDPOINT },
227
+ persistence: { enabled: true },
228
+ replay: { enabled: true },
229
+ ordering: { enabled: true },
230
+ coordination: { enabled: true },
231
+ circuitBreaker: {
232
+ enabled: true,
233
+ failureThreshold: 5,
234
+ resetTimeoutMs: 30000,
235
+ halfOpenMaxAttempts: 2,
236
+ },
237
+ backpressure: {
238
+ enabled: true,
239
+ maxQueueSize: 500,
240
+ policy: 'drop_oldest',
241
+ sampleRate: 0.5,
242
+ },
243
+ deadLetter: { enabled: true, maxEntries: 200 },
244
+ compression: { enabled: true, strategy: 'identity' },
245
+ retry: {
246
+ enabled: true,
247
+ maxAttempts: 4,
248
+ baseDelayMs: 500,
249
+ maxDelayMs: 4000,
250
+ multiplier: 2,
251
+ },
252
+ batch: {
253
+ enabled: true,
254
+ batchSize: 10,
255
+ maxWaitMs: 5000,
256
+ },
257
+ timeout: { enabled: true, timeoutMs: 10000 },
258
+ offline: { enabled: true },
259
+ flush: {
260
+ enabled: true,
261
+ flushOnDestroy: true,
262
+ prepareUnloadHooks: true,
263
+ },
227
264
  },
228
265
  identity: { ...base.identity, pixelId: PIXEL_ID },
229
266
  commerce: {
@@ -307,50 +344,6 @@ code { font-size: 0.85em; }
307
344
  },
308
345
  behavior: { ...base.modules.behavior, enabled: false },
309
346
  privacy: { ...base.modules.privacy, enabled: false },
310
- transport: {
311
- enabled: true,
312
- mockSender: { enabled: false },
313
- sender: { mode: 'http' },
314
- persistence: { enabled: true },
315
- replay: { enabled: true },
316
- ordering: { enabled: true },
317
- coordination: { enabled: true },
318
- circuitBreaker: {
319
- enabled: true,
320
- failureThreshold: 5,
321
- resetTimeoutMs: 30000,
322
- halfOpenMaxAttempts: 2,
323
- },
324
- backpressure: {
325
- enabled: true,
326
- maxQueueSize: 500,
327
- policy: 'drop_oldest',
328
- sampleRate: 0.5,
329
- },
330
- deadLetter: { enabled: true, maxEntries: 200 },
331
- compression: { enabled: true, strategy: 'identity' },
332
- retry: {
333
- enabled: true,
334
- maxAttempts: 4,
335
- baseDelayMs: 500,
336
- maxDelayMs: 4000,
337
- multiplier: 2,
338
- },
339
- batch: {
340
- enabled: true,
341
- batchSize: 10,
342
- flushIntervalMs: 2000,
343
- maxWaitMs: 5000,
344
- },
345
- timeout: { enabled: true, timeoutMs: 10000 },
346
- offline: { enabled: true },
347
- flush: {
348
- enabled: true,
349
- flushIntervalMs: 2000,
350
- flushOnDestroy: true,
351
- prepareUnloadHooks: true,
352
- },
353
- },
354
347
  integrations: { ...base.modules.integrations, enabled: false },
355
348
  conversion: {
356
349
  enabled: true,