@active-reach/web-sdk 1.43.1 → 1.43.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/aegis-push.min.js +2 -0
- package/dist/aegis-push.min.js.map +1 -0
- package/dist/aegis-sw.js +1 -0
- package/dist/aegis.min.js +2 -0
- package/dist/aegis.min.js.map +1 -0
- package/dist/analytics-C-Go3Pm5.mjs +3509 -0
- package/dist/analytics-C-Go3Pm5.mjs.map +1 -0
- package/dist/cdn.d.ts +26 -0
- package/dist/cdn.d.ts.map +1 -0
- package/dist/chat/AegisChat.d.ts +180 -0
- package/dist/chat/AegisChat.d.ts.map +1 -0
- package/dist/chat/index.d.ts +3 -0
- package/dist/chat/index.d.ts.map +1 -0
- package/dist/core/analytics.d.ts +320 -0
- package/dist/core/analytics.d.ts.map +1 -0
- package/dist/core/bootstrap.d.ts +96 -0
- package/dist/core/bootstrap.d.ts.map +1 -0
- package/dist/core/prefetch-bundle-client.d.ts +175 -0
- package/dist/core/prefetch-bundle-client.d.ts.map +1 -0
- package/dist/core/queue.d.ts +35 -0
- package/dist/core/queue.d.ts.map +1 -0
- package/dist/core/rate-limiter.d.ts +45 -0
- package/dist/core/rate-limiter.d.ts.map +1 -0
- package/dist/core/sdk-config-poller.d.ts +59 -0
- package/dist/core/sdk-config-poller.d.ts.map +1 -0
- package/dist/core/session.d.ts +52 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/transport.d.ts +50 -0
- package/dist/core/transport.d.ts.map +1 -0
- package/dist/core/user-namespace.d.ts +48 -0
- package/dist/core/user-namespace.d.ts.map +1 -0
- package/dist/ecommerce/index.d.ts +94 -0
- package/dist/ecommerce/index.d.ts.map +1 -0
- package/dist/ecommerce/types.d.ts +81 -0
- package/dist/ecommerce/types.d.ts.map +1 -0
- package/dist/governance/bloom-filter.d.ts +47 -0
- package/dist/governance/bloom-filter.d.ts.map +1 -0
- package/dist/governance/index.d.ts +8 -0
- package/dist/governance/index.d.ts.map +1 -0
- package/dist/governance/murmur3.d.ts +43 -0
- package/dist/governance/murmur3.d.ts.map +1 -0
- package/dist/governance/name-governor.d.ts +98 -0
- package/dist/governance/name-governor.d.ts.map +1 -0
- package/dist/governance/trait-governor.d.ts +63 -0
- package/dist/governance/trait-governor.d.ts.map +1 -0
- package/dist/inapp/AegisInAppManager.d.ts +894 -0
- package/dist/inapp/AegisInAppManager.d.ts.map +1 -0
- package/dist/inapp/actions.d.ts +91 -0
- package/dist/inapp/actions.d.ts.map +1 -0
- package/dist/inapp/devicePairing.d.ts +70 -0
- package/dist/inapp/devicePairing.d.ts.map +1 -0
- package/dist/inapp/eval-throttle.d.ts +33 -0
- package/dist/inapp/eval-throttle.d.ts.map +1 -0
- package/dist/inapp/font.d.ts +16 -0
- package/dist/inapp/font.d.ts.map +1 -0
- package/dist/inapp/index.d.ts +8 -0
- package/dist/inapp/index.d.ts.map +1 -0
- package/dist/inapp/lucide-svg.d.ts +46 -0
- package/dist/inapp/lucide-svg.d.ts.map +1 -0
- package/dist/inapp/renderPreview.d.ts +40 -0
- package/dist/inapp/renderPreview.d.ts.map +1 -0
- package/dist/inapp/renderers/active-web-chat.d.ts +45 -0
- package/dist/inapp/renderers/active-web-chat.d.ts.map +1 -0
- package/dist/inapp/renderers/card-style.d.ts +31 -0
- package/dist/inapp/renderers/card-style.d.ts.map +1 -0
- package/dist/inapp/renderers/card-template.d.ts +233 -0
- package/dist/inapp/renderers/card-template.d.ts.map +1 -0
- package/dist/inapp/renderers/carousel-cards.d.ts +15 -0
- package/dist/inapp/renderers/carousel-cards.d.ts.map +1 -0
- package/dist/inapp/renderers/coachmark-tour.d.ts +24 -0
- package/dist/inapp/renderers/coachmark-tour.d.ts.map +1 -0
- package/dist/inapp/renderers/games.d.ts +27 -0
- package/dist/inapp/renderers/games.d.ts.map +1 -0
- package/dist/inapp/renderers/hero.d.ts +23 -0
- package/dist/inapp/renderers/hero.d.ts.map +1 -0
- package/dist/inapp/renderers/index.d.ts +22 -0
- package/dist/inapp/renderers/index.d.ts.map +1 -0
- package/dist/inapp/renderers/interactive-contract.d.ts +48 -0
- package/dist/inapp/renderers/interactive-contract.d.ts.map +1 -0
- package/dist/inapp/renderers/product-recommendation.d.ts +37 -0
- package/dist/inapp/renderers/product-recommendation.d.ts.map +1 -0
- package/dist/inapp/renderers/progress-bar.d.ts +38 -0
- package/dist/inapp/renderers/progress-bar.d.ts.map +1 -0
- package/dist/inapp/renderers/progress-core.d.ts +80 -0
- package/dist/inapp/renderers/progress-core.d.ts.map +1 -0
- package/dist/inapp/renderers/reviews.d.ts +38 -0
- package/dist/inapp/renderers/reviews.d.ts.map +1 -0
- package/dist/inapp/renderers/scratch-engine.d.ts +66 -0
- package/dist/inapp/renderers/scratch-engine.d.ts.map +1 -0
- package/dist/inapp/renderers/sticky-bar.d.ts +14 -0
- package/dist/inapp/renderers/sticky-bar.d.ts.map +1 -0
- package/dist/inapp/renderers/stories.d.ts +31 -0
- package/dist/inapp/renderers/stories.d.ts.map +1 -0
- package/dist/inapp/renderers/types.d.ts +152 -0
- package/dist/inapp/renderers/types.d.ts.map +1 -0
- package/dist/inapp/renderers/video.d.ts +20 -0
- package/dist/inapp/renderers/video.d.ts.map +1 -0
- package/dist/inbox/AegisInbox.d.ts +106 -0
- package/dist/inbox/AegisInbox.d.ts.map +1 -0
- package/dist/inbox/index.d.ts +3 -0
- package/dist/inbox/index.d.ts.map +1 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15546 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/react.d.ts +19 -0
- package/dist/integrations/react.d.ts.map +1 -0
- package/dist/loyalty/AegisLoyaltyManager.d.ts +120 -0
- package/dist/loyalty/AegisLoyaltyManager.d.ts.map +1 -0
- package/dist/loyalty/index.d.ts +3 -0
- package/dist/loyalty/index.d.ts.map +1 -0
- package/dist/plugins/registry.d.ts +13 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/push/AegisWebPush.d.ts +199 -0
- package/dist/push/AegisWebPush.d.ts.map +1 -0
- package/dist/push/AegisWebPush.js +542 -0
- package/dist/push/AegisWebPush.js.map +1 -0
- package/dist/push/cdn-push.d.ts +21 -0
- package/dist/push/cdn-push.d.ts.map +1 -0
- package/dist/react.js +70 -0
- package/dist/react.js.map +1 -0
- package/dist/runtime/AegisMessageRuntime.d.ts +276 -0
- package/dist/runtime/AegisMessageRuntime.d.ts.map +1 -0
- package/dist/runtime/index.d.ts +3 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/snippet.min.js +1 -0
- package/dist/state/intent_ledger.d.ts +136 -0
- package/dist/state/intent_ledger.d.ts.map +1 -0
- package/dist/triggers/ContactScoresFetcher.d.ts +113 -0
- package/dist/triggers/ContactScoresFetcher.d.ts.map +1 -0
- package/dist/triggers/IntentRuleEvaluator.d.ts +213 -0
- package/dist/triggers/IntentRuleEvaluator.d.ts.map +1 -0
- package/dist/triggers/IntentSnapshotCollector.d.ts +83 -0
- package/dist/triggers/IntentSnapshotCollector.d.ts.map +1 -0
- package/dist/triggers/SelectorBinder.d.ts +118 -0
- package/dist/triggers/SelectorBinder.d.ts.map +1 -0
- package/dist/triggers/TriggerEngine.d.ts +296 -0
- package/dist/triggers/TriggerEngine.d.ts.map +1 -0
- package/dist/triggers/behaviouralTriggers.d.ts +44 -0
- package/dist/triggers/behaviouralTriggers.d.ts.map +1 -0
- package/dist/triggers/index.d.ts +11 -0
- package/dist/triggers/index.d.ts.map +1 -0
- package/dist/triggers/microIntentTriggers.d.ts +80 -0
- package/dist/triggers/microIntentTriggers.d.ts.map +1 -0
- package/dist/types/config.d.ts +77 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/events.d.ts +147 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/plugin.d.ts +21 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/type-safe-events.d.ts +14 -0
- package/dist/types/type-safe-events.d.ts.map +1 -0
- package/dist/utils/canonical-identity.d.ts +29 -0
- package/dist/utils/canonical-identity.d.ts.map +1 -0
- package/dist/utils/consent.d.ts +40 -0
- package/dist/utils/consent.d.ts.map +1 -0
- package/dist/utils/debounce.d.ts +3 -0
- package/dist/utils/debounce.d.ts.map +1 -0
- package/dist/utils/device.d.ts +6 -0
- package/dist/utils/device.d.ts.map +1 -0
- package/dist/utils/identity.d.ts +27 -0
- package/dist/utils/identity.d.ts.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/logger.d.ts +15 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/meta-cookies.d.ts +65 -0
- package/dist/utils/meta-cookies.d.ts.map +1 -0
- package/dist/utils/redact-url.d.ts +56 -0
- package/dist/utils/redact-url.d.ts.map +1 -0
- package/dist/utils/storage.d.ts +20 -0
- package/dist/utils/storage.d.ts.map +1 -0
- package/dist/utils/url-parser.d.ts +61 -0
- package/dist/utils/url-parser.d.ts.map +1 -0
- package/dist/utils/uuid.d.ts +4 -0
- package/dist/utils/uuid.d.ts.map +1 -0
- package/dist/utils/visitor.d.ts +43 -0
- package/dist/utils/visitor.d.ts.map +1 -0
- package/dist/widgets/AegisWidgetManager.d.ts +209 -0
- package/dist/widgets/AegisWidgetManager.d.ts.map +1 -0
- package/dist/widgets/index.d.ts +3 -0
- package/dist/widgets/index.d.ts.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* New-visitor verdict — the ONE reader and writer of the returning-visitor
|
|
3
|
+
* marker (2026-09-13).
|
|
4
|
+
*
|
|
5
|
+
* `/v1/in-app/active` and `/v1/sdk/prefetch-bundle` both take `is_new_user`,
|
|
6
|
+
* and the server drops any campaign whose `display_rules.show_to_new_users_only`
|
|
7
|
+
* is set when it arrives false. The SDK used to write `aegis_returning_user=1`
|
|
8
|
+
* at the top of `AegisInAppManager.initialize()` and read it afterwards, inside
|
|
9
|
+
* the fetch — so the read always saw its own write, every fetch said
|
|
10
|
+
* `is_new_user=false`, and a new-users-only campaign could never be served.
|
|
11
|
+
*
|
|
12
|
+
* The rule this module enforces: the marker is read ONCE, before anything
|
|
13
|
+
* writes it, and the verdict is held for the whole browsing session.
|
|
14
|
+
*
|
|
15
|
+
* - `isNewVisitor()` resolves the verdict on first call and caches it in
|
|
16
|
+
* memory (this page load) and in sessionStorage (later page loads in the
|
|
17
|
+
* same tab session), so every fetch in a session sends the same value and
|
|
18
|
+
* the verdict does not flip after the marker is written.
|
|
19
|
+
* - `markReturningVisitor()` is the only writer. It resolves the verdict
|
|
20
|
+
* first, so no call order can make the read see the write.
|
|
21
|
+
*
|
|
22
|
+
* Storage unavailable (SSR, blocked site data, a browser that throws on
|
|
23
|
+
* access): the verdict is RETURNING (`false`). "New" is a positive claim that
|
|
24
|
+
* unlocks first-visit-only messages; when the SDK cannot remember a visit it
|
|
25
|
+
* cannot prove one never happened, and because the marker can never be saved,
|
|
26
|
+
* answering "new" would re-show a first-visit message on every page of every
|
|
27
|
+
* visit forever. `false` is also what the server assumes when the parameter is
|
|
28
|
+
* absent, so an unknown visitor reads the same on both sides.
|
|
29
|
+
*/
|
|
30
|
+
/**
|
|
31
|
+
* Whether this browsing session belongs to a visitor the SDK has never seen
|
|
32
|
+
* before. Stable for the whole session; see the module doc for the default
|
|
33
|
+
* when storage is unavailable.
|
|
34
|
+
*/
|
|
35
|
+
export declare function isNewVisitor(): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Record that this visitor has now been seen, so the NEXT session reads as
|
|
38
|
+
* returning. Resolves the current session's verdict before writing.
|
|
39
|
+
*/
|
|
40
|
+
export declare function markReturningVisitor(): void;
|
|
41
|
+
/** Test seam: forget the in-memory verdict, as a fresh page load would. */
|
|
42
|
+
export declare function resetVisitorVerdictCacheForTests(): void;
|
|
43
|
+
//# sourceMappingURL=visitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visitor.d.ts","sourceRoot":"","sources":["../../src/utils/visitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAqCH;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAUtC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAQ3C;AAED,2EAA2E;AAC3E,wBAAgB,gCAAgC,IAAI,IAAI,CAEvD"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AegisWidgetManager - Web SDK Widget Module
|
|
3
|
+
*
|
|
4
|
+
* Smart Pull architecture for persistent web widgets.
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Games (spin wheel, scratch card) are in-app campaigns (AegisInAppManager), not widgets
|
|
8
|
+
* - Chat bubbles (WhatsApp, support)
|
|
9
|
+
* - Social proof toasts (real-time purchase notifications)
|
|
10
|
+
* - Feedback forms (NPS, surveys)
|
|
11
|
+
*
|
|
12
|
+
* Security:
|
|
13
|
+
* - XSS Protection: Uses DOM APIs instead of innerHTML
|
|
14
|
+
* - Server-side prize generation prevents client manipulation
|
|
15
|
+
* - URL validation prevents javascript: protocol injection
|
|
16
|
+
*
|
|
17
|
+
* Architecture:
|
|
18
|
+
* - Fetches widget configs from /v1/widgets/config on page load
|
|
19
|
+
* - Integrates with TriggerEngine for behavioral triggers
|
|
20
|
+
* - Tracks widget events (show, click, dismiss, submit)
|
|
21
|
+
* - Server-side prize generation for gamification
|
|
22
|
+
*/
|
|
23
|
+
import { TriggerEngine } from '../triggers/TriggerEngine';
|
|
24
|
+
export interface WidgetConfig {
|
|
25
|
+
widget_id: string;
|
|
26
|
+
widget_type: 'chat_bubble' | 'toast' | 'feedback_form' | 'exit_intent_popup';
|
|
27
|
+
name: string;
|
|
28
|
+
config: Record<string, any>;
|
|
29
|
+
position?: string;
|
|
30
|
+
priority: number;
|
|
31
|
+
trigger_rules?: {
|
|
32
|
+
type: 'exit_intent' | 'scroll_depth' | 'time_on_page' | 'immediate';
|
|
33
|
+
config?: Record<string, any>;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export interface AegisWidgetConfig {
|
|
37
|
+
writeKey: string;
|
|
38
|
+
apiHost?: string;
|
|
39
|
+
userId?: string;
|
|
40
|
+
contactId?: string;
|
|
41
|
+
/** Server-minted proof of `contactId` (C1b). Sent alongside `X-Contact-ID`
|
|
42
|
+
* so the cell-plane will honour the id. */
|
|
43
|
+
contactToken?: string;
|
|
44
|
+
organizationId?: string;
|
|
45
|
+
debugMode?: boolean;
|
|
46
|
+
triggerEngine?: TriggerEngine;
|
|
47
|
+
/** If true, WidgetManager takes ownership of the TriggerEngine and
|
|
48
|
+
* will call `triggerEngine.stop()` on destroy(). Leave false when
|
|
49
|
+
* the caller shares the engine across managers (e.g. the facade). */
|
|
50
|
+
ownsTriggerEngine?: boolean;
|
|
51
|
+
enablePrefetch?: boolean;
|
|
52
|
+
cssCustomization?: WidgetCSSCustomization;
|
|
53
|
+
onEvent?: (eventType: string, data: any) => void;
|
|
54
|
+
/** Source platform passed as X-Source-Platform header so the API
|
|
55
|
+
* can filter campaigns whose display_rules.sources restricts them
|
|
56
|
+
* to specific integrations (e.g. 'shopify', 'woocommerce'). */
|
|
57
|
+
sourcePlatform?: 'web' | 'shopify' | 'woocommerce' | 'mobile_sdk';
|
|
58
|
+
/**
|
|
59
|
+
* Workspace cascade reader. Host SDK sets this to
|
|
60
|
+
* `() => aegis.getEffectiveWorkspaceId()` so widget interaction events
|
|
61
|
+
* (impressions, clicks, feedback submissions)
|
|
62
|
+
* arrive at the gateway with the same workspace context the main
|
|
63
|
+
* analytics SDK uses. See PLUGIN_HANDSHAKE_AUTOMATION_TRACKER.md §P1.b.
|
|
64
|
+
*/
|
|
65
|
+
getWorkspaceId?: () => string | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* Cart-store unification: invoked whenever the widget subsystem learns the
|
|
68
|
+
* cart — platform auto-detect (Shopify/Woo/Magento) or an explicit
|
|
69
|
+
* `setCartData(...)`. The runtime wires this to `applyCart(...)` so the ONE
|
|
70
|
+
* cart store (read by the Free-Delivery card / progress bar / rule eval) stays
|
|
71
|
+
* in sync. See CART_STORE_UNIFICATION_TRACKER.md.
|
|
72
|
+
*/
|
|
73
|
+
onCartDetected?: (cart: CartData) => void;
|
|
74
|
+
}
|
|
75
|
+
export interface WidgetCSSCustomization {
|
|
76
|
+
exitIntent?: {
|
|
77
|
+
backgroundColor?: string;
|
|
78
|
+
textColor?: string;
|
|
79
|
+
accentColor?: string;
|
|
80
|
+
borderRadius?: string;
|
|
81
|
+
fontFamily?: string;
|
|
82
|
+
overlayOpacity?: number;
|
|
83
|
+
};
|
|
84
|
+
chatBubble?: {
|
|
85
|
+
backgroundColor?: string;
|
|
86
|
+
textColor?: string;
|
|
87
|
+
position?: 'bottom_right' | 'bottom_left' | 'top_right' | 'top_left';
|
|
88
|
+
size?: 'small' | 'medium' | 'large';
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export interface PrefetchWidgetConfig {
|
|
92
|
+
exit_intent?: {
|
|
93
|
+
enabled: boolean;
|
|
94
|
+
type: 'cart_recovery' | 'lead_gen';
|
|
95
|
+
tier?: string;
|
|
96
|
+
title?: string;
|
|
97
|
+
message?: string;
|
|
98
|
+
discount_code?: string;
|
|
99
|
+
discount_percentage?: number;
|
|
100
|
+
cta_text?: string;
|
|
101
|
+
cta_url?: string;
|
|
102
|
+
background_color?: string;
|
|
103
|
+
text_color?: string;
|
|
104
|
+
accent_color?: string;
|
|
105
|
+
show_cart_items?: boolean;
|
|
106
|
+
show_timer?: boolean;
|
|
107
|
+
timer_minutes?: number;
|
|
108
|
+
priority: number;
|
|
109
|
+
mobile_triggers?: {
|
|
110
|
+
scroll_velocity?: boolean;
|
|
111
|
+
scroll_threshold?: number;
|
|
112
|
+
scroll_min_position?: number;
|
|
113
|
+
scroll_cooldown?: number;
|
|
114
|
+
idle_timer?: boolean;
|
|
115
|
+
idle_seconds?: number;
|
|
116
|
+
visibility_change?: boolean;
|
|
117
|
+
back_button?: boolean;
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
export interface CartData {
|
|
122
|
+
cart_id: string;
|
|
123
|
+
cart_total: number;
|
|
124
|
+
cart_currency: string;
|
|
125
|
+
cart_items: Array<{
|
|
126
|
+
product_id: string;
|
|
127
|
+
product_name?: string;
|
|
128
|
+
quantity: number;
|
|
129
|
+
price?: number;
|
|
130
|
+
}>;
|
|
131
|
+
}
|
|
132
|
+
export declare class AegisWidgetManager {
|
|
133
|
+
private writeKey;
|
|
134
|
+
private apiHost;
|
|
135
|
+
private userId?;
|
|
136
|
+
private contactId?;
|
|
137
|
+
private contactToken?;
|
|
138
|
+
private organizationId?;
|
|
139
|
+
private debugMode;
|
|
140
|
+
private triggerEngine?;
|
|
141
|
+
private enablePrefetch;
|
|
142
|
+
private cssCustomization;
|
|
143
|
+
private onEvent?;
|
|
144
|
+
private sourcePlatform?;
|
|
145
|
+
private getWorkspaceId?;
|
|
146
|
+
private onCartDetected?;
|
|
147
|
+
private widgets;
|
|
148
|
+
private renderedWidgets;
|
|
149
|
+
private isInitialized;
|
|
150
|
+
private isDestroyed;
|
|
151
|
+
private ownsTriggerEngine;
|
|
152
|
+
private prefetchWidgetConfigs;
|
|
153
|
+
private cartData?;
|
|
154
|
+
constructor(config: AegisWidgetConfig);
|
|
155
|
+
updateCSSCustomization(customization: WidgetCSSCustomization): void;
|
|
156
|
+
/**
|
|
157
|
+
* Swap the identity that outgoing widget requests are attributed to.
|
|
158
|
+
* Safe to call at any time; if prefetch is enabled and the manager
|
|
159
|
+
* has already initialised, this will re-fetch the per-contact widget
|
|
160
|
+
* configs so subsequent renders target the new identity. Does NOT
|
|
161
|
+
* re-render already-visible widgets — a full teardown requires destroy().
|
|
162
|
+
*/
|
|
163
|
+
updateContactId(contactId: string | undefined, contactToken?: string): Promise<void>;
|
|
164
|
+
/**
|
|
165
|
+
* Tear down everything the manager installed: trigger listeners (if
|
|
166
|
+
* we own the TriggerEngine), injected style sheets, and any rendered
|
|
167
|
+
* widget roots. Further render attempts from in-flight triggers are
|
|
168
|
+
* short-circuited by the `isDestroyed` flag.
|
|
169
|
+
*/
|
|
170
|
+
destroy(): void;
|
|
171
|
+
/**
|
|
172
|
+
* Fire a lifecycle event to the consumer-supplied callback. Public-API
|
|
173
|
+
* hook configured via `AegisWidgetConfig.onEvent`. Currently only used
|
|
174
|
+
* by external callers passing their own logger; internal widget lifecycle
|
|
175
|
+
* events get wired through here as they're added.
|
|
176
|
+
*/
|
|
177
|
+
private emitEvent;
|
|
178
|
+
initialize(): Promise<void>;
|
|
179
|
+
setCartData(cartData: CartData): void;
|
|
180
|
+
private detectPlatformCart;
|
|
181
|
+
private normalizeShopifyCart;
|
|
182
|
+
private normalizeWooCart;
|
|
183
|
+
private normalizeMagentoCart;
|
|
184
|
+
private preloadWidgetAssets;
|
|
185
|
+
private fetchPrefetchConfigs;
|
|
186
|
+
private fetchWidgets;
|
|
187
|
+
private renderImmediateWidgets;
|
|
188
|
+
private setupTriggerListeners;
|
|
189
|
+
private setupExitIntentWithPrefetch;
|
|
190
|
+
private sendCartAbandonmentBeacon;
|
|
191
|
+
private renderWidget;
|
|
192
|
+
private renderChatBubble;
|
|
193
|
+
private getUTMParams;
|
|
194
|
+
private renderToast;
|
|
195
|
+
private renderFeedbackForm;
|
|
196
|
+
private renderExitIntentPopup;
|
|
197
|
+
private submitFeedback;
|
|
198
|
+
private trackEvent;
|
|
199
|
+
private sanitizeUrl;
|
|
200
|
+
private sanitizeColor;
|
|
201
|
+
private getDeviceType;
|
|
202
|
+
private isMobileDevice;
|
|
203
|
+
private addAnimationStyles;
|
|
204
|
+
private renderCartRecoveryPopup;
|
|
205
|
+
private renderLeadGenPopup;
|
|
206
|
+
private interpolateCartVariables;
|
|
207
|
+
private log;
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=AegisWidgetManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AegisWidgetManager.d.ts","sourceRoot":"","sources":["../../src/widgets/AegisWidgetManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/widgets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACV,YAAY,EACZ,iBAAiB,EAClB,MAAM,sBAAsB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@active-reach/web-sdk",
|
|
3
|
-
"version": "1.43.
|
|
3
|
+
"version": "1.43.3",
|
|
4
4
|
"description": "Web SDK for Active Reach Intelligence — event tracking, identity resolution, in-app messaging, web push, and placements",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
],
|
|
45
45
|
"license": "MIT",
|
|
46
46
|
"scripts": {
|
|
47
|
+
"prepublishOnly": "npm run build && test -f dist/aegis.min.js && test -f dist/index.js",
|
|
47
48
|
"build": "vite build && node scripts/build-cdn.js && npm run build:snippet && npm run build:types && npm run sync:web",
|
|
48
49
|
"sync:web": "if [ -d ../../apps/web/public ]; then mkdir -p ../../apps/web/public/sdk && cp dist/aegis.min.js dist/aegis.min.js.map dist/aegis-push.min.js dist/aegis-push.min.js.map ../../apps/web/public/sdk/; else echo 'sync:web: apps/web not in build context (e.g. turbo-pruned cashier-portal build) — skipped; committed bundle is source of truth'; fi",
|
|
49
50
|
"build:snippet": "node scripts/minify-snippet.js",
|