@absmartly/sdk-plugins 1.0.1

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 (177) hide show
  1. package/README.md +1101 -0
  2. package/dist/absmartly-cookie.min.js +1 -0
  3. package/dist/absmartly-dom-changes-core.min.js +1 -0
  4. package/dist/absmartly-dom-changes-lite.min.js +1 -0
  5. package/dist/absmartly-overrides-full.min.js +1 -0
  6. package/dist/absmartly-overrides-lite.min.js +1 -0
  7. package/dist/absmartly-sdk-plugins.min.js +1 -0
  8. package/dist/absmartly-vitals.min.js +1 -0
  9. package/es/cookies/CookiePlugin.js +410 -0
  10. package/es/cookies/CookiePlugin.js.map +1 -0
  11. package/es/cookies/index.js +2 -0
  12. package/es/cookies/index.js.map +1 -0
  13. package/es/core/DOMChangesPluginLite.js +1124 -0
  14. package/es/core/DOMChangesPluginLite.js.map +1 -0
  15. package/es/core/DOMManipulatorLite.js +410 -0
  16. package/es/core/DOMManipulatorLite.js.map +1 -0
  17. package/es/core/ExposureTracker.js +501 -0
  18. package/es/core/ExposureTracker.js.map +1 -0
  19. package/es/core/HTMLInjector.js +333 -0
  20. package/es/core/HTMLInjector.js.map +1 -0
  21. package/es/core/PendingChangeManager.js +440 -0
  22. package/es/core/PendingChangeManager.js.map +1 -0
  23. package/es/core/StyleSheetManager.js +78 -0
  24. package/es/core/StyleSheetManager.js.map +1 -0
  25. package/es/entries/cookie-only.js +10 -0
  26. package/es/entries/cookie-only.js.map +1 -0
  27. package/es/entries/dom-only.js +13 -0
  28. package/es/entries/dom-only.js.map +1 -0
  29. package/es/entries/dom-with-overrides-full.js +19 -0
  30. package/es/entries/dom-with-overrides-full.js.map +1 -0
  31. package/es/entries/dom-with-overrides-lite.js +15 -0
  32. package/es/entries/dom-with-overrides-lite.js.map +1 -0
  33. package/es/entries/overrides-full-only.js +15 -0
  34. package/es/entries/overrides-full-only.js.map +1 -0
  35. package/es/entries/overrides-lite-only.js +12 -0
  36. package/es/entries/overrides-lite-only.js.map +1 -0
  37. package/es/entries/vitals-only.js +10 -0
  38. package/es/entries/vitals-only.js.map +1 -0
  39. package/es/index.js +17 -0
  40. package/es/index.js.map +1 -0
  41. package/es/overrides/BrowserCookieAdapter.js +76 -0
  42. package/es/overrides/BrowserCookieAdapter.js.map +1 -0
  43. package/es/overrides/OverridesPlugin.js +903 -0
  44. package/es/overrides/OverridesPlugin.js.map +1 -0
  45. package/es/overrides/OverridesPluginFull.js +32 -0
  46. package/es/overrides/OverridesPluginFull.js.map +1 -0
  47. package/es/overrides/OverridesPluginLite.js +352 -0
  48. package/es/overrides/OverridesPluginLite.js.map +1 -0
  49. package/es/overrides/index.js +4 -0
  50. package/es/overrides/index.js.map +1 -0
  51. package/es/overrides/types.js +2 -0
  52. package/es/overrides/types.js.map +1 -0
  53. package/es/parsers/VariantExtractor.js +570 -0
  54. package/es/parsers/VariantExtractor.js.map +1 -0
  55. package/es/types/index.js +2 -0
  56. package/es/types/index.js.map +1 -0
  57. package/es/utils/URLMatcher.js +114 -0
  58. package/es/utils/URLMatcher.js.map +1 -0
  59. package/es/utils/debug.js +184 -0
  60. package/es/utils/debug.js.map +1 -0
  61. package/es/vitals/WebVitalsPlugin.js +379 -0
  62. package/es/vitals/WebVitalsPlugin.js.map +1 -0
  63. package/es/vitals/index.js +2 -0
  64. package/es/vitals/index.js.map +1 -0
  65. package/lib/cookies/CookiePlugin.d.ts +55 -0
  66. package/lib/cookies/CookiePlugin.js +413 -0
  67. package/lib/cookies/CookiePlugin.js.map +1 -0
  68. package/lib/cookies/index.d.ts +2 -0
  69. package/lib/cookies/index.js +6 -0
  70. package/lib/cookies/index.js.map +1 -0
  71. package/lib/core/DOMChangesPluginLite.d.ts +89 -0
  72. package/lib/core/DOMChangesPluginLite.js +1127 -0
  73. package/lib/core/DOMChangesPluginLite.js.map +1 -0
  74. package/lib/core/DOMManipulatorLite.d.ts +21 -0
  75. package/lib/core/DOMManipulatorLite.js +413 -0
  76. package/lib/core/DOMManipulatorLite.js.map +1 -0
  77. package/lib/core/ExposureTracker.d.ts +81 -0
  78. package/lib/core/ExposureTracker.js +504 -0
  79. package/lib/core/ExposureTracker.js.map +1 -0
  80. package/lib/core/HTMLInjector.d.ts +19 -0
  81. package/lib/core/HTMLInjector.js +336 -0
  82. package/lib/core/HTMLInjector.js.map +1 -0
  83. package/lib/core/PendingChangeManager.d.ts +31 -0
  84. package/lib/core/PendingChangeManager.js +443 -0
  85. package/lib/core/PendingChangeManager.js.map +1 -0
  86. package/lib/core/StyleSheetManager.d.ts +16 -0
  87. package/lib/core/StyleSheetManager.js +81 -0
  88. package/lib/core/StyleSheetManager.js.map +1 -0
  89. package/lib/entries/cookie-only.d.ts +8 -0
  90. package/lib/entries/cookie-only.js +12 -0
  91. package/lib/entries/cookie-only.js.map +1 -0
  92. package/lib/entries/dom-only.d.ts +9 -0
  93. package/lib/entries/dom-only.js +29 -0
  94. package/lib/entries/dom-only.js.map +1 -0
  95. package/lib/entries/dom-with-overrides-full.d.ts +15 -0
  96. package/lib/entries/dom-with-overrides-full.js +39 -0
  97. package/lib/entries/dom-with-overrides-full.js.map +1 -0
  98. package/lib/entries/dom-with-overrides-lite.d.ts +11 -0
  99. package/lib/entries/dom-with-overrides-lite.js +32 -0
  100. package/lib/entries/dom-with-overrides-lite.js.map +1 -0
  101. package/lib/entries/overrides-full-only.d.ts +11 -0
  102. package/lib/entries/overrides-full-only.js +33 -0
  103. package/lib/entries/overrides-full-only.js.map +1 -0
  104. package/lib/entries/overrides-lite-only.d.ts +8 -0
  105. package/lib/entries/overrides-lite-only.js +28 -0
  106. package/lib/entries/overrides-lite-only.js.map +1 -0
  107. package/lib/entries/vitals-only.d.ts +8 -0
  108. package/lib/entries/vitals-only.js +12 -0
  109. package/lib/entries/vitals-only.js.map +1 -0
  110. package/lib/index.d.ts +13 -0
  111. package/lib/index.js +34 -0
  112. package/lib/index.js.map +1 -0
  113. package/lib/overrides/BrowserCookieAdapter.d.ts +6 -0
  114. package/lib/overrides/BrowserCookieAdapter.js +79 -0
  115. package/lib/overrides/BrowserCookieAdapter.js.map +1 -0
  116. package/lib/overrides/OverridesPlugin.d.ts +33 -0
  117. package/lib/overrides/OverridesPlugin.js +906 -0
  118. package/lib/overrides/OverridesPlugin.js.map +1 -0
  119. package/lib/overrides/OverridesPluginFull.d.ts +9 -0
  120. package/lib/overrides/OverridesPluginFull.js +35 -0
  121. package/lib/overrides/OverridesPluginFull.js.map +1 -0
  122. package/lib/overrides/OverridesPluginLite.d.ts +27 -0
  123. package/lib/overrides/OverridesPluginLite.js +355 -0
  124. package/lib/overrides/OverridesPluginLite.js.map +1 -0
  125. package/lib/overrides/index.d.ts +3 -0
  126. package/lib/overrides/index.js +23 -0
  127. package/lib/overrides/index.js.map +1 -0
  128. package/lib/overrides/types.d.ts +43 -0
  129. package/lib/overrides/types.js +3 -0
  130. package/lib/overrides/types.js.map +1 -0
  131. package/lib/parsers/VariantExtractor.d.ts +49 -0
  132. package/lib/parsers/VariantExtractor.js +573 -0
  133. package/lib/parsers/VariantExtractor.js.map +1 -0
  134. package/lib/types/index.d.ts +177 -0
  135. package/lib/types/index.js +3 -0
  136. package/lib/types/index.js.map +1 -0
  137. package/lib/utils/URLMatcher.d.ts +20 -0
  138. package/lib/utils/URLMatcher.js +117 -0
  139. package/lib/utils/URLMatcher.js.map +1 -0
  140. package/lib/utils/debug.d.ts +41 -0
  141. package/lib/utils/debug.js +195 -0
  142. package/lib/utils/debug.js.map +1 -0
  143. package/lib/vitals/WebVitalsPlugin.d.ts +37 -0
  144. package/lib/vitals/WebVitalsPlugin.js +382 -0
  145. package/lib/vitals/WebVitalsPlugin.js.map +1 -0
  146. package/lib/vitals/index.d.ts +2 -0
  147. package/lib/vitals/index.js +6 -0
  148. package/lib/vitals/index.js.map +1 -0
  149. package/package.json +94 -0
  150. package/types/cookies/CookiePlugin.d.ts +55 -0
  151. package/types/cookies/index.d.ts +2 -0
  152. package/types/core/DOMChangesPluginLite.d.ts +89 -0
  153. package/types/core/DOMManipulatorLite.d.ts +21 -0
  154. package/types/core/ExposureTracker.d.ts +81 -0
  155. package/types/core/HTMLInjector.d.ts +19 -0
  156. package/types/core/PendingChangeManager.d.ts +31 -0
  157. package/types/core/StyleSheetManager.d.ts +16 -0
  158. package/types/entries/cookie-only.d.ts +8 -0
  159. package/types/entries/dom-only.d.ts +9 -0
  160. package/types/entries/dom-with-overrides-full.d.ts +15 -0
  161. package/types/entries/dom-with-overrides-lite.d.ts +11 -0
  162. package/types/entries/overrides-full-only.d.ts +11 -0
  163. package/types/entries/overrides-lite-only.d.ts +8 -0
  164. package/types/entries/vitals-only.d.ts +8 -0
  165. package/types/index.d.ts +13 -0
  166. package/types/overrides/BrowserCookieAdapter.d.ts +6 -0
  167. package/types/overrides/OverridesPlugin.d.ts +33 -0
  168. package/types/overrides/OverridesPluginFull.d.ts +9 -0
  169. package/types/overrides/OverridesPluginLite.d.ts +27 -0
  170. package/types/overrides/index.d.ts +3 -0
  171. package/types/overrides/types.d.ts +43 -0
  172. package/types/parsers/VariantExtractor.d.ts +49 -0
  173. package/types/types/index.d.ts +177 -0
  174. package/types/utils/URLMatcher.d.ts +20 -0
  175. package/types/utils/debug.d.ts +41 -0
  176. package/types/vitals/WebVitalsPlugin.d.ts +37 -0
  177. package/types/vitals/index.d.ts +2 -0
