@@ -94,7 +94,7 @@ const MAX_CHUNK_SIZE = 950 * 1024 // ~950KB
94
94
const encoder = new TextEncoder ( )
95
95
const decoder = new TextDecoder ( )
96
96
97
- let inited : ( ( ) => void ) | false | undefined = false
97
+ let initCleanUp : ( ( ) => void ) | false | undefined = false
98
98
let tracer : Tracer
99
99
let lastKnownSession : string
100
100
let sessionStartTime = 0
@@ -104,17 +104,18 @@ let logCounter = 1
104
104
105
105
const SplunkRumRecorder = {
106
106
get inited ( ) : boolean {
107
- return Boolean ( inited )
107
+ return Boolean ( initCleanUp )
108
108
} ,
109
109
110
110
init ( config : SplunkRumRecorderConfig ) : void {
111
- if ( inited ) {
111
+ if ( initCleanUp ) {
112
112
return
113
113
}
114
114
115
- if ( typeof window === 'undefined' ) {
116
- console . error ( "SplunkSessionRecorder can't be run in non-browser environments." )
117
- return
115
+ if ( typeof window !== 'object' ) {
116
+ throw Error (
117
+ 'SplunkSessionRecorder Error: This library is intended to run in a browser environment. Please ensure the code is evaluated within a browser context.' ,
118
+ )
118
119
}
119
120
120
121
let tracerProvider : BasicTracerProvider | ProxyTracerProvider = trace . getTracerProvider ( ) as BasicTracerProvider
@@ -213,7 +214,7 @@ const SplunkRumRecorder = {
213
214
lastKnownSession = SplunkRum . getSessionId ( )
214
215
sessionStartTime = Date . now ( )
215
216
216
- inited = record ( {
217
+ const initParams = {
217
218
maskAllInputs : true ,
218
219
maskTextSelector : '*' ,
219
220
...rrwebConf ,
@@ -284,10 +285,21 @@ const SplunkRumRecorder = {
284
285
processor . onLog ( log )
285
286
}
286
287
} ,
287
- } )
288
+ }
289
+
290
+ const initFn = ( ) => {
291
+ initCleanUp = record ( initParams )
292
+ }
293
+
294
+ if ( document . readyState === 'complete' || document . readyState === 'interactive' ) {
295
+ initFn ( )
296
+ } else {
297
+ window . addEventListener ( 'load' , initFn , { once : true } )
298
+ initCleanUp = ( ) => window . removeEventListener ( 'load' , initFn )
299
+ }
288
300
} ,
289
301
resume ( ) : void {
290
- if ( ! inited ) {
302
+ if ( ! initCleanUp ) {
291
303
return
292
304
}
293
305
@@ -299,7 +311,7 @@ const SplunkRumRecorder = {
299
311
}
300
312
} ,
301
313
stop ( ) : void {
302
- if ( ! inited ) {
314
+ if ( ! initCleanUp ) {
303
315
return
304
316
}
305
317
@@ -310,12 +322,12 @@ const SplunkRumRecorder = {
310
322
paused = true
311
323
} ,
312
324
deinit ( ) : void {
313
- if ( ! inited ) {
325
+ if ( ! initCleanUp ) {
314
326
return
315
327
}
316
328
317
- inited ( )
318
- inited = false
329
+ initCleanUp ( )
330
+ initCleanUp = false
319
331
} ,
320
332
}
321
333
0 commit comments