@joryio/web-sdk 0.0.0-stage → 1.3.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 (76) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/LICENSE +54 -0
  3. package/README.md +497 -2
  4. package/dist/core/config.d.ts +101 -0
  5. package/dist/core/config.d.ts.map +1 -0
  6. package/dist/core/device.d.ts +14 -0
  7. package/dist/core/device.d.ts.map +1 -0
  8. package/dist/core/ecommerce.d.ts +67 -0
  9. package/dist/core/ecommerce.d.ts.map +1 -0
  10. package/dist/core/identity.d.ts +36 -0
  11. package/dist/core/identity.d.ts.map +1 -0
  12. package/dist/core/inapp.d.ts +169 -0
  13. package/dist/core/inapp.d.ts.map +1 -0
  14. package/dist/core/network.d.ts +158 -0
  15. package/dist/core/network.d.ts.map +1 -0
  16. package/dist/core/outbox.d.ts +79 -0
  17. package/dist/core/outbox.d.ts.map +1 -0
  18. package/dist/core/pending-attributes.d.ts +43 -0
  19. package/dist/core/pending-attributes.d.ts.map +1 -0
  20. package/dist/core/push.d.ts +59 -0
  21. package/dist/core/push.d.ts.map +1 -0
  22. package/dist/core/queue.d.ts +107 -0
  23. package/dist/core/queue.d.ts.map +1 -0
  24. package/dist/core/sdk.d.ts +169 -0
  25. package/dist/core/sdk.d.ts.map +1 -0
  26. package/dist/core/session.d.ts +36 -0
  27. package/dist/core/session.d.ts.map +1 -0
  28. package/dist/core/storage.d.ts +17 -0
  29. package/dist/core/storage.d.ts.map +1 -0
  30. package/dist/core/user.d.ts +28 -0
  31. package/dist/core/user.d.ts.map +1 -0
  32. package/dist/core/utm.d.ts +39 -0
  33. package/dist/core/utm.d.ts.map +1 -0
  34. package/dist/core/values.d.ts +3 -0
  35. package/dist/core/values.d.ts.map +1 -0
  36. package/dist/core/write-retry.d.ts +66 -0
  37. package/dist/core/write-retry.d.ts.map +1 -0
  38. package/dist/index.d.mts +711 -0
  39. package/dist/index.d.ts +21 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/joryio-sw.js +6 -0
  42. package/dist/joryio.cjs.js +7265 -0
  43. package/dist/joryio.min.js +7 -0
  44. package/dist/joryio.min.js.map +1 -0
  45. package/dist/joryio.mjs +7254 -0
  46. package/dist/joryio.umd.js +7271 -0
  47. package/dist/utils/bucket-hash.d.ts +2 -0
  48. package/dist/utils/bucket-hash.d.ts.map +1 -0
  49. package/dist/utils/logger.d.ts +14 -0
  50. package/dist/utils/logger.d.ts.map +1 -0
  51. package/dist/utils/uuid.d.ts +3 -0
  52. package/dist/utils/uuid.d.ts.map +1 -0
  53. package/package.json +90 -4
  54. package/src/core/config.ts +362 -0
  55. package/src/core/device.ts +50 -0
  56. package/src/core/ecommerce.ts +482 -0
  57. package/src/core/identity.ts +251 -0
  58. package/src/core/inapp.ts +2419 -0
  59. package/src/core/network.ts +1261 -0
  60. package/src/core/outbox.ts +707 -0
  61. package/src/core/pending-attributes.ts +350 -0
  62. package/src/core/push.ts +667 -0
  63. package/src/core/queue.ts +894 -0
  64. package/src/core/sdk.ts +3108 -0
  65. package/src/core/session.ts +311 -0
  66. package/src/core/storage.ts +157 -0
  67. package/src/core/user.ts +203 -0
  68. package/src/core/utm.ts +304 -0
  69. package/src/core/values.ts +85 -0
  70. package/src/core/write-retry.ts +136 -0
  71. package/src/index.ts +305 -0
  72. package/src/snippet/loader.js +134 -0
  73. package/src/utils/bucket-hash.ts +44 -0
  74. package/src/utils/logger.ts +58 -0
  75. package/src/utils/uuid.ts +29 -0
  76. package/src/worker/joryio-sw.js +218 -0
