@active-reach/web-sdk 1.3.1 → 1.5.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 (51) hide show
  1. package/dist/aegis.min.js +1 -1
  2. package/dist/aegis.min.js.map +1 -1
  3. package/dist/{analytics-B0JfoAJs.mjs → analytics-C00PJUSy.mjs} +269 -2
  4. package/dist/analytics-C00PJUSy.mjs.map +1 -0
  5. package/dist/cdn.d.ts +7 -0
  6. package/dist/cdn.d.ts.map +1 -1
  7. package/dist/core/analytics.d.ts +20 -0
  8. package/dist/core/analytics.d.ts.map +1 -1
  9. package/dist/core/bootstrap.d.ts +71 -0
  10. package/dist/core/bootstrap.d.ts.map +1 -0
  11. package/dist/core/prefetch-bundle-client.d.ts +150 -0
  12. package/dist/core/prefetch-bundle-client.d.ts.map +1 -0
  13. package/dist/governance/bloom-filter.d.ts +47 -0
  14. package/dist/governance/bloom-filter.d.ts.map +1 -0
  15. package/dist/governance/index.d.ts +6 -0
  16. package/dist/governance/index.d.ts.map +1 -0
  17. package/dist/governance/murmur3.d.ts +43 -0
  18. package/dist/governance/murmur3.d.ts.map +1 -0
  19. package/dist/governance/name-governor.d.ts +98 -0
  20. package/dist/governance/name-governor.d.ts.map +1 -0
  21. package/dist/inapp/AegisInAppManager.d.ts +28 -1
  22. package/dist/inapp/AegisInAppManager.d.ts.map +1 -1
  23. package/dist/inapp/renderers/carousel-cards.d.ts +15 -0
  24. package/dist/inapp/renderers/carousel-cards.d.ts.map +1 -0
  25. package/dist/inapp/renderers/coachmark-tour.d.ts +24 -0
  26. package/dist/inapp/renderers/coachmark-tour.d.ts.map +1 -0
  27. package/dist/inapp/renderers/index.d.ts +12 -0
  28. package/dist/inapp/renderers/index.d.ts.map +1 -0
  29. package/dist/inapp/renderers/product-recommendation.d.ts +23 -0
  30. package/dist/inapp/renderers/product-recommendation.d.ts.map +1 -0
  31. package/dist/inapp/renderers/progress-bar.d.ts +24 -0
  32. package/dist/inapp/renderers/progress-bar.d.ts.map +1 -0
  33. package/dist/inapp/renderers/sticky-bar.d.ts +14 -0
  34. package/dist/inapp/renderers/sticky-bar.d.ts.map +1 -0
  35. package/dist/inapp/renderers/types.d.ts +27 -0
  36. package/dist/inapp/renderers/types.d.ts.map +1 -0
  37. package/dist/inbox/AegisInbox.d.ts +103 -0
  38. package/dist/inbox/AegisInbox.d.ts.map +1 -0
  39. package/dist/inbox/index.d.ts +3 -0
  40. package/dist/inbox/index.d.ts.map +1 -0
  41. package/dist/index.d.ts +8 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +1396 -10
  44. package/dist/index.js.map +1 -1
  45. package/dist/push/AegisWebPush.d.ts +17 -2
  46. package/dist/push/AegisWebPush.d.ts.map +1 -1
  47. package/dist/push/AegisWebPush.js +95 -29
  48. package/dist/push/AegisWebPush.js.map +1 -1
  49. package/dist/react.js +1 -1
  50. package/package.json +1 -1
  51. package/dist/analytics-B0JfoAJs.mjs.map +0 -1
