@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.
- package/README.md +1101 -0
- package/dist/absmartly-cookie.min.js +1 -0
- package/dist/absmartly-dom-changes-core.min.js +1 -0
- package/dist/absmartly-dom-changes-lite.min.js +1 -0
- package/dist/absmartly-overrides-full.min.js +1 -0
- package/dist/absmartly-overrides-lite.min.js +1 -0
- package/dist/absmartly-sdk-plugins.min.js +1 -0
- package/dist/absmartly-vitals.min.js +1 -0
- package/es/cookies/CookiePlugin.js +410 -0
- package/es/cookies/CookiePlugin.js.map +1 -0
- package/es/cookies/index.js +2 -0
- package/es/cookies/index.js.map +1 -0
- package/es/core/DOMChangesPluginLite.js +1124 -0
- package/es/core/DOMChangesPluginLite.js.map +1 -0
- package/es/core/DOMManipulatorLite.js +410 -0
- package/es/core/DOMManipulatorLite.js.map +1 -0
- package/es/core/ExposureTracker.js +501 -0
- package/es/core/ExposureTracker.js.map +1 -0
- package/es/core/HTMLInjector.js +333 -0
- package/es/core/HTMLInjector.js.map +1 -0
- package/es/core/PendingChangeManager.js +440 -0
- package/es/core/PendingChangeManager.js.map +1 -0
- package/es/core/StyleSheetManager.js +78 -0
- package/es/core/StyleSheetManager.js.map +1 -0
- package/es/entries/cookie-only.js +10 -0
- package/es/entries/cookie-only.js.map +1 -0
- package/es/entries/dom-only.js +13 -0
- package/es/entries/dom-only.js.map +1 -0
- package/es/entries/dom-with-overrides-full.js +19 -0
- package/es/entries/dom-with-overrides-full.js.map +1 -0
- package/es/entries/dom-with-overrides-lite.js +15 -0
- package/es/entries/dom-with-overrides-lite.js.map +1 -0
- package/es/entries/overrides-full-only.js +15 -0
- package/es/entries/overrides-full-only.js.map +1 -0
- package/es/entries/overrides-lite-only.js +12 -0
- package/es/entries/overrides-lite-only.js.map +1 -0
- package/es/entries/vitals-only.js +10 -0
- package/es/entries/vitals-only.js.map +1 -0
- package/es/index.js +17 -0
- package/es/index.js.map +1 -0
- package/es/overrides/BrowserCookieAdapter.js +76 -0
- package/es/overrides/BrowserCookieAdapter.js.map +1 -0
- package/es/overrides/OverridesPlugin.js +903 -0
- package/es/overrides/OverridesPlugin.js.map +1 -0
- package/es/overrides/OverridesPluginFull.js +32 -0
- package/es/overrides/OverridesPluginFull.js.map +1 -0
- package/es/overrides/OverridesPluginLite.js +352 -0
- package/es/overrides/OverridesPluginLite.js.map +1 -0
- package/es/overrides/index.js +4 -0
- package/es/overrides/index.js.map +1 -0
- package/es/overrides/types.js +2 -0
- package/es/overrides/types.js.map +1 -0
- package/es/parsers/VariantExtractor.js +570 -0
- package/es/parsers/VariantExtractor.js.map +1 -0
- package/es/types/index.js +2 -0
- package/es/types/index.js.map +1 -0
- package/es/utils/URLMatcher.js +114 -0
- package/es/utils/URLMatcher.js.map +1 -0
- package/es/utils/debug.js +184 -0
- package/es/utils/debug.js.map +1 -0
- package/es/vitals/WebVitalsPlugin.js +379 -0
- package/es/vitals/WebVitalsPlugin.js.map +1 -0
- package/es/vitals/index.js +2 -0
- package/es/vitals/index.js.map +1 -0
- package/lib/cookies/CookiePlugin.d.ts +55 -0
- package/lib/cookies/CookiePlugin.js +413 -0
- package/lib/cookies/CookiePlugin.js.map +1 -0
- package/lib/cookies/index.d.ts +2 -0
- package/lib/cookies/index.js +6 -0
- package/lib/cookies/index.js.map +1 -0
- package/lib/core/DOMChangesPluginLite.d.ts +89 -0
- package/lib/core/DOMChangesPluginLite.js +1127 -0
- package/lib/core/DOMChangesPluginLite.js.map +1 -0
- package/lib/core/DOMManipulatorLite.d.ts +21 -0
- package/lib/core/DOMManipulatorLite.js +413 -0
- package/lib/core/DOMManipulatorLite.js.map +1 -0
- package/lib/core/ExposureTracker.d.ts +81 -0
- package/lib/core/ExposureTracker.js +504 -0
- package/lib/core/ExposureTracker.js.map +1 -0
- package/lib/core/HTMLInjector.d.ts +19 -0
- package/lib/core/HTMLInjector.js +336 -0
- package/lib/core/HTMLInjector.js.map +1 -0
- package/lib/core/PendingChangeManager.d.ts +31 -0
- package/lib/core/PendingChangeManager.js +443 -0
- package/lib/core/PendingChangeManager.js.map +1 -0
- package/lib/core/StyleSheetManager.d.ts +16 -0
- package/lib/core/StyleSheetManager.js +81 -0
- package/lib/core/StyleSheetManager.js.map +1 -0
- package/lib/entries/cookie-only.d.ts +8 -0
- package/lib/entries/cookie-only.js +12 -0
- package/lib/entries/cookie-only.js.map +1 -0
- package/lib/entries/dom-only.d.ts +9 -0
- package/lib/entries/dom-only.js +29 -0
- package/lib/entries/dom-only.js.map +1 -0
- package/lib/entries/dom-with-overrides-full.d.ts +15 -0
- package/lib/entries/dom-with-overrides-full.js +39 -0
- package/lib/entries/dom-with-overrides-full.js.map +1 -0
- package/lib/entries/dom-with-overrides-lite.d.ts +11 -0
- package/lib/entries/dom-with-overrides-lite.js +32 -0
- package/lib/entries/dom-with-overrides-lite.js.map +1 -0
- package/lib/entries/overrides-full-only.d.ts +11 -0
- package/lib/entries/overrides-full-only.js +33 -0
- package/lib/entries/overrides-full-only.js.map +1 -0
- package/lib/entries/overrides-lite-only.d.ts +8 -0
- package/lib/entries/overrides-lite-only.js +28 -0
- package/lib/entries/overrides-lite-only.js.map +1 -0
- package/lib/entries/vitals-only.d.ts +8 -0
- package/lib/entries/vitals-only.js +12 -0
- package/lib/entries/vitals-only.js.map +1 -0
- package/lib/index.d.ts +13 -0
- package/lib/index.js +34 -0
- package/lib/index.js.map +1 -0
- package/lib/overrides/BrowserCookieAdapter.d.ts +6 -0
- package/lib/overrides/BrowserCookieAdapter.js +79 -0
- package/lib/overrides/BrowserCookieAdapter.js.map +1 -0
- package/lib/overrides/OverridesPlugin.d.ts +33 -0
- package/lib/overrides/OverridesPlugin.js +906 -0
- package/lib/overrides/OverridesPlugin.js.map +1 -0
- package/lib/overrides/OverridesPluginFull.d.ts +9 -0
- package/lib/overrides/OverridesPluginFull.js +35 -0
- package/lib/overrides/OverridesPluginFull.js.map +1 -0
- package/lib/overrides/OverridesPluginLite.d.ts +27 -0
- package/lib/overrides/OverridesPluginLite.js +355 -0
- package/lib/overrides/OverridesPluginLite.js.map +1 -0
- package/lib/overrides/index.d.ts +3 -0
- package/lib/overrides/index.js +23 -0
- package/lib/overrides/index.js.map +1 -0
- package/lib/overrides/types.d.ts +43 -0
- package/lib/overrides/types.js +3 -0
- package/lib/overrides/types.js.map +1 -0
- package/lib/parsers/VariantExtractor.d.ts +49 -0
- package/lib/parsers/VariantExtractor.js +573 -0
- package/lib/parsers/VariantExtractor.js.map +1 -0
- package/lib/types/index.d.ts +177 -0
- package/lib/types/index.js +3 -0
- package/lib/types/index.js.map +1 -0
- package/lib/utils/URLMatcher.d.ts +20 -0
- package/lib/utils/URLMatcher.js +117 -0
- package/lib/utils/URLMatcher.js.map +1 -0
- package/lib/utils/debug.d.ts +41 -0
- package/lib/utils/debug.js +195 -0
- package/lib/utils/debug.js.map +1 -0
- package/lib/vitals/WebVitalsPlugin.d.ts +37 -0
- package/lib/vitals/WebVitalsPlugin.js +382 -0
- package/lib/vitals/WebVitalsPlugin.js.map +1 -0
- package/lib/vitals/index.d.ts +2 -0
- package/lib/vitals/index.js +6 -0
- package/lib/vitals/index.js.map +1 -0
- package/package.json +94 -0
- package/types/cookies/CookiePlugin.d.ts +55 -0
- package/types/cookies/index.d.ts +2 -0
- package/types/core/DOMChangesPluginLite.d.ts +89 -0
- package/types/core/DOMManipulatorLite.d.ts +21 -0
- package/types/core/ExposureTracker.d.ts +81 -0
- package/types/core/HTMLInjector.d.ts +19 -0
- package/types/core/PendingChangeManager.d.ts +31 -0
- package/types/core/StyleSheetManager.d.ts +16 -0
- package/types/entries/cookie-only.d.ts +8 -0
- package/types/entries/dom-only.d.ts +9 -0
- package/types/entries/dom-with-overrides-full.d.ts +15 -0
- package/types/entries/dom-with-overrides-lite.d.ts +11 -0
- package/types/entries/overrides-full-only.d.ts +11 -0
- package/types/entries/overrides-lite-only.d.ts +8 -0
- package/types/entries/vitals-only.d.ts +8 -0
- package/types/index.d.ts +13 -0
- package/types/overrides/BrowserCookieAdapter.d.ts +6 -0
- package/types/overrides/OverridesPlugin.d.ts +33 -0
- package/types/overrides/OverridesPluginFull.d.ts +9 -0
- package/types/overrides/OverridesPluginLite.d.ts +27 -0
- package/types/overrides/index.d.ts +3 -0
- package/types/overrides/types.d.ts +43 -0
- package/types/parsers/VariantExtractor.d.ts +49 -0
- package/types/types/index.d.ts +177 -0
- package/types/utils/URLMatcher.d.ts +20 -0
- package/types/utils/debug.d.ts +41 -0
- package/types/vitals/WebVitalsPlugin.d.ts +37 -0
- 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 @@
|
|
|
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
|
+
}
|