@walkeros/walker.js 0.3.2 → 0.4.0

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 CHANGED
@@ -1,5 +1,26 @@
1
1
  # @walkeros/walker.js
2
2
 
3
+ ## 0.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Consolidate schemas and examples under `/dev` export
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies
12
+ - @walkeros/web-source-datalayer@0.4.0
13
+ - @walkeros/web-source-browser@0.4.0
14
+ - @walkeros/collector@0.4.0
15
+ - @walkeros/web-core@0.4.0
16
+ - @walkeros/core@0.4.0
17
+
18
+ ## 0.3.3
19
+
20
+ ### Patch Changes
21
+
22
+ - cli usage
23
+
3
24
  ## 0.3.2
4
25
 
5
26
  ### Patch Changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,aAAa,0BAAY,CAAC;AAyLhC,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,163 @@
1
+ // Browser environment setup for walker.js tests
2
+ // Based on @walkeros/jest/web.setup.ts
3
+ const mockDataLayer = jest.fn();
4
+ global.beforeEach(() => {
5
+ jest.useFakeTimers();
6
+ // Mocks
7
+ jest.clearAllMocks();
8
+ jest.resetModules();
9
+ // Reset DOM with event listeners etc.
10
+ document.getElementsByTagName('html')[0].innerHTML = '';
11
+ document.body = document.body.cloneNode();
12
+ // elbLayer and dataLayer
13
+ const w = window;
14
+ w.elbLayer = undefined;
15
+ w.dataLayer = [];
16
+ w.dataLayer.push = mockDataLayer;
17
+ // Performance API - mock the method that was causing test failures
18
+ global.performance.getEntriesByType = jest
19
+ .fn()
20
+ .mockReturnValue([{ type: 'navigate' }]);
21
+ // Mock IntersectionObserver - required for sourceBrowser visibility tracking
22
+ global.IntersectionObserver = jest.fn().mockImplementation((callback) => ({
23
+ observe: jest.fn(),
24
+ unobserve: jest.fn(),
25
+ disconnect: jest.fn(),
26
+ }));
27
+ // Mock ResizeObserver - might be needed for responsive tracking
28
+ global.ResizeObserver = jest.fn().mockImplementation((callback) => ({
29
+ observe: jest.fn(),
30
+ unobserve: jest.fn(),
31
+ disconnect: jest.fn(),
32
+ }));
33
+ // Mock MutationObserver - needed for DOM change detection
34
+ global.MutationObserver = jest.fn().mockImplementation((callback) => ({
35
+ observe: jest.fn(),
36
+ disconnect: jest.fn(),
37
+ takeRecords: jest.fn(),
38
+ }));
39
+ // Other browser APIs that might be needed
40
+ Object.defineProperty(window, 'location', {
41
+ value: {
42
+ hostname: 'localhost',
43
+ pathname: '/',
44
+ search: '',
45
+ hash: '',
46
+ href: 'http://localhost:3000/',
47
+ origin: 'http://localhost:3000',
48
+ protocol: 'http:',
49
+ host: 'localhost:3000',
50
+ port: '3000',
51
+ },
52
+ writable: true,
53
+ });
54
+ // Mock document.currentScript for auto-init tests
55
+ Object.defineProperty(document, 'currentScript', {
56
+ value: null,
57
+ writable: true,
58
+ });
59
+ // Mock document properties
60
+ Object.defineProperty(document, 'title', {
61
+ value: 'Test Page',
62
+ writable: true,
63
+ });
64
+ Object.defineProperty(document, 'referrer', {
65
+ value: '',
66
+ writable: true,
67
+ });
68
+ Object.defineProperty(document, 'readyState', {
69
+ value: 'complete',
70
+ writable: true,
71
+ });
72
+ // Mock navigator
73
+ Object.defineProperty(window, 'navigator', {
74
+ value: {
75
+ userAgent: 'Mozilla/5.0 (Node.js jsdom test environment)',
76
+ language: 'en-US',
77
+ platform: 'linux',
78
+ },
79
+ writable: true,
80
+ });
81
+ // Mock screen
82
+ Object.defineProperty(window, 'screen', {
83
+ value: {
84
+ width: 1920,
85
+ height: 1080,
86
+ },
87
+ writable: true,
88
+ });
89
+ // Mock element positioning methods - required for visibility detection
90
+ Element.prototype.getBoundingClientRect = jest.fn(() => ({
91
+ x: 0,
92
+ y: 0,
93
+ width: 100,
94
+ height: 100,
95
+ top: 0,
96
+ left: 0,
97
+ bottom: 100,
98
+ right: 100,
99
+ toJSON: jest.fn(),
100
+ }));
101
+ // Mock element offset properties
102
+ Object.defineProperties(Element.prototype, {
103
+ offsetTop: { get: () => 0, configurable: true },
104
+ offsetLeft: { get: () => 0, configurable: true },
105
+ offsetWidth: { get: () => 100, configurable: true },
106
+ offsetHeight: { get: () => 100, configurable: true },
107
+ clientWidth: { get: () => 100, configurable: true },
108
+ clientHeight: { get: () => 100, configurable: true },
109
+ });
110
+ // Mock getComputedStyle - required for element styling calculations
111
+ global.getComputedStyle = jest.fn().mockImplementation(() => ({
112
+ getPropertyValue: jest.fn().mockReturnValue(''),
113
+ width: '100px',
114
+ height: '100px',
115
+ display: 'block',
116
+ visibility: 'visible',
117
+ }));
118
+ // Mock matchMedia - might be needed for responsive features
119
+ Object.defineProperty(window, 'matchMedia', {
120
+ writable: true,
121
+ value: jest.fn().mockImplementation((query) => ({
122
+ matches: false,
123
+ media: query,
124
+ onchange: null,
125
+ addListener: jest.fn(),
126
+ removeListener: jest.fn(),
127
+ addEventListener: jest.fn(),
128
+ removeEventListener: jest.fn(),
129
+ dispatchEvent: jest.fn(),
130
+ })),
131
+ });
132
+ // Mock localStorage and sessionStorage - required for browser source
133
+ const mockStorage = {
134
+ getItem: jest.fn(),
135
+ setItem: jest.fn(),
136
+ removeItem: jest.fn(),
137
+ clear: jest.fn(),
138
+ key: jest.fn(),
139
+ length: 0,
140
+ };
141
+ Object.defineProperty(window, 'localStorage', {
142
+ value: mockStorage,
143
+ writable: true,
144
+ });
145
+ Object.defineProperty(window, 'sessionStorage', {
146
+ value: mockStorage,
147
+ writable: true,
148
+ });
149
+ // Mock requestAnimationFrame and cancelAnimationFrame
150
+ global.requestAnimationFrame = jest.fn((cb) => setTimeout(cb, 0));
151
+ global.cancelAnimationFrame = jest.fn((id) => clearTimeout(id));
152
+ // Mock requestIdleCallback if it exists
153
+ if (typeof global.requestIdleCallback === 'undefined') {
154
+ global.requestIdleCallback = jest.fn((cb) => setTimeout(cb, 0));
155
+ global.cancelIdleCallback = jest.fn((id) => clearTimeout(id));
156
+ }
157
+ });
158
+ global.afterEach(() => {
159
+ jest.runOnlyPendingTimers();
160
+ jest.useRealTimers();
161
+ });
162
+ export { mockDataLayer };
163
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destination.d.ts","sourceRoot":"","sources":["../src/destination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAIlD,wBAAgB,oBAAoB,IAAI,WAAW,CAAC,QAAQ,CA6B3D"}
@@ -0,0 +1,28 @@
1
+ import { isObject } from '@walkeros/core';
2
+ export function dataLayerDestination() {
3
+ window.dataLayer = window.dataLayer || [];
4
+ const dataLayerPush = (event) => {
5
+ // Do not process events from dataLayer source
6
+ if (isObject(event) &&
7
+ isObject(event.source) &&
8
+ String(event.source.type).includes('dataLayer'))
9
+ return;
10
+ window.dataLayer.push(event);
11
+ };
12
+ const destination = {
13
+ type: 'dataLayer',
14
+ config: {},
15
+ push: (event, context) => {
16
+ dataLayerPush(context.data || event);
17
+ },
18
+ pushBatch: (batch) => {
19
+ dataLayerPush({
20
+ name: 'batch',
21
+ batched_event: batch.key,
22
+ events: batch.data.length ? batch.data : batch.events,
23
+ });
24
+ },
25
+ };
26
+ return destination;
27
+ }
28
+ //# sourceMappingURL=destination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destination.js","sourceRoot":"","sources":["../src/destination.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,UAAU,oBAAoB;IAClC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;IAC1C,MAAM,aAAa,GAAG,CAAC,KAAc,EAAE,EAAE;QACvC,8CAA8C;QAC9C,IACE,QAAQ,CAAC,KAAK,CAAC;YACf,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;YAE/C,OAAO;QAER,MAAM,CAAC,SAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC,CAAC;IACF,MAAM,WAAW,GAAyB;QACxC,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACvB,aAAa,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;QACvC,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACnB,aAAa,CAAC;gBACZ,IAAI,EAAE,OAAO;gBACb,aAAa,EAAE,KAAK,CAAC,GAAG;gBACxB,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;aACtD,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIhD,OAAO,EAEL,YAAY,EACZ,SAAS,EACT,UAAU,EAEX,MAAM,8BAA8B,CAAC;AAKtC,OAAO,KAAK,QAAQ,MAAM,SAAS,CAAC;AAGpC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAG/C,wBAAsB,cAAc,CAAC,MAAM,GAAE,MAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CA4D3E;AAGD,eAAe,cAAc,CAAC"}