@@ -0,0 +1,103 @@
1
+ /**
2
+ * AegisInbox — client-side App Inbox (Message Center).
3
+ *
4
+ * Backs the notification drawer on actii.me WebView and every tenant
5
+ * storefront that embeds the Web SDK. Operates against cell-plane's
6
+ * /v1/in-app/inbox family of endpoints (list, unread-count, read,
7
+ * dismiss, read-all).
8
+ *
9
+ * Design choices:
10
+ * • Hydrate from the prefetch bundle at init — no extra HTTP on first
11
+ * paint. PrefetchBundleClient seeds us; we then own the live copy.
12
+ * • Mutations are optimistic + beacon-backed. Read / dismiss writes to
13
+ * local state immediately, then POSTs with `keepalive: true` so an
14
+ * in-flight dismiss survives page unload.
15
+ * • Badge polling uses the tiny `/unread-count` endpoint on a 60-second
16
+ * cadence — matches the `inbox_poll_interval_ms` from sdk_config's
17
+ * TransportConfig.hybrid mode.
18
+ * • No external dependencies; IndexedDB is optional (we gracefully fall
19
+ * back to in-memory when unavailable, e.g., in private browsing).
20
+ */
21
+ import type { PrefetchBundleClient } from '../core/prefetch-bundle-client';
22
+ export interface AegisInboxEntry {
23
+ id: string;
24
+ source: string;
25
+ campaign_id: string | null;
26
+ title: string;
27
+ body: string;
28
+ media_url: string | null;
29
+ cta_url: string | null;
30
+ metadata: Record<string, unknown> | null;
31
+ read: boolean;
32
+ read_at: string | null;
33
+ dismissed_at?: string | null;
34
+ created_at: string | null;
35
+ expires_at: string | null;
36
+ }
37
+ export interface AegisInboxConfig {
38
+ apiHost: string;
39
+ writeKey: string;
40
+ organizationId?: string;
41
+ contactId?: string;
42
+ propertyId?: string;
43
+ bundleClient?: PrefetchBundleClient;
44
+ unreadPollIntervalMs?: number;
45
+ }
46
+ export type InboxListener = (state: {
47
+ entries: AegisInboxEntry[];
48
+ unreadCount: number;
49
+ }) => void;
50
+ export declare class AegisInbox {
51
+ private apiHost;
52
+ private writeKey;
53
+ private organizationId?;
54
+ private contactId?;
55
+ private propertyId?;
56
+ private bundleClient?;
57
+ private unreadPollIntervalMs;
58
+ private entries;
59
+ private unreadCount;
60
+ private cursor;
61
+ private listeners;
62
+ private pollTimer;
63
+ private bundleUnsub;
64
+ constructor(config: AegisInboxConfig);
65
+ /** Hydrate from bundle (if available), restore the IDB cache (if any),
66
+ * then start the background unread-count poll. */
67
+ initialize(): Promise<void>;
68
+ stop(): void;
69
+ /** Update identity after login / property switch. Clears the local
70
+ * inbox since it's intrinsically contact+property scoped. */
71
+ setIdentity(partial: {
72
+ contactId?: string;
73
+ propertyId?: string;
74
+ organizationId?: string;
75
+ }): void;
76
+ getEntries(): AegisInboxEntry[];
77
+ getUnreadCount(): number;
78
+ /** Pagination cursor (ISO-8601 timestamp of the oldest entry currently
79
+ * held). Pass it back via `loadMore()` to fetch older history. */
80
+ getCursor(): string | null;
81
+ /** Append one more page of older entries using the current cursor. */
82
+ loadMore(): Promise<void>;
83
+ onChange(l: InboxListener): () => void;
84
+ refreshList(): Promise<void>;
85
+ refreshUnreadCount(): Promise<void>;
86
+ markRead(messageId: string): Promise<void>;
87
+ dismiss(messageId: string): Promise<void>;
88
+ markAllRead(): Promise<void>;
89
+ private seedFromBundle;
90
+ private recomputeUnread;
91
+ private emit;
92
+ private headers;
93
+ /** Best-effort beacon-style POST. Uses `keepalive: true` so it survives
94
+ * a navigation away from the current page (e.g., user taps the CTA
95
+ * which takes them to another URL right after dismiss). */
96
+ private postBeacon;
97
+ private openDb;
98
+ private cacheKey;
99
+ private writeCache;
100
+ private readCache;
101
+ private clearCache;
102
+ }
103
+ //# sourceMappingURL=AegisInbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AegisInbox.d.ts","sourceRoot":"","sources":["../../src/inbox/AegisInbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { AegisInbox } from './AegisInbox';
2
+ export type { AegisInboxConfig, AegisInboxEntry, InboxListener } from './AegisInbox';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/inbox/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.d.ts CHANGED
@@ -18,10 +18,18 @@ export { TriggerEngine } from './triggers';
18
18
  export type { TriggerRule, ScrollDepthConfig, TimeOnPageConfig, ExitIntentConfig, InactivityConfig, TriggerEvent, } from './triggers';
19
19
  export { SdkConfigPoller } from './core/sdk-config-poller';
20
20
  export type { SdkConfig, SdkConfigPollerOptions, ConfigChangeCallback } from './core/sdk-config-poller';
21
+ export { PrefetchBundleClient } from './core/prefetch-bundle-client';
22
+ export type { PrefetchBundle, PrefetchBundleCampaign, PrefetchBundleInbox, PrefetchBundleInboxEntry, PrefetchBundleClientOptions, PrefetchBundleContext, PrefetchBundleListener, } from './core/prefetch-bundle-client';
23
+ export { AegisInbox } from './inbox';
24
+ export type { AegisInboxConfig, AegisInboxEntry, InboxListener } from './inbox';
21
25
  export { AegisWebPush } from './push/AegisWebPush';
22
26
  export type { AegisWebPushConfig, AegisAPIClient, ContactIdentity, PushEventTracker, } from './push/AegisWebPush';
27
+ export { bootstrap, readFirstPartyCookie, writeFirstPartyCookie, deriveDeviceFingerprint, BootstrapError, } from './core/bootstrap';
28
+ export type { BootstrapRequest, BootstrapResult } from './core/bootstrap';
23
29
  export { RateLimiter } from './core/rate-limiter';
24
30
  export type { RateLimiterOptions } from './core/rate-limiter';
31
+ export { NameGovernor, BloomFilter, murmurhash3_x86_32 } from './governance';
32
+ export type { EventGovernanceHint, DropReport, BloomFilterParams } from './governance';
25
33
  export { EcommerceTracker } from './ecommerce';
26
34
  export type { EcommerceProduct, EcommerceCart, EcommerceCheckout, EcommerceOrder, EcommerceCoupon, EcommerceSearch, EcommerceProductList, EcommerceWishlist, EcommercePromotion, } from './ecommerce';
27
35
  //# 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;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAQ9D,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"}
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;AAIxG,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,YAAY,EACV,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEhF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE1E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAK9D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC7E,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAQvF,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"}