@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
@@ -167,7 +167,7 @@ code { font-size: 0.85em; }
167
167
  </div>
168
168
  </div>
169
169
 
170
- <script src="../../../dist/v2/global.global.js"></script>
170
+ <script src="../../../v2/global.global.js"></script>
171
171
  <script>
172
172
  const { Pixel, DEFAULT_PIXEL_CONFIG } = window.PixelV2;
173
173
  const API_ENDPOINT =
@@ -230,9 +230,46 @@ code { font-size: 0.85em; }
230
230
  debug: true,
231
231
  },
232
232
  transport: {
233
- ...DEFAULT_PIXEL_CONFIG.transport,
234
- apiEndpoint: API_ENDPOINT,
235
- timeoutMs: 10000,
233
+ ...base.transport,
234
+ enabled: true,
235
+ sender: { mode: 'internal', baseUrl: API_ENDPOINT },
236
+ persistence: { enabled: true },
237
+ replay: { enabled: true },
238
+ ordering: { enabled: true },
239
+ coordination: { enabled: true },
240
+ circuitBreaker: {
241
+ enabled: true,
242
+ failureThreshold: 5,
243
+ resetTimeoutMs: 30000,
244
+ halfOpenMaxAttempts: 2,
245
+ },
246
+ backpressure: {
247
+ enabled: true,
248
+ maxQueueSize: 500,
249
+ policy: 'drop_oldest',
250
+ sampleRate: 0.5,
251
+ },
252
+ deadLetter: { enabled: true, maxEntries: 200 },
253
+ compression: { enabled: true, strategy: 'identity' },
254
+ retry: {
255
+ enabled: true,
256
+ maxAttempts: 4,
257
+ baseDelayMs: 500,
258
+ maxDelayMs: 4000,
259
+ multiplier: 2,
260
+ },
261
+ batch: {
262
+ enabled: true,
263
+ batchSize: 10,
264
+ maxWaitMs: 5000,
265
+ },
266
+ timeout: { enabled: true, timeoutMs: 10000 },
267
+ offline: { enabled: true },
268
+ flush: {
269
+ enabled: true,
270
+ flushOnDestroy: true,
271
+ prepareUnloadHooks: true,
272
+ },
236
273
  },
237
274
  identity: { ...base.identity, pixelId: PIXEL_ID },
238
275
  commerce: {
@@ -288,50 +325,6 @@ code { font-size: 0.85em; }
288
325
  },
289
326
  behavior: { ...base.modules.behavior, enabled: false },
290
327
  privacy: { ...base.modules.privacy, enabled: false },
291
- transport: {
292
- enabled: true,
293
- mockSender: { enabled: false },
294
- sender: { mode: 'http' },
295
- persistence: { enabled: true },
296
- replay: { enabled: true },
297
- ordering: { enabled: true },
298
- coordination: { enabled: true },
299
- circuitBreaker: {
300
- enabled: true,
301
- failureThreshold: 5,
302
- resetTimeoutMs: 30000,
303
- halfOpenMaxAttempts: 2,
304
- },
305
- backpressure: {
306
- enabled: true,
307
- maxQueueSize: 500,
308
- policy: 'drop_oldest',
309
- sampleRate: 0.5,
310
- },
311
- deadLetter: { enabled: true, maxEntries: 200 },
312
- compression: { enabled: true, strategy: 'identity' },
313
- retry: {
314
- enabled: true,
315
- maxAttempts: 4,
316
- baseDelayMs: 500,
317
- maxDelayMs: 4000,
318
- multiplier: 2,
319
- },
320
- batch: {
321
- enabled: true,
322
- batchSize: 10,
323
- flushIntervalMs: 2000,
324
- maxWaitMs: 5000,
325
- },
326
- timeout: { enabled: true, timeoutMs: 10000 },
327
- offline: { enabled: true },
328
- flush: {
329
- enabled: true,
330
- flushIntervalMs: 2000,
331
- flushOnDestroy: true,
332
- prepareUnloadHooks: true,
333
- },
334
- },
335
328
  integrations: { ...base.modules.integrations, enabled: false },