@@ -0,0 +1,101 @@
1
+ export declare const SDK_VERSION = "1.3.0";
2
+ export declare const DEFAULT_API_ENDPOINT = "https://api-eu1.joryio.com/api";
3
+ export declare function normalizeApiEndpoint(raw: string | undefined | null): string;
4
+ export declare const DEFAULT_BATCH_SIZE = 50;
5
+ export declare const DEFAULT_FLUSH_INTERVAL = 5000;
6
+ export declare const MIN_FLUSH_INTERVAL = 1000;
7
+ export declare const DEFAULT_MAX_QUEUE_SIZE = 1000;
8
+ export declare const DEFAULT_MAX_RETRIES = 3;
9
+ export declare const DEFAULT_RETRY_BACKOFF_MS = 1000;
10
+ export declare const DEFAULT_REQUEST_TIMEOUT = 10000;
11
+ export declare const MIN_INAPP_SYNC_INTERVAL = 30000;
12
+ export declare const DEFAULT_SESSION_TIMEOUT: number;
13
+ export interface InAppDisplayOptions {
14
+ defaultPosition?: 'top' | 'center' | 'bottom';
15
+ defaultAnimation?: 'fade' | 'slide' | 'none';
16
+ backdropColor?: string;
17
+ closeButtonColor?: string;
18
+ zIndex?: number;
19
+ }
20
+ export interface InAppOptions {
21
+ enabled?: boolean;
22
+ evaluationMode?: 'differential-sync' | 'session-start-only';
23
+ syncInterval?: number;
24
+ displayOptions?: InAppDisplayOptions;
25
+ allowHtmlJsInAppMessages?: boolean;
26
+ onMessageDisplay?: (message: any) => void;
27
+ onMessageClick?: (message: any, action: string) => void;
28
+ onMessageDismiss?: (message: any, action: string) => void;
29
+ }
30
+ export interface InitConfig {
31
+ sdkKey: string;
32
+ apiEndpoint?: string;
33
+ userId?: string;
34
+ anonymousId?: string;
35
+ batchSize?: number;
36
+ batchFlushInterval?: number;
37
+ sendImmediately?: boolean;
38
+ maxQueueSize?: number;
39
+ sessionTimeout?: number;
40
+ trackSessionStart?: boolean;
41
+ trackPageViews?: boolean;
42
+ captureUTM?: boolean;
43
+ resetSessionOnNewCampaign?: boolean;
44
+ trackPageProperties?: boolean;
45
+ trackDeviceProperties?: boolean;
46
+ inApp?: InAppOptions;
47
+ persistQueue?: boolean;
48
+ maxRetries?: number;
49
+ retryBackoffMs?: number;
50
+ requestTimeout?: number;
51
+ respectDoNotTrack?: boolean;
52
+ optOut?: boolean;
53
+ trackingConsent?: 'granted' | 'denied' | 'pending';
54
+ enableSdkAuthentication?: boolean;
55
+ sdkAuthenticationToken?: string;
56
+ enableDebug?: boolean;
57
+ logLevel?: 'error' | 'warn' | 'info' | 'debug';
58
+ plugins?: Array<Plugin>;
59
+ }
60
+ export interface ResolvedConfig extends Required<Omit<InitConfig, 'userId' | 'plugins' | 'inApp' | 'sdkAuthenticationToken' | 'trackingConsent'>> {
61
+ userId?: string;
62
+ trackingConsent?: 'granted' | 'denied' | 'pending';
63
+ plugins: Array<Plugin>;
64
+ inApp: Required<InAppOptions>;
65
+ sdkAuthenticationToken?: string;
66
+ loggingEnabled: boolean;
67
+ }
68
+ export interface Plugin {
69
+ name: string;
70
+ version: string;
71
+ load(sdk: any): void | Promise<void>;
72
+ unload(): void | Promise<void>;
73
+ beforeTrack?(event: any): any | null;
74
+ afterTrack?(event: any): void;
75
+ }
76
+ export interface TrackOptions {
77
+ timestamp?: Date | number;
78
+ sessionId?: string;
79
+ sendImmediately?: boolean;
80
+ }
81
+ export interface PageProperties {
82
+ path?: string;
83
+ title?: string;
84
+ url?: string;
85
+ referrer?: string;
86
+ search?: string;
87
+ [key: string]: any;
88
+ }
89
+ export interface EventProperties {
90
+ [key: string]: string | number | boolean | Date | null | undefined;
91
+ }
92
+ export interface UserTraits {
93
+ email?: string;
94
+ firstName?: string;
95
+ lastName?: string;
96
+ name?: string;
97
+ phone?: string;
98
+ [key: string]: any;
99
+ }
100
+ export declare function resolveConfig(config: InitConfig): ResolvedConfig;
101
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface DeviceProperties {
2
+ $user_agent?: string;
3
+ $timezone?: string;
4
+ $screen_width?: number;
5
+ $screen_height?: number;
6
+ $viewport_width?: number;
7
+ $viewport_height?: number;
8
+ $language?: string;
9
+ $languages?: string[];
10
+ $platform?: string;
11
+ $browser?: string;
12
+ }
13
+ export declare const getDeviceProperties: () => DeviceProperties;
14
+ //# sourceMappingURL=device.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/core/device.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAYD,eAAO,MAAM,mBAAmB,QAAO,gBAsBtC,CAAC"}
@@ -0,0 +1,67 @@
1
+ import type { JoryioSDK } from './sdk';
2
+ import { Logger } from '../utils/logger';
3
+ export interface EcommerceProduct {
4
+ productId: string;
5
+ name: string;
6
+ price: number;
7
+ quantity?: number;
8
+ category?: string;
9
+ brand?: string;
10
+ variant?: string;
11
+ variantId?: string;
12
+ sku?: string;
13
+ imageUrl?: string;
14
+ url?: string;
15
+ }
16
+ export interface EcommerceCartItem extends EcommerceProduct {
17
+ quantity: number;
18
+ }
19
+ export interface EcommerceOrder {
20
+ orderId: string;
21
+ items: EcommerceCartItem[];
22
+ value: number;
23
+ currency?: string;
24
+ shipping?: number;
25
+ tax?: number;
26
+ discount?: number;
27
+ coupon?: string;
28
+ }
29
+ export interface EcommerceConfig {
30
+ currency?: string;
31
+ }
32
+ export declare class EcommerceTracker {
33
+ private sdk;
34
+ private config;
35
+ private logger;
36
+ constructor(sdk: JoryioSDK, config?: EcommerceConfig | null, logger?: Logger);
37
+ private guard;
38
+ private productProblem;
39
+ private itemsProblem;
40
+ private cartProblem;
41
+ private textProblem;
42
+ private amountsProblem;
43
+ private validItems;
44
+ private itemCount;
45
+ viewProduct(product: EcommerceProduct): void;
46
+ viewCategory(categoryId: string, categoryName: string, properties?: Record<string, any>): void;
47
+ search(query: string, resultCount?: number, properties?: Record<string, any>): void;
48
+ addToCart(item: EcommerceCartItem, cartValue?: number): void;
49
+ removeFromCart(item: EcommerceProduct, quantity?: number): void;
50
+ cartViewed(items: EcommerceCartItem[], cartValue: number): void;
51
+ updateCart(items: EcommerceCartItem[], cartValue: number): void;
52
+ startCheckout(items: EcommerceCartItem[], cartValue: number, properties?: Record<string, any>): void;
53
+ addPaymentInfo(paymentMethod: string, properties?: Record<string, any>): void;
54
+ purchase(order: EcommerceOrder): void;
55
+ orderFulfilled(orderId: string, trackingNumber?: string, carrier?: string): void;
56
+ orderDelivered(orderId: string): void;
57
+ orderCancelled(orderId: string, reason?: string): void;
58
+ orderRefunded(orderId: string, refundAmount?: number, reason?: string): void;
59
+ addToWishlist(product: EcommerceProduct): void;
60
+ removeFromWishlist(product: EcommerceProduct): void;
61
+ shareProduct(product: EcommerceProduct, shareMethod: string): void;
62
+ applyCoupon(couponCode: string, discountAmount?: number, discountType?: 'fixed' | 'percentage'): void;
63
+ removeCoupon(couponCode: string): void;
64
+ submitReview(productId: string, rating: number, reviewText?: string): void;
65
+ }
66
+ export declare function createEcommerceTracker(sdk: JoryioSDK, config?: EcommerceConfig | null, logger?: Logger): EcommerceTracker;
67
+ //# sourceMappingURL=ecommerce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecommerce.d.ts","sourceRoot":"","sources":["../../src/core/ecommerce.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { StorageManager } from './storage';
2
+ import { Logger } from '../utils/logger';
3
+ import { PendingAttributes } from './pending-attributes';
4
+ export interface UserAttributes {
5
+ [key: string]: any;
6
+ }
7
+ export interface UserIdentity {
8
+ userId: string | null;
9
+ anonymousId: string;
10
+ attributes: UserAttributes;
11
+ }
12
+ export declare class IdentityManager {
13
+ readonly pending: PendingAttributes;
14
+ private storage;
15
+ private logger;
16
+ private userId;
17
+ private anonymousId;
18
+ private attributes;
19
+ constructor(storage: StorageManager, logger: Logger, userId?: string, anonymousId?: string);
20
+ identify(userId: string, attributes?: UserAttributes): void;
21
+ reset(): void;
22
+ adopt(anonymousId: string, userId: string | null): void;
23
+ setAttributes(attributes: UserAttributes): void;
24
+ setAttribute(key: string, value: any): void;
25
+ incrementAttribute(key: string, value?: number): void;
26
+ unsetAttribute(key: string): void;
27
+ addToArray(key: string, value: any): void;
28
+ removeFromArray(key: string, value: any): void;
29
+ getIdentity(): UserIdentity;
30
+ getUserId(): string | null;
31
+ getAnonymousId(): string;
32
+ getAttributes(): UserAttributes;
33
+ getAttribute(key: string): any;
34
+ isIdentified(): boolean;
35
+ }
36
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/core/identity.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAMzD,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED,qBAAa,eAAe;IAS1B,QAAQ,CAAC,OAAO,oBAA2B;IAE3C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAsB;gBAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAgC1F,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,cAAc,GAAG,IAAI;IAiB3D,KAAK,IAAI,IAAI;IAkBb,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IASvD,aAAa,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI;IAkB/C,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAS3C,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,IAAI;IAUxD,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAUjC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAyBzC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAoB9C,WAAW,IAAI,YAAY;IAW3B,SAAS,IAAI,MAAM,GAAG,IAAI;IAO1B,cAAc,IAAI,MAAM;IAOxB,aAAa,IAAI,cAAc;IAO/B,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IAO9B,YAAY,IAAI,OAAO;CAGxB"}
@@ -0,0 +1,169 @@
1
+ import { Logger } from '../utils/logger';
2
+ import type { InAppDisplayOptions } from './config';
3
+ import { IdentityManager } from './identity';
4
+ import { SessionManager } from './session';
5
+ import { StorageManager } from './storage';
6
+ import { SdkAuthFailureInfo } from './network';
7
+ export interface InAppAuthProvider {
8
+ getSdkAuthHeaders(subjectUserId?: string | null): Record<string, string>;
9
+ isSdkAuthError(status: number, data: any): boolean;
10
+ refreshSdkAuthToken(info: SdkAuthFailureInfo): Promise<string | undefined>;
11
+ getCurrentUserId?(): string | null;
12
+ }
13
+ export interface InAppRuntimeOptions {
14
+ canSend?: () => boolean;
15
+ requestTimeoutMs?: number;
16
+ syncIntervalMs?: number;
17
+ evaluationMode?: 'differential-sync' | 'session-start-only';
18
+ noteStatus?: (status: number, data: any) => void;
19
+ }
20
+ export interface InAppCampaign {
21
+ id: string;
22
+ name: string;
23
+ type: 'modal' | 'banner' | 'slideup' | 'fullscreen' | 'custom';
24
+ priority: number;
25
+ evaluationMode: 'differential-sync' | 'session-start-only';
26
+ frequencyCap?: {
27
+ maxImpressions?: number | null;
28
+ timeWindow: string;
29
+ minDelayBetweenImpressions?: number;
30
+ };
31
+ variantId?: string;
32
+ variantName?: string;
33
+ pendingId?: string;
34
+ deliveryToken?: string;
35
+ source?: string;
36
+ content?: {
37
+ kind: 'html';
38
+ html: string;
39
+ css: string;
40
+ assets?: unknown[];
41
+ } | {
42
+ kind: 'native';
43
+ title?: string;
44
+ body: string;
45
+ imageUrl?: string;
46
+ buttons?: Array<{
47
+ id: string;
48
+ text: string;
49
+ action: string;
50
+ url?: string;
51
+ }>;
52
+ closeButton?: boolean;
53
+ backdropDismissible?: boolean;
54
+ };
55
+ targeting?: {
56
+ filterGroups: any[];
57
+ };
58
+ triggers: InAppTrigger[];
59
+ reevaluateBeforeDisplay?: boolean;
60
+ watchedAttributes?: string[];
61
+ }
62
+ export interface InAppTrigger {
63
+ type: 'immediate' | 'event' | 'attribute_change' | 'attribute_threshold' | 'push_notification_tap';
64
+ event?: string;
65
+ attribute?: string;
66
+ operator?: string;
67
+ value?: any;
68
+ delay?: number;
69
+ }
70
+ export interface InAppMessage {
71
+ campaign: InAppCampaign;
72
+ renderedHtml: string;
73
+ displayedAt?: Date;
74
+ }
75
+ export interface InAppSyncResponse {
76
+ success: boolean;
77
+ campaigns: InAppCampaign[];
78
+ evaluatedAt: string;
79
+ nextEvaluationStrategy?: string;
80
+ }
81
+ export interface DisplayOptions extends InAppDisplayOptions {
82
+ container?: HTMLElement;
83
+ closeButton?: boolean;
84
+ backdropClose?: boolean;
85
+ animationDuration?: number;
86
+ onDisplay?: (message: InAppMessage) => void;
87
+ onClick?: (message: InAppMessage, action: string) => void;
88
+ onDismiss?: (message: InAppMessage, action: string) => void;
89
+ onConversion?: (message: InAppMessage, event: string) => void;
90
+ }
91
+ export interface InAppBridge {
92
+ logCustomEvent: (name: string, properties?: Record<string, any>) => void;
93
+ setCustomUserAttribute: (key: string, value: any) => void;
94
+ changeUser: (userId: string) => void;
95
+ requestPushPermission: () => void;
96
+ preparePushPermission?: () => void;
97
+ }
98
+ export declare function escapeStyleText(css: string): string;
99
+ export declare function scopeCssRules(rules: ArrayLike<unknown>, scope: string): string;
100
+ export declare function normalizedElementId(raw: unknown): string | undefined;
101
+ export declare function cssValue(raw: unknown): string | null;
102
+ export declare class InAppMessagingManager {
103
+ private pendingDelays;
104
+ private logger;
105
+ private identity;
106
+ private session;
107
+ private storage;
108
+ private apiEndpoint;
109
+ private sdkKey;
110
+ private campaigns;
111
+ private displayedMessages;
112
+ private impressionTimestamps;
113
+ private watchedAttributes;
114
+ private syncInterval?;
115
+ private periodicSyncTimer?;
116
+ private syncRetryTimer?;
117
+ private runtime;
118
+ private displayOptions;
119
+ private isSyncing;
120
+ private syncRetried;
121
+ private generation;
122
+ private syncAgain;
123
+ private syncAgainChanges;
124
+ private claimed;
125
+ private iframes;
126
+ private allowHtmlJsInAppMessages;
127
+ private capabilities;
128
+ private callHost;
129
+ invalidate(): void;
130
+ setAllowHtmlJsInAppMessages(value: boolean): void;
131
+ private bridge;
132
+ private auth;
133
+ constructor(apiEndpoint: string, sdkKey: string, identity: IdentityManager, session: SessionManager, logger: Logger, storage?: StorageManager | null, options?: DisplayOptions, bridge?: InAppBridge, auth?: InAppAuthProvider | null, runtime?: InAppRuntimeOptions);
134
+ private loadImpressionTimestamps;
135
+ private persistImpressionTimestamps;
136
+ private installHostBridge;
137
+ initialize(): Promise<void>;
138
+ stop(): void;
139
+ private startPeriodicSync;
140
+ private subject;
141
+ private maybeHandleSdkAuthError;
142
+ sync(attributeChanges?: Record<string, any>): Promise<InAppSyncResponse>;
143
+ private processImmediateTriggers;
144
+ onEventTracked(eventName: string, properties?: Record<string, any>): void;
145
+ private triggerFilterMatches;
146
+ private resolveForDisplay;
147
+ private canPromptForPush;
148
+ displayCampaign(campaign: InAppCampaign): Promise<void>;
149
+ private renderTemplate;
150
+ private undisplayableReason;
151
+ private display;
152
+ private buildSrcdoc;
153
+ private scopeCss;
154
+ dismiss(campaignId: string, action?: string): Promise<void>;
155
+ trackConversion(campaignId: string, event: string): Promise<void>;
156
+ private submitForm;
157
+ private trackImpression;
158
+ private checkFrequencyCap;
159
+ private startAttributeWatching;
160
+ private checkAttributeThresholds;
161
+ getCampaigns(): InAppCampaign[];
162
+ getCampaign(campaignId: string): InAppCampaign | undefined;
163
+ clearAll(): void;
164
+ forgetImpressions(): void;
165
+ private boundedMapSet;
166
+ private boundedSetAdd;
167
+ destroy(): void;
168
+ }
169
+ //# sourceMappingURL=inapp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inapp.d.ts","sourceRoot":"","sources":["../../src/core/inapp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ import type { SubscriptionChannel } from './user';
2
+ import { Logger } from '../utils/logger';
3
+ export interface NetworkRequest {
4
+ url: string;
5
+ method?: 'GET' | 'POST' | 'PUT' | 'DELETE';
6
+ headers?: Record<string, string>;
7
+ body?: any;
8
+ subjectUserId?: string | null;
9
+ }
10
+ export interface NetworkResponse {
11
+ ok: boolean;
12
+ status: number;
13
+ data?: any;
14
+ error?: string;
15
+ retryAfterMs?: number;
16
+ softFailure?: boolean;
17
+ }
18
+ export declare function isSoftFailure(data: any): boolean;
19
+ export declare const SDK_INGESTION_SUSPENDED_CODE = "SDK_INGESTION_SUSPENDED";
20
+ export declare const KEEPALIVE_MAX_BYTES: number;
21
+ export declare function utf8Length(str: string): number;
22
+ export declare function parseRetryAfter(value: string | null | undefined, now?: number): number | undefined;
23
+ export interface AttributeOps {
24
+ attributes?: Record<string, any>;
25
+ increment?: Record<string, number>;
26
+ append?: Record<string, any>;
27
+ remove?: Record<string, any>;
28
+ unset?: string[];
29
+ }
30
+ export interface RetryConfig {
31
+ maxRetries: number;
32
+ backoffMs: number;
33
+ maxBackoffMs?: number;
34
+ timeoutMs?: number;
35
+ }
36
+ export declare const SDK_AUTH_HEADER = "X-Joryio-Auth";
37
+ export declare const RETIRED_SDK_AUTH_TOKEN_GRACE_MS = 60000;
38
+ export declare const RETIRED_SDK_AUTH_TOKEN_MAX_AGE_MS: number;
39
+ export interface RetiredSdkAuthToken {
40
+ token: string;
41
+ at: number;
42
+ standby?: boolean;
43
+ }
44
+ export interface RetiredTokenStore {
45
+ load(): Record<string, unknown> | null;
46
+ update(mutate: (stored: Record<string, unknown>) => Record<string, unknown>): void;
47
+ }
48
+ export declare function parseRetiredToken(raw: unknown, now?: number): RetiredSdkAuthToken | null;
49
+ export declare function jwtSubject(token: string | undefined): string | null;
50
+ export declare function newerToken(a: string, b: string): string | null;
51
+ export declare function isWithdrawalRequest(url: string, body: any): boolean;
52
+ export type SdkAuthFailureReason = 'missing' | 'invalid' | 'expired' | 'sub_mismatch';
53
+ export interface SdkAuthFailureInfo {
54
+ reason: SdkAuthFailureReason;
55
+ endpoint: string;
56
+ userId?: string | null;
57
+ }
58
+ export type SdkAuthFailureCallback = (info: SdkAuthFailureInfo) => void | string | Promise<void | string>;
59
+ export interface CircuitBreakerConfig {
60
+ failureThreshold: number;
61
+ cooldownMs: number;
62
+ }
63
+ type CircuitState = 'closed' | 'open' | 'half-open';
64
+ export declare class NetworkClient {
65
+ private logger;
66
+ private sdkKey;
67
+ private retryConfig;
68
+ private circuitBreakerConfig;
69
+ private circuitState;
70
+ private consecutiveFailures;
71
+ private circuitOpenedAt;
72
+ private sdkAuthEnabled;
73
+ private sdkAuthToken;
74
+ private sdkAuthFailureCallback;
75
+ private retiredSdkAuthTokens;
76
+ private retiredTokenStore;
77
+ private sdkAuthTokenUser;
78
+ private keepaliveBytesInFlight;
79
+ private currentUserId;
80
+ private suspended;
81
+ constructor(sdkKey: string, logger: Logger, retryConfig: RetryConfig, circuitBreakerConfig?: Partial<CircuitBreakerConfig>);
82
+ setSdkAuthenticationEnabled(enabled: boolean): void;
83
+ setSdkAuthenticationToken(token: string | undefined): void;
84
+ retireSdkAuthToken(): void;
85
+ private retireToken;
86
+ switchUser(userId: string | null): void;
87
+ private adoptStandbyToken;
88
+ dropStandbySdkAuthTokens(keep?: Set<string>): void;
89
+ setRetiredTokenStore(store: RetiredTokenStore | null): void;
90
+ retiredSdkAuthUsers(): string[];
91
+ forgetRetiredSdkAuthTokensExcept(stillQueued: Set<string>, now?: number): number | null;
92
+ private saveRetiredTokens;
93
+ private sdkAuthTokenFor;
94
+ getCurrentUserId(): string | null;
95
+ setSdkAuthenticationFailureCallback(cb: SdkAuthFailureCallback | null): void;
96
+ setCurrentUserId(userId: string | null): void;
97
+ isSuspended(): boolean;
98
+ noteSuspended(status: number, data: any): boolean;
99
+ getSdkAuthHeaders(subjectUserId?: string | null): Record<string, string>;
100
+ keepaliveBudget(): number;
101
+ isSdkAuthError(status: number, data: any): boolean;
102
+ refreshSdkAuthToken(info: SdkAuthFailureInfo): Promise<string | undefined>;
103
+ request(request: NetworkRequest): Promise<NetworkResponse>;
104
+ private onRequestSuccess;
105
+ private onRequestFailure;
106
+ getCircuitBreakerState(): {
107
+ state: CircuitState;
108
+ consecutiveFailures: number;
109
+ openedAt: number;
110
+ };
111
+ private performFetch;
112
+ private parseResponse;
113
+ private shouldRetry;
114
+ private calculateBackoff;
115
+ private sleep;
116
+ sendEvents(apiEndpoint: string, events: any[], identify?: {
117
+ userId: string;
118
+ anonymousId: string;
119
+ attributes?: Record<string, any>;
120
+ }): Promise<NetworkResponse>;
121
+ supportsKeepalive(): boolean;
122
+ sendEventsKeepalive(apiEndpoint: string, events: any[], identify?: {
123
+ userId: string;
124
+ anonymousId: string;
125
+ attributes?: Record<string, any>;
126
+ }): Promise<NetworkResponse> | null;
127
+ postKeepalive(url: string, body: any): Promise<NetworkResponse> | null;
128
+ sendIdentify(apiEndpoint: string, userId: string, attributes: any, anonymousId?: string): Promise<NetworkResponse>;
129
+ sendAddAlias(apiEndpoint: string, payload: {
130
+ anonymousId: string;
131
+ userId?: string;
132
+ aliasLabel: string;
133
+ aliasName: string;
134
+ }): Promise<NetworkResponse>;
135
+ sendDeviceSession(apiEndpoint: string, payload: {
136
+ userId?: string;
137
+ anonymousId?: string;
138
+ deviceId: string;
139
+ platform: 'ios' | 'android' | 'web';
140
+ deviceInfo?: Record<string, any>;
141
+ }): Promise<NetworkResponse>;
142
+ sendSetAttributes(apiEndpoint: string, ops: AttributeOps, userId?: string | null, anonymousId?: string): Promise<NetworkResponse>;
143
+ sendSubscriptionUpdate(apiEndpoint: string, payload: {
144
+ channel: SubscriptionChannel;
145
+ status: 'optedIn' | 'subscribed' | 'unsubscribed';
146
+ userId?: string;
147
+ anonymousId?: string;
148
+ }): Promise<NetworkResponse>;
149
+ sendSubscriptionGroupUpdate(apiEndpoint: string, payload: {
150
+ groupId: string;
151
+ channel: SubscriptionChannel;
152
+ action: 'subscribe' | 'unsubscribe';
153
+ userId?: string;
154
+ anonymousId?: string;
155
+ }): Promise<NetworkResponse>;
156
+ }
157
+ export {};
158
+ //# sourceMappingURL=network.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/core/network.ts"],"names":[],"mappings":"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"}