@@ -0,0 +1,177 @@
1
+ export type ChangeType = 'text' | 'html' | 'style' | 'styleRules' | 'class' | 'attribute' | 'javascript' | 'move' | 'create' | 'delete';
2
+ export type DOMChangeValue = string | number | boolean | Record<string, string> | undefined;
3
+ export interface URLFilterConfig {
4
+ include?: string[];
5
+ exclude?: string[];
6
+ mode?: 'simple' | 'regex';
7
+ matchType?: 'full-url' | 'path' | 'domain' | 'query' | 'hash';
8
+ }
9
+ export type URLFilter = string | string[] | URLFilterConfig;
10
+ export interface StyleRuleStates {
11
+ normal?: Record<string, string>;
12
+ hover?: Record<string, string>;
13
+ active?: Record<string, string>;
14
+ focus?: Record<string, string>;
15
+ }
16
+ export interface DOMChange {
17
+ selector: string;
18
+ type: ChangeType;
19
+ value?: DOMChangeValue;
20
+ enabled?: boolean;
21
+ add?: string[];
22
+ remove?: string[];
23
+ targetSelector?: string;
24
+ position?: 'before' | 'after' | 'firstChild' | 'lastChild';
25
+ element?: string;
26
+ states?: StyleRuleStates;
27
+ important?: boolean;
28
+ observerRoot?: string;
29
+ waitForElement?: boolean;
30
+ persistStyle?: boolean;
31
+ trigger_on_view?: boolean;
32
+ }
33
+ export interface DOMChangesConfig {
34
+ changes: DOMChange[];
35
+ urlFilter?: URLFilter;
36
+ waitForElement?: boolean;
37
+ persistStyle?: boolean;
38
+ important?: boolean;
39
+ observerRoot?: string;
40
+ }
41
+ export type DOMChangesData = DOMChange[] | DOMChangesConfig;
42
+ export interface InjectionData {
43
+ headStart?: string;
44
+ headEnd?: string;
45
+ bodyStart?: string;
46
+ bodyEnd?: string;
47
+ }
48
+ export type InjectionLocation = 'headStart' | 'headEnd' | 'bodyStart' | 'bodyEnd';
49
+ export interface InjectionItem {
50
+ code: string;
51
+ priority: number;
52
+ location: InjectionLocation;
53
+ }
54
+ export type RawInjectionData = Record<string, string | URLFilter>;
55
+ export interface InjectionDataWithFilter {
56
+ data: RawInjectionData;
57
+ urlFilter?: URLFilter;
58
+ }
59
+ export interface ElementState {
60
+ selector: string;
61
+ type: string;
62
+ originalState: {
63
+ text?: string;
64
+ html?: string;
65
+ style?: string;
66
+ classList?: string[];
67
+ attributes?: Record<string, string>;
68
+ parent?: Element | null;
69
+ nextSibling?: Element | null;
70
+ };
71
+ }
72
+ export interface ABsmartlyContext {
73
+ ready(): Promise<void>;
74
+ data(): ContextData | null;
75
+ peek(experimentName: string): number | undefined;
76
+ treatment(experimentName: string): number;
77
+ override(experimentName: string, variant: number): void;
78
+ customFieldValue(experimentName: string, fieldName: string): unknown;
79
+ __plugins?: {
80
+ [key: string]: PluginRegistration | undefined;
81
+ };
82
+ __domPlugin?: PluginRegistration;
83
+ }
84
+ export interface PluginRegistration {
85
+ name: string;
86
+ version: string;
87
+ initialized: boolean;
88
+ capabilities: string[];
89
+ instance: unknown;
90
+ timestamp: number;
91
+ }
92
+ export interface PluginConfig {
93
+ context: ABsmartlyContext;
94
+ autoApply?: boolean;
95
+ /**
96
+ * SPA mode - Enables features for Single Page Applications (React, Vue, Angular, etc.)
97
+ * When enabled, automatically activates:
98
+ * - Wait for element: Observes DOM for elements that don't exist yet
99
+ * - Style persistence: Re-applies styles when frameworks overwrite them (e.g., on hover)
100
+ *
101
+ * Set to true for dynamic apps where DOM changes after page load
102
+ */
103
+ spa?: boolean;
104
+ visibilityTracking?: boolean;
105
+ extensionBridge?: boolean;
106
+ dataSource?: 'variable' | 'customField';
107
+ dataFieldName?: string;
108
+ debug?: boolean;
109
+ hideUntilReady?: boolean | 'body' | 'elements';
110
+ hideTimeout?: number;
111
+ hideSelector?: string;
112
+ hideTransition?: string | false;
113
+ }
114
+ export interface AppliedChange {
115
+ experimentName: string;
116
+ change: DOMChange;
117
+ elements: Element[];
118
+ timestamp: number;
119
+ }
120
+ export interface PendingChange {
121
+ experimentName: string;
122
+ change: DOMChange;
123
+ retryCount: number;
124
+ }
125
+ export type MessagePayloadData = {
126
+ changes?: DOMChange[];
127
+ experimentName?: string;
128
+ count?: number;
129
+ version?: string;
130
+ capabilities?: string[];
131
+ experiments?: ExperimentData[];
132
+ overrides?: Record<string, unknown>;
133
+ locations?: string[];
134
+ error?: string;
135
+ variant?: number;
136
+ changeCount?: number;
137
+ headStart?: string;
138
+ headEnd?: string;
139
+ bodyStart?: string;
140
+ bodyEnd?: string;
141
+ };
142
+ export interface MessagePayload {
143
+ source: string;
144
+ type: string;
145
+ payload?: MessagePayloadData;
146
+ }
147
+ export interface ExperimentVariant {
148
+ variables?: Record<string, unknown>;
149
+ config?: string | Record<string, unknown>;
150
+ }
151
+ export interface ExperimentData {
152
+ name: string;
153
+ variants?: ExperimentVariant[];
154
+ }
155
+ export interface ContextData {
156
+ experiments?: ExperimentData[];
157
+ }
158
+ export type EventCallback = (data?: EventCallbackData) => void;
159
+ export interface EventCallbackData {
160
+ count?: number;
161
+ experimentName?: string;
162
+ changeCount?: number;
163
+ locations?: string[];
164
+ error?: string;
165
+ removedChanges?: AppliedChange[];
166
+ change?: DOMChange;
167
+ }
168
+ export type MessageHandler = (payload: MessagePayloadData) => void;
169
+ export interface ExperimentTracking {
170
+ experimentName: string;
171
+ variant: number;
172
+ changes: DOMChange[];
173
+ allPossibleSelectors: Set<string>;
174
+ triggered: boolean;
175
+ hasImmediateTrigger: boolean;
176
+ hasViewportTrigger: boolean;
177
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ export interface URLFilterConfig {
2
+ include?: string[];
3
+ exclude?: string[];
4
+ mode?: 'simple' | 'regex';
5
+ matchType?: 'full-url' | 'path' | 'domain' | 'query' | 'hash';
6
+ }
7
+ export type URLFilter = string | string[] | URLFilterConfig;
8
+ export declare class URLMatcher {
9
+ /**
10
+ * Check if current URL matches the filter
11
+ */
12
+ static matches(filter: URLFilter, url?: string): boolean;
13
+ /**
14
+ * Extract the relevant part of the URL based on matchType
15
+ */
16
+ private static extractURLPart;
17
+ private static matchesPatterns;
18
+ private static matchSimplePattern;
19
+ private static normalizeFilter;
20
+ }
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.URLMatcher = void 0;
4
+ var URLMatcher = /** @class */ (function () {
5
+ function URLMatcher() {
6
+ }
7
+ /**
8
+ * Check if current URL matches the filter
9
+ */
10
+ URLMatcher.matches = function (filter, url) {
11
+ if (url === void 0) { url = window.location.href; }
12
+ // Normalize filter to URLFilterConfig
13
+ var config = this.normalizeFilter(filter);
14
+ // Extract the part of URL to match based on matchType
15
+ var urlPart = this.extractURLPart(url, config.matchType);
16
+ // Check exclusions first
17
+ if (config.exclude && this.matchesPatterns(config.exclude, urlPart, config.mode)) {
18
+ return false;
19
+ }
20
+ // Check inclusions
21
+ if (!config.include) {
22
+ return true; // No include property = match all
23
+ }
24
+ if (config.include.length === 0) {
25
+ return false; // Empty include array = match nothing (explicit "include nothing")
26
+ }
27
+ return this.matchesPatterns(config.include, urlPart, config.mode);
28
+ };
29
+ /**
30
+ * Extract the relevant part of the URL based on matchType
31
+ */
32
+ URLMatcher.extractURLPart = function (url, matchType) {
33
+ if (matchType === void 0) { matchType = 'path'; }
34
+ try {
35
+ var urlObj = new URL(url);
36
+ switch (matchType) {
37
+ case 'full-url':
38
+ // Complete URL including protocol, domain, path, query, and hash
39
+ return urlObj.href;
40
+ case 'path':
41
+ // Path + hash (default behavior - most common use case)
42
+ return urlObj.pathname + urlObj.hash;
43
+ case 'domain':
44
+ // Just the hostname (e.g., 'example.com' or 'www.example.com')
45
+ return urlObj.hostname;
46
+ case 'query':
47
+ // Just query parameters (e.g., '?id=123&ref=home')
48
+ return urlObj.search;
49
+ case 'hash':
50
+ // Just hash fragment (e.g., '#section')
51
+ return urlObj.hash;
52
+ default:
53
+ return urlObj.pathname + urlObj.hash;
54
+ }
55
+ }
56
+ catch (error) {
57
+ // If URL parsing fails, return original string
58
+ console.error("[ABsmartly] Failed to parse URL: ".concat(url), error);
59
+ return url;
60
+ }
61
+ };
62
+ URLMatcher.matchesPatterns = function (patterns, url, mode) {
63
+ var _this = this;
64
+ if (mode === void 0) { mode = 'simple'; }
65
+ return patterns.some(function (pattern) {
66
+ if (mode === 'regex') {
67
+ try {
68
+ return new RegExp(pattern).test(url);
69
+ }
70
+ catch (error) {
71
+ console.error("[ABsmartly] Invalid regex pattern: ".concat(pattern), error);
72
+ return false;
73
+ }
74
+ }
75
+ return _this.matchSimplePattern(pattern, url);
76
+ });
77
+ };
78
+ URLMatcher.matchSimplePattern = function (pattern, url) {
79
+ // Convert simple pattern to regex
80
+ // * becomes .*
81
+ // ? becomes .
82
+ // Escape other regex special chars
83
+ var regexPattern = pattern
84
+ .replace(/[.+^${}()|[\]\\]/g, '\\$&') // Escape regex chars except * and ?
85
+ .replace(/\*/g, '.*') // * to .*
86
+ .replace(/\?/g, '.'); // ? to .
87
+ try {
88
+ return new RegExp("^".concat(regexPattern, "$")).test(url);
89
+ }
90
+ catch (error) {
91
+ console.error("[ABsmartly] Invalid pattern: ".concat(pattern), error);
92
+ return false;
93
+ }
94
+ };
95
+ URLMatcher.normalizeFilter = function (filter) {
96
+ if (typeof filter === 'string') {
97
+ return { include: [filter], exclude: [], mode: 'simple', matchType: 'path' };
98
+ }
99
+ if (Array.isArray(filter)) {
100
+ return {
101
+ include: filter.length > 0 ? filter : undefined,
102
+ exclude: [],
103
+ mode: 'simple',
104
+ matchType: 'path',
105
+ };
106
+ }
107
+ return {
108
+ include: filter.include,
109
+ exclude: filter.exclude || [],
110
+ mode: filter.mode || 'simple',
111
+ matchType: filter.matchType || 'path',
112
+ };
113
+ };
114
+ return URLMatcher;
115
+ }());
116
+ exports.URLMatcher = URLMatcher;
117
+ //# sourceMappingURL=URLMatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"URLMatcher.js","sourceRoot":"","sources":["../../src/utils/URLMatcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ export declare const DEBUG: boolean;
2
+ export interface LogContext {
3
+ experimentName?: string;
4
+ selector?: string;
5
+ changeType?: string;
6
+ elementsCount?: number;
7
+ [key: string]: any;
8
+ }
9
+ /**
10
+ * Logs debug messages only when DEBUG flag is true
11
+ * This function will be completely removed in production builds
12
+ */
13
+ export declare function logDebug(...args: unknown[]): void;
14
+ /**
15
+ * Logs detailed change application
16
+ */
17
+ export declare function logChangeApplication(experimentName: string, selector: string, changeType: string, elementsAffected: number, success: boolean): void;
18
+ /**
19
+ * Logs change removal/restoration
20
+ */
21
+ export declare function logChangeRemoval(experimentName: string, selector: string, changeType: string, elementsRestored: number): void;
22
+ /**
23
+ * Logs experiment summary
24
+ */
25
+ export declare function logExperimentSummary(experimentName: string, totalChanges: number, successfulChanges: number, pendingChanges: number): void;
26
+ /**
27
+ * Logs state management operations
28
+ */
29
+ export declare function logStateOperation(operation: 'store' | 'retrieve' | 'clear', selector: string, changeType: string, experimentName?: string): void;
30
+ /**
31
+ * Logs visibility tracking events
32
+ */
33
+ export declare function logVisibilityEvent(experimentName: string, element: Element, triggered: boolean): void;
34
+ /**
35
+ * Logs message bridge communication
36
+ */
37
+ export declare function logMessage(direction: 'sent' | 'received', messageType: string, payload?: any): void;
38
+ /**
39
+ * Logs performance metrics
40
+ */
41
+ export declare function logPerformance(operation: string, duration: number, details?: any): void;
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __read = (this && this.__read) || function (o, n) {
14
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
15
+ if (!m) return o;
16
+ var i = m.call(o), r, ar = [], e;
17
+ try {
18
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
19
+ }
20
+ catch (error) { e = { error: error }; }
21
+ finally {
22
+ try {
23
+ if (r && !r.done && (m = i["return"])) m.call(i);
24
+ }
25
+ finally { if (e) throw e.error; }
26
+ }
27
+ return ar;
28
+ };
29
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
30
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
31
+ if (ar || !(i in from)) {
32
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
33
+ ar[i] = from[i];
34
+ }
35
+ }
36
+ return to.concat(ar || Array.prototype.slice.call(from));
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.DEBUG = void 0;
40
+ exports.logDebug = logDebug;
41
+ exports.logChangeApplication = logChangeApplication;
42
+ exports.logChangeRemoval = logChangeRemoval;
43
+ exports.logExperimentSummary = logExperimentSummary;
44
+ exports.logStateOperation = logStateOperation;
45
+ exports.logVisibilityEvent = logVisibilityEvent;
46
+ exports.logMessage = logMessage;
47
+ exports.logPerformance = logPerformance;
48
+ // Build-time debug flag - true in development, false in production
49
+ exports.DEBUG = typeof __DEBUG__ !== 'undefined' ? __DEBUG__ : false;
50
+ /**
51
+ * Logs debug messages only when DEBUG flag is true
52
+ * This function will be completely removed in production builds
53
+ */
54
+ function logDebug() {
55
+ var args = [];
56
+ for (var _i = 0; _i < arguments.length; _i++) {
57
+ args[_i] = arguments[_i];
58
+ }
59
+ if (exports.DEBUG) {
60
+ // Handle old format with message and context
61
+ if (args.length === 2 && typeof args[0] === 'string' && typeof args[1] === 'object') {
62
+ var _a = __read(args, 2), message = _a[0], context = _a[1];
63
+ // Skip repetitive messages
64
+ if (message.includes('Original state already stored'))
65
+ return;
66
+ if (message.includes('State store operation'))
67
+ return;
68
+ if (message.includes('Performance:') && (context === null || context === void 0 ? void 0 : context.duration) && context.duration < 5)
69
+ return;
70
+ if (message.includes('Message sent:') || message.includes('Message received:'))
71
+ return;
72
+ var timestamp = new Date().toISOString();
73
+ var prefix = '[ABsmartly Debug]';
74
+ console.log("".concat(prefix, " [").concat(timestamp, "] ").concat(message), context);
75
+ }
76
+ else if (args.length === 1 && typeof args[0] === 'string') {
77
+ // Single string message
78
+ var message = args[0];
79
+ // Skip repetitive messages
80
+ if (message.includes('Original state already stored'))
81
+ return;
82
+ if (message.includes('State store operation'))
83
+ return;
84
+ if (message.includes('Message sent:') || message.includes('Message received:'))
85
+ return;
86
+ var timestamp = new Date().toISOString();
87
+ var prefix = '[ABsmartly Debug]';
88
+ console.log("".concat(prefix, " [").concat(timestamp, "] ").concat(message));
89
+ }
90
+ else {
91
+ // Direct console.log replacement - just pass through all arguments
92
+ console.log.apply(console, __spreadArray([], __read(args), false));
93
+ }
94
+ }
95
+ }
96
+ /**
97
+ * Logs detailed change application
98
+ */
99
+ function logChangeApplication(experimentName, selector, changeType, elementsAffected, success) {
100
+ if (exports.DEBUG) {
101
+ var status_1 = success ? '✓' : '✗';
102
+ var message = "".concat(status_1, " Applied ").concat(changeType, " change to ").concat(elementsAffected, " element(s)");
103
+ logDebug(message, {
104
+ experimentName: experimentName,
105
+ selector: selector,
106
+ changeType: changeType,
107
+ elementsCount: elementsAffected,
108
+ success: success,
109
+ });
110
+ }
111
+ }
112
+ /**
113
+ * Logs change removal/restoration
114
+ */
115
+ function logChangeRemoval(experimentName, selector, changeType, elementsRestored) {
116
+ if (exports.DEBUG) {
117
+ var message = "Restored ".concat(elementsRestored, " element(s) to original state");
118
+ logDebug(message, {
119
+ experimentName: experimentName,
120
+ selector: selector,
121
+ changeType: changeType,
122
+ elementsCount: elementsRestored,
123
+ action: 'restore',
124
+ });
125
+ }
126
+ }
127
+ /**
128
+ * Logs experiment summary
129
+ */
130
+ function logExperimentSummary(experimentName, totalChanges, successfulChanges, pendingChanges) {
131
+ if (exports.DEBUG) {
132
+ var message = "Experiment \"".concat(experimentName, "\" summary");
133
+ logDebug(message, {
134
+ experimentName: experimentName,
135
+ totalChanges: totalChanges,
136
+ successfulChanges: successfulChanges,
137
+ pendingChanges: pendingChanges,
138
+ successRate: totalChanges > 0 ? "".concat(Math.round((successfulChanges / totalChanges) * 100), "%") : 'N/A',
139
+ });
140
+ }
141
+ }
142
+ /**
143
+ * Logs state management operations
144
+ */
145
+ function logStateOperation(operation, selector, changeType, experimentName) {
146
+ if (exports.DEBUG) {
147
+ var message = "State ".concat(operation, " operation");
148
+ logDebug(message, {
149
+ operation: operation,
150
+ selector: selector,
151
+ changeType: changeType,
152
+ experimentName: experimentName,
153
+ });
154
+ }
155
+ }
156
+ /**
157
+ * Logs visibility tracking events
158
+ */
159
+ function logVisibilityEvent(experimentName, element, triggered) {
160
+ if (exports.DEBUG) {
161
+ var message = triggered
162
+ ? 'Element became visible - experiment triggered'
163
+ : 'Element visibility changed';
164
+ logDebug(message, {
165
+ experimentName: experimentName,
166
+ selector: element.className || element.id || element.tagName,
167
+ triggered: triggered,
168
+ action: 'visibility',
169
+ });
170
+ }
171
+ }
172
+ /**
173
+ * Logs message bridge communication
174
+ */
175
+ function logMessage(direction, messageType, payload) {
176
+ if (exports.DEBUG) {
177
+ var message = "Message ".concat(direction, ": ").concat(messageType);
178
+ logDebug(message, {
179
+ direction: direction,
180
+ messageType: messageType,
181
+ payload: payload,
182
+ bridge: 'extension',
183
+ });
184
+ }
185
+ }
186
+ /**
187
+ * Logs performance metrics
188
+ */
189
+ function logPerformance(operation, duration, details) {
190
+ if (exports.DEBUG) {
191
+ var message = "Performance: ".concat(operation, " took ").concat(duration, "ms");
192
+ logDebug(message, __assign({ operation: operation, duration: duration, performance: true }, details));
193
+ }
194
+ }
195
+ //# sourceMappingURL=debug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/utils/debug.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { Context } from '@absmartly/javascript-sdk';
2
+ export interface WebVitalsPluginOptions {
3
+ context?: Context;
4
+ debug?: boolean;
5
+ trackWebVitals?: boolean;
6
+ trackPageMetrics?: boolean;
7
+ webVitalsUrl?: string;
8
+ autoTrack?: boolean;
9
+ }
10
+ export interface Metric {
11
+ value: number;
12
+ delta?: number;
13
+ id?: string;
14
+ name?: string;
15
+ rating?: 'good' | 'needs-improvement' | 'poor';
16
+ entries?: unknown[];
17
+ }
18
+ export declare class WebVitalsPlugin {
19
+ private context?;
20
+ private debug;
21
+ private trackWebVitals;
22
+ private trackPageMetrics;
23
+ private webVitalsUrl;
24
+ private autoTrack;
25
+ private webVitalsLoaded;
26
+ private metricsTracked;
27
+ constructor(options?: WebVitalsPluginOptions);
28
+ private debugLog;
29
+ setContext(context: Context): void;
30
+ private loadWebVitalsLibrary;
31
+ trackWebVitalsMetrics(context?: Context): Promise<void>;
32
+ trackPageMetricsData(context?: Context): void;
33
+ private trackImmediateMetrics;
34
+ private trackLoadMetrics;
35
+ initialize(): Promise<void>;
36
+ reset(): void;
37
+ }