336
329
  conversion: {
337
330
  enabled: true,
@@ -166,7 +166,7 @@ code { font-size: 0.85em; }
166
166
  </div>
167
167
  </div>
168
168
 
169
- <script src="../../../dist/v2/global.global.js"></script>
169
+ <script src="../../../v2/global.global.js"></script>
170
170
  <script>
171
171
  const { Pixel, DEFAULT_PIXEL_CONFIG } = window.PixelV2;
172
172
  const API_ENDPOINT =
@@ -220,9 +220,46 @@ code { font-size: 0.85em; }
220
220
  debug: true,
221
221
  },
222
222
  transport: {
223
- ...DEFAULT_PIXEL_CONFIG.transport,
224
- apiEndpoint: API_ENDPOINT,
225
- timeoutMs: 10000,
223
+ ...base.transport,
224
+ enabled: true,
225
+ sender: { mode: 'internal', baseUrl: API_ENDPOINT },
226
+ persistence: { enabled: true },
227
+ replay: { enabled: true },
228
+ ordering: { enabled: true },
229
+ coordination: { enabled: true },
230
+ circuitBreaker: {
231
+ enabled: true,
232
+ failureThreshold: 5,
233
+ resetTimeoutMs: 30000,
234
+ halfOpenMaxAttempts: 2,
235
+ },
236
+ backpressure: {
237
+ enabled: true,
238
+ maxQueueSize: 500,
239
+ policy: 'drop_oldest',
240
+ sampleRate: 0.5,
241
+ },
242
+ deadLetter: { enabled: true, maxEntries: 200 },
243
+ compression: { enabled: true, strategy: 'identity' },
244
+ retry: {
245
+ enabled: true,
246
+ maxAttempts: 4,
247
+ baseDelayMs: 500,
248
+ maxDelayMs: 4000,
249
+ multiplier: 2,
250
+ },
251
+ batch: {
252
+ enabled: true,
253
+ batchSize: 10,
254
+ maxWaitMs: 5000,
255
+ },
256
+ timeout: { enabled: true, timeoutMs: 10000 },
257
+ offline: { enabled: true },
258
+ flush: {
259
+ enabled: true,
260
+ flushOnDestroy: true,
261
+ prepareUnloadHooks: true,
262
+ },
226
263
  },
227
264
  identity: { ...base.identity, pixelId: PIXEL_ID },
228
265
  commerce: {
@@ -278,50 +315,6 @@ code { font-size: 0.85em; }
278
315
  },
279
316
  behavior: { ...base.modules.behavior, enabled: false },
280
317
  privacy: { ...base.modules.privacy, enabled: false },
281
- transport: {
282
- enabled: true,
283
- mockSender: { enabled: false },
284
- sender: { mode: 'http' },
285
- persistence: { enabled: true },
286
- replay: { enabled: true },
287
- ordering: { enabled: true },
288
- coordination: { enabled: true },
289
- circuitBreaker: {
290
- enabled: true,
291
- failureThreshold: 5,
292
- resetTimeoutMs: 30000,
293
- halfOpenMaxAttempts: 2,
294
- },
295
- backpressure: {
296
- enabled: true,
297
- maxQueueSize: 500,
298
- policy: 'drop_oldest',
299
- sampleRate: 0.5,
300
- },
301
- deadLetter: { enabled: true, maxEntries: 200 },
302
- compression: { enabled: true, strategy: 'identity' },
303
- retry: {
304
- enabled: true,
305
- maxAttempts: 4,
306
- baseDelayMs: 500,
307
- maxDelayMs: 4000,
308
- multiplier: 2,
309
- },
310
- batch: {
311
- enabled: true,
312
- batchSize: 10,
313
- flushIntervalMs: 2000,
314
- maxWaitMs: 5000,
315
- },
316
- timeout: { enabled: true, timeoutMs: 10000 },
317
- offline: { enabled: true },
318
- flush: {
319
- enabled: true,
320
- flushIntervalMs: 2000,
321
- flushOnDestroy: true,
322
- prepareUnloadHooks: true,
323
- },
324
- },
325
318
  integrations: { ...base.modules.integrations, enabled: false },
