@openreplay/tracker 14.0.10-beta.1 → 14.0.10
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/{cjs → dist/cjs}/index.js +27 -49
- package/dist/cjs/index.js.map +1 -0
- package/{cjs → dist/cjs/main}/app/index.d.ts +38 -6
- package/{lib → dist/cjs/main}/app/messages.gen.d.ts +2 -2
- package/{lib/app/nodes.d.ts → dist/cjs/main/app/nodes/index.d.ts} +15 -7
- package/dist/cjs/main/app/nodes/maintainer.d.ts +28 -0
- package/{cjs → dist/cjs/main}/app/observer/iframe_observer.d.ts +1 -1
- package/{lib → dist/cjs/main}/app/observer/iframe_offsets.d.ts +1 -1
- package/{lib → dist/cjs/main}/app/observer/observer.d.ts +6 -0
- package/{lib → dist/cjs/main}/app/observer/top_observer.d.ts +6 -2
- package/{cjs → dist/cjs/main}/app/sanitizer.d.ts +5 -2
- package/{cjs → dist/cjs/main}/app/session.d.ts +6 -3
- package/{lib → dist/cjs/main}/index.d.ts +2 -2
- package/{lib → dist/cjs/main}/modules/attributeSender.d.ts +5 -2
- package/{cjs → dist/cjs/main}/modules/conditionsManager.d.ts +1 -1
- package/{cjs → dist/cjs/main}/modules/tagWatcher.d.ts +8 -4
- package/{lib → dist/cjs/main}/modules/userTesting/SignalManager.d.ts +2 -2
- package/{lib → dist/cjs/main}/utils.d.ts +4 -3
- package/dist/lib/index.js +9323 -0
- package/dist/lib/index.js.map +1 -0
- package/{lib → dist/lib/main}/app/index.d.ts +38 -6
- package/{cjs → dist/lib/main}/app/messages.gen.d.ts +2 -2
- package/{cjs/app/nodes.d.ts → dist/lib/main/app/nodes/index.d.ts} +15 -7
- package/dist/lib/main/app/nodes/maintainer.d.ts +28 -0
- package/{lib → dist/lib/main}/app/observer/iframe_observer.d.ts +1 -1
- package/{cjs → dist/lib/main}/app/observer/iframe_offsets.d.ts +1 -1
- package/{cjs → dist/lib/main}/app/observer/observer.d.ts +6 -0
- package/{cjs → dist/lib/main}/app/observer/top_observer.d.ts +6 -2
- package/{lib → dist/lib/main}/app/sanitizer.d.ts +5 -2
- package/{lib → dist/lib/main}/app/session.d.ts +6 -3
- package/{cjs → dist/lib/main}/index.d.ts +2 -2
- package/{cjs → dist/lib/main}/modules/attributeSender.d.ts +5 -2
- package/{lib → dist/lib/main}/modules/conditionsManager.d.ts +1 -1
- package/{lib → dist/lib/main}/modules/tagWatcher.d.ts +8 -4
- package/{cjs → dist/lib/main}/modules/userTesting/SignalManager.d.ts +2 -2
- package/{cjs → dist/lib/main}/utils.d.ts +4 -3
- package/package.json +29 -10
- package/.eslintignore +0 -11
- package/.nvmrc +0 -1
- package/.prettierignore +0 -1
- package/CHANGELOG.md +0 -297
- package/bun.lockb +0 -0
- package/cjs/app/canvas.js +0 -204
- package/cjs/app/guards.js +0 -37
- package/cjs/app/index.js +0 -1366
- package/cjs/app/logger.js +0 -37
- package/cjs/app/messages.gen.js +0 -702
- package/cjs/app/nodes.js +0 -110
- package/cjs/app/observer/iframe_observer.js +0 -35
- package/cjs/app/observer/iframe_offsets.js +0 -56
- package/cjs/app/observer/observer.js +0 -352
- package/cjs/app/observer/shadow_root_observer.js +0 -24
- package/cjs/app/observer/top_observer.js +0 -134
- package/cjs/app/sanitizer.js +0 -82
- package/cjs/app/session.js +0 -140
- package/cjs/app/ticker.js +0 -48
- package/cjs/common/interaction.js +0 -2
- package/cjs/common/messages.gen.js +0 -4
- package/cjs/modules/attributeSender.js +0 -51
- package/cjs/modules/axiosSpy.js +0 -122
- package/cjs/modules/conditionsManager.js +0 -343
- package/cjs/modules/connection.js +0 -15
- package/cjs/modules/console.js +0 -127
- package/cjs/modules/constructedStyleSheets.js +0 -138
- package/cjs/modules/cssrules.js +0 -99
- package/cjs/modules/exception.js +0 -85
- package/cjs/modules/featureFlags.js +0 -89
- package/cjs/modules/focus.js +0 -45
- package/cjs/modules/fonts.js +0 -57
- package/cjs/modules/img.js +0 -110
- package/cjs/modules/input.js +0 -203
- package/cjs/modules/mouse.js +0 -195
- package/cjs/modules/network.js +0 -244
- package/cjs/modules/performance.js +0 -53
- package/cjs/modules/scroll.js +0 -84
- package/cjs/modules/selection.js +0 -37
- package/cjs/modules/tabs.js +0 -13
- package/cjs/modules/tagWatcher.js +0 -76
- package/cjs/modules/timing.js +0 -173
- package/cjs/modules/userTesting/SignalManager.js +0 -83
- package/cjs/modules/userTesting/dnd.js +0 -40
- package/cjs/modules/userTesting/index.js +0 -464
- package/cjs/modules/userTesting/recorder.js +0 -101
- package/cjs/modules/userTesting/styles.js +0 -266
- package/cjs/modules/userTesting/utils.js +0 -87
- package/cjs/modules/viewport.js +0 -43
- package/cjs/package.json +0 -1
- package/cjs/utils.js +0 -230
- package/coverage/clover.xml +0 -4304
- package/coverage/coverage-final.json +0 -55
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -206
- package/coverage/lcov-report/main/app/canvas.ts.html +0 -712
- package/coverage/lcov-report/main/app/guards.ts.html +0 -232
- package/coverage/lcov-report/main/app/index.html +0 -236
- package/coverage/lcov-report/main/app/index.ts.html +0 -3955
- package/coverage/lcov-report/main/app/logger.ts.html +0 -211
- package/coverage/lcov-report/main/app/messages.gen.ts.html +0 -3034
- package/coverage/lcov-report/main/app/nodes.ts.html +0 -406
- package/coverage/lcov-report/main/app/observer/iframe_observer.ts.html +0 -148
- package/coverage/lcov-report/main/app/observer/iframe_offsets.ts.html +0 -289
- package/coverage/lcov-report/main/app/observer/index.html +0 -161
- package/coverage/lcov-report/main/app/observer/shadow_root_observer.ts.html +0 -142
- package/coverage/lcov-report/main/app/observer/top_observer.ts.html +0 -541
- package/coverage/lcov-report/main/app/sanitizer.ts.html +0 -403
- package/coverage/lcov-report/main/app/session.ts.html +0 -622
- package/coverage/lcov-report/main/app/ticker.ts.html +0 -250
- package/coverage/lcov-report/main/index.html +0 -131
- package/coverage/lcov-report/main/index.ts.html +0 -1597
- package/coverage/lcov-report/main/modules/Network/beaconProxy.ts.html +0 -400
- package/coverage/lcov-report/main/modules/Network/fetchProxy.ts.html +0 -1075
- package/coverage/lcov-report/main/modules/Network/index.html +0 -191
- package/coverage/lcov-report/main/modules/Network/index.ts.html +0 -244
- package/coverage/lcov-report/main/modules/Network/networkMessage.ts.html +0 -400
- package/coverage/lcov-report/main/modules/Network/utils.ts.html +0 -709
- package/coverage/lcov-report/main/modules/Network/xhrProxy.ts.html +0 -877
- package/coverage/lcov-report/main/modules/attributeSender.ts.html +0 -241
- package/coverage/lcov-report/main/modules/axiosSpy.ts.html +0 -709
- package/coverage/lcov-report/main/modules/conditionsManager.ts.html +0 -1381
- package/coverage/lcov-report/main/modules/connection.ts.html +0 -160
- package/coverage/lcov-report/main/modules/console.ts.html +0 -541
- package/coverage/lcov-report/main/modules/constructedStyleSheets.ts.html +0 -571
- package/coverage/lcov-report/main/modules/cssrules.ts.html +0 -418
- package/coverage/lcov-report/main/modules/exception.ts.html +0 -385
- package/coverage/lcov-report/main/modules/featureFlags.ts.html +0 -415
- package/coverage/lcov-report/main/modules/focus.ts.html +0 -220
- package/coverage/lcov-report/main/modules/fonts.ts.html +0 -289
- package/coverage/lcov-report/main/modules/img.ts.html +0 -436
- package/coverage/lcov-report/main/modules/index.html +0 -431
- package/coverage/lcov-report/main/modules/input.ts.html +0 -826
- package/coverage/lcov-report/main/modules/mouse.ts.html +0 -826
- package/coverage/lcov-report/main/modules/network.ts.html +0 -1123
- package/coverage/lcov-report/main/modules/performance.ts.html +0 -367
- package/coverage/lcov-report/main/modules/scroll.ts.html +0 -364
- package/coverage/lcov-report/main/modules/selection.ts.html +0 -202
- package/coverage/lcov-report/main/modules/tabs.ts.html +0 -124
- package/coverage/lcov-report/main/modules/tagWatcher.ts.html +0 -337
- package/coverage/lcov-report/main/modules/timing.ts.html +0 -877
- package/coverage/lcov-report/main/modules/userTesting/SignalManager.ts.html +0 -370
- package/coverage/lcov-report/main/modules/userTesting/dnd.ts.html +0 -220
- package/coverage/lcov-report/main/modules/userTesting/index.html +0 -191
- package/coverage/lcov-report/main/modules/userTesting/index.ts.html +0 -1909
- package/coverage/lcov-report/main/modules/userTesting/recorder.ts.html +0 -430
- package/coverage/lcov-report/main/modules/userTesting/styles.ts.html +0 -937
- package/coverage/lcov-report/main/modules/userTesting/utils.ts.html +0 -364
- package/coverage/lcov-report/main/modules/viewport.ts.html +0 -250
- package/coverage/lcov-report/main/utils.ts.html +0 -814
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov-report/webworker/BatchWriter.ts.html +0 -499
- package/coverage/lcov-report/webworker/MessageEncoder.gen.ts.html +0 -1021
- package/coverage/lcov-report/webworker/PrimitiveEncoder.ts.html +0 -436
- package/coverage/lcov-report/webworker/QueueSender.ts.html +0 -547
- package/coverage/lcov-report/webworker/index.html +0 -176
- package/coverage/lcov-report/webworker/index.ts.html +0 -667
- package/coverage/lcov.info +0 -8425
- package/jest.config.js +0 -13
- package/lib/app/canvas.js +0 -202
- package/lib/app/guards.js +0 -26
- package/lib/app/index.js +0 -1336
- package/lib/app/logger.js +0 -33
- package/lib/app/messages.gen.js +0 -622
- package/lib/app/nodes.js +0 -107
- package/lib/app/observer/iframe_observer.js +0 -29
- package/lib/app/observer/iframe_offsets.js +0 -53
- package/lib/app/observer/observer.js +0 -349
- package/lib/app/observer/shadow_root_observer.js +0 -18
- package/lib/app/observer/top_observer.js +0 -128
- package/lib/app/sanitizer.js +0 -77
- package/lib/app/session.js +0 -137
- package/lib/app/ticker.js +0 -45
- package/lib/common/interaction.js +0 -1
- package/lib/common/messages.gen.js +0 -3
- package/lib/common/tsconfig.tsbuildinfo +0 -1
- package/lib/index.js +0 -423
- package/lib/modules/attributeSender.js +0 -46
- package/lib/modules/axiosSpy.js +0 -119
- package/lib/modules/conditionsManager.js +0 -340
- package/lib/modules/connection.js +0 -12
- package/lib/modules/console.js +0 -124
- package/lib/modules/constructedStyleSheets.js +0 -133
- package/lib/modules/cssrules.js +0 -97
- package/lib/modules/exception.js +0 -76
- package/lib/modules/featureFlags.js +0 -86
- package/lib/modules/focus.js +0 -42
- package/lib/modules/fonts.js +0 -54
- package/lib/modules/img.js +0 -107
- package/lib/modules/input.js +0 -198
- package/lib/modules/mouse.js +0 -192
- package/lib/modules/network.js +0 -238
- package/lib/modules/performance.js +0 -49
- package/lib/modules/scroll.js +0 -81
- package/lib/modules/selection.js +0 -35
- package/lib/modules/tabs.js +0 -10
- package/lib/modules/tagWatcher.js +0 -73
- package/lib/modules/timing.js +0 -170
- package/lib/modules/userTesting/SignalManager.js +0 -80
- package/lib/modules/userTesting/dnd.js +0 -37
- package/lib/modules/userTesting/index.js +0 -435
- package/lib/modules/userTesting/recorder.js +0 -97
- package/lib/modules/userTesting/styles.js +0 -263
- package/lib/modules/userTesting/utils.js +0 -79
- package/lib/modules/viewport.js +0 -40
- package/lib/utils.js +0 -211
- package/rollup.config.js +0 -12
- package/scripts/checkver.cjs +0 -7
- package/tsconfig-base.json +0 -16
- /package/{cjs → dist/cjs}/common/interaction.d.ts +0 -0
- /package/{cjs → dist/cjs}/common/messages.gen.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/app/canvas.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/app/guards.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/app/logger.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/app/observer/shadow_root_observer.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/app/ticker.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/axiosSpy.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/connection.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/console.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/constructedStyleSheets.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/cssrules.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/exception.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/featureFlags.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/focus.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/fonts.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/img.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/input.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/mouse.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/network.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/performance.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/scroll.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/selection.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/tabs.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/timing.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/userTesting/dnd.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/userTesting/index.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/userTesting/recorder.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/userTesting/styles.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/userTesting/utils.d.ts +0 -0
- /package/{cjs → dist/cjs/main}/modules/viewport.d.ts +0 -0
- /package/{lib → dist/lib}/common/interaction.d.ts +0 -0
- /package/{lib → dist/lib}/common/messages.gen.d.ts +0 -0
- /package/{lib → dist/lib/main}/app/canvas.d.ts +0 -0
- /package/{lib → dist/lib/main}/app/guards.d.ts +0 -0
- /package/{lib → dist/lib/main}/app/logger.d.ts +0 -0
- /package/{lib → dist/lib/main}/app/observer/shadow_root_observer.d.ts +0 -0
- /package/{lib → dist/lib/main}/app/ticker.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/axiosSpy.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/connection.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/console.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/constructedStyleSheets.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/cssrules.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/exception.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/featureFlags.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/focus.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/fonts.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/img.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/input.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/mouse.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/network.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/performance.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/scroll.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/selection.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/tabs.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/timing.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/userTesting/dnd.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/userTesting/index.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/userTesting/recorder.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/userTesting/styles.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/userTesting/utils.d.ts +0 -0
- /package/{lib → dist/lib/main}/modules/viewport.d.ts +0 -0
package/CHANGELOG.md
DELETED
|
@@ -1,297 +0,0 @@
|
|
|
1
|
-
# 14.0.10
|
|
2
|
-
|
|
3
|
-
- adjust timestamps for messages from tracker instances inside child iframes (if they were loaded later)
|
|
4
|
-
- restart child trackers if parent tracker is restarted
|
|
5
|
-
- fixes for general stability of crossdomain iframe tracking
|
|
6
|
-
|
|
7
|
-
# 14.0.9
|
|
8
|
-
|
|
9
|
-
- more stable crossdomain iframe tracking (refactored child/parent process discovery)
|
|
10
|
-
- checks for bad start error
|
|
11
|
-
|
|
12
|
-
# 14.0.8
|
|
13
|
-
|
|
14
|
-
- use separate library to handle network requests ([@openreplay/network-proxy](https://www.npmjs.com/package/@openreplay/network-proxy))
|
|
15
|
-
- fixes for window.message listeners
|
|
16
|
-
|
|
17
|
-
# 14.0.7
|
|
18
|
-
|
|
19
|
-
- check for stopping status during restarts
|
|
20
|
-
- restart if token expired during canvas fetch
|
|
21
|
-
|
|
22
|
-
# 14.0.6
|
|
23
|
-
|
|
24
|
-
- support feature off toggle for feature flags and usability testing
|
|
25
|
-
- additional checks for canvas snapshots
|
|
26
|
-
|
|
27
|
-
# 14.0.5
|
|
28
|
-
|
|
29
|
-
- remove canvas snapshot interval if canvas is gone
|
|
30
|
-
|
|
31
|
-
# 14.0.4
|
|
32
|
-
|
|
33
|
-
- remove reject from start
|
|
34
|
-
|
|
35
|
-
# 14.0.3
|
|
36
|
-
|
|
37
|
-
- send integer instead of float for normalizedX/Y coords (basically moving from 0-100 to 0-10000 range)
|
|
38
|
-
|
|
39
|
-
# 14.0.2
|
|
40
|
-
|
|
41
|
-
- fix logger check
|
|
42
|
-
|
|
43
|
-
# 14.0.0 & .1
|
|
44
|
-
|
|
45
|
-
- titles for tabs
|
|
46
|
-
- new `MouseClick` message to introduce heatmaps instead of clickmaps
|
|
47
|
-
- crossdomain iframe tracking functionality
|
|
48
|
-
- updated graphql plugin and messages
|
|
49
|
-
|
|
50
|
-
# 13.0.2
|
|
51
|
-
|
|
52
|
-
- more file extensions for canvas
|
|
53
|
-
|
|
54
|
-
# 13.0.1
|
|
55
|
-
|
|
56
|
-
- moved canvas snapshots to webp, additional option to utilize useAnimationFrame method (for webgl)
|
|
57
|
-
- simpler, faster canvas recording manager
|
|
58
|
-
|
|
59
|
-
# 13.0.0
|
|
60
|
-
|
|
61
|
-
- `assistOnly` flag for tracker options (EE only feature)
|
|
62
|
-
|
|
63
|
-
# 12.0.12
|
|
64
|
-
|
|
65
|
-
- fix for potential redux plugin issues after .11 ...
|
|
66
|
-
|
|
67
|
-
# 12.0.11
|
|
68
|
-
|
|
69
|
-
- better restart on unauth (new token assign for long sessions)
|
|
70
|
-
- more safeguards around arraybuffer and dataview types for network proxy
|
|
71
|
-
|
|
72
|
-
# 12.0.10
|
|
73
|
-
|
|
74
|
-
- improved logs for node binding errors, full nodelist clear before start, getSessionInfo method
|
|
75
|
-
|
|
76
|
-
# 12.0.9
|
|
77
|
-
|
|
78
|
-
- moved logging to query
|
|
79
|
-
|
|
80
|
-
# 12.0.8
|
|
81
|
-
|
|
82
|
-
- better logging for network batches
|
|
83
|
-
|
|
84
|
-
# 12.0.7
|
|
85
|
-
|
|
86
|
-
- fixes for window.open reinit method
|
|
87
|
-
|
|
88
|
-
# 12.0.6
|
|
89
|
-
|
|
90
|
-
- allow network sanitizer to return null (will ignore network req)
|
|
91
|
-
|
|
92
|
-
# 12.0.5
|
|
93
|
-
|
|
94
|
-
- patch for img.ts srcset detector
|
|
95
|
-
|
|
96
|
-
# 12.0.4
|
|
97
|
-
|
|
98
|
-
- patch for email sanitizer (supports + now)
|
|
99
|
-
- update fflate version for better compression
|
|
100
|
-
- `disableCanvas` option to disable canvas capture
|
|
101
|
-
- better check for adopted stylesheets in doc (old browser support)
|
|
102
|
-
|
|
103
|
-
# 12.0.3
|
|
104
|
-
|
|
105
|
-
- fixed scaling option for canvas (to ignore window.devicePixelRatio and always render the canvas as 1)
|
|
106
|
-
|
|
107
|
-
# 12.0.2
|
|
108
|
-
|
|
109
|
-
- fix for canvas snapshot check
|
|
110
|
-
|
|
111
|
-
# 12.0.1
|
|
112
|
-
|
|
113
|
-
- pause canvas snapshotting when its offscreen
|
|
114
|
-
|
|
115
|
-
# 12.0.0
|
|
116
|
-
|
|
117
|
-
- offline session recording and manual sending
|
|
118
|
-
- conditional recording with 30s buffer
|
|
119
|
-
- websockets tracking hook
|
|
120
|
-
|
|
121
|
-
# 11.0.5
|
|
122
|
-
|
|
123
|
-
- add method to restart canvas tracking (in case of context recreation)
|
|
124
|
-
- scan dom tree for canvas els on tracker start
|
|
125
|
-
|
|
126
|
-
# 11.0.4
|
|
127
|
-
|
|
128
|
-
- some additional security for canvas capture (check if canvas el itself is obscured/ignored)
|
|
129
|
-
|
|
130
|
-
# 11.0.3
|
|
131
|
-
|
|
132
|
-
- move all logs under internal debugger
|
|
133
|
-
- fix for XHR proxy ORSC 'abort' state
|
|
134
|
-
|
|
135
|
-
# 11.0.1 & 11.0.2
|
|
136
|
-
|
|
137
|
-
- minor fixes and refactoring
|
|
138
|
-
|
|
139
|
-
# 11.0.0
|
|
140
|
-
|
|
141
|
-
- canvas support
|
|
142
|
-
- some safety guards for iframe components
|
|
143
|
-
- user testing module
|
|
144
|
-
|
|
145
|
-
# 10.0.2
|
|
146
|
-
|
|
147
|
-
- fix default ignore headers
|
|
148
|
-
|
|
149
|
-
# 10.0.1
|
|
150
|
-
|
|
151
|
-
- network proxy api is now default turned on
|
|
152
|
-
|
|
153
|
-
# 10.0.0
|
|
154
|
-
|
|
155
|
-
- networkRequest message changed to include `TransferredBodySize`
|
|
156
|
-
- tracker now attempts to create proxy for beacon api as well (if its in scope of the current env)
|
|
157
|
-
- safe wrapper for angular apps
|
|
158
|
-
- better browser lag handling (and some performance improvements as a bonus)
|
|
159
|
-
|
|
160
|
-
# 9.0.11
|
|
161
|
-
|
|
162
|
-
- new `resetTabOnWindowOpen` option to fix window.open issue with sessionStorage being inherited (replicating tabId bug), users still should use 'noopener=true' in window.open to prevent it in general...
|
|
163
|
-
- do not create BC channel in iframe context, add regeneration of tabid incase of duplication
|
|
164
|
-
|
|
165
|
-
# 9.0.10
|
|
166
|
-
|
|
167
|
-
- added `excludedResourceUrls` to timings options to better sanitize network data
|
|
168
|
-
|
|
169
|
-
# 9.0.9
|
|
170
|
-
|
|
171
|
-
- Fix for `{disableStringDict: true}` behavior
|
|
172
|
-
|
|
173
|
-
# 9.0.8
|
|
174
|
-
|
|
175
|
-
- added slight delay to iframe handler (rapid updates of stacked frames used to break player)
|
|
176
|
-
|
|
177
|
-
# 9.0.7
|
|
178
|
-
|
|
179
|
-
- fix for `getSessionURL` method
|
|
180
|
-
|
|
181
|
-
# 9.0.6
|
|
182
|
-
|
|
183
|
-
- added `tokenUrlMatcher` option to network settings, allowing to ingest session token header to custom allowed urls
|
|
184
|
-
|
|
185
|
-
# 9.0.5
|
|
186
|
-
|
|
187
|
-
- same fixes but for fetch proxy
|
|
188
|
-
|
|
189
|
-
# 9.0.2 & 9.0.3 & 9.0.4
|
|
190
|
-
|
|
191
|
-
- fixes for "setSessionTokenHeader" method
|
|
192
|
-
|
|
193
|
-
# 9.0.1
|
|
194
|
-
|
|
195
|
-
- Warning about SSR mode
|
|
196
|
-
- Prevent crashes due to network proxy in SSR
|
|
197
|
-
|
|
198
|
-
# 9.0.0
|
|
199
|
-
|
|
200
|
-
- Option to disable string dictionary `{disableStringDict: true}` in Tracker constructor
|
|
201
|
-
- Introduced Feature flags api
|
|
202
|
-
- Fixed input durations recorded on programmable autofill
|
|
203
|
-
- change InputMode from enum to const Object
|
|
204
|
-
|
|
205
|
-
# 8.1.2
|
|
206
|
-
|
|
207
|
-
- option to disable string dictionary `{disableStringDict: true}` in Tracker constructor
|
|
208
|
-
|
|
209
|
-
# 8.1.1
|
|
210
|
-
|
|
211
|
-
[collective patch]
|
|
212
|
-
|
|
213
|
-
- Console and network are now using proxy objects to capture calls (opt in for network), use ` { network: { useProxy: true } }` to enable it
|
|
214
|
-
- Force disable Multitab feature for old browsers (2016 and older + safari 14)
|
|
215
|
-
|
|
216
|
-
# 8.0.0
|
|
217
|
-
|
|
218
|
-
- **[breaking]** support for multi-tab sessions
|
|
219
|
-
|
|
220
|
-
# 7.0.4
|
|
221
|
-
|
|
222
|
-
- option to disable string dictionary `{disableStringDict: true}` in Tracker constructor
|
|
223
|
-
|
|
224
|
-
# 7.0.3
|
|
225
|
-
|
|
226
|
-
- Prevent auto restart after manual stop
|
|
227
|
-
|
|
228
|
-
# 7.0.2
|
|
229
|
-
|
|
230
|
-
- fixed header sanitization for axios causing empty string in some cases
|
|
231
|
-
|
|
232
|
-
# 7.0.1
|
|
233
|
-
|
|
234
|
-
- fix time inputs capturing
|
|
235
|
-
- add option `{ network: { captureInIframes: boolean } }` to disable network tracking inside iframes (default true)
|
|
236
|
-
- added option `{ network: { axiosInstances: AxiosInstance[] } }` to include custom axios instances for better tracking
|
|
237
|
-
|
|
238
|
-
# 7.0.0
|
|
239
|
-
|
|
240
|
-
- **[breaking]** added gzip compression to large messages
|
|
241
|
-
- fix email regexp to significantly improve performance
|
|
242
|
-
|
|
243
|
-
# 6.0.2
|
|
244
|
-
|
|
245
|
-
- fix network tracking for same domain iframes created by js code
|
|
246
|
-
|
|
247
|
-
# 6.0.1
|
|
248
|
-
|
|
249
|
-
- fix webworker writer re-init request
|
|
250
|
-
- remove useless logs
|
|
251
|
-
- tune mouse thrashing detection
|
|
252
|
-
- fix iframe handling
|
|
253
|
-
- optimise node counting for dom drop
|
|
254
|
-
|
|
255
|
-
# 6.0.0
|
|
256
|
-
|
|
257
|
-
**(Compatible with OpenReplay v1.11.0+ only)**
|
|
258
|
-
|
|
259
|
-
- **[breaking]:** Capture mouse thrashing, input hesitation+duration, click hesitation
|
|
260
|
-
- Capture DOM node drop event (>30% nodes removed)
|
|
261
|
-
- Capture iframe network requests
|
|
262
|
-
- Detect cached requests to img, css and js resources; send transferred size
|
|
263
|
-
- added `{ mouse: { disableClickmaps: boolean } }` to disable calculating el. selectors
|
|
264
|
-
- added `{ mouse: { minSelectorDepth?: number; nthThreshold?: number; maxOptimiseTries?: number }` for selector finding optimizations
|
|
265
|
-
|
|
266
|
-
## 5.0.2
|
|
267
|
-
|
|
268
|
-
- fixed inline css loading in specific cases when assets gets around min flush size
|
|
269
|
-
|
|
270
|
-
## 5.0.1
|
|
271
|
-
|
|
272
|
-
- Re-init worker after device sleep/hybernation
|
|
273
|
-
- Default text input mode is now Obscured
|
|
274
|
-
- Use `@medv/finder` instead of our own implementation of `getSelector` for better clickmaps experience
|
|
275
|
-
|
|
276
|
-
## 5.0.0
|
|
277
|
-
|
|
278
|
-
**(Compatible with OpenReplay v1.10.0+ only)**
|
|
279
|
-
|
|
280
|
-
- **[breaking]:** string dictionary to reduce session size
|
|
281
|
-
- Added "tel" to supported input types
|
|
282
|
-
- Added `{ withCurrentTime: true }` to `tracker.getSessionURL` method which will return sessionURL with current session's timestamp
|
|
283
|
-
- Added Network module that captures fetch/xhr by default (with no plugin required)
|
|
284
|
-
- Use `timeOrigin()` instead of `performance.timing.navigationStart` in ResourceTiming messages
|
|
285
|
-
- Added app restart when service worker died after inactivity (mobile safari)
|
|
286
|
-
|
|
287
|
-
## 4.1.8
|
|
288
|
-
|
|
289
|
-
- recalculate timeOrigin on start to prevent wrong timestamps on "sleeping" sessions
|
|
290
|
-
|
|
291
|
-
## 4.1.7
|
|
292
|
-
|
|
293
|
-
- resend metadata on start
|
|
294
|
-
|
|
295
|
-
## 4.1.6
|
|
296
|
-
|
|
297
|
-
- remove log that potentially caused crashed during slow initial render
|
package/bun.lockb
DELETED
|
Binary file
|
package/cjs/app/canvas.js
DELETED
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const guards_js_1 = require("./guards.js");
|
|
4
|
-
const messages_gen_js_1 = require("./messages.gen.js");
|
|
5
|
-
class CanvasRecorder {
|
|
6
|
-
constructor(app, options) {
|
|
7
|
-
this.app = app;
|
|
8
|
-
this.options = options;
|
|
9
|
-
this.snapshots = {};
|
|
10
|
-
this.intervals = [];
|
|
11
|
-
this.restartTracking = () => {
|
|
12
|
-
this.clear();
|
|
13
|
-
this.app.nodes.scanTree(this.captureCanvas);
|
|
14
|
-
};
|
|
15
|
-
this.captureCanvas = (node) => {
|
|
16
|
-
const id = this.app.nodes.getID(node);
|
|
17
|
-
if (!id || !(0, guards_js_1.hasTag)(node, 'canvas')) {
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
const isIgnored = this.app.sanitizer.isObscured(id) || this.app.sanitizer.isHidden(id);
|
|
21
|
-
if (isIgnored || !(0, guards_js_1.hasTag)(node, 'canvas') || this.snapshots[id]) {
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
const observer = new IntersectionObserver((entries) => {
|
|
25
|
-
entries.forEach((entry) => {
|
|
26
|
-
if (entry.isIntersecting) {
|
|
27
|
-
if (entry.target) {
|
|
28
|
-
if (this.snapshots[id] && this.snapshots[id].createdAt) {
|
|
29
|
-
this.snapshots[id].paused = false;
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
this.recordCanvas(entry.target, id);
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* We can switch this to start observing when element is in the view
|
|
36
|
-
* but otherwise right now we're just pausing when it's not
|
|
37
|
-
* just to save some bandwidth and space on backend
|
|
38
|
-
* */
|
|
39
|
-
// observer.unobserve(entry.target)
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
if (this.snapshots[id]) {
|
|
43
|
-
this.snapshots[id].paused = true;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
observer.observe(node);
|
|
50
|
-
};
|
|
51
|
-
this.recordCanvas = (node, id) => {
|
|
52
|
-
const ts = this.app.timestamp();
|
|
53
|
-
this.snapshots[id] = {
|
|
54
|
-
images: [],
|
|
55
|
-
createdAt: ts,
|
|
56
|
-
paused: false,
|
|
57
|
-
dummy: document.createElement('canvas'),
|
|
58
|
-
};
|
|
59
|
-
const canvasMsg = (0, messages_gen_js_1.CanvasNode)(id.toString(), ts);
|
|
60
|
-
this.app.send(canvasMsg);
|
|
61
|
-
const captureFn = (canvas) => {
|
|
62
|
-
captureSnapshot(canvas, this.options.quality, this.snapshots[id].dummy, this.options.fixedScaling, this.fileExt, (blob) => {
|
|
63
|
-
if (!blob)
|
|
64
|
-
return;
|
|
65
|
-
if (!this.snapshots[id]) {
|
|
66
|
-
return this.app.debug.warn('Canvas not present in snapshots after capture:', this.snapshots, id);
|
|
67
|
-
}
|
|
68
|
-
this.snapshots[id].images.push({ id: this.app.timestamp(), data: blob });
|
|
69
|
-
if (this.snapshots[id].images.length > 9) {
|
|
70
|
-
this.sendSnaps(this.snapshots[id].images, id, this.snapshots[id].createdAt);
|
|
71
|
-
this.snapshots[id].images = [];
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
};
|
|
75
|
-
const int = setInterval(() => {
|
|
76
|
-
const cid = this.app.nodes.getID(node);
|
|
77
|
-
const canvas = cid ? this.app.nodes.getNode(cid) : undefined;
|
|
78
|
-
if (!this.snapshots[id]) {
|
|
79
|
-
this.app.debug.log('Canvas is not present in {snapshots}');
|
|
80
|
-
clearInterval(int);
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
if (!canvas || !(0, guards_js_1.hasTag)(canvas, 'canvas') || canvas !== node) {
|
|
84
|
-
this.app.debug.log('Canvas element not in sync', canvas, node);
|
|
85
|
-
clearInterval(int);
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
if (!this.snapshots[id].paused) {
|
|
90
|
-
if (this.options.useAnimationFrame) {
|
|
91
|
-
requestAnimationFrame(() => {
|
|
92
|
-
captureFn(canvas);
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
captureFn(canvas);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}, this.interval);
|
|
101
|
-
this.intervals.push(int);
|
|
102
|
-
};
|
|
103
|
-
this.fileExt = options.fileExt ?? 'webp';
|
|
104
|
-
this.interval = 1000 / options.fps;
|
|
105
|
-
}
|
|
106
|
-
startTracking() {
|
|
107
|
-
setTimeout(() => {
|
|
108
|
-
this.app.nodes.scanTree(this.captureCanvas);
|
|
109
|
-
this.app.nodes.attachNodeCallback(this.captureCanvas);
|
|
110
|
-
}, 250);
|
|
111
|
-
}
|
|
112
|
-
sendSnaps(images, canvasId, createdAt) {
|
|
113
|
-
if (Object.keys(this.snapshots).length === 0) {
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
const formData = new FormData();
|
|
117
|
-
images.forEach((snapshot) => {
|
|
118
|
-
const blob = snapshot.data;
|
|
119
|
-
if (!blob)
|
|
120
|
-
return;
|
|
121
|
-
formData.append('snapshot', blob, `${createdAt}_${canvasId}_${snapshot.id}.${this.fileExt}`);
|
|
122
|
-
if (this.options.isDebug) {
|
|
123
|
-
saveImageData(blob, `${createdAt}_${canvasId}_${snapshot.id}.${this.fileExt}`);
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
const initRestart = () => {
|
|
127
|
-
this.app.debug.log('Restarting tracker; token expired');
|
|
128
|
-
this.app.stop(false);
|
|
129
|
-
setTimeout(() => {
|
|
130
|
-
void this.app.start({}, true);
|
|
131
|
-
}, 250);
|
|
132
|
-
};
|
|
133
|
-
fetch(this.app.options.ingestPoint + '/v1/web/images', {
|
|
134
|
-
method: 'POST',
|
|
135
|
-
headers: {
|
|
136
|
-
Authorization: `Bearer ${this.app.session.getSessionToken() ?? ''}`,
|
|
137
|
-
},
|
|
138
|
-
body: formData,
|
|
139
|
-
})
|
|
140
|
-
.then((r) => {
|
|
141
|
-
if (r.status === 401) {
|
|
142
|
-
return initRestart();
|
|
143
|
-
}
|
|
144
|
-
return true;
|
|
145
|
-
})
|
|
146
|
-
.catch((e) => {
|
|
147
|
-
this.app.debug.error('error saving canvas', e);
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
clear() {
|
|
151
|
-
this.intervals.forEach((int) => clearInterval(int));
|
|
152
|
-
this.snapshots = {};
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
const qualityInt = {
|
|
156
|
-
low: 0.35,
|
|
157
|
-
medium: 0.55,
|
|
158
|
-
high: 0.8,
|
|
159
|
-
};
|
|
160
|
-
function captureSnapshot(canvas, quality = 'medium', dummy, fixedScaling = false, fileExt, onBlob) {
|
|
161
|
-
const imageFormat = `image/${fileExt}`;
|
|
162
|
-
if (fixedScaling) {
|
|
163
|
-
const canvasScaleRatio = window.devicePixelRatio || 1;
|
|
164
|
-
dummy.width = canvas.width / canvasScaleRatio;
|
|
165
|
-
dummy.height = canvas.height / canvasScaleRatio;
|
|
166
|
-
const ctx = dummy.getContext('2d');
|
|
167
|
-
if (!ctx) {
|
|
168
|
-
return '';
|
|
169
|
-
}
|
|
170
|
-
ctx.clearRect(0, 0, dummy.width, dummy.height);
|
|
171
|
-
ctx.drawImage(canvas, 0, 0, dummy.width, dummy.height);
|
|
172
|
-
dummy.toBlob(onBlob, imageFormat, qualityInt[quality]);
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
canvas.toBlob(onBlob, imageFormat, qualityInt[quality]);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
function saveImageData(imageDataBlob, name) {
|
|
179
|
-
const imageDataUrl = URL.createObjectURL(imageDataBlob);
|
|
180
|
-
const link = document.createElement('a');
|
|
181
|
-
link.href = imageDataUrl;
|
|
182
|
-
link.download = name;
|
|
183
|
-
link.style.display = 'none';
|
|
184
|
-
document.body.appendChild(link);
|
|
185
|
-
link.click();
|
|
186
|
-
document.body.removeChild(link);
|
|
187
|
-
}
|
|
188
|
-
function dataUrlToBlob(dataUrl) {
|
|
189
|
-
const [header, base64] = dataUrl.split(',');
|
|
190
|
-
if (!header || !base64)
|
|
191
|
-
return null;
|
|
192
|
-
const encParts = header.match(/:(.*?);/);
|
|
193
|
-
if (!encParts)
|
|
194
|
-
return null;
|
|
195
|
-
const mime = encParts[1];
|
|
196
|
-
const blobStr = atob(base64);
|
|
197
|
-
let n = blobStr.length;
|
|
198
|
-
const u8arr = new Uint8Array(n);
|
|
199
|
-
while (n--) {
|
|
200
|
-
u8arr[n] = blobStr.charCodeAt(n);
|
|
201
|
-
}
|
|
202
|
-
return [new Blob([u8arr], { type: mime }), u8arr];
|
|
203
|
-
}
|
|
204
|
-
exports.default = CanvasRecorder;
|
package/cjs/app/guards.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.hasTag = exports.isRootNode = exports.isDocument = exports.isTextNode = exports.isCommentNode = exports.isElementNode = exports.isSVGElement = exports.isNode = void 0;
|
|
4
|
-
//@ts-ignore
|
|
5
|
-
function isNode(sth) {
|
|
6
|
-
return !!sth && sth.nodeType != null;
|
|
7
|
-
}
|
|
8
|
-
exports.isNode = isNode;
|
|
9
|
-
function isSVGElement(node) {
|
|
10
|
-
return node.namespaceURI === 'http://www.w3.org/2000/svg';
|
|
11
|
-
}
|
|
12
|
-
exports.isSVGElement = isSVGElement;
|
|
13
|
-
function isElementNode(node) {
|
|
14
|
-
return node.nodeType === Node.ELEMENT_NODE;
|
|
15
|
-
}
|
|
16
|
-
exports.isElementNode = isElementNode;
|
|
17
|
-
function isCommentNode(node) {
|
|
18
|
-
return node.nodeType === Node.COMMENT_NODE;
|
|
19
|
-
}
|
|
20
|
-
exports.isCommentNode = isCommentNode;
|
|
21
|
-
function isTextNode(node) {
|
|
22
|
-
return node.nodeType === Node.TEXT_NODE;
|
|
23
|
-
}
|
|
24
|
-
exports.isTextNode = isTextNode;
|
|
25
|
-
function isDocument(node) {
|
|
26
|
-
return node.nodeType === Node.DOCUMENT_NODE;
|
|
27
|
-
}
|
|
28
|
-
exports.isDocument = isDocument;
|
|
29
|
-
function isRootNode(node) {
|
|
30
|
-
return node.nodeType === Node.DOCUMENT_NODE || node.nodeType === Node.DOCUMENT_FRAGMENT_NODE;
|
|
31
|
-
}
|
|
32
|
-
exports.isRootNode = isRootNode;
|
|
33
|
-
function hasTag(el, tagName) {
|
|
34
|
-
// @ts-ignore
|
|
35
|
-
return el.localName === tagName;
|
|
36
|
-
}
|
|
37
|
-
exports.hasTag = hasTag;
|