@walkeros/walker.js 0.0.0-next-20251219153324
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/CHANGELOG.md +202 -0
- package/README.md +413 -0
- package/dist/index.d.mts +34 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.es5.js +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -0
- package/dist/walker.js +1 -0
- package/package.json +73 -0
- package/src/dev.ts +46 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
# @walkeros/walker.js
|
|
2
|
+
|
|
3
|
+
## 0.0.0-next-20251219153324
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [5163b01]
|
|
8
|
+
- @walkeros/core@0.0.0-next-20251219153324
|
|
9
|
+
- @walkeros/collector@0.0.0-next-20251219153324
|
|
10
|
+
- @walkeros/web-core@0.0.0-next-20251219153324
|
|
11
|
+
- @walkeros/web-source-datalayer@0.0.0-next-20251219153324
|
|
12
|
+
- @walkeros/web-source-browser@0.0.0-next-20251219153324
|
|
13
|
+
|
|
14
|
+
## 0.5.1-next.0
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Updated dependencies [5163b01]
|
|
19
|
+
- @walkeros/core@0.5.1-next.0
|
|
20
|
+
- @walkeros/collector@0.5.1-next.0
|
|
21
|
+
- @walkeros/web-core@0.5.1-next.0
|
|
22
|
+
- @walkeros/web-source-datalayer@0.5.1-next.0
|
|
23
|
+
- @walkeros/web-source-browser@0.5.1-next.0
|
|
24
|
+
|
|
25
|
+
## 0.5.0
|
|
26
|
+
|
|
27
|
+
### Minor Changes
|
|
28
|
+
|
|
29
|
+
- just flow
|
|
30
|
+
|
|
31
|
+
### Patch Changes
|
|
32
|
+
|
|
33
|
+
- Updated dependencies
|
|
34
|
+
- Updated dependencies [22cd09c]
|
|
35
|
+
- @walkeros/web-source-browser@0.5.0
|
|
36
|
+
- @walkeros/collector@0.5.0
|
|
37
|
+
- @walkeros/core@0.5.0
|
|
38
|
+
- @walkeros/web-core@0.5.0
|
|
39
|
+
- @walkeros/web-source-datalayer@0.5.0
|
|
40
|
+
|
|
41
|
+
## 0.4.2
|
|
42
|
+
|
|
43
|
+
### Patch Changes
|
|
44
|
+
|
|
45
|
+
- Updated dependencies
|
|
46
|
+
- Updated dependencies
|
|
47
|
+
- @walkeros/core@0.4.2
|
|
48
|
+
- @walkeros/collector@0.4.2
|
|
49
|
+
- @walkeros/web-core@0.4.2
|
|
50
|
+
- @walkeros/web-source-datalayer@0.4.2
|
|
51
|
+
- @walkeros/web-source-browser@0.4.2
|
|
52
|
+
|
|
53
|
+
## 0.4.1
|
|
54
|
+
|
|
55
|
+
### Patch Changes
|
|
56
|
+
|
|
57
|
+
- dev entry
|
|
58
|
+
- Updated dependencies
|
|
59
|
+
- @walkeros/web-source-datalayer@0.4.1
|
|
60
|
+
- @walkeros/web-source-browser@0.4.1
|
|
61
|
+
- @walkeros/collector@0.4.1
|
|
62
|
+
- @walkeros/web-core@0.4.1
|
|
63
|
+
- @walkeros/core@0.4.1
|
|
64
|
+
|
|
65
|
+
## 0.4.0
|
|
66
|
+
|
|
67
|
+
### Minor Changes
|
|
68
|
+
|
|
69
|
+
- Consolidate schemas and examples under `/dev` export
|
|
70
|
+
|
|
71
|
+
### Patch Changes
|
|
72
|
+
|
|
73
|
+
- Updated dependencies
|
|
74
|
+
- @walkeros/web-source-datalayer@0.4.0
|
|
75
|
+
- @walkeros/web-source-browser@0.4.0
|
|
76
|
+
- @walkeros/collector@0.4.0
|
|
77
|
+
- @walkeros/web-core@0.4.0
|
|
78
|
+
- @walkeros/core@0.4.0
|
|
79
|
+
|
|
80
|
+
## 0.3.3
|
|
81
|
+
|
|
82
|
+
### Patch Changes
|
|
83
|
+
|
|
84
|
+
- cli usage
|
|
85
|
+
|
|
86
|
+
## 0.3.2
|
|
87
|
+
|
|
88
|
+
### Patch Changes
|
|
89
|
+
|
|
90
|
+
- Updated dependencies
|
|
91
|
+
- @walkeros/web-source-browser@0.3.2
|
|
92
|
+
|
|
93
|
+
## 0.3.1
|
|
94
|
+
|
|
95
|
+
### Patch Changes
|
|
96
|
+
|
|
97
|
+
- Updated dependencies
|
|
98
|
+
- @walkeros/core@0.3.1
|
|
99
|
+
- @walkeros/collector@0.3.1
|
|
100
|
+
- @walkeros/web-core@0.3.1
|
|
101
|
+
- @walkeros/web-source-datalayer@0.3.1
|
|
102
|
+
- @walkeros/web-source-browser@0.3.1
|
|
103
|
+
|
|
104
|
+
## 0.3.0
|
|
105
|
+
|
|
106
|
+
### Minor Changes
|
|
107
|
+
|
|
108
|
+
- [schema #555](https://github.com/elbwalker/walkerOS/issues/555)
|
|
109
|
+
|
|
110
|
+
### Patch Changes
|
|
111
|
+
|
|
112
|
+
- Updated dependencies
|
|
113
|
+
- @walkeros/web-source-datalayer@0.3.0
|
|
114
|
+
- @walkeros/web-source-browser@0.3.0
|
|
115
|
+
- @walkeros/collector@0.3.0
|
|
116
|
+
- @walkeros/web-core@0.3.0
|
|
117
|
+
- @walkeros/core@0.3.0
|
|
118
|
+
|
|
119
|
+
## 0.2.1
|
|
120
|
+
|
|
121
|
+
### Patch Changes
|
|
122
|
+
|
|
123
|
+
- Schema builder, event-level mapping policies, config package, fixed jest mocks
|
|
124
|
+
- Updated dependencies
|
|
125
|
+
- @walkeros/web-source-datalayer@0.2.1
|
|
126
|
+
- @walkeros/web-source-browser@0.2.1
|
|
127
|
+
- @walkeros/collector@0.2.1
|
|
128
|
+
- @walkeros/web-core@0.2.1
|
|
129
|
+
- @walkeros/core@0.2.1
|
|
130
|
+
|
|
131
|
+
## 0.2.0
|
|
132
|
+
|
|
133
|
+
### Minor Changes
|
|
134
|
+
|
|
135
|
+
- env
|
|
136
|
+
|
|
137
|
+
### Patch Changes
|
|
138
|
+
|
|
139
|
+
- Updated dependencies
|
|
140
|
+
- @walkeros/web-source-datalayer@0.2.0
|
|
141
|
+
- @walkeros/web-source-browser@0.2.0
|
|
142
|
+
- @walkeros/collector@0.2.0
|
|
143
|
+
- @walkeros/web-core@0.2.0
|
|
144
|
+
- @walkeros/core@0.2.0
|
|
145
|
+
|
|
146
|
+
## 0.1.2
|
|
147
|
+
|
|
148
|
+
### Patch Changes
|
|
149
|
+
|
|
150
|
+
- a0ced16: env
|
|
151
|
+
- Updated dependencies [a0ced16]
|
|
152
|
+
- @walkeros/web-source-datalayer@0.1.2
|
|
153
|
+
- @walkeros/web-source-browser@0.1.2
|
|
154
|
+
- @walkeros/collector@0.1.2
|
|
155
|
+
- @walkeros/web-core@0.1.2
|
|
156
|
+
- @walkeros/core@0.1.2
|
|
157
|
+
|
|
158
|
+
## 0.1.1
|
|
159
|
+
|
|
160
|
+
### Patch Changes
|
|
161
|
+
|
|
162
|
+
- flow
|
|
163
|
+
- Updated dependencies
|
|
164
|
+
- @walkeros/web-source-datalayer@0.1.1
|
|
165
|
+
- @walkeros/web-source-browser@0.1.1
|
|
166
|
+
- @walkeros/collector@0.1.1
|
|
167
|
+
- @walkeros/web-core@0.1.1
|
|
168
|
+
- @walkeros/core@0.1.1
|
|
169
|
+
|
|
170
|
+
## 0.1.0
|
|
171
|
+
|
|
172
|
+
### Minor Changes
|
|
173
|
+
|
|
174
|
+
- fixes
|
|
175
|
+
|
|
176
|
+
### Patch Changes
|
|
177
|
+
|
|
178
|
+
- Updated dependencies
|
|
179
|
+
- @walkeros/web-source-datalayer@0.1.0
|
|
180
|
+
- @walkeros/web-source-browser@0.1.0
|
|
181
|
+
- @walkeros/collector@0.1.0
|
|
182
|
+
- @walkeros/web-core@0.1.0
|
|
183
|
+
- @walkeros/core@0.1.0
|
|
184
|
+
|
|
185
|
+
## 0.0.10
|
|
186
|
+
|
|
187
|
+
### Patch Changes
|
|
188
|
+
|
|
189
|
+
- Updated dependencies
|
|
190
|
+
- @walkeros/web-source-browser@0.0.9
|
|
191
|
+
|
|
192
|
+
## 0.0.9
|
|
193
|
+
|
|
194
|
+
### Patch Changes
|
|
195
|
+
|
|
196
|
+
- af0ea64: init fixes
|
|
197
|
+
- Updated dependencies [af0ea64]
|
|
198
|
+
- @walkeros/web-source-datalayer@0.0.8
|
|
199
|
+
- @walkeros/web-source-browser@0.0.8
|
|
200
|
+
- @walkeros/collector@0.0.8
|
|
201
|
+
- @walkeros/web-core@0.0.8
|
|
202
|
+
- @walkeros/core@0.0.8
|
package/README.md
ADDED
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
# walker.js
|
|
2
|
+
|
|
3
|
+
Walker.js is a pre-built walkerOS application that combines both the
|
|
4
|
+
[browser](/docs/sources/web/browser/) and
|
|
5
|
+
[dataLayer](/docs/sources/web/dataLayer/) sources with the
|
|
6
|
+
[collector](/docs/collector/) and a default `dataLayer` destination into a
|
|
7
|
+
pre-build package. It's designed for users who want instant web tracking without
|
|
8
|
+
complex setup or configuration.
|
|
9
|
+
|
|
10
|
+
## Features
|
|
11
|
+
|
|
12
|
+
- 🚀 **Drop-in ready** - Single JavaScript file with everything included
|
|
13
|
+
- 🔒 **Privacy-first** - Built on walkerOS's privacy-centric architecture
|
|
14
|
+
- 🎯 **DOM tracking** - Automatic event collection via data attributes
|
|
15
|
+
- 📊 **DataLayer support** - Compatible with existing dataLayer implementations
|
|
16
|
+
- 🔧 **Flexible configuration** - Multiple ways to configure (inline, object, or
|
|
17
|
+
default)
|
|
18
|
+
- ⚡ **Async loading** - Works seamlessly with async/defer script loading
|
|
19
|
+
- 📦 **Queue support** - Events are queued until walker.js loads (elbLayer)
|
|
20
|
+
- 🧪 **Well tested** - Comprehensive test suite included
|
|
21
|
+
|
|
22
|
+
## Installation
|
|
23
|
+
|
|
24
|
+
### Option 1: NPM Package
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm install @walkeros/walker.js
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Option 2: CDN
|
|
31
|
+
|
|
32
|
+
```html
|
|
33
|
+
<script
|
|
34
|
+
async
|
|
35
|
+
data-elbconfig="elbConfig"
|
|
36
|
+
src="https://cdn.jsdelivr.net/npm/@walkeros/walker.js@latest/dist/walker.js"
|
|
37
|
+
></script>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Basic Setup
|
|
41
|
+
|
|
42
|
+
### 1. Add Event Queueing (Recommended)
|
|
43
|
+
|
|
44
|
+
Add this script before walker.js loads to queue events during initialization:
|
|
45
|
+
|
|
46
|
+
```html
|
|
47
|
+
<script>
|
|
48
|
+
function elb() {
|
|
49
|
+
(window.elbLayer = window.elbLayer || []).push(arguments);
|
|
50
|
+
}
|
|
51
|
+
</script>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 2. Include Walker.js
|
|
55
|
+
|
|
56
|
+
```html
|
|
57
|
+
<script async data-elbconfig="elbConfig" src="./walker.js"></script>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 3. Configure Destinations
|
|
61
|
+
|
|
62
|
+
```html
|
|
63
|
+
<script>
|
|
64
|
+
window.elbConfig = {
|
|
65
|
+
collector: {
|
|
66
|
+
destinations: {
|
|
67
|
+
console: {
|
|
68
|
+
push: (event) => console.log('Event:', event),
|
|
69
|
+
},
|
|
70
|
+
api: {
|
|
71
|
+
push: async (event) => {
|
|
72
|
+
await fetch('/api/events', {
|
|
73
|
+
method: 'POST',
|
|
74
|
+
body: JSON.stringify(event),
|
|
75
|
+
});
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
</script>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Configuration Options
|
|
85
|
+
|
|
86
|
+
Walker.js supports multiple configuration approaches with different priorities:
|
|
87
|
+
|
|
88
|
+
1. **Script tag `data-elbconfig`** (highest priority)
|
|
89
|
+
2. **`window.elbConfig`** (default fallback)
|
|
90
|
+
3. **Manual initialization** (when `run: false`)
|
|
91
|
+
|
|
92
|
+
### Settings
|
|
93
|
+
|
|
94
|
+
| Name | Type | Default | Description |
|
|
95
|
+
| :---------- | :------------------ | :------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------- |
|
|
96
|
+
| `elb` | `string` | `"elb"` | Global function name for event tracking |
|
|
97
|
+
| `name` | `string` | `"walkerjs"` | Global instance name |
|
|
98
|
+
| `run` | `boolean` | `true` | Auto-initialize walker.js on load |
|
|
99
|
+
| `browser` | `object \| boolean` | `{ run: true, session: true, scope: document.body, pageview: true }` | [Browser source configuration](https://www.walkeros.io/docs/sources/web/browser/) |
|
|
100
|
+
| `dataLayer` | `object \| boolean` | `false` | [DataLayer source configuration](https://www.walkeros.io/docs/sources/web/dataLayer) |
|
|
101
|
+
| `collector` | `object` | `{}` | [Collector configuration](https://www.walkeros.io/docs/collector/) including destinations and consent settings |
|
|
102
|
+
|
|
103
|
+
#### Browser Source Settings
|
|
104
|
+
|
|
105
|
+
| Name | Type | Default | Description |
|
|
106
|
+
| :----------------- | :-------- | :-------------- | :-------------------------------- |
|
|
107
|
+
| `browser.run` | `boolean` | `true` | Auto-start DOM tracking |
|
|
108
|
+
| `browser.session` | `boolean` | `true` | Enable session tracking |
|
|
109
|
+
| `browser.scope` | `Element` | `document.body` | DOM element scope for tracking |
|
|
110
|
+
| `browser.pageview` | `boolean` | `true` | Enable automatic page view events |
|
|
111
|
+
|
|
112
|
+
#### DataLayer Settings
|
|
113
|
+
|
|
114
|
+
| Name | Type | Default | Description |
|
|
115
|
+
| :----------------- | :-------- | :------------ | :----------------------------------------- |
|
|
116
|
+
| `dataLayer` | `boolean` | `false` | Enable dataLayer integration with defaults |
|
|
117
|
+
| `dataLayer.name` | `string` | `"dataLayer"` | DataLayer variable name |
|
|
118
|
+
| `dataLayer.prefix` | `string` | `"dataLayer"` | Event prefix for dataLayer events |
|
|
119
|
+
|
|
120
|
+
#### Collector Settings
|
|
121
|
+
|
|
122
|
+
| Name | Type | Default | Description |
|
|
123
|
+
| :----------------------- | :------- | :--------------------- | :---------------------------------------------------------------------- |
|
|
124
|
+
| `collector.consent` | `object` | `{ functional: true }` | Default consent state |
|
|
125
|
+
| `collector.destinations` | `object` | `{}` | [Destination configurations](https://www.walkeros.io/docs/destinations) |
|
|
126
|
+
|
|
127
|
+
### Full Configuration Object
|
|
128
|
+
|
|
129
|
+
```javascript
|
|
130
|
+
window.elbConfig = {
|
|
131
|
+
// Global settings
|
|
132
|
+
elb: 'elb', // Global function name (default: 'elb')
|
|
133
|
+
name: 'walkerjs', // Global instance name
|
|
134
|
+
run: true, // Auto-initialize (default: true)
|
|
135
|
+
|
|
136
|
+
// Browser source settings
|
|
137
|
+
browser: {
|
|
138
|
+
run: true, // Auto-start DOM tracking
|
|
139
|
+
session: true, // Enable session tracking
|
|
140
|
+
scope: document.body, // Tracking scope
|
|
141
|
+
pageview: true, // Enable automatic page views
|
|
142
|
+
},
|
|
143
|
+
|
|
144
|
+
// DataLayer integration
|
|
145
|
+
dataLayer: true, // Enable dataLayer
|
|
146
|
+
// or detailed config:
|
|
147
|
+
// dataLayer: {
|
|
148
|
+
// name: 'dataLayer', // DataLayer variable name
|
|
149
|
+
// prefix: 'dataLayer', // Event prefix
|
|
150
|
+
// },
|
|
151
|
+
|
|
152
|
+
// Collector configuration
|
|
153
|
+
collector: {
|
|
154
|
+
consent: { functional: true }, // Default consent state
|
|
155
|
+
destinations: {
|
|
156
|
+
// Your destinations here
|
|
157
|
+
console: {
|
|
158
|
+
push: (event) => console.log('Event:', event),
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Inline Configuration
|
|
166
|
+
|
|
167
|
+
Configure directly in the script tag using simple key:value pairs:
|
|
168
|
+
|
|
169
|
+
```html
|
|
170
|
+
<script
|
|
171
|
+
async
|
|
172
|
+
data-elbconfig="elb:track;run:true;instance:myWalker"
|
|
173
|
+
src="./walker.js"
|
|
174
|
+
></script>
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Named Configuration Object
|
|
178
|
+
|
|
179
|
+
Use a custom configuration object name:
|
|
180
|
+
|
|
181
|
+
```html
|
|
182
|
+
<script>
|
|
183
|
+
window.trackingConfig = {
|
|
184
|
+
elb: 'track',
|
|
185
|
+
collector: {
|
|
186
|
+
destinations: {
|
|
187
|
+
// Your destinations
|
|
188
|
+
},
|
|
189
|
+
},
|
|
190
|
+
};
|
|
191
|
+
</script>
|
|
192
|
+
<script async data-elbconfig="trackingConfig" src="./walker.js"></script>
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Usage
|
|
196
|
+
|
|
197
|
+
### Automatic DOM Tracking
|
|
198
|
+
|
|
199
|
+
Walker.js automatically tracks events based on HTML data attributes:
|
|
200
|
+
|
|
201
|
+
```html
|
|
202
|
+
<!-- Product tracking -->
|
|
203
|
+
<div data-elb="product" data-elb-product="id:123;name:Blue T-Shirt;price:29.99">
|
|
204
|
+
<button data-elbaction="click:add">Add to Cart</button>
|
|
205
|
+
</div>
|
|
206
|
+
|
|
207
|
+
<!-- Global properties -->
|
|
208
|
+
<div data-elbglobals="pagetype:product_detail"></div>
|
|
209
|
+
|
|
210
|
+
<!-- Context information -->
|
|
211
|
+
<div data-elbcontext="section:recommendations"></div>
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
For detailed information on data attributes, see the
|
|
215
|
+
[Browser Source documentation](https://www.walkeros.io/docs/sources/web/browser/tagging).
|
|
216
|
+
|
|
217
|
+
### Manual Event Tracking
|
|
218
|
+
|
|
219
|
+
Use the global `elb` function for manual tracking:
|
|
220
|
+
|
|
221
|
+
```javascript
|
|
222
|
+
// Simple event
|
|
223
|
+
elb('button click', {
|
|
224
|
+
label: 'interesting',
|
|
225
|
+
});
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### DataLayer Integration
|
|
229
|
+
|
|
230
|
+
Walker.js can integrate with existing dataLayer implementations:
|
|
231
|
+
|
|
232
|
+
```javascript
|
|
233
|
+
// Enable dataLayer integration
|
|
234
|
+
window.elbConfig = {
|
|
235
|
+
dataLayer: true, // Uses window.dataLayer by default
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
// Existing dataLayer events will be processed
|
|
239
|
+
dataLayer.push({
|
|
240
|
+
event: 'purchase',
|
|
241
|
+
ecommerce: {
|
|
242
|
+
transaction_id: '12345',
|
|
243
|
+
value: 25.42,
|
|
244
|
+
},
|
|
245
|
+
});
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## Advanced Features
|
|
249
|
+
|
|
250
|
+
### Async Loading & Event Queueing
|
|
251
|
+
|
|
252
|
+
Walker.js handles async loading gracefully with automatic event queueing:
|
|
253
|
+
|
|
254
|
+
```html
|
|
255
|
+
<script>
|
|
256
|
+
// 1. Define elb function to queue events
|
|
257
|
+
function elb() {
|
|
258
|
+
(window.elbLayer = window.elbLayer || []).push(arguments);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// 2. Track events immediately (even before walker.js loads)
|
|
262
|
+
elb('product view', { id: '123', name: 'Blue T-Shirt' });
|
|
263
|
+
</script>
|
|
264
|
+
|
|
265
|
+
<!-- 3. Walker.js processes queued events when it loads -->
|
|
266
|
+
<script async data-elbconfig="elbConfig" src="./walker.js"></script>
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### Build Variants
|
|
270
|
+
|
|
271
|
+
Walker.js provides multiple build formats for different environments:
|
|
272
|
+
|
|
273
|
+
- `walker.js` - Standard IIFE bundle for browsers
|
|
274
|
+
- `index.es5.js` - GTM-compatible ES2015 build
|
|
275
|
+
- `index.mjs` - ES modules for modern bundlers
|
|
276
|
+
- `index.js` - CommonJS for Node.js environments
|
|
277
|
+
|
|
278
|
+
### Programmatic Usage
|
|
279
|
+
|
|
280
|
+
Use walker.js programmatically in applications:
|
|
281
|
+
|
|
282
|
+
```javascript
|
|
283
|
+
import { createWalkerjs } from '@walkeros/walker.js';
|
|
284
|
+
|
|
285
|
+
const { collector, elb } = await createWalkerjs({
|
|
286
|
+
collector: {
|
|
287
|
+
destinations: {
|
|
288
|
+
console: { push: console.log },
|
|
289
|
+
},
|
|
290
|
+
},
|
|
291
|
+
browser: {
|
|
292
|
+
session: true,
|
|
293
|
+
pageview: true,
|
|
294
|
+
},
|
|
295
|
+
});
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
## Destination Configuration
|
|
299
|
+
|
|
300
|
+
Configure multiple destinations for your events:
|
|
301
|
+
|
|
302
|
+
```javascript
|
|
303
|
+
window.elbConfig = {
|
|
304
|
+
collector: {
|
|
305
|
+
destinations: {
|
|
306
|
+
// Console logging for development
|
|
307
|
+
console: {
|
|
308
|
+
push: (event) => console.log('Walker.js Event:', event),
|
|
309
|
+
},
|
|
310
|
+
|
|
311
|
+
// Custom API endpoint
|
|
312
|
+
api: {
|
|
313
|
+
push: async (event) => {
|
|
314
|
+
await fetch('/api/events', {
|
|
315
|
+
method: 'POST',
|
|
316
|
+
headers: { 'Content-Type': 'application/json' },
|
|
317
|
+
body: JSON.stringify(event),
|
|
318
|
+
});
|
|
319
|
+
},
|
|
320
|
+
},
|
|
321
|
+
},
|
|
322
|
+
},
|
|
323
|
+
};
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
For comprehensive destination options, see the
|
|
327
|
+
[Destinations documentation](https://www.walkeros.io/docs/destinations/).
|
|
328
|
+
|
|
329
|
+
## Troubleshooting
|
|
330
|
+
|
|
331
|
+
### Common Issues
|
|
332
|
+
|
|
333
|
+
**Events not firing:** Check that walker.js loaded and configuration is valid.
|
|
334
|
+
|
|
335
|
+
**Missing events:** Ensure event queueing function is added before walker.js.
|
|
336
|
+
|
|
337
|
+
**Configuration not applied:** Verify `data-elbconfig` points to the correct
|
|
338
|
+
object name.
|
|
339
|
+
|
|
340
|
+
## API Reference
|
|
341
|
+
|
|
342
|
+
### Factory Function
|
|
343
|
+
|
|
344
|
+
```typescript
|
|
345
|
+
createWalkerjs(config?: Config): Promise<Instance>
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
Creates a new walker.js instance with the provided configuration.
|
|
349
|
+
|
|
350
|
+
### Instance Properties
|
|
351
|
+
|
|
352
|
+
- `collector` - The walkerOS collector instance
|
|
353
|
+
- `elb` - Browser push function for event tracking
|
|
354
|
+
|
|
355
|
+
### Utility Functions
|
|
356
|
+
|
|
357
|
+
```javascript
|
|
358
|
+
import { getAllEvents, getEvents, getGlobals } from '@walkeros/walker.js';
|
|
359
|
+
|
|
360
|
+
// Get all trackable events on the page
|
|
361
|
+
const events = getAllEvents();
|
|
362
|
+
|
|
363
|
+
// Get events for a specific element and trigger
|
|
364
|
+
const button = document.querySelector('button');
|
|
365
|
+
const clickEvents = getEvents(button, 'click');
|
|
366
|
+
|
|
367
|
+
// Get global properties from the page
|
|
368
|
+
const globals = getGlobals();
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
## Development
|
|
372
|
+
|
|
373
|
+
### Building
|
|
374
|
+
|
|
375
|
+
```bash
|
|
376
|
+
npm run build
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
### Testing
|
|
380
|
+
|
|
381
|
+
```bash
|
|
382
|
+
npm test # Run tests once
|
|
383
|
+
npm run dev # Watch mode
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
### Development Server
|
|
387
|
+
|
|
388
|
+
```bash
|
|
389
|
+
npm run preview # Serve examples on localhost:3333
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
## Related Documentation
|
|
393
|
+
|
|
394
|
+
- **[Browser Source](https://www.walkeros.io/docs/sources/web/browser/)** -
|
|
395
|
+
Detailed DOM tracking capabilities
|
|
396
|
+
- **[Collector](https://www.walkeros.io/docs/collector/)** - Event processing
|
|
397
|
+
and routing
|
|
398
|
+
- **[Destinations](https://www.walkeros.io/docs/destinations/)** - Available
|
|
399
|
+
destination options
|
|
400
|
+
- **[DataLayer Source](https://www.walkeros.io/docs/sources/web/dataLayer/)** -
|
|
401
|
+
DataLayer integration details
|
|
402
|
+
|
|
403
|
+
Walker.js combines all these components into a single, easy-to-use package
|
|
404
|
+
perfect for getting started with walkerOS quickly.
|
|
405
|
+
|
|
406
|
+
## Contributing
|
|
407
|
+
|
|
408
|
+
This package is part of the walkerOS monorepo. Please see the main repository
|
|
409
|
+
for contribution guidelines.
|
|
410
|
+
|
|
411
|
+
## License
|
|
412
|
+
|
|
413
|
+
MIT License - see LICENSE file for details.
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Collector } from '@walkeros/core';
|
|
2
|
+
import { SourceBrowser } from '@walkeros/web-source-browser';
|
|
3
|
+
export { getAllEvents, getEvents, getGlobals } from '@walkeros/web-source-browser';
|
|
4
|
+
import { SourceDataLayer } from '@walkeros/web-source-datalayer';
|
|
5
|
+
|
|
6
|
+
declare global {
|
|
7
|
+
interface Window {
|
|
8
|
+
[key: string]: DataLayer;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
interface Instance {
|
|
12
|
+
collector: Collector.Instance;
|
|
13
|
+
elb: SourceBrowser.BrowserPush;
|
|
14
|
+
}
|
|
15
|
+
interface Config {
|
|
16
|
+
collector?: Collector.InitConfig;
|
|
17
|
+
browser?: Partial<SourceBrowser.Settings>;
|
|
18
|
+
dataLayer?: boolean | Partial<SourceDataLayer.Settings>;
|
|
19
|
+
elb?: string;
|
|
20
|
+
name?: string;
|
|
21
|
+
run?: boolean;
|
|
22
|
+
}
|
|
23
|
+
type DataLayer = undefined | Array<unknown>;
|
|
24
|
+
|
|
25
|
+
type index_Config = Config;
|
|
26
|
+
type index_DataLayer = DataLayer;
|
|
27
|
+
type index_Instance = Instance;
|
|
28
|
+
declare namespace index {
|
|
29
|
+
export type { index_Config as Config, index_DataLayer as DataLayer, index_Instance as Instance };
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
declare function createWalkerjs(config?: Config): Promise<Instance>;
|
|
33
|
+
|
|
34
|
+
export { index as Walkerjs, createWalkerjs, createWalkerjs as default };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Collector } from '@walkeros/core';
|
|
2
|
+
import { SourceBrowser } from '@walkeros/web-source-browser';
|
|
3
|
+
export { getAllEvents, getEvents, getGlobals } from '@walkeros/web-source-browser';
|
|
4
|
+
import { SourceDataLayer } from '@walkeros/web-source-datalayer';
|
|
5
|
+
|
|
6
|
+
declare global {
|
|
7
|
+
interface Window {
|
|
8
|
+
[key: string]: DataLayer;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
interface Instance {
|
|
12
|
+
collector: Collector.Instance;
|
|
13
|
+
elb: SourceBrowser.BrowserPush;
|
|
14
|
+
}
|
|
15
|
+
interface Config {
|
|
16
|
+
collector?: Collector.InitConfig;
|
|
17
|
+
browser?: Partial<SourceBrowser.Settings>;
|
|
18
|
+
dataLayer?: boolean | Partial<SourceDataLayer.Settings>;
|
|
19
|
+
elb?: string;
|
|
20
|
+
name?: string;
|
|
21
|
+
run?: boolean;
|
|
22
|
+
}
|
|
23
|
+
type DataLayer = undefined | Array<unknown>;
|
|
24
|
+
|
|
25
|
+
type index_Config = Config;
|
|
26
|
+
type index_DataLayer = DataLayer;
|
|
27
|
+
type index_Instance = Instance;
|
|
28
|
+
declare namespace index {
|
|
29
|
+
export type { index_Config as Config, index_DataLayer as DataLayer, index_Instance as Instance };
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
declare function createWalkerjs(config?: Config): Promise<Instance>;
|
|
33
|
+
|
|
34
|
+
export { index as Walkerjs, createWalkerjs, createWalkerjs as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";function _array_like_to_array(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function _array_with_holes(e){if(Array.isArray(e))return e}function _array_without_holes(e){if(Array.isArray(e))return _array_like_to_array(e)}function asyncGeneratorStep(e,t,n,r,o,a,i){try{var c=e[a](i),s=c.value}catch(e){return void n(e)}c.done?t(s):Promise.resolve(s).then(r,o)}function _async_to_generator(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function i(e){asyncGeneratorStep(a,r,o,i,c,"next",e)}function c(e){asyncGeneratorStep(a,r,o,i,c,"throw",e)}i(void 0)})}}function _define_property(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _instanceof(e,t){return null!=t&&"undefined"!=typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](e):e instanceof t}function _iterable_to_array(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _iterable_to_array_limit(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a=[],i=!0,c=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){c=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(c)throw o}}return a}}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){_define_property(e,t,n[t])})}return e}function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function _object_spread_props(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}function _object_without_properties(e,t){if(null==e)return{};var n,r,o,a={};if("undefined"!=typeof Reflect&&Reflect.ownKeys){for(n=Reflect.ownKeys(e),o=0;o<n.length;o++)r=n[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r]);return a}if(a=_object_without_properties_loose(e,t),Object.getOwnPropertySymbols)for(n=Object.getOwnPropertySymbols(e),o=0;o<n.length;o++)r=n[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r]);return a}function _object_without_properties_loose(e,t){if(null==e)return{};var n,r,o={},a=Object.getOwnPropertyNames(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n]);return o}function _sliced_to_array(e,t){return _array_with_holes(e)||_iterable_to_array_limit(e,t)||_unsupported_iterable_to_array(e,t)||_non_iterable_rest()}function _to_array(e){return _array_with_holes(e)||_iterable_to_array(e)||_unsupported_iterable_to_array(e)||_non_iterable_rest()}function _to_consumable_array(e){return _array_without_holes(e)||_iterable_to_array(e)||_unsupported_iterable_to_array(e)||_non_iterable_spread()}function _type_of(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function _unsupported_iterable_to_array(e,t){if(e){if("string"==typeof e)return _array_like_to_array(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_array_like_to_array(e,t):void 0}}function _ts_generator(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),c=Object.defineProperty;return c(i,"next",{value:s(0)}),c(i,"throw",{value:s(1)}),c(i,"return",{value:s(2)}),"function"==typeof Symbol&&c(i,Symbol.iterator,{value:function(){return this}}),i;function s(c){return function(s){return function(c){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,r=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],r=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,s])}}}function _ts_values(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}var Walkerjs=function(){var e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};n=_object_spread({},He,n);var r=Object.entries(t).reduce(function(t,r){var o=_sliced_to_array(r,2),a=o[0],i=o[1],c=e[a];return n.merge&&Array.isArray(c)&&Array.isArray(i)?t[a]=i.reduce(function(e,t){return e.includes(t)?e:_to_consumable_array(e).concat([t])},_to_consumable_array(c)):(n.extend||a in e)&&(t[a]=i),t},{});return n.shallow?_object_spread({},e,r):(Object.assign(e,r),e)},t=function(e){return Array.isArray(e)},n=function(e){return void 0!==e},r=function(e){return"object"==(void 0===e?"undefined":_type_of(e))&&null!==e&&!t(e)&&"[object Object]"===Object.prototype.toString.call(e)},o=function(e){return"string"==typeof e},a=function(e,t,n){if(!r(e))return e;for(var o=Je(e),a=t.split("."),i=o,c=0;c<a.length;c++){var s=a[c];c===a.length-1?i[s]=n:(s in i&&"object"==_type_of(i[s])&&null!==i[s]||(i[s]={}),i=i[s])}return o},i=function(e){var t=_object_spread({},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}),n={},r=void 0===e;return Object.keys(t).forEach(function(o){t[o]&&(n[o]=!0,e&&e[o]&&(r=!0))}),!!r&&n},c=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:6,t="";t.length<e;)t+=(36*Math.random()|0).toString(36);return t},s=function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=null,a=!1;return function(){for(var i=arguments.length,c=new Array(i),s=0;s<i;s++)c[s]=arguments[s];return new Promise(function(i){var s=r&&!a;o&&clearTimeout(o),o=setTimeout(function(){o=null,r&&!a||(t=e.apply(void 0,_to_consumable_array(c)),i(t))},n),s&&(a=!0,t=e.apply(void 0,_to_consumable_array(c)),i(t))})}},u=function(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}},l=function(e,t){var n,r={};return _instanceof(e,Error)?(n=e.message,r.error=u(e)):n=e,void 0!==t&&(_instanceof(t,Error)?r.error=u(t):"object"==(void 0===t?"undefined":_type_of(t))&&null!==t?"error"in(r=_object_spread({},r,t))&&_instanceof(r.error,Error)&&(r.error=u(r.error)):r.value=t),{message:n,context:r}},f=function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Ve({level:void 0!==t.level?(e=t.level,"string"==typeof e?Ke[e]:e):0,handler:t.handler,scope:[]})},d=function(e){return $e(e)?e:void 0},_=function(e,t,n){return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];try{return e.apply(void 0,_to_consumable_array(o))}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}},g=function(e,t,n){return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];return _async_to_generator(function(){var r;return _ts_generator(this,function(a){switch(a.label){case 0:return a.trys.push([0,2,4,6]),[4,e.apply(void 0,_to_consumable_array(o))];case 1:case 3:return[2,a.sent()];case 2:return r=a.sent(),t?[4,t(r)]:[2];case 4:return[4,null==n?void 0:n()];case 5:return a.sent(),[7];case 6:return[2]}})})()}},v=function(e,n){return _async_to_generator(function(){var r,o,a,i,c,s,u,l,f,d;return _ts_generator(this,function(_){return o=_sliced_to_array((e.name||"").split(" "),2),a=o[0],i=o[1],n&&a&&i?(s="",l=i,f=function(n){if(n)return(n=t(n)?n:[n]).find(function(t){return!t.condition||t.condition(e)})},n[u=a]||(u="*"),[2,((d=n[u])&&(d[l]||(l="*"),c=f(d[l])),c||(u="*",l="*",c=f(null===(r=n[u])||void 0===r?void 0:r[l])),c&&(s="".concat(u," ").concat(l)),{eventMapping:c,mappingKey:s})]):[2,{}]})})()},p=function(e){return _async_to_generator(function(e){var o,a,i,c,s,u,l,f,d,_,v,p,y,m=arguments;return _ts_generator(this,function(h){switch(h.label){case 0:if(o=m.length>1&&void 0!==m[1]?m[1]:{},a=m.length>2&&void 0!==m[2]?m[2]:{},!n(e))return[2];c=r(e)&&e.consent||a.consent||(null===(i=a.collector)||void 0===i?void 0:i.consent),s=t(o)?o:[o],u=!0,l=!1,f=void 0,h.label=1;case 1:h.trys.push([1,6,7,8]),d=s[Symbol.iterator](),h.label=2;case 2:return(u=(_=d.next()).done)?[3,5]:(v=_.value,[4,g(Qe)(e,v,_object_spread_props(_object_spread({},a),{consent:c}))]);case 3:if(p=h.sent(),n(p))return[2,p];h.label=4;case 4:return u=!0,[3,2];case 5:return[3,8];case 6:return y=h.sent(),l=!0,f=y,[3,8];case 7:try{u||null==d.return||d.return()}finally{if(l)throw f}return[7];case 8:return[2]}})}).apply(this,arguments)},y=function(t,n,o){return _async_to_generator(function(){var i,c,s,u,l,f,d;return _ts_generator(this,function(_){switch(_.label){case 0:return n.policy?[4,Promise.all(Object.entries(n.policy).map(function(e){var n=_sliced_to_array(e,2),r=n[0],i=n[1];return _async_to_generator(function(){var e;return _ts_generator(this,function(n){switch(n.label){case 0:return[4,p(t,i,{collector:o})];case 1:return e=n.sent(),t=a(t,r,e),[2]}})})()}))]:[3,2];case 1:_.sent(),_.label=2;case 2:return[4,v(t,n.mapping)];case 3:return i=_.sent(),c=i.eventMapping,s=i.mappingKey,(null==c?void 0:c.policy)?[4,Promise.all(Object.entries(c.policy).map(function(e){var n=_sliced_to_array(e,2),r=n[0],i=n[1];return _async_to_generator(function(){var e;return _ts_generator(this,function(n){switch(n.label){case 0:return[4,p(t,i,{collector:o})];case 1:return e=n.sent(),t=a(t,r,e),[2]}})})()}))]:[3,5];case 4:_.sent(),_.label=5;case 5:return(l=n.data)?[4,p(t,n.data,{collector:o})]:[3,7];case 6:l=_.sent(),_.label=7;case 7:return u=l,c?c.ignore?[2,{event:t,data:u,mapping:c,mappingKey:s,ignore:!0}]:(c.name&&(t.name=c.name),c.data?(d=c.data)?[4,p(t,c.data,{collector:o})]:[3,9]:[3,10]):[3,10];case 8:d=_.sent(),_.label=9;case 9:f=d,u=r(u)&&r(f)?e(u,f):f,_.label=10;case 10:return[2,{event:t,data:u,mapping:c,mappingKey:s,ignore:!1}]}})})()},m=function(e,t,n){return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];var i,c="post"+t,s=n["pre"+t],u=n[c];return i=s?s.apply(void 0,[{fn:e}].concat(_to_consumable_array(o))):e.apply(void 0,_to_consumable_array(o)),u&&(i=u.apply(void 0,[{fn:e,result:i}].concat(_to_consumable_array(o)))),i}},h=function(e){return!0===e?tt:e},b=function(e,t,n){return _async_to_generator(function(){var r,o,a,i,s,u,l,f,d;return _ts_generator(this,function(_){if(r=t.code,o=t.config,a=void 0===o?{}:o,i=t.env,s=void 0===i?{}:i,u=n||a||{init:!1},l=h(r),f=_object_spread_props(_object_spread({},l),{config:u,env:E(l.env,s)}),!(d=f.config.id))do{d=c(4)}while(e.destinations[d]);return[2,(e.destinations[d]=f,!1!==f.config.queue&&(f.queue=_to_consumable_array(e.queue)),w(e,void 0,_define_property({},d,f)))]})})()},w=function(t,n,r){return _async_to_generator(function(){var o,a,c,s,u,l,f,d,_,v,p,y,m,h,b,w;return _ts_generator(this,function(S){switch(S.label){case 0:return o=t.allowed,a=t.consent,c=t.globals,s=t.user,o?(n&&t.queue.push(n),r||(r=t.destinations),[4,Promise.all(Object.entries(r||{}).map(function(r){var o=_sliced_to_array(r,2),u=o[0],l=o[1];return _async_to_generator(function(){var r,o,f,d,_;return _ts_generator(this,function(v){switch(v.label){case 0:return r=(l.queue||[]).map(function(e){return _object_spread_props(_object_spread({},e),{consent:a})}),l.queue=[],n&&(o=Je(n),r.push(o)),r.length?(f=[],d=r.filter(function(e){var t=i(l.config.consent,a,e.consent);return!t||(e.consent=t,f.push(e),!1)}),l.queue.concat(d),f.length?[4,g(j)(t,l)]:[2,{id:u,destination:l,queue:r}]):[2,{id:u,destination:l,skipped:!0}];case 1:return v.sent()?(_=!1,l.dlq||(l.dlq=[]),[4,Promise.all(f.map(function(n){return _async_to_generator(function(){return _ts_generator(this,function(r){switch(r.label){case 0:return n.globals=e(c,n.globals),n.user=e(s,n.user),[4,g(k,function(e){var r=l.type||"unknown";return t.logger.scope(r).error("Push failed",{error:e,event:n.name}),_=!0,l.dlq.push([n,e]),!1})(t,l,n)];case 1:return[2,(r.sent(),n)]}})})()}))]):[2,{id:u,destination:l,queue:r}];case 2:return[2,(v.sent(),{id:u,destination:l,error:_})]}})})()}))]):[2,O({ok:!1})];case 1:u=S.sent(),l=[],f=[],d=[],_=!0,v=!1,p=void 0;try{for(y=u[Symbol.iterator]();!(_=(m=y.next()).done);_=!0)(h=m.value).skipped||(b=h.destination,w={id:h.id,destination:b},h.error?d.push(w):h.queue&&h.queue.length?(b.queue=(b.queue||[]).concat(h.queue),f.push(w)):l.push(w))}catch(e){v=!0,p=e}finally{try{_||null==y.return||y.return()}finally{if(v)throw p}}return[2,O({ok:!d.length,event:n,successful:l,queued:f,failed:d})]}})})()},j=function(e,t){return _async_to_generator(function(){var n,r,o,a;return _ts_generator(this,function(i){switch(i.label){case 0:return!t.init||t.config.init?[3,2]:(n=t.type||"unknown",r=e.logger.scope(n),o={collector:e,config:t.config,env:E(t.env,t.config.env),logger:r},r.debug("init"),[4,m(t.init,"DestinationInit",e.hooks)(o)]);case 1:if(!1===(a=i.sent()))return[2,a];t.config=_object_spread_props(_object_spread({},a||t.config),{init:!0}),r.debug("init done"),i.label=2;case 2:return[2,!0]}})})()},k=function(e,t,r){return _async_to_generator(function(){var o,a,i,c,u,l,f,d,_;return _ts_generator(this,function(g){switch(g.label){case 0:return o=t.config,[4,y(r,o,e)];case 1:return(a=g.sent()).ignore?[2,!1]:(i=t.type||"unknown",c=e.logger.scope(i),u={collector:e,config:o,data:a.data,mapping:a.mapping,env:E(t.env,o.env),logger:c},l=a.mapping,f=a.mappingKey||"* *",(null==l?void 0:l.batch)&&t.pushBatch?(t.batches=t.batches||{},t.batches[f]||(d={key:f,events:[],data:[]},t.batches[f]={batched:d,batchFn:s(function(){var n=t.batches[f].batched,r={collector:e,config:o,data:void 0,mapping:l,env:E(t.env,o.env),logger:c};c.debug("push batch",{events:n.events.length}),m(t.pushBatch,"DestinationPushBatch",e.hooks)(n,r),c.debug("push batch done"),n.events=[],n.data=[]},l.batch)}),(_=t.batches[f]).batched.events.push(a.event),n(a.data)&&_.batched.data.push(a.data),_.batchFn(),[3,4]):[3,2]);case 2:return c.debug("push",{event:a.event.name}),[4,m(t.push,"DestinationPush",e.hooks)(a.event,u)];case 3:g.sent(),c.debug("push done"),g.label=4;case 4:return[2,!0]}})})()},O=function(t){var n;return e({ok:!(null==t||null===(n=t.failed)||void 0===n?void 0:n.length),successful:[],queued:[],failed:[]},t)},S=function(e){return _async_to_generator(function(e){var t,n,r,o,a,i,c,s,u,l,f,d,_,g,v,p,y,m,b=arguments;return _ts_generator(this,function(e){t=b.length>1&&void 0!==b[1]?b[1]:{},n={},r=!0,o=!1,a=void 0;try{for(i=Object.entries(t)[Symbol.iterator]();!(r=(c=i.next()).done);r=!0)s=_sliced_to_array(c.value,2),u=s[0],l=s[1],f=l.code,d=l.config,_=void 0===d?{}:d,g=l.env,v=void 0===g?{}:g,p=h(f),y=_object_spread({},p.config,_),m=E(p.env,v),n[u]=_object_spread_props(_object_spread({},p),{config:y,env:m})}catch(e){o=!0,a=e}finally{try{r||null==i.return||i.return()}finally{if(o)throw a}}return[2,n]})}).apply(this,arguments)},E=function(e,t){return e||t?t?e&&r(e)&&r(t)?_object_spread({},e,t):t:e:{}},x=function(e,t,n,r){var o,a,i,c,s=n||[];switch(n||(s=e.on[t]||[]),t){case et.Commands.Consent:o=r||e.consent;break;case et.Commands.Session:o=e.session;break;case et.Commands.Ready:case et.Commands.Run:default:o=void 0}if(Object.values(e.sources).forEach(function(e){e.on&&_(e.on)(t,o)}),Object.values(e.destinations).forEach(function(n){if(n.on){var r=n.type||"unknown",a=e.logger.scope(r).scope("on").scope(t),i={collector:e,config:n.config,data:o,env:E(n.env,n.config.env),logger:a};_(n.on)(t,i)}}),s.length)switch(t){case et.Commands.Consent:a=e,i=s,c=r||a.consent,i.forEach(function(e){Object.keys(c).filter(function(t){return t in e}).forEach(function(t){_(e[t])(a,c)})});break;case et.Commands.Ready:case et.Commands.Run:!function(e,t){e.allowed&&t.forEach(function(t){_(t)(e)})}(e,s);break;case et.Commands.Session:!function(e,t){e.session&&t.forEach(function(t){_(t)(e,e.session)})}(e,s)}},C=function(t,n){return _async_to_generator(function(){var r,o,a;return _ts_generator(this,function(i){return r=t.consent,o=!1,a={},[2,(Object.entries(n).forEach(function(e){var t=_sliced_to_array(e,2),n=t[0],r=!!t[1];a[n]=r,o=o||r}),t.consent=e(r,a),x(t,"consent",void 0,a),o?w(t):O({ok:!0}))]})})()},A=function(n,a,i,c){return _async_to_generator(function(){var s,u;return _ts_generator(this,function(l){switch(l.label){case 0:switch(a){case et.Commands.Config:return[3,1];case et.Commands.Consent:return[3,2];case et.Commands.Custom:return[3,5];case et.Commands.Destination:return[3,6];case et.Commands.Globals:return[3,9];case et.Commands.On:return[3,10];case et.Commands.Ready:return[3,11];case et.Commands.Run:return[3,12];case et.Commands.Session:return[3,14];case et.Commands.User:return[3,15]}return[3,16];case 1:return r(i)&&e(n.config,i,{shallow:!1}),[3,16];case 2:return r(i)?[4,C(n,i)]:[3,4];case 3:s=l.sent(),l.label=4;case 4:return[3,16];case 5:return r(i)&&(n.custom=e(n.custom,i)),[3,16];case 6:return u=r(i)&&function(e){return"function"==typeof e}(i.push),u?[4,b(n,{code:i},c)]:[3,8];case 7:u=s=l.sent(),l.label=8;case 8:return[3,16];case 9:return r(i)&&(n.globals=e(n.globals,i)),[3,16];case 10:return o(i)&&function(e,n,r){var o=e.on,a=o[n]||[],i=t(r)?r:[r];i.forEach(function(e){a.push(e)}),o[n]=a,x(e,n,i)}(n,i,c),[3,16];case 11:return x(n,"ready"),[3,16];case 12:return[4,P(n,i)];case 13:return s=l.sent(),[3,16];case 14:return x(n,"session"),[3,16];case 15:r(i)&&e(n.user,i,{shallow:!1}),l.label=16;case 16:return[2,s||{ok:!0,successful:[],queued:[],failed:[]}]}})})()},P=function(t,n){return _async_to_generator(function(){var r;return _ts_generator(this,function(o){switch(o.label){case 0:return t.allowed=!0,t.count=0,t.group=c(),t.timing=Date.now(),n&&(n.consent&&(t.consent=e(t.consent,n.consent)),n.user&&(t.user=e(t.user,n.user)),n.globals&&(t.globals=e(t.config.globalsStatic||{},n.globals)),n.custom&&(t.custom=e(t.custom,n.custom))),Object.values(t.destinations).forEach(function(e){e.queue=[]}),t.queue=[],t.round++,[4,w(t)];case 1:return r=o.sent(),[2,(x(t,"run"),r)]}})})()},L=function(e,t){return m(function(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return _async_to_generator(function(){return _ts_generator(this,function(o){switch(o.label){case 0:return[4,g(function(){return _async_to_generator(function(){var o,a,c,s;return _ts_generator(this,function(u){switch(u.label){case 0:return o=n,r.mapping?[4,y(o,r.mapping,e)]:[3,2];case 1:if((a=u.sent()).ignore)return[2,O({ok:!0})];if(r.mapping.consent&&!i(r.mapping.consent,e.consent,a.event.consent))return[2,O({ok:!0})];o=a.event,u.label=2;case 2:return c=t(o),s=function(e,t){if(!t.name)throw new Error("Event name is required");var n=_sliced_to_array(t.name.split(" "),2),r=n[0],o=n[1];if(!r||!o)throw new Error("Event name is invalid");++e.count;var a=t.timestamp,i=void 0===a?Date.now():a,c=t.group,s=void 0===c?e.group:c,u=t.count,l=void 0===u?e.count:u,f=t.name,d=void 0===f?"".concat(r," ").concat(o):f,_=t.data,g=void 0===_?{}:_,v=t.context,p=void 0===v?{}:v,y=t.globals,m=void 0===y?e.globals:y,h=t.custom,b=void 0===h?{}:h,w=t.user,j=void 0===w?e.user:w,k=t.nested,O=void 0===k?[]:k,S=t.consent,E=void 0===S?e.consent:S,x=t.id,C=void 0===x?"".concat(i,"-").concat(s,"-").concat(l):x,A=t.trigger,P=void 0===A?"":A,L=t.entity,R=void 0===L?r:L,q=t.action,I=void 0===q?o:q,U=t.timing,D=void 0===U?0:U,N=t.version,T=void 0===N?{source:e.version,tagging:e.config.tagging||0}:N,W=t.source;return{name:d,data:g,context:p,globals:m,custom:b,user:j,nested:O,consent:E,id:C,trigger:P,entity:R,action:I,timestamp:i,timing:D,group:s,count:l,version:T,source:void 0===W?{type:"collector",id:"",previous_id:""}:W}}(e,c),[4,w(e,s)];case 3:return[2,u.sent()]}})})()},function(){return O({ok:!1})})()];case 1:return[2,o.sent()]}})})()},"Push",e.hooks)},R=function(t){return _async_to_generator(function(){var n,r,o,a,i,c,s;return _ts_generator(this,function(u){switch(u.label){case 0:return o=e({globalsStatic:{},sessionStatic:{},tagging:0,run:!0},t,{merge:!1,extend:!1}),a={level:null===(n=t.logger)||void 0===n?void 0:n.level,handler:null===(r=t.logger)||void 0===r?void 0:r.handler},i=f(a),c=_object_spread({},o.globalsStatic,t.globals),(s={allowed:!1,config:o,consent:t.consent||{},count:0,custom:t.custom||{},destinations:{},globals:c,group:"",hooks:{},logger:i,on:{},queue:[],round:0,session:void 0,timing:Date.now(),user:t.user||{},version:"0.5.1-next.0",sources:{},push:void 0,command:void 0}).push=L(s,function(e){return _object_spread({timing:Math.round((Date.now()-s.timing)/10)/100,source:{type:"collector",id:"",previous_id:""}},e)}),s.command=(d=A,m(function(e,t,n){return _async_to_generator(function(){return _ts_generator(this,function(r){switch(r.label){case 0:return[4,g(function(){return _async_to_generator(function(){return _ts_generator(this,function(r){switch(r.label){case 0:return[4,d(l,e,t,n)];case 1:return[2,r.sent()]}})})()},function(){return O({ok:!1})})()];case 1:return[2,r.sent()]}})})()},"Command",(l=s).hooks)),[4,S(0,t.destinations||{})];case 1:return[2,(s.destinations=u.sent(),s)]}var l,d})})()},q=function(e){return _async_to_generator(function(e){var t,n,r,o,a,i,c,s,u,l=arguments;return _ts_generator(this,function(f){switch(f.label){case 0:t=l.length>1&&void 0!==l[1]?l[1]:{},n={},r=!0,o=!1,a=void 0,f.label=1;case 1:f.trys.push([1,6,7,8]),i=function(){var t,r,o,a,i,c,u,l,f,d,_,v,p,y,m;return _ts_generator(this,function(h){switch(h.label){case 0:return t=_sliced_to_array(s.value,2),r=t[0],o=t[1],a=o.code,i=o.config,c=void 0===i?{}:i,u=o.env,l=void 0===u?{}:u,f=o.primary,d=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.push(t,_object_spread_props(_object_spread({},n),{mapping:c}))},_=e.logger.scope("source").scope(r),v=_object_spread({push:d,command:e.command,sources:e.sources,elb:e.sources.elb.push,logger:_},l),[4,g(a)(c,v)];case 1:return(p=h.sent())?(y=p.type||"unknown",m=e.logger.scope(y).scope(r),v.logger=m,f&&(p.config=_object_spread_props(_object_spread({},p.config),{primary:f})),n[r]=p,[2]):[2,"continue"]}})},c=Object.entries(t)[Symbol.iterator](),f.label=2;case 2:return(r=(s=c.next()).done)?[3,5]:[5,_ts_values(i())];case 3:f.sent(),f.label=4;case 4:return r=!0,[3,2];case 5:return[3,8];case 6:return u=f.sent(),o=!0,a=u,[3,8];case 7:try{r||null==c.return||c.return()}finally{if(o)throw a}return[7];case 8:return[2,n]}})}).apply(this,arguments)},I=function(e,t){return(e.getAttribute(t)||"").trim()},U=function(e){var t,n=getComputedStyle(e);if("none"===n.display)return!1;if("visible"!==n.visibility)return!1;if(n.opacity&&Number(n.opacity)<.1)return!1;var r=window.innerHeight,o=e.getBoundingClientRect(),a=o.height,i=o.y,c=i+a,s={x:o.x+e.offsetWidth/2,y:o.y+e.offsetHeight/2};if(a<=r){if(e.offsetWidth+o.width===0||e.offsetHeight+o.height===0)return!1;if(s.x<0)return!1;if(s.x>(document.documentElement.clientWidth||window.innerWidth))return!1;if(s.y<0)return!1;if(s.y>(document.documentElement.clientHeight||window.innerHeight))return!1;t=document.elementFromPoint(s.x,s.y)}else{var u=r/2;if(i<0&&c<u)return!1;if(c>r&&i>u)return!1;t=document.elementFromPoint(s.x,r/2)}if(t)do{if(t===e)return!0}while(t=t.parentElement);return!1},D=function(e,t,n){return!1===n?e:(n||(n=rt),n(e,t,rt))},N=function(e){var t,n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Fe.Utils.Storage.Session;function o(e){try{return JSON.parse(e||"")}catch(r){var t=1,n="";return e&&(t=0,n=e),{e:t,v:n}}}switch(r){case Fe.Utils.Storage.Cookie:var a;t=decodeURIComponent((null===(a=document.cookie.split("; ").find(function(t){return t.startsWith(e+"=")}))||void 0===a?void 0:a.split("=")[1])||"");break;case Fe.Utils.Storage.Local:n=o(window.localStorage.getItem(e));break;case Fe.Utils.Storage.Session:n=o(window.sessionStorage.getItem(e))}return n&&(t=n.v,0!=n.e&&n.e<Date.now()&&(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Fe.Utils.Storage.Session;switch(t){case Fe.Utils.Storage.Cookie:T(e,"",0,t);break;case Fe.Utils.Storage.Local:window.localStorage.removeItem(e);break;case Fe.Utils.Storage.Session:window.sessionStorage.removeItem(e)}}(e,r),t="")),function(e){if("true"===e)return!0;if("false"===e)return!1;var t=Number(e);return e==t&&""!==e?t:String(e)}(t||"")},T=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:30,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Fe.Utils.Storage.Session,o=arguments.length>4?arguments[4]:void 0,a={e:Date.now()+6e4*n,v:String(t)},i=JSON.stringify(a);switch(r){case Fe.Utils.Storage.Cookie:t="object"==(void 0===t?"undefined":_type_of(t))?JSON.stringify(t):t;var c="".concat(e,"=").concat(encodeURIComponent(t),"; max-age=").concat(60*n,"; path=/; SameSite=Lax; secure");o&&(c+="; domain="+o),document.cookie=c;break;case Fe.Utils.Storage.Local:window.localStorage.setItem(e,i);break;case Fe.Utils.Storage.Session:window.sessionStorage.setItem(e,i)}return N(e,r)},W=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Date.now(),n=e.length,r=void 0===n?30:n,o=e.deviceKey,a=void 0===o?"elbDeviceId":o,i=e.deviceStorage,s=void 0===i?"local":i,u=e.deviceAge,l=void 0===u?30:u,f=e.sessionKey,d=void 0===f?"elbSessionId":f,g=e.sessionStorage,v=void 0===g?"local":g,p=e.pulse,y=void 0!==p&&p,m=X(e),h=!1,b=_(function(e,t,n){var r=N(e,n);return r||(r=c(8),T(e,r,1440*t,n)),String(r)})(a,l,s),w=_(function(e,n){var o=JSON.parse(String(N(e,n)));return y||(o.isNew=!1,m.marketing&&(Object.assign(o,m),h=!0),h||o.updated+6e4*r<t?(delete o.id,delete o.referrer,o.start=t,o.count++,o.runs=1,h=!0):o.runs++),o},function(){h=!0})(d,v)||{},j={id:c(12),start:t,isNew:!0,count:1,runs:1},k=Object.assign(j,m,w,{device:b},{isStart:h,storage:!0,updated:t},e.data);return T(d,JSON.stringify(k),2*r,v),k},X=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.isStart||!1,r={isStart:n,storage:!1};if(!1===t.isStart)return r;if(!n&&"navigate"!==_sliced_to_array(performance.getEntriesByType("navigation"),1)[0].type)return r;var o=new URL(t.url||window.location.href),a=t.referrer||document.referrer,i=a&&new URL(a).hostname,s=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r="clickId",o={},a={utm_campaign:"campaign",utm_content:"content",utm_medium:"medium",utm_source:"source",utm_term:"term",dclid:r,fbclid:r,gclid:r,msclkid:r,ttclid:r,twclid:r,igshid:r,sclid:r};return Object.entries(e(a,n)).forEach(function(e){var n=_sliced_to_array(e,2),a=n[0],i=n[1],c=t.searchParams.get(a);c&&(i===r&&(i=a,o[r]=a),o[i]=c)}),o}(o,t.parameters);if(Object.keys(s).length&&(s.marketing||(s.marketing=!0),n=!0),!n){var u=t.domains||[];u.push(o.hostname),n=!u.includes(i)}return n?Object.assign({isStart:n,storage:!1,start:Date.now(),id:c(12),referrer:i},s,t.data):r},B=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};n=_object_spread({},st,n);var r=Object.entries(t).reduce(function(t,r){var o=_sliced_to_array(r,2),a=o[0],i=o[1],c=e[a];return n.merge&&Array.isArray(c)&&Array.isArray(i)?t[a]=i.reduce(function(e,t){return e.includes(t)?e:_to_consumable_array(e).concat([t])},_to_consumable_array(c)):(n.extend||a in e)&&(t[a]=i),t},{});return n.shallow?_object_spread({},e,r):(Object.assign(e,r),e)},G=function(e){return Array.isArray(e)},M=function(e){return e===document||_instanceof(e,Element)},K=function(e){return"object"==(void 0===e?"undefined":_type_of(e))&&null!==e&&!G(e)&&"[object Object]"===Object.prototype.toString.call(e)},F=function(e){return"string"==typeof e},H=function(e){if("true"===e)return!0;if("false"===e)return!1;var t=Number(e);return e==t&&""!==e?t:String(e)},J=function(e,t,n){return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];try{return e.apply(void 0,_to_consumable_array(o))}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}},z=function(e){return e?e.trim().replace(/^'|'$/g,"").trim():""},Y=function(e,t){return e+(null!=t?(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]?"-":"")+t:"")},V=function(e,t,n){return ie(I(t,Y(e,n,!(arguments.length>3&&void 0!==arguments[3])||arguments[3]))||"").reduce(function(e,n){var r=_sliced_to_array(ce(n),2),o=r[0],a=r[1];if(!o)return e;if(a||(o.endsWith(":")&&(o=o.slice(0,-1)),a=""),a.startsWith("#")){a=a.slice(1);try{var i=t[a];i||"selected"!==a||(i=t.options[t.selectedIndex].text),a=String(i)}catch(i){a=""}}return o.endsWith("[]")?(o=o.slice(0,-2),G(e[o])||(e[o]=[]),e[o].push(H(a))):e[o]=H(a),e},{})},$=function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:et.Commands.Prefix,r=e||document.body;if(!r)return[];var o=[],a=et.Commands.Action,i="[".concat(Y(n,a,!1),"]"),c=function(e){Object.keys(V(n,e,a,!1)).forEach(function(t){o=o.concat(Q(e,t,n))})};return r!==document&&(null==(t=r.matches)?void 0:t.call(r,i))&&c(r),ae(r,i,c),o},Q=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:et.Commands.Prefix,r=[],o=function(e,t,n){for(var r=t;r;){var o=I(r,Y(e,et.Commands.Actions,!1));if(o){var a=te(o);if(a[n])return{actions:a[n],nearestOnly:!1}}var i=I(r,Y(e,et.Commands.Action,!1));if(i){var c=te(i);if(c[n]||"click"!==n)return{actions:c[n]||[],nearestOnly:!0}}r=re(e,r)}return{actions:[],nearestOnly:!1}}(n,e,t),a=o.actions,i=o.nearestOnly;return a.length?(a.forEach(function(o){var a=ie(o.actionParams||"",",").reduce(function(e,t){return e[z(t)]=!0,e},{}),c=ne(n,e,a,i);if(!c.length){var s="page",u="[".concat(Y(n,s),"]"),l=_sliced_to_array(oe(e,u,n,s),2),f=l[0],d=l[1];c.push({entity:s,data:f,nested:[],context:d})}c.forEach(function(e){r.push({entity:e.entity,action:o.action,data:e.data,trigger:t,context:e.context,nested:e.nested})})}),r):r},Z=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:et.Commands.Prefix,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document,n=Y(e,et.Commands.Globals,!1),r={};return ae(t,"[".concat(n,"]"),function(t){r=B(r,V(e,t,et.Commands.Globals,!1))}),r},ee=function(e,t){var n=window.location,r="page",o=t===document?document.body:t,a=_sliced_to_array(oe(o,"[".concat(Y(e,r),"]"),e,r),2),i=a[0],c=a[1];return i.domain=n.hostname,i.title=document.title,i.referrer=document.referrer,n.search&&(i.search=n.search),n.hash&&(i.hash=n.hash),[i,c]},te=function(e){var t={};return ie(e).forEach(function(e){var n=_sliced_to_array(ce(e),2),r=n[0],o=n[1],a=_sliced_to_array(se(r),2),i=a[0],c=a[1];if(i){var s=_sliced_to_array(se(o||""),2),u=s[0],l=s[1];u=u||i,t[i]||(t[i]=[]),t[i].push({trigger:i,triggerParams:c,action:u,actionParams:l})}}),t},ne=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=[],a=t;for(n=0!==Object.keys(n||{}).length?n:void 0;a;){var i=ut(e,a,t,n);if(i&&(o.push(i),r))break;a=re(e,a)}return o},re=function(e,t){var n=Y(e,et.Commands.Link,!1);if(t.matches("[".concat(n,"]"))){var r=_sliced_to_array(ce(I(t,n)),2),o=r[0];if("child"===r[1])return document.querySelector("[".concat(n,'="').concat(o,':parent"]'))}return!t.parentElement&&t.getRootNode&&_instanceof(t.getRootNode(),ShadowRoot)?t.getRootNode().host:t.parentElement},oe=function(e,t,n,r){for(var o={},a={},i=e,c="[".concat(Y(n,et.Commands.Context,!1),"]"),s=0;i;)i.matches(t)&&(o=B(V(n,i,""),o),o=B(V(n,i,r),o)),i.matches(c)&&(Object.entries(V(n,i,et.Commands.Context,!1)).forEach(function(e){var t=_sliced_to_array(e,2),n=t[0],r=t[1];r&&!a[n]&&(a[n]=[r,s])}),++s),i=re(n,i);return[o,a]},ae=function(e,t,n){e.querySelectorAll(t).forEach(n)},ie=function(e){if(!e)return[];var t=new RegExp("(?:[^".concat(arguments.length>1&&void 0!==arguments[1]?arguments[1]:";","']+|'[^']*')+"),"ig");return e.match(t)||[]},ce=function(e){var t=_sliced_to_array(e.split(/:(.+)/,2),2),n=t[0],r=t[1];return[z(n),z(r)]},se=function(e){var t=_sliced_to_array(e.split("(",2),2),n=t[0],r=t[1];return[n,r?r.slice(0,-1):""]},ue=function(e){var t=Date.now(),n=dt.get(e);return(!n||t-n.lastChecked>500)&&(n={isVisible:U(e),lastChecked:t},dt.set(e,n)),n.isVisible},le=function(e){if(window.IntersectionObserver)return J(function(){return new window.IntersectionObserver(function(t){t.forEach(function(t){!function(e,t){var n,r,o=t.target,a=_t.get(e);if(a){var i=a.timers.get(o);if(t.intersectionRatio>0){var c=Date.now(),s=ft.get(o);if((!s||c-s.lastChecked>1e3)&&(s={isLarge:o.offsetHeight>window.innerHeight,lastChecked:c},ft.set(o,s)),t.intersectionRatio>=.5||s.isLarge&&ue(o)){var u=null==(n=a.elementConfigs)?void 0:n.get(o);if((null==u?void 0:u.multiple)&&u.blocked)return;if(!i){var l=window.setTimeout(function(){return _async_to_generator(function(){var t,n,r,i;return _ts_generator(this,function(c){switch(c.label){case 0:return ue(o)?(r=null==(t=a.elementConfigs)?void 0:t.get(o),(null==r?void 0:r.context)?[4,ye(r.context,o,r.trigger)]:[3,2]):[3,3];case 1:c.sent(),c.label=2;case 2:(null==(i=null==(n=a.elementConfigs)?void 0:n.get(o))?void 0:i.multiple)?i.blocked=!0:function(e,t){var n=_t.get(e);if(n){n.observer&&n.observer.unobserve(t);var r=n.timers.get(t);r&&(clearTimeout(r),n.timers.delete(t)),ft.delete(t),dt.delete(t)}}(e,o),c.label=3;case 3:return[2]}})})()},a.duration);a.timers.set(o,l)}return}}i&&(clearTimeout(i),a.timers.delete(o));var f=null==(r=a.elementConfigs)?void 0:r.get(o);(null==f?void 0:f.multiple)&&(f.blocked=!1)}}(e,t)})},{rootMargin:"0px",threshold:[0,.5]})},function(){})()},fe=function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{multiple:!1},o=e.settings.scope||document,a=_t.get(o);(null==a?void 0:a.observer)&&t&&(a.elementConfigs||(a.elementConfigs=new WeakMap),a.elementConfigs.set(t,{multiple:null!=(n=r.multiple)&&n,blocked:!1,context:e,trigger:r.multiple?"visible":"impression"}),a.observer.observe(t))},de=function(e){if(e){var t=_t.get(e);t&&(t.observer&&t.observer.disconnect(),_t.delete(e))}},_e=function(e,t,n,r,o,a,i){var c=e.elb,s=e.settings;if(F(t)&&t.startsWith("walker "))return c(t,n);if(K(t)){var u=t;return u.source||(u.source=ge()),u.globals||(u.globals=Z(s.prefix,s.scope||document)),c(u)}var l,f=_sliced_to_array(String(K(t)?t.name:t).split(" "),1)[0],d=K(n)?n:{},_={},g=!1;if(M(n)&&(l=n,g=!0),M(o)?l=o:K(o)&&Object.keys(o).length&&(_=o),l){var v=ne(s.prefix||"data-elb",l).find(function(e){return e.entity===f});v&&(g&&(d=v.data),_=v.context)}"page"===f&&(d.id=d.id||window.location.pathname);var p=Z(s.prefix,s.scope);return c({name:String(t||""),data:d,context:_,globals:p,nested:a,custom:i,trigger:F(r)?r:"",source:ge()})},ge=function(){return{type:"browser",id:window.location.href,previous_id:document.referrer}},ve=function(e,t){var n,r;t.scope&&(n=e,(r=t.scope)&&(r.addEventListener("click",J(function(e){he.call(this,n,e)})),r.addEventListener("submit",J(function(e){be.call(this,n,e)}))))},pe=function(e,t){t.scope&&function(e,t){var n=t.scope;gt=[];var r=n||document;de(r),function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3;_t.has(e)||_t.set(e,{observer:le(e),timers:new WeakMap,duration:t})}(r,1e3);var o,a,i,c=Y(t.prefix,et.Commands.Action,!1);r!==document&&me(e,r,c,t),r.querySelectorAll("[".concat(c,"]")).forEach(function(n){me(e,n,c,t)}),gt.length&&(o=e,a=r,i=function(e,t){return e.filter(function(e){var n=_sliced_to_array(e,2),r=n[0],o=n[1],a=window.scrollY+window.innerHeight,i=r.offsetTop;if(a<i)return!0;var c=r.clientHeight;return!(100*(1-(i+c-a)/(c||1))>=o&&(ye(t,r,ht),1))})},lt||(lt=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3,n=null;return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];if(null===n)return n=setTimeout(function(){n=null},t),e.apply(void 0,_to_consumable_array(o))}}(function(){gt=i.call(a,gt,o)}),a.addEventListener("scroll",lt)))}(e,t)},ye=function(e,t,n){return _async_to_generator(function(){var r;return _ts_generator(this,function(o){return r=Q(t,n,e.settings.prefix),[2,Promise.all(r.map(function(t){return _e(e,_object_spread_props(_object_spread({name:"".concat(t.entity," ").concat(t.action)},t),{trigger:n}))}))]})})()},me=function(e,t,n,r){var o=I(t,n);o&&Object.values(te(o)).forEach(function(n){return n.forEach(function(n){switch(n.trigger){case pt:r=e,t.addEventListener("mouseenter",J(function(e){_instanceof(e.target,Element)&&ye(r,e.target,pt)}));break;case yt:!function(e,t){ye(e,t,yt)}(e,t);break;case mt:!function(e,t){setInterval(function(){document.hidden||ye(e,t,mt)},parseInt((arguments.length>2&&void 0!==arguments[2]?arguments[2]:"")||"")||15e3)}(e,t,n.triggerParams);break;case ht:!function(e){var t=parseInt((arguments.length>1&&void 0!==arguments[1]?arguments[1]:"")||"")||50;t<0||t>100||gt.push([e,t])}(t,n.triggerParams);break;case wt:fe(e,t);break;case jt:fe(e,t,{multiple:!0});break;case kt:!function(e,t){setTimeout(function(){return ye(e,t,kt)},parseInt((arguments.length>2&&void 0!==arguments[2]?arguments[2]:"")||"")||15e3)}(e,t,n.triggerParams)}var r})})},he=function(e,t){ye(e,t.target,vt)},be=function(e,t){t.target&&ye(e,t.target,bt)},we=function(e,t,n,r){var o=[],a=!0;n.forEach(function(e){var t,n=ke(e)?_to_consumable_array(Array.from(e)):null!=(t=e)&&"object"==(void 0===t?"undefined":_type_of(t))&&"length"in t&&"number"==typeof t.length?Array.from(e):[e];if((!Array.isArray(n)||0!==n.length)&&(!Array.isArray(n)||1!==n.length||n[0])){var i=n[0],c=!K(i)&&F(i)&&i.startsWith("walker ");if(K(i)){if("object"==(void 0===i?"undefined":_type_of(i))&&0===Object.keys(i).length)return}else{var s=Array.from(n);if(!F(s[0])||""===s[0].trim())return;a&&"walker run"===s[0]&&(a=!1)}(r&&c||!r&&!c)&&o.push(n)}}),o.forEach(function(n){je(e,t,n)})},je=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"data-elb",n=arguments.length>2?arguments[2]:void 0;J(function(){if(Array.isArray(n)){var r=_to_array(n),o=r[0],a=r.slice(1);if(!o||F(o)&&""===o.trim())return;if(F(o)&&o.startsWith("walker "))return void e(o,a[0]);_e.apply(void 0,[{elb:e,settings:{prefix:t,scope:document,pageview:!1,session:!1,elb:"",elbLayer:!1}},o].concat(_to_consumable_array(a)))}else if(n&&"object"==(void 0===n?"undefined":_type_of(n))){if(0===Object.keys(n).length)return;e(n)}},function(){})()},ke=function(e){return null!=e&&"object"==(void 0===e?"undefined":_type_of(e))&&"[object Arguments]"===Object.prototype.toString.call(e)},Oe=function(e){var r=arguments.length>2?arguments[2]:void 0;return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.cb,o=e.consent,a=e.collector,c=e.storage;if(!o)return D((c?W:X)(e),a,r);var s,u,l,f=(s=e,u=r,function(e,r){if(!n(l)||l!==(null==e?void 0:e.group)){l=null==e?void 0:e.group;var o=function(){return X(s)};if(s.consent){var a=(t(s.consent)?s.consent:[s.consent]).reduce(function(e,t){return _object_spread_props(_object_spread({},e),_define_property({},t,!0))},{});i(a,r)&&(o=function(){return W(s)})}return D(o(),e,u)}}),d=(t(o)?o:[o]).reduce(function(e,t){return _object_spread_props(_object_spread({},e),_define_property({},t,f))},{});a?a.command("on","consent",d):nt("walker on","consent",d)}(_object_spread_props(_object_spread({},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}),{collector:{push:e,group:void 0,command:r}}))},Se=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2?arguments[2]:void 0;if(!n.filter||!0!==_(function(){return n.filter(a)},function(){return!1})()){var i,c,s=r(i=a)&&o(i.event)?_object_spread({name:i.event},_object_without_properties(i,["event"])):t(i)&&i.length>=2?Ee(i):null!=(c=i)&&"object"==(void 0===c?"undefined":_type_of(c))&&"length"in c&&"number"==typeof c.length&&c.length>0?Ee(Array.from(i)):null;if(s){var u="".concat(n.prefix||"dataLayer"," ").concat(s.name),l=(s.name,{name:u,data:_object_without_properties(s,["name"])});_(function(){return e(l)},function(){})()}}},Ee=function(e){var t=_sliced_to_array(e,3),n=t[0],a=t[1],i=t[2];if(!o(n))return null;var c,s={};switch(n){case"consent":if(!o(a)||e.length<3)return null;if("default"!==a&&"update"!==a)return null;if(!r(i)||null===i)return null;c="".concat(n," ").concat(a),s=_object_spread({},i);break;case"event":if(!o(a))return null;c=a,r(i)&&(s=_object_spread({},i));break;case"config":if(!o(a))return null;c="".concat(n," ").concat(a),r(i)&&(s=_object_spread({},i));break;case"set":if(o(a))c="".concat(n," ").concat(a),r(i)&&(s=_object_spread({},i));else{if(!r(a))return null;c="".concat(n," custom"),s=_object_spread({},a)}break;default:return null}return _object_spread({name:c},s)},xe=function(){return["consent","update",{ad_user_data:"granted",ad_personalization:"granted",ad_storage:"denied",analytics_storage:"granted"}]},Ce=function(){return["consent","default",{ad_storage:"denied",analytics_storage:"denied",ad_user_data:"denied",ad_personalization:"denied"}]},Ae=function(){return["event","purchase",{transaction_id:"T_12345",value:25.42,currency:"EUR",items:[{item_id:"SKU_12345",item_name:"Product Name",item_category:"Category",quantity:1,price:25.42}]}]},Pe=function(){return["event","add_to_cart",{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"Product Name",item_variant:"red",quantity:1,price:15.25}]}]},Le=function(){return["event","view_item",{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"Product Name",item_category:"Category",price:15.25}]}]},Re=function(){return["config","G-XXXXXXXXXX",{page_title:"Custom Page Title",page_location:"https://example.com/page",send_page_view:!1}]},qe=function(){return["set",{currency:"EUR",country:"DE"}]},Ie=function(){return{event:"custom_event",custom_parameter:"custom_value",user_id:"user123"}},Ue=function(){window.dataLayer=window.dataLayer||[];var e=function(e){r(e)&&r(e.source)&&String(e.source.type).includes("dataLayer")||window.dataLayer.push(e)};return{type:"dataLayer",config:{},push:function(t,n){e(n.data||t)},pushBatch:function(t){e({name:"batch",batched_event:t.key,events:t.data.length?t.data:t.events})}}},De=function(){return _async_to_generator(function(){var t,n,o,a,i,c,s=arguments;return _ts_generator(this,function(u){switch(u.label){case 0:return t=s.length>0&&void 0!==s[0]?s[0]:{},n={collector:{destinations:{dataLayer:{code:Ue()}}},browser:{session:!0},dataLayer:!1,elb:"elb",run:!0},o=e(n,t),a=_object_spread_props(_object_spread({},o.collector),{sources:{browser:{code:At,config:{settings:o.browser},env:{window:"undefined"!=typeof window?window:void 0,document:"undefined"!=typeof document?document:void 0}}}}),o.dataLayer&&(i=r(o.dataLayer)?o.dataLayer:{},a.sources&&(a.sources.dataLayer={code:Ht,config:{settings:i}})),[4,(l=a,_async_to_generator(function(){var e,t,n,r,o,a,i,c,s,u,f;return _ts_generator(this,function(d){switch(d.label){case 0:return[4,R(l=l||{})];case 1:return e=d.sent(),n=e,t={type:"elb",config:{},push:function(e,t,r,o,a,i){return _async_to_generator(function(){var c,s;return _ts_generator(this,function(u){if("string"==typeof e&&e.startsWith("walker "))return c=e.replace("walker ",""),[2,n.command(c,t,r)];if("string"==typeof e)s={name:e},t&&"object"==(void 0===t?"undefined":_type_of(t))&&!Array.isArray(t)&&(s.data=t);else{if(!e||"object"!=(void 0===e?"undefined":_type_of(e)))return[2,{ok:!1,successful:[],queued:[],failed:[]}];s=e,t&&"object"==(void 0===t?"undefined":_type_of(t))&&!Array.isArray(t)&&(s.data=_object_spread({},s.data||{},t))}return[2,(o&&"object"==(void 0===o?"undefined":_type_of(o))&&(s.context=o),a&&Array.isArray(a)&&(s.nested=a),i&&"object"==(void 0===i?"undefined":_type_of(i))&&(s.custom=i),n.push(s))]})})()}},e.sources.elb=t,[4,q(e,l.sources||{})];case 2:return r=d.sent(),Object.assign(e.sources,r),o=l.consent,a=l.user,i=l.globals,c=l.custom,o?[4,e.command("consent",o)]:[3,4];case 3:d.sent(),d.label=4;case 4:return a?[4,e.command("user",a)]:[3,6];case 5:d.sent(),d.label=6;case 6:return i&&Object.assign(e.globals,i),c&&Object.assign(e.custom,c),e.config.run?[4,e.command("run")]:[3,8];case 7:d.sent(),d.label=8;case 8:return s=t.push,u=Object.values(e.sources).filter(function(e){return"elb"!==e.type}),[2,((f=u.find(function(e){return e.config.primary}))?s=f.push:u.length>0&&(s=u[0].push),{collector:e,elb:s})]}})})())];case 1:return c=u.sent(),"undefined"!=typeof window&&(o.elb&&(window[o.elb]=c.elb),o.name&&(window[o.name]=c.collector)),[2,c]}var l})}).apply(this,arguments)},Ne=Object.defineProperty,Te=Object.getOwnPropertyDescriptor,We=Object.getOwnPropertyNames,Xe=Object.prototype.hasOwnProperty,Be={};!function(e,t){for(var n in t)Ne(e,n,{get:t[n],enumerable:!0})}(Be,{Walkerjs:function(){return Jt},createWalkerjs:function(){return De},default:function(){return zt},getAllEvents:function(){return $},getEvents:function(){return Q},getGlobals:function(){return Z}});var Ge=Object.defineProperty;!function(e,t){for(var n in t)Ge(e,n,{get:t[n],enumerable:!0})}({},{Level:function(){return Ke}});var Me,Ke=((Me=Ke||{})[Me.ERROR=0]="ERROR",Me[Me.INFO=1]="INFO",Me[Me.DEBUG=2]="DEBUG",Me),Fe={Utils:{Storage:{Local:"local",Session:"session",Cookie:"cookie"}}},He={merge:!0,shallow:!0,extend:!0};function Je(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new WeakMap;if("object"!=(void 0===e?"undefined":_type_of(e))||null===e)return e;if(t.has(e))return t.get(e);var n=Object.prototype.toString.call(e);if("[object Object]"===n){var r={};for(var o in t.set(e,r),e)Object.prototype.hasOwnProperty.call(e,o)&&(r[o]=Je(e[o],t));return r}if("[object Array]"===n){var a=[];return t.set(e,a),e.forEach(function(e){a.push(Je(e,t))}),a}if("[object Date]"===n)return new Date(e.getTime());if("[object RegExp]"===n){var i=e;return new RegExp(i.source,i.flags)}return e}function ze(e){for(var r=arguments.length>2?arguments[2]:void 0,o=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"").split("."),a=e,i=0;i<o.length;i++){var c=o[i];if("*"===c&&t(a)){var s=o.slice(i+1).join("."),u=[],l=!0,f=!1,d=void 0;try{for(var _,g=a[Symbol.iterator]();!(l=(_=g.next()).done);l=!0){var v=ze(_.value,s,r);u.push(v)}}catch(e){f=!0,d=e}finally{try{l||null==g.return||g.return()}finally{if(f)throw d}}return u}if(!(a=_instanceof(a,Object)?a[c]:void 0))break}return n(a)?a:r}var Ye=function(e,t,n,r){var o="".concat(Ke[e]).concat(r.length>0?" [".concat(r.join(":"),"]"):""),a=Object.keys(n).length>0;0===e?a?console.error(o,t,n):console.error(o,t):a?console.log(o,t,n):console.log(o,t)};function Ve(e){var t=e.level,n=e.handler,r=e.scope,o=function(e,o,a){if(e<=t){var i=l(o,a);n?n(e,i.message,i.context,r,Ye):Ye(e,i.message,i.context,r)}};return{error:function(e,t){return o(0,e,t)},info:function(e,t){return o(1,e,t)},debug:function(e,t){return o(2,e,t)},throw:function(e,t){var o=l(e,t);throw n?n(0,o.message,o.context,r,Ye):Ye(0,o.message,o.context,r),new Error(o.message)},scope:function(e){return Ve({level:t,handler:n,scope:_to_consumable_array(r).concat([e])})}}}function $e(e){return function(e){return"boolean"==typeof e}(e)||o(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!n(e)||t(e)&&e.every($e)||r(e)&&Object.values(e).every($e)}function Qe(e,r){return _async_to_generator(function(e,r){var a,c,s,u=arguments;return _ts_generator(this,function(l){return c=(a=u.length>2&&void 0!==u[2]?u[2]:{}).collector,s=a.consent,[2,(t(r)?r:[r]).reduce(function(r,u){return _async_to_generator(function(){var l,f,_,v,y,m,h,b,w,j,k,O,S,E,x,C,A,P,L,R,q;return _ts_generator(this,function(I){switch(I.label){case 0:return[4,r];case 1:return(l=I.sent())?[2,l]:(f=o(u)?{key:u}:u,Object.keys(f).length?(_=f.condition,v=f.consent,y=f.fn,m=f.key,h=f.loop,b=f.map,w=f.set,j=f.validate,k=f.value,(O=_)?[4,g(_)(e,u,c)]:[3,3]):[2]);case 2:O=!I.sent(),I.label=3;case 3:return O?[2]:v&&!i(v,s)?[2,k]:(S=n(k)?k:e,y?[4,g(y)(e,u,a)]:[3,5]);case 4:S=I.sent(),I.label=5;case 5:return m&&(S=ze(e,m,k)),h?(E=_sliced_to_array(h,2),x=E[0],C=E[1],"this"!==x?[3,6]:(P=[e],[3,8])):[3,11];case 6:return[4,p(e,x,a)];case 7:P=I.sent(),I.label=8;case 8:return t(A=P)?[4,Promise.all(A.map(function(e){return p(e,C,a)}))]:[3,10];case 9:S=I.sent().filter(n),I.label=10;case 10:return[3,17];case 11:return b?[4,Object.entries(b).reduce(function(t,r){var o=_sliced_to_array(r,2),i=o[0],c=o[1];return _async_to_generator(function(){var r,o;return _ts_generator(this,function(s){switch(s.label){case 0:return[4,t];case 1:return r=s.sent(),[4,p(e,c,a)];case 2:return o=s.sent(),[2,(n(o)&&(r[i]=o),r)]}})})()},Promise.resolve({}))]:[3,13];case 12:return S=I.sent(),[3,16];case 13:return(L=w)?[4,Promise.all(w.map(function(t){return Qe(e,t,a)}))]:[3,15];case 14:L=S=I.sent(),I.label=15;case 15:I.label=16;case 16:I.label=17;case 17:return(R=j)?[4,g(j)(S)]:[3,19];case 18:R=!I.sent(),I.label=19;case 19:return R&&(S=void 0),q=d(S),[2,n(q)?q:d(k)]}})})()},Promise.resolve(void 0))]})}).apply(this,arguments)}var Ze,et={Commands:{Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Session:"session",User:"user",Walker:"walker"},Utils:{Storage:{Cookie:"cookie",Local:"local",Session:"session"}}},tt={type:"code",config:{},init:function(e){var t=e.config,n=e.logger,r=t.settings,o=null==r?void 0:r.scripts,a=!0,i=!1,c=void 0;if(o&&"undefined"!=typeof document)try{for(var s,u=o[Symbol.iterator]();!(a=(s=u.next()).done);a=!0){var l=s.value,f=document.createElement("script");f.src=l,f.async=!0,document.head.appendChild(f)}}catch(e){i=!0,c=e}finally{try{a||null==u.return||u.return()}finally{if(i)throw c}}var d=null==r?void 0:r.init;if(d)try{new Function("context",d)(e)}catch(e){n.error("Code destination init error:",e)}},push:function(e,t){var n,r,o=t.mapping,a=t.config,i=t.logger,c=null!==(r=null==o?void 0:o.push)&&void 0!==r?r:null===(n=a.settings)||void 0===n?void 0:n.push;if(c)try{new Function("event","context",c)(e,t)}catch(e){i.error("Code destination push error:",e)}},pushBatch:function(e,t){var n,r,o=t.mapping,a=t.config,i=t.logger,c=null!==(r=null==o?void 0:o.pushBatch)&&void 0!==r?r:null===(n=a.settings)||void 0===n?void 0:n.pushBatch;if(c)try{new Function("batch","context",c)(e,t)}catch(e){i.error("Code destination pushBatch error:",e)}},on:function(e,t){var n,r=t.config,o=t.logger,a=null===(n=r.settings)||void 0===n?void 0:n.on;if(a)try{new Function("type","context",a)(e,t)}catch(e){o.error("Code destination on error:",e)}}},nt=function(){var e=window;(e.elbLayer=e.elbLayer||[]).push(arguments)},rt=function(e,t){var n={};return e.id&&(n.session=e.id),e.storage&&e.device&&(n.device=e.device),t?t.command("user",n):nt("walker user",n),e.isStart&&(t?t.push({name:"session start",data:e}):nt({name:"session start",data:e})),e},ot=Object.defineProperty,at=function(e,t){for(var n in t)ot(e,n,{get:t[n],enumerable:!0})},it=Object.defineProperty;!function(e,t){for(var n in t)it(e,n,{get:t[n],enumerable:!0})}({},{Level:function(){return ct}});var ct=((Ze=ct||{})[Ze.ERROR=0]="ERROR",Ze[Ze.INFO=1]="INFO",Ze[Ze.DEBUG=2]="DEBUG",Ze),st={merge:!0,shallow:!0,extend:!0};function ut(e,t,n,r){var o=I(t,Y(e));if(!o||r&&!r[o])return null;var a=[t],i="[".concat(Y(e,o),"],[").concat(Y(e,""),"]"),c=Y(e,et.Commands.Link,!1),s={},u=[],l=_sliced_to_array(oe(n||t,i,e,o),2),f=l[0],d=l[1];ae(t,"[".concat(c,"]"),function(t){var n=_sliced_to_array(ce(I(t,c)),2),r=n[0];"parent"===n[1]&&ae(document.body,"[".concat(c,'="').concat(r,':child"]'),function(t){a.push(t);var n=ut(e,t);n&&u.push(n)})});var _=[];a.forEach(function(e){e.matches(i)&&_.push(e),ae(e,i,function(e){return _.push(e)})});var g={};return _.forEach(function(t){g=B(g,V(e,t,"")),s=B(s,V(e,t,o))}),s=B(B(g,s),f),a.forEach(function(t){ae(t,"[".concat(Y(e),"]"),function(t){var n=ut(e,t);n&&u.push(n)})}),{entity:o,data:s,context:d,nested:u}}var lt,ft=new WeakMap,dt=new WeakMap,_t=new WeakMap,gt=[],vt="click",pt="hover",yt="load",mt="pulse",ht="scroll",bt="submit",wt="impression",jt="visible",kt="wait";at({},{env:function(){return Ot}});var Ot={};at(Ot,{push:function(){return Ct}});var St=function(){},Et=function(){return function(){return Promise.resolve({ok:!0,successful:[],queued:[],failed:[]})}},xt={error:St,info:St,debug:St,throw:function(e){throw"string"==typeof e?new Error(e):e},scope:function(){return xt}},Ct={get push(){return Et()},get command(){return Et()},get elb(){return Et()},get window(){return{addEventListener:St,removeEventListener:St,location:{href:"https://example.com/page",pathname:"/page",search:"?query=test",hash:"#section",host:"example.com",hostname:"example.com",origin:"https://example.com",protocol:"https:"},document:{},navigator:{language:"en-US",userAgent:"Mozilla/5.0 (Test)"},screen:{width:1920,height:1080},innerWidth:1920,innerHeight:1080,pageXOffset:0,pageYOffset:0,scrollX:0,scrollY:0}},get document(){return{addEventListener:St,removeEventListener:St,querySelector:St,querySelectorAll:function(){return[]},getElementById:St,getElementsByClassName:function(){return[]},getElementsByTagName:function(){return[]},createElement:function(){return{setAttribute:St,getAttribute:St,addEventListener:St,removeEventListener:St}},body:{appendChild:St,removeChild:St},documentElement:{scrollTop:0,scrollLeft:0},readyState:"complete",title:"Test Page",referrer:"",cookie:""}},logger:xt},At=function(e,t){return _async_to_generator(function(){var n,r,o,a,i,c,s,u,l,f,d;return _ts_generator(this,function(_){switch(_.label){case 0:return n=t.elb,r=t.command,o=t.window,a=t.document,i=(null==e?void 0:e.settings)||{},c=o||(void 0!==globalThis.window?globalThis.window:void 0),s=a||(void 0!==globalThis.document?globalThis.document:void 0),u=function(){return _object_spread({prefix:"data-elb",pageview:!0,session:!0,elb:"elb",elbLayer:"elbLayer",scope:(arguments.length>1?arguments[1]:void 0)||void 0},arguments.length>0&&void 0!==arguments[0]?arguments[0]:{})}(i,s),l={settings:u},f={elb:n,settings:u},c&&s?(!1!==u.elbLayer&&n&&function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.name||"elbLayer",r=t.window||window;if(r){var o=r;o[n]||(o[n]=[]);var a=o[n];a.push=function(){for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];if(ke(r[0])){var a=_to_consumable_array(Array.from(r[0])),i=Array.prototype.push.apply(this,[a]);return je(e,t.prefix,a),i}var c=Array.prototype.push.apply(this,r);return r.forEach(function(n){je(e,t.prefix,n)}),c},Array.isArray(a)&&a.length>0&&function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"data-elb",n=arguments.length>2?arguments[2]:void 0;we(e,t,n,!0),we(e,t,n,!1),n.length=0}(e,t.prefix,a)}}(n,{name:F(u.elbLayer)?u.elbLayer:"elbLayer",prefix:u.prefix,window:c}),u.session&&n&&(d="boolean"==typeof u.session?{}:u.session,Oe(n,d,r)),[4,function(e,t,n){return _async_to_generator(function(){var r;return _ts_generator(this,function(o){return r=function(){e(t,n)},"loading"!==document.readyState?r():document.addEventListener("DOMContentLoaded",r),[2]})})()}(ve,f,u)]):[3,2];case 1:_.sent(),function(){if(pe(f,u),u.pageview){var e=_sliced_to_array(ee(u.prefix||"data-elb",u.scope),2),t=e[0],n=e[1];_e(f,"page view",t,"load",n)}}(),F(u.elb)&&u.elb&&(c[u.elb]=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=_sliced_to_array(t,6),o=r[0],a=r[1],i=r[2],c=r[3],s=r[4],u=r[5];return _e(f,o,a,i,c,s,u)}),_.label=2;case 2:return[2,{type:"browser",config:l,push:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=_sliced_to_array(t,6),o=r[0],a=r[1],i=r[2],c=r[3],s=r[4],u=r[5];return _e(f,o,a,i,c,s,u)},destroy:function(){return _async_to_generator(function(){return _ts_generator(this,function(e){return s&&de(u.scope||s),[2]})})()},on:function(e,t){return _async_to_generator(function(){var o,a,i,l;return _ts_generator(this,function(d){switch(e){case"consent":u.session&&t&&n&&(o="boolean"==typeof u.session?{}:u.session,Oe(n,o,r));break;case"session":case"ready":default:break;case"run":s&&c&&(pe(f,u),u.pageview)&&(a=_sliced_to_array(ee(u.prefix||"data-elb",u.scope),2),i=a[0],l=a[1],_e(f,"page view",i,"load",l))}return[2]})})()}}]}})})()},Pt=Object.defineProperty,Lt=function(e,t){for(var n in t)Pt(e,n,{get:t[n],enumerable:!0})},Rt=!1;Lt({},{push:function(){return Dt}});var qt=function(){},It=function(){return function(){return Promise.resolve({ok:!0,successful:[],queued:[],failed:[]})}},Ut={error:qt,info:qt,debug:qt,throw:function(e){throw"string"==typeof e?new Error(e):e},scope:function(){return Ut}},Dt={get push(){return It()},get command(){return It()},get elb(){return It()},get window(){return{dataLayer:[],addEventListener:qt,removeEventListener:qt}},logger:Ut};Lt({},{add_to_cart:function(){return Pe},config:function(){return Re},consentDefault:function(){return Ce},consentUpdate:function(){return xe},directDataLayerEvent:function(){return Ie},purchase:function(){return Ae},setCustom:function(){return qe},view_item:function(){return Le}});Lt({},{add_to_cart:function(){return Xt},config:function(){return Kt},configGA4:function(){return Gt},consentOnlyMapping:function(){return Ft},consentUpdate:function(){return Tt},customEvent:function(){return Mt},purchase:function(){return Wt},view_item:function(){return Bt}});var Nt,Tt={name:"walker consent",settings:{command:{map:{functional:{value:!0},analytics:{key:"analytics_storage",fn:function(e){return"granted"===e}},marketing:{key:"ad_storage",fn:function(e){return"granted"===e}}}}}},Wt={name:"order complete",data:{map:{id:"transaction_id",total:"value",currency:"currency",nested:{loop:["items",{map:{type:{value:"product"},data:{map:{id:"item_id",name:"item_name",category:"item_category",quantity:"quantity",price:"price"}}}}]}}}},Xt={name:"product add",data:{map:{id:"items.0.item_id",name:"items.0.item_name",price:"value",currency:"currency",color:"items.0.item_variant",quantity:"items.0.quantity"}}},Bt={name:"product view",data:{map:{id:"items.0.item_id",name:"items.0.item_name",category:"items.0.item_category",price:"items.0.price",currency:"currency"}}},Gt={name:"page view",data:{map:{title:"page_title",url:"page_location"}}},Mt={data:{map:{user_id:"user_id",custom_parameter:"custom_parameter"}}},Kt={consent:{update:Tt},purchase:Wt,add_to_cart:Xt,view_item:Bt,"config G-XXXXXXXXXX":Gt,custom_event:Mt,"*":{data:{}}},Ft={consent:{update:Tt}},Ht=function(e,t){return _async_to_generator(function(){var n,r,o,a;return _ts_generator(this,function(i){return n=t.elb,r=t.window,o=_object_spread({name:"dataLayer",prefix:"dataLayer"},null==e?void 0:e.settings),a={settings:o},[2,(r&&(function(e,t){var n=t.settings,r=(null==n?void 0:n.name)||"dataLayer",o=window[r];if(Array.isArray(o)&&!Rt){Rt=!0;try{var a=!0,i=!1,c=void 0;try{for(var s,u=o[Symbol.iterator]();!(a=(s=u.next()).done);a=!0){var l=s.value;Se(e,n,l)}}catch(e){i=!0,c=e}finally{try{a||null==u.return||u.return()}finally{if(i)throw c}}}finally{Rt=!1}}}(n,a),function(e,t){var n=t.settings,r=(null==n?void 0:n.name)||"dataLayer";window[r]||(window[r]=[]);var o=window[r];if(Array.isArray(o)){var a=o.push.bind(o);o.push=function(){for(var t=arguments.length,r=new Array(t),o=0;o<t;o++)r[o]=arguments[o];if(Rt)return a.apply(void 0,_to_consumable_array(r));Rt=!0;try{var i=!0,c=!1,s=void 0;try{for(var u,l=r[Symbol.iterator]();!(i=(u=l.next()).done);i=!0){var f=u.value;Se(e,n,f)}}catch(e){c=!0,s=e}finally{try{i||null==l.return||l.return()}finally{if(c)throw s}}}finally{Rt=!1}return a.apply(void 0,_to_consumable_array(r))}}}(n,a)),{type:"dataLayer",config:a,push:n,destroy:function(){return _async_to_generator(function(){var e;return _ts_generator(this,function(t){return e=o.name||"dataLayer",r&&r[e]&&Array.isArray(r[e]),[2]})})()}})]})})()},Jt={},zt=De;return Nt=Be,function(e,t,n,r){if(t&&"object"===(void 0===t?"undefined":_type_of(t))||"function"==typeof t){var o=!0,a=!1,i=void 0;try{for(var c,s=function(){var o=c.value;Xe.call(e,o)||o===n||Ne(e,o,{get:function(){return t[o]},enumerable:!(r=Te(t,o))||r.enumerable})},u=We(t)[Symbol.iterator]();!(o=(c=u.next()).done);o=!0)s()}catch(e){a=!0,i=e}finally{try{o||null==u.return||u.return()}finally{if(a)throw i}}}return e}(Ne({},"__esModule",{value:!0}),Nt)}();
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var e,t=Object.defineProperty,r=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,n={};((e,r)=>{for(var a in r)t(e,a,{get:r[a],enumerable:!0})})(n,{Walkerjs:()=>w,createWalkerjs:()=>y,default:()=>b,getAllEvents:()=>d.getAllEvents,getEvents:()=>d.getEvents,getGlobals:()=>d.getGlobals}),module.exports=(e=n,((e,n,s,c)=>{if(n&&"object"==typeof n||"function"==typeof n)for(let d of a(n))o.call(e,d)||d===s||t(e,d,{get:()=>n[d],enumerable:!(c=r(n,d))||c.enumerable});return e})(t({},"__esModule",{value:!0}),e));var s=require("@walkeros/collector"),c=require("@walkeros/core"),d=require("@walkeros/web-source-browser"),i=require("@walkeros/web-source-datalayer"),l=require("@walkeros/core");function u(){window.dataLayer=window.dataLayer||[];const e=e=>{(0,l.isObject)(e)&&(0,l.isObject)(e.source)&&String(e.source.type).includes("dataLayer")||window.dataLayer.push(e)};return{type:"dataLayer",config:{},push:(t,r)=>{e(r.data||t)},pushBatch:t=>{e({name:"batch",batched_event:t.key,events:t.data.length?t.data:t.events})}}}var w={};async function y(e={}){const t={collector:{destinations:{dataLayer:{code:u()}}},browser:{session:!0},dataLayer:!1,elb:"elb",run:!0},r=(0,c.assign)(t,e),a={...r.collector,sources:{browser:{code:d.sourceBrowser,config:{settings:r.browser},env:{window:"undefined"!=typeof window?window:void 0,document:"undefined"!=typeof document?document:void 0}}}};if(r.dataLayer){const e=(0,c.isObject)(r.dataLayer)?r.dataLayer:{};a.sources&&(a.sources.dataLayer={code:i.sourceDataLayer,config:{settings:e}})}const o=await(0,s.startFlow)(a);return"undefined"!=typeof window&&(r.elb&&(window[r.elb]=o.elb),r.name&&(window[r.name]=o.collector)),o}var b=y;//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/destination.ts","../src/types/index.ts"],"sourcesContent":["import type { Config, Instance } from './types';\nimport type { Collector, Elb, WalkerOS } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\nimport { assign, isObject } from '@walkeros/core';\nimport {\n sourceBrowser,\n getAllEvents,\n getEvents,\n getGlobals,\n SourceBrowser,\n} from '@walkeros/web-source-browser';\nimport { sourceDataLayer } from '@walkeros/web-source-datalayer';\nimport { dataLayerDestination } from './destination';\n\n// Re-export types\nexport * as Walkerjs from './types';\n\nexport { getAllEvents, getEvents, getGlobals };\n\n// Factory function to create walker.js instance\nexport async function createWalkerjs(config: Config = {}): Promise<Instance> {\n // Default configuration\n const defaultConfig: Config = {\n collector: {\n destinations: {\n dataLayer: { code: dataLayerDestination() },\n },\n },\n browser: {\n session: true,\n },\n dataLayer: false,\n elb: 'elb',\n run: true,\n };\n\n const fullConfig = assign(defaultConfig, config);\n\n // Build collector config with sources\n const collectorConfig: Collector.InitConfig = {\n ...fullConfig.collector,\n sources: {\n browser: {\n code: sourceBrowser,\n config: {\n settings: fullConfig.browser,\n },\n env: {\n window: typeof window !== 'undefined' ? window : undefined,\n document: typeof document !== 'undefined' ? document : undefined,\n },\n },\n },\n };\n\n // Add dataLayer source if configured\n if (fullConfig.dataLayer) {\n const dataLayerSettings = isObject(fullConfig.dataLayer)\n ? fullConfig.dataLayer\n : {};\n\n if (collectorConfig.sources) {\n collectorConfig.sources.dataLayer = {\n code: sourceDataLayer,\n config: {\n settings: dataLayerSettings,\n },\n };\n }\n }\n\n const flow = await startFlow<SourceBrowser.BrowserPush>(collectorConfig);\n\n // Set up global variables if configured (only in browser environments)\n if (typeof window !== 'undefined') {\n if (fullConfig.elb) window[fullConfig.elb] = flow.elb;\n if (fullConfig.name) window[fullConfig.name] = flow.collector;\n }\n\n return flow;\n}\n\n// Export factory function as default\nexport default createWalkerjs;\n","import type { Destination } from '@walkeros/core';\nimport type { DataLayer } from './types';\nimport { isObject } from '@walkeros/core';\n\nexport function dataLayerDestination(): Destination.Instance {\n window.dataLayer = window.dataLayer || [];\n const dataLayerPush = (event: unknown) => {\n // Do not process events from dataLayer source\n if (\n isObject(event) &&\n isObject(event.source) &&\n String(event.source.type).includes('dataLayer')\n )\n return;\n\n (window.dataLayer as DataLayer)!.push(event);\n };\n const destination: Destination.Instance = {\n type: 'dataLayer',\n config: {},\n push: (event, context) => {\n dataLayerPush(context.data || event);\n },\n pushBatch: (batch) => {\n dataLayerPush({\n name: 'batch',\n batched_event: batch.key,\n events: batch.data.length ? batch.data : batch.events,\n });\n },\n };\n\n return destination;\n}\n","import type { Collector, Source, WalkerOS } from '@walkeros/core';\nimport type { SourceBrowser } from '@walkeros/web-source-browser';\nimport type { SourceDataLayer } from '@walkeros/web-source-datalayer';\n\ndeclare global {\n interface Window {\n [key: string]: DataLayer;\n }\n}\n\n// Instance interface\nexport interface Instance {\n collector: Collector.Instance;\n elb: SourceBrowser.BrowserPush;\n}\n\n// Configuration interface\nexport interface Config {\n // Collector configuration\n collector?: Collector.InitConfig;\n\n // Browser source configuration\n browser?: Partial<SourceBrowser.Settings>;\n\n // DataLayer configuration\n dataLayer?: boolean | Partial<SourceDataLayer.Settings>;\n\n // Global configuration\n elb?: string; // Name for the global elb function\n name?: string; // Name for the global instance\n run?: boolean; // Auto-run on initialization (default: true)\n}\n\nexport type DataLayer = undefined | Array<unknown>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,uBAA0B;AAC1B,IAAAA,eAAiC;AACjC,gCAMO;AACP,kCAAgC;;;ACThC,kBAAyB;AAElB,SAAS,uBAA6C;AAC3D,SAAO,YAAY,OAAO,aAAa,CAAC;AACxC,QAAM,gBAAgB,CAAC,UAAmB;AAExC,YACE,sBAAS,KAAK,SACd,sBAAS,MAAM,MAAM,KACrB,OAAO,MAAM,OAAO,IAAI,EAAE,SAAS,WAAW;AAE9C;AAEF,IAAC,OAAO,UAAyB,KAAK,KAAK;AAAA,EAC7C;AACA,QAAM,cAAoC;AAAA,IACxC,MAAM;AAAA,IACN,QAAQ,CAAC;AAAA,IACT,MAAM,CAAC,OAAO,YAAY;AACxB,oBAAc,QAAQ,QAAQ,KAAK;AAAA,IACrC;AAAA,IACA,WAAW,CAAC,UAAU;AACpB,oBAAc;AAAA,QACZ,MAAM;AAAA,QACN,eAAe,MAAM;AAAA,QACrB,QAAQ,MAAM,KAAK,SAAS,MAAM,OAAO,MAAM;AAAA,MACjD,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO;AACT;;;ACjCA;;;AFoBA,eAAsB,eAAe,SAAiB,CAAC,GAAsB;AAE3E,QAAM,gBAAwB;AAAA,IAC5B,WAAW;AAAA,MACT,cAAc;AAAA,QACZ,WAAW,EAAE,MAAM,qBAAqB,EAAE;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,SAAS;AAAA,IACX;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAEA,QAAM,iBAAa,qBAAO,eAAe,MAAM;AAG/C,QAAM,kBAAwC;AAAA,IAC5C,GAAG,WAAW;AAAA,IACd,SAAS;AAAA,MACP,SAAS;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,UACN,UAAU,WAAW;AAAA,QACvB;AAAA,QACA,KAAK;AAAA,UACH,QAAQ,OAAO,WAAW,cAAc,SAAS;AAAA,UACjD,UAAU,OAAO,aAAa,cAAc,WAAW;AAAA,QACzD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,MAAI,WAAW,WAAW;AACxB,UAAM,wBAAoB,uBAAS,WAAW,SAAS,IACnD,WAAW,YACX,CAAC;AAEL,QAAI,gBAAgB,SAAS;AAC3B,sBAAgB,QAAQ,YAAY;AAAA,QAClC,MAAM;AAAA,QACN,QAAQ;AAAA,UACN,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,OAAO,UAAM,4BAAqC,eAAe;AAGvE,MAAI,OAAO,WAAW,aAAa;AACjC,QAAI,WAAW,IAAK,QAAO,WAAW,GAAG,IAAI,KAAK;AAClD,QAAI,WAAW,KAAM,QAAO,WAAW,IAAI,IAAI,KAAK;AAAA,EACtD;AAEA,SAAO;AACT;AAGA,IAAO,gBAAQ;","names":["import_core"]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=Object.defineProperty;((t,n)=>{for(var o in n)e(t,o,{get:n[o],enumerable:!0})})({},{Level:()=>n});var t,n=((t=n||{})[t.ERROR=0]="ERROR",t[t.INFO=1]="INFO",t[t.DEBUG=2]="DEBUG",t),o={Storage:{Local:"local",Session:"session",Cookie:"cookie"}},r={merge:!0,shallow:!0,extend:!0};function i(e,t={},n={}){n={...r,...n};const o=Object.entries(t).reduce((t,[o,r])=>{const i=e[o];return n.merge&&Array.isArray(i)&&Array.isArray(r)?t[o]=r.reduce((e,t)=>e.includes(t)?e:[...e,t],[...i]):(n.extend||o in e)&&(t[o]=r),t},{});return n.shallow?{...e,...o}:(Object.assign(e,o),e)}function s(e){return Array.isArray(e)}function a(e){return void 0!==e}function c(e){return"object"==typeof e&&null!==e&&!s(e)&&"[object Object]"===Object.prototype.toString.call(e)}function u(e){return"string"==typeof e}function l(e,t=new WeakMap){if("object"!=typeof e||null===e)return e;if(t.has(e))return t.get(e);const n=Object.prototype.toString.call(e);if("[object Object]"===n){const n={};t.set(e,n);for(const o in e)Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=l(e[o],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(l(e,t))}),n}if("[object Date]"===n)return new Date(e.getTime());if("[object RegExp]"===n){const t=e;return new RegExp(t.source,t.flags)}return e}function d(e,t="",n){const o=t.split(".");let r=e;for(let e=0;e<o.length;e++){const t=o[e];if("*"===t&&s(r)){const t=o.slice(e+1).join("."),i=[];for(const e of r){const o=d(e,t,n);i.push(o)}return i}if(r=r instanceof Object?r[t]:void 0,!r)break}return a(r)?r:n}function f(e,t,n){if(!c(e))return e;const o=l(e),r=t.split(".");let i=o;for(let e=0;e<r.length;e++){const t=r[e];e===r.length-1?i[t]=n:(t in i&&"object"==typeof i[t]&&null!==i[t]||(i[t]={}),i=i[t])}return o}function g(e,t={},n={}){const o={...t,...n},r={};let i=void 0===e;return Object.keys(o).forEach(t=>{o[t]&&(r[t]=!0,e&&e[t]&&(i=!0))}),!!i&&r}function m(e=6){let t="";for(let n=36;t.length<e;)t+=(Math.random()*n|0).toString(n);return t}function p(e,t=1e3,n=!1){let o,r=null,i=!1;return(...s)=>new Promise(a=>{const c=n&&!i;r&&clearTimeout(r),r=setTimeout(()=>{r=null,n&&!i||(o=e(...s),a(o))},t),c&&(i=!0,o=e(...s),a(o))})}function h(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function y(e,t){let n,o={};return e instanceof Error?(n=e.message,o.error=h(e)):n=e,void 0!==t&&(t instanceof Error?o.error=h(t):"object"==typeof t&&null!==t?(o={...o,...t},"error"in o&&o.error instanceof Error&&(o.error=h(o.error))):o.value=t),{message:n,context:o}}var b=(e,t,o,r)=>{const i=`${n[e]}${r.length>0?` [${r.join(":")}]`:""}`,s=Object.keys(o).length>0;0===e?s?console.error(i,t,o):console.error(i,t):s?console.log(i,t,o):console.log(i,t)};function v(e={}){return w({level:void 0!==e.level?(t=e.level,"string"==typeof t?n[t]:t):0,handler:e.handler,scope:[]});var t}function w(e){const{level:t,handler:n,scope:o}=e,r=(e,r,i)=>{if(e<=t){const t=y(r,i);n?n(e,t.message,t.context,o,b):b(e,t.message,t.context,o)}};return{error:(e,t)=>r(0,e,t),info:(e,t)=>r(1,e,t),debug:(e,t)=>r(2,e,t),throw:(e,t)=>{const r=y(e,t);throw n?n(0,r.message,r.context,o,b):b(0,r.message,r.context,o),new Error(r.message)},scope:e=>w({level:t,handler:n,scope:[...o,e]})}}function k(e){return function(e){return"boolean"==typeof e}(e)||u(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!a(e)||s(e)&&e.every(k)||c(e)&&Object.values(e).every(k)}function E(e){return k(e)?e:void 0}function S(e,t,n){return function(...o){try{return e(...o)}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}}function j(e,t,n){return async function(...o){try{return await e(...o)}catch(e){if(!t)return;return await t(e)}finally{await(null==n?void 0:n())}}}async function O(e,t={},n={}){var o;if(!a(e))return;const r=c(e)&&e.consent||n.consent||(null==(o=n.collector)?void 0:o.consent),i=s(t)?t:[t];for(const t of i){const o=await j(_)(e,t,{...n,consent:r});if(a(o))return o}}async function _(e,t,n={}){const{collector:o,consent:r}=n;return(s(t)?t:[t]).reduce(async(t,i)=>{const c=await t;if(c)return c;const l=u(i)?{key:i}:i;if(!Object.keys(l).length)return;const{condition:f,consent:m,fn:p,key:h,loop:y,map:b,set:v,validate:w,value:k}=l;if(f&&!await j(f)(e,i,o))return;if(m&&!g(m,r))return k;let S=a(k)?k:e;if(p&&(S=await j(p)(e,i,n)),h&&(S=d(e,h,k)),y){const[t,o]=y,r="this"===t?[e]:await O(e,t,n);s(r)&&(S=(await Promise.all(r.map(e=>O(e,o,n)))).filter(a))}else b?S=await Object.entries(b).reduce(async(t,[o,r])=>{const i=await t,s=await O(e,r,n);return a(s)&&(i[o]=s),i},Promise.resolve({})):v&&(S=await Promise.all(v.map(t=>_(e,t,n))));w&&!await j(w)(S)&&(S=void 0);const x=E(S);return a(x)?x:E(k)},Promise.resolve(void 0))}async function x(e,t,n){t.policy&&await Promise.all(Object.entries(t.policy).map(async([t,o])=>{const r=await O(e,o,{collector:n});e=f(e,t,r)}));const{eventMapping:o,mappingKey:r}=await async function(e,t){var n;const[o,r]=(e.name||"").split(" ");if(!t||!o||!r)return{};let i,a="",c=o,u=r;const l=t=>{if(t)return(t=s(t)?t:[t]).find(t=>!t.condition||t.condition(e))};t[c]||(c="*");const d=t[c];return d&&(d[u]||(u="*"),i=l(d[u])),i||(c="*",u="*",i=l(null==(n=t[c])?void 0:n[u])),i&&(a=`${c} ${u}`),{eventMapping:i,mappingKey:a}}(e,t.mapping);(null==o?void 0:o.policy)&&await Promise.all(Object.entries(o.policy).map(async([t,o])=>{const r=await O(e,o,{collector:n});e=f(e,t,r)}));let a=t.data&&await O(e,t.data,{collector:n});if(o){if(o.ignore)return{event:e,data:a,mapping:o,mappingKey:r,ignore:!0};if(o.name&&(e.name=o.name),o.data){const t=o.data&&await O(e,o.data,{collector:n});a=c(a)&&c(t)?i(a,t):t}}return{event:e,data:a,mapping:o,mappingKey:r,ignore:!1}}function L(e,t,n){return function(...o){let r;const i="post"+t,s=n["pre"+t],a=n[i];return r=s?s({fn:e},...o):e(...o),a&&(r=a({fn:e,result:r},...o)),r}}var A={Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Session:"session",User:"user",Walker:"walker"},C={type:"code",config:{},init(e){const{config:t,logger:n}=e,o=t.settings,r=null==o?void 0:o.scripts;if(r&&"undefined"!=typeof document)for(const e of r){const t=document.createElement("script");t.src=e,t.async=!0,document.head.appendChild(t)}const i=null==o?void 0:o.init;if(i)try{new Function("context",i)(e)}catch(e){n.error("Code destination init error:",e)}},push(e,t){var n,o;const{mapping:r,config:i,logger:s}=t,a=null!=(o=null==r?void 0:r.push)?o:null==(n=i.settings)?void 0:n.push;if(a)try{new Function("event","context",a)(e,t)}catch(e){s.error("Code destination push error:",e)}},pushBatch(e,t){var n,o;const{mapping:r,config:i,logger:s}=t,a=null!=(o=null==r?void 0:r.pushBatch)?o:null==(n=i.settings)?void 0:n.pushBatch;if(a)try{new Function("batch","context",a)(e,t)}catch(e){s.error("Code destination pushBatch error:",e)}},on(e,t){var n;const{config:o,logger:r}=t,i=null==(n=o.settings)?void 0:n.on;if(i)try{new Function("type","context",i)(e,t)}catch(e){r.error("Code destination on error:",e)}}};function $(e){return!0===e?C:e}async function q(e,t,n){const{allowed:o,consent:r,globals:s,user:a}=e;if(!o)return D({ok:!1});t&&e.queue.push(t),n||(n=e.destinations);const c=await Promise.all(Object.entries(n||{}).map(async([n,o])=>{let c=(o.queue||[]).map(e=>({...e,consent:r}));if(o.queue=[],t){const e=l(t);c.push(e)}if(!c.length)return{id:n,destination:o,skipped:!0};const u=[],d=c.filter(e=>{const t=g(o.config.consent,r,e.consent);return!t||(e.consent=t,u.push(e),!1)});if(o.queue.concat(d),!u.length)return{id:n,destination:o,queue:c};if(!await j(P)(e,o))return{id:n,destination:o,queue:c};let f=!1;return o.dlq||(o.dlq=[]),await Promise.all(u.map(async t=>(t.globals=i(s,t.globals),t.user=i(a,t.user),await j(R,n=>{const r=o.type||"unknown";return e.logger.scope(r).error("Push failed",{error:n,event:t.name}),f=!0,o.dlq.push([t,n]),!1})(e,o,t),t))),{id:n,destination:o,error:f}})),u=[],d=[],f=[];for(const e of c){if(e.skipped)continue;const t=e.destination,n={id:e.id,destination:t};e.error?f.push(n):e.queue&&e.queue.length?(t.queue=(t.queue||[]).concat(e.queue),d.push(n)):u.push(n)}return D({ok:!f.length,event:t,successful:u,queued:d,failed:f})}async function P(e,t){if(t.init&&!t.config.init){const n=t.type||"unknown",o=e.logger.scope(n),r={collector:e,config:t.config,env:I(t.env,t.config.env),logger:o};o.debug("init");const i=await L(t.init,"DestinationInit",e.hooks)(r);if(!1===i)return i;t.config={...i||t.config,init:!0},o.debug("init done")}return!0}async function R(e,t,n){const{config:o}=t,r=await x(n,o,e);if(r.ignore)return!1;const i=t.type||"unknown",s=e.logger.scope(i),c={collector:e,config:o,data:r.data,mapping:r.mapping,env:I(t.env,o.env),logger:s},u=r.mapping,l=r.mappingKey||"* *";if((null==u?void 0:u.batch)&&t.pushBatch){if(t.batches=t.batches||{},!t.batches[l]){const n={key:l,events:[],data:[]};t.batches[l]={batched:n,batchFn:p(()=>{const n=t.batches[l].batched,r={collector:e,config:o,data:void 0,mapping:u,env:I(t.env,o.env),logger:s};s.debug("push batch",{events:n.events.length}),L(t.pushBatch,"DestinationPushBatch",e.hooks)(n,r),s.debug("push batch done"),n.events=[],n.data=[]},u.batch)}}const n=t.batches[l];n.batched.events.push(r.event),a(r.data)&&n.batched.data.push(r.data),n.batchFn()}else s.debug("push",{event:r.event.name}),await L(t.push,"DestinationPush",e.hooks)(r.event,c),s.debug("push done");return!0}function D(e){var t;return i({ok:!(null==(t=null==e?void 0:e.failed)?void 0:t.length),successful:[],queued:[],failed:[]},e)}function I(e,t){return e||t?t?e&&c(e)&&c(t)?{...e,...t}:t:e:{}}function N(e,t,n,o){let r,i=n||[];switch(n||(i=e.on[t]||[]),t){case A.Consent:r=o||e.consent;break;case A.Session:r=e.session;break;case A.Ready:case A.Run:default:r=void 0}if(Object.values(e.sources).forEach(e=>{e.on&&S(e.on)(t,r)}),Object.values(e.destinations).forEach(n=>{if(n.on){const o=n.type||"unknown",i=e.logger.scope(o).scope("on").scope(t),s={collector:e,config:n.config,data:r,env:I(n.env,n.config.env),logger:i};S(n.on)(t,s)}}),i.length)switch(t){case A.Consent:!function(e,t,n){const o=n||e.consent;t.forEach(t=>{Object.keys(o).filter(e=>e in t).forEach(n=>{S(t[n])(e,o)})})}(e,i,o);break;case A.Ready:case A.Run:a=i,(s=e).allowed&&a.forEach(e=>{S(e)(s)});break;case A.Session:!function(e,t){e.session&&t.forEach(t=>{S(t)(e,e.session)})}(e,i)}var s,a}async function X(e,t,n,o){let r;switch(t){case A.Config:c(n)&&i(e.config,n,{shallow:!1});break;case A.Consent:c(n)&&(r=await async function(e,t){const{consent:n}=e;let o=!1;const r={};return Object.entries(t).forEach(([e,t])=>{const n=!!t;r[e]=n,o=o||n}),e.consent=i(n,r),N(e,"consent",void 0,r),o?q(e):D({ok:!0})}(e,n));break;case A.Custom:c(n)&&(e.custom=i(e.custom,n));break;case A.Destination:c(n)&&function(e){return"function"==typeof e}(n.push)&&(r=await async function(e,t,n){const{code:o,config:r={},env:i={}}=t,s=n||r||{init:!1},a=$(o),c={...a,config:s,env:I(a.env,i)};let u=c.config.id;if(!u)do{u=m(4)}while(e.destinations[u]);return e.destinations[u]=c,!1!==c.config.queue&&(c.queue=[...e.queue]),q(e,void 0,{[u]:c})}(e,{code:n},o));break;case A.Globals:c(n)&&(e.globals=i(e.globals,n));break;case A.On:u(n)&&function(e,t,n){const o=e.on,r=o[t]||[],i=s(n)?n:[n];i.forEach(e=>{r.push(e)}),o[t]=r,N(e,t,i)}(e,n,o);break;case A.Ready:N(e,"ready");break;case A.Run:r=await async function(e,t){e.allowed=!0,e.count=0,e.group=m(),e.timing=Date.now(),t&&(t.consent&&(e.consent=i(e.consent,t.consent)),t.user&&(e.user=i(e.user,t.user)),t.globals&&(e.globals=i(e.config.globalsStatic||{},t.globals)),t.custom&&(e.custom=i(e.custom,t.custom))),Object.values(e.destinations).forEach(e=>{e.queue=[]}),e.queue=[],e.round++;const n=await q(e);return N(e,"run"),n}(e,n);break;case A.Session:N(e,"session");break;case A.User:c(n)&&i(e.user,n,{shallow:!1})}return r||{ok:!0,successful:[],queued:[],failed:[]}}function W(e,t){return L(async(n,o={})=>await j(async()=>{let r=n;if(o.mapping){const t=await x(r,o.mapping,e);if(t.ignore)return D({ok:!0});if(o.mapping.consent&&!g(o.mapping.consent,e.consent,t.event.consent))return D({ok:!0});r=t.event}const i=t(r),s=function(e,t){if(!t.name)throw new Error("Event name is required");const[n,o]=t.name.split(" ");if(!n||!o)throw new Error("Event name is invalid");++e.count;const{timestamp:r=Date.now(),group:i=e.group,count:s=e.count}=t,{name:a=`${n} ${o}`,data:c={},context:u={},globals:l=e.globals,custom:d={},user:f=e.user,nested:g=[],consent:m=e.consent,id:p=`${r}-${i}-${s}`,trigger:h="",entity:y=n,action:b=o,timing:v=0,version:w={source:e.version,tagging:e.config.tagging||0},source:k={type:"collector",id:"",previous_id:""}}=t;return{name:a,data:c,context:u,globals:l,custom:d,user:f,nested:g,consent:m,id:p,trigger:h,entity:y,action:b,timestamp:r,timing:v,group:i,count:s,version:w,source:k}}(e,i);return await q(e,s)},()=>D({ok:!1}))(),"Push",e.hooks)}async function T(e){var t,n;const o=i({globalsStatic:{},sessionStatic:{},tagging:0,run:!0},e,{merge:!1,extend:!1}),r=v({level:null==(t=e.logger)?void 0:t.level,handler:null==(n=e.logger)?void 0:n.handler}),s={...o.globalsStatic,...e.globals},a={allowed:!1,config:o,consent:e.consent||{},count:0,custom:e.custom||{},destinations:{},globals:s,group:"",hooks:{},logger:r,on:{},queue:[],round:0,session:void 0,timing:Date.now(),user:e.user||{},version:"0.5.1-next.0",sources:{},push:void 0,command:void 0};return a.push=W(a,e=>({timing:Math.round((Date.now()-a.timing)/10)/100,source:{type:"collector",id:"",previous_id:""},...e})),a.command=(u=X,L(async(e,t,n)=>await j(async()=>await u(c,e,t,n),()=>D({ok:!1}))(),"Command",(c=a).hooks)),a.destinations=await async function(e,t={}){const n={};for(const[e,o]of Object.entries(t)){const{code:t,config:r={},env:i={}}=o,s=$(t),a={...s.config,...r},c=I(s.env,i);n[e]={...s,config:a,env:c}}return n}(0,e.destinations||{}),a;var c,u}async function U(e){e=e||{};const t=await T(e),n=(o=t,{type:"elb",config:{},push:async(e,t,n,r,i,s)=>{if("string"==typeof e&&e.startsWith("walker ")){const r=e.replace("walker ","");return o.command(r,t,n)}let a;if("string"==typeof e)a={name:e},t&&"object"==typeof t&&!Array.isArray(t)&&(a.data=t);else{if(!e||"object"!=typeof e)return{ok:!1,successful:[],queued:[],failed:[]};a=e,t&&"object"==typeof t&&!Array.isArray(t)&&(a.data={...a.data||{},...t})}return r&&"object"==typeof r&&(a.context=r),i&&Array.isArray(i)&&(a.nested=i),s&&"object"==typeof s&&(a.custom=s),o.push(a)}});var o;t.sources.elb=n;const r=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{code:t,config:i={},env:s={},primary:a}=r,c=(t,n={})=>e.push(t,{...n,mapping:i}),u=e.logger.scope("source").scope(o),l={push:c,command:e.command,sources:e.sources,elb:e.sources.elb.push,logger:u,...s},d=await j(t)(i,l);if(!d)continue;const f=d.type||"unknown",g=e.logger.scope(f).scope(o);l.logger=g,a&&(d.config={...d.config,primary:a}),n[o]=d}return n}(t,e.sources||{});Object.assign(t.sources,r);const{consent:i,user:s,globals:a,custom:c}=e;i&&await t.command("consent",i),s&&await t.command("user",s),a&&Object.assign(t.globals,a),c&&Object.assign(t.custom,c),t.config.run&&await t.command("run");let u=n.push;const l=Object.values(t.sources).filter(e=>"elb"!==e.type),d=l.find(e=>e.config.primary);return d?u=d.push:l.length>0&&(u=l[0].push),{collector:t,elb:u}}function B(e,t){return(e.getAttribute(t)||"").trim()}var M=function(){const e=window;(e.elbLayer=e.elbLayer||[]).push(arguments)};function F(e){const t=getComputedStyle(e);if("none"===t.display)return!1;if("visible"!==t.visibility)return!1;if(t.opacity&&Number(t.opacity)<.1)return!1;let n;const o=window.innerHeight,r=e.getBoundingClientRect(),i=r.height,s=r.y,a=s+i,c={x:r.x+e.offsetWidth/2,y:r.y+e.offsetHeight/2};if(i<=o){if(e.offsetWidth+r.width===0||e.offsetHeight+r.height===0)return!1;if(c.x<0)return!1;if(c.x>(document.documentElement.clientWidth||window.innerWidth))return!1;if(c.y<0)return!1;if(c.y>(document.documentElement.clientHeight||window.innerHeight))return!1;n=document.elementFromPoint(c.x,c.y)}else{const e=o/2;if(s<0&&a<e)return!1;if(a>o&&s>e)return!1;n=document.elementFromPoint(c.x,o/2)}if(n)do{if(n===e)return!0}while(n=n.parentElement);return!1}function G(e,t,n){return!1===n?e:(n||(n=H),n(e,t,H))}var H=(e,t)=>{const n={};return e.id&&(n.session=e.id),e.storage&&e.device&&(n.device=e.device),t?t.command("user",n):M("walker user",n),e.isStart&&(t?t.push({name:"session start",data:e}):M({name:"session start",data:e})),e};function K(e,t=o.Storage.Session){var n;function r(e){try{return JSON.parse(e||"")}catch(t){let n=1,o="";return e&&(n=0,o=e),{e:n,v:o}}}let i,s;switch(t){case o.Storage.Cookie:i=decodeURIComponent((null==(n=document.cookie.split("; ").find(t=>t.startsWith(e+"=")))?void 0:n.split("=")[1])||"");break;case o.Storage.Local:s=r(window.localStorage.getItem(e));break;case o.Storage.Session:s=r(window.sessionStorage.getItem(e))}return s&&(i=s.v,0!=s.e&&s.e<Date.now()&&(function(e,t=o.Storage.Session){switch(t){case o.Storage.Cookie:J(e,"",0,t);break;case o.Storage.Local:window.localStorage.removeItem(e);break;case o.Storage.Session:window.sessionStorage.removeItem(e)}}(e,t),i="")),function(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}(i||"")}function J(e,t,n=30,r=o.Storage.Session,i){const s={e:Date.now()+6e4*n,v:String(t)},a=JSON.stringify(s);switch(r){case o.Storage.Cookie:{t="object"==typeof t?JSON.stringify(t):t;let o=`${e}=${encodeURIComponent(t)}; max-age=${60*n}; path=/; SameSite=Lax; secure`;i&&(o+="; domain="+i),document.cookie=o;break}case o.Storage.Local:window.localStorage.setItem(e,a);break;case o.Storage.Session:window.sessionStorage.setItem(e,a)}return K(e,r)}function z(e={}){const t=Date.now(),{length:n=30,deviceKey:o="elbDeviceId",deviceStorage:r="local",deviceAge:i=30,sessionKey:s="elbSessionId",sessionStorage:a="local",pulse:c=!1}=e,u=Y(e);let l=!1;const d=S((e,t,n)=>{let o=K(e,n);return o||(o=m(8),J(e,o,1440*t,n)),String(o)})(o,i,r),f=S((e,o)=>{const r=JSON.parse(String(K(e,o)));return c||(r.isNew=!1,u.marketing&&(Object.assign(r,u),l=!0),l||r.updated+6e4*n<t?(delete r.id,delete r.referrer,r.start=t,r.count++,r.runs=1,l=!0):r.runs++),r},()=>{l=!0})(s,a)||{},g={id:m(12),start:t,isNew:!0,count:1,runs:1},p=Object.assign(g,u,f,{device:d},{isStart:l,storage:!0,updated:t},e.data);return J(s,JSON.stringify(p),2*n,a),p}function Y(e={}){let t=e.isStart||!1;const n={isStart:t,storage:!1};if(!1===e.isStart)return n;if(!t){const[e]=performance.getEntriesByType("navigation");if("navigate"!==e.type)return n}const o=new URL(e.url||window.location.href),r=e.referrer||document.referrer,s=r&&new URL(r).hostname,a=function(e,t={}){const n="clickId",o={},r={utm_campaign:"campaign",utm_content:"content",utm_medium:"medium",utm_source:"source",utm_term:"term",dclid:n,fbclid:n,gclid:n,msclkid:n,ttclid:n,twclid:n,igshid:n,sclid:n};return Object.entries(i(r,t)).forEach(([t,r])=>{const i=e.searchParams.get(t);i&&(r===n&&(r=t,o[n]=t),o[r]=i)}),o}(o,e.parameters);if(Object.keys(a).length&&(a.marketing||(a.marketing=!0),t=!0),!t){const n=e.domains||[];n.push(o.hostname),t=!n.includes(s)}return t?Object.assign({isStart:t,storage:!1,start:Date.now(),id:m(12),referrer:s},a,e.data):n}var V,Q=Object.defineProperty,Z=(e,t)=>{for(var n in t)Q(e,n,{get:t[n],enumerable:!0})},ee=Object.defineProperty;((e,t)=>{for(var n in t)ee(e,n,{get:t[n],enumerable:!0})})({},{Level:()=>te});var te=((V=te||{})[V.ERROR=0]="ERROR",V[V.INFO=1]="INFO",V[V.DEBUG=2]="DEBUG",V),ne={merge:!0,shallow:!0,extend:!0};function oe(e,t={},n={}){n={...ne,...n};const o=Object.entries(t).reduce((t,[o,r])=>{const i=e[o];return n.merge&&Array.isArray(i)&&Array.isArray(r)?t[o]=r.reduce((e,t)=>e.includes(t)?e:[...e,t],[...i]):(n.extend||o in e)&&(t[o]=r),t},{});return n.shallow?{...e,...o}:(Object.assign(e,o),e)}function re(e){return Array.isArray(e)}function ie(e){return e===document||e instanceof Element}function se(e){return"object"==typeof e&&null!==e&&!re(e)&&"[object Object]"===Object.prototype.toString.call(e)}function ae(e){return"string"==typeof e}function ce(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}function ue(e,t,n){return function(...o){try{return e(...o)}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}}function le(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function de(e,t,n=!0){return e+(null!=t?(n?"-":"")+t:"")}function fe(e,t,n,o=!0){return Se(B(t,de(e,n,o))||"").reduce((e,n)=>{let[o,r]=je(n);if(!o)return e;if(r||(o.endsWith(":")&&(o=o.slice(0,-1)),r=""),r.startsWith("#")){r=r.slice(1);try{let e=t[r];e||"selected"!==r||(e=t.options[t.selectedIndex].text),r=String(e)}catch(e){r=""}}return o.endsWith("[]")?(o=o.slice(0,-2),re(e[o])||(e[o]=[]),e[o].push(ce(r))):e[o]=ce(r),e},{})}function ge(e,t=A.Prefix){var n;const o=e||document.body;if(!o)return[];let r=[];const i=A.Action,s=`[${de(t,i,!1)}]`,a=e=>{Object.keys(fe(t,e,i,!1)).forEach(n=>{r=r.concat(me(e,n,t))})};return o!==document&&(null==(n=o.matches)?void 0:n.call(o,s))&&a(o),Ee(o,s,a),r}function me(e,t,n=A.Prefix){const o=[],{actions:r,nearestOnly:i}=function(e,t,n){let o=t;for(;o;){const t=B(o,de(e,A.Actions,!1));if(t){const e=ye(t);if(e[n])return{actions:e[n],nearestOnly:!1}}const r=B(o,de(e,A.Action,!1));if(r){const e=ye(r);if(e[n]||"click"!==n)return{actions:e[n]||[],nearestOnly:!0}}o=we(e,o)}return{actions:[],nearestOnly:!1}}(n,e,t);return r.length?(r.forEach(r=>{const s=Se(r.actionParams||"",",").reduce((e,t)=>(e[le(t)]=!0,e),{}),a=be(n,e,s,i);if(!a.length){const t="page",o=`[${de(n,t)}]`,[r,i]=ke(e,o,n,t);a.push({entity:t,data:r,nested:[],context:i})}a.forEach(e=>{o.push({entity:e.entity,action:r.action,data:e.data,trigger:t,context:e.context,nested:e.nested})})}),o):o}function pe(e=A.Prefix,t=document){const n=de(e,A.Globals,!1);let o={};return Ee(t,`[${n}]`,t=>{o=oe(o,fe(e,t,A.Globals,!1))}),o}function he(e,t){const n=window.location,o="page",r=t===document?document.body:t,[i,s]=ke(r,`[${de(e,o)}]`,e,o);return i.domain=n.hostname,i.title=document.title,i.referrer=document.referrer,n.search&&(i.search=n.search),n.hash&&(i.hash=n.hash),[i,s]}function ye(e){const t={};return Se(e).forEach(e=>{const[n,o]=je(e),[r,i]=Oe(n);if(!r)return;let[s,a]=Oe(o||"");s=s||r,t[r]||(t[r]=[]),t[r].push({trigger:r,triggerParams:i,action:s,actionParams:a})}),t}function be(e,t,n,o=!1){const r=[];let i=t;for(n=0!==Object.keys(n||{}).length?n:void 0;i;){const s=ve(e,i,t,n);if(s&&(r.push(s),o))break;i=we(e,i)}return r}function ve(e,t,n,o){const r=B(t,de(e));if(!r||o&&!o[r])return null;const i=[t],s=`[${de(e,r)}],[${de(e,"")}]`,a=de(e,A.Link,!1);let c={};const u=[],[l,d]=ke(n||t,s,e,r);Ee(t,`[${a}]`,t=>{const[n,o]=je(B(t,a));"parent"===o&&Ee(document.body,`[${a}="${n}:child"]`,t=>{i.push(t);const n=ve(e,t);n&&u.push(n)})});const f=[];i.forEach(e=>{e.matches(s)&&f.push(e),Ee(e,s,e=>f.push(e))});let g={};return f.forEach(t=>{g=oe(g,fe(e,t,"")),c=oe(c,fe(e,t,r))}),c=oe(oe(g,c),l),i.forEach(t=>{Ee(t,`[${de(e)}]`,t=>{const n=ve(e,t);n&&u.push(n)})}),{entity:r,data:c,context:d,nested:u}}function we(e,t){const n=de(e,A.Link,!1);if(t.matches(`[${n}]`)){const[e,o]=je(B(t,n));if("child"===o)return document.querySelector(`[${n}="${e}:parent"]`)}return!t.parentElement&&t.getRootNode&&t.getRootNode()instanceof ShadowRoot?t.getRootNode().host:t.parentElement}function ke(e,t,n,o){let r={};const i={};let s=e;const a=`[${de(n,A.Context,!1)}]`;let c=0;for(;s;)s.matches(t)&&(r=oe(fe(n,s,""),r),r=oe(fe(n,s,o),r)),s.matches(a)&&(Object.entries(fe(n,s,A.Context,!1)).forEach(([e,t])=>{t&&!i[e]&&(i[e]=[t,c])}),++c),s=we(n,s);return[r,i]}function Ee(e,t,n){e.querySelectorAll(t).forEach(n)}function Se(e,t=";"){if(!e)return[];const n=new RegExp(`(?:[^${t}']+|'[^']*')+`,"ig");return e.match(n)||[]}function je(e){const[t,n]=e.split(/:(.+)/,2);return[le(t),le(n)]}function Oe(e){const[t,n]=e.split("(",2);return[t,n?n.slice(0,-1):""]}var _e,xe=new WeakMap,Le=new WeakMap,Ae=new WeakMap;function Ce(e){const t=Date.now();let n=Le.get(e);return(!n||t-n.lastChecked>500)&&(n={isVisible:F(e),lastChecked:t},Le.set(e,n)),n.isVisible}function $e(e){if(window.IntersectionObserver)return ue(()=>new window.IntersectionObserver(t=>{t.forEach(t=>{!function(e,t){var n,o;const r=t.target,i=Ae.get(e);if(!i)return;const s=i.timers.get(r);if(t.intersectionRatio>0){const o=Date.now();let a=xe.get(r);if((!a||o-a.lastChecked>1e3)&&(a={isLarge:r.offsetHeight>window.innerHeight,lastChecked:o},xe.set(r,a)),t.intersectionRatio>=.5||a.isLarge&&Ce(r)){const t=null==(n=i.elementConfigs)?void 0:n.get(r);if((null==t?void 0:t.multiple)&&t.blocked)return;if(!s){const t=window.setTimeout(async()=>{var t,n;if(Ce(r)){const o=null==(t=i.elementConfigs)?void 0:t.get(r);(null==o?void 0:o.context)&&await Fe(o.context,r,o.trigger);const s=null==(n=i.elementConfigs)?void 0:n.get(r);(null==s?void 0:s.multiple)?s.blocked=!0:function(e,t){const n=Ae.get(e);if(!n)return;n.observer&&n.observer.unobserve(t);const o=n.timers.get(t);o&&(clearTimeout(o),n.timers.delete(t)),xe.delete(t),Le.delete(t)}(e,r)}},i.duration);i.timers.set(r,t)}return}}s&&(clearTimeout(s),i.timers.delete(r));const a=null==(o=i.elementConfigs)?void 0:o.get(r);(null==a?void 0:a.multiple)&&(a.blocked=!1)}(e,t)})},{rootMargin:"0px",threshold:[0,.5]}),()=>{})()}function qe(e,t,n={multiple:!1}){var o;const r=e.settings.scope||document,i=Ae.get(r);(null==i?void 0:i.observer)&&t&&(i.elementConfigs||(i.elementConfigs=new WeakMap),i.elementConfigs.set(t,{multiple:null!=(o=n.multiple)&&o,blocked:!1,context:e,trigger:n.multiple?"visible":"impression"}),i.observer.observe(t))}function Pe(e){if(!e)return;const t=Ae.get(e);t&&(t.observer&&t.observer.disconnect(),Ae.delete(e))}function Re(e,t,n,o,r,i,s){const{elb:a,settings:c}=e;if(ae(t)&&t.startsWith("walker "))return a(t,n);if(se(t)){const e=t;return e.source||(e.source=De()),e.globals||(e.globals=pe(c.prefix,c.scope||document)),a(e)}const[u]=String(se(t)?t.name:t).split(" ");let l,d=se(n)?n:{},f={},g=!1;if(ie(n)&&(l=n,g=!0),ie(r)?l=r:se(r)&&Object.keys(r).length&&(f=r),l){const e=be(c.prefix||"data-elb",l).find(e=>e.entity===u);e&&(g&&(d=e.data),f=e.context)}"page"===u&&(d.id=d.id||window.location.pathname);const m=pe(c.prefix,c.scope);return a({name:String(t||""),data:d,context:f,globals:m,nested:i,custom:s,trigger:ae(o)?o:"",source:De()})}function De(){return{type:"browser",id:window.location.href,previous_id:document.referrer}}var Ie=[],Ne="hover",Xe="load",We="pulse",Te="scroll",Ue="wait";function Be(e,t){t.scope&&function(e,t){const n=t.scope;n&&(n.addEventListener("click",ue(function(t){He.call(this,e,t)})),n.addEventListener("submit",ue(function(t){Ke.call(this,e,t)})))}(e,t)}function Me(e,t){t.scope&&function(e,t){const n=t.scope;Ie=[];const o=n||document;Pe(o),function(e,t=1e3){Ae.has(e)||Ae.set(e,{observer:$e(e),timers:new WeakMap,duration:t})}(o,1e3);const r=de(t.prefix,A.Action,!1);o!==document&&Ge(e,o,r,t),o.querySelectorAll(`[${r}]`).forEach(n=>{Ge(e,n,r,t)}),Ie.length&&function(e,t){const n=(e,t)=>e.filter(([e,n])=>{const o=window.scrollY+window.innerHeight,r=e.offsetTop;if(o<r)return!0;const i=e.clientHeight;return!(100*(1-(r+i-o)/(i||1))>=n&&(Fe(t,e,Te),1))});_e||(_e=function(e,t=1e3){let n=null;return function(...o){if(null===n)return n=setTimeout(()=>{n=null},t),e(...o)}}(function(){Ie=n.call(t,Ie,e)}),t.addEventListener("scroll",_e))}(e,o)}(e,t)}async function Fe(e,t,n){const o=me(t,n,e.settings.prefix);return Promise.all(o.map(t=>Re(e,{name:`${t.entity} ${t.action}`,...t,trigger:n})))}function Ge(e,t,n,o){const r=B(t,n);r&&Object.values(ye(r)).forEach(n=>n.forEach(n=>{switch(n.trigger){case Ne:o=e,t.addEventListener("mouseenter",ue(function(e){e.target instanceof Element&&Fe(o,e.target,Ne)}));break;case Xe:!function(e,t){Fe(e,t,Xe)}(e,t);break;case We:!function(e,t,n=""){setInterval(()=>{document.hidden||Fe(e,t,We)},parseInt(n||"")||15e3)}(e,t,n.triggerParams);break;case Te:!function(e,t=""){const n=parseInt(t||"")||50;n<0||n>100||Ie.push([e,n])}(t,n.triggerParams);break;case"impression":qe(e,t);break;case"visible":qe(e,t,{multiple:!0});break;case Ue:!function(e,t,n=""){setTimeout(()=>Fe(e,t,Ue),parseInt(n||"")||15e3)}(e,t,n.triggerParams)}var o}))}function He(e,t){Fe(e,t.target,"click")}function Ke(e,t){t.target&&Fe(e,t.target,"submit")}function Je(e,t,n,o){const r=[];let i=!0;n.forEach(e=>{const t=Ye(e)?[...Array.from(e)]:null!=(n=e)&&"object"==typeof n&&"length"in n&&"number"==typeof n.length?Array.from(e):[e];var n;if(Array.isArray(t)&&0===t.length)return;if(Array.isArray(t)&&1===t.length&&!t[0])return;const s=t[0],a=!se(s)&&ae(s)&&s.startsWith("walker ");if(se(s)){if("object"==typeof s&&0===Object.keys(s).length)return}else{const e=Array.from(t);if(!ae(e[0])||""===e[0].trim())return;const n="walker run";i&&e[0]===n&&(i=!1)}(o&&a||!o&&!a)&&r.push(t)}),r.forEach(n=>{ze(e,t,n)})}function ze(e,t="data-elb",n){ue(()=>{if(Array.isArray(n)){const[o,...r]=n;if(!o||ae(o)&&""===o.trim())return;if(ae(o)&&o.startsWith("walker "))return void e(o,r[0]);Re({elb:e,settings:{prefix:t,scope:document,pageview:!1,session:!1,elb:"",elbLayer:!1}},o,...r)}else if(n&&"object"==typeof n){if(0===Object.keys(n).length)return;e(n)}},()=>{})()}function Ye(e){return null!=e&&"object"==typeof e&&"[object Arguments]"===Object.prototype.toString.call(e)}function Ve(e,t={},n){return function(e={}){const{cb:t,consent:n,collector:o,storage:r}=e;if(!n)return G((r?z:Y)(e),o,t);{const r=function(e,t){let n;return(o,r)=>{if(a(n)&&n===(null==o?void 0:o.group))return;n=null==o?void 0:o.group;let i=()=>Y(e);return e.consent&&g((s(e.consent)?e.consent:[e.consent]).reduce((e,t)=>({...e,[t]:!0}),{}),r)&&(i=()=>z(e)),G(i(),o,t)}}(e,t),i=(s(n)?n:[n]).reduce((e,t)=>({...e,[t]:r}),{});o?o.command("on","consent",i):M("walker on","consent",i)}}({...t,collector:{push:e,group:void 0,command:n}})}Z({},{env:()=>Qe});var Qe={};Z(Qe,{push:()=>nt});var Ze=()=>{},et=()=>()=>Promise.resolve({ok:!0,successful:[],queued:[],failed:[]}),tt={error:Ze,info:Ze,debug:Ze,throw:e=>{throw"string"==typeof e?new Error(e):e},scope:()=>tt},nt={get push(){return et()},get command(){return et()},get elb(){return et()},get window(){return{addEventListener:Ze,removeEventListener:Ze,location:{href:"https://example.com/page",pathname:"/page",search:"?query=test",hash:"#section",host:"example.com",hostname:"example.com",origin:"https://example.com",protocol:"https:"},document:{},navigator:{language:"en-US",userAgent:"Mozilla/5.0 (Test)"},screen:{width:1920,height:1080},innerWidth:1920,innerHeight:1080,pageXOffset:0,pageYOffset:0,scrollX:0,scrollY:0}},get document(){return{addEventListener:Ze,removeEventListener:Ze,querySelector:Ze,querySelectorAll:()=>[],getElementById:Ze,getElementsByClassName:()=>[],getElementsByTagName:()=>[],createElement:()=>({setAttribute:Ze,getAttribute:Ze,addEventListener:Ze,removeEventListener:Ze}),body:{appendChild:Ze,removeChild:Ze},documentElement:{scrollTop:0,scrollLeft:0},readyState:"complete",title:"Test Page",referrer:"",cookie:""}},logger:tt},ot=async(e,t)=>{const{elb:n,command:o,window:r,document:i}=t,s=(null==e?void 0:e.settings)||{},a=r||(void 0!==globalThis.window?globalThis.window:void 0),c=i||(void 0!==globalThis.document?globalThis.document:void 0),u=function(e={},t){return{prefix:"data-elb",pageview:!0,session:!0,elb:"elb",elbLayer:"elbLayer",scope:t||void 0,...e}}(s,c),l={settings:u},d={elb:n,settings:u};if(a&&c){if(!1!==u.elbLayer&&n&&function(e,t={}){const n=t.name||"elbLayer",o=t.window||window;if(!o)return;const r=o;r[n]||(r[n]=[]);const i=r[n];i.push=function(...n){if(Ye(n[0])){const o=[...Array.from(n[0])],r=Array.prototype.push.apply(this,[o]);return ze(e,t.prefix,o),r}const o=Array.prototype.push.apply(this,n);return n.forEach(n=>{ze(e,t.prefix,n)}),o},Array.isArray(i)&&i.length>0&&function(e,t="data-elb",n){Je(e,t,n,!0),Je(e,t,n,!1),n.length=0}(e,t.prefix,i)}(n,{name:ae(u.elbLayer)?u.elbLayer:"elbLayer",prefix:u.prefix,window:a}),u.session&&n){const e="boolean"==typeof u.session?{}:u.session;Ve(n,e,o)}await async function(e,t,n){const o=()=>{e(t,n)};"loading"!==document.readyState?o():document.addEventListener("DOMContentLoaded",o)}(Be,d,u),(()=>{if(Me(d,u),u.pageview){const[e,t]=he(u.prefix||"data-elb",u.scope);Re(d,"page view",e,"load",t)}})(),ae(u.elb)&&u.elb&&(a[u.elb]=(...e)=>{const[t,n,o,r,i,s]=e;return Re(d,t,n,o,r,i,s)})}return{type:"browser",config:l,push:(...e)=>{const[t,n,o,r,i,s]=e;return Re(d,t,n,o,r,i,s)},destroy:async()=>{c&&Pe(u.scope||c)},on:async(e,t)=>{switch(e){case"consent":if(u.session&&t&&n){const e="boolean"==typeof u.session?{}:u.session;Ve(n,e,o)}break;case"session":case"ready":default:break;case"run":if(c&&a&&(Me(d,u),u.pageview)){const[e,t]=he(u.prefix||"data-elb",u.scope);Re(d,"page view",e,"load",t)}}}}},rt=Object.defineProperty,it=(e,t)=>{for(var n in t)rt(e,n,{get:t[n],enumerable:!0})},st=!1;function at(e,t={},n){if(t.filter&&!0===S(()=>t.filter(n),()=>!1)())return;const o=function(e){if(c(e)&&u(e.event)){const{event:t,...n}=e;return{name:t,...n}}return s(e)&&e.length>=2?ct(e):null!=(t=e)&&"object"==typeof t&&"length"in t&&"number"==typeof t.length&&t.length>0?ct(Array.from(e)):null;var t}(n);if(!o)return;const r=`${t.prefix||"dataLayer"} ${o.name}`,{name:i,...a}=o,l={name:r,data:a};S(()=>e(l),()=>{})()}function ct(e){const[t,n,o]=e;if(!u(t))return null;let r,i={};switch(t){case"consent":if(!u(n)||e.length<3)return null;if("default"!==n&&"update"!==n)return null;if(!c(o)||null===o)return null;r=`${t} ${n}`,i={...o};break;case"event":if(!u(n))return null;r=n,c(o)&&(i={...o});break;case"config":if(!u(n))return null;r=`${t} ${n}`,c(o)&&(i={...o});break;case"set":if(u(n))r=`${t} ${n}`,c(o)&&(i={...o});else{if(!c(n))return null;r=`${t} custom`,i={...n}}break;default:return null}return{name:r,...i}}it({},{push:()=>ft});var ut=()=>{},lt=()=>()=>Promise.resolve({ok:!0,successful:[],queued:[],failed:[]}),dt={error:ut,info:ut,debug:ut,throw:e=>{throw"string"==typeof e?new Error(e):e},scope:()=>dt},ft={get push(){return lt()},get command(){return lt()},get elb(){return lt()},get window(){return{dataLayer:[],addEventListener:ut,removeEventListener:ut}},logger:dt};function gt(){return["consent","update",{ad_user_data:"granted",ad_personalization:"granted",ad_storage:"denied",analytics_storage:"granted"}]}function mt(){return["consent","default",{ad_storage:"denied",analytics_storage:"denied",ad_user_data:"denied",ad_personalization:"denied"}]}function pt(){return["event","purchase",{transaction_id:"T_12345",value:25.42,currency:"EUR",items:[{item_id:"SKU_12345",item_name:"Product Name",item_category:"Category",quantity:1,price:25.42}]}]}function ht(){return["event","add_to_cart",{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"Product Name",item_variant:"red",quantity:1,price:15.25}]}]}function yt(){return["event","view_item",{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"Product Name",item_category:"Category",price:15.25}]}]}function bt(){return["config","G-XXXXXXXXXX",{page_title:"Custom Page Title",page_location:"https://example.com/page",send_page_view:!1}]}function vt(){return["set",{currency:"EUR",country:"DE"}]}function wt(){return{event:"custom_event",custom_parameter:"custom_value",user_id:"user123"}}it({},{add_to_cart:()=>ht,config:()=>bt,consentDefault:()=>mt,consentUpdate:()=>gt,directDataLayerEvent:()=>wt,purchase:()=>pt,setCustom:()=>vt,view_item:()=>yt});it({},{add_to_cart:()=>St,config:()=>xt,configGA4:()=>Ot,consentOnlyMapping:()=>Lt,consentUpdate:()=>kt,customEvent:()=>_t,purchase:()=>Et,view_item:()=>jt});var kt={name:"walker consent",settings:{command:{map:{functional:{value:!0},analytics:{key:"analytics_storage",fn:e=>"granted"===e},marketing:{key:"ad_storage",fn:e=>"granted"===e}}}}},Et={name:"order complete",data:{map:{id:"transaction_id",total:"value",currency:"currency",nested:{loop:["items",{map:{type:{value:"product"},data:{map:{id:"item_id",name:"item_name",category:"item_category",quantity:"quantity",price:"price"}}}}]}}}},St={name:"product add",data:{map:{id:"items.0.item_id",name:"items.0.item_name",price:"value",currency:"currency",color:"items.0.item_variant",quantity:"items.0.quantity"}}},jt={name:"product view",data:{map:{id:"items.0.item_id",name:"items.0.item_name",category:"items.0.item_category",price:"items.0.price",currency:"currency"}}},Ot={name:"page view",data:{map:{title:"page_title",url:"page_location"}}},_t={data:{map:{user_id:"user_id",custom_parameter:"custom_parameter"}}},xt={consent:{update:kt},purchase:Et,add_to_cart:St,view_item:jt,"config G-XXXXXXXXXX":Ot,custom_event:_t,"*":{data:{}}},Lt={consent:{update:kt}},At=async(e,t)=>{const{elb:n,window:o}=t,r={name:"dataLayer",prefix:"dataLayer",...null==e?void 0:e.settings},i={settings:r};return o&&(function(e,t){const n=t.settings,o=(null==n?void 0:n.name)||"dataLayer",r=window[o];if(Array.isArray(r)&&!st){st=!0;try{for(const t of r)at(e,n,t)}finally{st=!1}}}(n,i),function(e,t){const n=t.settings,o=(null==n?void 0:n.name)||"dataLayer";window[o]||(window[o]=[]);const r=window[o];if(!Array.isArray(r))return;const i=r.push.bind(r);r.push=function(...t){if(st)return i(...t);st=!0;try{for(const o of t)at(e,n,o)}finally{st=!1}return i(...t)}}(n,i)),{type:"dataLayer",config:i,push:n,destroy:async()=>{const e=r.name||"dataLayer";o&&o[e]&&Array.isArray(o[e])}}};function Ct(){window.dataLayer=window.dataLayer||[];const e=e=>{c(e)&&c(e.source)&&String(e.source.type).includes("dataLayer")||window.dataLayer.push(e)};return{type:"dataLayer",config:{},push:(t,n)=>{e(n.data||t)},pushBatch:t=>{e({name:"batch",batched_event:t.key,events:t.data.length?t.data:t.events})}}}var $t={};async function qt(e={}){const t=i({collector:{destinations:{dataLayer:{code:Ct()}}},browser:{session:!0},dataLayer:!1,elb:"elb",run:!0},e),n={...t.collector,sources:{browser:{code:ot,config:{settings:t.browser},env:{window:"undefined"!=typeof window?window:void 0,document:"undefined"!=typeof document?document:void 0}}}};if(t.dataLayer){const e=c(t.dataLayer)?t.dataLayer:{};n.sources&&(n.sources.dataLayer={code:At,config:{settings:e}})}const o=await U(n);return"undefined"!=typeof window&&(t.elb&&(window[t.elb]=o.elb),t.name&&(window[t.name]=o.collector)),o}var Pt=qt;export{$t as Walkerjs,qt as createWalkerjs,Pt as default,ge as getAllEvents,me as getEvents,pe as getGlobals};//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/destination.ts","../src/types/index.ts","../src/index.ts"],"sourcesContent":["import type { Destination } from '@walkeros/core';\nimport type { DataLayer } from './types';\nimport { isObject } from '@walkeros/core';\n\nexport function dataLayerDestination(): Destination.Instance {\n window.dataLayer = window.dataLayer || [];\n const dataLayerPush = (event: unknown) => {\n // Do not process events from dataLayer source\n if (\n isObject(event) &&\n isObject(event.source) &&\n String(event.source.type).includes('dataLayer')\n )\n return;\n\n (window.dataLayer as DataLayer)!.push(event);\n };\n const destination: Destination.Instance = {\n type: 'dataLayer',\n config: {},\n push: (event, context) => {\n dataLayerPush(context.data || event);\n },\n pushBatch: (batch) => {\n dataLayerPush({\n name: 'batch',\n batched_event: batch.key,\n events: batch.data.length ? batch.data : batch.events,\n });\n },\n };\n\n return destination;\n}\n","import type { Collector, Source, WalkerOS } from '@walkeros/core';\nimport type { SourceBrowser } from '@walkeros/web-source-browser';\nimport type { SourceDataLayer } from '@walkeros/web-source-datalayer';\n\ndeclare global {\n interface Window {\n [key: string]: DataLayer;\n }\n}\n\n// Instance interface\nexport interface Instance {\n collector: Collector.Instance;\n elb: SourceBrowser.BrowserPush;\n}\n\n// Configuration interface\nexport interface Config {\n // Collector configuration\n collector?: Collector.InitConfig;\n\n // Browser source configuration\n browser?: Partial<SourceBrowser.Settings>;\n\n // DataLayer configuration\n dataLayer?: boolean | Partial<SourceDataLayer.Settings>;\n\n // Global configuration\n elb?: string; // Name for the global elb function\n name?: string; // Name for the global instance\n run?: boolean; // Auto-run on initialization (default: true)\n}\n\nexport type DataLayer = undefined | Array<unknown>;\n","import type { Config, Instance } from './types';\nimport type { Collector, Elb, WalkerOS } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\nimport { assign, isObject } from '@walkeros/core';\nimport {\n sourceBrowser,\n getAllEvents,\n getEvents,\n getGlobals,\n SourceBrowser,\n} from '@walkeros/web-source-browser';\nimport { sourceDataLayer } from '@walkeros/web-source-datalayer';\nimport { dataLayerDestination } from './destination';\n\n// Re-export types\nexport * as Walkerjs from './types';\n\nexport { getAllEvents, getEvents, getGlobals };\n\n// Factory function to create walker.js instance\nexport async function createWalkerjs(config: Config = {}): Promise<Instance> {\n // Default configuration\n const defaultConfig: Config = {\n collector: {\n destinations: {\n dataLayer: { code: dataLayerDestination() },\n },\n },\n browser: {\n session: true,\n },\n dataLayer: false,\n elb: 'elb',\n run: true,\n };\n\n const fullConfig = assign(defaultConfig, config);\n\n // Build collector config with sources\n const collectorConfig: Collector.InitConfig = {\n ...fullConfig.collector,\n sources: {\n browser: {\n code: sourceBrowser,\n config: {\n settings: fullConfig.browser,\n },\n env: {\n window: typeof window !== 'undefined' ? window : undefined,\n document: typeof document !== 'undefined' ? document : undefined,\n },\n },\n },\n };\n\n // Add dataLayer source if configured\n if (fullConfig.dataLayer) {\n const dataLayerSettings = isObject(fullConfig.dataLayer)\n ? fullConfig.dataLayer\n : {};\n\n if (collectorConfig.sources) {\n collectorConfig.sources.dataLayer = {\n code: sourceDataLayer,\n config: {\n settings: dataLayerSettings,\n },\n };\n }\n }\n\n const flow = await startFlow<SourceBrowser.BrowserPush>(collectorConfig);\n\n // Set up global variables if configured (only in browser environments)\n if (typeof window !== 'undefined') {\n if (fullConfig.elb) window[fullConfig.elb] = flow.elb;\n if (fullConfig.name) window[fullConfig.name] = flow.collector;\n }\n\n return flow;\n}\n\n// Export factory function as default\nexport default createWalkerjs;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO,SAAS,uBAA6C;AAC3D,SAAO,YAAY,OAAO,aAAa,CAAC;AACxC,QAAM,gBAAgB,CAAC,UAAmB;AAExC,QACE,EAAS,KAAK,KACd,EAAS,MAAM,MAAM,KACrB,OAAO,MAAM,OAAO,IAAI,EAAE,SAAS,WAAW;AAE9C;AAEF,IAAC,OAAO,UAAyB,KAAK,KAAK;AAAA,EAC7C;AACA,QAAM,cAAoC;AAAA,IACxC,MAAM;AAAA,IACN,QAAQ,CAAC;AAAA,IACT,MAAM,CAAC,OAAO,YAAY;AACxB,oBAAc,QAAQ,QAAQ,KAAK;AAAA,IACrC;AAAA,IACA,WAAW,CAAC,UAAU;AACpB,oBAAc;AAAA,QACZ,MAAM;AAAA,QACN,eAAe,MAAM;AAAA,QACrB,QAAQ,MAAM,KAAK,SAAS,MAAM,OAAO,MAAM;AAAA,MACjD,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO;AACT;;;ACjCA;;;ACoBA,eAAsB,eAAe,SAAiB,CAAC,GAAsB;AAE3E,QAAM,gBAAwB;AAAA,IAC5B,WAAW;AAAA,MACT,cAAc;AAAA,QACZ,WAAW,EAAE,MAAM,qBAAqB,EAAE;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,SAAS;AAAA,IACX;AAAA,IACA,WAAW;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAEA,QAAM,aAAa,EAAO,eAAe,MAAM;AAG/C,QAAM,kBAAwC;AAAA,IAC5C,GAAG,WAAW;AAAA,IACd,SAAS;AAAA,MACP,SAAS;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,UACN,UAAU,WAAW;AAAA,QACvB;AAAA,QACA,KAAK;AAAA,UACH,QAAQ,OAAO,WAAW,cAAc,SAAS;AAAA,UACjD,UAAU,OAAO,aAAa,cAAc,WAAW;AAAA,QACzD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,MAAI,WAAW,WAAW;AACxB,UAAM,oBAAoB,EAAS,WAAW,SAAS,IACnD,WAAW,YACX,CAAC;AAEL,QAAI,gBAAgB,SAAS;AAC3B,sBAAgB,QAAQ,YAAY;AAAA,QAClC,MAAMA;AAAA,QACN,QAAQ;AAAA,UACN,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,OAAO,MAAMC,GAAqC,eAAe;AAGvE,MAAI,OAAO,WAAW,aAAa;AACjC,QAAI,WAAW,IAAK,QAAO,WAAW,GAAG,IAAI,KAAK;AAClD,QAAI,WAAW,KAAM,QAAO,WAAW,IAAI,IAAI,KAAK;AAAA,EACtD;AAEA,SAAO;AACT;AAGA,IAAO,gBAAQ;","names":["D","Q"]}
|
package/dist/walker.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(()=>{var e=Object.defineProperty;((t,n)=>{for(var o in n)e(t,o,{get:n[o],enumerable:!0})})({},{Level:()=>n});var t,n=((t=n||{})[t.ERROR=0]="ERROR",t[t.INFO=1]="INFO",t[t.DEBUG=2]="DEBUG",t),o={Storage:{Local:"local",Session:"session",Cookie:"cookie"}},r={merge:!0,shallow:!0,extend:!0};function i(e,t={},n={}){n={...r,...n};const o=Object.entries(t).reduce((t,[o,r])=>{const i=e[o];return n.merge&&Array.isArray(i)&&Array.isArray(r)?t[o]=r.reduce((e,t)=>e.includes(t)?e:[...e,t],[...i]):(n.extend||o in e)&&(t[o]=r),t},{});return n.shallow?{...e,...o}:(Object.assign(e,o),e)}function s(e){return Array.isArray(e)}function a(e){return void 0!==e}function c(e){return"object"==typeof e&&null!==e&&!s(e)&&"[object Object]"===Object.prototype.toString.call(e)}function u(e){return"string"==typeof e}function l(e,t=new WeakMap){if("object"!=typeof e||null===e)return e;if(t.has(e))return t.get(e);const n=Object.prototype.toString.call(e);if("[object Object]"===n){const n={};t.set(e,n);for(const o in e)Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=l(e[o],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(l(e,t))}),n}if("[object Date]"===n)return new Date(e.getTime());if("[object RegExp]"===n){const t=e;return new RegExp(t.source,t.flags)}return e}function d(e,t="",n){const o=t.split(".");let r=e;for(let e=0;e<o.length;e++){const t=o[e];if("*"===t&&s(r)){const t=o.slice(e+1).join("."),i=[];for(const e of r){const o=d(e,t,n);i.push(o)}return i}if(r=r instanceof Object?r[t]:void 0,!r)break}return a(r)?r:n}function f(e,t,n){if(!c(e))return e;const o=l(e),r=t.split(".");let i=o;for(let e=0;e<r.length;e++){const t=r[e];e===r.length-1?i[t]=n:(t in i&&"object"==typeof i[t]&&null!==i[t]||(i[t]={}),i=i[t])}return o}function g(e,t={},n={}){const o={...t,...n},r={};let i=void 0===e;return Object.keys(o).forEach(t=>{o[t]&&(r[t]=!0,e&&e[t]&&(i=!0))}),!!i&&r}function m(e=6){let t="";for(let n=36;t.length<e;)t+=(Math.random()*n|0).toString(n);return t}function p(e,t=1e3,n=!1){let o,r=null,i=!1;return(...s)=>new Promise(a=>{const c=n&&!i;r&&clearTimeout(r),r=setTimeout(()=>{r=null,n&&!i||(o=e(...s),a(o))},t),c&&(i=!0,o=e(...s),a(o))})}function h(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function y(e,t){let n,o={};return e instanceof Error?(n=e.message,o.error=h(e)):n=e,void 0!==t&&(t instanceof Error?o.error=h(t):"object"==typeof t&&null!==t?(o={...o,...t},"error"in o&&o.error instanceof Error&&(o.error=h(o.error))):o.value=t),{message:n,context:o}}var b=(e,t,o,r)=>{const i=`${n[e]}${r.length>0?` [${r.join(":")}]`:""}`,s=Object.keys(o).length>0;0===e?s?console.error(i,t,o):console.error(i,t):s?console.log(i,t,o):console.log(i,t)};function v(e={}){return w({level:void 0!==e.level?(t=e.level,"string"==typeof t?n[t]:t):0,handler:e.handler,scope:[]});var t}function w(e){const{level:t,handler:n,scope:o}=e,r=(e,r,i)=>{if(e<=t){const t=y(r,i);n?n(e,t.message,t.context,o,b):b(e,t.message,t.context,o)}};return{error:(e,t)=>r(0,e,t),info:(e,t)=>r(1,e,t),debug:(e,t)=>r(2,e,t),throw:(e,t)=>{const r=y(e,t);throw n?n(0,r.message,r.context,o,b):b(0,r.message,r.context,o),new Error(r.message)},scope:e=>w({level:t,handler:n,scope:[...o,e]})}}function k(e){return function(e){return"boolean"==typeof e}(e)||u(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!a(e)||s(e)&&e.every(k)||c(e)&&Object.values(e).every(k)}function E(e){return k(e)?e:void 0}function S(e,t,n){return function(...o){try{return e(...o)}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}}function O(e,t,n){return async function(...o){try{return await e(...o)}catch(e){if(!t)return;return await t(e)}finally{await(null==n?void 0:n())}}}async function j(e,t={},n={}){var o;if(!a(e))return;const r=c(e)&&e.consent||n.consent||(null==(o=n.collector)?void 0:o.consent),i=s(t)?t:[t];for(const t of i){const o=await O(_)(e,t,{...n,consent:r});if(a(o))return o}}async function _(e,t,n={}){const{collector:o,consent:r}=n;return(s(t)?t:[t]).reduce(async(t,i)=>{const c=await t;if(c)return c;const l=u(i)?{key:i}:i;if(!Object.keys(l).length)return;const{condition:f,consent:m,fn:p,key:h,loop:y,map:b,set:v,validate:w,value:k}=l;if(f&&!await O(f)(e,i,o))return;if(m&&!g(m,r))return k;let S=a(k)?k:e;if(p&&(S=await O(p)(e,i,n)),h&&(S=d(e,h,k)),y){const[t,o]=y,r="this"===t?[e]:await j(e,t,n);s(r)&&(S=(await Promise.all(r.map(e=>j(e,o,n)))).filter(a))}else b?S=await Object.entries(b).reduce(async(t,[o,r])=>{const i=await t,s=await j(e,r,n);return a(s)&&(i[o]=s),i},Promise.resolve({})):v&&(S=await Promise.all(v.map(t=>_(e,t,n))));w&&!await O(w)(S)&&(S=void 0);const x=E(S);return a(x)?x:E(k)},Promise.resolve(void 0))}async function x(e,t,n){t.policy&&await Promise.all(Object.entries(t.policy).map(async([t,o])=>{const r=await j(e,o,{collector:n});e=f(e,t,r)}));const{eventMapping:o,mappingKey:r}=await async function(e,t){var n;const[o,r]=(e.name||"").split(" ");if(!t||!o||!r)return{};let i,a="",c=o,u=r;const l=t=>{if(t)return(t=s(t)?t:[t]).find(t=>!t.condition||t.condition(e))};t[c]||(c="*");const d=t[c];return d&&(d[u]||(u="*"),i=l(d[u])),i||(c="*",u="*",i=l(null==(n=t[c])?void 0:n[u])),i&&(a=`${c} ${u}`),{eventMapping:i,mappingKey:a}}(e,t.mapping);(null==o?void 0:o.policy)&&await Promise.all(Object.entries(o.policy).map(async([t,o])=>{const r=await j(e,o,{collector:n});e=f(e,t,r)}));let a=t.data&&await j(e,t.data,{collector:n});if(o){if(o.ignore)return{event:e,data:a,mapping:o,mappingKey:r,ignore:!0};if(o.name&&(e.name=o.name),o.data){const t=o.data&&await j(e,o.data,{collector:n});a=c(a)&&c(t)?i(a,t):t}}return{event:e,data:a,mapping:o,mappingKey:r,ignore:!1}}function L(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function A(e,t,n){return function(...o){let r;const i="post"+t,s=n["pre"+t],a=n[i];return r=s?s({fn:e},...o):e(...o),a&&(r=a({fn:e,result:r},...o)),r}}function C(e,t){return(e.getAttribute(t)||"").trim()}function $(e){const t={};return function(e,t=";"){if(!e)return[];const n=new RegExp(`(?:[^${t}']+|'[^']*')+`,"ig");return e.match(n)||[]}(e).forEach(e=>{const[n,o]=function(e){const[t,n]=e.split(/:(.+)/,2);return[L(t||""),L(n||"")]}(e);n&&("true"===o?t[n]=!0:"false"===o?t[n]=!1:o&&/^\d+$/.test(o)?t[n]=parseInt(o,10):o&&/^\d+\.\d+$/.test(o)?t[n]=parseFloat(o):t[n]=o||!0)}),t}var q=function(){const e=window;(e.elbLayer=e.elbLayer||[]).push(arguments)};function R(e){const t=getComputedStyle(e);if("none"===t.display)return!1;if("visible"!==t.visibility)return!1;if(t.opacity&&Number(t.opacity)<.1)return!1;let n;const o=window.innerHeight,r=e.getBoundingClientRect(),i=r.height,s=r.y,a=s+i,c={x:r.x+e.offsetWidth/2,y:r.y+e.offsetHeight/2};if(i<=o){if(e.offsetWidth+r.width===0||e.offsetHeight+r.height===0)return!1;if(c.x<0)return!1;if(c.x>(document.documentElement.clientWidth||window.innerWidth))return!1;if(c.y<0)return!1;if(c.y>(document.documentElement.clientHeight||window.innerHeight))return!1;n=document.elementFromPoint(c.x,c.y)}else{const e=o/2;if(s<0&&a<e)return!1;if(a>o&&s>e)return!1;n=document.elementFromPoint(c.x,o/2)}if(n)do{if(n===e)return!0}while(n=n.parentElement);return!1}function P(e,t,n){return!1===n?e:(n||(n=D),n(e,t,D))}var D=(e,t)=>{const n={};return e.id&&(n.session=e.id),e.storage&&e.device&&(n.device=e.device),t?t.command("user",n):q("walker user",n),e.isStart&&(t?t.push({name:"session start",data:e}):q({name:"session start",data:e})),e};function I(e,t=o.Storage.Session){var n;function r(e){try{return JSON.parse(e||"")}catch(t){let n=1,o="";return e&&(n=0,o=e),{e:n,v:o}}}let i,s;switch(t){case o.Storage.Cookie:i=decodeURIComponent((null==(n=document.cookie.split("; ").find(t=>t.startsWith(e+"=")))?void 0:n.split("=")[1])||"");break;case o.Storage.Local:s=r(window.localStorage.getItem(e));break;case o.Storage.Session:s=r(window.sessionStorage.getItem(e))}return s&&(i=s.v,0!=s.e&&s.e<Date.now()&&(function(e,t=o.Storage.Session){switch(t){case o.Storage.Cookie:N(e,"",0,t);break;case o.Storage.Local:window.localStorage.removeItem(e);break;case o.Storage.Session:window.sessionStorage.removeItem(e)}}(e,t),i="")),function(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}(i||"")}function N(e,t,n=30,r=o.Storage.Session,i){const s={e:Date.now()+6e4*n,v:String(t)},a=JSON.stringify(s);switch(r){case o.Storage.Cookie:{t="object"==typeof t?JSON.stringify(t):t;let o=`${e}=${encodeURIComponent(t)}; max-age=${60*n}; path=/; SameSite=Lax; secure`;i&&(o+="; domain="+i),document.cookie=o;break}case o.Storage.Local:window.localStorage.setItem(e,a);break;case o.Storage.Session:window.sessionStorage.setItem(e,a)}return I(e,r)}function X(e={}){const t=Date.now(),{length:n=30,deviceKey:o="elbDeviceId",deviceStorage:r="local",deviceAge:i=30,sessionKey:s="elbSessionId",sessionStorage:a="local",pulse:c=!1}=e,u=T(e);let l=!1;const d=S((e,t,n)=>{let o=I(e,n);return o||(o=m(8),N(e,o,1440*t,n)),String(o)})(o,i,r),f=S((e,o)=>{const r=JSON.parse(String(I(e,o)));return c||(r.isNew=!1,u.marketing&&(Object.assign(r,u),l=!0),l||r.updated+6e4*n<t?(delete r.id,delete r.referrer,r.start=t,r.count++,r.runs=1,l=!0):r.runs++),r},()=>{l=!0})(s,a)||{},g={id:m(12),start:t,isNew:!0,count:1,runs:1},p=Object.assign(g,u,f,{device:d},{isStart:l,storage:!0,updated:t},e.data);return N(s,JSON.stringify(p),2*n,a),p}function T(e={}){let t=e.isStart||!1;const n={isStart:t,storage:!1};if(!1===e.isStart)return n;if(!t){const[e]=performance.getEntriesByType("navigation");if("navigate"!==e.type)return n}const o=new URL(e.url||window.location.href),r=e.referrer||document.referrer,s=r&&new URL(r).hostname,a=function(e,t={}){const n="clickId",o={},r={utm_campaign:"campaign",utm_content:"content",utm_medium:"medium",utm_source:"source",utm_term:"term",dclid:n,fbclid:n,gclid:n,msclkid:n,ttclid:n,twclid:n,igshid:n,sclid:n};return Object.entries(i(r,t)).forEach(([t,r])=>{const i=e.searchParams.get(t);i&&(r===n&&(r=t,o[n]=t),o[r]=i)}),o}(o,e.parameters);if(Object.keys(a).length&&(a.marketing||(a.marketing=!0),t=!0),!t){const n=e.domains||[];n.push(o.hostname),t=!n.includes(s)}return t?Object.assign({isStart:t,storage:!1,start:Date.now(),id:m(12),referrer:s},a,e.data):n}var U={Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Session:"session",User:"user",Walker:"walker"},W={type:"code",config:{},init(e){const{config:t,logger:n}=e,o=t.settings,r=null==o?void 0:o.scripts;if(r&&"undefined"!=typeof document)for(const e of r){const t=document.createElement("script");t.src=e,t.async=!0,document.head.appendChild(t)}const i=null==o?void 0:o.init;if(i)try{new Function("context",i)(e)}catch(e){n.error("Code destination init error:",e)}},push(e,t){var n,o;const{mapping:r,config:i,logger:s}=t,a=null!=(o=null==r?void 0:r.push)?o:null==(n=i.settings)?void 0:n.push;if(a)try{new Function("event","context",a)(e,t)}catch(e){s.error("Code destination push error:",e)}},pushBatch(e,t){var n,o;const{mapping:r,config:i,logger:s}=t,a=null!=(o=null==r?void 0:r.pushBatch)?o:null==(n=i.settings)?void 0:n.pushBatch;if(a)try{new Function("batch","context",a)(e,t)}catch(e){s.error("Code destination pushBatch error:",e)}},on(e,t){var n;const{config:o,logger:r}=t,i=null==(n=o.settings)?void 0:n.on;if(i)try{new Function("type","context",i)(e,t)}catch(e){r.error("Code destination on error:",e)}}};function B(e){return!0===e?W:e}async function M(e,t,n){const{allowed:o,consent:r,globals:s,user:a}=e;if(!o)return H({ok:!1});t&&e.queue.push(t),n||(n=e.destinations);const c=await Promise.all(Object.entries(n||{}).map(async([n,o])=>{let c=(o.queue||[]).map(e=>({...e,consent:r}));if(o.queue=[],t){const e=l(t);c.push(e)}if(!c.length)return{id:n,destination:o,skipped:!0};const u=[],d=c.filter(e=>{const t=g(o.config.consent,r,e.consent);return!t||(e.consent=t,u.push(e),!1)});if(o.queue.concat(d),!u.length)return{id:n,destination:o,queue:c};if(!await O(F)(e,o))return{id:n,destination:o,queue:c};let f=!1;return o.dlq||(o.dlq=[]),await Promise.all(u.map(async t=>(t.globals=i(s,t.globals),t.user=i(a,t.user),await O(G,n=>{const r=o.type||"unknown";return e.logger.scope(r).error("Push failed",{error:n,event:t.name}),f=!0,o.dlq.push([t,n]),!1})(e,o,t),t))),{id:n,destination:o,error:f}})),u=[],d=[],f=[];for(const e of c){if(e.skipped)continue;const t=e.destination,n={id:e.id,destination:t};e.error?f.push(n):e.queue&&e.queue.length?(t.queue=(t.queue||[]).concat(e.queue),d.push(n)):u.push(n)}return H({ok:!f.length,event:t,successful:u,queued:d,failed:f})}async function F(e,t){if(t.init&&!t.config.init){const n=t.type||"unknown",o=e.logger.scope(n),r={collector:e,config:t.config,env:K(t.env,t.config.env),logger:o};o.debug("init");const i=await A(t.init,"DestinationInit",e.hooks)(r);if(!1===i)return i;t.config={...i||t.config,init:!0},o.debug("init done")}return!0}async function G(e,t,n){const{config:o}=t,r=await x(n,o,e);if(r.ignore)return!1;const i=t.type||"unknown",s=e.logger.scope(i),c={collector:e,config:o,data:r.data,mapping:r.mapping,env:K(t.env,o.env),logger:s},u=r.mapping,l=r.mappingKey||"* *";if((null==u?void 0:u.batch)&&t.pushBatch){if(t.batches=t.batches||{},!t.batches[l]){const n={key:l,events:[],data:[]};t.batches[l]={batched:n,batchFn:p(()=>{const n=t.batches[l].batched,r={collector:e,config:o,data:void 0,mapping:u,env:K(t.env,o.env),logger:s};s.debug("push batch",{events:n.events.length}),A(t.pushBatch,"DestinationPushBatch",e.hooks)(n,r),s.debug("push batch done"),n.events=[],n.data=[]},u.batch)}}const n=t.batches[l];n.batched.events.push(r.event),a(r.data)&&n.batched.data.push(r.data),n.batchFn()}else s.debug("push",{event:r.event.name}),await A(t.push,"DestinationPush",e.hooks)(r.event,c),s.debug("push done");return!0}function H(e){var t;return i({ok:!(null==(t=null==e?void 0:e.failed)?void 0:t.length),successful:[],queued:[],failed:[]},e)}function K(e,t){return e||t?t?e&&c(e)&&c(t)?{...e,...t}:t:e:{}}function J(e,t,n,o){let r,i=n||[];switch(n||(i=e.on[t]||[]),t){case U.Consent:r=o||e.consent;break;case U.Session:r=e.session;break;case U.Ready:case U.Run:default:r=void 0}if(Object.values(e.sources).forEach(e=>{e.on&&S(e.on)(t,r)}),Object.values(e.destinations).forEach(n=>{if(n.on){const o=n.type||"unknown",i=e.logger.scope(o).scope("on").scope(t),s={collector:e,config:n.config,data:r,env:K(n.env,n.config.env),logger:i};S(n.on)(t,s)}}),i.length)switch(t){case U.Consent:!function(e,t,n){const o=n||e.consent;t.forEach(t=>{Object.keys(o).filter(e=>e in t).forEach(n=>{S(t[n])(e,o)})})}(e,i,o);break;case U.Ready:case U.Run:a=i,(s=e).allowed&&a.forEach(e=>{S(e)(s)});break;case U.Session:!function(e,t){e.session&&t.forEach(t=>{S(t)(e,e.session)})}(e,i)}var s,a}async function z(e,t,n,o){let r;switch(t){case U.Config:c(n)&&i(e.config,n,{shallow:!1});break;case U.Consent:c(n)&&(r=await async function(e,t){const{consent:n}=e;let o=!1;const r={};return Object.entries(t).forEach(([e,t])=>{const n=!!t;r[e]=n,o=o||n}),e.consent=i(n,r),J(e,"consent",void 0,r),o?M(e):H({ok:!0})}(e,n));break;case U.Custom:c(n)&&(e.custom=i(e.custom,n));break;case U.Destination:c(n)&&function(e){return"function"==typeof e}(n.push)&&(r=await async function(e,t,n){const{code:o,config:r={},env:i={}}=t,s=n||r||{init:!1},a=B(o),c={...a,config:s,env:K(a.env,i)};let u=c.config.id;if(!u)do{u=m(4)}while(e.destinations[u]);return e.destinations[u]=c,!1!==c.config.queue&&(c.queue=[...e.queue]),M(e,void 0,{[u]:c})}(e,{code:n},o));break;case U.Globals:c(n)&&(e.globals=i(e.globals,n));break;case U.On:u(n)&&function(e,t,n){const o=e.on,r=o[t]||[],i=s(n)?n:[n];i.forEach(e=>{r.push(e)}),o[t]=r,J(e,t,i)}(e,n,o);break;case U.Ready:J(e,"ready");break;case U.Run:r=await async function(e,t){e.allowed=!0,e.count=0,e.group=m(),e.timing=Date.now(),t&&(t.consent&&(e.consent=i(e.consent,t.consent)),t.user&&(e.user=i(e.user,t.user)),t.globals&&(e.globals=i(e.config.globalsStatic||{},t.globals)),t.custom&&(e.custom=i(e.custom,t.custom))),Object.values(e.destinations).forEach(e=>{e.queue=[]}),e.queue=[],e.round++;const n=await M(e);return J(e,"run"),n}(e,n);break;case U.Session:J(e,"session");break;case U.User:c(n)&&i(e.user,n,{shallow:!1})}return r||{ok:!0,successful:[],queued:[],failed:[]}}function Y(e,t){return A(async(n,o={})=>await O(async()=>{let r=n;if(o.mapping){const t=await x(r,o.mapping,e);if(t.ignore)return H({ok:!0});if(o.mapping.consent&&!g(o.mapping.consent,e.consent,t.event.consent))return H({ok:!0});r=t.event}const i=t(r),s=function(e,t){if(!t.name)throw new Error("Event name is required");const[n,o]=t.name.split(" ");if(!n||!o)throw new Error("Event name is invalid");++e.count;const{timestamp:r=Date.now(),group:i=e.group,count:s=e.count}=t,{name:a=`${n} ${o}`,data:c={},context:u={},globals:l=e.globals,custom:d={},user:f=e.user,nested:g=[],consent:m=e.consent,id:p=`${r}-${i}-${s}`,trigger:h="",entity:y=n,action:b=o,timing:v=0,version:w={source:e.version,tagging:e.config.tagging||0},source:k={type:"collector",id:"",previous_id:""}}=t;return{name:a,data:c,context:u,globals:l,custom:d,user:f,nested:g,consent:m,id:p,trigger:h,entity:y,action:b,timestamp:r,timing:v,group:i,count:s,version:w,source:k}}(e,i);return await M(e,s)},()=>H({ok:!1}))(),"Push",e.hooks)}async function V(e){var t,n;const o=i({globalsStatic:{},sessionStatic:{},tagging:0,run:!0},e,{merge:!1,extend:!1}),r=v({level:null==(t=e.logger)?void 0:t.level,handler:null==(n=e.logger)?void 0:n.handler}),s={...o.globalsStatic,...e.globals},a={allowed:!1,config:o,consent:e.consent||{},count:0,custom:e.custom||{},destinations:{},globals:s,group:"",hooks:{},logger:r,on:{},queue:[],round:0,session:void 0,timing:Date.now(),user:e.user||{},version:"0.5.1-next.0",sources:{},push:void 0,command:void 0};return a.push=Y(a,e=>({timing:Math.round((Date.now()-a.timing)/10)/100,source:{type:"collector",id:"",previous_id:""},...e})),a.command=(u=z,A(async(e,t,n)=>await O(async()=>await u(c,e,t,n),()=>H({ok:!1}))(),"Command",(c=a).hooks)),a.destinations=await async function(e,t={}){const n={};for(const[e,o]of Object.entries(t)){const{code:t,config:r={},env:i={}}=o,s=B(t),a={...s.config,...r},c=K(s.env,i);n[e]={...s,config:a,env:c}}return n}(0,e.destinations||{}),a;var c,u}async function Q(e){e=e||{};const t=await V(e),n=(o=t,{type:"elb",config:{},push:async(e,t,n,r,i,s)=>{if("string"==typeof e&&e.startsWith("walker ")){const r=e.replace("walker ","");return o.command(r,t,n)}let a;if("string"==typeof e)a={name:e},t&&"object"==typeof t&&!Array.isArray(t)&&(a.data=t);else{if(!e||"object"!=typeof e)return{ok:!1,successful:[],queued:[],failed:[]};a=e,t&&"object"==typeof t&&!Array.isArray(t)&&(a.data={...a.data||{},...t})}return r&&"object"==typeof r&&(a.context=r),i&&Array.isArray(i)&&(a.nested=i),s&&"object"==typeof s&&(a.custom=s),o.push(a)}});var o;t.sources.elb=n;const r=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{code:t,config:i={},env:s={},primary:a}=r,c=(t,n={})=>e.push(t,{...n,mapping:i}),u=e.logger.scope("source").scope(o),l={push:c,command:e.command,sources:e.sources,elb:e.sources.elb.push,logger:u,...s},d=await O(t)(i,l);if(!d)continue;const f=d.type||"unknown",g=e.logger.scope(f).scope(o);l.logger=g,a&&(d.config={...d.config,primary:a}),n[o]=d}return n}(t,e.sources||{});Object.assign(t.sources,r);const{consent:i,user:s,globals:a,custom:c}=e;i&&await t.command("consent",i),s&&await t.command("user",s),a&&Object.assign(t.globals,a),c&&Object.assign(t.custom,c),t.config.run&&await t.command("run");let u=n.push;const l=Object.values(t.sources).filter(e=>"elb"!==e.type),d=l.find(e=>e.config.primary);return d?u=d.push:l.length>0&&(u=l[0].push),{collector:t,elb:u}}var Z,ee=Object.defineProperty,te=(e,t)=>{for(var n in t)ee(e,n,{get:t[n],enumerable:!0})},ne=Object.defineProperty;((e,t)=>{for(var n in t)ne(e,n,{get:t[n],enumerable:!0})})({},{Level:()=>oe});var oe=((Z=oe||{})[Z.ERROR=0]="ERROR",Z[Z.INFO=1]="INFO",Z[Z.DEBUG=2]="DEBUG",Z),re={merge:!0,shallow:!0,extend:!0};function ie(e,t={},n={}){n={...re,...n};const o=Object.entries(t).reduce((t,[o,r])=>{const i=e[o];return n.merge&&Array.isArray(i)&&Array.isArray(r)?t[o]=r.reduce((e,t)=>e.includes(t)?e:[...e,t],[...i]):(n.extend||o in e)&&(t[o]=r),t},{});return n.shallow?{...e,...o}:(Object.assign(e,o),e)}function se(e){return Array.isArray(e)}function ae(e){return e===document||e instanceof Element}function ce(e){return"object"==typeof e&&null!==e&&!se(e)&&"[object Object]"===Object.prototype.toString.call(e)}function ue(e){return"string"==typeof e}function le(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}function de(e,t,n){return function(...o){try{return e(...o)}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}}function fe(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function ge(e,t,n=!0){return e+(null!=t?(n?"-":"")+t:"")}function me(e,t,n,o=!0){return Se(C(t,ge(e,n,o))||"").reduce((e,n)=>{let[o,r]=Oe(n);if(!o)return e;if(r||(o.endsWith(":")&&(o=o.slice(0,-1)),r=""),r.startsWith("#")){r=r.slice(1);try{let e=t[r];e||"selected"!==r||(e=t.options[t.selectedIndex].text),r=String(e)}catch(e){r=""}}return o.endsWith("[]")?(o=o.slice(0,-2),se(e[o])||(e[o]=[]),e[o].push(le(r))):e[o]=le(r),e},{})}function pe(e=U.Prefix,t=document){const n=ge(e,U.Globals,!1);let o={};return Ee(t,`[${n}]`,t=>{o=ie(o,me(e,t,U.Globals,!1))}),o}function he(e,t){const n=window.location,o="page",r=t===document?document.body:t,[i,s]=ke(r,`[${ge(e,o)}]`,e,o);return i.domain=n.hostname,i.title=document.title,i.referrer=document.referrer,n.search&&(i.search=n.search),n.hash&&(i.hash=n.hash),[i,s]}function ye(e){const t={};return Se(e).forEach(e=>{const[n,o]=Oe(e),[r,i]=je(n);if(!r)return;let[s,a]=je(o||"");s=s||r,t[r]||(t[r]=[]),t[r].push({trigger:r,triggerParams:i,action:s,actionParams:a})}),t}function be(e,t,n,o=!1){const r=[];let i=t;for(n=0!==Object.keys(n||{}).length?n:void 0;i;){const s=ve(e,i,t,n);if(s&&(r.push(s),o))break;i=we(e,i)}return r}function ve(e,t,n,o){const r=C(t,ge(e));if(!r||o&&!o[r])return null;const i=[t],s=`[${ge(e,r)}],[${ge(e,"")}]`,a=ge(e,U.Link,!1);let c={};const u=[],[l,d]=ke(n||t,s,e,r);Ee(t,`[${a}]`,t=>{const[n,o]=Oe(C(t,a));"parent"===o&&Ee(document.body,`[${a}="${n}:child"]`,t=>{i.push(t);const n=ve(e,t);n&&u.push(n)})});const f=[];i.forEach(e=>{e.matches(s)&&f.push(e),Ee(e,s,e=>f.push(e))});let g={};return f.forEach(t=>{g=ie(g,me(e,t,"")),c=ie(c,me(e,t,r))}),c=ie(ie(g,c),l),i.forEach(t=>{Ee(t,`[${ge(e)}]`,t=>{const n=ve(e,t);n&&u.push(n)})}),{entity:r,data:c,context:d,nested:u}}function we(e,t){const n=ge(e,U.Link,!1);if(t.matches(`[${n}]`)){const[e,o]=Oe(C(t,n));if("child"===o)return document.querySelector(`[${n}="${e}:parent"]`)}return!t.parentElement&&t.getRootNode&&t.getRootNode()instanceof ShadowRoot?t.getRootNode().host:t.parentElement}function ke(e,t,n,o){let r={};const i={};let s=e;const a=`[${ge(n,U.Context,!1)}]`;let c=0;for(;s;)s.matches(t)&&(r=ie(me(n,s,""),r),r=ie(me(n,s,o),r)),s.matches(a)&&(Object.entries(me(n,s,U.Context,!1)).forEach(([e,t])=>{t&&!i[e]&&(i[e]=[t,c])}),++c),s=we(n,s);return[r,i]}function Ee(e,t,n){e.querySelectorAll(t).forEach(n)}function Se(e,t=";"){if(!e)return[];const n=new RegExp(`(?:[^${t}']+|'[^']*')+`,"ig");return e.match(n)||[]}function Oe(e){const[t,n]=e.split(/:(.+)/,2);return[fe(t),fe(n)]}function je(e){const[t,n]=e.split("(",2);return[t,n?n.slice(0,-1):""]}var _e,xe=new WeakMap,Le=new WeakMap,Ae=new WeakMap;function Ce(e){const t=Date.now();let n=Le.get(e);return(!n||t-n.lastChecked>500)&&(n={isVisible:R(e),lastChecked:t},Le.set(e,n)),n.isVisible}function $e(e){if(window.IntersectionObserver)return de(()=>new window.IntersectionObserver(t=>{t.forEach(t=>{!function(e,t){var n,o;const r=t.target,i=Ae.get(e);if(!i)return;const s=i.timers.get(r);if(t.intersectionRatio>0){const o=Date.now();let a=xe.get(r);if((!a||o-a.lastChecked>1e3)&&(a={isLarge:r.offsetHeight>window.innerHeight,lastChecked:o},xe.set(r,a)),t.intersectionRatio>=.5||a.isLarge&&Ce(r)){const t=null==(n=i.elementConfigs)?void 0:n.get(r);if((null==t?void 0:t.multiple)&&t.blocked)return;if(!s){const t=window.setTimeout(async()=>{var t,n;if(Ce(r)){const o=null==(t=i.elementConfigs)?void 0:t.get(r);(null==o?void 0:o.context)&&await Fe(o.context,r,o.trigger);const s=null==(n=i.elementConfigs)?void 0:n.get(r);(null==s?void 0:s.multiple)?s.blocked=!0:function(e,t){const n=Ae.get(e);if(!n)return;n.observer&&n.observer.unobserve(t);const o=n.timers.get(t);o&&(clearTimeout(o),n.timers.delete(t)),xe.delete(t),Le.delete(t)}(e,r)}},i.duration);i.timers.set(r,t)}return}}s&&(clearTimeout(s),i.timers.delete(r));const a=null==(o=i.elementConfigs)?void 0:o.get(r);(null==a?void 0:a.multiple)&&(a.blocked=!1)}(e,t)})},{rootMargin:"0px",threshold:[0,.5]}),()=>{})()}function qe(e,t,n={multiple:!1}){var o;const r=e.settings.scope||document,i=Ae.get(r);(null==i?void 0:i.observer)&&t&&(i.elementConfigs||(i.elementConfigs=new WeakMap),i.elementConfigs.set(t,{multiple:null!=(o=n.multiple)&&o,blocked:!1,context:e,trigger:n.multiple?"visible":"impression"}),i.observer.observe(t))}function Re(e){if(!e)return;const t=Ae.get(e);t&&(t.observer&&t.observer.disconnect(),Ae.delete(e))}function Pe(e,t,n,o,r,i,s){const{elb:a,settings:c}=e;if(ue(t)&&t.startsWith("walker "))return a(t,n);if(ce(t)){const e=t;return e.source||(e.source=De()),e.globals||(e.globals=pe(c.prefix,c.scope||document)),a(e)}const[u]=String(ce(t)?t.name:t).split(" ");let l,d=ce(n)?n:{},f={},g=!1;if(ae(n)&&(l=n,g=!0),ae(r)?l=r:ce(r)&&Object.keys(r).length&&(f=r),l){const e=be(c.prefix||"data-elb",l).find(e=>e.entity===u);e&&(g&&(d=e.data),f=e.context)}"page"===u&&(d.id=d.id||window.location.pathname);const m=pe(c.prefix,c.scope);return a({name:String(t||""),data:d,context:f,globals:m,nested:i,custom:s,trigger:ue(o)?o:"",source:De()})}function De(){return{type:"browser",id:window.location.href,previous_id:document.referrer}}var Ie=[],Ne="hover",Xe="load",Te="pulse",Ue="scroll",We="wait";function Be(e,t){t.scope&&function(e,t){const n=t.scope;n&&(n.addEventListener("click",de(function(t){He.call(this,e,t)})),n.addEventListener("submit",de(function(t){Ke.call(this,e,t)})))}(e,t)}function Me(e,t){t.scope&&function(e,t){const n=t.scope;Ie=[];const o=n||document;Re(o),function(e,t=1e3){Ae.has(e)||Ae.set(e,{observer:$e(e),timers:new WeakMap,duration:t})}(o,1e3);const r=ge(t.prefix,U.Action,!1);o!==document&&Ge(e,o,r,t),o.querySelectorAll(`[${r}]`).forEach(n=>{Ge(e,n,r,t)}),Ie.length&&function(e,t){const n=(e,t)=>e.filter(([e,n])=>{const o=window.scrollY+window.innerHeight,r=e.offsetTop;if(o<r)return!0;const i=e.clientHeight;return!(100*(1-(r+i-o)/(i||1))>=n&&(Fe(t,e,Ue),1))});_e||(_e=function(e,t=1e3){let n=null;return function(...o){if(null===n)return n=setTimeout(()=>{n=null},t),e(...o)}}(function(){Ie=n.call(t,Ie,e)}),t.addEventListener("scroll",_e))}(e,o)}(e,t)}async function Fe(e,t,n){const o=function(e,t,n=U.Prefix){const o=[],{actions:r,nearestOnly:i}=function(e,t,n){let o=t;for(;o;){const t=C(o,ge(e,U.Actions,!1));if(t){const e=ye(t);if(e[n])return{actions:e[n],nearestOnly:!1}}const r=C(o,ge(e,U.Action,!1));if(r){const e=ye(r);if(e[n]||"click"!==n)return{actions:e[n]||[],nearestOnly:!0}}o=we(e,o)}return{actions:[],nearestOnly:!1}}(n,e,t);return r.length?(r.forEach(r=>{const s=Se(r.actionParams||"",",").reduce((e,t)=>(e[fe(t)]=!0,e),{}),a=be(n,e,s,i);if(!a.length){const t="page",o=`[${ge(n,t)}]`,[r,i]=ke(e,o,n,t);a.push({entity:t,data:r,nested:[],context:i})}a.forEach(e=>{o.push({entity:e.entity,action:r.action,data:e.data,trigger:t,context:e.context,nested:e.nested})})}),o):o}(t,n,e.settings.prefix);return Promise.all(o.map(t=>Pe(e,{name:`${t.entity} ${t.action}`,...t,trigger:n})))}function Ge(e,t,n,o){const r=C(t,n);r&&Object.values(ye(r)).forEach(n=>n.forEach(n=>{switch(n.trigger){case Ne:o=e,t.addEventListener("mouseenter",de(function(e){e.target instanceof Element&&Fe(o,e.target,Ne)}));break;case Xe:!function(e,t){Fe(e,t,Xe)}(e,t);break;case Te:!function(e,t,n=""){setInterval(()=>{document.hidden||Fe(e,t,Te)},parseInt(n||"")||15e3)}(e,t,n.triggerParams);break;case Ue:!function(e,t=""){const n=parseInt(t||"")||50;n<0||n>100||Ie.push([e,n])}(t,n.triggerParams);break;case"impression":qe(e,t);break;case"visible":qe(e,t,{multiple:!0});break;case We:!function(e,t,n=""){setTimeout(()=>Fe(e,t,We),parseInt(n||"")||15e3)}(e,t,n.triggerParams)}var o}))}function He(e,t){Fe(e,t.target,"click")}function Ke(e,t){t.target&&Fe(e,t.target,"submit")}function Je(e,t,n,o){const r=[];let i=!0;n.forEach(e=>{const t=Ye(e)?[...Array.from(e)]:null!=(n=e)&&"object"==typeof n&&"length"in n&&"number"==typeof n.length?Array.from(e):[e];var n;if(Array.isArray(t)&&0===t.length)return;if(Array.isArray(t)&&1===t.length&&!t[0])return;const s=t[0],a=!ce(s)&&ue(s)&&s.startsWith("walker ");if(ce(s)){if("object"==typeof s&&0===Object.keys(s).length)return}else{const e=Array.from(t);if(!ue(e[0])||""===e[0].trim())return;const n="walker run";i&&e[0]===n&&(i=!1)}(o&&a||!o&&!a)&&r.push(t)}),r.forEach(n=>{ze(e,t,n)})}function ze(e,t="data-elb",n){de(()=>{if(Array.isArray(n)){const[o,...r]=n;if(!o||ue(o)&&""===o.trim())return;if(ue(o)&&o.startsWith("walker "))return void e(o,r[0]);Pe({elb:e,settings:{prefix:t,scope:document,pageview:!1,session:!1,elb:"",elbLayer:!1}},o,...r)}else if(n&&"object"==typeof n){if(0===Object.keys(n).length)return;e(n)}},()=>{})()}function Ye(e){return null!=e&&"object"==typeof e&&"[object Arguments]"===Object.prototype.toString.call(e)}function Ve(e,t={},n){return function(e={}){const{cb:t,consent:n,collector:o,storage:r}=e;if(!n)return P((r?X:T)(e),o,t);{const r=function(e,t){let n;return(o,r)=>{if(a(n)&&n===(null==o?void 0:o.group))return;n=null==o?void 0:o.group;let i=()=>T(e);return e.consent&&g((s(e.consent)?e.consent:[e.consent]).reduce((e,t)=>({...e,[t]:!0}),{}),r)&&(i=()=>X(e)),P(i(),o,t)}}(e,t),i=(s(n)?n:[n]).reduce((e,t)=>({...e,[t]:r}),{});o?o.command("on","consent",i):q("walker on","consent",i)}}({...t,collector:{push:e,group:void 0,command:n}})}te({},{env:()=>Qe});var Qe={};te(Qe,{push:()=>nt});var Ze=()=>{},et=()=>()=>Promise.resolve({ok:!0,successful:[],queued:[],failed:[]}),tt={error:Ze,info:Ze,debug:Ze,throw:e=>{throw"string"==typeof e?new Error(e):e},scope:()=>tt},nt={get push(){return et()},get command(){return et()},get elb(){return et()},get window(){return{addEventListener:Ze,removeEventListener:Ze,location:{href:"https://example.com/page",pathname:"/page",search:"?query=test",hash:"#section",host:"example.com",hostname:"example.com",origin:"https://example.com",protocol:"https:"},document:{},navigator:{language:"en-US",userAgent:"Mozilla/5.0 (Test)"},screen:{width:1920,height:1080},innerWidth:1920,innerHeight:1080,pageXOffset:0,pageYOffset:0,scrollX:0,scrollY:0}},get document(){return{addEventListener:Ze,removeEventListener:Ze,querySelector:Ze,querySelectorAll:()=>[],getElementById:Ze,getElementsByClassName:()=>[],getElementsByTagName:()=>[],createElement:()=>({setAttribute:Ze,getAttribute:Ze,addEventListener:Ze,removeEventListener:Ze}),body:{appendChild:Ze,removeChild:Ze},documentElement:{scrollTop:0,scrollLeft:0},readyState:"complete",title:"Test Page",referrer:"",cookie:""}},logger:tt},ot=async(e,t)=>{const{elb:n,command:o,window:r,document:i}=t,s=(null==e?void 0:e.settings)||{},a=r||(void 0!==globalThis.window?globalThis.window:void 0),c=i||(void 0!==globalThis.document?globalThis.document:void 0),u=function(e={},t){return{prefix:"data-elb",pageview:!0,session:!0,elb:"elb",elbLayer:"elbLayer",scope:t||void 0,...e}}(s,c),l={settings:u},d={elb:n,settings:u};if(a&&c){if(!1!==u.elbLayer&&n&&function(e,t={}){const n=t.name||"elbLayer",o=t.window||window;if(!o)return;const r=o;r[n]||(r[n]=[]);const i=r[n];i.push=function(...n){if(Ye(n[0])){const o=[...Array.from(n[0])],r=Array.prototype.push.apply(this,[o]);return ze(e,t.prefix,o),r}const o=Array.prototype.push.apply(this,n);return n.forEach(n=>{ze(e,t.prefix,n)}),o},Array.isArray(i)&&i.length>0&&function(e,t="data-elb",n){Je(e,t,n,!0),Je(e,t,n,!1),n.length=0}(e,t.prefix,i)}(n,{name:ue(u.elbLayer)?u.elbLayer:"elbLayer",prefix:u.prefix,window:a}),u.session&&n){const e="boolean"==typeof u.session?{}:u.session;Ve(n,e,o)}await async function(e,t,n){const o=()=>{e(t,n)};"loading"!==document.readyState?o():document.addEventListener("DOMContentLoaded",o)}(Be,d,u),(()=>{if(Me(d,u),u.pageview){const[e,t]=he(u.prefix||"data-elb",u.scope);Pe(d,"page view",e,"load",t)}})(),ue(u.elb)&&u.elb&&(a[u.elb]=(...e)=>{const[t,n,o,r,i,s]=e;return Pe(d,t,n,o,r,i,s)})}return{type:"browser",config:l,push:(...e)=>{const[t,n,o,r,i,s]=e;return Pe(d,t,n,o,r,i,s)},destroy:async()=>{c&&Re(u.scope||c)},on:async(e,t)=>{switch(e){case"consent":if(u.session&&t&&n){const e="boolean"==typeof u.session?{}:u.session;Ve(n,e,o)}break;case"session":case"ready":default:break;case"run":if(c&&a&&(Me(d,u),u.pageview)){const[e,t]=he(u.prefix||"data-elb",u.scope);Pe(d,"page view",e,"load",t)}}}}},rt=Object.defineProperty,it=(e,t)=>{for(var n in t)rt(e,n,{get:t[n],enumerable:!0})},st=!1;function at(e,t={},n){if(t.filter&&!0===S(()=>t.filter(n),()=>!1)())return;const o=function(e){if(c(e)&&u(e.event)){const{event:t,...n}=e;return{name:t,...n}}return s(e)&&e.length>=2?ct(e):null!=(t=e)&&"object"==typeof t&&"length"in t&&"number"==typeof t.length&&t.length>0?ct(Array.from(e)):null;var t}(n);if(!o)return;const r=`${t.prefix||"dataLayer"} ${o.name}`,{name:i,...a}=o,l={name:r,data:a};S(()=>e(l),()=>{})()}function ct(e){const[t,n,o]=e;if(!u(t))return null;let r,i={};switch(t){case"consent":if(!u(n)||e.length<3)return null;if("default"!==n&&"update"!==n)return null;if(!c(o)||null===o)return null;r=`${t} ${n}`,i={...o};break;case"event":if(!u(n))return null;r=n,c(o)&&(i={...o});break;case"config":if(!u(n))return null;r=`${t} ${n}`,c(o)&&(i={...o});break;case"set":if(u(n))r=`${t} ${n}`,c(o)&&(i={...o});else{if(!c(n))return null;r=`${t} custom`,i={...n}}break;default:return null}return{name:r,...i}}it({},{push:()=>ft});var ut=()=>{},lt=()=>()=>Promise.resolve({ok:!0,successful:[],queued:[],failed:[]}),dt={error:ut,info:ut,debug:ut,throw:e=>{throw"string"==typeof e?new Error(e):e},scope:()=>dt},ft={get push(){return lt()},get command(){return lt()},get elb(){return lt()},get window(){return{dataLayer:[],addEventListener:ut,removeEventListener:ut}},logger:dt};function gt(){return["consent","update",{ad_user_data:"granted",ad_personalization:"granted",ad_storage:"denied",analytics_storage:"granted"}]}function mt(){return["consent","default",{ad_storage:"denied",analytics_storage:"denied",ad_user_data:"denied",ad_personalization:"denied"}]}function pt(){return["event","purchase",{transaction_id:"T_12345",value:25.42,currency:"EUR",items:[{item_id:"SKU_12345",item_name:"Product Name",item_category:"Category",quantity:1,price:25.42}]}]}function ht(){return["event","add_to_cart",{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"Product Name",item_variant:"red",quantity:1,price:15.25}]}]}function yt(){return["event","view_item",{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"Product Name",item_category:"Category",price:15.25}]}]}function bt(){return["config","G-XXXXXXXXXX",{page_title:"Custom Page Title",page_location:"https://example.com/page",send_page_view:!1}]}function vt(){return["set",{currency:"EUR",country:"DE"}]}function wt(){return{event:"custom_event",custom_parameter:"custom_value",user_id:"user123"}}it({},{add_to_cart:()=>ht,config:()=>bt,consentDefault:()=>mt,consentUpdate:()=>gt,directDataLayerEvent:()=>wt,purchase:()=>pt,setCustom:()=>vt,view_item:()=>yt});it({},{add_to_cart:()=>St,config:()=>xt,configGA4:()=>jt,consentOnlyMapping:()=>Lt,consentUpdate:()=>kt,customEvent:()=>_t,purchase:()=>Et,view_item:()=>Ot});var kt={name:"walker consent",settings:{command:{map:{functional:{value:!0},analytics:{key:"analytics_storage",fn:e=>"granted"===e},marketing:{key:"ad_storage",fn:e=>"granted"===e}}}}},Et={name:"order complete",data:{map:{id:"transaction_id",total:"value",currency:"currency",nested:{loop:["items",{map:{type:{value:"product"},data:{map:{id:"item_id",name:"item_name",category:"item_category",quantity:"quantity",price:"price"}}}}]}}}},St={name:"product add",data:{map:{id:"items.0.item_id",name:"items.0.item_name",price:"value",currency:"currency",color:"items.0.item_variant",quantity:"items.0.quantity"}}},Ot={name:"product view",data:{map:{id:"items.0.item_id",name:"items.0.item_name",category:"items.0.item_category",price:"items.0.price",currency:"currency"}}},jt={name:"page view",data:{map:{title:"page_title",url:"page_location"}}},_t={data:{map:{user_id:"user_id",custom_parameter:"custom_parameter"}}},xt={consent:{update:kt},purchase:Et,add_to_cart:St,view_item:Ot,"config G-XXXXXXXXXX":jt,custom_event:_t,"*":{data:{}}},Lt={consent:{update:kt}},At=async(e,t)=>{const{elb:n,window:o}=t,r={name:"dataLayer",prefix:"dataLayer",...null==e?void 0:e.settings},i={settings:r};return o&&(function(e,t){const n=t.settings,o=(null==n?void 0:n.name)||"dataLayer",r=window[o];if(Array.isArray(r)&&!st){st=!0;try{for(const t of r)at(e,n,t)}finally{st=!1}}}(n,i),function(e,t){const n=t.settings,o=(null==n?void 0:n.name)||"dataLayer";window[o]||(window[o]=[]);const r=window[o];if(!Array.isArray(r))return;const i=r.push.bind(r);r.push=function(...t){if(st)return i(...t);st=!0;try{for(const o of t)at(e,n,o)}finally{st=!1}return i(...t)}}(n,i)),{type:"dataLayer",config:i,push:n,destroy:async()=>{const e=r.name||"dataLayer";o&&o[e]&&Array.isArray(o[e])}}};function Ct(){window.dataLayer=window.dataLayer||[];const e=e=>{c(e)&&c(e.source)&&String(e.source.type).includes("dataLayer")||window.dataLayer.push(e)};return{type:"dataLayer",config:{},push:(t,n)=>{e(n.data||t)},pushBatch:t=>{e({name:"batch",batched_event:t.key,events:t.data.length?t.data:t.events})}}}if(window&&document){const e=async()=>{let e;const t=document.querySelector("script[data-elbconfig]");if(t){const n=t.getAttribute("data-elbconfig")||"";n.includes(":")?e=$(n):n&&(e=window[n])}e||(e=window.elbConfig),e&&await async function(e={}){const t=i({collector:{destinations:{dataLayer:{code:Ct()}}},browser:{session:!0},dataLayer:!1,elb:"elb",run:!0},e),n={...t.collector,sources:{browser:{code:ot,config:{settings:t.browser},env:{window:"undefined"!=typeof window?window:void 0,document:"undefined"!=typeof document?document:void 0}}}};if(t.dataLayer){const e=c(t.dataLayer)?t.dataLayer:{};n.sources&&(n.sources.dataLayer={code:At,config:{settings:e}})}const o=await Q(n);return"undefined"!=typeof window&&(t.elb&&(window[t.elb]=o.elb),t.name&&(window[t.name]=o.collector)),o}(e)};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e):e()}})();
|
package/package.json
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@walkeros/walker.js",
|
|
3
|
+
"version": "0.0.0-next-20251219153324",
|
|
4
|
+
"description": "Ready-to-use walkerOS bundle with browser source, collector, and dataLayer support",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.mjs",
|
|
8
|
+
"browser": "./dist/walker.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"browser": "./dist/walker.js",
|
|
14
|
+
"import": "./dist/index.mjs",
|
|
15
|
+
"require": "./dist/index.js",
|
|
16
|
+
"default": "./dist/walker.js"
|
|
17
|
+
},
|
|
18
|
+
"./es5": {
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
|
+
"default": "./dist/index.es5.js"
|
|
21
|
+
},
|
|
22
|
+
"./src/schemas": "./src/schemas.ts",
|
|
23
|
+
"./src/dev": "./src/dev.ts"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist/**",
|
|
27
|
+
"src/schemas.ts",
|
|
28
|
+
"src/dev.ts",
|
|
29
|
+
"README.md",
|
|
30
|
+
"CHANGELOG.md"
|
|
31
|
+
],
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "tsup",
|
|
34
|
+
"test": "jest --colors --coverage",
|
|
35
|
+
"dev": "jest --watchAll --colors",
|
|
36
|
+
"lint": "tsc && eslint \"**/*.ts*\"",
|
|
37
|
+
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist && rm -rf coverage",
|
|
38
|
+
"preview": "npm run build && npx serve -l 3333 examples"
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@walkeros/core": "0.0.0-next-20251219153324",
|
|
42
|
+
"@walkeros/collector": "0.0.0-next-20251219153324",
|
|
43
|
+
"@walkeros/web-core": "0.0.0-next-20251219153324",
|
|
44
|
+
"@walkeros/web-source-browser": "0.0.0-next-20251219153324",
|
|
45
|
+
"@walkeros/web-source-datalayer": "0.0.0-next-20251219153324"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@swc/jest": "^0.2.39",
|
|
49
|
+
"@types/jest": "^30.0.0",
|
|
50
|
+
"jest": "^30.2.0",
|
|
51
|
+
"jest-environment-jsdom": "^30.2.0"
|
|
52
|
+
},
|
|
53
|
+
"repository": {
|
|
54
|
+
"url": "git+https://github.com/elbwalker/walkerOS.git",
|
|
55
|
+
"directory": "apps/walkerjs"
|
|
56
|
+
},
|
|
57
|
+
"author": "elbwalker <hello@elbwalker.com>",
|
|
58
|
+
"homepage": "https://github.com/elbwalker/walkerOS#readme",
|
|
59
|
+
"bugs": {
|
|
60
|
+
"url": "https://github.com/elbwalker/walkerOS/issues"
|
|
61
|
+
},
|
|
62
|
+
"keywords": [
|
|
63
|
+
"walker",
|
|
64
|
+
"walkerOS",
|
|
65
|
+
"analytics",
|
|
66
|
+
"tracking",
|
|
67
|
+
"data collection",
|
|
68
|
+
"measurement",
|
|
69
|
+
"privacy friendly",
|
|
70
|
+
"web analytics",
|
|
71
|
+
"walker.js"
|
|
72
|
+
]
|
|
73
|
+
}
|
package/src/dev.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import {
|
|
2
|
+
schemas as coreSchemas,
|
|
3
|
+
z,
|
|
4
|
+
zodToSchema,
|
|
5
|
+
type JSONSchema,
|
|
6
|
+
} from '@walkeros/core/dev';
|
|
7
|
+
import { schemas as browserSchemas } from '@walkeros/web-source-browser/dev';
|
|
8
|
+
import { schemas as dataLayerSchemas } from '@walkeros/web-source-datalayer/dev';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Walker.js Config schema
|
|
12
|
+
*
|
|
13
|
+
* Matches the Config interface in types/index.ts
|
|
14
|
+
*/
|
|
15
|
+
const ConfigSchema = z.object({
|
|
16
|
+
collector: z
|
|
17
|
+
.any()
|
|
18
|
+
.optional()
|
|
19
|
+
.describe('Collector configuration (Collector.InitConfig)'),
|
|
20
|
+
browser: z
|
|
21
|
+
.any()
|
|
22
|
+
.optional()
|
|
23
|
+
.describe('Browser source configuration (Partial<SourceBrowser.Settings>)'),
|
|
24
|
+
dataLayer: z
|
|
25
|
+
.union([z.boolean(), z.any()])
|
|
26
|
+
.optional()
|
|
27
|
+
.describe(
|
|
28
|
+
'DataLayer configuration (boolean | Partial<SourceDataLayer.Settings>)',
|
|
29
|
+
),
|
|
30
|
+
elb: z
|
|
31
|
+
.string()
|
|
32
|
+
.optional()
|
|
33
|
+
.describe('Name for the global elb function (default: "elb")'),
|
|
34
|
+
name: z.string().optional().describe('Name for the global instance'),
|
|
35
|
+
run: z
|
|
36
|
+
.boolean()
|
|
37
|
+
.optional()
|
|
38
|
+
.describe('Auto-run on initialization (default: true)'),
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
// Named exports for MDX PropertyTable usage
|
|
42
|
+
export const settings: JSONSchema = zodToSchema(ConfigSchema);
|
|
43
|
+
export const browserConfig: JSONSchema = browserSchemas.settings;
|
|
44
|
+
export const dataLayerConfig: JSONSchema = dataLayerSchemas.settings;
|
|
45
|
+
export const collectorConfig: JSONSchema =
|
|
46
|
+
coreSchemas.CollectorSchemas.initConfigJsonSchema;
|