326
319
  conversion: {
327
320
  enabled: true,
@@ -155,7 +155,7 @@ code { font-size: 0.85em; }
155
155
  </div>
156
156
  </div>
157
157
 
158
- <script src="../../../dist/v2/global.global.js"></script>
158
+ <script src="../../../v2/global.global.js"></script>
159
159
  <script>
160
160
  const { Pixel, DEFAULT_PIXEL_CONFIG } = window.PixelV2;
161
161
  const API_ENDPOINT =
@@ -218,9 +218,46 @@ code { font-size: 0.85em; }
218
218
  debug: true,
219
219
  },
220
220
  transport: {
221
- ...DEFAULT_PIXEL_CONFIG.transport,
222
- apiEndpoint: API_ENDPOINT,
223
- timeoutMs: 10000,
221
+ ...base.transport,
222
+ enabled: true,
223
+ sender: { mode: 'internal', baseUrl: API_ENDPOINT },
224
+ persistence: { enabled: true },
225
+ replay: { enabled: true },
226
+ ordering: { enabled: true },
227
+ coordination: { enabled: true },
228
+ circuitBreaker: {
229
+ enabled: true,
230
+ failureThreshold: 5,
231
+ resetTimeoutMs: 30000,
232
+ halfOpenMaxAttempts: 2,
233
+ },
234
+ backpressure: {
235
+ enabled: true,
236
+ maxQueueSize: 500,
237
+ policy: 'drop_oldest',
238
+ sampleRate: 0.5,
239
+ },
240
+ deadLetter: { enabled: true, maxEntries: 200 },
241
+ compression: { enabled: true, strategy: 'identity' },
242
+ retry: {
243
+ enabled: true,
244
+ maxAttempts: 4,
245
+ baseDelayMs: 500,
246
+ maxDelayMs: 4000,
247
+ multiplier: 2,
248
+ },
249
+ batch: {
250
+ enabled: true,
251
+ batchSize: 10,
252
+ maxWaitMs: 5000,
253
+ },
254
+ timeout: { enabled: true, timeoutMs: 10000 },
255
+ offline: { enabled: true },
256
+ flush: {
257
+ enabled: true,
258
+ flushOnDestroy: true,
259
+ prepareUnloadHooks: true,
260
+ },
224
261
  },
225
262
  identity: { ...base.identity, pixelId: PIXEL_ID },
226
263
  commerce: {
@@ -276,50 +313,6 @@ code { font-size: 0.85em; }
276
313
  },
277
314
  behavior: { ...base.modules.behavior, enabled: false },
278
315
  privacy: { ...base.modules.privacy, enabled: false },
279
- transport: {
280
- enabled: true,
281
- mockSender: { enabled: false },
282
- sender: { mode: 'http' },
283
- persistence: { enabled: true },
284
- replay: { enabled: true },
285
- ordering: { enabled: true },
286
- coordination: { enabled: true },
287
- circuitBreaker: {
288
- enabled: true,
289
- failureThreshold: 5,
290
- resetTimeoutMs: 30000,
291
- halfOpenMaxAttempts: 2,
292
- },
293
- backpressure: {
294
- enabled: true,
295
- maxQueueSize: 500,
296
- policy: 'drop_oldest',
297
- sampleRate: 0.5,
298
- },
299
- deadLetter: { enabled: true, maxEntries: 200 },
300
- compression: { enabled: true, strategy: 'identity' },
301
- retry: {
302
- enabled: true,
303
- maxAttempts: 4,
304
- baseDelayMs: 500,
305
- maxDelayMs: 4000,
306
- multiplier: 2,
307
- },
308
- batch: {
309
- enabled: true,
310
- batchSize: 10,
311
- flushIntervalMs: 2000,
312
- maxWaitMs: 5000,
313
- },
314
- timeout: { enabled: true, timeoutMs: 10000 },
315
- offline: { enabled: true },
316
- flush: {
317
- enabled: true,
318
- flushIntervalMs: 2000,
319
- flushOnDestroy: true,
320
- prepareUnloadHooks: true,
321
- },
322
- },
323
316
  integrations: { ...base.modules.integrations, enabled: false },
