@selwise/widget 0.0.1 → 0.0.3
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/LICENSE +21 -0
- package/README.md +71 -0
- package/dist/npm/cjs/index.js +50 -5
- package/dist/npm/cjs/index.js.map +1 -1
- package/dist/npm/cjs/modules/contract/recommendation-contract.js +1 -1
- package/dist/npm/cjs/modules/contract/search-contract.js +1 -1
- package/dist/npm/cjs/modules/contract/tracking-contract.js +1 -1
- package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/configs.js +164 -0
- package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/configs.js.map +1 -0
- package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/index.js +21 -0
- package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/index.js.map +1 -0
- package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/types.js +3 -0
- package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/types.js.map +1 -0
- package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/validators.js +107 -0
- package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/validators.js.map +1 -0
- package/dist/npm/cjs/modules/contract/vendor/search-contract/configs.js +404 -0
- package/dist/npm/cjs/modules/contract/vendor/search-contract/configs.js.map +1 -0
- package/dist/npm/cjs/modules/contract/vendor/search-contract/index.js +21 -0
- package/dist/npm/cjs/modules/contract/vendor/search-contract/index.js.map +1 -0
- package/dist/npm/cjs/modules/contract/vendor/search-contract/types.js +8 -0
- package/dist/npm/cjs/modules/contract/vendor/search-contract/types.js.map +1 -0
- package/dist/npm/cjs/modules/contract/vendor/search-contract/validators.js +126 -0
- package/dist/npm/cjs/modules/contract/vendor/search-contract/validators.js.map +1 -0
- package/dist/npm/cjs/modules/contract/vendor/tracking-contract/configs.js +133 -0
- package/dist/npm/cjs/modules/contract/vendor/tracking-contract/configs.js.map +1 -0
- package/dist/npm/cjs/modules/contract/vendor/tracking-contract/index.js +21 -0
- package/dist/npm/cjs/modules/contract/vendor/tracking-contract/index.js.map +1 -0
- package/dist/npm/cjs/modules/contract/vendor/tracking-contract/types.js +3 -0
- package/dist/npm/cjs/modules/contract/vendor/tracking-contract/types.js.map +1 -0
- package/dist/npm/cjs/modules/contract/vendor/tracking-contract/validators.js +154 -0
- package/dist/npm/cjs/modules/contract/vendor/tracking-contract/validators.js.map +1 -0
- package/dist/npm/cjs/modules/contract/vendor/widget-contract/configs.js +1481 -0
- package/dist/npm/cjs/modules/contract/vendor/widget-contract/configs.js.map +1 -0
- package/dist/npm/cjs/modules/contract/vendor/widget-contract/index.js +22 -0
- package/dist/npm/cjs/modules/contract/vendor/widget-contract/index.js.map +1 -0
- package/dist/npm/cjs/modules/contract/vendor/widget-contract/layout.js +21 -0
- package/dist/npm/cjs/modules/contract/vendor/widget-contract/layout.js.map +1 -0
- package/dist/npm/cjs/modules/contract/vendor/widget-contract/types.js +8 -0
- package/dist/npm/cjs/modules/contract/vendor/widget-contract/types.js.map +1 -0
- package/dist/npm/cjs/modules/contract/vendor/widget-contract/validators.js +139 -0
- package/dist/npm/cjs/modules/contract/vendor/widget-contract/validators.js.map +1 -0
- package/dist/npm/cjs/modules/contract/widget-contract.js +1 -1
- package/dist/npm/cjs/selwise.js +15 -9
- package/dist/npm/cjs/selwise.js.map +1 -1
- package/dist/npm/esm/index.d.ts +5 -2
- package/dist/npm/esm/index.js +15 -2
- package/dist/npm/esm/index.js.map +1 -1
- package/dist/npm/esm/modules/contract/recommendation-contract.d.ts +2 -2
- package/dist/npm/esm/modules/contract/recommendation-contract.js +1 -1
- package/dist/npm/esm/modules/contract/search-contract.d.ts +1 -1
- package/dist/npm/esm/modules/contract/search-contract.js +1 -1
- package/dist/npm/esm/modules/contract/tracking-contract.d.ts +1 -1
- package/dist/npm/esm/modules/contract/tracking-contract.js +1 -1
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/configs.d.ts +8 -0
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/configs.js +160 -0
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/configs.js.map +1 -0
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/index.d.ts +3 -0
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/index.js +5 -0
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/index.js.map +1 -0
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/types.d.ts +56 -0
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/types.js +2 -0
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/types.js.map +1 -0
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/validators.d.ts +3 -0
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/validators.js +103 -0
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/validators.js.map +1 -0
- package/dist/npm/esm/modules/contract/vendor/search-contract/configs.d.ts +35 -0
- package/dist/npm/esm/modules/contract/vendor/search-contract/configs.js +396 -0
- package/dist/npm/esm/modules/contract/vendor/search-contract/configs.js.map +1 -0
- package/dist/npm/esm/modules/contract/vendor/search-contract/index.d.ts +3 -0
- package/dist/npm/esm/modules/contract/vendor/search-contract/index.js +5 -0
- package/dist/npm/esm/modules/contract/vendor/search-contract/index.js.map +1 -0
- package/dist/npm/esm/modules/contract/vendor/search-contract/types.d.ts +119 -0
- package/dist/npm/esm/modules/contract/vendor/search-contract/types.js +7 -0
- package/dist/npm/esm/modules/contract/vendor/search-contract/types.js.map +1 -0
- package/dist/npm/esm/modules/contract/vendor/search-contract/validators.d.ts +22 -0
- package/dist/npm/esm/modules/contract/vendor/search-contract/validators.js +118 -0
- package/dist/npm/esm/modules/contract/vendor/search-contract/validators.js.map +1 -0
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/configs.d.ts +7 -0
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/configs.js +130 -0
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/configs.js.map +1 -0
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/index.d.ts +3 -0
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/index.js +5 -0
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/index.js.map +1 -0
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/types.d.ts +37 -0
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/types.js +2 -0
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/types.js.map +1 -0
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/validators.d.ts +6 -0
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/validators.js +147 -0
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/validators.js.map +1 -0
- package/dist/npm/esm/modules/contract/vendor/widget-contract/configs.d.ts +22 -0
- package/dist/npm/esm/modules/contract/vendor/widget-contract/configs.js +1472 -0
- package/dist/npm/esm/modules/contract/vendor/widget-contract/configs.js.map +1 -0
- package/dist/npm/esm/modules/contract/vendor/widget-contract/index.d.ts +4 -0
- package/dist/npm/esm/modules/contract/vendor/widget-contract/index.js +6 -0
- package/dist/npm/esm/modules/contract/vendor/widget-contract/index.js.map +1 -0
- package/dist/npm/esm/modules/contract/vendor/widget-contract/layout.d.ts +14 -0
- package/dist/npm/esm/modules/contract/vendor/widget-contract/layout.js +18 -0
- package/dist/npm/esm/modules/contract/vendor/widget-contract/layout.js.map +1 -0
- package/dist/npm/esm/modules/contract/vendor/widget-contract/types.d.ts +128 -0
- package/dist/npm/esm/modules/contract/vendor/widget-contract/types.js +7 -0
- package/dist/npm/esm/modules/contract/vendor/widget-contract/types.js.map +1 -0
- package/dist/npm/esm/modules/contract/vendor/widget-contract/validators.d.ts +11 -0
- package/dist/npm/esm/modules/contract/vendor/widget-contract/validators.js +132 -0
- package/dist/npm/esm/modules/contract/vendor/widget-contract/validators.js.map +1 -0
- package/dist/npm/esm/modules/contract/widget-contract.d.ts +1 -1
- package/dist/npm/esm/modules/contract/widget-contract.js +1 -1
- package/dist/npm/esm/selwise.d.ts +28 -2
- package/dist/npm/esm/selwise.js +15 -9
- package/dist/npm/esm/selwise.js.map +1 -1
- package/package.json +25 -9
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
// AUTO-GENERATED FROM packages/search-contract/src/validators.ts. DO NOT EDIT DIRECTLY.
|
|
2
|
+
import { CATEGORY_DISPLAY_MODES, SEARCH_FLOATING_POSITIONS, SEARCH_POSITIONS, SEARCH_STYLE_CONFIGS, SUGGESTION_STYLE_CONFIGS, getDefaultSearchStyles, getDefaultSuggestionStyles, } from './configs.js';
|
|
3
|
+
const RESULT_LAYOUTS = ['list', 'grid', 'compact', 'large'];
|
|
4
|
+
const IMAGE_SIZES = new Set(['small', 'medium', 'large']);
|
|
5
|
+
const IMAGE_POSITIONS = new Set(['left', 'top', 'right']);
|
|
6
|
+
const ANIMATION_TYPES = new Set(['none', 'fade', 'slide', 'scale']);
|
|
7
|
+
const SEARCH_POSITION_SET = new Set(SEARCH_POSITIONS.map((position) => position.value));
|
|
8
|
+
const SEARCH_FLOATING_POSITION_SET = new Set(SEARCH_FLOATING_POSITIONS.map((position) => position.value));
|
|
9
|
+
const CATEGORY_DISPLAY_MODE_SET = new Set(CATEGORY_DISPLAY_MODES.map((mode) => mode.value));
|
|
10
|
+
function isRecord(value) {
|
|
11
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
12
|
+
}
|
|
13
|
+
export function getAllowedSearchStyleKeys() {
|
|
14
|
+
return SEARCH_STYLE_CONFIGS.flatMap((section) => section.fields.map((field) => field.key));
|
|
15
|
+
}
|
|
16
|
+
export function getAllowedSuggestionStyleKeys() {
|
|
17
|
+
return SUGGESTION_STYLE_CONFIGS.flatMap((section) => section.fields.map((field) => field.key));
|
|
18
|
+
}
|
|
19
|
+
export function validateSearchStyles(styles, suggestionStyles) {
|
|
20
|
+
if (styles !== undefined) {
|
|
21
|
+
if (!isRecord(styles)) {
|
|
22
|
+
return { valid: false, message: 'invalid search style payload' };
|
|
23
|
+
}
|
|
24
|
+
const allowedStyleKeys = new Set(getAllowedSearchStyleKeys());
|
|
25
|
+
const invalidStyleKeys = Object.keys(styles).filter((key) => !allowedStyleKeys.has(key));
|
|
26
|
+
if (invalidStyleKeys.length > 0) {
|
|
27
|
+
return {
|
|
28
|
+
valid: false,
|
|
29
|
+
message: `invalid style key: ${invalidStyleKeys.join(', ')}`,
|
|
30
|
+
invalidKeys: invalidStyleKeys,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (suggestionStyles !== undefined) {
|
|
35
|
+
if (!isRecord(suggestionStyles)) {
|
|
36
|
+
return { valid: false, message: 'invalid suggestion style payload' };
|
|
37
|
+
}
|
|
38
|
+
const allowedSuggestionStyleKeys = new Set(getAllowedSuggestionStyleKeys());
|
|
39
|
+
const invalidSuggestionStyleKeys = Object.keys(suggestionStyles).filter((key) => !allowedSuggestionStyleKeys.has(key));
|
|
40
|
+
if (invalidSuggestionStyleKeys.length > 0) {
|
|
41
|
+
return {
|
|
42
|
+
valid: false,
|
|
43
|
+
message: `invalid style key: ${invalidSuggestionStyleKeys.join(', ')}`,
|
|
44
|
+
invalidKeys: invalidSuggestionStyleKeys,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return { valid: true };
|
|
49
|
+
}
|
|
50
|
+
export function sanitizeSearchStyles(styles) {
|
|
51
|
+
const defaults = getDefaultSearchStyles();
|
|
52
|
+
if (!isRecord(styles)) {
|
|
53
|
+
return defaults;
|
|
54
|
+
}
|
|
55
|
+
const allowed = new Set(getAllowedSearchStyleKeys());
|
|
56
|
+
const sanitized = { ...defaults };
|
|
57
|
+
for (const [styleKey, styleValue] of Object.entries(styles)) {
|
|
58
|
+
if (allowed.has(styleKey)) {
|
|
59
|
+
sanitized[styleKey] = styleValue;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return sanitized;
|
|
63
|
+
}
|
|
64
|
+
export function sanitizeSuggestionStyles(styles) {
|
|
65
|
+
const defaults = getDefaultSuggestionStyles();
|
|
66
|
+
if (!isRecord(styles)) {
|
|
67
|
+
return defaults;
|
|
68
|
+
}
|
|
69
|
+
const allowed = new Set(getAllowedSuggestionStyleKeys());
|
|
70
|
+
const sanitized = { ...defaults };
|
|
71
|
+
for (const [styleKey, styleValue] of Object.entries(styles)) {
|
|
72
|
+
if (allowed.has(styleKey)) {
|
|
73
|
+
sanitized[styleKey] = styleValue;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return sanitized;
|
|
77
|
+
}
|
|
78
|
+
export function validateSearchConfig(config) {
|
|
79
|
+
if (config.position !== undefined) {
|
|
80
|
+
if (typeof config.position !== 'string' || !SEARCH_POSITION_SET.has(config.position)) {
|
|
81
|
+
return { valid: false, message: 'invalid search position' };
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (config.floatingPosition !== undefined) {
|
|
85
|
+
if (typeof config.floatingPosition !== 'string' ||
|
|
86
|
+
!SEARCH_FLOATING_POSITION_SET.has(config.floatingPosition)) {
|
|
87
|
+
return { valid: false, message: 'invalid floating position' };
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (config.categoryDisplayMode !== undefined) {
|
|
91
|
+
if (typeof config.categoryDisplayMode !== 'string' ||
|
|
92
|
+
!CATEGORY_DISPLAY_MODE_SET.has(config.categoryDisplayMode)) {
|
|
93
|
+
return { valid: false, message: 'invalid category display mode' };
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (config.resultLayout !== undefined) {
|
|
97
|
+
if (typeof config.resultLayout !== 'string' || !RESULT_LAYOUTS.includes(config.resultLayout)) {
|
|
98
|
+
return { valid: false, message: 'invalid result layout' };
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (config.imageSize !== undefined) {
|
|
102
|
+
if (typeof config.imageSize !== 'string' || !IMAGE_SIZES.has(config.imageSize)) {
|
|
103
|
+
return { valid: false, message: 'invalid image size' };
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (config.imagePosition !== undefined) {
|
|
107
|
+
if (typeof config.imagePosition !== 'string' || !IMAGE_POSITIONS.has(config.imagePosition)) {
|
|
108
|
+
return { valid: false, message: 'invalid image position' };
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (config.animationType !== undefined) {
|
|
112
|
+
if (typeof config.animationType !== 'string' || !ANIMATION_TYPES.has(config.animationType)) {
|
|
113
|
+
return { valid: false, message: 'invalid animation type' };
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return validateSearchStyles(config.stylesJson, config.suggestionStylesJson);
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../../../../../src/modules/contract/vendor/search-contract/validators.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CanonicalEventName, CookieConsentDefaults, EventCategory, TrackingModuleConfig, TrackingModuleKey } from './types';
|
|
2
|
+
export declare const CANONICAL_EVENTS: CanonicalEventName[];
|
|
3
|
+
export declare const EVENT_CATEGORIES: Record<CanonicalEventName, EventCategory>;
|
|
4
|
+
export declare const DEFAULT_PAGE_TYPE_PATTERNS: Record<string, string>;
|
|
5
|
+
export declare const TRACKING_MODULES: Record<TrackingModuleKey, TrackingModuleConfig>;
|
|
6
|
+
export declare const COOKIE_CONSENT_DEFAULTS: CookieConsentDefaults;
|
|
7
|
+
export declare const FREQUENCY_CAP_INTERVALS: readonly ["", "15m", "30m", "1h", "2h", "6h", "12h", "1d", "1w"];
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
export const CANONICAL_EVENTS = [
|
|
2
|
+
'page_view',
|
|
3
|
+
'virtual_page_view',
|
|
4
|
+
'widget_view',
|
|
5
|
+
'category_view',
|
|
6
|
+
'product_view',
|
|
7
|
+
'product_click',
|
|
8
|
+
'product_impression',
|
|
9
|
+
'product_dwell_time',
|
|
10
|
+
'add_to_cart',
|
|
11
|
+
'remove_from_cart',
|
|
12
|
+
'update_cart',
|
|
13
|
+
'cart_abandon',
|
|
14
|
+
'cart_restore',
|
|
15
|
+
'checkout_begin',
|
|
16
|
+
'checkout_progress',
|
|
17
|
+
'checkout_option',
|
|
18
|
+
'purchase',
|
|
19
|
+
'user_signup',
|
|
20
|
+
'user_login',
|
|
21
|
+
'user_logout',
|
|
22
|
+
'user_update',
|
|
23
|
+
'search_instant_open',
|
|
24
|
+
'search_query',
|
|
25
|
+
'search_filter',
|
|
26
|
+
'search_sort',
|
|
27
|
+
'search_page',
|
|
28
|
+
'search_results',
|
|
29
|
+
'search_zero_results',
|
|
30
|
+
'search_close',
|
|
31
|
+
'impression',
|
|
32
|
+
'click',
|
|
33
|
+
'close',
|
|
34
|
+
'view',
|
|
35
|
+
'hover',
|
|
36
|
+
'scroll',
|
|
37
|
+
'slider_navigate',
|
|
38
|
+
'slider_swipe',
|
|
39
|
+
'widget_impression',
|
|
40
|
+
'script_injected',
|
|
41
|
+
'script_error',
|
|
42
|
+
'identify',
|
|
43
|
+
'category_filter',
|
|
44
|
+
'recent_search_click',
|
|
45
|
+
'popular_search_click',
|
|
46
|
+
'popular_category_click',
|
|
47
|
+
'popular_product_click',
|
|
48
|
+
'wishlist',
|
|
49
|
+
'custom_event',
|
|
50
|
+
];
|
|
51
|
+
export const EVENT_CATEGORIES = {
|
|
52
|
+
page_view: 'page',
|
|
53
|
+
virtual_page_view: 'page',
|
|
54
|
+
widget_view: 'engagement',
|
|
55
|
+
category_view: 'commerce',
|
|
56
|
+
product_view: 'commerce',
|
|
57
|
+
product_click: 'search',
|
|
58
|
+
product_impression: 'commerce',
|
|
59
|
+
product_dwell_time: 'commerce',
|
|
60
|
+
add_to_cart: 'commerce',
|
|
61
|
+
remove_from_cart: 'commerce',
|
|
62
|
+
update_cart: 'commerce',
|
|
63
|
+
cart_abandon: 'commerce',
|
|
64
|
+
cart_restore: 'commerce',
|
|
65
|
+
checkout_begin: 'commerce',
|
|
66
|
+
checkout_progress: 'commerce',
|
|
67
|
+
checkout_option: 'commerce',
|
|
68
|
+
purchase: 'commerce',
|
|
69
|
+
user_signup: 'user',
|
|
70
|
+
user_login: 'user',
|
|
71
|
+
user_logout: 'user',
|
|
72
|
+
user_update: 'user',
|
|
73
|
+
search_instant_open: 'search',
|
|
74
|
+
search_query: 'search',
|
|
75
|
+
search_filter: 'search',
|
|
76
|
+
search_sort: 'search',
|
|
77
|
+
search_page: 'search',
|
|
78
|
+
search_results: 'search',
|
|
79
|
+
search_zero_results: 'search',
|
|
80
|
+
search_close: 'search',
|
|
81
|
+
impression: 'engagement',
|
|
82
|
+
click: 'engagement',
|
|
83
|
+
close: 'engagement',
|
|
84
|
+
view: 'engagement',
|
|
85
|
+
hover: 'engagement',
|
|
86
|
+
scroll: 'engagement',
|
|
87
|
+
slider_navigate: 'recommendation',
|
|
88
|
+
slider_swipe: 'recommendation',
|
|
89
|
+
widget_impression: 'recommendation',
|
|
90
|
+
script_injected: 'system',
|
|
91
|
+
script_error: 'system',
|
|
92
|
+
identify: 'user',
|
|
93
|
+
category_filter: 'search',
|
|
94
|
+
recent_search_click: 'search',
|
|
95
|
+
popular_search_click: 'search',
|
|
96
|
+
popular_category_click: 'search',
|
|
97
|
+
popular_product_click: 'search',
|
|
98
|
+
wishlist: 'commerce',
|
|
99
|
+
custom_event: 'engagement',
|
|
100
|
+
};
|
|
101
|
+
export const DEFAULT_PAGE_TYPE_PATTERNS = {
|
|
102
|
+
home: '^/$|\\/index\\.html?$',
|
|
103
|
+
product: '\\/(products?|p|item)s?\\/[a-z0-9-]+',
|
|
104
|
+
category: '\\/(categories?|c|collection)s?\\/[a-z0-9-]+',
|
|
105
|
+
search: '\\/(search|find)',
|
|
106
|
+
checkout: '\\/(checkout|payment|order)',
|
|
107
|
+
cart: '\\/(cart|basket)',
|
|
108
|
+
account: '\\/(account|profile|my-account)',
|
|
109
|
+
};
|
|
110
|
+
export const TRACKING_MODULES = {
|
|
111
|
+
page: { enabled: true },
|
|
112
|
+
product: { enabled: true },
|
|
113
|
+
basket: { enabled: true },
|
|
114
|
+
checkout: { enabled: true },
|
|
115
|
+
user: { enabled: false },
|
|
116
|
+
search: { enabled: false },
|
|
117
|
+
};
|
|
118
|
+
export const COOKIE_CONSENT_DEFAULTS = {
|
|
119
|
+
enabled: false,
|
|
120
|
+
variableName: '__wcmp_consent',
|
|
121
|
+
waitForConsent: false,
|
|
122
|
+
defaultConsent: true,
|
|
123
|
+
granularEnabled: false,
|
|
124
|
+
requiredCategories: ['necessary'],
|
|
125
|
+
timeoutMs: 5000,
|
|
126
|
+
storageKey: 'selwise_consent',
|
|
127
|
+
consentChangeCallback: '',
|
|
128
|
+
};
|
|
129
|
+
export const FREQUENCY_CAP_INTERVALS = ['', '15m', '30m', '1h', '2h', '6h', '12h', '1d', '1w'];
|
|
130
|
+
//# sourceMappingURL=configs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configs.js","sourceRoot":"","sources":["../../../../../../../src/modules/contract/vendor/tracking-contract/configs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/modules/contract/vendor/tracking-contract/index.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export type CanonicalEventName = 'page_view' | 'virtual_page_view' | 'widget_view' | 'category_view' | 'product_view' | 'product_click' | 'product_impression' | 'product_dwell_time' | 'add_to_cart' | 'remove_from_cart' | 'update_cart' | 'cart_abandon' | 'cart_restore' | 'checkout_begin' | 'checkout_progress' | 'checkout_option' | 'purchase' | 'user_signup' | 'user_login' | 'user_logout' | 'user_update' | 'search_instant_open' | 'search_query' | 'search_filter' | 'search_sort' | 'search_page' | 'search_results' | 'search_zero_results' | 'search_close' | 'impression' | 'click' | 'close' | 'view' | 'hover' | 'scroll' | 'slider_navigate' | 'slider_swipe' | 'widget_impression' | 'script_injected' | 'script_error' | 'identify' | 'category_filter' | 'recent_search_click' | 'popular_search_click' | 'popular_category_click' | 'popular_product_click' | 'wishlist' | 'custom_event';
|
|
2
|
+
export type EventCategory = 'page' | 'commerce' | 'search' | 'engagement' | 'recommendation' | 'user' | 'system';
|
|
3
|
+
export type TrackingModuleKey = 'page' | 'product' | 'basket' | 'checkout' | 'user' | 'search';
|
|
4
|
+
export interface TrackingModuleConfig {
|
|
5
|
+
enabled: boolean;
|
|
6
|
+
config?: Record<string, any>;
|
|
7
|
+
}
|
|
8
|
+
export interface CookieConsentDefaults {
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
variableName: string;
|
|
11
|
+
waitForConsent: boolean;
|
|
12
|
+
defaultConsent: boolean;
|
|
13
|
+
granularEnabled: boolean;
|
|
14
|
+
requiredCategories: Array<'necessary' | 'analytics' | 'marketing' | 'preferences'>;
|
|
15
|
+
timeoutMs: number;
|
|
16
|
+
storageKey: string;
|
|
17
|
+
consentChangeCallback: string;
|
|
18
|
+
}
|
|
19
|
+
export interface DataLayerConfigInput {
|
|
20
|
+
enabled?: unknown;
|
|
21
|
+
variableName?: unknown;
|
|
22
|
+
pageDetection?: unknown;
|
|
23
|
+
autoPageTracking?: unknown;
|
|
24
|
+
cartAbandonmentTimeout?: unknown;
|
|
25
|
+
pageTypePatterns?: unknown;
|
|
26
|
+
debugMode?: unknown;
|
|
27
|
+
testMode?: unknown;
|
|
28
|
+
cookieConsent?: unknown;
|
|
29
|
+
trackingModules?: unknown;
|
|
30
|
+
bufferSize?: unknown;
|
|
31
|
+
flushInterval?: unknown;
|
|
32
|
+
}
|
|
33
|
+
export interface TrackingValidationResult {
|
|
34
|
+
valid: boolean;
|
|
35
|
+
message?: string;
|
|
36
|
+
invalidKeys?: string[];
|
|
37
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../src/modules/contract/vendor/tracking-contract/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { DataLayerConfigInput, TrackingValidationResult } from './types';
|
|
2
|
+
export declare function validateCanonicalEvent(eventName: string): boolean;
|
|
3
|
+
export declare function validateFrequencyInterval(interval: string): boolean;
|
|
4
|
+
export declare function validateFrequencyCapPayload(payload: unknown): TrackingValidationResult;
|
|
5
|
+
export declare function validateDataLayerConfig(config: DataLayerConfigInput): TrackingValidationResult;
|
|
6
|
+
export declare function sanitizeDataLayerConfig(config: DataLayerConfigInput): Record<string, any>;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
// AUTO-GENERATED FROM packages/tracking-contract/src/validators.ts. DO NOT EDIT DIRECTLY.
|
|
2
|
+
import { CANONICAL_EVENTS, COOKIE_CONSENT_DEFAULTS, DEFAULT_PAGE_TYPE_PATTERNS, FREQUENCY_CAP_INTERVALS, TRACKING_MODULES, } from './configs.js';
|
|
3
|
+
const CANONICAL_EVENT_SET = new Set(CANONICAL_EVENTS);
|
|
4
|
+
const REQUIRED_CATEGORY_SET = new Set(['necessary', 'analytics', 'marketing', 'preferences']);
|
|
5
|
+
const PAGE_DETECTION_SET = new Set(['auto', 'manual', 'patterns']);
|
|
6
|
+
const FREQUENCY_INTERVAL_SET = new Set(FREQUENCY_CAP_INTERVALS);
|
|
7
|
+
const FREQUENCY_CAP_KEY_SET = new Set(['perSession', 'perDay', 'perWeek', 'total', 'minInterval']);
|
|
8
|
+
function isRecord(value) {
|
|
9
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
10
|
+
}
|
|
11
|
+
export function validateCanonicalEvent(eventName) {
|
|
12
|
+
return CANONICAL_EVENT_SET.has(eventName);
|
|
13
|
+
}
|
|
14
|
+
export function validateFrequencyInterval(interval) {
|
|
15
|
+
return FREQUENCY_INTERVAL_SET.has(interval);
|
|
16
|
+
}
|
|
17
|
+
export function validateFrequencyCapPayload(payload) {
|
|
18
|
+
if (payload === undefined || payload === null) {
|
|
19
|
+
return { valid: true };
|
|
20
|
+
}
|
|
21
|
+
if (!isRecord(payload)) {
|
|
22
|
+
return { valid: false, message: 'invalid frequency cap payload' };
|
|
23
|
+
}
|
|
24
|
+
const invalidKeys = Object.keys(payload).filter((key) => !FREQUENCY_CAP_KEY_SET.has(key));
|
|
25
|
+
if (invalidKeys.length > 0) {
|
|
26
|
+
return {
|
|
27
|
+
valid: false,
|
|
28
|
+
message: `invalid frequency cap key: ${invalidKeys.join(', ')}`,
|
|
29
|
+
invalidKeys,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
for (const key of ['perSession', 'perDay', 'perWeek', 'total']) {
|
|
33
|
+
if (payload[key] !== undefined) {
|
|
34
|
+
if (!Number.isInteger(payload[key]) || payload[key] < 0) {
|
|
35
|
+
return { valid: false, message: `invalid frequency cap value: ${key}` };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (payload.minInterval !== undefined) {
|
|
40
|
+
if (typeof payload.minInterval !== 'string' || !validateFrequencyInterval(payload.minInterval)) {
|
|
41
|
+
return { valid: false, message: 'invalid frequency cap minInterval' };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return { valid: true };
|
|
45
|
+
}
|
|
46
|
+
function validateTrackingModules(modules) {
|
|
47
|
+
if (modules === undefined) {
|
|
48
|
+
return { valid: true };
|
|
49
|
+
}
|
|
50
|
+
if (!isRecord(modules)) {
|
|
51
|
+
return { valid: false, message: 'invalid tracking modules payload' };
|
|
52
|
+
}
|
|
53
|
+
const allowedKeys = new Set(Object.keys(TRACKING_MODULES));
|
|
54
|
+
const invalidKeys = Object.keys(modules).filter((key) => !allowedKeys.has(key));
|
|
55
|
+
if (invalidKeys.length > 0) {
|
|
56
|
+
return {
|
|
57
|
+
valid: false,
|
|
58
|
+
message: `invalid tracking module key: ${invalidKeys.join(', ')}`,
|
|
59
|
+
invalidKeys,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
for (const [key, value] of Object.entries(modules)) {
|
|
63
|
+
if (!isRecord(value)) {
|
|
64
|
+
return { valid: false, message: `invalid tracking module payload: ${key}` };
|
|
65
|
+
}
|
|
66
|
+
if ('enabled' in value && typeof value.enabled !== 'boolean') {
|
|
67
|
+
return { valid: false, message: `invalid tracking module enabled flag: ${key}` };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return { valid: true };
|
|
71
|
+
}
|
|
72
|
+
export function validateDataLayerConfig(config) {
|
|
73
|
+
if (!isRecord(config)) {
|
|
74
|
+
return { valid: false, message: 'invalid data layer config payload' };
|
|
75
|
+
}
|
|
76
|
+
if (config.pageDetection !== undefined) {
|
|
77
|
+
if (typeof config.pageDetection !== 'string' || !PAGE_DETECTION_SET.has(config.pageDetection)) {
|
|
78
|
+
return { valid: false, message: 'invalid page detection mode' };
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (config.pageTypePatterns !== undefined) {
|
|
82
|
+
if (!isRecord(config.pageTypePatterns)) {
|
|
83
|
+
return { valid: false, message: 'invalid page type patterns payload' };
|
|
84
|
+
}
|
|
85
|
+
const allowedPatternKeys = new Set(Object.keys(DEFAULT_PAGE_TYPE_PATTERNS));
|
|
86
|
+
const invalidPatternKeys = Object.keys(config.pageTypePatterns).filter((key) => !allowedPatternKeys.has(key));
|
|
87
|
+
if (invalidPatternKeys.length > 0) {
|
|
88
|
+
return {
|
|
89
|
+
valid: false,
|
|
90
|
+
message: `invalid page type pattern key: ${invalidPatternKeys.join(', ')}`,
|
|
91
|
+
invalidKeys: invalidPatternKeys,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (config.cookieConsent !== undefined) {
|
|
96
|
+
if (!isRecord(config.cookieConsent)) {
|
|
97
|
+
return { valid: false, message: 'invalid cookie consent payload' };
|
|
98
|
+
}
|
|
99
|
+
if (config.cookieConsent.requiredCategories !== undefined) {
|
|
100
|
+
if (!Array.isArray(config.cookieConsent.requiredCategories)) {
|
|
101
|
+
return { valid: false, message: 'invalid required categories payload' };
|
|
102
|
+
}
|
|
103
|
+
const invalidCategories = config.cookieConsent.requiredCategories.filter((category) => typeof category !== 'string' || !REQUIRED_CATEGORY_SET.has(category));
|
|
104
|
+
if (invalidCategories.length > 0) {
|
|
105
|
+
return { valid: false, message: 'invalid required categories value' };
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const moduleValidation = validateTrackingModules(config.trackingModules);
|
|
110
|
+
if (!moduleValidation.valid) {
|
|
111
|
+
return moduleValidation;
|
|
112
|
+
}
|
|
113
|
+
return { valid: true };
|
|
114
|
+
}
|
|
115
|
+
export function sanitizeDataLayerConfig(config) {
|
|
116
|
+
const baseTrackingModules = { ...TRACKING_MODULES };
|
|
117
|
+
const incomingTrackingModules = isRecord(config.trackingModules)
|
|
118
|
+
? config.trackingModules
|
|
119
|
+
: {};
|
|
120
|
+
for (const moduleName of Object.keys(baseTrackingModules)) {
|
|
121
|
+
const incoming = incomingTrackingModules[moduleName];
|
|
122
|
+
if (isRecord(incoming) && typeof incoming.enabled === 'boolean') {
|
|
123
|
+
baseTrackingModules[moduleName] = {
|
|
124
|
+
enabled: incoming.enabled,
|
|
125
|
+
...(isRecord(incoming.config) ? { config: incoming.config } : {}),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
const cookieConsent = {
|
|
130
|
+
...COOKIE_CONSENT_DEFAULTS,
|
|
131
|
+
...(isRecord(config.cookieConsent) ? config.cookieConsent : {}),
|
|
132
|
+
};
|
|
133
|
+
if (Array.isArray(cookieConsent.requiredCategories)) {
|
|
134
|
+
cookieConsent.requiredCategories = cookieConsent.requiredCategories.filter((category) => typeof category === 'string' && REQUIRED_CATEGORY_SET.has(category));
|
|
135
|
+
}
|
|
136
|
+
if (!cookieConsent.requiredCategories || cookieConsent.requiredCategories.length === 0) {
|
|
137
|
+
cookieConsent.requiredCategories = COOKIE_CONSENT_DEFAULTS.requiredCategories;
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
pageTypePatterns: isRecord(config.pageTypePatterns)
|
|
141
|
+
? { ...DEFAULT_PAGE_TYPE_PATTERNS, ...config.pageTypePatterns }
|
|
142
|
+
: { ...DEFAULT_PAGE_TYPE_PATTERNS },
|
|
143
|
+
trackingModules: baseTrackingModules,
|
|
144
|
+
cookieConsent,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../../../../../src/modules/contract/vendor/tracking-contract/validators.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Widget & Campaign Configurations
|
|
3
|
+
* Single source of truth for all widget/campaign configurations
|
|
4
|
+
*
|
|
5
|
+
* When adding a new widget type:
|
|
6
|
+
* 1. Add to WidgetType in types.ts
|
|
7
|
+
* 2. Add to WIDGET_TYPES below
|
|
8
|
+
* 3. Add content fields to TYPE_CONTENT_FIELDS
|
|
9
|
+
* 4. Add style sections to TYPE_STYLE_CONFIGS
|
|
10
|
+
* 5. Add to Prisma enum WidgetType (if DB storage needed)
|
|
11
|
+
*/
|
|
12
|
+
import type { WidgetType, WidgetTypeConfig, ContentFieldConfig, StyleSection } from './types';
|
|
13
|
+
export declare const WIDGET_TYPES: WidgetTypeConfig[];
|
|
14
|
+
export declare function getWidgetTypeConfig(type: WidgetType): WidgetTypeConfig | undefined;
|
|
15
|
+
export declare const TYPE_CONTENT_FIELDS: Record<WidgetType, ContentFieldConfig[]>;
|
|
16
|
+
export declare const TYPE_STYLE_CONFIGS: Record<WidgetType, StyleSection[]>;
|
|
17
|
+
export declare const SHADOW_VALUES: Record<string, string>;
|
|
18
|
+
export declare function getDefaultStyles(type: WidgetType): Record<string, any>;
|
|
19
|
+
export declare function getContentFields(type: WidgetType): ContentFieldConfig[];
|
|
20
|
+
export declare function getStyleSections(type: WidgetType): StyleSection[];
|
|
21
|
+
export declare function getShadowValue(shadow: string): string;
|
|
22
|
+
export declare function getAllowedStyleKeys(type: WidgetType): string[];
|