@active-reach/web-sdk 1.0.0 → 1.1.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.
@@ -0,0 +1,77 @@
1
+ /**
2
+ * E-Commerce event types following the Active Reach Intelligence spec.
3
+ * Compatible with Segment/GA4 e-commerce event schemas.
4
+ */
5
+ export interface EcommerceProduct {
6
+ product_id: string;
7
+ sku?: string;
8
+ name: string;
9
+ price: number;
10
+ quantity?: number;
11
+ currency?: string;
12
+ category?: string;
13
+ brand?: string;
14
+ variant_id?: string;
15
+ variant_label?: string;
16
+ image_url?: string;
17
+ url?: string;
18
+ position?: number;
19
+ }
20
+ export interface EcommerceCart {
21
+ cart_id?: string;
22
+ value: number;
23
+ currency?: string;
24
+ products: EcommerceProduct[];
25
+ }
26
+ export interface EcommerceCheckout {
27
+ checkout_id?: string;
28
+ value: number;
29
+ currency?: string;
30
+ products: EcommerceProduct[];
31
+ coupon?: string;
32
+ shipping?: number;
33
+ tax?: number;
34
+ }
35
+ export interface EcommerceOrder {
36
+ order_id: string;
37
+ value: number;
38
+ revenue?: number;
39
+ currency?: string;
40
+ products: EcommerceProduct[];
41
+ coupon?: string;
42
+ shipping?: number;
43
+ tax?: number;
44
+ discount?: number;
45
+ payment_method?: string;
46
+ }
47
+ export interface EcommerceCoupon {
48
+ coupon_id?: string;
49
+ coupon_code: string;
50
+ discount_value?: number;
51
+ discount_type?: 'percentage' | 'fixed';
52
+ order_id?: string;
53
+ cart_id?: string;
54
+ }
55
+ export interface EcommerceSearch {
56
+ query: string;
57
+ results_count?: number;
58
+ filters?: Record<string, string | string[]>;
59
+ }
60
+ export interface EcommerceProductList {
61
+ list_id?: string;
62
+ list_name?: string;
63
+ products: EcommerceProduct[];
64
+ category?: string;
65
+ }
66
+ export interface EcommerceWishlist {
67
+ wishlist_id?: string;
68
+ wishlist_name?: string;
69
+ product: EcommerceProduct;
70
+ }
71
+ export interface EcommercePromotion {
72
+ promotion_id?: string;
73
+ name: string;
74
+ creative?: string;
75
+ position?: string;
76
+ }
77
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ecommerce/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
package/dist/index.d.ts CHANGED
@@ -20,4 +20,6 @@ export { SdkConfigPoller } from './core/sdk-config-poller';
20
20
  export type { SdkConfig, SdkConfigPollerOptions, ConfigChangeCallback } from './core/sdk-config-poller';
21
21
  export { AegisWebPush } from './push/AegisWebPush';
22
22
  export type { AegisWebPushConfig, AegisAPIClient, ContactIdentity, PushEventTracker, } from './push/AegisWebPush';
23
+ export { EcommerceTracker } from './ecommerce';
24
+ export type { EcommerceProduct, EcommerceCart, EcommerceCheckout, EcommerceOrder, EcommerceCoupon, EcommerceSearch, EcommerceProductList, EcommerceWishlist, EcommercePromotion, } from './ecommerce';
23
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC;AAErB,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5E,YAAY,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,UAAU,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,oBAAoB,GACrB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,YAAY,EAAE,SAAS,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAExG,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC;AAErB,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5E,YAAY,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,UAAU,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,oBAAoB,GACrB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,YAAY,EAAE,SAAS,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAExG,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
- import { l as logger, A as Aegis } from "./analytics-B11keZ55.mjs";
1
+ import { l as logger, A as Aegis } from "./analytics-pklAx2Nq.mjs";
2
+ import { E } from "./analytics-pklAx2Nq.mjs";
2
3
  import { AegisWebPush } from "./push/AegisWebPush.js";
3
4
  function debounce(func, wait) {
4
5
  let timeoutId = null;
@@ -2023,6 +2024,73 @@ class AegisPlacementManager {
2023
2024
  return "#000000";
2024
2025
  }
2025
2026
  sanitizeHTML(html) {
2027
+ const purify = window.DOMPurify;
2028
+ if (purify == null ? void 0 : purify.sanitize) {
2029
+ return purify.sanitize(html, {
2030
+ ALLOWED_TAGS: [
2031
+ "a",
2032
+ "b",
2033
+ "br",
2034
+ "div",
2035
+ "em",
2036
+ "h1",
2037
+ "h2",
2038
+ "h3",
2039
+ "h4",
2040
+ "h5",
2041
+ "h6",
2042
+ "i",
2043
+ "img",
2044
+ "li",
2045
+ "ol",
2046
+ "p",
2047
+ "span",
2048
+ "strong",
2049
+ "u",
2050
+ "ul",
2051
+ "table",
2052
+ "thead",
2053
+ "tbody",
2054
+ "tr",
2055
+ "th",
2056
+ "td",
2057
+ "blockquote",
2058
+ "hr",
2059
+ "figure",
2060
+ "figcaption",
2061
+ "picture",
2062
+ "source",
2063
+ "video",
2064
+ "section",
2065
+ "article"
2066
+ ],
2067
+ ALLOWED_ATTR: [
2068
+ "href",
2069
+ "target",
2070
+ "rel",
2071
+ "src",
2072
+ "alt",
2073
+ "width",
2074
+ "height",
2075
+ "class",
2076
+ "id",
2077
+ "style",
2078
+ "title",
2079
+ "loading",
2080
+ "srcset",
2081
+ "sizes",
2082
+ "type",
2083
+ "media",
2084
+ "controls",
2085
+ "poster"
2086
+ ],
2087
+ ALLOW_DATA_ATTR: false
2088
+ });
2089
+ }
2090
+ this.log(
2091
+ 'DOMPurify not found — falling back to built-in sanitizer. For full HTML placement support, add <script src="https://cdnjs.cloudflare.com/ajax/libs/dompurify/3.2.4/purify.min.js"><\/script>',
2092
+ false
2093
+ );
2026
2094
  const tempDiv = document.createElement("div");
2027
2095
  tempDiv.textContent = html;
2028
2096
  return tempDiv.innerHTML;
@@ -4286,6 +4354,7 @@ export {
4286
4354
  AegisPlacementManager,
4287
4355
  AegisWebPush,
4288
4356
  AegisWidgetManager,
4357
+ E as EcommerceTracker,
4289
4358
  SdkConfigPoller,
4290
4359
  TriggerEngine,
4291
4360
  debounce,