324
317
  conversion: {
325
318
  enabled: true,
@@ -175,7 +175,7 @@ code { font-size: 0.85em; }
175
175
  </div>
176
176
  </div>
177
177
 
178
- <script src="../../../dist/v2/global.global.js"></script>
178
+ <script src="../../../v2/global.global.js"></script>
179
179
  <script>
180
180
  const { Pixel, DEFAULT_PIXEL_CONFIG } = window.PixelV2;
181
181
  const API_ENDPOINT =
@@ -238,9 +238,46 @@ code { font-size: 0.85em; }
238
238
  debug: true,
239
239
  },
240
240
  transport: {
241
- ...DEFAULT_PIXEL_CONFIG.transport,
242
- apiEndpoint: API_ENDPOINT,
243
- timeoutMs: 10000,
241
+ ...base.transport,
242
+ enabled: true,
243
+ sender: { mode: 'internal', baseUrl: API_ENDPOINT },
244
+ persistence: { enabled: true },
245
+ replay: { enabled: true },
246
+ ordering: { enabled: true },
247
+ coordination: { enabled: true },
248
+ circuitBreaker: {
249
+ enabled: true,
250
+ failureThreshold: 5,
251
+ resetTimeoutMs: 30000,
252
+ halfOpenMaxAttempts: 2,
253
+ },
254
+ backpressure: {
255
+ enabled: true,
256
+ maxQueueSize: 500,
257
+ policy: 'drop_oldest',
258
+ sampleRate: 0.5,
259
+ },
260
+ deadLetter: { enabled: true, maxEntries: 200 },
261
+ compression: { enabled: true, strategy: 'identity' },
262
+ retry: {
263
+ enabled: true,
264
+ maxAttempts: 4,
265
+ baseDelayMs: 500,
266
+ maxDelayMs: 4000,
267
+ multiplier: 2,
268
+ },
269
+ batch: {
270
+ enabled: true,
271
+ batchSize: 10,
272
+ maxWaitMs: 5000,
273
+ },
274
+ timeout: { enabled: true, timeoutMs: 10000 },
275
+ offline: { enabled: true },
276
+ flush: {
277
+ enabled: true,
278
+ flushOnDestroy: true,
279
+ prepareUnloadHooks: true,
280
+ },
244
281
  },
245
282
  identity: { ...base.identity, pixelId: PIXEL_ID },
246
283
  commerce: {
@@ -296,50 +333,6 @@ code { font-size: 0.85em; }
296
333
  },
297
334
  behavior: { ...base.modules.behavior, enabled: false },
298
335
  privacy: { ...base.modules.privacy, enabled: false },
