@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,573 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __values = (this && this.__values) || function(o) {
14
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
15
+ if (m) return m.call(o);
16
+ if (o && typeof o.length === "number") return {
17
+ next: function () {
18
+ if (o && i >= o.length) o = void 0;
19
+ return { value: o && o[i++], done: !o };
20
+ }
21
+ };
22
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
23
+ };
24
+ var __read = (this && this.__read) || function (o, n) {
25
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
26
+ if (!m) return o;
27
+ var i = m.call(o), r, ar = [], e;
28
+ try {
29
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
30
+ }
31
+ catch (error) { e = { error: error }; }
32
+ finally {
33
+ try {
34
+ if (r && !r.done && (m = i["return"])) m.call(i);
35
+ }
36
+ finally { if (e) throw e.error; }
37
+ }
38
+ return ar;
39
+ };
40
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
41
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
42
+ if (ar || !(i in from)) {
43
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
44
+ ar[i] = from[i];
45
+ }
46
+ }
47
+ return to.concat(ar || Array.prototype.slice.call(from));
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.VariantExtractor = void 0;
51
+ var debug_1 = require("../utils/debug");
52
+ var URLMatcher_1 = require("../utils/URLMatcher");
53
+ var VariantExtractor = /** @class */ (function () {
54
+ function VariantExtractor(context, dataSource, dataFieldName, debug) {
55
+ if (dataSource === void 0) { dataSource = 'variable'; }
56
+ if (dataFieldName === void 0) { dataFieldName = '__dom_changes'; }
57
+ if (debug === void 0) { debug = false; }
58
+ this.cachedAllChanges = null;
59
+ this.context = context;
60
+ this.dataSource = dataSource;
61
+ this.dataFieldName = dataFieldName;
62
+ this.debug = debug;
63
+ }
64
+ // Clear cache when context changes
65
+ VariantExtractor.prototype.clearCache = function () {
66
+ this.cachedAllChanges = null;
67
+ };
68
+ // Extract ALL variants for ALL experiments (efficient single pass)
69
+ VariantExtractor.prototype.extractAllChanges = function () {
70
+ var e_1, _a;
71
+ var _b, _c, _d, _e, _f;
72
+ // Return cached version if available
73
+ if (this.cachedAllChanges) {
74
+ if (this.debug) {
75
+ (0, debug_1.logDebug)('[ABsmartly VariantExtractor] Returning cached changes');
76
+ }
77
+ return this.cachedAllChanges;
78
+ }
79
+ var allChanges = new Map();
80
+ try {
81
+ var contextData = this.context.data();
82
+ // Always log the raw context data structure for debugging
83
+ (0, debug_1.logDebug)('[VariantExtractor DEBUG] Raw context data structure:', {
84
+ hasData: !!contextData,
85
+ contextKeys: contextData ? Object.keys(contextData) : [],
86
+ experimentCount: ((_b = contextData === null || contextData === void 0 ? void 0 : contextData.experiments) === null || _b === void 0 ? void 0 : _b.length) || 0,
87
+ firstExperiment: ((_c = contextData === null || contextData === void 0 ? void 0 : contextData.experiments) === null || _c === void 0 ? void 0 : _c[0])
88
+ ? {
89
+ name: contextData.experiments[0].name,
90
+ // id: contextData.experiments[0].id, // id field might not exist
91
+ variantCount: ((_d = contextData.experiments[0].variants) === null || _d === void 0 ? void 0 : _d.length) || 0,
92
+ firstVariantStructure: ((_e = contextData.experiments[0].variants) === null || _e === void 0 ? void 0 : _e[0])
93
+ ? Object.keys(contextData.experiments[0].variants[0])
94
+ : [],
95
+ }
96
+ : null,
97
+ rawContextData: JSON.stringify(contextData).substring(0, 500) + '...',
98
+ });
99
+ if (this.debug) {
100
+ (0, debug_1.logDebug)('[ABsmartly VariantExtractor] Extracting changes from context:', {
101
+ hasData: !!contextData,
102
+ experimentCount: ((_f = contextData === null || contextData === void 0 ? void 0 : contextData.experiments) === null || _f === void 0 ? void 0 : _f.length) || 0,
103
+ });
104
+ }
105
+ // Extract from SDK context data
106
+ if (contextData === null || contextData === void 0 ? void 0 : contextData.experiments) {
107
+ if (this.debug) {
108
+ (0, debug_1.logDebug)('[ABsmartly VariantExtractor] Available experiments:', contextData.experiments.map(function (exp) {
109
+ var _a;
110
+ return ({
111
+ name: exp.name,
112
+ // id: exp.id, // id field might not exist
113
+ hasVariants: !!exp.variants,
114
+ variantCount: ((_a = exp.variants) === null || _a === void 0 ? void 0 : _a.length) || 0,
115
+ });
116
+ }));
117
+ }
118
+ try {
119
+ for (var _g = __values(contextData.experiments), _h = _g.next(); !_h.done; _h = _g.next()) {
120
+ var experiment = _h.value;
121
+ var variantChanges = this.extractAllVariantsForExperiment(experiment);
122
+ if (variantChanges.size > 0) {
123
+ allChanges.set(experiment.name, variantChanges);
124
+ if (this.debug) {
125
+ (0, debug_1.logDebug)("[ABsmartly VariantExtractor] Experiment '".concat(experiment.name, "' has DOM changes:"), {
126
+ variantsWithChanges: Array.from(variantChanges.keys()),
127
+ changesByVariant: Array.from(variantChanges.entries()).map(function (_a) {
128
+ var _b = __read(_a, 2), v = _b[0], changes = _b[1];
129
+ return ({
130
+ variant: v,
131
+ changeCount: changes.length,
132
+ changeTypes: __spreadArray([], __read(new Set(changes.map(function (c) { return c.type; }))), false),
133
+ });
134
+ }),
135
+ });
136
+ }
137
+ }
138
+ else if (this.debug) {
139
+ (0, debug_1.logDebug)("[ABsmartly VariantExtractor] Experiment '".concat(experiment.name, "' has no DOM changes"));
140
+ }
141
+ }
142
+ }
143
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
144
+ finally {
145
+ try {
146
+ if (_h && !_h.done && (_a = _g.return)) _a.call(_g);
147
+ }
148
+ finally { if (e_1) throw e_1.error; }
149
+ }
150
+ }
151
+ // No need to check window storage - experiments are now injected into context data
152
+ }
153
+ catch (error) {
154
+ (0, debug_1.logDebug)('[ABsmartly] Error extracting DOM changes:', error);
155
+ }
156
+ // Cache the result
157
+ this.cachedAllChanges = allChanges;
158
+ return allChanges;
159
+ };
160
+ // Extract all variants for a single experiment
161
+ VariantExtractor.prototype.extractAllVariantsForExperiment = function (experiment) {
162
+ var _a;
163
+ var variantChanges = new Map();
164
+ (0, debug_1.logDebug)('[DEBUG] Processing experiment:', experiment.name, 'with', ((_a = experiment.variants) === null || _a === void 0 ? void 0 : _a.length) || 0, 'variants');
165
+ if (!experiment.variants) {
166
+ (0, debug_1.logDebug)('[DEBUG] No variants found for experiment:', experiment.name);
167
+ return variantChanges;
168
+ }
169
+ for (var i = 0; i < experiment.variants.length; i++) {
170
+ var variant = experiment.variants[i];
171
+ if (!variant)
172
+ continue;
173
+ var changesData = null;
174
+ if (this.dataSource === 'variable') {
175
+ // First check variant.variables (common in tests and some setups)
176
+ if (variant.variables && variant.variables[this.dataFieldName]) {
177
+ changesData = variant.variables[this.dataFieldName];
178
+ (0, debug_1.logDebug)("[VariantExtractor DEBUG] \u2713 Found DOM changes in variables[".concat(this.dataFieldName, "]:"), changesData);
179
+ }
180
+ // Then check variant.config (ABSmartly SDK provides data here as a JSON string)
181
+ else if (variant.config) {
182
+ try {
183
+ var config = typeof variant.config === 'string' ? JSON.parse(variant.config) : variant.config;
184
+ if (config && config[this.dataFieldName]) {
185
+ changesData = config[this.dataFieldName];
186
+ (0, debug_1.logDebug)("[VariantExtractor DEBUG] \u2713 Found DOM changes in config[".concat(this.dataFieldName, "]:"), changesData);
187
+ }
188
+ else {
189
+ (0, debug_1.logDebug)('[VariantExtractor DEBUG] ✗ No', this.dataFieldName, 'field found in parsed config');
190
+ }
191
+ }
192
+ catch (e) {
193
+ (0, debug_1.logDebug)('[VariantExtractor DEBUG] ✗ Failed to parse variant.config:', e, 'Raw config:', typeof variant.config === 'string' ? variant.config.substring(0, 100) : '');
194
+ }
195
+ }
196
+ }
197
+ else {
198
+ // For custom field, we would need to handle it per experiment
199
+ // This is a limitation of the current approach when extracting all variants
200
+ continue;
201
+ }
202
+ if (changesData) {
203
+ // Extract changes - handles both legacy array and new wrapped format
204
+ var changes = this.extractChangesFromData(changesData);
205
+ if (changes && changes.length > 0) {
206
+ variantChanges.set(i, changes);
207
+ }
208
+ }
209
+ }
210
+ return variantChanges;
211
+ };
212
+ /**
213
+ * Extract changes from DOMChangesData (handles both legacy array and new wrapped format)
214
+ */
215
+ VariantExtractor.prototype.extractChangesFromData = function (data) {
216
+ if (!data) {
217
+ return null;
218
+ }
219
+ // If it's a string, try to parse it as JSON first
220
+ if (typeof data === 'string') {
221
+ try {
222
+ data = JSON.parse(data);
223
+ }
224
+ catch (error) {
225
+ (0, debug_1.logDebug)('[ABsmartly] Failed to parse DOM changes JSON:', error);
226
+ return null;
227
+ }
228
+ }
229
+ // Check if it's the new wrapped format (DOMChangesConfig)
230
+ if (data && typeof data === 'object' && !Array.isArray(data) && 'changes' in data) {
231
+ var config = data;
232
+ return this.parseChanges(config.changes);
233
+ }
234
+ // Legacy array format
235
+ return this.parseChanges(data);
236
+ };
237
+ // Get changes for the current variant of a specific experiment
238
+ // Note: Requires context to be ready for peek() to work correctly
239
+ VariantExtractor.prototype.getExperimentChanges = function (experimentName) {
240
+ var allChanges = this.extractAllChanges();
241
+ var experimentVariants = allChanges.get(experimentName);
242
+ if (!experimentVariants || experimentVariants.size === 0) {
243
+ return null;
244
+ }
245
+ // Use peek to get the current variant without triggering exposure
246
+ // Important: peek() returns 0 if context is not ready
247
+ var currentVariant = this.context.peek(experimentName);
248
+ if (currentVariant === undefined || currentVariant === null) {
249
+ if (this.debug) {
250
+ (0, debug_1.logDebug)("[ABsmartly] No variant selected for ".concat(experimentName));
251
+ }
252
+ return null;
253
+ }
254
+ return experimentVariants.get(currentVariant) || null;
255
+ };
256
+ VariantExtractor.prototype.parseChanges = function (changesData) {
257
+ var e_2, _a;
258
+ if (!changesData) {
259
+ return null;
260
+ }
261
+ // If it's a string, try to parse it as JSON
262
+ if (typeof changesData === 'string') {
263
+ try {
264
+ changesData = JSON.parse(changesData);
265
+ }
266
+ catch (error) {
267
+ (0, debug_1.logDebug)('[ABsmartly] Failed to parse DOM changes JSON:', error);
268
+ return null;
269
+ }
270
+ }
271
+ // Ensure it's an array
272
+ if (!Array.isArray(changesData)) {
273
+ if (this.debug) {
274
+ (0, debug_1.logDebug)('[ABsmartly] DOM changes data is not an array');
275
+ }
276
+ return null;
277
+ }
278
+ // Validate and filter changes
279
+ var validChanges = [];
280
+ try {
281
+ for (var changesData_1 = __values(changesData), changesData_1_1 = changesData_1.next(); !changesData_1_1.done; changesData_1_1 = changesData_1.next()) {
282
+ var change = changesData_1_1.value;
283
+ if (this.isValidChange(change)) {
284
+ validChanges.push(change);
285
+ }
286
+ else if (this.debug) {
287
+ (0, debug_1.logDebug)('[ABsmartly] Invalid DOM change:', change);
288
+ }
289
+ }
290
+ }
291
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
292
+ finally {
293
+ try {
294
+ if (changesData_1_1 && !changesData_1_1.done && (_a = changesData_1.return)) _a.call(changesData_1);
295
+ }
296
+ finally { if (e_2) throw e_2.error; }
297
+ }
298
+ return validChanges.length > 0 ? validChanges : null;
299
+ };
300
+ VariantExtractor.prototype.isValidChange = function (change) {
301
+ if (!change || typeof change !== 'object') {
302
+ return false;
303
+ }
304
+ var obj = change;
305
+ // Check required fields
306
+ // Note: selector can be empty string for 'create' and 'styleRules' types
307
+ if (obj.selector === undefined || obj.selector === null || !obj.type) {
308
+ return false;
309
+ }
310
+ // Check type is valid
311
+ var validTypes = [
312
+ 'text',
313
+ 'html',
314
+ 'style',
315
+ 'class',
316
+ 'attribute',
317
+ 'javascript',
318
+ 'move',
319
+ 'create',
320
+ 'delete',
321
+ 'styleRules',
322
+ ];
323
+ if (!validTypes.includes(obj.type)) {
324
+ return false;
325
+ }
326
+ // Type-specific validation
327
+ switch (obj.type) {
328
+ case 'class':
329
+ if (!obj.add && !obj.remove) {
330
+ return false;
331
+ }
332
+ if (obj.add && !Array.isArray(obj.add)) {
333
+ return false;
334
+ }
335
+ if (obj.remove && !Array.isArray(obj.remove)) {
336
+ return false;
337
+ }
338
+ break;
339
+ case 'move':
340
+ if (!obj.targetSelector) {
341
+ return false;
342
+ }
343
+ break;
344
+ case 'create':
345
+ if (!obj.element || !obj.targetSelector) {
346
+ return false;
347
+ }
348
+ break;
349
+ case 'style':
350
+ case 'attribute':
351
+ if (!obj.value || typeof obj.value !== 'object') {
352
+ return false;
353
+ }
354
+ break;
355
+ }
356
+ return true;
357
+ };
358
+ /**
359
+ * Get all variant changes for an experiment (not just the current variant)
360
+ * This is needed for proper exposure tracking across variants
361
+ */
362
+ VariantExtractor.prototype.getAllVariantChanges = function (experimentName) {
363
+ var allChanges = this.extractAllChanges();
364
+ var experimentVariants = allChanges.get(experimentName);
365
+ if (!experimentVariants) {
366
+ return [];
367
+ }
368
+ // Convert Map to array indexed by variant number
369
+ var maxVariant = Math.max.apply(Math, __spreadArray([], __read(experimentVariants.keys()), false));
370
+ var variantArray = [];
371
+ for (var i = 0; i <= maxVariant; i++) {
372
+ variantArray.push(experimentVariants.get(i) || []);
373
+ }
374
+ return variantArray;
375
+ };
376
+ /**
377
+ * Get the experiment data by name
378
+ * Note: This requires the context to be ready, otherwise it will throw
379
+ */
380
+ VariantExtractor.prototype.getExperiment = function (experimentName) {
381
+ try {
382
+ var contextData = this.context.data();
383
+ if (!contextData || !contextData.experiments) {
384
+ return null;
385
+ }
386
+ return contextData.experiments.find(function (exp) { return exp.name === experimentName; }) || null;
387
+ }
388
+ catch (error) {
389
+ if (this.debug) {
390
+ (0, debug_1.logDebug)("[ABsmartly VariantExtractor] Failed to get experiment '".concat(experimentName, "' - context may not be ready:"), error);
391
+ }
392
+ return null;
393
+ }
394
+ };
395
+ /**
396
+ * Get the raw DOMChangesData for all variants of an experiment (includes URL filters and metadata)
397
+ * This is needed for URL filtering logic
398
+ */
399
+ VariantExtractor.prototype.getAllVariantsData = function (experimentName) {
400
+ var variantsData = new Map();
401
+ try {
402
+ var contextData = this.context.data();
403
+ if (!(contextData === null || contextData === void 0 ? void 0 : contextData.experiments)) {
404
+ return variantsData;
405
+ }
406
+ var experiment = contextData.experiments.find(function (exp) { return exp.name === experimentName; });
407
+ if (!(experiment === null || experiment === void 0 ? void 0 : experiment.variants)) {
408
+ return variantsData;
409
+ }
410
+ for (var i = 0; i < experiment.variants.length; i++) {
411
+ var variant = experiment.variants[i];
412
+ if (!variant)
413
+ continue;
414
+ var changesData = null;
415
+ if (this.dataSource === 'variable') {
416
+ // First check variant.variables
417
+ if (variant.variables && variant.variables[this.dataFieldName]) {
418
+ changesData = variant.variables[this.dataFieldName];
419
+ }
420
+ // Then check variant.config
421
+ else if (variant.config) {
422
+ try {
423
+ var config = typeof variant.config === 'string' ? JSON.parse(variant.config) : variant.config;
424
+ if (config && config[this.dataFieldName]) {
425
+ changesData = config[this.dataFieldName];
426
+ }
427
+ }
428
+ catch (e) {
429
+ (0, debug_1.logDebug)('[VariantExtractor] Failed to parse variant.config:', e);
430
+ }
431
+ }
432
+ }
433
+ if (changesData) {
434
+ // Parse JSON string if needed
435
+ if (typeof changesData === 'string') {
436
+ try {
437
+ changesData = JSON.parse(changesData);
438
+ }
439
+ catch (error) {
440
+ (0, debug_1.logDebug)('[ABsmartly] Failed to parse DOM changes JSON:', error);
441
+ continue;
442
+ }
443
+ }
444
+ // Store the raw data (could be array or wrapped format)
445
+ variantsData.set(i, changesData);
446
+ }
447
+ }
448
+ }
449
+ catch (error) {
450
+ (0, debug_1.logDebug)('[ABsmartly] Error getting all variants data:', error);
451
+ }
452
+ return variantsData;
453
+ };
454
+ /**
455
+ * Check if any variant of an experiment has changes that match the current URL
456
+ * This is critical for SRM prevention - if ANY variant matches URL, ALL variants must be tracked
457
+ */
458
+ VariantExtractor.prototype.anyVariantMatchesURL = function (experimentName, url) {
459
+ var e_3, _a;
460
+ if (url === void 0) { url = window.location.href; }
461
+ var variantsData = this.getAllVariantsData(experimentName);
462
+ var hasAnyURLFilter = false;
463
+ try {
464
+ for (var variantsData_1 = __values(variantsData), variantsData_1_1 = variantsData_1.next(); !variantsData_1_1.done; variantsData_1_1 = variantsData_1.next()) {
465
+ var _b = __read(variantsData_1_1.value, 2), data = _b[1];
466
+ // Check if this variant has URL filter in wrapped format
467
+ if (data && typeof data === 'object' && !Array.isArray(data) && 'urlFilter' in data) {
468
+ var config = data;
469
+ if (config.urlFilter) {
470
+ hasAnyURLFilter = true;
471
+ if (URLMatcher_1.URLMatcher.matches(config.urlFilter, url)) {
472
+ return true; // At least one variant matches this URL
473
+ }
474
+ }
475
+ }
476
+ // Note: Legacy array format or wrapped format without urlFilter doesn't affect matching
477
+ // We only check URL filters that exist
478
+ }
479
+ }
480
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
481
+ finally {
482
+ try {
483
+ if (variantsData_1_1 && !variantsData_1_1.done && (_a = variantsData_1.return)) _a.call(variantsData_1);
484
+ }
485
+ finally { if (e_3) throw e_3.error; }
486
+ }
487
+ // If NO variant has a URL filter, match all URLs (legacy behavior)
488
+ // If at least one variant has a URL filter, we checked them all above
489
+ return !hasAnyURLFilter;
490
+ };
491
+ /**
492
+ * Extract __inject_html from all variants for all experiments
493
+ * Only extracts from variant.variables (not from config)
494
+ */
495
+ VariantExtractor.prototype.extractAllInjectHTML = function () {
496
+ var e_4, _a;
497
+ var allInjectHTML = new Map();
498
+ try {
499
+ var contextData = this.context.data();
500
+ if (this.debug) {
501
+ (0, debug_1.logDebug)('[ABsmartly VariantExtractor] Extracting __inject_html from context');
502
+ }
503
+ if (contextData === null || contextData === void 0 ? void 0 : contextData.experiments) {
504
+ try {
505
+ for (var _b = __values(contextData.experiments), _c = _b.next(); !_c.done; _c = _b.next()) {
506
+ var experiment = _c.value;
507
+ var variantInjections = this.extractInjectHTMLForExperiment(experiment);
508
+ if (variantInjections.size > 0) {
509
+ allInjectHTML.set(experiment.name, variantInjections);
510
+ if (this.debug) {
511
+ (0, debug_1.logDebug)("[ABsmartly VariantExtractor] Experiment '".concat(experiment.name, "' has HTML injections:"), {
512
+ variantsWithInjections: Array.from(variantInjections.keys()),
513
+ });
514
+ }
515
+ }
516
+ }
517
+ }
518
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
519
+ finally {
520
+ try {
521
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
522
+ }
523
+ finally { if (e_4) throw e_4.error; }
524
+ }
525
+ }
526
+ }
527
+ catch (error) {
528
+ (0, debug_1.logDebug)('[ABsmartly] Error extracting __inject_html:', error);
529
+ }
530
+ return allInjectHTML;
531
+ };
532
+ /**
533
+ * Extract __inject_html for a single experiment
534
+ * Only from variant.variables (not from config)
535
+ */
536
+ VariantExtractor.prototype.extractInjectHTMLForExperiment = function (experiment) {
537
+ var variantInjections = new Map();
538
+ if (!experiment.variants) {
539
+ return variantInjections;
540
+ }
541
+ for (var i = 0; i < experiment.variants.length; i++) {
542
+ var variant = experiment.variants[i];
543
+ if (!variant)
544
+ continue;
545
+ if (variant.variables && variant.variables.__inject_html) {
546
+ var injectionData = variant.variables.__inject_html;
547
+ if (typeof injectionData === 'object' && !Array.isArray(injectionData)) {
548
+ // Extract urlFilter if present
549
+ var _a = injectionData, urlFilter = _a.urlFilter, rawData = __rest(_a, ["urlFilter"]);
550
+ // Create InjectionDataWithFilter
551
+ var dataWithFilter = {
552
+ data: rawData,
553
+ urlFilter: urlFilter || undefined,
554
+ };
555
+ variantInjections.set(i, dataWithFilter);
556
+ if (this.debug) {
557
+ (0, debug_1.logDebug)("[VariantExtractor] Found __inject_html in ".concat(experiment.name, " variant ").concat(i, ":"), {
558
+ keys: Object.keys(rawData),
559
+ hasUrlFilter: !!urlFilter,
560
+ });
561
+ }
562
+ }
563
+ else if (this.debug) {
564
+ (0, debug_1.logDebug)("[VariantExtractor] Invalid __inject_html format in ".concat(experiment.name, " variant ").concat(i), injectionData);
565
+ }
566
+ }
567
+ }
568
+ return variantInjections;
569
+ };
570
+ return VariantExtractor;
571
+ }());
572
+ exports.VariantExtractor = VariantExtractor;
573
+ //# sourceMappingURL=VariantExtractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VariantExtractor.js","sourceRoot":"","sources":["../../src/parsers/VariantExtractor.ts"],"names":[],"mappings":"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"}