Skip to content

Commit df1ded2

Browse files
committed
uuid safer
1 parent 4589141 commit df1ded2

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

src/index.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
'use client'
2-
import { ReactNode, useState, useEffect, ReactElement, JSXElementConstructor, FunctionComponent, Component } from 'react'
2+
import { useState, useEffect, ReactElement, JSXElementConstructor, FunctionComponent, Component } from 'react'
33

44
import { default as Cookies } from 'js-cookie';
55

66
import { BaselimeContext, BaselimeRumConfig } from './context.tsx';
77
import { WebVitals } from './web-vitals.ts';
88
import { DispatchQueue } from './dispatch-queue.ts';
99
import { BaselimeErrorBoundary } from './error-boundary.tsx';
10-
import { FallbackProps, ErrorBoundaryPropsWithFallback } from 'react-error-boundary';
10+
import { ErrorBoundaryPropsWithFallback } from 'react-error-boundary';
11+
import { makeUUID } from './utils/uuid.ts';
1112
export { useBaselimeRum } from './context.tsx';
1213
export { BaselimeErrorBoundary } from './error-boundary.tsx';
1314

@@ -31,13 +32,13 @@ export function BaselimeRum(props: BaselimeRumProps) {
3132
const sessionId = Cookies.get('baselime-session-id')
3233

3334
if (!sessionId) {
34-
Cookies.set('baselime-session-id', crypto.randomUUID())
35+
Cookies.set('baselime-session-id', makeUUID())
3536
}
3637

3738
const initialData: BaselimeRumConfig = {
3839
userId: props.userId,
3940
sessionId: Cookies.get('baselime-session-id'),
40-
pageLoadId: crypto.randomUUID(),
41+
pageLoadId: makeUUID(),
4142
namespace: props.namespace,
4243
apiKey: props.apiKey,
4344
dataset: props.dataset || "web",

src/utils/uuid.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
2+
/**
3+
* Crypto does not work in insecure contexts so if it fails we just make a random string
4+
* @returns {string} UUID
5+
*/
6+
export function makeUUID() {
7+
try {
8+
return crypto.randomUUID();
9+
}catch(e) {
10+
return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
11+
}
12+
}

0 commit comments

Comments
 (0)