299
- transport: {
300
- enabled: true,
301
- mockSender: { enabled: false },
302
- sender: { mode: 'http' },
303
- persistence: { enabled: true },
304
- replay: { enabled: true },
305
- ordering: { enabled: true },
306
- coordination: { enabled: true },
307
- circuitBreaker: {
308
- enabled: true,
309
- failureThreshold: 5,
310
- resetTimeoutMs: 30000,
311
- halfOpenMaxAttempts: 2,
312
- },
313
- backpressure: {
314
- enabled: true,
315
- maxQueueSize: 500,
316
- policy: 'drop_oldest',
317
- sampleRate: 0.5,
318
- },
319
- deadLetter: { enabled: true, maxEntries: 200 },
320
- compression: { enabled: true, strategy: 'identity' },
321
- retry: {
322
- enabled: true,
323
- maxAttempts: 4,
324
- baseDelayMs: 500,
325
- maxDelayMs: 4000,
326
- multiplier: 2,
327
- },
328
- batch: {
329
- enabled: true,
330
- batchSize: 10,
331
- flushIntervalMs: 2000,
332
- maxWaitMs: 5000,
333
- },
334
- timeout: { enabled: true, timeoutMs: 10000 },
335
- offline: { enabled: true },
336
- flush: {
337
- enabled: true,
338
- flushIntervalMs: 2000,
339
- flushOnDestroy: true,
340
- prepareUnloadHooks: true,
341
- },
342
- },
343
336
  integrations: { ...base.modules.integrations, enabled: false },
344
337
  conversion: {
345
338
  enabled: true,
@@ -11,6 +11,7 @@ Cada HTML valida **um** comportamento. Abra um de cada vez.
11
11
  | 5 | [`example-add-to-cart-manual.html`](./example-add-to-cart-manual.html) | `pixel.addToCart()` | Payload manual, catalog, override de preço |
12
12
  | 6 | [`example-add-to-cart-dedupe.html`](./example-add-to-cart-dedupe.html) | clique / API rápida | Janela ~500ms sem bloquear ação futura |
13
13
  | 7 | [`example-add-to-cart-order-bump.html`](./example-add-to-cart-order-bump.html) | multi produto | CommerceState / cart mirror |
14
+ | 8 | [`example-add-to-cart-link.html`](./example-add-to-cart-link.html) | source `type: link` + `<a href>` | Match de destino + bindings + catalog |
14
15
 
15
16
  ## Fontes de produto (merge)
16
17
 
@@ -23,14 +24,16 @@ Cada HTML valida **um** comportamento. Abra um de cada vez.
23
24
  6. defaults
24
25
  ```
25
26
 
27
+ Source `link`: `productId` vem de bindings (`dataset` → `query` → `pathParam`), depois o enrich do Core.
28
+
26
29
  ## Como abrir
27
30
 
28
- 1. Na raiz: `npm run build`
31
+ 1. Na raiz: `pnpm --filter @beworke/pixel build`
29
32
  2. Abra o HTML (live server recomendado)
30
- 3. Script: `../../../dist/v2/global.global.js`
33
+ 3. Script: `../../../packages/pixel/dist/v2/global.global.js`
31
34
 
32
35
  ## Ordem sugerida
33
36
 
34
- `atributo → click+form → auto → text → manual → dedupe → order bump`
37
+ `atributo → click+form → auto → text → manual → dedupe → order bump → link`
35
38
 
36
39
  LEAD (referência): [`../lead/`](../lead/)
@@ -92,7 +92,8 @@ code { font-size: 0.85em; }
92
92
  <a href="example-add-to-cart-text.html" class="">4. Text</a>
93
93
  <a href="example-add-to-cart-manual.html" class="">5. Manual API</a>
94
94
  <a href="example-add-to-cart-dedupe.html" class="">6. Dedupe</a>
95
- <a href="example-add-to-cart-order-bump.html" class="">7. Order bump</a></div>
95
+ <a href="example-add-to-cart-order-bump.html" class="">7. Order bump</a>
96
+ <a href="example-add-to-cart-link.html" class="">8. Link</a></div>
96
97
  <div class="hint"><strong>Contexto:</strong> PDP / card de produto. Clique em botão com
97
98
  <code>data-track="add_to_cart"</code> + <code>data-product-*</code>.
98
99
  Sem <code>selectorForm</code> — <code>ConfiguredSelectorDetector</code> +
@@ -181,7 +182,7 @@ code { font-size: 0.85em; }
181
182
  </div>
182
183
  </div>
183
184
 
184
- <script src="../../../dist/v2/global.global.js"></script>
185
+ <script src="../../../v2/global.global.js"></script>
185
186
  <script>
186
187
  const { Pixel, DEFAULT_PIXEL_CONFIG } = window.PixelV2;
187
188
  const API_ENDPOINT =
@@ -234,9 +235,46 @@ code { font-size: 0.85em; }
234
235
  debug: true,
235
236
  },
236
237
  transport: {
237
- ...DEFAULT_PIXEL_CONFIG.transport,
238
- apiEndpoint: API_ENDPOINT,
239
- timeoutMs: 10000,
238
+ ...base.transport,
239
+ enabled: true,
240
+ sender: { mode: 'internal', baseUrl: API_ENDPOINT },
241
+ persistence: { enabled: true },
242
+ replay: { enabled: true },
243
+ ordering: { enabled: true },
244
+ coordination: { enabled: true },
245
+ circuitBreaker: {
246
+ enabled: true,
247
+ failureThreshold: 5,
248
+ resetTimeoutMs: 30000,
249
+ halfOpenMaxAttempts: 2,
250
+ },
251
+ backpressure: {
252
+ enabled: true,
253
+ maxQueueSize: 500,
254
+ policy: 'drop_oldest',
255
+ sampleRate: 0.5,
256
+ },
257
+ deadLetter: { enabled: true, maxEntries: 200 },
258
+ compression: { enabled: true, strategy: 'identity' },
259
+ retry: {
260
+ enabled: true,
261
+ maxAttempts: 4,
262
+ baseDelayMs: 500,
263
+ maxDelayMs: 4000,
264
+ multiplier: 2,
265
+ },
266
+ batch: {
267
+ enabled: true,
268
+ batchSize: 10,
269
+ maxWaitMs: 5000,
270
+ },
271
+ timeout: { enabled: true, timeoutMs: 10000 },
272
+ offline: { enabled: true },
273
+ flush: {
274
+ enabled: true,
275
+ flushOnDestroy: true,
276
+ prepareUnloadHooks: true,
277
+ },
240
278
  },
241
279
  identity: { ...base.identity, pixelId: PIXEL_ID },
242
280
  commerce: {
@@ -317,50 +355,6 @@ code { font-size: 0.85em; }
317
355
  },
318
356
  behavior: { ...base.modules.behavior, enabled: false },
319
357
  privacy: { ...base.modules.privacy, enabled: false },
320
- transport: {
321
- enabled: true,
322
- mockSender: { enabled: false },
323
- sender: { mode: 'http' },
324
- persistence: { enabled: true },
325
- replay: { enabled: true },
326
- ordering: { enabled: true },
327
- coordination: { enabled: true },
328
- circuitBreaker: {
329
- enabled: true,
330
- failureThreshold: 5,
331
- resetTimeoutMs: 30000,
332
- halfOpenMaxAttempts: 2,
333
- },
334
- backpressure: {
335
- enabled: true,
336
- maxQueueSize: 500,
337
- policy: 'drop_oldest',
338
- sampleRate: 0.5,
339
- },
340
- deadLetter: { enabled: true, maxEntries: 200 },
341
- compression: { enabled: true, strategy: 'identity' },
342
- retry: {
343
- enabled: true,
344
- maxAttempts: 4,
345
- baseDelayMs: 500,
346
- maxDelayMs: 4000,
347
- multiplier: 2,
348
- },
349
- batch: {
350
- enabled: true,
351
- batchSize: 10,
352
- flushIntervalMs: 2000,
353
- maxWaitMs: 5000,
354
- },
355
- timeout: { enabled: true, timeoutMs: 10000 },
356
- offline: { enabled: true },
357
- flush: {
358
- enabled: true,
359
- flushIntervalMs: 2000,
360
- flushOnDestroy: true,
361
- prepareUnloadHooks: true,
362
- },
363
- },
364
358
  integrations: { ...base.modules.integrations, enabled: false },
365
359
  conversion: {
366
360
  enabled: true,